{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/@stimulus/core/dist/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/action.js","webpack:///./node_modules/@stimulus/core/dist/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/attribute_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/string_map_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/value_observer.js","webpack:///./node_modules/@stimulus/core/dist/context.js","webpack:///./node_modules/@stimulus/core/dist/inheritable_statics.js","webpack:///./node_modules/@stimulus/core/dist/blessing.js","webpack:///./node_modules/@stimulus/core/dist/module.js","webpack:///./node_modules/@stimulus/core/dist/definition.js","webpack:///./node_modules/@stimulus/core/dist/class_map.js","webpack:///./node_modules/@stimulus/core/dist/string_helpers.js","webpack:///./node_modules/@stimulus/core/dist/data_map.js","webpack:///./node_modules/@stimulus/core/dist/guide.js","webpack:///./node_modules/@stimulus/core/dist/selectors.js","webpack:///./node_modules/@stimulus/core/dist/target_set.js","webpack:///./node_modules/@stimulus/core/dist/scope.js","webpack:///./node_modules/@stimulus/core/dist/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/router.js","webpack:///./node_modules/@stimulus/core/dist/schema.js","webpack:///./node_modules/@stimulus/core/dist/application.js","webpack:///./node_modules/@stimulus/core/dist/class_properties.js","webpack:///./node_modules/@stimulus/core/dist/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/value_properties.js","webpack:///./node_modules/@stimulus/core/dist/controller.js","webpack:///./node_modules/bootstrap/dist/js/bootstrap.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack:///./node_modules/core-js/internals/is-callable.js","webpack:///./node_modules/core-js/internals/function-uncurry-this.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///./node_modules/medium-editor/dist/js/medium-editor.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/has-own-property.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/rangy/lib/rangy-core.js","webpack:///./node_modules/core-js/internals/function-bind-native.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/jquery-ui-dist/jquery-ui.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/define-global-property.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/function-call.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/jquery-ujs/src/rails.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///./app/javascript/surveys.js","webpack:///./app/javascript/survey_questions.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js","webpack:///./node_modules/@yaireo/tagify/dist/tagify.min.js","webpack:///./node_modules/core-js/internals/make-built-in.js","webpack:///./node_modules/core-js/internals/document-all.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/is-null-or-undefined.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/to-property-key.js","webpack:///./node_modules/core-js/internals/is-symbol.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/symbol-constructor-detection.js","webpack:///./node_modules/core-js/internals/a-callable.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js/internals/task.js","webpack:///./node_modules/core-js/internals/function-apply.js","webpack:///./node_modules/core-js/internals/array-slice.js","webpack:///./node_modules/core-js/internals/validate-arguments-length.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bn-bd.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-in.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/en-sg.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-mx.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fil.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/ga.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-deva.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/it-ch.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ku.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/oc-lnc.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tk.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-mo.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/ast.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/visitor.js","webpack:///./app/javascript/controllers/add_class_controller.js","webpack:///./app/javascript/controllers/add_class_from_select_field_controller.js","webpack:///./app/javascript/controllers/add_class_if_min_word_count_controller.js","webpack:///./app/javascript/controllers/add_class_on_select_controller.js","webpack:///./app/javascript/controllers/checkbox_select_all_controller.js","webpack:///./app/javascript/controllers/clipboard_controller.js","webpack:///./app/javascript/controllers/close_on_body_click_controller.js","webpack:///./app/javascript/controllers/confirm_with_text_controller.js","webpack:///./app/javascript/controllers/contacts_bulk_controller.js","webpack:///./app/javascript/controllers/copy_selected_controller.js","webpack:///./app/javascript/controllers/copy_text_from_select_controller.js","webpack:///./app/javascript/controllers/copy_to_form_controller.js","webpack:///./app/javascript/controllers/copy_value_controller.js","webpack:///./app/javascript/controllers/disable_enter_controller.js","webpack:///./app/javascript/controllers/disable_if_blank_controller.js","webpack:///./app/javascript/controllers/form_field_resize_controller.js","webpack:///./app/javascript/controllers/hello_controller.js","webpack:///./app/javascript/controllers/hide_if_blank_controller.js","webpack:///./app/javascript/controllers/image_controller.js","webpack:///./app/javascript/controllers/load_conva_interface_controller.js","webpack:///./app/javascript/controllers/loading_controller.js","webpack:///./app/javascript/controllers/loading_text_controller.js","webpack:///./app/javascript/controllers/localize_server_time_controller.js","webpack:///./app/javascript/controllers/menu_resize_controller.js","webpack:///./app/javascript/controllers/opacity_slider_controller.js","webpack:///./app/javascript/controllers/preloader_controller.js","webpack:///./app/javascript/controllers/reload_turbo_frame_controller.js","webpack:///./app/javascript/controllers/remove_class_controller.js","webpack:///./app/javascript/controllers/remove_event_listener_controller.js","webpack:///./app/javascript/controllers/replace_selected_controller.js","webpack:///./app/javascript/controllers/scroll_to_bottom_controller.js","webpack:///./app/javascript/controllers/scroll_to_controller.js","webpack:///./app/javascript/controllers/select_element_controller.js","webpack:///./app/javascript/controllers/select_field_controller.js","webpack:///./app/javascript/controllers/sortable_controller.js","webpack:///./app/javascript/controllers/submit_form_controller.js","webpack:///./app/javascript/controllers/submit_on_enter_controller.js","webpack:///./app/javascript/controllers/theme_controller.js","webpack:///./app/javascript/controllers/toggle_body_class_controller.js","webpack:///./app/javascript/controllers/toggle_class_connect_controller.js","webpack:///./app/javascript/controllers/toggle_class_controller.js","webpack:///./app/javascript/controllers/toggle_class_on_scroll_controller.js","webpack:///./app/javascript/controllers/toggle_class_on_timeout_controller.js","webpack:///./app/javascript/controllers/turbo_form_submit_redirect_controller.js","webpack:///./app/javascript/controllers/turbo_frame_updater_controller.js","webpack:///./app/javascript/controllers/turbo_issue_186_workaround_controller.js","webpack:///./app/javascript/controllers/update_content_controller.js","webpack:///./app/javascript/controllers/update_field_value_controller.js","webpack:///./app/javascript/controllers/validate_checkbox_controller.js","webpack:///./node_modules/vanilla-icon-picker/dist/icon-picker.min.js","webpack:///./node_modules/highcharts/highcharts.js","webpack:///./app/javascript/vendor/clipboard.min.js","webpack:///./node_modules/medium-editor-insert-plugin/dist/js/medium-editor-insert-plugin.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/core-js/modules/es.regexp.flags.js","webpack:///./node_modules/core-js/internals/define-built-in-accessor.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/function-name.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/weak-map-basic-detection.js","webpack:///./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/get-method.js","webpack:///./node_modules/core-js/internals/try-to-string.js","webpack:///./node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/modules/web.immediate.js","webpack:///./node_modules/core-js/modules/web.clear-immediate.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/define-built-in.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/math-trunc.js","webpack:///./node_modules/core-js/internals/length-of-array-like.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/engine-is-ios.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/core-js/modules/web.set-immediate.js","webpack:///./node_modules/core-js/internals/schedulers-fix.js","webpack:///./node_modules/core-js/internals/engine-is-bun.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/jquery-datetimepicker/build/jquery.datetimepicker.full.min.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./node_modules/jquery-mousewheel/jquery.mousewheel.js","webpack:///./node_modules/bootstrap-toggle/js/bootstrap-toggle.js","webpack:///./node_modules/bootstrap-select/dist/js/bootstrap-select.js","webpack:///./app/javascript/bootstrap-fixes.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/base.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/parser.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/whitespace-control.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/helpers.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js","webpack:///./node_modules/handlebars/dist/cjs/handlebars/compiler/code-gen.js","webpack:///./node_modules/@client-side-validations/client-side-validations/dist/client-side-validations.esm.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./app/javascript/filterrific.js","webpack:///./app/javascript/forms.js","webpack:///./node_modules/tempusdominus-bootstrap-4/build/js/tempusdominus-bootstrap-4.js","webpack:///./app/javascript/charts.js","webpack:///./app/javascript/clipboards.js","webpack:///./app/javascript/mailgun_validator.js","webpack:///./app/javascript/email_validation.js","webpack:///./app/javascript/vendor/date.js","webpack:///./app/javascript/posts.js","webpack:///./node_modules/rangy/lib/rangy-classapplier.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/handlebars/runtime.js","webpack:///./node_modules/blueimp-file-upload/js/jquery.fileupload.js","webpack:///./node_modules/jquery-sortable/source/js/jquery-sortable.js","webpack:///./node_modules/jquery-sortable/node_modules/jquery/dist/jquery.js","webpack:///./app/javascript/misc.js","webpack:///./node_modules/jquery.maskedinput/src/jquery.maskedinput.js","webpack:///./app/javascript/navigation.js","webpack:///./app/javascript/reader_options.js","webpack:///./app/javascript/static.js","webpack:///./app/javascript/price.js","webpack:///./app/javascript/vendor/moment.js","webpack:///./node_modules/vanilla-cookieconsent/dist/cookieconsent.js","webpack:///./app/javascript/controllers sync \\.js$","webpack:///./app/javascript/controllers/index.js","webpack:///./app/javascript/controllers sync _controller\\.js$"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","hookCallback","some","hooks","apply","arguments","setHookCallback","callback","isArray","input","Array","toString","isObject","hasOwnProp","a","b","isObjectEmpty","obj","getOwnPropertyNames","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","args","argLen","join","stack","keys","deprecations","deprecateSimple","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","indexOf","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","x","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","parseInt","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","concat","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","global","noGlobal","getProto","getPrototypeOf","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","nodeType","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","code","node","doc","text","getAttribute","parentNode","removeChild","toType","rhtmlSuffix","jQuery","selector","context","init","isArrayLike","nodeName","elem","jquery","constructor","num","pushStack","elems","merge","prevObject","each","first","eq","last","even","grep","_elem","odd","end","splice","options","copy","copyIsArray","deep","isPlainObject","expando","random","isReady","noop","Ctor","isEmptyObject","globalEval","textContent","documentElement","nodeValue","makeArray","results","inArray","isXMLDoc","namespace","namespaceURI","docElem","ownerDocument","invert","callbackExpect","guid","iterator","pop","whitespace","rtrimCSS","contains","bup","compareDocumentPosition","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","attributes","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","childNodes","els","find","seed","nid","groups","newSelector","newContext","getElementById","id","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","querySelectorAll","qsaError","removeAttribute","select","cache","cacheLength","markFunction","assert","el","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","top","addEventListener","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","attrId","getAttributeNode","tag","className","innerHTML","compare","sortDetached","expr","elements","matchesSelector","attr","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","pattern","operator","check","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","start","parent","useCache","firstChild","lastChild","pseudo","setFilters","idx","not","compile","unmatched","has","elemLang","hash","location","root","focus","activeElement","safeActiveElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","nextSibling","header","button","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","image","submit","reset","parseOnly","soFar","preFilters","cached","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","unique","getText","isXML","selectors","truncate","is","siblings","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","cur","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","noValue","method","fail","then","Callbacks","_","flag","createOptions","firing","memory","fired","locked","list","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","handler","special","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","owner","Data","uid","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_removeData","attrs","dequeue","startLength","_queueHooks","unshift","stop","clearQueue","count","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","hide","toggle","div","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","defaultValue","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","optgroup","rhtml","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","on","types","one","origFn","off","leverageNative","isSetup","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","curCSS","computed","width","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","height","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","marginDelta","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","expand","expanded","propHooks","run","percent","eased","step","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","classNames","curValue","finalValue","removeClass","toggleClass","stateVal","isValidValue","hasClass","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","rtrim","proxy","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","$","noConflict","EventListener","eventTarget","eventName","eventOptions","unorderedBindings","Set","connect","disconnect","bindingConnected","binding","bindingDisconnected","delete","handleEvent","extendedEvent","stopImmediatePropagation_1","immediatePropagationStopped","extendEvent","bindings","leftIndex","rightIndex","Dispatcher","application","eventListenerMaps","Map","started","eventListeners","eventListener","reduce","listeners","fetchEventListenerForBinding","handleError","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","createEventListener","descriptorPattern","parseEventTarget","eventTargetName","Action","element","descriptor","tagName","defaultEventNames","getDefaultEventNameForElement","methodName","forToken","descriptorString","eventNameSuffix","Binding","action","willBeInvokedByEvent","invokeWithEvent","controller","Element","containsElement","ElementObserver","_this","mutationObserver","MutationObserver","mutations","processMutations","observe","childList","subtree","refresh","takeRecords","matchElementsInTree","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","elementFromNode","processTree","elementIsActive","tree","processor","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","StringMapObserver","stringMap","knownAttributeNames","refreshAttribute","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","fetch","del","size","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","getValuesForKey","getKeysForValue","__extends","setPrototypeOf","__proto__","__","_super","IndexedMultimap","keysByValue","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","findIndex","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","attributeValue","invokeChangedCallbackForValue","valueDescriptors","name_1","Context","controllerConstructor","bindingObserver","dispatcher","valueObserver","initialize","parentElement","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","__spreadArrays","il","jl","bless","shadowConstructor","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","defineProperties","shadow","blessings","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","extendWithReflect","extended","_newTarget","Reflect","construct","Module","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","ClassMap","getDataKey","getAttributeName","getAttributeNameForKey","camelize","char","capitalize","dasherize","DataMap","Guide","logger","warnedKeysByObject","warnedKeys","attributeValueContainsToken","TargetSet","targetName","targetNames","findTarget","findLegacyTarget","findAll","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findElement","findAllElements","getLegacySelectorForTargetName","targetDescriptor","targetAttribute","guide","Scope","classes","controllerSelector","queryElements","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","thisArg","_arguments","P","generator","fulfilled","rejected","__generator","f","g","label","sent","trys","ops","verb","op","Application","router","register","rest","unload","getControllerForElementAndIdentifier","ClassPropertiesBlessing","classDefinition","TargetPropertiesBlessing","targetDefinition","ValuePropertiesBlessing","valueDefinitionPairs","propertyDescriptorMap","valueDefinitionPair","valueDescriptor","parseValueDefinitionPair","read","readers","write","writers","default","propertiesForValueDefinitionPair","typeConstant","Boolean","Number","parseValueTypeConstant","defaultValuesByType","valueDescriptorForTokenAndType","boolean","writeJSON","stringify","Controller","Popper","_interopDefaultLegacy","$__default","Popper__default","_defineProperties","_createClass","Constructor","protoProps","staticProps","_extends","_inheritsLoose","subClass","superClass","_setPrototypeOf","TRANSITION_END","MAX_UID","MILLISECONDS_MULTIPLIER","getSpecialTransitionEndEvent","transitionEndEmulator","called","Util","triggerTransitionEnd","setTransitionEndSupport","emulateTransitionEnd","getUID","getSelectorFromElement","hrefAttr","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","supportsTransitionEnd","isElement","typeCheckConfig","componentName","configTypes","expectedTypes","valueType","findShadowRoot","attachShadow","ShadowRoot","jQueryDetection","minMajor","ltMajor","minMinor","minPatch","maxMajor","NAME$a","VERSION$a","DATA_KEY$a","EVENT_KEY$a","DATA_API_KEY$7","JQUERY_NO_CONFLICT$a","CLASS_NAME_ALERT","CLASS_NAME_FADE$5","CLASS_NAME_SHOW$7","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API$6","SELECTOR_DISMISS","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","_removeElement","dispose","closeEvent","_destroyElement","_jQueryInterface","$element","_handleDismiss","alertInstance","NAME$9","VERSION$9","DATA_KEY$9","EVENT_KEY$9","DATA_API_KEY$6","JQUERY_NO_CONFLICT$9","CLASS_NAME_ACTIVE$3","CLASS_NAME_BUTTON","CLASS_NAME_FOCUS","EVENT_CLICK_DATA_API$5","EVENT_FOCUS_BLUR_DATA_API","EVENT_LOAD_DATA_API$2","SELECTOR_DATA_TOGGLE_CARROT","SELECTOR_DATA_TOGGLES","SELECTOR_DATA_TOGGLE$4","SELECTOR_DATA_TOGGLES_BUTTONS","SELECTOR_INPUT","SELECTOR_ACTIVE$2","SELECTOR_BUTTON","Button","shouldAvoidTriggerChange","triggerChangeEvent","addAriaPressed","classList","avoidTriggerChange","initialButton","inputBtn","_len","_button","NAME$8","VERSION$8","DATA_KEY$8","EVENT_KEY$8","DATA_API_KEY$5","JQUERY_NO_CONFLICT$8","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","CLASS_NAME_SLIDE","CLASS_NAME_RIGHT","CLASS_NAME_LEFT","CLASS_NAME_NEXT","CLASS_NAME_PREV","CLASS_NAME_POINTER_EVENT","DIRECTION_NEXT","DIRECTION_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","EVENT_DRAG_START","EVENT_LOAD_DATA_API$1","EVENT_CLICK_DATA_API$4","SELECTOR_ACTIVE$1","SELECTOR_ACTIVE_ITEM","SELECTOR_ITEM","SELECTOR_ITEM_IMG","SELECTOR_NEXT_PREV","SELECTOR_INDICATORS","SELECTOR_DATA_SLIDE","SELECTOR_DATA_RIDE","Default$7","keyboard","slide","pause","touch","DefaultType$7","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","cycle","clearInterval","_updateInterval","setInterval","visibilityState","activeIndex","_getItemIndex","_handleSwipe","absDeltax","_this2","_keydown","_addTouchEventListeners","_this3","move","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","slideEvent","_setActiveIndicatorElement","indicators","nextIndicator","elementInterval","defaultInterval","directionalClassName","orderClassName","_this4","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$7","VERSION$7","DATA_KEY$7","EVENT_KEY$7","DATA_API_KEY$4","JQUERY_NO_CONFLICT$7","CLASS_NAME_SHOW$6","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","DIMENSION_WIDTH","DIMENSION_HEIGHT","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_HIDE$4","EVENT_HIDDEN$4","EVENT_CLICK_DATA_API$3","SELECTOR_ACTIVES","SELECTOR_DATA_TOGGLE$3","Default$6","DefaultType$6","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","startEvent","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$trigger","$target","NAME$6","VERSION$6","DATA_KEY$6","EVENT_KEY$6","DATA_API_KEY$3","JQUERY_NO_CONFLICT$6","ESCAPE_KEYCODE$1","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","CLASS_NAME_DISABLED$1","CLASS_NAME_SHOW$5","CLASS_NAME_DROPUP","CLASS_NAME_DROPRIGHT","CLASS_NAME_DROPLEFT","CLASS_NAME_MENURIGHT","CLASS_NAME_POSITION_STATIC","EVENT_HIDE$3","EVENT_HIDDEN$3","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_CLICK","EVENT_CLICK_DATA_API$2","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE$2","SELECTOR_FORM_CHILD","SELECTOR_MENU","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$5","flip","boundary","reference","popperConfig","DefaultType$5","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","hideEvent","destroy","update","scheduleUpdate","Default","DefaultType","_getPlacement","$parentDropdown","placement","_getOffset","offsets","modifiers","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","NAME$5","VERSION$5","DATA_KEY$5","EVENT_KEY$5","DATA_API_KEY$2","JQUERY_NO_CONFLICT$5","ESCAPE_KEYCODE","CLASS_NAME_SCROLLABLE","CLASS_NAME_SCROLLBAR_MEASURER","CLASS_NAME_BACKDROP","CLASS_NAME_OPEN","CLASS_NAME_FADE$4","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","EVENT_HIDE$2","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$2","EVENT_SHOW$2","EVENT_SHOWN$2","EVENT_FOCUSIN","EVENT_RESIZE","EVENT_CLICK_DISMISS$1","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEUP_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_CLICK_DATA_API$1","SELECTOR_DIALOG","SELECTOR_MODAL_BODY","SELECTOR_DATA_TOGGLE$1","SELECTOR_DATA_DISMISS$1","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","Default$4","backdrop","DefaultType$4","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","isModalOverflowing","scrollHeight","clientHeight","modalTransitionDuration","modalBody","_enforceFocus","shownEvent","transitionComplete","_this5","_this6","_this7","_this8","_resetAdjustments","_resetScrollbar","_removeBackdrop","_this9","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","innerWidth","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","scrollDiv","scrollbarWidth","clientWidth","_this11","uriAttrs","DefaultWhitelist","area","br","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","strong","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","regExp","attrRegex","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","_loop","elName","attributeList","whitelistedAttributes","NAME$4","VERSION$4","DATA_KEY$4","EVENT_KEY$4","JQUERY_NO_CONFLICT$4","CLASS_PREFIX$1","BSCLS_PREFIX_REGEX$1","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$3","CLASS_NAME_SHOW$3","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_ARROW","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","template","title","fallbackPlacement","customClass","sanitize","DefaultType$3","Event$1","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","NAME","setContent","attachment","_getAttachment","addAttachmentClass","_getContainer","_fixTransition","prevHoverState","_cleanTipClass","getTitle","setElementContent","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","eventIn","eventOut","_fixTitle","titleType","dataAttributes","$tip","tabClass","popperData","instance","popper","initConfigAnimation","NAME$3","VERSION$3","DATA_KEY$3","EVENT_KEY$3","JQUERY_NO_CONFLICT$3","CLASS_PREFIX","BSCLS_PREFIX_REGEX","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_Tooltip","_getContent","NAME$2","VERSION$2","DATA_KEY$2","EVENT_KEY$2","DATA_API_KEY$1","JQUERY_NO_CONFLICT$2","CLASS_NAME_DROPDOWN_ITEM","CLASS_NAME_ACTIVE$1","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_LOAD_DATA_API","METHOD_OFFSET","METHOD_POSITION","SELECTOR_DATA_SPY","SELECTOR_NAV_LIST_GROUP$1","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN$1","SELECTOR_DROPDOWN_ITEMS","SELECTOR_DROPDOWN_TOGGLE$1","Default$1","DefaultType$1","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","$spy","NAME$1","VERSION$1","DATA_KEY$1","EVENT_KEY$1","DATA_API_KEY","JQUERY_NO_CONFLICT$1","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE","CLASS_NAME_DISABLED","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","hiddenEvent","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","$this","VERSION","JQUERY_NO_CONFLICT","CLASS_NAME_FADE","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","EVENT_CLICK_DISMISS","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","SELECTOR_DATA_DISMISS","autohide","Toast","_clearTimeout","_close","Scrollspy","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","loadCSPNonce","ref","cspNonce","mozMatchesSelector","oMatchesSelector","setData","csrfParam","csrfToken","meta","CSRFProtection","refreshCSRFTokens","CustomEvent","createEvent","initCustomEvent","dispatchEvent","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","OPENED","accept","withCredentials","DONE","parser","isCrossDomain","serializeElement","additionalParam","inputs","formElements","form","allowAction","handleConfirm","confirm","answer","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","link","isRemote","handleRemote","enctype","FormData","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","rails","_rails_loaded","it","globalThis","escapeExpression","toHTML","possible","badChars","escapeChar","isEmpty","createFrame","frame","blockParams","ids","path","appendContextPath","contextPath","chr","_slicedToArray","_arrayWithHoles","return","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","customElements","polyfillWrapFlushCallback","BuiltInHTMLElement","HTMLElement","wrapperForTheName","raise","errorConstructor","requestSubmit","submitter","DOMException","validateSubmitter","HTMLFormElement","submittersByForm","clickCaptured","candidate","findSubmitterFromClickTarget","FrameLoadingStyle","FetchMethod","FormSubmissionState","FormEnctype","TimingMetric","VisitState","vendor","SubmitEvent","FrameElement","observedAttributes","super","loaded","delegateConstructor","connectedCallback","disconnectedCallback","reload","sourceURLReloaded","attributeChangedCallback","loadingStyleChanged","completeChanged","sourceURLChanged","disabledChanged","loading","lazy","eager","frameLoadingStyleFromString","autoscroll","isLoading","isPreview","expandURL","locatable","URL","baseURI","getAnchor","anchorMatch","getAction","getExtension","pathname","getPathComponents","getLastPathComponent","isPrefixedBy","baseURL","origin","endsWith","getPrefix","startsWith","locationIsVisitable","rootLocation","getRequestURL","toCacheKey","FetchResponse","succeeded","ok","failed","clientError","serverError","redirected","isHTML","responseHTML","activateScriptElement","createdScriptElement","getMetaContent","destinationElement","sourceElement","_ref","copyElementAttributes","_ref2","nextAnimationFrame","parseHTMLDocument","unindent","strings","lines","interpolate","indent","line","uuid","_len2","_key2","markAsBusy","_len4","_key4","localName","clearBusyState","_len5","_key5","waitForLoad","timeoutInMilliseconds","onComplete","getHistoryMethodForAction","history","replaceState","pushState","getVisitAction","_len6","_key6","isAction","getMetaElement","findClosestRecursively","assignedSlot","FetchRequest","URLSearchParams","abortController","AbortController","resolveRequestPromise","_value","defaultHeaders","searchParams","entries","cancel","perform","fetchOptions","prepareRequest","allowRequestToBeIntercepted","requestStarted","receive","willDelegateErrorHandling","requestErrored","requestFinished","fetchResponse","requestPreventedHandlingResponse","requestSucceededWithResponse","requestFailedWithResponse","credentials","redirect","isSafe","signal","abortSignal","referrer","Accept","acceptResponseType","requestInterception","resume","AppearanceObserver","intersect","lastEntry","isIntersecting","elementAppearedInViewport","intersectionObserver","IntersectionObserver","unobserve","StreamMessage","streamElement","importNode","inertScriptElement","templateElement","importStreamElements","FormSubmission","confirmMethod","_submitter","formElement","mustRedirect","initialized","formData","buildFormData","_ref5","_ref6","File","search","mergeFormDataEntries","fetchRequest","post","put","patch","fetchMethodFromString","formElementAction","urlEncoded","stringFormData","encoding","multipart","plain","formEnctypeFromString","_ref3","_ref4","_FormSubmissionState","requesting","confirmationMessage","_FormSubmissionState2","stopping","cookieName","cookie","decodeURIComponent","getCookieValue","requestAcceptsTurboStreamResponse","_request","waiting","setSubmitsWith","formSubmission","formSubmissionStarted","formSubmissionFailedWithResponse","requestMustRedirect","responseSucceededWithoutRedirect","formSubmissionErrored","receiving","formSubmissionSucceededWithResponse","resetSubmitterText","formSubmissionFinished","submitsWith","originalSubmitText","_len3","_key3","Snapshot","hasAnchor","getElementForAnchor","firstAutofocusableElement","permanentElements","queryPermanentElementsAll","getPermanentElementById","getPermanentElementMapForSnapshot","snapshot","permanentElementMap","currentPermanentElement","newPermanentElement","FormSubmitObserver","submitCaptured","submitBubbled","submissionDoesNotDismissDialog","HTMLIFrameElement","submissionDoesNotTargetIFrame","willSubmitForm","formSubmitted","View","resolveRenderPromise","resolveInterceptionPromise","scrollToAnchor","scrollToElement","focusElement","scrollToPosition","scrollToAnchorFromLocation","scrollIntoView","_ref7","scrollRoot","scrollToTop","render","renderer","shouldRender","newSnapshot","renderPromise","prepareToRenderSnapshot","renderInterception","renderElement","allowsImmediateRender","renderSnapshot","viewRenderedSnapshot","preloadOnLoadLinksForView","finishRenderingSnapshot","invalidate","reloadReason","reason","viewInvalidated","markAsPreview","prepareToRender","finishRendering","FrameView","missing","LinkInterceptor","clickBubbled","respondsToEventTarget","linkClicked","shouldInterceptLinkClick","linkClickIntercepted","willVisit","_event","LinkClickObserver","MouseEvent","clickEventIsSignificant","composedPath","findLinkFromClickTarget","doesNotTargetIFrame","getLocationForLink","willFollowLinkToLocation","followedLinkToLocation","isContentEditable","FormLinkClickObserver","linkInterceptor","willSubmitFormLinkToLocation","_ref8","_ref9","turboFrame","turboAction","turboConfirm","submittedFormLinkToLocation","Bardo","preservingPermanentElements","bardo","enter","leave","_this$permanentElemen","enteringBardo","replaceNewPermanentElementWithPlaceholder","replaceCurrentPermanentElementWithClone","replacePlaceholderWithPermanentElement","leavingBardo","permanentElement","placeholder","createPlaceholderForPermanentElement","getPlaceholderById","placeholders","Renderer","currentSnapshot","willRender","resolvingFunctions","focusFirstAutofocusableElement","connectedSnapshot","elementIsFocusable","currentElement","newElement","FrameRenderer","destinationRange","createRange","selectNodeContents","deleteContents","frameElement","sourceRange","extractContents","loadFrameElement","scrollFrameIntoView","activateScriptElements","willRenderFrame","block","readScrollBehavior","newScriptElements","activatedScriptElement","ProgressBar","defaultCSS","animationDuration","hiding","trickle","setValue","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","installStylesheetElement","installProgressElement","startTrickling","fadeProgressElement","uninstallProgressElement","stopTrickling","trickleInterval","HeadSnapshot","detailsByOuterHTML","elementIsNoscript","elementWithoutNonce","outerHTML","details","elementType","tracked","elementIsTracked","trackedElementSignature","getScriptElementsNotInSnapshot","getElementsMatchingTypeNotInSnapshot","getStylesheetElementsNotInSnapshot","matchedType","_ref10","_ref11","provisionalElements","_this$detailsByOuterH","getMetaValue","findMetaElementByName","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","PageSnapshot","fromHTMLString","fromDocument","fromElement","_ref12","headSnapshot","clonedElement","selectElements","clonedSelectElements","_ref13","_ref14","selectedOptions","clonedPasswordInput","headElement","getSetting","cacheControlValue","isPreviewable","isCacheable","isVisitable","defaultOptions","historyChanged","visitCachedSnapshot","updateHistory","shouldCacheSnapshot","acceptsStreamResponse","SystemStatusCode","PageStage","Visit","restorationIdentifier","timingMetrics","followedRedirect","scrolled","snapshotCached","_Object$assign","snapshotHTML","isSamePage","locationWithActionIsSamePage","adapter","restorationData","getRestorationDataForIdentifier","silent","recordTimingMetric","visitStart","visitStarted","cancelRender","canceled","visitEnd","followRedirect","visitCompleted","visitFailed","changeHistory","issueRequest","hasPreloadedResponse","simulateRequest","shouldIssueRequest","startRequest","recordResponse","finishRequest","requestStart","visitRequestStarted","isSuccessful","visitRequestCompleted","visitRequestFailedWithStatusCode","requestEnd","visitRequestFinished","loadResponse","_this$response","cacheSnapshot","renderPage","performScroll","visitRendered","renderError","getCachedSnapshot","getCachedSnapshotForLocation","getPreloadedSnapshot","hasCachedSnapshot","loadCachedSnapshot","redirectedToLocation","visitProposedToLocation","goToSamePageAnchor","_response","contentTypeMismatch","_error","networkFailure","forceReloaded","scrollToRestoredPosition","visitScrolledToSamePageLocation","lastRenderedLocation","scrollPosition","metric","getTimingMetrics","cancelAnimationFrame","BrowserAdapter","session","progressBar","showProgressBar","startVisit","visit","showVisitProgressBarAfterDelay","timeoutFailure","_visit","hideVisitProgressBar","pageInvalidated","_formSubmission","showFormProgressBarAfterDelay","hideFormProgressBar","visitProgressBarTimeout","progressBarDelay","formProgressBarTimeout","CacheObserver","deprecatedSelector","removeTemporaryElements","temporaryElements","temporaryElementsWithDeprecation","FrameRedirector","formSubmitObserver","_location","shouldRedirect","findFrameElement","shouldSubmit","submissionIsNavigatable","elementIsNavigatable","History","pageLoaded","onPopState","shouldHandlePopState","turbo","historyPoppedToLocationWithRestorationIdentifier","onPageLoad","updateRestorationData","additionalData","assumeControlOfScrollRestoration","previousScrollRestoration","scrollRestoration","relinquishControlOfScrollRestoration","pageIsLoaded","Navigator","proposeVisit","allowsVisitingLocationWithAction","currentVisit","submitForm","clearSnapshotCache","visitOptions","getActionForFormSubmission","currentAnchor","isRestorationToTop","oldURL","newURL","_ref16","PageObserver","stage","interpretReadyState","pageIsInteractive","pageIsComplete","pageWillUnload","interactive","pageBecameInteractive","ScrollObserver","onScroll","updatePosition","scrollPositionChanged","StreamMessageRenderer","_ref17","permanentElementsInDocument","permanentElementInDocument","elementInStream","getPermanentElementMapForFragment","StreamObserver","sources","inspectFetchResponse","fetchResponseFromEvent","fetchResponseIsStream","receiveMessageResponse","receiveMessageEvent","receiveMessageHTML","connectStreamSource","streamSourceIsConnected","disconnectStreamSource","receivedMessageFromStream","ErrorRenderer","_document","replaceHeadAndBody","_document2","newHead","replaceableElement","scriptElements","PageRenderer","HTMLBodyElement","trackedElementsAreIdentical","mergeHead","replaceBody","currentHeadSnapshot","newHeadSnapshot","mergedHeadElements","mergeProvisionalElements","newStylesheetElements","copyNewHeadStylesheetElements","copyNewHeadScriptElements","activateNewBody","assignNewBody","loadingElements","newHeadStylesheetElements","newHeadScriptElements","newHeadElements","newHeadProvisionalElements","currentHeadProvisionalElements","isCurrentElementInElementList","elementList","_ref18","_ref19","isEqualNode","removeCurrentHeadProvisionalElements","copyNewHeadProvisionalElements","adoptNode","activateNewBodyScriptElements","newBodyScriptElements","SnapshotCache","snapshots","PageView","snapshotCache","viewWillCacheSnapshot","cachedSnapshot","Preloader","preloadURL","extendURLWithDeprecatedProperties","deprecatedLocationPropertyDescriptors","absoluteURL","StreamActions","targetElements","templateContent","removeDuplicateTargetChildren","targetElement","preloader","pageObserver","cacheObserver","linkClickObserver","scrollObserver","streamObserver","formLinkClickObserver","frameRedirector","streamMessageRenderer","drive","formMode","registerAdapter","renderStreamMessage","clearCache","setProgressBarDelay","setFormMode","applicationAllowsFollowingLinkToLocation","getActionForLink","applicationAllowsVisitingLocation","notifyApplicationAfterVisitingLocation","notifyApplicationAfterPageLoad","notifyApplicationAfterVisitingSamePageLocation","notifyApplicationBeforeCachingSnapshot","_ref20","notifyApplicationBeforeRender","_snapshot","_isPreview","notifyApplicationAfterRender","frameLoaded","notifyApplicationAfterFrameLoad","frameRendered","notifyApplicationAfterFrameRender","ev","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","newBody","timing","HashChangeEvent","submitterIsNavigatable","withinFrame","resetCacheControl","setCacheControl","exemptPageFromCache","exemptPageFromPreview","setMetaContent","navigator$1","Turbo","freeze","setConfirmMethod","TurboFrameMissingError","getFrameElementById","activateElement","currentURL","StreamElement","performAction","beforeRenderEvent","duplicateChildren","existingChildren","flatMap","newChildrenIds","includes","actionFunction","targetElementsById","targetElementsByQuery","HTMLTemplateElement","description","newStream","StreamSourceElement","streamSource","WebSocket","EventSource","fetchResponseLoaded","_fetchResponse","currentFetchRequest","resolveVisitPromise","connected","hasBeenLoaded","ignoredAttributes","_ref21","previousFrameElement","replaceChildren","appearanceObserver","loadingStyle","loadSourceURL","isIgnoringChangesTo","ignoringChangesToAttribute","sourceURL","loadFrameResponse","handleUnvisitableFrameResponse","proposeVisitIfNavigatedWithAction","shouldInterceptNavigation","navigateFrame","currentNavigationElement","_ref22","_ref23","_ref24","newFrame","_newElement","newFrameElement","extractForeignFrameElement","willHandleFrameMissingFromResponse","handleFrameMissingFromResponse","withCurrentNavigationElement","pageSnapshot","visitResponse","Response","throwFrameMissingError","wrapped","CSS","formActionIsVisitable","define","currentScript","$documentAll","documentAll","IS_HTMLDDA","NATIVE_BIND","FunctionPrototype","uncurryThisWithBind","errorProps","Exception","loc","endLineNumber","column","endColumn","captureStackTrace","lineNumber","nop","classListProp","protoProp","elemCtrProto","objCtr","strTrim","arrIndexOf","DOMEx","checkTokenAndGetIndex","ClassList","trimmedClasses","_updateClassName","classListProto","classListGetter","updated","force","classListPropDesc","__defineGetter__","webkitURL","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","get_class","FakeBlobBuilder","FakeBlob","FBB_proto","FB_proto","FileReaderSync","FileException","file_ex_codes","file_ex_code","real_URL","real_create_object_URL","createObjectURL","real_revoke_object_URL","revokeObjectURL","btoa","atob","ArrayBuffer","Uint8Array","fake","uri","uri_origin","uri_info","createElementNS","blob","data_URI_header","object_URL","substring","bb","str","buf","buf_len","fr","readAsBinaryString","unescape","getBlob","blobParts","builder","buffer","webkitSlice","versions","electron","MediumEditor","Extension","FormExtension","AnchorForm","AnchorPreview","KeyboardCommands","FontNameForm","FontSizeForm","Placeholder","Toolbar","ImageDragging","extensions","copyInto","overwrite","nodeContainsWorksWithTextNodes","testParent","testText","exc","isIE","appName","userAgent","isEdge","isFF","isMac","platform","BACKSPACE","TAB","ENTER","ESCAPE","SPACE","DELETE","K","V","isMetaCtrlKey","isKey","getKeyCode","blockContainerElementNames","emptyElementNames","createLink","textNodes","moveTextRangeIntoElement","findOrCreateMatchingTextNodes","treeWalker","createTreeWalker","NodeFilter","SHOW_ALL","matchedNodes","currentTextIndex","startReached","currentNode","newNode","nextNode","splitStartNodeIfNeeded","splitEndNodeIfNeeded","matchStartIndex","splitText","matchEndIndex","textIndexOfEndOfFarthestNode","endSplitPoint","splitByBlockElements","toRet","blockElementQuery","util","child","findAdjacentTextNodeWithContent","rootNode","targetNode","pastTarget","nodeIterator","createNodeIterator","SHOW_TEXT","findPreviousSibling","isMediumEditorElement","previousSibling","isDescendant","checkEquality","throttle","later","traverseUp","testElementFunction","htmlEntities","insertHTMLCommand","range","lastNode","toReplace","ecArgs","queryCommandSupported","execCommand","ignore","getSelection","rangeCount","getRangeAt","commonAncestorContainer","selectNode","startOffset","endOffset","insertNode","cloneRange","setStartAfter","collapse","selectRange","callListeners","execFormatBlock","blockContainer","getTopBlockContainer","getSelectionStart","childNode","isBlockContainer","setTargetBlank","anchorUrl","rel","removeTargetBlank","addClassToAnchors","buttonClass","aChildren","parentAnchor","getClosestTag","isListItem","cleanListDOM","moveCursor","splitOffDOMTree","leafNode","splitLeft","splitOnNode","createdNode","splitRight","appendLast","currParent","newParent","hasChildNodes","startNode","endNode","findCommonRoot","rootChildren","afterLast","depthOfNode","inNode","theDepth","inNode1","inNode2","depth1","depth2","node1","node2","isElementAtBeginningOfBlock","getContainerEditorElement","getClosestBlockContainer","topBlock","getFirstSelectableLeafNode","firstCell","getFirstTextNode","_getFirstTextNode","textNode","ensureUrlHasProtocol","deprecated","oldName","newName","deprecatedMethod","cleanupAttrs","cleanupTags","tags","unwrapTags","_s4","Surrogate","checkState","queryCommandState","isAlreadyApplied","setActive","setInactive","getInteractionElements","getEditorElements","getEditorId","getEditorOption","helper","filterOnlyParentElements","FILTER_ACCEPT","FILTER_SKIP","Selection","findMatchingSelectionParent","contentWindow","getSelectionElement","exportSelection","selectionState","preSelectionRange","setEnd","startContainer","doesRangeStartWithImages","startsWithImage","trailingImageCount","getTrailingImageCount","endContainer","emptyBlocksIndex","getIndexRelativeToAdjacentEmptyBlocks","importSelection","favorLaterSelectionAnchor","setStart","nextCharIndex","nodeStack","charIndex","foundStart","foundEnd","allowRangeToStartAtEndOfNode","lastTextNode","endIndex","importSelectionMoveCursorPastBlocks","importSelectionMoveCursorPastAnchor","prevNode","currentNodeIndex","startBlock","SHOW_ELEMENT","currIndex","cursorContainer","cursorOffset","closestBlock","emptyBlocksCount","blockIsEmpty","trailingImages","selectionContainsContent","isCollapsed","selectionNode","getSelectedParentElement","selectionInContentEditableFalse","sawtrue","sawfalse","ce","getSelectionHtml","cloneContents","getCaretOffsets","preCaretRange","postCaretRange","rangeSelectsSingleNode","getSelectedElements","currNode","containsNode","clearSelection","moveCursorToStart","collapseToStart","collapseToEnd","getSelectionRange","removeAllRanges","addRange","anchorNode","isElementDescendantOfExtension","extension","extensionElements","Events","disabledEvents","customEvents","InputEventOnContenteditableSupported","attachDOMEvent","listener","useCapture","detachDOMEvent","indexOfListener","detachAllDOMEvents","detachAllEventsFromElement","filtered","attachAllEventsToElement","contentCache","eventsCache","enableCustomEvent","disableCustomEvent","attachCustomEvent","setupListener","detachCustomEvent","indexOfCustomListener","detachAllCustomEvents","triggerCustomEvent","editable","detachExecCommand","attachToExecCommand","execCommandListener","execInfo","handleDocumentExecCommand","wrapExecCommand","unwrapExecCommand","command","wrapper","handleBodyMousedown","handleBodyClick","handleBodyFocus","attachToEachElement","handleInput","keypressUpdateInput","handleDocumentSelectionChange","handleClick","handleBlur","handleKeypress","handleKeyup","handleKeydown","handleMouseover","handleDragging","handleDrop","handlePaste","cleanupElement","updateFocus","eventObj","toFocus","hadFocus","getFocusedElement","lastMousedownTarget","externalEvent","updateInput","aria","tagNames","useQueryState","contentDefault","contentFA","isBuiltInButton","createButton","getButton","getAria","getTagNames","ariaLabel","buttonLabels","execAction","knownState","queryState","styleVals","computedStyle","isMatch","formSaveLabel","formCloseLabel","activeClass","hasForm","getForm","isDisplayed","showForm","hideForm","showToolbarDefaultActions","toolbar","getExtensionByName","hideToolbarDefaultActions","setToolbarPosition","customClassOption","customClassOptionText","linkValidation","placeholderText","targetCheckbox","targetCheckboxText","subscribe","createForm","getTemplate","getInput","getAnchorTargetCheckbox","buttonCheckbox","getAnchorButtonCheckbox","saveSelection","getFormOpts","checkLinkFormat","doFormSave","completeFormSave","restoreSelection","checkSelection","ensureEncodedUri","decodeURI","encodeURI","ensureEncodedUriComponent","ensureEncodedParam","ensureEncodedQuery","queryString","hasScheme","scheme","urlParts","query","doFormCancel","attachFormEvents","save","handleFormClick","handleTextboxKeyup","handleCloseClick","handleSaveClick","hideDelay","previewValueSelector","showWhenToolbarIsVisible","showOnEmptyLinks","anchorPreview","createPreview","attachToEditables","getPreviewElement","hidePreview","activeAnchor","showPreview","anchorEl","positionPreview","attachPreviewHandlers","halfOffsetWidth","defaultLeft","middleBoundary","elementsContainerBoundary","containerWidth","buttonHeight","diffLeft","diffTop","elementsContainer","elementsContainerAbsolute","relativeBoundary","toolbarExtension","handleEditableMouseover","handlePositionedToolbar","anchorExtension","selectElement","handleAnchorMouseout","anchorToPreview","instanceHandleAnchorMouseout","detachPreviewHandlers","handlePreviewMouseover","lastOver","hovering","handlePreviewMouseout","updatePreview","intervalTimer","instanceHandlePreviewMouseover","instanceHandlePreviewMouseout","WHITESPACE_CHARS","KNOWN_TLDS_FRAGMENT","LINK_REGEXP_TEXT","KNOWN_TLDS_REGEXP","LINK_REGEXP","nodeIsNotInsideAnchorTag","AutoLink","disableEventHandling","onKeypress","onBlur","isLastInstance","activeInstances","_mediumEditors","editor","blurEvent","performLinking","keyPressEvent","performLinkingTimeout","contenteditable","blockElements","documentModified","removeObsoleteAutoLinkSpans","performLinkingWithinElement","spans","trimmedTextContent","charactersTrimmed","splitTextBeforeEnd","characterCount","currentNodeValue","previousNode","lastChildNotExhausted","findLinkableText","matchIndex","matchingTextNodes","shouldNotLink","createAutoLink","matchEnd","autoLink","CLASS_DRAG_OVER","clearClassNames","FileDragging","allowedTypes","handleDrag","dataTransfer","dropEffect","files","isAllowedFile","insertImageFile","fileType","FileReader","fileReader","readAsDataURL","addImageElement","fileDragging","commands","alt","isMeta","isShift","isAlt","keyboardCommands","fonts","fontName","queryCommandValue","getSelect","clearFontName","handleFontChange","font","fontSize","clearFontSize","handleSliderChange","pasteBinDefaultContent","lastRange","keyboardPasteEditable","stopProp","getClipboardContent","clipboardData","legacyText","PasteHandler","forcePlainText","cleanPastedHTML","preCleanReplacements","cleanReplacements","cleanAttrs","cleanTags","handleAddElement","removePasteBin","clipboardContent","pastedHTML","pastedPlain","doPaste","paragraphs","cleanPaste","handlePasteBinPaste","getPasteBinHtml","createPasteBin","rects","pasteBinElm","pasteBinId","boundHandlePaste","getPasteBin","pasteBinHtml","elList","workEl","multiline","replacements","pasteHTML","filterCommonBlocks","filterLineBreak","fragmentBody","pasteBlock","cleanupSpans","isCommonBlock","previousElementSibling","removeWithParent","childElementCount","containerEl","newEl","isCEF","paste","hideOnClick","initPlaceholders","attachEventHandlers","initElement","updatePlaceholder","handleRemoveElement","showPlaceholder","hidePlaceholder","dontShow","handleFocus","align","allowMultiParagraphSelection","firstButtonClass","lastButtonClass","standardizeSelectionStart","static","sticky","stickyTopOffset","updateOnEmptySelection","relativeContainer","initThrottledMethods","getToolbarElement","forEachExtension","createToolbar","createToolbarButtons","btn","buttonName","buttonOpts","addBuiltInExtension","getToolbarActionsElement","throttledPositionToolbar","positionToolbarIfShown","handleEditableClick","handleEditableKeyup","handleDocumentMouseup","handleWindowScroll","handleWindowResize","hideTimeout","delayShowTimeout","hideToolbar","showToolbar","isToolbarDefaultActionsDisplayed","hideExtensionForms","multipleBlockElementsSelected","regexBlockElements","hasMultiParagraphs","modifySelection","selectionRange","adjacentNode","preventSelectionUpdates","selectionElement","showAndUpdateToolbar","setToolbarButtonStates","checkActiveButtons","manualStateChecks","updateExtensionState","positionStaticToolbar","positionToolbar","targetLeft","windowWidth","toolbarElement","containerRect","containerTop","containerCenter","toolbarHeight","toolbarWidth","positions","imageDragging","handleDisableExtraSpaces","caretPositions","handleDisabledEnterKeydown","disableReturn","disableDoubleReturn","handleTabKeydown","handleBlockDeleteKeydowns","isHeader","nextElementSibling","handleEditableInput","textarea","addToEditors","removeFromEditors","createElementsArray","filterEditorElements","cleanupTextareaElement","initExtension","setExtensionDefaults","isToolbarEnabled","every","isAnchorPreviewEnabled","isPlaceholderEnabled","isAutoLinkEnabled","isImageDraggingEnabled","isKeyboardCommandsEnabled","shouldUseFileDraggingExtension","createContentEditable","uniqueId","atts","resetContent","editorId","instanceHandleEditableInput","disableEditing","spellcheck","instanceHandleEditableKeydownEnter","elementId","initialContent","attachHandlers","disableExtraSpaces","initExtensions","builtIns","toolbarOptions","mergeOptions","pair","execActionInternal","cmdValueArgument","cleanupJustifyDivFragments","textAlign","childDivs","isDiv","origElements","addElements","unsubscribe","ext","merged","stopSelectionUpdates","startSelectionUpdates","selectAllContents","selElement","focused","editableElementIndex","editableElement","targetUrl","currentEditor","customEvent","currentSelection","exportedSelection","startContainerParentElement","endContainerParentElement","currRange","modifiedExportedSelection","leadingWhitespacesCount","targetBlank","initEvent","checkContentChanged","getContent","removeElements","toRemove","getEditorFromElement","activeButtonClass","parseVersionString","release","preRelease","major","minor","revision","fails","uncurryThis","isCallable","OBJECT","FUNCTION","UNDEFINED","domRangeProperties","domRangeMethods","textRangeProperties","textRangeMethods","isHostMethod","isHostObject","isHostProperty","createMultiplePropertyTest","testFunc","areHostMethods","areHostObjects","areHostProperties","isTextRange","getBody","addListener","isBrowser","api","supported","features","alertOnFail","alertOnWarn","preferTextRange","autoInitialize","rangyAutoInitialize","consoleLog","log","alertOrLog","shouldAlert","alert","optionsParam","arrayLike","attachEvent","initListeners","getErrorDesc","testRange","implementsDomRange","implementsTextRange","createTextRange","moduleName","deprecationNotice","createAliasForDeprecatedMethod","addInitListener","shimListeners","shim","dependencies","initializer","createModule","initFunc","newModule","RangePrototype","SelectionPrototype","addShimListener","createMissingNativeApi","requiredModule","requiredModuleNames","createError","createCoreModule","rangePrototype","selectionPrototype","UNDEF","arrayContains","isHtmlNamespace","getNodeIndex","getNodeLength","getCommonAncestor","isAncestorOf","ancestor","descendant","selfIsAncestor","isOrIsAncestorOf","getClosestAncestorIn","isCharacterDataNode","isTextOrCommentNode","precedingNode","splitDataNode","positionsToPreserve","deleteData","getDocument","getWindow","getIframeDocument","iframeEl","getIframeWindow","getContentDocument","getRootContainer","comparePoints","nodeA","offsetA","nodeB","offsetB","nodeC","childA","childB","getComputedStyleProperty","crashyTextNodes","isBrokenNode","inspectNode","idAttr","fragmentFromNodeChildren","createTestElement","contentEditable","bodyFirstChild","removeNode","NodeIterator","_next","createIterator","DomPosition","codeName","propName","currentStyle","_current","hasNext","equals","INDEX_SIZE_ERR","HIERARCHY_REQUEST_ERR","WRONG_DOCUMENT_ERR","NO_MODIFICATION_ALLOWED_ERR","NOT_FOUND_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","INVALID_NODE_TYPE_ERR","dom","isNonTextPartiallySelected","getRangeDocument","getRangeRoot","getBoundaryBeforeNode","getBoundaryAfterNode","insertNodeAtPosition","firstNodeInserted","rangesIntersect","rangeA","rangeB","touchingIsIntersecting","assertRangeValid","startComparison","endComparison","cloneSubtree","partiallySelected","subIterator","frag","isPartiallySelectedSubtree","getSubtreeIterator","iterateSubtree","rangeIterator","iteratorState","subRangeIterator","deleteSubtree","extractSubtree","getNodesInRange","nodeTypes","filterNodeTypes","filterExists","RangeIterator","sc","ec","getName","clonePartiallySelectedTextNodes","collapsed","so","eo","isSingleCharacterDataNode","_first","_last","subRange","Range","updateBoundaries","beforeAfterNodeTypes","rootContainerNodeTypes","readonlyNodeTypes","insertableNodeTypes","surroundNodeTypes","createAncestorFinder","getDocumentOrFragmentContainer","getReadonlyAncestor","getDocTypeNotationEntityAncestor","getElementAncestor","assertNoDocTypeNotationEntityAncestor","allowSelf","assertValidNodeType","invalidTypes","assertValidOffset","assertSameDocumentOrFragment","assertNodeNotReadOnly","assertNode","isValidOffset","isRangeValid","styleEl","htmlParsingConforms","createContextualFragment","fragmentStr","splitRangeBoundaries","startEndSame","setStartAndEnd","rangeToHtml","rangeProperties","s2s","s2e","e2e","e2s","n_b","n_a","n_b_a","n_i","copyComparisonConstantsToObject","START_TO_START","START_TO_END","END_TO_END","END_TO_START","NODE_BEFORE","NODE_AFTER","NODE_BEFORE_AND_AFTER","NODE_INSIDE","copyComparisonConstants","createRangeContentRemover","remover","boundaryUpdater","createPrototypeRange","createBeforeAfterNodeSetter","isStart","setRangeStart","setRangeEnd","F","setBoundary","setStartBefore","setEndBefore","setEndAfter","canSurroundContents","boundariesInvalid","splitBoundaries","splitBoundariesPreservingPositions","normalizeBoundaries","mergeForward","appendData","mergeBackward","nodeLength","insertData","normalizeStart","collapseToPoint","updateCollapsedAndCommonAncestor","compareBoundaryPoints","how","prefixA","prefixB","surroundContents","textParts","compareNode","comparePoint","toHtml","intersectsNode","isPointInRange","intersectsRange","intersectsOrTouchesRange","intersection","intersectionRange","union","unionRange","allowPartial","containsNodeContents","containsRange","containsNodeText","nodeRange","getNodes","collapseBefore","collapseAfter","getBookmark","containerNode","moveToBookmark","bookmark","rangesEqual","r1","r2","DomRange","WrappedRange","WrappedTextRange","rangeProto","updateRangeProperties","nativeRange","updateNativeRange","startMoved","endMoved","nativeRangeDifferent","testTextNode","oppositeName","range2","createNativeRange","getTextRangeContainerElement","textRange","parentEl","duplicate","startEl","endEl","startEndContainer","textRangeIsCollapsed","compareEndPoints","getTextRangeBoundaryPosition","wholeRangeContainerElement","startInfo","workingRange","containerElement","canHaveHTML","boundaryPosition","nodeInfo","workingNode","comparison","boundaryNode","workingComparisonType","childNodeCount","moveToElementText","setEndPoint","tempRange","rangeLength","moveStart","createBoundaryTextRange","boundaryParent","boundaryOffset","nodeIsDataNode","startBoundary","rangeContainerElement","rangeToTextRange","startRange","endRange","toTextRange","globalObj","createRangyRange","checkSelectionRanges","getNativeSelection","selectionIsCollapsed","BOOLEAN","NUMBER","CONTROL","isDirectionBackward","WrappedSelection","getWinSelection","winParam","getDocSelection","winSelectionIsBackward","backward","anchorOffset","focusNode","focusOffset","implementsWinGetSelection","implementsDocSelection","useDocumentSelection","isSelectionValid","nativeSel","testSelection","selectionHasAnchorAndFocus","selectionHasExtend","selectionHasSetBaseAndExtent","selectionHasRangeCount","selectionSupportsMultipleRanges","collapsedNonEditableSelectionsSupported","addRangeBackwardToNative","nativeSelection","getNativeRange","originalSelectionRangeCount","selectionHasMultipleRanges","originalSelectionRanges","originalSelectionBackward","testEl","chromeMatch","appVersion","testControlRange","getSelectionRangeAt","implementsControlRange","updateAnchorAndFocusFromRange","anchorPrefix","focusPrefix","updateAnchorAndFocusFromNativeSelection","updateEmptySelection","_ranges","updateType","rangeContainsSingleElement","rangeNodes","getSingleElementFromRange","updateFromTextRange","wrappedRange","updateControlSelection","docSelection","controlRange","addRangeToControlSelection","rangeElement","newControlRange","createControlRange","deleteProperties","detached","cachedRangySelections","actOnCachedSelection","docSel","refreshSelection","selProto","createControlSelection","ranges","addRangeBackward","previousRangeCount","clonedNativeRange","selectionIsBackward","setRanges","checkForChanges","oldRanges","oldAnchorNode","oldAnchorOffset","removeRangeManually","getAllRanges","assertNodeInSameDocument","createStartOrEndSetter","setSingleRange","isBackward","rangeInspects","removeRange","removed","isBackwards","rangeTexts","selectAllChildren","setBaseAndExtent","deleteFromDocument","eachRange","callMethodOnEachRange","changeEachRange","rangeBookmarks","rangeBookmark","selRanges","saveRanges","restoreRanges","rangeHtmls","getNativeTextRange","detachAll","docReady","loadHandler","DESCRIPTORS","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$TypeError","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","CONFIGURABLE","WRITABLE","O","Attributes","ui","widgetUuid","widgetHasOwnProperty","widgetSlice","widget","existingConstructor","basePrototype","proxiedPrototype","fullName","Widget","_createWidget","_childConstructors","_superApply","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","_init","defaultElement","eventNamespace","hoverable","focusable","classesElementLookup","_on","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","_destroy","_removeClass","curOption","_setOptions","_setOption","_setOptionClasses","classKey","currentElements","_classes","_toggleClass","full","bindRemoveEvent","nodesToBind","processClassString","checkOption","_untrackClassesElement","_off","_addClass","suppressDisabledCheck","delegateElement","handlerProxy","_delay","_hoverable","_focusable","focusin","focusout","defaultEffect","hasOptions","effect","effectName","effects","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","_position","getOffsets","parseCss","getDimensions","outerWidth","outerHeight","w1","w2","innerDiv","getScrollInfo","within","isDocument","hasOverflowX","scrollWidth","getWithinInfo","withinElement","isElemWindow","of","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","scrollInfo","collision","at","horizontalOffset","verticalOffset","collisionPosition","elemWidth","elemHeight","marginTop","collisionWidth","collisionHeight","myOffset","my","bottom","feedback","horizontal","vertical","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","newOverLeft","offsetLeft","newOverTop","offsetTop","flipfit","dataName","disableSelection","enableSelection","colors","stepHooks","rplusequals","stringParsers","re","execResult","space","color","Color","green","blue","alpha","spaces","rgba","red","hsla","hue","saturation","lightness","propTypes","supportElem","getType","clamp","allowEmpty","def","stringParse","inst","_rgba","spaceName","transparent","hue2rgb","q","backgroundColor","_spaceName","same","localCache","isCache","_space","used","distance","startColor","startValue","endValue","blend","opaque","rgb","toRgbaString","toHslaString","toHexString","includeAlpha","vtype","_hsla","colorInit","borderColor","part","aqua","black","fuchsia","gray","lime","maroon","navy","olive","purple","silver","teal","white","yellow","dataSpace","dataSpaceStyle","dataSpaceAnimated","classAnimationActions","shorthandStyles","borderBottom","borderLeft","borderRight","borderTop","borderWidth","getElementStyles","styleDifference","oldStyle","newStyle","setAttr","animateClass","applyClassChange","baseClass","allAnimations","styleInfo","dfd","switchClass","_normalizeArguments","standardAnimationOption","parseClip","uiBackCompat","restore","setMode","createWrapper","background","removeWrapper","scaledDimensions","clipToBox","clip","queueLength","saveStyle","restoreStyle","getBaseline","createPlaceholder","cssPosition","marginBottom","removePlaceholder","cleanUp","setTransition","factor","cssUnit","effectMethod","defaultMode","queueName","modes","normalizedMode","cleanup","cssClip","clipObj","transfer","targetFixed","fixTop","fixLeft","endPosition","startPosition","clipInit","baseEasings","Sine","Circ","sqrt","Elastic","sin","Back","Bounce","pow2","bounce","easeIn","up","down","upAnim","downAnim","refValue","times","anims","motion","queuelen","both","oppositeMotion","mx","rows","pieces","cells","childComplete","animComplete","horizFirst","animation1","animation2","backgroundImage","baseline","cProps","vProps","hProps","childOriginal","childFrom","childTo","newOptions","fade","showhide","animateTo","positiveMotion","startClip","startRef","hasTabindex","mapName","focusableIfVisible","fieldset","_form","formResetMixin","_formResetHandler","instances","_bindFormResetHandler","_unbindFormResetHandler","COMMA","DOWN","END","HOME","PAGE_DOWN","PAGE_UP","PERIOD","UP","labels","scrollParent","includeHidden","excludeStaticParent","overflowRegex","tabbable","removeUniqueId","collapsible","heightStyle","icons","activeHeader","activate","beforeActivate","hideProps","paddingTop","paddingBottom","showProps","prevShow","prevHide","_processPanels","_refresh","panel","_createIcons","icon","_destroyIcons","_setupEvents","currentIndex","_eventHandler","_panelKeyDown","prevHeaders","prevPanels","panels","maxHeight","_findActive","headerId","panelId","isVisible","keydown","activeChildren","clickedChildren","clicked","clickedIsActive","collapsing","toShow","toHide","eventData","oldHeader","oldPanel","newHeader","newPanel","_toggle","_animate","_toggleComplete","adjust","boxSizing","submenu","menus","role","activeMenu","mouseHandled","lastMousePosition","_activateItem","keepActiveItem","_menuItems","collapseAll","_closeOnDocumentClick","previousFilter","actualTarget","submenus","character","previousPage","nextPage","_move","filterTimer","_filterMenuItems","newSubmenus","newItems","newWrappers","menu","submenuCaret","_isDivider","_itemRole","listbox","nested","activeParent","_scrollIntoView","_startOpening","scroll","elementHeight","itemHeight","_hasScroll","fromFocus","_open","currentMenu","startMenu","newItem","isFirstItem","isLastItem","escapedCharacter","autoFocus","minLength","change","requestIndex","pending","liveRegionTimer","suppressKeyPress","suppressKeyPressRepeat","suppressInput","isTextarea","isInput","isMultiLine","_isContentEditable","valueMethod","isNewMenu","_keyEvent","term","_searchTimeout","keypress","selectedItem","searching","_change","_initSource","_appendTo","mousedown","menufocus","liveRegion","menuselect","_isEventTargetInWidget","menuElement","_closeOnClickOutside","autocomplete","equalValues","menuVisible","modifierKey","_search","cancelSearch","__response","_normalize","_suggest","_renderMenu","_resizeMenu","_renderItemData","_renderItem","keyEvent","escapeRegex","messages","noResults","amount","controlgroupCornerRegex","onlyVisible","_enhance","_callChildMethod","childWidgets","controlgroupLabel","_initWidgets","instanceOptions","_resolveClassesValues","widgetElement","_updateCornerClass","_buildSimpleOptions","_spinnerOptions","_buttonOptions","_checkboxradioOptions","_selectmenuOptions","middle","only","labelContents","_readType","originalLabel","_updateLabel","_updateIcon","_getRadioGroup","nameSelector","_toggleClasses","checkboxradio","iconSpace","toAdd","iconPosition","showLabel","hasTitle","_updateTooltip","displayBlock","_attachIcon","_attachIconSpace","newShowLabel","newIcon","secondary","buttonset","controlgroup","datepicker_instActive","datepicker_getZindex","Datepicker","_curInst","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","firstDay","isRTL","showMonthAfterYear","yearSuffix","selectMonthLabel","selectYearLabel","_defaults","showOn","showAnim","showOptions","defaultDate","appendText","buttonText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","minDate","maxDate","beforeShowDay","beforeShow","onSelect","onChangeMonthYear","onClose","onUpdateDatepicker","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altField","altFormat","constrainInput","showButtonPanel","autoSize","en","dpDiv","datepicker_bindHover","datepicker_handleMouseover","datepicker","_isDisabledDatepicker","inline","datepicker_extendRemove","markerClassName","maxRows","_widgetDatepicker","setDefaults","_attachDatepicker","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","_lastInput","_hideDatepicker","findMax","maxI","setDate","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","browserWidth","browserHeight","scrollX","scrollY","_dialogInst","_dialogInput","_pos","blockUI","_destroyDatepicker","_enableDatepicker","cursor","_getInst","_optionDatepicker","_getDateDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","_setDateDatepicker","noDefault","_setDateFromField","_getDate","dateStr","handled","_selectDay","_adjustDate","_clearDate","_gotoToday","chars","_possibleChars","lastVal","parseDate","_getFormatConfig","beforeShowSettings","isFixed","_findPos","_checkOffset","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","cols","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","viewHeight","postProcess","_tidyDialog","unblockUI","_checkExternalClick","_adjustInstDate","currentDay","currentMonth","currentYear","_notifyChange","_selectMonthYear","_selectDate","formatDate","noWeekends","checkDate","iFormat","dim","iValue","shortYearCutoffTemp","literal","lookAhead","getNumber","isDoubled","digits","shortNames","longNames","checkLiteral","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","RFC_822","RFC_850","RFC_1036","RFC_1123","RSS","TICKS","TIMESTAMP","W3C","formatNumber","formatName","_restrictMinMax","_determineDate","offsetNumeric","offsetString","newDate","setHours","setMinutes","setSeconds","setMilliseconds","getHours","noChange","origMonth","origYear","today","selectDay","selectMonth","selectYear","maxDraw","gotoDate","controls","buttonPanel","row","group","selectedDate","cornerClass","calender","leadDays","curRows","numRows","printDate","dRow","daySettings","otherMonth","unselectable","tempDate","isMultiMonth","_canAdjustMonth","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","inMinYear","inMaxYear","thisYear","determineYear","endYear","monthHtml","onChange","minMax","curYear","curMonth","yearSplit","minYear","maxYear","otherArgs","ie","_mouseInit","_mouseDown","_mouseDestroy","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseUp","_mouseDownEvent","btnIsLeft","elIsCancel","_mouseCapture","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseStart","_mouseMove","ignoreMissingWhich","_mouseDrag","_mouseStop","plugin","plugins","allowDisconnected","safeBlur","mouse","addClasses","axis","connectToSortable","containment","cursorAt","grid","iframeFix","refreshPositions","revert","revertDuration","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","drag","_setPositionRelative","_setHandleClassName","_removeHandleClassName","destroyOnClear","_getHandle","_blurActiveElement","_blockFrames","iframeBlocks","iframe","_unblockFrames","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","hasFixedAncestor","positionAbs","_refreshOffsets","originalPosition","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","dropBehaviour","prepareOffsets","dragStart","margins","_getParentOffset","_getRelativeOffset","noPropagation","_convertPositionTo","_uiHash","dropped","drop","dragStop","handleElement","helperIsFunction","helperProportions","_isRootNode","po","scrollIsRootNode","isUserScrollable","constrainPosition","co","cancelHelperRemoval","draggable","uiSortable","sortables","sortable","isOver","_storedCSS","_helper","innermostIntersecting","_intersectsWith","containerCache","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","snapElements","$t","$o","ts","bs","ls","rs","x1","x2","y1","y2","snapping","snapItem","_zIndex","alsoResize","animateDuration","animateEasing","autoHide","ghost","handles","minHeight","resize","_num","_isNumber","_aspectRatio","originalElement","_proportionallyResizeElements","resizable","elementIsWrapper","originalResizeStyle","_proportionallyResize","_setupHandles","_handles","resizing","_addedHandles","exp","_removeHandles","hname","se","sw","ne","nw","_renderAxis","padPos","padWrapper","capture","curleft","curtop","_renderProxy","originalSize","sizeDiff","originalMousePosition","_propagate","smp","dx","dy","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","pr","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","Infinity","_vBoundaries","cpos","csize","ismaxw","ismaxh","isminw","isminh","dw","dh","cw","_getPaddingPlusBorderDimensions","widths","borders","paddings","prel","outerDimensions","elementOffset","cs","oc","containerOffset","containerPosition","parentData","containerSize","woset","hoset","isParent","isOffsetRelative","cp","pRatio","cop","continueResize","ho","os","sum","gridX","gridY","ox","oy","newWidth","newHeight","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","autoOpen","closeOnEscape","modal","topOffset","beforeClose","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_untrackInstance","_destroyOverlay","_focusedElement","_hide","moveToTop","_moveToTop","moved","zIndices","zIndexMax","_focusTabbable","_size","_createOverlay","overlay","_show","_makeFocusTarget","uiDialogButtonPane","uiDialogTitlebarClose","_restoreTabbableFocus","_keepFocus","tabbables","uiDialogTitle","uiDialogTitlebar","_title","uiButtonSet","_createButtons","buttonOptions","filteredUi","resizeHandles","_minHeight","_trackingInstances","exists","resizableOptions","isDraggable","isResizable","nonContentHeight","minContentHeight","maxContentHeight","_allowInteraction","jqMinor","isOpening","overlays","dialog","dialogClass","greedy","tolerance","deactivate","over","proportions","isover","isout","_addToManager","droppables","_splice","_addActiveClass","_deactivate","_removeActiveClass","_over","_addHoverClass","_out","_removeHoverClass","_drop","custom","childrenIntersection","droppable","isOverAxis","toleranceMode","absolute","droppablesLoop","greedyChild","parentInstance","intersects","hoverClass","oldValue","_constrainedValue","valueDiv","_refreshValue","newValue","indeterminate","_percentage","percentage","overlayDiv","autoRefresh","selecting","unselected","unselecting","dragged","elementPos","selectees","selecteeOffset","startselected","opos","selectee","doSelect","hit","selectmenuId","_drawButton","_drawMenu","_rendered","menuItems","_parseOption","buttonItem","_renderButtonItem","_resizeButton","_buttonEvents","_refreshMenu","menuWrap","menuInstance","_setSelection","_select","focusIndex","_getSelectedItem","_parseOptions","_setAria","_toggleAttr","_documentClick","menuWidget","_setText","currentOptgroup","_selectFocusedItem","oldIndex","orientation","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_createRange","_createHandles","handleCount","existingHandles","_valueMin","_handleEvents","normValue","closestHandle","mouseOverHandle","elementSize","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_start","_clickOffset","_stop","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","uiHash","handleIndex","_hasMultipleValues","newVal","otherVal","newValues","vals","_values","valsLength","_refreshRange","valModStep","alignValue","_precision","precision","_precisionOf","decimal","lastValPercent","valPercent","valueMin","valueMax","oRange","_set","curVal","keyup","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","beforeStop","_isOverAxis","_isFloating","overrideHandle","validHandle","reverting","_refreshItems","_removeCurrentsFromItems","noActivation","currentContainer","domPosition","_createPlaceholder","storedCursor","storedStylesheet","_storedZIndex","_storedOpacity","_preserveHelperProportions","containers","dragging","lastPositionAbs","_scroll","itemElement","_refreshItemPositions","dragDirection","_getDragVerticalDirection","_getDragHorizontalDirection","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","_getItemsAsjQuery","expression","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","floating","verticalDirection","horizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","addItems","targetData","_queries","queriesLength","toleranceElement","refreshContainers","_createTrPlaceholder","sourceTr","targetTr","dist","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","hardRefresh","counter","delayedTriggers","delayEvent","_inst","sender","spinnerModifier","culture","incremental","numberFormat","page","spin","_draw","_events","cancelBlur","mousewheel","spinning","_spin","mousewheelTimer","checkFocus","_repeat","uiSpinner","steps","_adjustValue","_increment","aboveMin","prevValue","_parse","_format","Globalize","allowAny","stepUp","_stepUp","stepDown","_stepDown","pageUp","pages","pageDown","spinner","_uiSpinnerHtml","_buttonHtml","beforeLoad","_isLocal","locationUrl","running","_processTabs","_initialActive","tabs","anchors","locationHash","tab","_getPanelForTab","_tabKeydown","focusedTab","goingForward","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","lastTabIndex","constrain","_setupHeightStyle","_sanitizeSelector","lis","tablist","prevTabs","prevAnchors","_getList","anchorId","originalAriaControls","_createPanel","oldTab","newTab","_getIndex","_ajaxSettings","track","_addDescribedBy","describedby","_removeDescribedBy","mouseover","tooltips","disabledTitles","tooltipData","_updateContent","_disable","_enable","_registerCloseHandlers","contentOption","tooltip","delayedShow","a11yContent","positionOption","_find","_tooltip","mousemove","fakeEvent","_removeTooltip","closing","tooltipClass","definitionsFromContext","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","defineGlobalProperty","SHARED","store","$String","IndexedObject","requireObjectCoercible","stringSlice","jqueryUjsInit","$document","disableSelector","enableSelector","requiredInputSelector","metadataInput","blankInputs","specifiedSelector","nonBlank","radiosForNameWithNoneSelected","radioName","foundInputs","requiredInputs","checkedRadioButtonNames","nonBlankInputs","metaClick","blankRequiredInputs","nonBlankFileInputs","remote","aborted","timeoutDuration","longerTimeoutBrowsers","debounce","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","_getStyleComputedProp","getReferenceNode","referenceNode","isIE11","MSInputMethodContext","isIE10","getOffsetParent","noOffsetParent","getRoot","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","element1root","getScroll","upperSide","scrollingElement","getBordersSize","sideA","sideB","getSize","getWindowSizes","createClass","getClientRect","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","childrenRect","parentRect","borderLeftWidth","modifier","includeScroll","getFixedPositionOffsetParent","getBoundaries","boundaries","excludeScroll","relativeOffset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","_getWindowSizes","isPaddingNumber","computeAutoPlacement","refRect","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","getOuterSizes","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","runModifiers","ends","isDestroyed","arrowStyles","flipped","positionFixed","isCreated","isModifierEnabled","modifierName","getSupportedPropertyName","prefixes","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","attachToScrollParents","scrollParents","isBody","passive","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","isRequired","_requesting","requested","placements","validPlacements","clockwise","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","divider","splitRegex","mergeWithPrevious","toValue","index2","shiftvariation","_data$offsets","isVertical","side","shiftOffsets","transformProp","popperStyles","transform","escapeWithReference","keepTogether","opSide","_data$offsets$arrow","arrowElement","sideCapitalized","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","placementOpposite","flipOrder","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","inner","subtractLength","bound","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","devicePixelRatio","prefixedProperty","invertTop","invertLeft","onLoad","modifierOptions","Defaults","classCallCheck","Utils","PopperUtils","_interopRequireDefault","HandlebarsEnvironment","_utils","_exception2","_helpers","_decorators","_logger2","_internalProtoAccess","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","objectType","helpers","partials","decorators","registerDefaultHelpers","registerDefaultDecorators","registerHelper","unregisterHelper","registerPartial","partial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","selectVal","initSurvey","validateText","submitButton","consumer","getConsumer","setConsumer","createConsumer","newConsumer","walk","acc","ownKeys","_objectSpread","_defineProperty","getOwnPropertyDescriptors","hint","prim","toPrimitive","_toPrimitive","_toPropertyKey","subscription","channel","mixin","subscriptions","subscribeTo","received","dispatchMessageEvent","subscriptionConnected","disconnected","subscriptionDisconnected","MessageEvent","signed_stream_name","dataset","isBodyInit","formMethod","HTMLButtonElement","HTMLInputElement","determineFormMethod","overrideMethod","determineFetchMethod","innerText","normalize","crypto","getRandomValues","T","__tagifyTagData","delimiters","tagTextProp","maxTags","callbacks","addTagOnBlur","onChangeAfterBlur","whitelist","blacklist","enforceWhitelist","userInput","keepInvalidTags","createInvalidTags","mixTagsAllowedAfter","mixTagsInterpolator","backspace","skipInvalid","pasteAsTags","editTags","clicks","keepInvalid","transformTag","a11y","focusableTags","mixMode","insertAfterTag","autoComplete","rightKey","selectMode","tagNoAnimation","tagInvalid","tagNotAllowed","scopeLoading","hasMaxTags","hasNoTags","inputInvalid","dropdown","dropdownWrapper","dropdownHeader","dropdownFooter","dropdownItem","dropdownItemActive","dropdownItemHidden","dropdownInital","tagText","tagX","tagLoading","tagEditing","tagFlash","tagHide","classname","maxItems","searchKeys","fuzzySearch","caseSensitive","accentedSearch","includeSelectedTags","highlightFirst","closeOnSelect","clearOnSelect","appendTarget","beforeRemoveTag","beforePaste","suggestionClick","_dropdown","refs","D","DOM","parseTemplate","getHeaderRef","getFooterRef","getAllSuggestionsRefs","dropdownItemSelector","inputText","templates","dropdownItemNoMatch","readonly","dropdownHide__bindEventsTimeout","suggestedListItems","filterListItems","editing","suggest","fill","highlightOption","setStateSelection","ddItemData","ddItemElm","flaggedTags","baseOffset","createListHTML","dropdownContent","fillHeaderFooter","refilter","placeAbove","fullscreenElement","webkitFullscreenElement","onKeyDown","onMouseOver","onMouseLeave","onClick","composing","dropdownItemActiveSelector","getSuggestionDataByNode","getNextOrPrevOption","actions","ArrowLeft","getMappedValue","tagify","tagData","suggestionElm","selectOption","addTags","removeTags","editTag","_t$value","elm","onEditTagDone","__isValid","normalizeTags","toggleFocusClass","selectAll","suggestions","isTagDuplicate","exact","sortby","mapValueTo","mappedValue","I","N","exceed","notAllowed","S","required","class","getAttributes","customBinding","customEventsList","mainEvents","main","bindGlobal","isJQueryPlugin","originalInput","removeAllTags","onFocusBlur","onKeydown","onClickScope","dblclick","onDoubleClickScope","onPaste","onDrop","compositionstart","onCompositionStart","compositionend","onCompositionEnd","originalInputValueObserverInterval","observeOriginalInputValue","inputMutationObserver","onInputDOMChange","cb","onWindowKeyDown","onClickAnywhere","unbindGlobal","_this$value","_this$value$","addNew","postUpdate","getTagElms","inputSuggestion","onInput","onMixTagsInput","inputElm","validateTag","toggleScopeValidation","inputType","createTagElem","setRangeAtStartEnd","withoutChangeEvent","lastIndexOf","matchedPatternCount","onInputIE","tagifyValue","loadOriginalValues","fixFirefoxLastTagNoCaret","pastedText","injectAtCaret","onEditTagInput","__tagId","editTagChangeDetected","originalIsValid","onEditTagPaste","onEditTagFocus","onEditTagBlur","__originalData","onEditTagkeydown","__originalHTML","_t$previousSibling","tagSelector","Proxy","__tagify","cloneData","cloneEvent","getPersistedData","localStorage","getItem","setPersistedData","setItem","clearPersistedData","removeItem","applySettings","build","getCSSVars","autofocus","getSetTagData","sameStr","removeCollectionProp","omit","escapeHTML","concatWithoutDups","isNodeTag","dataProps","generateClassSelectors","_i$dropdown","_i$dropdown2","_delimiters","TEXTS","texts","getCustomAttributes","CSSVars","tagHideTransition","integrated","originalInput_tabIndex","inputSelector","blockChangeEvent","parseMixTags","insertAdjacentHTML","lastOriginalValueReported","simulated","_valueTracker","getTagTextNode","tagTextSelector","setTagTextNode","getLastTag","skipValidation","editTagToggleValidity","removeTagsFromValue","previousData","replaceTag","reCheckInvalidTags","getInvalidTagAttrs","updateValueByDOMTags","_this$state$selection","appendMixTags","validate","replaceTextWithNode","getTagIdx","getTagIndexByValue","getTagElmByValue","flashTag","isTagBlacklisted","isTagWhitelisted","getWhitelistItem","setReadonly","setContentEditable","setDisabled","selectTag","appendTag","addEmptyTag","addMixTags","__preInvalidData","prefixedTextToTag","__removed","clientTop","removeTagsFromDOM","_this$value2","_this$value2$","setOriginalInputValue","debouncedUpdateTimeout","getInputValue","getCleanValue","getMixedTagsAsString","originalInputValueFormat","removeTag","CONFIGURABLE_FUNCTION_NAME","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","arity","isNullOrUndefined","definePropertyModule","createPropertyDescriptor","EXISTS","isSymbol","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Object","$Symbol","NATIVE_SYMBOL","sham","V8_VERSION","symbol","tryToString","IS_PURE","copyright","license","postfix","bitmap","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","propertyIsEnumerableModule","toIndexedObject","trunc","$location","port","arraySlice","validateArgumentsLength","IS_IOS","IS_NODE","setImmediate","clearImmediate","Dispatch","MessageChannel","ONREADYSTATECHANGE","runner","globalPostMessageDefer","postMessage","nextTick","port2","port1","onmessage","importScripts","passed","webpackPolyfill","paths","moment","symbolMap","numberMap","pluralForm","plurals","pluralize","weekdaysParseExact","suffixes","plural","word","forms","relativeTimeWithPlural","standalone","lastDigit","last2Digits","monthsParseExact","relativeTimeWithMutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","longMonthsParse","shortMonthsParse","translate","ll","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eraYearOrdinalRegex","$0","$1","$2","isUpper","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","relativeTimeWithSingular","relativeSeconds","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","_interopRequireWildcard","newObj","_handlebarsSafeString2","_handlebarsException2","runtime","_handlebarsNoConflict2","hb","SafeString","VM","spec","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","methodMap","level","lookupLevel","levelMap","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","_createNewLookupObject","createNewLookupObject","allowedProtoProperties","allowProtoPropertiesByDefault","methods","allowedProtoMethods","allowProtoMethodsByDefault","resultIsAllowed","protoAccessControl","checkWhiteList","loggedProperties","_logger","protoAccessControlForType","logUnexpecedPropertyAccessOnce","Handlebars","__magic__","$Handlebars","AST","helperExpression","scopedId","simpleId","_exception","Visitor","visitSubExpression","mustache","acceptRequired","acceptArray","acceptKey","visitBlock","visitPartial","mutating","Program","program","MustacheStatement","Decorator","BlockStatement","DecoratorBlock","PartialStatement","PartialBlockStatement","ContentStatement","CommentStatement","SubExpression","PathExpression","StringLiteral","NumberLiteral","BooleanLiteral","UndefinedLiteral","NullLiteral","Hash","HashPair","_Controller","_inherits","_createSuper","_classCallCheck","elementTargets","_className","clearClass","updateClass","selectFieldId","selectedValues","class_when_selected","selectField","checkWordCount","wordCountElement","minWordCount","_assertThisInitialized","boundAddClass","removeEventListeners","scopeId","scopeElement","elementName","elementClass","selectedText","persist","selectionIsWithinScope","contentElements","_contentElements","hasCheckboxAllTarget","checkboxAllTarget","checkboxTargets","triggerInputEvent","toggleBulkForm","checkboxesCount","checkboxesCheckedCount","displayBulkForm","hideBulkForm","bulkForm","checkedboxes","textToCopy","clipboardText","clipboard","writeText","showSuccessMessage","fallbackCopyTextToClipboard","textArea","originalContent","successMessage","handleTurboBeforeRender","removeClickListener","addClickListener","elementTarget","ignoredElements","exitElement","isExit","withinBoundaries","isIgnored","boundEvaluateClick","evaluateClick","cl","confirmText","confirmField","confirmButton","mouseUpListener","copyText","mouseDownListener","mouseMoveListener","scopeIdValue","destination","destinationIdValue","destinationId","copyTarget","sourceTarget","inputRecipientTargets","recipient","textRecipientTargets","container_id","formName","de","element_id","correspondingFormElement","editorField","keyupEvent","KeyboardEvent","pasteTargetDataAttribute","pasteTarget","enabledButton","disabledButton","adjustFieldHeight","text_area","expandableFieldTarget","padding_top","padding_bottom","full_height","outputTarget","resultTarget","downloadLink","photographer","photographerUrl","downloadLocation","loaderTarget","contentTarget","LOADING_TEXTS","entry","startLoadingAnimation","intervalValue","intervalId","randomIndex","localizeServerTime","timeTargets","outputDateFormat","currentWindowWidth","checkMenu","_moreDropdown","horizontalMenu","moreDropdownButton","moreDropdown","menuWidth","moreButtonWidth","availableWidth","menuItemsInMoreDropdown","firstItemInDropdown","itemWidth","currentMenuWidth","menuItem","opacityFieldTarget","preloaded","loader_id","configTarget","content_id","loader","fadeOutLoader","fadeInContent","frameId","sourceContent","newText","scrollToBottom","clearSelected","addSelected","setupSortable","sortableContainer","sortableItemsTarget","draggedItem","dropIndicator","initEventListeners","listItem","onDragStart","onDragOver","sortableItemId","mouseY","boundingRect","insertAdjacentElement","draggedItemHtml","draggedItemElement","saveOrder","sortableItems","form_id","handleKeyPress","textareaTarget","aiOptionsId","currentThemeElement","theme","classToToggle","is_unique","cls","minPos","maxPos","currentPos","_toConsumableArray","activateScript","_element$parentElemen","replaceElementWithElement","_arr","newContent","dataTarget","contentID","dataTargets","formField","checkedCheckboxes","_regeneratorRuntime","asyncIterator","Generator","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","maybeInvokeDelegate","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","mark","awrap","rval","delegateYield","asyncGeneratorStep","gen","_throw","info","_asyncToGenerator","_arrayLikeToArray2","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray2","_nonIterableSpread","_toPropertyKey2","_defineProperty2","_toPrimitive2","_createForOfIteratorHelper","allowArrayLike","_e6","normalCompletion","didErr","_e7","_step","_iterator","_step2","_iterator2","_s$save","i18n","_Array$from","Iconoir","DEFAULT_OPTIONS","_preBuild","iconSource","_binEvents","_renderdIcons","_createModal","_catchError","_eventBindings","availableIcons","_e$categories","categories","_onSave","_emit","currentlySelectName","_eventListener","_setValueInput","emitValues","_renderdIcons2","_callee","_e$dataset$value","_e4","_n","_getIcons","iconFormat","_Object$entries","_i2","_i3","_Object$entries2","unicode","SVGString","svg","_getIcons2","_callee2","_i4","_Object$values","_e5","_context2","Z","z","SVG_NS","product","createSVGRect","isChrome","isMS","opera","isSafari","isTouchDevice","isWebKit","deg2rad","hasBidiBug","hasTouch","TouchEvent","marginNames","supportsPassiveEvents","charts","dateFormats","seriesTypes","symbolSizes","chartCount","B","J","chart","G","H","A","toPrecision","removeEventListenerPolyfill","hcEvents","fireEvent","C","easeInOutSine","highcharts","addEvent","Point","series","runTrackerClick","addEventListenerPolyfill","arrayMax","arrayMin","cleanRecursively","correctFloat","defined","destroyObjectProperties","discardElement","erase","extendClass","getMagnitude","LN10","getNestedProperty","getStyle","isClass","isDOMElement","normalizeTickInterval","objectEach","clientLeft","pad","pick","pInt","relativeLength","splat","stableSort","safeI","syncTimeout","timeUnits","uniqueKey","useSerialIds","proceed","panning","styledMode","borderRadius","colorCount","defaultSeriesType","ignoreHiddenSeries","spacing","resetZoomButton","zoomBySingleTouch","plotBorderColor","None","stops","parsers","brighten","setOpacity","tweenTo","Intl","DateTimeFormat","formatRange","variableTimezone","useUTC","timezoneOffsetFunction","timezoneOffset","timezone","makeTime","tz","shortWeekdays","shortMonths","Y","getSeconds","resolveDTLFormat","getTimeTicks","unitRange","higherRanks","totalRange","getDateFormat","symbols","decimalPoint","numericSymbols","resetZoom","resetZoomTitle","thousandsSep","widthAdjust","subtitle","verticalAlign","plotOptions","legend","alignColumns","layout","labelFormatter","navigation","activeColor","inactiveColor","itemStyle","textOverflow","itemHoverStyle","itemHiddenStyle","itemCheckboxStyle","squareSymbol","symbolPadding","labelStyle","dateTimeLabelFormats","footerFormat","headerShape","shape","shared","headerFormat","pointFormat","stickOnContact","whiteSpace","useHTML","credits","defaultTime","getOptions","setOptions","dSetter","toD","curAnim","initPath","startX","endX","isArea","fillSetter","strokeSetter","pathArray","animObject","getDeferredAnimation","forExport","setAnimation","globalAnimation","trustedTypes","createPolicy","createHTML","parseMarkup","filterUserAttributes","allowedAttributes","allowedReferences","setElementHTML","emptyHTML","addToDOM","allowedTags","toExponential","numberFormatter","distribute","reducedLen","rank","onEvents","symbolCustomAttribs","_defaultGetter","_defaultSetter","parentGroup","parentInverted","inverted","textStr","buildText","added","handleZ","zIndexSetter","onAdd","afterSetters","doTransform","updateTransform","alignedObjects","alignOptions","alignByTranslate","alignTo","plotBox","placed","alignAttr","alignSetter","msHidden","webkitHidden","applyTextOutline","getContrast","fakeTS","ySetter","xSetter","removeTextOutline","stroke","symbolName","symbolAttr","rotation","shadows","updateShadows","crisp","strokeWidth","complexColor","radialGradient","linearGradient","gradients","radialReference","gradientUnits","getRadialAttr","defs","radAttr","gradient","textWidth","textOutline","dashstyleSetter","ownerSVGElement","isSVG","onclick","onmouseout","onmouseover","onmousemove","point","clipPath","safeRemoveChild","destroyShadows","destroyTextPath","textPathWrapper","pathToSegments","getBBox","cacheKeys","X","htmlGetBBox","opacitySetter","setRadialReference","setTextPath","textAnchor","TEXT_NODE","setAttributeNS","oldShadowOptions","cutHeight","hasStroke","textSetter","textPxLength","titleSetter","toFront","translateX","translateY","scaleX","scaleY","matrix","rotationOriginX","rotationOriginY","visibilitySetter","xGetter","yGetter","matrixSetter","rotationOriginXSetter","rotationOriginYSetter","rotationSetter","scaleXSetter","scaleYSetter","translateXSetter","translateYSetter","verticalAlignSetter","rendererTypes","getRendererType","registerRendererType","paddingLeftSetter","paddingSetter","paddingRightSetter","anchorX","anchorY","symbolKey","bBox","emptyBBox","baselineOffset","needsBox","deferredAttr","alignFactor","xSetting","anchorXSetter","boxAttr","getCrispAdjust","anchorYSetter","ySetting","textProps","updateTextPadding","updateBoxSize","heightSetter","heightSetting","rSetter","widthSetting","getPaddedWidth","fontMetrics","firstLineMetrics","hasBoxWidthChanged","widthSetter","innerR","longArc","arc","callout","circle","diamond","roundedRect","square","triangle","svgElement","textLineHeight","ellipsis","noWrap","buildSVG","textCache","actualWidth","modifyTree","modifyDOM","unescapeEntities","getLineHeight","baseVal","getSubStringLength","getSpanWidth","escapes","U","imgCount","chartIndex","boxWrapper","getReferenceURL","allowHTML","setSize","unSubPixelFix","elementFromPoint","fontFamily","setStyle","isHidden","cx","cy","setState","crispLine","rx","ry","rGetter","viewBox","alignElements","preserveAspectRatio","Image","imgwidth","imgheight","backgroundSize","isImg","hasLoaded","clipRect","rotCorr","Q","draw","compose","composedClasses","getSpanCorrection","htmlCss","htmlUpdateTransform","setSpanRotation","xCorr","yCorr","invertChild","oldTextWidth","cTT","oldRotation","oldAlign","alignOnAdd","transformOrigin","addedSetters","pointerEvents","classSetter","defaultXAxisOptions","alignTicks","allowDecimals","panningEnabled","zoomEnabled","endOnTick","gridLineDashStyle","gridZIndex","autoRotation","autoRotationLimit","indentation","reserveSpace","staggerLines","maxPadding","minorGridLineDashStyle","minorTickLength","minorTickPosition","minPadding","opposite","reversed","reversedStacks","showEmpty","showFirstLabel","showLastLabel","startOfWeek","startOnTick","tickLength","tickPixelInterval","tickmarkPlacement","tickPosition","uniqueNames","minorGridLineColor","minorGridLineWidth","minorTickColor","lineColor","lineWidth","gridLineColor","gridLineWidth","tickColor","defaultYAxisOptions","stackLabels","allowOverlap","crop","formatter","defaultLeftAxisOptions","defaultRightAxisOptions","defaultBottomAxisOptions","defaultTopAxisOptions","registerEventOptions","isNewLabel","isNew","parameters","tickmarkOffset","addLabel","logarithmic","tickPositions","tickInterval","category","lin2log","dateTime","unitName","getXDateFormat","isFirst","isLast","dateTimeLabelFormat","tickPositionInfo","defaultLabelFormatter","shortenLabel","getSlotWidth","_addedPlotLB","moveLabel","movedLabel","createLabel","labelGroup","getPosition","oldChartHeight","chartHeight","transB","oldChartWidth","chartWidth","getLabelPosition","transA","isLinked","linkedParent","tickRotCorr","reserveSpaceDefault","labelOffset","labelAlign","getLabelSize","horiz","getMarkPath","handleOverflow","labelLeft","labelRight","isRadial","ticks","labelPos","xy","newOpacity","renderGridLine","renderMark","renderLabel","gridLine","dashstyle","gridGroup","getPlotLinePath","tickSize","isXAxis","axisGroup","replaceMovedLabel","isDirty","userOptions","translationSlope","tickAmount","positiveValuesOnly","pointRangePadding","pointRange","plotLinesAndBandsGroups","plotLinesAndBands","paddedTicks","overlap","minPixelPadding","minorTicks","minorTickInterval","maxLabelLength","labelEdge","hasVisibleSeries","hasNames","coll","closestPointRange","alternateBands","isX","isZAxis","linkedTo","minRange","userMinRange","maxZoom","crosshair","crosshairs","axes","xAxis","labelRotation","numericSymbolMagnitude","getSeriesExtremes","dataMin","dataMax","softThreshold","stacking","buildStacks","xData","validatePositiveValue","getXExtremes","applyExtremes","isOrdinal","brokenAxis","hasBreaks","lin2val","sector","val2lin","toPixels","translatedValue","acrossPanes","getLinearTickPositions","single","getMinorTickInterval","getMinorTickPositions","getLogTickPositions","normalizeTimeTickInterval","trimTicks","adjustForMinRange","ceiling","xIncrement","log2lin","getClosest","noSharedTooltip","nameToX","requireSorting","autoIncrement","updateNames","points","isDirtyData","generatePoints","setAxisTranslation","axisPointRange","minPointOffset","pointPlacement","slope","staticScale","minFromRange","setTickInterval","getTickAmount","userMin","userMax","getExtremes","beforePadding","usePercentage","softMin","softMax","polar","forceCrop","forceCropping","hasExtemesChanged","minTickInterval","unsquish","setTickPositions","hasVerticalPanning","tickPositioner","adjustTickAmount","alignToOthers","pane","finalTickAmt","setScale","setAxisSize","forceRedraw","resetStacks","cleanStacks","panningState","setExtremes","kdTree","eventArgs","redraw","newMin","newMax","allowZoomOutside","displayBtn","zoomed","plotWidth","plotHeight","plotTop","plotLeft","getThreshold","autoLabelAlign","labelMetrics","MAX_VALUE","slotWidth","renderUnsquish","specificTextOverflow","addTitle","axisTitle","low","generateTick","getOffset","axisParent","axisOffset","clipOffset","ja","ca","showAxis","titleOffset","renderLine","axisTitleMargin","getMaxLabelDimensions","maxLabelDimensions","axisLine","getLinePath","getTitlePosition","titlePosition","renderMinorTick","renderTick","isColumn","alternateGridColor","hasRendered","PlotLineOrBand","plotLines","plotBands","addPlotBandOrLine","isPlaced","renderStackTotals","getKeepProps","keepProps","keepEvents","drawCrosshair","cross","crosshairPos","plotX","plotY","chartX","chartY","stackY","isCrosshair","hideCrosshair","dashStyle","isDirtyBox","setTitle","setCategories","Additions","minorAutoInterval","getPlotBandPath","isFlat","addPlotBand","addPlotLine","removePlotBandOrLine","removePlotBand","removePlotLine","svgElem","eventsAdded","getLabelText","xBounds","yBounds","allowShared","isSticky","outside","applyFilter","stdDeviation","bodyFormatter","tooltipOptions","formatPrefix","tooltipFormatter","cleanSplit","tt","defaultFormatter","tooltipFooterHeaderFormatter","hideTimer","tooltipTimeout","pointer","followPointer","tooltipPos","yAxis","plotLow","plotHigh","getLabel","inContact","hoverSeries","shouldStickOnContact","inClass","onMouseOut","getChartPosition","negative","ttBelow","scrollablePixelsX","scrollablePixelsY","isStickyOnContact","drawTracker","applyInactiveState","getLabelConfig","renderSplit","isDirectTouch","shouldShowTooltip","spacingBox","colorIndex","R","scrollingContainer","positioner","aa","ignoreX","boxWidth","ba","tracker","hoverPoints","hoverPoint","styledModeFormat","isFooter","labelConfig","xDateFormat","tooltipDateKeys","isNull","animateBeforeDestroy","startXPos","getGraphicalProps","singular","startYPos","applyOptions","pointValKey","optionsToObject","dataLabels","relativeXValue","graphic","dataLabel","destroyElements","dataSorting","legendItem","destroyItem","pointCount","firePointEvent","importEvents","allowPointSelect","getClassName","stackTotal","getZone","zones","zoneAxis","nonZonedColor","hasNewShapeType","shapeType","resolveColor","pointArrayMap","setNestedProperty","_hasPointLabels","marker","_hasPointMarkers","colorByPoint","colorCounter","valueDecimals","valuePrefix","valueSuffix","hasDummyGraphic","connector","updateParallelArrays","fixedBox","hasCartesianSeries","legendType","isDirtyLegend","removePoint","selectedStaging","accumulate","getSelectedPoints","inactiveOtherPoints","getChartCoordinatesFromPoint","runPointActions","hasImportedEvents","states","markerAttribs","halo","stateMarkerGraphic","pointAttribs","currentSymbol","markerGroup","isInside","isCluster","haloPath","lastValidTouch","pinchDown","runChartClick","eventsToUnbind","hasDragged","linkedSeries","navigatorSeries","setAllPointsToState","unbindDocumentMouseUp","unbindDocumentTouchEnd","zoomHor","zoomVert","mouseDownX","mouseDownY","panKey","selectionMarker","isInsidePlot","visiblePlotOnly","mapView","zoomX","zoomY","selectionMarkerFill","pan","mouseIsDown","cancelClick","hasPinched","scaleGroups","findNearestKDPoint","findNearestPointBy","searchPoint","distX","shapeArgs","isNode","chartPosition","getCoordinates","getHoverData","stickyTracking","directTouch","enableMouseTracking","isBoosting","getPoint","getPointFromEvent","onTrackerMouseOut","followTouchMove","setDOMEvents","onContainerClick","onContainerMouseDown","onContainerMouseMove","zoomOption","onContainerMouseLeave","hoverChartIndex","onContainerMouseEnter","setHoverChartIndex","touchSelect","openMenu","onDocumentTouchEnd","onContainerTouchMove","onContainerTouchStart","onDocumentMouseMove","onDocumentMouseUp","pinch","hasZoom","initiated","bounds","pinchTranslate","pinchTranslateDirection","isCartesian","unDocMouseMove","hoverX","getPlotBox","dataLabelsGroup","clipBox","onmousedown","renderTo","zoomType","pinchType","MSPOINTER_TYPE_TOUCH","batchMSEvents","onContainerPointerDown","onContainerPointerMove","onDocumentPointerUp","allItems","contentGroup","maxLegendWidth","maxItemWidth","legendWidth","legendHeight","lastLineHeight","lastItemY","itemY","itemX","itemMarginTop","itemMarginBottom","initialItemY","proximate","scrollGroup","widthOption","totalItemWidth","titleHeight","symbolWidth","symbolHeight","positionCheckboxes","unchartrender","proximatePositions","positionItems","colorizeItem","legendGroup","legendLine","legendSymbol","isMarker","positionItem","isResizing","rtl","_legendItemPos","getAllItems","clipHeight","scrollOffset","checkboxOffset","renderTitle","setText","labelFormat","renderItem","itemDistance","drawLegendSymbol","createCheckboxForItem","showCheckbox","setItemEvents","legendItemWidth","legendItemHeight","layoutItem","showInLegend","legendItems","getAlignment","adjustMargins","legendIndex","arrowSize","nav","currentPage","fullHeight","pageIx","pager","upTracker","downTracker","setVisible","browserEvent","defaultChecked","bubbleLegend","pointClass","getSeries","missingModuleFor","registerSeriesType","seriesType","da","ea","fa","ia","ha","ka","labelCollectors","sharedClips","symbolCounter","getArgs","showAxes","firstRender","initSeries","setSeriesData","getSeriesOrderByLinks","enabledDataSorting","orderSeries","scrollablePlotBox","paneCoordinates","ignoreY","colorAxis","setResponsive","temporaryDisplay","layOutTitles","centerInCategory","updateTotals","getStacks","getMargins","extKey","drawChartBox","getAxes","getPointsCollection","getSelectedSeries","applyDescription","isStock","getChartSize","containerHeight","hcOrigStyle","hcOrigDetached","hcOricDetached","setClassName","getContainer","skipClone","userSelect","outline","exporting","resetMargins","getAxisMargins","setChartSize","isPrinting","reflowTimeout","setReflow","unbindReflow","plotSizeX","plotSizeY","plotBorderWidth","skipAxes","plotBGImage","plotBackgroundColor","plotBackgroundImage","chartBackground","plotBackground","plotBorder","plotShadow","propFromSeries","linkSeries","setDataSortingOptions","renderSeries","renderLabels","seriesGroup","addCredits","mapCredits","scroller","isReadyToRender","addSeries","addAxis","createAxis","addColorAxis","showLoading","loadingDiv","loadingSpan","loadingShown","showDuration","hideLoading","hideDuration","isResponsiveOptions","propsRequireUpdateSeries","propsRequireDirtyBox","propsRequireReflow","collectionsWithUpdate","isInternal","touched","collectionsWithInit","setSubtitle","setCaption","showResetZoom","zoomOut","relativeTo","resetSelection","mapNavigation","getProcessedData","yData","startMin","startMax","drawLineMarker","radius","drawRectangle","symbolRadius","enabledThreshold","normal","radiusPlus","lineWidthPlus","fillColor","cropThreshold","inactive","turboThreshold","processedYData","processedXData","bindAxes","getColor","getSymbol","parallelArrays","axisTypes","optionalAxis","toYData","pointIntervalUnit","pointStart","pointInterval","sorted","allowDG","negativeColor","negativeFillColor","getCyclic","hasGroupedData","findPointIndex","matchByName","cropped","cropStart","updateData","hasDerivedData","addPoint","sortData","isSeriesBoosting","getFirstValidPoint","sortKey","getExtremesFromAll","cropData","basePointRange","cropShoulder","dataGrouping","groupAll","dataGroup","groupMap","stackedYData","activeYData","dataExtremes","pointPlacementToXValue","startFromThreshold","stacks","negStacks","stackKey","getStackIndicator","irregularWidths","pointXOffset","barW","yBottom","dataModify","modifyValue","isPointInside","closestPointRangePx","getValidPoints","getClipBox","getSharedClipKey","sharedClipKey","setClip","afterAnimate","finishedAnimating","drawPoints","specialGroup","hasImage","removeEvents","clips","animationTimeout","survive","applyZones","graph","showLine","isVML","resetZones","invertGroups","isRadialSeries","plotGroup","invertible","drawGraph","drawDataLabels","redrawPoints","searchKDTree","buildKDTree","kdAxisArray","buildingKdTree","kdNow","trackByArea","areaPath","graphPath","initialType","hasOptionChanged","setName","mouseOver","mouseOut","labelBySeries","scrollablePlotArea","setUpScrolling","applyFixed","fixedDiv","WebkitOverflowScrolling","scrollingParent","innerContainer","moveFixedElements","fixedRenderer","scrollableMask","scrollableDirty","scrollPositionX","scrollPositionY","redrawTrigger","stackTotalGroup","oldStacks","stacksTouched","setStackedPoints","setGroupedPoints","modifyStacks","cumulative","isNegative","hasValidPoints","rightCliff","leftCliff","labelrank","getStackBox","justifyDataLabel","singleStacks","percentStacker","StackItem","gappedPath","getGraphPath","getZonesGraphs","preventGraphAnimation","xMap","fillGraph","linecap","connectNulls","getPointSpline","shiftUnit","isCliff","doCurve","getStackPoints","leftNull","rightNull","rectPlotX","rightContX","rightContY","getColumnMetrics","grouping","columnIndex","groupPadding","maxPointWidth","pointWidth","pointPadding","columnMetrics","paddedWidth","crispCol","adjustForMissingColumns","dense","translatedThreshold","minPointLength","barX","pointAttrToOptions","brightness","animationLimit","allowShadow","_hasTracking","trackerGroups","dlBox","centerX","setDataLabelStartPos","forceDL","inside","dlOptions","dataLabelOnNull","connectors","labelDistance","contrastColor","textPath","getDataLabelPath","dataLabelPath","alignDataLabel","below","applyJitter","jitter","isLog","takeOrdinalPosition","getCenter","slicedOffset","innerSize","angular","getStartAndEndRadians","getConnectorPath","labelPosition","connectorShapes","connectorShape","alignment","connectorPosition","getTranslate","sliced","slicedTranslation","ignoreHiddenPoint","shadowGroup","fixedOffset","breakAt","touchingSliceAt","softConnector","straight","crookedLine","crookDistance","maxLabelDistance","startAngleRad","startR","drawEmpty","endAngleRad","delayedRendering","getX","radii","asin","sortByAngle","angle","startAngle","endAngle","half","natural","connectorPadding","dataLabelPositioners","shortened","distributeBox","radialDistributionY","positionIndex","justify","alignToConnectors","alignToPlotEdges","radialDistributionX","_attr","sideOverflow","verifyDataLabelOverflow","placeDataLabels","connectorWidth","connectorColor","minSize","oldOpacity","isOld","hideOverlappingLabels","absoluteBox","currentOptions","matchResponsiveRule","condition","_id","responsive","currentResponsive","rules","chartOptions","ruleIds","undoOptions","mergedOptions","Axis","Chart","Fx","Legend","Pointer","Series","SVGElement","SVGRenderer","Tick","Time","_modules","nodeList","setSelectionRange","ctx","emit","amd","clipboardAction","resolveOptions","initSelection","emitter","selectFake","selectTarget","removeFake","fakeHandlerCallback","fakeHandler","fakeElem","handleResult","_action","_target","tinyEmitter","goodListener","ReferenceError","listenClick","defaultAction","defaultTarget","defaultText","depth0","stack1","alias1","nullContext","alias2","helperMissing","alias3","addons","pluginName","images","embeds","ucfirst","Core","$el","MediumInsert","Templates","_name","_serialize","_setup","_hideInsertButtons","hideButtons","editorSerialize","editorDestroy","editorSetup","editorUpdatePlaceholder","initAddons","clean","getEditor","$data","triggerInput","deselect","addon","addonName","$buttons","$lastEl","moveCaret","addButtons","getButtons","toggleButtons","$current","$p","activeAddon","positionButtons","showButtons","$lastCaption","toggleAddons","hideAddons","addonAction","$a","textEl","addCaption","removeCaptions","$ignore","$captions","removeCaptionPlaceholder","$caption","textareaId","oembedProxy","captions","captionPlaceholder","storeMeta","wide","$event","parseOnPaste","Embeds","core","_serializePreEmbeds","$embeds","backwardsCompatibility","$place","togglePlaceholder","fixRightClickOnPlaceholder","processLink","oembed","parseUrl","processPasted","pastedUrl","pasted","textStatus","errorThrown","responseJSON","embed","$div","FB","XFBML","convertBadEmbed","$empty","$content","emptyTemplate","selectEmbed","$embed","addToolbar","unselectEmbed","removeEmbed","$toolbar","$toolbar2","toolbarContainer","repositionToolbars","autoRepositionToolbars","toolbarAction","$button","$li","$lis","toolbar2Action","deleteMethod","deleteScript","preview","autoGrid","fileUploadOptions","acceptFileTypes","fileDeleteOptions","sorting","containerSelector","afterMove","acceptFileTypesError","maxFileSizeError","Images","$currentImage","_serializePreImages","$images","$file","upload","progressall","fileupload","uploadAdd","previewImg","uploadErrors","maxFileSize","uploadFailed","autoUpload","uploadProgressall","$progressbar","uploadProgress","uploadDone","showImage","domImage","getDOMImage","uploadCompleted","selectImage","$image","unselectImage","removeImage","$parent","caretPosition","$sibling","selectedHtml","$selectedImage","deleteFile","require","defineBuiltInAccessor","regExpFlags","RegExpPrototype","INDICES_SUPPORT","calls","expected","addGetter","dotAll","ignoreCase","hasIndices","getDescriptor","PROPER","functionToString","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","metadata","facade","STATE","getterFor","TYPE","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","pref","exoticToPrim","Deno","v8","aCallable","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","unicodeSets","$propertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","classof","unsafe","nonConfigurable","nonWritable","getOwnPropertyDescriptorModule","exceptions","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","internalObjectKeys","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","toIntegerOrInfinity","integer","toLength","feature","detection","POLYFILL","NATIVE","classofRaw","setTask","schedulersFix","ENGINE_IS_BUN","USER_AGENT","WRAP","Bun","scheduler","hasTimeArg","firstParamIndex","boundArgs","Op","desc","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","NativeIteratorPrototype","Gp","PromiseImpl","record","unwrapped","previousPromise","doneResult","delegateResult","locs","iterable","iteratorMethod","genFun","ctor","skipTempReset","rootRecord","exception","caught","hasCatch","hasFinally","finallyEntry","thrown","regeneratorRuntime","accidentalStrictMode","dateSettings","daysShort","separators","validParts","intParts","tzParts","tzClip","DateFormatter","sec","guessDate","parseFormat","getUTCHours","getUTCSeconds","getMinutes","getMilliseconds","ar","dayOfWeekShort","dayOfWeek","ro","bg","ru","uk","nl","es","pl","pt","km","kr","no","vi","sl","hu","az","et","eu","fi","gl","ko","lv","mk","mn","sk","sq","sr","sv","zh","ug","he","hy","kg","rm","formatTime","startDate","monthChangeSpinner","closeOnDateSelect","closeOnTimeSelect","closeOnWithoutClick","closeOnInputClick","openOnFocus","timepicker","minTime","maxTime","minDateTime","maxDateTime","allowTimes","opened","initTime","touchMovedThreshold","onSelectDate","onSelectTime","onChangeMonth","onGetWeekOfYear","onChangeYear","onChangeDateTime","onShow","onGenerate","withoutCopyright","inverseButton","hours12","dayOfWeekStart","parentID","timeHeightInTimePicker","timepickerScrollbar","todayButton","prevButton","nextButton","defaultSelect","scrollMonth","scrollTime","scrollInput","lazyInit","mask","validateOnBlur","allowBlank","yearStart","yearEnd","monthStart","monthEnd","fixed","roundTime","weekends","highlightedDates","highlightedPeriods","allowDates","allowDateRe","disabledDates","disabledWeekDays","yearOffset","enterLikeTab","showApplyButton","insideParent","default_options","formatMask","datetimepicker","setLocale","setDateFormatter","countDaysInMonth","xdsoftScroller","deltaY","touchStartPosition","touchMoved","strToDate","strToDateTime","strtotime","isValidDate","moveEnd","selectionStart","selectionEnd","getValue","getCurrentTime","setCurrentTime","dayOfWeekStartPrev","nextMonth","prevMonth","getWeekOfYear","deltaX","unmousewheel","fixHooks","mouseHooks","onmousewheel","getPageHeight","adjustOldDeltas","normalizeOffset","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaMode","deltaFactor","webpackContext","req","webpackContextResolve","nullLowestDeltaTimeout","lowestDelta","toFix","toBind","$elem","orgEvent","absDelta","pageHeight","shouldAdjustOldDeltas","nullLowestDelta","Toggle","DEFAULTS","onstyle","offstyle","_onstyle","_offstyle","$toggleOn","$toggleOff","$toggleHandle","$toggleGroup","$toggle","bootstrapToggle","a0","unsafeElements","len2","len3","testElement","_add","DOMTokenList","_remove","isEqual","getSelectedOptions","ignoreDisabled","getSelectValues","multiple","searchString","searchLength","HTMLSelectElement","useDefault","changedArguments","EventIsSupported","stringSearch","stringTypes","searchSuccess","stringType","normalizeToBase","toInteger","triggerNative","createEventObject","deburredLetters","reLatin","reComboMark","deburrLetter","escaper","testRegexp","replaceRegexp","htmlEscape","keyCodeMap","keyCodes","ARROW_UP","ARROW_DOWN","selectId","DISABLED","DIVIDER","DROPUP","MENU","MENURIGHT","MENULEFT","BUTTONCLASS","POPOVERHEADER","ICONBASE","TICKICON","Selector","elementTemplates","subtext","checkMark","REGEXP_ARROW","REGEXP_TAB_OR_ESCAPE","generateOption","useFragment","subtextElement","iconElement","textElement","iconBase","showNoResults","searchMatch","searchValue","noneResultsText","$menuInner","Selectpicker","$newElement","$menu","selectpicker","isSearching","keyHistory","resetKeyHistory","sizeInfo","winPad","windowPadding","deselectAll","Plugin","_option","BootstrapVersion","toUpdate","tickIcon","chain","noneSelectedText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","selectedTextFormat","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","showTick","caret","maxOptions","mobile","selectOnTab","dropdownAlignRight","virtualScroll","createDropdown","buildData","$searchbox","checkDisabled","clickListener","liveSearchListener","focusedParent","setWidth","selectPosition","isVirtual","menuInner","emptyMenu","validity","valid","buildList","multiselectable","inputGroup","searchbox","actionsbox","donebutton","setPositionData","canHighlight","firstHighlightIndex","dividerHeight","dropdownHeaderHeight","liHeight","posinset","createView","prevActive","liIndex","selectedData","menuInnerHeight","chunkSize","chunkCount","firstChunk","lastChunk","currentChunk","prevPositions","positionIsDifferent","previousElements","chunks","menuIsDifferent","endOfChunk","position0","position1","prevActiveIndex","defocusItem","visibleElements","setOptionStatus","menuFragment","toSanitize","visibleElementsLen","elText","elementData","sanitized","hasScrollBar","menuInnerInnerWidth","totalMenuWidth","selectWidth","actualMenuWidth","newActive","currentActive","focusItem","updateValue","noScroll","liData","noStyle","setPlaceholder","updateIndex","titleOption","selectTitleOption","titleNotAppended","selectedOption","performance","getEntriesByType","isNotBackForward","defaultSelected","displayedValue","optionSelector","mainData","optID","startIndex","selectOptions","addDivider","addOption","inlineStyle","optionClass","optgroupClass","addOptgroup","headerIndex","selectData","mainElements","widestOptionLength","buildElement","liElement","combinedLength","widestOption","findLis","showCount","countMax","placeholderSelected","selectedCount","buttonInner","titleFragment","thisData","titleOptions","totalCount","tr8nText","filterExpand","menuInnerInner","firstOption","scrollBarWidth","headerHeight","searchHeight","actionsHeight","doneButtonHeight","menuStyle","menuPadding","vert","borderRightWidth","menuExtras","selectHeight","getSelectPosition","containerPos","$window","$container","selectOffsetTop","selectOffsetBot","selectOffsetLeft","selectOffsetRight","setMenuSize","isAuto","menuHeight","menuInnerMinHeight","estimate","isDropup","divHeight","divLength","dropup","$selectClone","btnWidth","$bsContainer","actualHeight","getPlacement","selectedOnly","setSelected","activeIndexIsSet","keepActive","setFocus","checkPopperExists","hoverLi","hoverData","retainActive","clickedData","clickedIndex","prevIndex","prevOption","triggerChange","$option","$optgroup","$optgroupOptions","maxOptionsGrp","maxReached","maxReachedGrp","maxOptionsArr","maxTxt","maxTxtGrp","$notify","isTrusted","previousValue","cacheArr","searchStyle","_searchStyle","normalizeSearch","cacheLen","liPrev","liSelectedIndex","changeAll","previousSelected","currentSelected","liActive","activeLi","isToggle","$items","updateScroll","downOnTab","isArrowKey","liActiveIndex","keydownHandler","$selectpicker","DocumentTouch","initTooltips","_handlebarsRuntime2","_handlebarsCompilerAst2","_handlebarsCompilerBase","_handlebarsCompilerCompiler","_handlebarsCompilerJavascriptCompiler2","_handlebarsCompilerVisitor2","precompile","Compiler","JavaScriptCompiler","Parser","parseWithoutProcessing","inverse","priorKey","execIteration","conditional","includeZero","lookupProperty","_decoratorsInline2","_decoratorsInline","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","env","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","lookup","depths","lambda","invokePartial","resolvePartial","extendedOptions","compilerOptions","programs","declaredBlockParams","programWrapper","wrapProgram","mergeIfNeeded","common","seal","useData","initData","useBlockParams","useDepths","executeDecorators","isTop","mergedHelpers","_internalWrapHelper","wrapHelper","passLookupPropertyOption","wrapHelpersToPassLookupProperty","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_child","currentPartialBlock","partialBlock","prog","currentDepths","transformOptionsFn","ast","_whitespaceControl2","_parser2","Helpers","locInfo","SourceLocation","srcName","handlebars","trace","symbols_","terminals_","productions_","yytext","yyleng","yylineno","yystate","$$","prepareProgram","stripComment","strip","stripFlags","prepareRawBlock","prepareBlock","chained","prepareMustache","preparePartialBlock","preparePath","defaultActions","parseError","vstack","lstack","recovering","lexer","setInput","yylloc","yyloc","preErrorSymbol","newState","yyval","lex","errStr","showPosition","first_line","last_line","first_column","last_column","EOF","_input","_more","_less","conditionStack","unput","oldLines","more","less","pastInput","upcomingInput","tempMatch","_currentRules","flex","begin","popState","conditions","topState","yy_","$avoiding_name_collisions","YY_START","_visitor","_visitor2","WhitespaceControl","isPrevWhitespace","isRoot","isNextWhitespace","omitRight","rightStripped","omitLeft","leftStripped","doStandalone","ignoreStandalone","isRootSeen","_isPrevWhitespace","_isNextWhitespace","openStandalone","closeStandalone","inlineStandalone","firstInverse","lastInverse","openStrip","closeStrip","inverseStrip","comment","dig","isLiteral","escapeFlag","escaped","openRawBlock","validateClose","openBlock","inverseAndProgram","statements","firstLoc","lastLoc","errorNode","compat","environment","compileInput","execOptions","setupOptions","_ast2","argEquals","transformLiteralToPath","sexpr","opcodes","opcode","otherOpcode","sourceNode","stringParams","trackIds","knownHelpers","blockHelperMissing","unless","compileProgram","bodyLength","isSimple","classifySexpr","helperSexpr","simpleSexpr","ambiguousSexpr","setupFullMustacheParams","explicitPartialContext","partialName","isDynamic","preventIndent","noEscape","isBlock","knownHelpersOnly","falsy","addDepth","scoped","blockParamId","blockParamIndex","pushParam","isBlockParam","isHelper","isEligible","pushParams","blockParamChild","omitEmpty","_codeGen2","Literal","nameLookup","internalNameLookup","depthedLookup","aliasable","appendToBuffer","explicit","initializeBuffer","quotedString","lookupPropertyFunctionIsUsed","asObject","isChild","environments","preamble","stackSlot","stackVars","registers","hashes","compileStack","inlineStack","compileChildren","currentLocation","pushSource","lookupPropertyFunctionVarDeclaration","createFunctionContext","objectLiteral","toStringWithSourceMap","destName","lastContext","varDeclarations","locals","aliasCount","mergeSource","appendOnly","forceBuffer","appendFirst","sourceSeen","bufferStart","bufferEnd","blockValue","contextName","setupHelperArgs","blockName","popStack","functionCall","ambiguousBlockValue","flushInline","topStack","lastHelper","appendContent","pendingContent","pendingLocation","isInline","replaceStack","appendEscaped","getContext","pushContext","pushStackLiteral","lookupOnContext","resolvePath","lookupBlockParam","lookupData","assumeObjects","requireTerminal","strictLookup","resolvePossibleLambda","pushStringParam","pushString","emptyHash","pushHash","popHash","pushLiteral","pushProgram","programExpression","paramSize","foundDecorator","invokeHelper","nonHelper","setupHelper","possibleFunctionCalls","functionLookupCode","itemsSeparatedBy","callParams","invokeKnownHelper","invokeAmbiguous","helperCall","useRegister","paramsInit","setupParams","assignToHash","pushId","existing","matchExistingProgram","programParams","createdStack","usedLiteral","incrStack","topStackName","blockHelper","objectArgs","hashIds","hashTypes","hashContexts","generateArray","reservedWords","compilerWords","RESERVED_WORDS","isValidJavaScriptVariableName","SourceNode","castChunk","codeGen","CodeGen","srcFile","generateList","_typeof","ClientSideValidations","addError","pass","removeError","eventsToBind","$form","validators","inputConfirmation","enablers","_form2","formBuilders","html_settings","eventFunction","$input","$elementToConfirm","_eventsToBind","_eventName","_eventFunction","inputErrorField","input_tag","labelErrorField","label_tag","inputErrorFieldClass","labelErrorFieldClass","patterns","numericality","only_integer","validate_inputs","Turbolinks","initializeOnEvent","EVENTS","arrayHasValue","otherValues","valueIsPresent","DEFAULT_ACCEPT_OPTION","isMatching","regExpOptions","VALIDATIONS","greater_than","greater_than_or_equal_to","equal_to","less_than","less_than_or_equal_to","validationFunction","validationOption","formattedValue","otherValue","validationElement","number_format","otherFormattedValue","getOtherValue","runValidations","validation","runFunctionValidations","VALIDATIONS$1","minimum","maximum","isIncluded","allow_blank","normalizedOtherValues","otherValueIndex","isInList","isInRange","absence","presence","acceptance","acceptOption","withOptions","withoutOptions","hasValidFormat","without","valueLength","runValidations$1","inclusion","exclusion","confirmation","confirmationValue","case_sensitive","uniqueness","isLocallyUnique","disableClientSideValidations","enableClientSideValidations","resetClientSideValidations","validateForm","validateElement","validatorsFor","nestedMatches","validatorName","cleanNestedElementName","cleanElementName","passElement","failElement","executeValidator","validatorFunctions","validatorFunction","validatorOptions","validatorOption","executeAllValidators","validator","executeValidators","destroyInputName","isMarkedForDestroy","afterValidate","__webpack_amd_options__","Filterrific","submitFilterForm","filterrific_observe_field","frequency","ti","initFilterrific","initIconPicker","iconPickerInitialized","iconPickerButton","IconPicker","iconElementButton","startTagify","Tagify","valuesArr","current_time","debug","useCurrent","sideBySide","showClose","showToday","showClear","toggleShareLink","shareUrl","DateTimePicker","isValidDateTimeStr","DATA_TOGGLE","ClassName","INPUT","CHANGE","BLUR","KEYUP","KEYDOWN","FOCUS","CLICK_DATA_API","UPDATE","ERROR","DatePickerModes","CLASS_NAME","NAV_FUNCTION","NAV_STEP","KeyMap","ViewModes","keyState","keyPressHandled","optionsSortMap","timeZone","dayViewHeaderFormat","extraFormats","stepping","enabledDates","useStrict","daysOfWeekDisabled","calendarWeeks","viewMode","toolbarPlacement","widgetPositioning","widgetParent","ignoreReadonly","keepOpen","focusOnShow","keyBinds","allowInputToggle","disabledTimeIntervals","disabledHours","enabledHours","viewDate","allowMultidate","multidateSeparator","updateOnlyThroughDateOption","defaultFeatherIcons","optionsSortFn","optionKeyA","optionKeyB","prevYear","nextYear","selectDecade","prevDecade","nextDecade","prevCentury","nextCentury","pickHour","incrementHour","decrementHour","pickMinute","incrementMinute","decrementMinute","pickSecond","incrementSecond","decrementSecond","togglePeriod","selectTime","selectDate","_dates","getMoment","promptTimeOnDateChange","promptTimeOnDateChangeTransitionDelay","_options","_getOptions","_datesFormatted","_viewDate","unset","component","use24Hours","actualFormat","parseFormats","currentViewMode","MinViewModeNumber","isInitFormatting","isInit","isDateUpdateThroughDateOptionFromClientCode","hasInitDate","initDate","_notifyChangeEventContext","_currentPromptTimeTimeout","_int","targetInput","_dataToOptions","_initFormatting","_setValue","_parseInputDate","_update","_fillDate","_fillTime","targetMoment","noIndex","isClear","isNotAllowedProgrammaticUpdate","outpValue","isInvalid","oldDate","_notifyEvent","_hasTimeZone","parsedDate","granularity","_hasTime","_hasDate","eData","dataOptions","dateOptions","_areSameDates","_handlePromptTimeIfNeeded","_viewUpdate","_showMode","_isInDisabledDates","testDate","_isInEnabledDates","_isInDisabledHours","_isInEnabledHours","found","inputDate","_temp","_ref$isPickerShow","isPickerShow","parseInputDate","keyBindKeys","allModifiersPressed","pressedKeys","pressedModifiers","currentKey","_keyup","_indexGivenDates","givenDatesArray","givenDatesIndexed","dDate","_indexGivenHours","givenHoursArray","givenHoursIndexed","formatInput","_getLastPickedDate","lastPickedDate","_getLastPickedDateIndex","returnMoment","_readonly","_ignoreReadonly","optionsKeys","_updateOnlyThroughDateOption","newFormat","newZone","_daysOfWeekDisabled","tries","_maxDate","_minDate","_defaultDate","_stepping","_useCurrent","useCurrentOptions","_collapse","_icons","_tooltips","_useStrict","_sideBySide","_viewMode","_calendarWeeks","_buttons","_keepOpen","_focusOnShow","_inline","_keyBinds","_debug","_allowInputToggle","_keepInvalid","datepickerInput","_datepickerInput","_parseInputDate2","_disabledTimeIntervals","_useFeatherIcons","_allowMultidate","_multidateSeparator","verticalModes","horizontalModes","toolbarPlacements","$selector","TempusDominusBootstrap4","_DateTimePicker","_proto2","datepickerButton","_iconTag","iconName","feather","toSvg","_getDatePickerTemplate","headTemplate","contTemplate","_getTimePickerMainTemplate","topRow","middleRow","bottomRow","_getTimePickerTemplate","hoursView","minutesView","secondsView","_getToolbar","_getTemplate","dateView","timeView","_place","picker","_fillDow","_fillMonths","_updateMonths","monthsView","monthsViewHeader","_getStartEndYear","startYear","_updateYears","yearsView","yearsViewHeader","yearCaps","_updateDecades","endDecadeYear","decadesView","decadesViewHeader","startDecade","endDecade","minDateDecade","maxDateDecade","clsName","daysView","daysViewHeader","_fillHours","currentHour","_fillMinutes","currentMinute","_fillSeconds","currentSecond","timeComponents","_doAction","lastPicked","navFnc","_navFnc","_year","_newDate","_newDate2","_newDate3","_newDate4","_newDate5","collapseData","inactiveIcon","closed","$span","transitioning","todaysDate","currentMoment","shouldUseCurrentIfUnset","_toolbarPlacement","_widgetPositioning","_widgetParent","setMultiDate","multiDateArray","_jQueryHandleThis","me","$originalTarget","Highcharts","printChart","coordinates","loadClipboard","Clipboard","mailgun_validator","thisElement","elementValue","address_text","mailgunRequest","in_progress","mailgunLastSuccessReturn","address","error_message","api_key","timeoutID","status_text","run_validator","validation_in_progress","validation_success","is_valid","alternate","get_suggestion_str","validation_error","$y","$m","$d","$D","$P","$C","CultureInfo","englishName","nativeName","abbreviatedDayNames","shortestDayNames","firstLetterDayNames","abbreviatedMonthNames","amDesignator","pmDesignator","twoDigitYearMax","dateElementOrder","formatPatterns","shortDate","longDate","shortTime","longTime","fullDateTime","sortableDateTime","universalSortableDateTime","rfc1123","monthDay","yearMonth","regexPatterns","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","sun","mon","tue","wed","thu","fri","sat","yesterday","tomorrow","shortMeridian","longMeridian","ordinalSuffix","timeContext","timezones","clearTime","setTimeToNow","date1","date2","compareTo","getDayNumberFromName","getMonthNumberFromName","getTimezoneAbbreviation","between","isToday","isSameDay","addMilliseconds","addSeconds","addMinutes","addHours","addDays","addWeeks","addMonths","addYears","_orient","getWeek","getISOWeek","setWeek","moveToDayOfWeek","_validate","RangeError","validateMillisecond","validateSecond","validateMinute","validateHour","validateDay","validateMonth","validateYear","setTimezone","setTimezoneOffset","moveToFirstDayOfMonth","moveToLastDayOfMonth","moveToNthOccurrence","occurrence","orient","moveToMonth","getOrdinalNumber","getTimezone","getUTCOffset","here","there","hasDaylightSavingTime","getElapsed","_toString","ord","$N","_nth","_is","_same","_isSecond","_dateElement","ago","px","pxf","fromObject","df","ntemp","getDayName","getMonthName","sdf","mf","smf","ef","o1","o2","nf","_ss","nthfn","Parsing","Operators","rtoken","stoken","qx","many","optional","rule","any","sequence","ey","d1","d2","_fn","best","gr","fname","repl","_min","_generator","gx","_vector","vx","flattenAndCompact","ax","Grammar","Translator","meridian","rday","finishExact","gap","datePartDelimiter","timePartDelimiter","generalDelimiter","_C","ctoken","kx","ctoken2","HH","hms","zz","zzz","timeSuffix","ddd","dddd","MMM","MMMM","yyy","yyyy","mdy","ymd","dmy","fmt","_F","_formats","getParseFunction","parseExact","miniEditable","standardEditable","contenaEditable","rangy","HighlighterButton","classApplier","createClassApplier","elementTagName","toggleSelection","CodeButton","mediumInsert","defaultTagName","createElementNSSupported","classNameContainsClass","fullClassName","classNameSupported","elClass","replacer","whiteSpaceBefore","whiteSpaceAfter","sortClassName","getSortedClassName","haveSameClasses","el1","el2","hasAllClasses","canTextBeStyled","movePosition","oldParent","newIndex","posNode","posOffset","newOffset","movePositionWhenRemovingNode","movePreservingPositions","removePreservingPositions","moveChildrenPreservingPositions","replaceWithOwnChildrenPreservingPositions","rangeSelectsAnyText","textNodeRange","getEffectiveTextNodes","elementsHaveSameNonClassAttributes","attr1","attr2","getNamedItem","specified","elementHasNonClassAttributes","isEditableElement","isEditingHost","designMode","isEditable","inlineDisplayRegex","isNonInlineElement","htmlNonWhiteSpaceRegex","isUnrenderedWhiteSpaceNode","getRangeBoundaries","updateRangesFromBoundaries","isSplitPoint","splitNodeAt","descendantNode","descendantOffset","splitAtStart","descendantIndex","newChildIndex","newNodeIndex","areElementsMergeable","createAdjacentMergeableTextNodeGetter","siblingPropName","checkParentElement","adjacentNodeChild","getPreviousMergeableTextNode","getNextMergeableTextNode","Merge","firstNode","isElementMerge","firstTextNode","doMerge","firstTextNodeIndex","combinedTextLength","getLength","optionProperties","attrNamesForProperties","ClassApplier","applier","cssClass","elementPropertiesFromOptions","elementAttributes","elementProperties","attrExceptions","copyPropertiesToElement","attrValue","elementSortedClassName","applyToAnyTagName","ignoreWhiteSpace","applyToEditableOnly","useExistingElements","removeEmptyElements","onElementCreate","createCopy","elStyle","elPropsStyle","propValue","elPropValue","elProps","copyAttributesToElement","appliesToElement","getEmptyElements","getSelfOrAncestorWithClass","isModifiable","isIgnorableWhiteSpaceNode","postApply","isUndo","currentMerge","precedingTextNode","merges","rangeStartNode","rangeEndNode","rangeStartOffset","rangeEndOffset","nextTextNode","createContainer","elementHasProperties","elementHasAttributes","applyToTextNode","textNodeParent","isRemovable","isEmptyContainer","removeEmptyContainers","nodesToRemove","rangesToPreserve","undoToTextNode","ancestorWithClass","ancestorRange","splitAncestorWithClass","undoToAncestor","applyToRange","emptyElements","applyToRanges","applyToSelection","undoToRange","undoToRanges","undoToSelection","isAppliedToRange","isAppliedToRanges","isAppliedToSelection","toggleRange","getElementsWithClassIntersectingRange","hasSameClasses","replaceWithOwnChildren","CssClassApplier","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","Item","browser","argv","removeListener","removeAllListeners","prependListener","prependOnceListener","cwd","chdir","umask","getDragHandler","isDragOver","delegatedEvent","fileInput","xhrFileUpload","ProgressEvent","xhrFormDataFileUpload","blobSlice","mozSlice","dropZone","pasteZone","replaceFileInput","paramName","singleFileUploads","limitMultiFileUploads","limitMultiFileUploadSize","limitMultiFileUploadSizeOverhead","sequentialUploads","limitConcurrentUploads","forceIframeTransport","redirectParamName","maxChunkSize","uploadedBytes","recalculateProgress","progressInterval","bitrateInterval","uniqueFilenames","_specialOptions","_blobSlice","_BitrateTimer","timestamp","bitrate","getBitrate","timeDiff","_isXHRUpload","_getFormData","_getTotal","_initProgressObject","_progress","_initResponseObject","_onProgress","lengthComputable","_time","_bitrateTimer","_initProgressListener","_deinitProgressListener","_isInstanceOf","_getUniqueFilename","_initXHRData","contentRange","uploadName","fileName","_initIframeSettings","targetHost","_initDataSettings","_chunkedUpload","_getParamName","_initFormSettings","formAcceptCharset","_getAJAXSettings","_getDeferredState","isResolved","isRejected","_enhancePromise","_getXHRPromise","resolveOrReject","_addConvenienceMethods","getPromise","resolveFunc","rejectFunc","_processQueue","_onSend","processing","_getUploadedBytes","upperBytesPos","testOnly","fs","ub","mcs","currentLoaded","_beforeSend","_active","_onDone","_onFail","_onAlways","jqXHRorResult","jqXHRorError","slot","_sending","nextSlot","_slots","_sequence","_onAdd","paramNameSet","paramNameSlice","fileSet","filesLength","limitSize","overhead","batchSize","originalFiles","newData","_replaceFileInput","inputClone","restoreFocus","fileInputClone","_handleFileTreeEntry","dirReader","errorHandler","successHandler","_handleFileTreeEntries","readEntries","isFile","_file","relativePath","isDirectory","createReader","_getDroppedFiles","webkitGetAsEntry","getAsEntry","getAsFile","_getSingleFileInputFiles","fileSize","_getFileInputFiles","_onChange","_onPaste","_onDrop","_onDragOver","_onDragEnter","_onDragLeave","_initEventHandlers","dragover","dragenter","dragleave","_destroyEventHandlers","reinit","_initSpecialOptions","_getRegExp","_isRegExpOption","_initDataAttributes","containerDefaults","groupDefaults","$placeholder","$closestItemOrContainer","containerPath","itemPath","bodyClass","draggedClass","isValidTarget","$item","onCancel","onDrag","onMousedown","placeholderClass","pullPlaceholder","$children","parentIsContainer","subContainers","containerGroups","groupCounter","emptyBox","eventNames","subContainerKey","setDimensions","useOffset","getRelativePosition","sortByDistanceDesc","lastPointer","distances","ContainerGroup","rootGroup","scrollProxy","dragProxy","dropProxy","Container","dragInit","itemContainer","closestItem","setPointer","toggleListeners","setupDelayTimer","dragInitDone","distanceMet","delayMet","getPointer","sameResultBox","searchValidTarget","lastAppendedItem","clearDimensions","clearOffsetParent","relativePointer","lastRelativePointer","getContainerDimensions","$getOffsetParent","getItemOffsetParent","movePlaceholder","containerDimensions","currentPointer","traverse","_clearDimensions","isValidDrag","getItemDimensions","validTarget","hasChildGroup","getContainerGroup","itemDimensions","yCenter","xCenter","$getChildren","childGroup","childContainers","isContainer","childType","API","methodOrOptions","realStringObj","indirect","eval","Sizzle","rbuggyMatches","MAX_NEGATIVE","push_native","rcombinators","rattributeQuotes","rnative","rescape","escapedWhitespace","nidselect","qsa","addHandle","siblingCheck","sourceIndex","hasCompare","createComment","adown","aup","ap","bp","detectDuplicates","uniqueCache","uniqueID","div1","risSimple","rnotwhite","subordinate","progressValues","progressContexts","stored","camel","camelKey","rkeyEvent","rmouseEvent","keyHooks","eventDoc","fixHook","rxhtmlTag","rscriptTypeMasked","pdataOld","pdataCur","elemdisplay","HTML","BODY","actualDisplay","defaultDisplay","rmargin","pixelMarginRight","pixelMarginRightVal","reliableMarginRight","marginDiv","augmentWidthOrHeight","timerId","optDisabled","rclass","clazz","rspaces","rts","lname","_load","andSelf","caretTimeoutId","ua","iPhone","chrome","android","definitions","autoclear","unmask","tests","partialPosition","firstNonMaskPos","lastRequiredNonMaskPos","oldVal","getPlaceholder","defaultBuffer","focusText","tryFireCompleted","seekNext","seekPrev","shiftL","writeBuffer","shiftR","androidInputEvent","checkVal","lastEnteredValue","keydownEvent","clearBuffer","keypressEvent","allow","lastMatch","is_mobile_width","is_tablet_width","hideSocial","left_menu","right_menu","documents_container","openNavLeft","full_width","closeNavLeft","right_menu_width","right_compact_width","right_full_width","menu_width","open_width","_container$css","reader_form","submit_form","avatar","testimonial","new_testimonial_card","change_testimonial","slider","aaa","bbb","ccc","aliasedRequire","current_lang","auto_language","autorun","page_scripts","hide_from_bots","cookie_name","cookie_expiration","cookie_domain","hostname","cookie_path","cookie_same_site","use_rfc_cookie","autoclear_cookies","script_selector","nn","tn","rn","cookie_necessary_only_expiration","onAccept","onFirstAction","webdriver","sn","languages","an","wn","showSettings","hideSettings","cn","kn","un","force_consent","xn","ln","consent_modal","revision_message","primary_btn","secondary_btn","On","gui_options","swap_buttons","settings_modal","close_btn_label","blocks","cookie_table_headers","cookie_table_caption","cookie_table","remove_cookie_tables","vn","Jn","Sn","dn","pn","bn","yn","accept_all_btn","gn","reject_all_btn","save_settings_btn","updateLanguage","hn","is_regex","domain","language","browserLanguage","allowedCategory","consent_uuid","consent_date","last_consent_update","Tn","jn","rfc_cookie","getConfig","accepted","getUserPreferences","accept_type","accepted_categories","rejected_categories","loadScript","updateScripts","Nn","msCrypto","eraseCookies","validCookie","toUTCString","validConsent"],"mappings":";aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GAKAK,EAAI,EAAGC,EAAW,GACpCD,EAAIF,EAASI,OAAQF,IACzBH,EAAUC,EAASE,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBV,IAAYU,EAAgBV,IACpFI,EAASO,KAAKD,EAAgBV,GAAS,IAExCU,EAAgBV,GAAW,EAE5B,IAAID,KAAYG,EACZI,OAAOC,UAAUC,eAAeC,KAAKP,EAAaH,KACpDa,EAAQb,GAAYG,EAAYH,IAKlC,IAFGc,GAAqBA,EAAoBf,GAEtCM,EAASC,QACdD,EAASU,OAATV,EAGF,CAIA,IAAIW,EAAmB,CAAC,EAKpBL,EAAkB,CACrB,EAAG,GAWJ,SAASM,EAAoBjB,GAG5B,GAAGgB,EAAiBhB,GACnB,OAAOgB,EAAiBhB,GAAUkB,QAGnC,IAAIC,EAASH,EAAiBhB,GAAY,CACzCI,EAAGJ,EACHoB,GAAG,EACHF,QAAS,CAAC,GAUX,OANAL,EAAQb,GAAUU,KAAKS,EAAOD,QAASC,EAAQA,EAAOD,QAASD,GAG/DE,EAAOC,GAAI,EAGJD,EAAOD,OACf,CAIAD,EAAoBI,EAAI,SAAuBpB,GAC9C,IAAIqB,EAAW,GAKXC,EAAqBZ,EAAgBV,GACzC,GAA0B,IAAvBsB,EAGF,GAAGA,EACFD,EAASV,KAAKW,EAAmB,QAC3B,CAEN,IAAIC,EAAU,IAAIC,SAAQ,SAASC,EAASC,GAC3CJ,EAAqBZ,EAAgBV,GAAW,CAACyB,EAASC,EAC3D,IACAL,EAASV,KAAKW,EAAmB,GAAKC,GAGtC,IACII,EADAC,EAASC,SAASC,cAAc,UAGpCF,EAAOG,QAAU,QACjBH,EAAOI,QAAU,IACbhB,EAAoBiB,IACvBL,EAAOM,aAAa,QAASlB,EAAoBiB,IAElDL,EAAOO,IA1DV,SAAwBnC,GACvB,OAAOgB,EAAoBoB,EAAI,OAAS,CAAC,EAAI,eAAepC,IAAUA,GAAW,IAAM,CAAC,EAAI,wBAAwBA,GAAW,WAChI,CAwDgBqC,CAAerC,GAG5B,IAAIsC,EAAQ,IAAIC,MAChBZ,EAAmB,SAAUa,GAE5BZ,EAAOa,QAAUb,EAAOc,OAAS,KACjCC,aAAaX,GACb,IAAIY,EAAQlC,EAAgBV,GAC5B,GAAa,IAAV4C,EAAa,CACf,GAAGA,EAAO,CACT,IAAIC,EAAYL,IAAyB,SAAfA,EAAMM,KAAkB,UAAYN,EAAMM,MAChEC,EAAUP,GAASA,EAAMQ,QAAUR,EAAMQ,OAAOb,IACpDG,EAAMW,QAAU,iBAAmBjD,EAAU,cAAgB6C,EAAY,KAAOE,EAAU,IAC1FT,EAAMY,KAAO,iBACbZ,EAAMQ,KAAOD,EACbP,EAAMa,QAAUJ,EAChBH,EAAM,GAAGN,EACV,CACA5B,EAAgBV,QAAWoD,CAC5B,CACD,EACA,IAAIpB,EAAUqB,YAAW,WACxB1B,EAAiB,CAAEmB,KAAM,UAAWE,OAAQpB,GAC7C,GAAG,MACHA,EAAOa,QAAUb,EAAOc,OAASf,EACjCE,SAASyB,KAAKC,YAAY3B,EAC3B,CAED,OAAOJ,QAAQgC,IAAInC,EACpB,EAGAL,EAAoByC,EAAI7C,EAGxBI,EAAoB0C,EAAI3C,EAGxBC,EAAoB2C,EAAI,SAAS1C,EAASiC,EAAMU,GAC3C5C,EAAoB6C,EAAE5C,EAASiC,IAClC5C,OAAOwD,eAAe7C,EAASiC,EAAM,CAAEa,YAAY,EAAMC,IAAKJ,GAEhE,EAGA5C,EAAoBiD,EAAI,SAAShD,GACX,qBAAXiD,QAA0BA,OAAOC,aAC1C7D,OAAOwD,eAAe7C,EAASiD,OAAOC,YAAa,CAAEC,MAAO,WAE7D9D,OAAOwD,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,GACvD,EAOApD,EAAoBqD,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQpD,EAAoBoD,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKlE,OAAOmE,OAAO,MAGvB,GAFAzD,EAAoBiD,EAAEO,GACtBlE,OAAOwD,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOpD,EAAoB2C,EAAEa,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,EAAM,EAAEC,KAAK,KAAMD,IAC9I,OAAOF,CACR,EAGAxD,EAAoB4D,EAAI,SAAS1D,GAChC,IAAI0C,EAAS1C,GAAUA,EAAOqD,WAC7B,WAAwB,OAAOrD,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAF,EAAoB2C,EAAEC,EAAQ,IAAKA,GAC5BA,CACR,EAGA5C,EAAoB6C,EAAI,SAASgB,EAAQC,GAAY,OAAOxE,OAAOC,UAAUC,eAAeC,KAAKoE,EAAQC,EAAW,EAGpH9D,EAAoBoB,EAAI,UAGxBpB,EAAoB+D,GAAK,SAASC,GAA2B,MAApBC,QAAQ3C,MAAM0C,GAAYA,CAAK,EAExE,IAAIE,EAAaC,OAAqB,aAAIA,OAAqB,cAAK,GAChEC,EAAmBF,EAAWvE,KAAKgE,KAAKO,GAC5CA,EAAWvE,KAAOd,EAClBqF,EAAaA,EAAWG,QACxB,IAAI,IAAIlF,EAAI,EAAGA,EAAI+E,EAAW7E,OAAQF,IAAKN,EAAqBqF,EAAW/E,IAC3E,IAAIU,EAAsBuE,EAInBpE,EAAoBA,EAAoBsE,EAAI,I,oBCrMrD,YAQiEpE,EAAOD,QAC/D,WACP,aAEA,IAAIsE,EAgGAC,EA/FJ,SAASC,IACP,OAAOF,EAAaG,MAAM,KAAMC,UAClC,CAIA,SAASC,EAAgBC,GACvBN,EAAeM,CACjB,CACA,SAASC,EAAQC,GACf,OAAOA,aAAiBC,OAAmD,mBAA1C1F,OAAOC,UAAU0F,SAASxF,KAAKsF,EAClE,CACA,SAASG,EAASH,GAGhB,OAAgB,MAATA,GAA2D,oBAA1CzF,OAAOC,UAAU0F,SAASxF,KAAKsF,EACzD,CACA,SAASI,EAAWC,EAAGC,GACrB,OAAO/F,OAAOC,UAAUC,eAAeC,KAAK2F,EAAGC,EACjD,CACA,SAASC,EAAcC,GACrB,GAAIjG,OAAOkG,oBACT,OAAkD,IAA3ClG,OAAOkG,oBAAoBD,GAAKlG,OAEvC,IAAIoG,EACJ,IAAKA,KAAKF,EACR,GAAIJ,EAAWI,EAAKE,GAClB,OAAO,EAGX,OAAO,CAEX,CACA,SAASC,EAAYX,GACnB,YAAiB,IAAVA,CACT,CACA,SAASY,EAASZ,GAChB,MAAwB,kBAAVA,GAAgE,oBAA1CzF,OAAOC,UAAU0F,SAASxF,KAAKsF,EACrE,CACA,SAASa,EAAOb,GACd,OAAOA,aAAiBc,MAAkD,kBAA1CvG,OAAOC,UAAU0F,SAASxF,KAAKsF,EACjE,CACA,SAASe,EAAIC,EAAKC,GAChB,IACE7G,EADE8G,EAAM,GAERC,EAASH,EAAI1G,OACf,IAAKF,EAAI,EAAGA,EAAI+G,IAAU/G,EACxB8G,EAAItG,KAAKqG,EAAGD,EAAI5G,GAAIA,IAEtB,OAAO8G,CACT,CACA,SAASE,EAAOf,EAAGC,GACjB,IAAK,IAAIlG,KAAKkG,EACRF,EAAWE,EAAGlG,KAChBiG,EAAEjG,GAAKkG,EAAElG,IASb,OANIgG,EAAWE,EAAG,cAChBD,EAAEH,SAAWI,EAAEJ,UAEbE,EAAWE,EAAG,aAChBD,EAAEgB,QAAUf,EAAEe,SAEThB,CACT,CACA,SAASiB,EAAUtB,EAAOuB,EAAQC,EAAQC,GACxC,OAAOC,GAAiB1B,EAAOuB,EAAQC,EAAQC,GAAQ,GAAME,KAC/D,CACA,SAASC,IAEP,MAAO,CACLC,OAAO,EACPC,aAAc,GACdC,YAAa,GACbC,UAAW,EACXC,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,EAErB,CACA,SAASC,EAAgBnF,GAIvB,OAHa,MAATA,EAAEoF,MACJpF,EAAEoF,IAAMlB,KAEHlE,EAAEoF,GACX,CAiBA,SAASC,EAAQrF,GACf,GAAkB,MAAdA,EAAEsF,SAAkB,CACtB,IAAIC,EAAQJ,EAAgBnF,GAC1BwF,EAAczD,EAAK/E,KAAKuI,EAAMT,iBAAiB,SAAUpI,GACvD,OAAY,MAALA,CACT,IACA+I,GAAcC,MAAM1F,EAAE2F,GAAGC,YAAcL,EAAMjB,SAAW,IAAMiB,EAAMpB,QAAUoB,EAAMd,aAAec,EAAMb,eAAiBa,EAAMM,iBAAmBN,EAAML,kBAAoBK,EAAMf,YAAce,EAAMZ,gBAAkBY,EAAMX,mBAAqBW,EAAMP,UAAYO,EAAMP,UAAYQ,GAI1R,GAHIxF,EAAE8F,UACJL,EAAaA,GAAsC,IAAxBF,EAAMhB,eAAqD,IAA9BgB,EAAMnB,aAAaxH,aAAkC+C,IAAlB4F,EAAMQ,SAE5E,MAAnBlJ,OAAOmJ,UAAqBnJ,OAAOmJ,SAAShG,GAG9C,OAAOyF,EAFPzF,EAAEsF,SAAWG,CAIjB,CACA,OAAOzF,EAAEsF,QACX,CACA,SAASW,EAAcV,GACrB,IAAIvF,EAAI4D,EAAUsC,KAMlB,OALa,MAATX,EACF7B,EAAOyB,EAAgBnF,GAAIuF,GAE3BJ,EAAgBnF,GAAG4E,iBAAkB,EAEhC5E,CACT,CAxCE+B,EADEQ,MAAMzF,UAAUiF,KACXQ,MAAMzF,UAAUiF,KAEhB,SAAUoE,GACf,IAEEzJ,EAFEkE,EAAI/D,OAAOuJ,MACbC,EAAMzF,EAAEhE,SAAW,EAErB,IAAKF,EAAI,EAAGA,EAAI2J,EAAK3J,IACnB,GAAIA,KAAKkE,GAAKuF,EAAInJ,KAAKoJ,KAAMxF,EAAElE,GAAIA,EAAGkE,GACpC,OAAO,EAGX,OAAO,CACT,EAgCF,IAAI0F,EAAmBtE,EAAMsE,iBAAmB,GAC9CC,GAAmB,EACrB,SAASC,EAAWC,EAAIC,GACtB,IAAIhK,EACFiK,EACAC,EACAC,EAAsBP,EAAiB1J,OA+BzC,GA9BKqG,EAAYyD,EAAKI,oBACpBL,EAAGK,iBAAmBJ,EAAKI,kBAExB7D,EAAYyD,EAAKK,MACpBN,EAAGM,GAAKL,EAAKK,IAEV9D,EAAYyD,EAAKM,MACpBP,EAAGO,GAAKN,EAAKM,IAEV/D,EAAYyD,EAAKO,MACpBR,EAAGQ,GAAKP,EAAKO,IAEVhE,EAAYyD,EAAKZ,WACpBW,EAAGX,QAAUY,EAAKZ,SAEf7C,EAAYyD,EAAKQ,QACpBT,EAAGS,KAAOR,EAAKQ,MAEZjE,EAAYyD,EAAKS,UACpBV,EAAGU,OAAST,EAAKS,QAEdlE,EAAYyD,EAAKU,WACpBX,EAAGW,QAAUV,EAAKU,SAEfnE,EAAYyD,EAAKtB,OACpBqB,EAAGrB,IAAMD,EAAgBuB,IAEtBzD,EAAYyD,EAAKW,WACpBZ,EAAGY,QAAUX,EAAKW,SAEhBR,EAAsB,EACxB,IAAKnK,EAAI,EAAGA,EAAImK,EAAqBnK,IAG9BuG,EADL2D,EAAMF,EADNC,EAAOL,EAAiB5J,OAGtB+J,EAAGE,GAAQC,GAIjB,OAAOH,CACT,CAGA,SAASa,EAAOC,GACdf,EAAWJ,KAAMmB,GACjBnB,KAAKT,GAAK,IAAIvC,KAAkB,MAAbmE,EAAO5B,GAAa4B,EAAO5B,GAAGC,UAAYM,KACxDE,KAAKf,YACRe,KAAKT,GAAK,IAAIvC,KAAK8C,OAII,IAArBK,IACFA,GAAmB,EACnBvE,EAAMwF,aAAapB,MACnBG,GAAmB,EAEvB,CACA,SAASkB,EAAS3E,GAChB,OAAOA,aAAewE,GAAiB,MAAPxE,GAAuC,MAAxBA,EAAIgE,gBACrD,CACA,SAASY,EAAKC,IAC8B,IAAtC3F,EAAM4F,6BAA4D,qBAAZpG,SAA2BA,QAAQkG,MAC3FlG,QAAQkG,KAAK,wBAA0BC,EAE3C,CACA,SAASE,EAAUF,EAAKpE,GACtB,IAAIuE,GAAY,EAChB,OAAOpE,GAAO,WAIZ,GAHgC,MAA5B1B,EAAM+F,oBACR/F,EAAM+F,mBAAmB,KAAMJ,GAE7BG,EAAW,CACb,IACEE,EACAtL,EACAuE,EAHEgH,EAAO,GAITC,EAAShG,UAAUtF,OACrB,IAAKF,EAAI,EAAGA,EAAIwL,EAAQxL,IAAK,CAE3B,GADAsL,EAAM,GACsB,kBAAjB9F,UAAUxF,GAAiB,CAEpC,IAAKuE,KADL+G,GAAO,MAAQtL,EAAI,KACPwF,UAAU,GAChBQ,EAAWR,UAAU,GAAIjB,KAC3B+G,GAAO/G,EAAM,KAAOiB,UAAU,GAAGjB,GAAO,MAG5C+G,EAAMA,EAAIpG,MAAM,GAAI,EACtB,MACEoG,EAAM9F,UAAUxF,GAElBuL,EAAK/K,KAAK8K,EACZ,CACAN,EAAKC,EAAM,gBAAkBpF,MAAMzF,UAAU8E,MAAM5E,KAAKiL,GAAME,KAAK,IAAM,MAAO,IAAIrJ,OAAQsJ,OAC5FN,GAAY,CACd,CACA,OAAOvE,EAAGtB,MAAMmE,KAAMlE,UACxB,GAAGqB,EACL,CACA,IA8DI8E,EA9DAC,EAAe,CAAC,EACpB,SAASC,EAAgB9I,EAAMkI,GACG,MAA5B3F,EAAM+F,oBACR/F,EAAM+F,mBAAmBtI,EAAMkI,GAE5BW,EAAa7I,KAChBiI,EAAKC,GACLW,EAAa7I,IAAQ,EAEzB,CAGA,SAAS+I,EAAWlG,GAClB,MAA2B,qBAAbmG,UAA4BnG,aAAiBmG,UAAsD,sBAA1C5L,OAAOC,UAAU0F,SAASxF,KAAKsF,EACxG,CACA,SAASoG,EAAInB,GACX,IAAIZ,EAAMjK,EACV,IAAKA,KAAK6K,EACJ7E,EAAW6E,EAAQ7K,KAEjB8L,EADJ7B,EAAOY,EAAO7K,IAEZ0J,KAAK1J,GAAKiK,EAEVP,KAAK,IAAM1J,GAAKiK,GAItBP,KAAKuC,QAAUpB,EAIfnB,KAAKwC,+BAAiC,IAAIC,QAAQzC,KAAK0C,wBAAwBC,QAAU3C,KAAK4C,cAAcD,QAAU,IAAM,UAAUA,OACxI,CACA,SAASE,EAAaC,EAAcC,GAClC,IACExC,EADEnD,EAAME,EAAO,CAAC,EAAGwF,GAErB,IAAKvC,KAAQwC,EACPzG,EAAWyG,EAAaxC,KACtBlE,EAASyG,EAAavC,KAAUlE,EAAS0G,EAAYxC,KACvDnD,EAAImD,GAAQ,CAAC,EACbjD,EAAOF,EAAImD,GAAOuC,EAAavC,IAC/BjD,EAAOF,EAAImD,GAAOwC,EAAYxC,KACA,MAArBwC,EAAYxC,GACrBnD,EAAImD,GAAQwC,EAAYxC,UAEjBnD,EAAImD,IAIjB,IAAKA,KAAQuC,EACPxG,EAAWwG,EAAcvC,KAAUjE,EAAWyG,EAAaxC,IAASlE,EAASyG,EAAavC,MAE5FnD,EAAImD,GAAQjD,EAAO,CAAC,EAAGF,EAAImD,KAG/B,OAAOnD,CACT,CACA,SAAS4F,EAAO7B,GACA,MAAVA,GACFnB,KAAKsC,IAAInB,EAEb,CAnDAvF,EAAM4F,6BAA8B,EACpC5F,EAAM+F,mBAAqB,KAqDzBM,EADExL,OAAOwL,KACFxL,OAAOwL,KAEP,SAAUvF,GACf,IAAIpG,EACF8G,EAAM,GACR,IAAK9G,KAAKoG,EACJJ,EAAWI,EAAKpG,IAClB8G,EAAItG,KAAKR,GAGb,OAAO8G,CACT,EAEF,IAAI6F,EAAkB,CACpBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZ,SAASC,EAAS3I,EAAK4I,EAAKC,GAC1B,IAAIC,EAAS3D,KAAK4D,UAAU/I,IAAQmF,KAAK4D,UAAoB,SAC7D,OAAOxB,EAAWuB,GAAUA,EAAO/M,KAAK6M,EAAKC,GAAOC,CACtD,CACA,SAASE,EAASC,EAAQC,EAAcC,GACtC,IAAIC,EAAY,GAAKC,KAAKC,IAAIL,GAC5BM,EAAcL,EAAeE,EAAUzN,OAEzC,OADSsN,GAAU,EACJE,EAAY,IAAM,GAAK,KAAOE,KAAKG,IAAI,GAAIH,KAAKI,IAAI,EAAGF,IAAchI,WAAWmI,OAAO,GAAKN,CAC7G,CACA,IAAIO,EAAmB,yMACrBC,EAAwB,6CACxBC,EAAkB,CAAC,EACnBC,EAAuB,CAAC,EAM1B,SAASC,EAAeC,EAAOC,EAAQC,EAAS/I,GAC9C,IAAIgJ,EAAOhJ,EACa,kBAAbA,IACTgJ,EAAO,WACL,OAAOhF,KAAKhE,IACd,GAEE6I,IACFF,EAAqBE,GAASG,GAE5BF,IACFH,EAAqBG,EAAO,IAAM,WAChC,OAAOjB,EAASmB,EAAKnJ,MAAMmE,KAAMlE,WAAYgJ,EAAO,GAAIA,EAAO,GACjE,GAEEC,IACFJ,EAAqBI,GAAW,WAC9B,OAAO/E,KAAKiF,aAAaF,QAAQC,EAAKnJ,MAAMmE,KAAMlE,WAAY+I,EAChE,EAEJ,CACA,SAASK,EAAuBhJ,GAC9B,OAAIA,EAAMiJ,MAAM,YACPjJ,EAAMkJ,QAAQ,WAAY,IAE5BlJ,EAAMkJ,QAAQ,MAAO,GAC9B,CACA,SAASC,EAAmB5H,GAC1B,IACEnH,EACAE,EAFE8O,EAAQ7H,EAAO0H,MAAMX,GAGzB,IAAKlO,EAAI,EAAGE,EAAS8O,EAAM9O,OAAQF,EAAIE,EAAQF,IACzCqO,EAAqBW,EAAMhP,IAC7BgP,EAAMhP,GAAKqO,EAAqBW,EAAMhP,IAEtCgP,EAAMhP,GAAK4O,EAAuBI,EAAMhP,IAG5C,OAAO,SAAUmN,GACf,IACEnN,EADEqN,EAAS,GAEb,IAAKrN,EAAI,EAAGA,EAAIE,EAAQF,IACtBqN,GAAUvB,EAAWkD,EAAMhP,IAAMgP,EAAMhP,GAAGM,KAAK6M,EAAKhG,GAAU6H,EAAMhP,GAEtE,OAAOqN,CACT,CACF,CAGA,SAAS4B,EAAa3L,EAAG6D,GACvB,OAAK7D,EAAEqF,WAGPxB,EAAS+H,EAAa/H,EAAQ7D,EAAEqL,cAChCP,EAAgBjH,GAAUiH,EAAgBjH,IAAW4H,EAAmB5H,GACjEiH,EAAgBjH,GAAQ7D,IAJtBA,EAAEqL,aAAaQ,aAK1B,CACA,SAASD,EAAa/H,EAAQC,GAC5B,IAAIpH,EAAI,EACR,SAASoP,EAA4BxJ,GACnC,OAAOwB,EAAOiI,eAAezJ,IAAUA,CACzC,CAEA,IADAuI,EAAsBmB,UAAY,EAC3BtP,GAAK,GAAKmO,EAAsBoB,KAAKpI,IAC1CA,EAASA,EAAO2H,QAAQX,EAAuBiB,GAC/CjB,EAAsBmB,UAAY,EAClCtP,GAAK,EAEP,OAAOmH,CACT,CACA,IAAIqI,EAAwB,CAC1BC,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAER,SAAST,EAAe9K,GACtB,IAAI4C,EAASuC,KAAKqG,gBAAgBxL,GAChCyL,EAActG,KAAKqG,gBAAgBxL,EAAI0L,eACzC,OAAI9I,IAAW6I,EACN7I,GAETuC,KAAKqG,gBAAgBxL,GAAOyL,EAAYnB,MAAMX,GAAkBvH,KAAI,SAAUuJ,GAC5E,MAAY,SAARA,GAA0B,OAARA,GAAwB,OAARA,GAAwB,SAARA,EAC7CA,EAAIhL,MAAM,GAEZgL,CACT,IAAGzE,KAAK,IACD/B,KAAKqG,gBAAgBxL,GAC9B,CACA,IAAI4L,EAAqB,eACzB,SAAShB,IACP,OAAOzF,KAAK0G,YACd,CACA,IAAIC,EAAiB,KACnBC,EAAgC,UAClC,SAAS7B,EAAQjB,GACf,OAAO9D,KAAK6G,SAASzB,QAAQ,KAAMtB,EACrC,CACA,IAAIgD,EAAsB,CACxBC,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAEN,SAASC,GAAa9D,EAAQ+D,EAAeC,EAAQC,GACnD,IAAIpE,EAAS3D,KAAKgI,cAAcF,GAChC,OAAO1F,EAAWuB,GAAUA,EAAOG,EAAQ+D,EAAeC,EAAQC,GAAYpE,EAAOyB,QAAQ,MAAOtB,EACtG,CACA,SAASmE,GAAWC,EAAMvE,GACxB,IAAIlG,EAASuC,KAAKgI,cAAcE,EAAO,EAAI,SAAW,QACtD,OAAO9F,EAAW3E,GAAUA,EAAOkG,GAAUlG,EAAO2H,QAAQ,MAAOzB,EACrE,CACA,IAAIwE,GAAU,CAAC,EACf,SAASC,GAAaC,EAAMC,GAC1B,IAAIC,EAAYF,EAAKG,cACrBL,GAAQI,GAAaJ,GAAQI,EAAY,KAAOJ,GAAQG,GAAaD,CACvE,CACA,SAASI,GAAeC,GACtB,MAAwB,kBAAVA,EAAqBP,GAAQO,IAAUP,GAAQO,EAAMF,oBAAiBjP,CACtF,CACA,SAASoP,GAAqBC,GAC5B,IACEC,EACAtI,EAFEuI,EAAkB,CAAC,EAGvB,IAAKvI,KAAQqI,EACPtM,EAAWsM,EAAarI,KAC1BsI,EAAiBJ,GAAelI,MAE9BuI,EAAgBD,GAAkBD,EAAYrI,IAIpD,OAAOuI,CACT,CACA,IAAIC,GAAa,CAAC,EAClB,SAASC,GAAgBX,EAAMY,GAC7BF,GAAWV,GAAQY,CACrB,CACA,SAASC,GAAoBC,GAC3B,IACEC,EADEV,EAAQ,GAEZ,IAAKU,KAAKD,EACJ7M,EAAW6M,EAAUC,IACvBV,EAAM5R,KAAK,CACTuR,KAAMe,EACNH,SAAUF,GAAWK,KAO3B,OAHAV,EAAMW,MAAK,SAAU9M,EAAGC,GACtB,OAAOD,EAAE0M,SAAWzM,EAAEyM,QACxB,IACOP,CACT,CACA,SAASY,GAAWC,GAClB,OAAOA,EAAO,IAAM,GAAKA,EAAO,MAAQ,GAAKA,EAAO,MAAQ,CAC9D,CACA,SAASC,GAAS1F,GAChB,OAAIA,EAAS,EAEJI,KAAKuF,KAAK3F,IAAW,EAErBI,KAAKwF,MAAM5F,EAEtB,CACA,SAAS6F,GAAMC,GACb,IAAIC,GAAiBD,EACnBrP,EAAQ,EAIV,OAHsB,IAAlBsP,GAAuBC,SAASD,KAClCtP,EAAQiP,GAASK,IAEZtP,CACT,CACA,SAASwP,GAAW1B,EAAM2B,GACxB,OAAO,SAAUzP,GACf,OAAa,MAATA,GACF0P,GAAMjK,KAAMqI,EAAM9N,GAClBqB,EAAMwF,aAAapB,KAAMgK,GAClBhK,MAEA7F,GAAI6F,KAAMqI,EAErB,CACF,CACA,SAASlO,GAAIsJ,EAAK4E,GAChB,OAAO5E,EAAIxE,UAAYwE,EAAIlE,GAAG,OAASkE,EAAI1C,OAAS,MAAQ,IAAMsH,KAAUvI,GAC9E,CACA,SAASmK,GAAMxG,EAAK4E,EAAM9N,GACpBkJ,EAAIxE,YAAcK,MAAM/E,KACb,aAAT8N,GAAuBiB,GAAW7F,EAAI8F,SAA2B,IAAhB9F,EAAIyG,SAAgC,KAAfzG,EAAI0G,QAC5E5P,EAAQoP,GAAMpP,GACdkJ,EAAIlE,GAAG,OAASkE,EAAI1C,OAAS,MAAQ,IAAMsH,GAAM9N,EAAOkJ,EAAIyG,QAASE,GAAY7P,EAAOkJ,EAAIyG,WAE5FzG,EAAIlE,GAAG,OAASkE,EAAI1C,OAAS,MAAQ,IAAMsH,GAAM9N,GAGvD,CAIA,SAAS8P,GAAU3B,GAEjB,OAAItG,EAAWpC,KADf0I,EAAQD,GAAeC,KAEd1I,KAAK0I,KAEP1I,IACT,CACA,SAASsK,GAAU5B,EAAOnO,GACxB,GAAqB,kBAAVmO,EAAoB,CAE7B,IACEpS,EADEiU,EAAcrB,GADlBR,EAAQC,GAAqBD,IAG3B8B,EAAiBD,EAAY/T,OAC/B,IAAKF,EAAI,EAAGA,EAAIkU,EAAgBlU,IAC9B0J,KAAKuK,EAAYjU,GAAG+R,MAAMK,EAAM6B,EAAYjU,GAAG+R,MAEnD,MAEE,GAAIjG,EAAWpC,KADf0I,EAAQD,GAAeC,KAErB,OAAO1I,KAAK0I,GAAOnO,GAGvB,OAAOyF,IACT,CACA,IAmCEyK,GAnCEC,GAAS,KAEXC,GAAS,OAETC,GAAS,QAETC,GAAS,QAETC,GAAS,aAETC,GAAY,QAEZC,GAAY,YAEZC,GAAY,gBAEZC,GAAY,UAEZC,GAAY,UAEZC,GAAY,eAEZC,GAAgB,MAEhBC,GAAc,WAEdC,GAAc,qBAEdC,GAAmB,0BAEnBC,GAAiB,uBAIjBC,GAAY,wJAGd,SAASC,GAAc9G,EAAO+G,EAAOC,GACnCpB,GAAQ5F,GAASzC,EAAWwJ,GAASA,EAAQ,SAAUE,EAAU7G,GAC/D,OAAO6G,GAAYD,EAAcA,EAAcD,CACjD,CACF,CACA,SAASG,GAAsBlH,EAAO1D,GACpC,OAAK7E,EAAWmO,GAAS5F,GAGlB4F,GAAQ5F,GAAO1D,EAAOzB,QAASyB,EAAOF,SAFpC,IAAIwB,OAAOuJ,GAAenH,GAGrC,CAGA,SAASmH,GAAevQ,GACtB,OAAOwQ,GAAYxQ,EAAE2J,QAAQ,KAAM,IAAIA,QAAQ,uCAAuC,SAAU8G,EAASC,EAAIC,EAAIC,EAAIC,GACnH,OAAOH,GAAMC,GAAMC,GAAMC,CAC3B,IACF,CACA,SAASL,GAAYxQ,GACnB,OAAOA,EAAE2J,QAAQ,yBAA0B,OAC7C,CArBAqF,GAAU,CAAC,EAsBX,IAAI8B,GAAS,CAAC,EACd,SAASC,GAAc3H,EAAO7I,GAC5B,IAAI1F,EAEFmW,EADAzH,EAAOhJ,EAWT,IATqB,kBAAV6I,IACTA,EAAQ,CAACA,IAEP/H,EAASd,KACXgJ,EAAO,SAAU9I,EAAOoJ,GACtBA,EAAMtJ,GAAY2N,GAAMzN,EAC1B,GAEFuQ,EAAW5H,EAAMrO,OACZF,EAAI,EAAGA,EAAImW,EAAUnW,IACxBiW,GAAO1H,EAAMvO,IAAM0O,CAEvB,CACA,SAAS0H,GAAkB7H,EAAO7I,GAChCwQ,GAAc3H,GAAO,SAAU3I,EAAOoJ,EAAOnE,EAAQ0D,GACnD1D,EAAOwL,GAAKxL,EAAOwL,IAAM,CAAC,EAC1B3Q,EAASE,EAAOiF,EAAOwL,GAAIxL,EAAQ0D,EACrC,GACF,CACA,SAAS+H,GAAwB/H,EAAO3I,EAAOiF,GAChC,MAATjF,GAAiBI,EAAWiQ,GAAQ1H,IACtC0H,GAAO1H,GAAO3I,EAAOiF,EAAO0L,GAAI1L,EAAQ0D,EAE5C,CACA,IAYIiI,GAZAC,GAAO,EACTC,GAAQ,EACRC,GAAO,EACPC,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPC,GAAU,EACZ,SAASC,GAAIzS,EAAG0S,GACd,OAAQ1S,EAAI0S,EAAIA,GAAKA,CACvB,CAgBA,SAASrD,GAAYb,EAAMW,GACzB,GAAI5K,MAAMiK,IAASjK,MAAM4K,GACvB,OAAOpK,IAET,IAAI4N,EAAWF,GAAItD,EAAO,IAE1B,OADAX,IAASW,EAAQwD,GAAY,GACT,IAAbA,EAAiBpE,GAAWC,GAAQ,GAAK,GAAK,GAAKmE,EAAW,EAAI,CAC3E,CApBEZ,GADE3Q,MAAMzF,UAAUoW,QACR3Q,MAAMzF,UAAUoW,QAEhB,SAAU9S,GAElB,IAAI1D,EACJ,IAAKA,EAAI,EAAGA,EAAI0J,KAAKxJ,SAAUF,EAC7B,GAAI0J,KAAK1J,KAAO0D,EACd,OAAO1D,EAGX,OAAQ,CACV,EAaFsO,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACnC,OAAO5E,KAAKkK,QAAU,CACxB,IACAtF,EAAe,MAAO,EAAG,GAAG,SAAUnH,GACpC,OAAOuC,KAAKiF,aAAa0I,YAAY3N,KAAMvC,EAC7C,IACAmH,EAAe,OAAQ,EAAG,GAAG,SAAUnH,GACrC,OAAOuC,KAAKiF,aAAa2I,OAAO5N,KAAMvC,EACxC,IAIA2K,GAAa,QAAS,KAItBY,GAAgB,QAAS,GAIzB2C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAO,SAAUG,EAAUpO,GACvC,OAAOA,EAAOmQ,iBAAiB/B,EACjC,IACAH,GAAc,QAAQ,SAAUG,EAAUpO,GACxC,OAAOA,EAAOoQ,YAAYhC,EAC5B,IACAU,GAAc,CAAC,IAAK,OAAO,SAAUtQ,EAAOoJ,GAC1CA,EAAM0H,IAASrD,GAAMzN,GAAS,CAChC,IACAsQ,GAAc,CAAC,MAAO,SAAS,SAAUtQ,EAAOoJ,EAAOnE,EAAQ0D,GAC7D,IAAIqF,EAAQ/I,EAAOF,QAAQ8M,YAAY7R,EAAO2I,EAAO1D,EAAOzB,SAE/C,MAATwK,EACF5E,EAAM0H,IAAS9C,EAEfnL,EAAgBoC,GAAQ7C,aAAepC,CAE3C,IAIA,IAAI8R,GAAsB,wFAAwFC,MAAM,KACtHC,GAA2B,kDAAkDD,MAAM,KACnFE,GAAmB,gCACnBC,GAA0B1C,GAC1B2C,GAAqB3C,GACvB,SAAS4C,GAAa1U,EAAG6D,GACvB,OAAK7D,EAGEqC,EAAQ+D,KAAKuO,SAAWvO,KAAKuO,QAAQ3U,EAAEsQ,SAAWlK,KAAKuO,SAASvO,KAAKuO,QAAQC,UAAYL,IAAkBtI,KAAKpI,GAAU,SAAW,cAAc7D,EAAEsQ,SAFnJjO,EAAQ+D,KAAKuO,SAAWvO,KAAKuO,QAAUvO,KAAKuO,QAAoB,UAG3E,CACA,SAASE,GAAkB7U,EAAG6D,GAC5B,OAAK7D,EAGEqC,EAAQ+D,KAAK0O,cAAgB1O,KAAK0O,aAAa9U,EAAEsQ,SAAWlK,KAAK0O,aAAaP,GAAiBtI,KAAKpI,GAAU,SAAW,cAAc7D,EAAEsQ,SAFvIjO,EAAQ+D,KAAK0O,cAAgB1O,KAAK0O,aAAe1O,KAAK0O,aAAyB,UAG1F,CACA,SAASC,GAAkBC,EAAWnR,EAAQE,GAC5C,IAAIrH,EACFuY,EACApL,EACAqL,EAAMF,EAAUG,oBAClB,IAAK/O,KAAKgP,aAKR,IAHAhP,KAAKgP,aAAe,GACpBhP,KAAKiP,iBAAmB,GACxBjP,KAAKkP,kBAAoB,GACpB5Y,EAAI,EAAGA,EAAI,KAAMA,EACpBmN,EAAMjG,EAAU,CAAC,IAAMlH,IACvB0J,KAAKkP,kBAAkB5Y,GAAK0J,KAAK2N,YAAYlK,EAAK,IAAIsL,oBACtD/O,KAAKiP,iBAAiB3Y,GAAK0J,KAAK4N,OAAOnK,EAAK,IAAIsL,oBAGpD,OAAIpR,EACa,QAAXF,GAEa,KADfoR,EAAK/B,GAAQlW,KAAKoJ,KAAKkP,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAK/B,GAAQlW,KAAKoJ,KAAKiP,iBAAkBH,IACtBD,EAAK,KAGX,QAAXpR,GAEU,KADZoR,EAAK/B,GAAQlW,KAAKoJ,KAAKkP,kBAAmBJ,MAK3B,KADfD,EAAK/B,GAAQlW,KAAKoJ,KAAKiP,iBAAkBH,IAFhCD,EAGe,MAGZ,KADZA,EAAK/B,GAAQlW,KAAKoJ,KAAKiP,iBAAkBH,MAK1B,KADfD,EAAK/B,GAAQlW,KAAKoJ,KAAKkP,kBAAmBJ,IAFjCD,EAGe,IAG9B,CACA,SAASM,GAAkBP,EAAWnR,EAAQE,GAC5C,IAAIrH,EAAGmN,EAAKmI,EACZ,GAAI5L,KAAKoP,kBACP,OAAOT,GAAkB/X,KAAKoJ,KAAM4O,EAAWnR,EAAQE,GAWzD,IATKqC,KAAKgP,eACRhP,KAAKgP,aAAe,GACpBhP,KAAKiP,iBAAmB,GACxBjP,KAAKkP,kBAAoB,IAMtB5Y,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAYvB,GAVAmN,EAAMjG,EAAU,CAAC,IAAMlH,IACnBqH,IAAWqC,KAAKiP,iBAAiB3Y,KACnC0J,KAAKiP,iBAAiB3Y,GAAK,IAAImM,OAAO,IAAMzC,KAAK4N,OAAOnK,EAAK,IAAI2B,QAAQ,IAAK,IAAM,IAAK,KACzFpF,KAAKkP,kBAAkB5Y,GAAK,IAAImM,OAAO,IAAMzC,KAAK2N,YAAYlK,EAAK,IAAI2B,QAAQ,IAAK,IAAM,IAAK,MAE5FzH,GAAWqC,KAAKgP,aAAa1Y,KAChCsV,EAAQ,IAAM5L,KAAK4N,OAAOnK,EAAK,IAAM,KAAOzD,KAAK2N,YAAYlK,EAAK,IAClEzD,KAAKgP,aAAa1Y,GAAK,IAAImM,OAAOmJ,EAAMxG,QAAQ,IAAK,IAAK,MAGxDzH,GAAqB,SAAXF,GAAqBuC,KAAKiP,iBAAiB3Y,GAAGuP,KAAK+I,GAC/D,OAAOtY,EACF,GAAIqH,GAAqB,QAAXF,GAAoBuC,KAAKkP,kBAAkB5Y,GAAGuP,KAAK+I,GACtE,OAAOtY,EACF,IAAKqH,GAAUqC,KAAKgP,aAAa1Y,GAAGuP,KAAK+I,GAC9C,OAAOtY,CAEX,CACF,CAIA,SAAS+Y,GAAS5L,EAAKlJ,GACrB,IAAI+U,EACJ,IAAK7L,EAAIxE,UAEP,OAAOwE,EAET,GAAqB,kBAAVlJ,EACT,GAAI,QAAQsL,KAAKtL,GACfA,EAAQoP,GAAMpP,QAId,IAAKuC,EAFLvC,EAAQkJ,EAAIwB,aAAa8I,YAAYxT,IAGnC,OAAOkJ,EAMb,OAFA6L,EAAapL,KAAKqL,IAAI9L,EAAI0G,OAAQC,GAAY3G,EAAI8F,OAAQhP,IAC1DkJ,EAAIlE,GAAG,OAASkE,EAAI1C,OAAS,MAAQ,IAAM,SAASxG,EAAO+U,GACpD7L,CACT,CACA,SAAS+L,GAAYjV,GACnB,OAAa,MAATA,GACF8U,GAASrP,KAAMzF,GACfqB,EAAMwF,aAAapB,MAAM,GAClBA,MAEA7F,GAAI6F,KAAM,QAErB,CACA,SAASyP,KACP,OAAOrF,GAAYpK,KAAKuJ,OAAQvJ,KAAKkK,QACvC,CACA,SAAS2D,GAAiB/B,GACxB,OAAI9L,KAAKoP,mBACF9S,EAAW0D,KAAM,iBACpB0P,GAAmB9Y,KAAKoJ,MAEtB8L,EACK9L,KAAK2P,wBAEL3P,KAAK4P,oBAGTtT,EAAW0D,KAAM,uBACpBA,KAAK4P,kBAAoBxB,IAEpBpO,KAAK2P,yBAA2B7D,EAAW9L,KAAK2P,wBAA0B3P,KAAK4P,kBAE1F,CACA,SAAS9B,GAAYhC,GACnB,OAAI9L,KAAKoP,mBACF9S,EAAW0D,KAAM,iBACpB0P,GAAmB9Y,KAAKoJ,MAEtB8L,EACK9L,KAAK6P,mBAEL7P,KAAK8P,eAGTxT,EAAW0D,KAAM,kBACpBA,KAAK8P,aAAezB,IAEfrO,KAAK6P,oBAAsB/D,EAAW9L,KAAK6P,mBAAqB7P,KAAK8P,aAEhF,CACA,SAASJ,KACP,SAASK,EAAUxT,EAAGC,GACpB,OAAOA,EAAEhG,OAAS+F,EAAE/F,MACtB,CACA,IAGEF,EACAmN,EAJEuM,EAAc,GAChBC,EAAa,GACbC,EAAc,GAGhB,IAAK5Z,EAAI,EAAGA,EAAI,GAAIA,IAElBmN,EAAMjG,EAAU,CAAC,IAAMlH,IACvB0Z,EAAYlZ,KAAKkJ,KAAK2N,YAAYlK,EAAK,KACvCwM,EAAWnZ,KAAKkJ,KAAK4N,OAAOnK,EAAK,KACjCyM,EAAYpZ,KAAKkJ,KAAK4N,OAAOnK,EAAK,KAClCyM,EAAYpZ,KAAKkJ,KAAK2N,YAAYlK,EAAK,KAOzC,IAHAuM,EAAY3G,KAAK0G,GACjBE,EAAW5G,KAAK0G,GAChBG,EAAY7G,KAAK0G,GACZzZ,EAAI,EAAGA,EAAI,GAAIA,IAClB0Z,EAAY1Z,GAAK2V,GAAY+D,EAAY1Z,IACzC2Z,EAAW3Z,GAAK2V,GAAYgE,EAAW3Z,IAEzC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAClB4Z,EAAY5Z,GAAK2V,GAAYiE,EAAY5Z,IAE3C0J,KAAK8P,aAAe,IAAIrN,OAAO,KAAOyN,EAAYnO,KAAK,KAAO,IAAK,KACnE/B,KAAK4P,kBAAoB5P,KAAK8P,aAC9B9P,KAAK6P,mBAAqB,IAAIpN,OAAO,KAAOwN,EAAWlO,KAAK,KAAO,IAAK,KACxE/B,KAAK2P,wBAA0B,IAAIlN,OAAO,KAAOuN,EAAYjO,KAAK,KAAO,IAAK,IAChF,CA2CA,SAASoO,GAAW5G,GAClB,OAAOD,GAAWC,GAAQ,IAAM,GAClC,CAzCA3E,EAAe,IAAK,EAAG,GAAG,WACxB,IAAI8C,EAAI1H,KAAKuJ,OACb,OAAO7B,GAAK,KAAO7D,EAAS6D,EAAG,GAAK,IAAMA,CAC5C,IACA9C,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAO5E,KAAKuJ,OAAS,GACvB,IACA3E,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1CwD,GAAa,OAAQ,KAIrBY,GAAgB,OAAQ,GAIxB2C,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,SAAUP,GAAWN,IACnC0B,GAAc,CAAC,QAAS,UAAWO,IACnCP,GAAc,QAAQ,SAAUtQ,EAAOoJ,GACrCA,EAAMyH,IAAyB,IAAjB7Q,EAAM1F,OAAeoF,EAAMwU,kBAAkBlU,GAASyN,GAAMzN,EAC5E,IACAsQ,GAAc,MAAM,SAAUtQ,EAAOoJ,GACnCA,EAAMyH,IAAQnR,EAAMwU,kBAAkBlU,EACxC,IACAsQ,GAAc,KAAK,SAAUtQ,EAAOoJ,GAClCA,EAAMyH,IAAQsD,SAASnU,EAAO,GAChC,IAUAN,EAAMwU,kBAAoB,SAAUlU,GAClC,OAAOyN,GAAMzN,IAAUyN,GAAMzN,GAAS,GAAK,KAAO,IACpD,EAIA,IAAIoU,GAAavG,GAAW,YAAY,GACxC,SAASwG,KACP,OAAOjH,GAAWtJ,KAAKuJ,OACzB,CACA,SAASiH,GAAW9I,EAAG9N,EAAGE,EAAGqN,EAAGK,EAAG/L,EAAGgV,GAGpC,IAAItG,EAWJ,OATIzC,EAAI,KAAOA,GAAK,GAElByC,EAAO,IAAInN,KAAK0K,EAAI,IAAK9N,EAAGE,EAAGqN,EAAGK,EAAG/L,EAAGgV,GACpC3G,SAASK,EAAKuG,gBAChBvG,EAAKwG,YAAYjJ,IAGnByC,EAAO,IAAInN,KAAK0K,EAAG9N,EAAGE,EAAGqN,EAAGK,EAAG/L,EAAGgV,GAE7BtG,CACT,CACA,SAASyG,GAAclJ,GACrB,IAAIyC,EAAMtI,EAaV,OAXI6F,EAAI,KAAOA,GAAK,IAClB7F,EAAO1F,MAAMzF,UAAU8E,MAAM5E,KAAKkF,YAE7B,GAAK4L,EAAI,IACdyC,EAAO,IAAInN,KAAKA,KAAK6T,IAAIhV,MAAM,KAAMgG,IACjCiI,SAASK,EAAK2G,mBAChB3G,EAAK4G,eAAerJ,IAGtByC,EAAO,IAAInN,KAAKA,KAAK6T,IAAIhV,MAAM,KAAMC,YAEhCqO,CACT,CAGA,SAAS6G,GAAgBzH,EAAM0H,EAAKC,GAClC,IAEEC,EAAM,EAAIF,EAAMC,EAGlB,QADW,EAAIN,GAAcrH,EAAM,EAAG4H,GAAKC,YAAcH,GAAO,EAChDE,EAAM,CACxB,CAGA,SAASE,GAAmB9H,EAAM+H,EAAMC,EAASN,EAAKC,GACpD,IAGEM,EACAC,EAFAC,EAAY,EAAI,GAAKJ,EAAO,IAFV,EAAIC,EAAUN,GAAO,EAC1BD,GAAgBzH,EAAM0H,EAAKC,GAc1C,OAVIQ,GAAa,EAEfD,EAAetB,GADfqB,EAAUjI,EAAO,GACoBmI,EAC5BA,EAAYvB,GAAW5G,IAChCiI,EAAUjI,EAAO,EACjBkI,EAAeC,EAAYvB,GAAW5G,KAEtCiI,EAAUjI,EACVkI,EAAeC,GAEV,CACLnI,KAAMiI,EACNE,UAAWD,EAEf,CACA,SAASE,GAAWlO,EAAKwN,EAAKC,GAC5B,IAEEU,EACAJ,EAHEK,EAAab,GAAgBvN,EAAI8F,OAAQ0H,EAAKC,GAChDI,EAAOpN,KAAKwF,OAAOjG,EAAIiO,YAAcG,EAAa,GAAK,GAAK,EAa9D,OAVIP,EAAO,EAETM,EAAUN,EAAOQ,GADjBN,EAAU/N,EAAI8F,OAAS,EACe0H,EAAKC,GAClCI,EAAOQ,GAAYrO,EAAI8F,OAAQ0H,EAAKC,IAC7CU,EAAUN,EAAOQ,GAAYrO,EAAI8F,OAAQ0H,EAAKC,GAC9CM,EAAU/N,EAAI8F,OAAS,IAEvBiI,EAAU/N,EAAI8F,OACdqI,EAAUN,GAEL,CACLA,KAAMM,EACNrI,KAAMiI,EAEV,CACA,SAASM,GAAYvI,EAAM0H,EAAKC,GAC9B,IAAIW,EAAab,GAAgBzH,EAAM0H,EAAKC,GAC1Ca,EAAiBf,GAAgBzH,EAAO,EAAG0H,EAAKC,GAClD,OAAQf,GAAW5G,GAAQsI,EAAaE,GAAkB,CAC5D,CA+BA,SAASC,GAAWvO,GAClB,OAAOkO,GAAWlO,EAAKzD,KAAKiS,MAAMhB,IAAKjR,KAAKiS,MAAMf,KAAKI,IACzD,CA7BA1M,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCwD,GAAa,OAAQ,KACrBA,GAAa,UAAW,KAIxBY,GAAgB,OAAQ,GACxBA,GAAgB,UAAW,GAI3B2C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B+B,GAAkB,CAAC,IAAK,KAAM,IAAK,OAAO,SAAUxQ,EAAOoV,EAAMnQ,EAAQ0D,GACvEyM,EAAKzM,EAAMN,OAAO,EAAG,IAAMoF,GAAMzN,EACnC,IASA,IAAIgW,GAAoB,CACtBjB,IAAK,EAELC,IAAK,GAGP,SAASiB,KACP,OAAOnS,KAAKiS,MAAMhB,GACpB,CACA,SAASmB,KACP,OAAOpS,KAAKiS,MAAMf,GACpB,CAIA,SAASmB,GAAWnW,GAClB,IAAIoV,EAAOtR,KAAKiF,aAAaqM,KAAKtR,MAClC,OAAgB,MAAT9D,EAAgBoV,EAAOtR,KAAKsS,IAAqB,GAAhBpW,EAAQoV,GAAW,IAC7D,CACA,SAASiB,GAAcrW,GACrB,IAAIoV,EAAOK,GAAW3R,KAAM,EAAG,GAAGsR,KAClC,OAAgB,MAATpV,EAAgBoV,EAAOtR,KAAKsS,IAAqB,GAAhBpW,EAAQoV,GAAW,IAC7D,CAyDA,SAASkB,GAAatW,EAAOwB,GAC3B,MAAqB,kBAAVxB,EACFA,EAEJoD,MAAMpD,GAIU,kBADrBA,EAAQwB,EAAO+U,cAAcvW,IAEpBA,EAEF,KANEmU,SAASnU,EAAO,GAO3B,CACA,SAASwW,GAAgBxW,EAAOwB,GAC9B,MAAqB,kBAAVxB,EACFwB,EAAO+U,cAAcvW,GAAS,GAAK,EAErCoD,MAAMpD,GAAS,KAAOA,CAC/B,CAGA,SAASyW,GAAcC,EAAI7X,GACzB,OAAO6X,EAAGpX,MAAMT,EAAG,GAAG8X,OAAOD,EAAGpX,MAAM,EAAGT,GAC3C,CA5EA6J,EAAe,IAAK,EAAG,KAAM,OAC7BA,EAAe,KAAM,EAAG,GAAG,SAAUnH,GACnC,OAAOuC,KAAKiF,aAAa6N,YAAY9S,KAAMvC,EAC7C,IACAmH,EAAe,MAAO,EAAG,GAAG,SAAUnH,GACpC,OAAOuC,KAAKiF,aAAa8N,cAAc/S,KAAMvC,EAC/C,IACAmH,EAAe,OAAQ,EAAG,GAAG,SAAUnH,GACrC,OAAOuC,KAAKiF,aAAa+N,SAAShT,KAAMvC,EAC1C,IACAmH,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BwD,GAAa,MAAO,KACpBA,GAAa,UAAW,KACxBA,GAAa,aAAc,KAG3BY,GAAgB,MAAO,IACvBA,GAAgB,UAAW,IAC3BA,GAAgB,aAAc,IAI9B2C,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,MAAM,SAAUG,EAAUpO,GACtC,OAAOA,EAAOuV,iBAAiBnH,EACjC,IACAH,GAAc,OAAO,SAAUG,EAAUpO,GACvC,OAAOA,EAAOwV,mBAAmBpH,EACnC,IACAH,GAAc,QAAQ,SAAUG,EAAUpO,GACxC,OAAOA,EAAOyV,cAAcrH,EAC9B,IACAY,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAUxQ,EAAOoV,EAAMnQ,EAAQ0D,GACtE,IAAI0M,EAAUpQ,EAAOF,QAAQwR,cAAcvW,EAAO2I,EAAO1D,EAAOzB,SAEjD,MAAX6R,EACFD,EAAKxX,EAAIyX,EAETxS,EAAgBoC,GAAQ1B,eAAiBvD,CAE7C,IACAwQ,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAUxQ,EAAOoV,EAAMnQ,EAAQ0D,GAChEyM,EAAKzM,GAAS8E,GAAMzN,EACtB,IA4BA,IAAIkX,GAAwB,2DAA2DnF,MAAM,KAC3FoF,GAA6B,8BAA8BpF,MAAM,KACjEqF,GAA2B,uBAAuBrF,MAAM,KACxDsF,GAAuB7H,GACvB8H,GAA4B9H,GAC5B+H,GAA0B/H,GAC5B,SAASgI,GAAe9Z,EAAG6D,GACzB,IAAIuV,EAAW/W,EAAQ+D,KAAK2T,WAAa3T,KAAK2T,UAAY3T,KAAK2T,UAAU/Z,IAAW,IAANA,GAAcoG,KAAK2T,UAAUnF,SAAS3I,KAAKpI,GAAU,SAAW,cAC9I,OAAa,IAAN7D,EAAa+Y,GAAcK,EAAUhT,KAAKiS,MAAMhB,KAAOrX,EAAIoZ,EAASpZ,EAAEga,OAASZ,CACxF,CACA,SAASa,GAAoBja,GAC3B,OAAa,IAANA,EAAa+Y,GAAc3S,KAAK8T,eAAgB9T,KAAKiS,MAAMhB,KAAOrX,EAAIoG,KAAK8T,eAAela,EAAEga,OAAS5T,KAAK8T,cACnH,CACA,SAASC,GAAkBna,GACzB,OAAa,IAANA,EAAa+Y,GAAc3S,KAAKgU,aAAchU,KAAKiS,MAAMhB,KAAOrX,EAAIoG,KAAKgU,aAAapa,EAAEga,OAAS5T,KAAKgU,YAC/G,CACA,SAASC,GAAoBC,EAAazW,EAAQE,GAChD,IAAIrH,EACFuY,EACApL,EACAqL,EAAMoF,EAAYnF,oBACpB,IAAK/O,KAAKmU,eAIR,IAHAnU,KAAKmU,eAAiB,GACtBnU,KAAKoU,oBAAsB,GAC3BpU,KAAKqU,kBAAoB,GACpB/d,EAAI,EAAGA,EAAI,IAAKA,EACnBmN,EAAMjG,EAAU,CAAC,IAAM,IAAIoW,IAAItd,GAC/B0J,KAAKqU,kBAAkB/d,GAAK0J,KAAK8S,YAAYrP,EAAK,IAAIsL,oBACtD/O,KAAKoU,oBAAoB9d,GAAK0J,KAAK+S,cAActP,EAAK,IAAIsL,oBAC1D/O,KAAKmU,eAAe7d,GAAK0J,KAAKgT,SAASvP,EAAK,IAAIsL,oBAGpD,OAAIpR,EACa,SAAXF,GAEa,KADfoR,EAAK/B,GAAQlW,KAAKoJ,KAAKmU,eAAgBrF,IACpBD,EAAK,KACJ,QAAXpR,GAEM,KADfoR,EAAK/B,GAAQlW,KAAKoJ,KAAKoU,oBAAqBtF,IACzBD,EAAK,MAGT,KADfA,EAAK/B,GAAQlW,KAAKoJ,KAAKqU,kBAAmBvF,IACvBD,EAAK,KAGX,SAAXpR,GAEU,KADZoR,EAAK/B,GAAQlW,KAAKoJ,KAAKmU,eAAgBrF,MAK3B,KADZD,EAAK/B,GAAQlW,KAAKoJ,KAAKoU,oBAAqBtF,MAK7B,KADfD,EAAK/B,GAAQlW,KAAKoJ,KAAKqU,kBAAmBvF,IANjCD,EAOe,KACJ,QAAXpR,GAEG,KADZoR,EAAK/B,GAAQlW,KAAKoJ,KAAKoU,oBAAqBtF,MAKhC,KADZD,EAAK/B,GAAQlW,KAAKoJ,KAAKmU,eAAgBrF,MAKxB,KADfD,EAAK/B,GAAQlW,KAAKoJ,KAAKqU,kBAAmBvF,IANjCD,EAOe,MAGZ,KADZA,EAAK/B,GAAQlW,KAAKoJ,KAAKqU,kBAAmBvF,MAK9B,KADZD,EAAK/B,GAAQlW,KAAKoJ,KAAKmU,eAAgBrF,MAKxB,KADfD,EAAK/B,GAAQlW,KAAKoJ,KAAKoU,oBAAqBtF,IANnCD,EAOe,IAG9B,CACA,SAASyF,GAAoBJ,EAAazW,EAAQE,GAChD,IAAIrH,EAAGmN,EAAKmI,EACZ,GAAI5L,KAAKuU,oBACP,OAAON,GAAoBrd,KAAKoJ,KAAMkU,EAAazW,EAAQE,GAQ7D,IANKqC,KAAKmU,iBACRnU,KAAKmU,eAAiB,GACtBnU,KAAKqU,kBAAoB,GACzBrU,KAAKoU,oBAAsB,GAC3BpU,KAAKwU,mBAAqB,IAEvBle,EAAI,EAAGA,EAAI,EAAGA,IAAK,CActB,GAXAmN,EAAMjG,EAAU,CAAC,IAAM,IAAIoW,IAAItd,GAC3BqH,IAAWqC,KAAKwU,mBAAmBle,KACrC0J,KAAKwU,mBAAmBle,GAAK,IAAImM,OAAO,IAAMzC,KAAKgT,SAASvP,EAAK,IAAI2B,QAAQ,IAAK,QAAU,IAAK,KACjGpF,KAAKoU,oBAAoB9d,GAAK,IAAImM,OAAO,IAAMzC,KAAK+S,cAActP,EAAK,IAAI2B,QAAQ,IAAK,QAAU,IAAK,KACvGpF,KAAKqU,kBAAkB/d,GAAK,IAAImM,OAAO,IAAMzC,KAAK8S,YAAYrP,EAAK,IAAI2B,QAAQ,IAAK,QAAU,IAAK,MAEhGpF,KAAKmU,eAAe7d,KACvBsV,EAAQ,IAAM5L,KAAKgT,SAASvP,EAAK,IAAM,KAAOzD,KAAK+S,cAActP,EAAK,IAAM,KAAOzD,KAAK8S,YAAYrP,EAAK,IACzGzD,KAAKmU,eAAe7d,GAAK,IAAImM,OAAOmJ,EAAMxG,QAAQ,IAAK,IAAK,MAG1DzH,GAAqB,SAAXF,GAAqBuC,KAAKwU,mBAAmBle,GAAGuP,KAAKqO,GACjE,OAAO5d,EACF,GAAIqH,GAAqB,QAAXF,GAAoBuC,KAAKoU,oBAAoB9d,GAAGuP,KAAKqO,GACxE,OAAO5d,EACF,GAAIqH,GAAqB,OAAXF,GAAmBuC,KAAKqU,kBAAkB/d,GAAGuP,KAAKqO,GACrE,OAAO5d,EACF,IAAKqH,GAAUqC,KAAKmU,eAAe7d,GAAGuP,KAAKqO,GAChD,OAAO5d,CAEX,CACF,CAIA,SAASme,GAAgBvY,GACvB,IAAK8D,KAAKf,UACR,OAAgB,MAAT/C,EAAgB8D,KAAOF,IAEhC,IAAI8T,EAAM5T,KAAKe,OAASf,KAAKT,GAAG6R,YAAcpR,KAAKT,GAAGmV,SACtD,OAAa,MAATxY,GACFA,EAAQsW,GAAatW,EAAO8D,KAAKiF,cAC1BjF,KAAKsS,IAAIpW,EAAQ0X,EAAK,MAEtBA,CAEX,CACA,SAASe,GAAsBzY,GAC7B,IAAK8D,KAAKf,UACR,OAAgB,MAAT/C,EAAgB8D,KAAOF,IAEhC,IAAIyR,GAAWvR,KAAK4T,MAAQ,EAAI5T,KAAKiF,aAAagN,MAAMhB,KAAO,EAC/D,OAAgB,MAAT/U,EAAgBqV,EAAUvR,KAAKsS,IAAIpW,EAAQqV,EAAS,IAC7D,CACA,SAASqD,GAAmB1Y,GAC1B,IAAK8D,KAAKf,UACR,OAAgB,MAAT/C,EAAgB8D,KAAOF,IAOhC,GAAa,MAAT5D,EAAe,CACjB,IAAIqV,EAAUmB,GAAgBxW,EAAO8D,KAAKiF,cAC1C,OAAOjF,KAAK4T,IAAI5T,KAAK4T,MAAQ,EAAIrC,EAAUA,EAAU,EACvD,CACE,OAAOvR,KAAK4T,OAAS,CAEzB,CACA,SAAST,GAAcrH,GACrB,OAAI9L,KAAKuU,qBACFjY,EAAW0D,KAAM,mBACpB6U,GAAqBje,KAAKoJ,MAExB8L,EACK9L,KAAK8U,qBAEL9U,KAAK+U,iBAGTzY,EAAW0D,KAAM,oBACpBA,KAAK+U,eAAiBxB,IAEjBvT,KAAK8U,sBAAwBhJ,EAAW9L,KAAK8U,qBAAuB9U,KAAK+U,eAEpF,CACA,SAAS7B,GAAmBpH,GAC1B,OAAI9L,KAAKuU,qBACFjY,EAAW0D,KAAM,mBACpB6U,GAAqBje,KAAKoJ,MAExB8L,EACK9L,KAAKgV,0BAELhV,KAAKiV,sBAGT3Y,EAAW0D,KAAM,yBACpBA,KAAKiV,oBAAsBzB,IAEtBxT,KAAKgV,2BAA6BlJ,EAAW9L,KAAKgV,0BAA4BhV,KAAKiV,oBAE9F,CACA,SAAShC,GAAiBnH,GACxB,OAAI9L,KAAKuU,qBACFjY,EAAW0D,KAAM,mBACpB6U,GAAqBje,KAAKoJ,MAExB8L,EACK9L,KAAKkV,wBAELlV,KAAKmV,oBAGT7Y,EAAW0D,KAAM,uBACpBA,KAAKmV,kBAAoB1B,IAEpBzT,KAAKkV,yBAA2BpJ,EAAW9L,KAAKkV,wBAA0BlV,KAAKmV,kBAE1F,CACA,SAASN,KACP,SAAS9E,EAAUxT,EAAGC,GACpB,OAAOA,EAAEhG,OAAS+F,EAAE/F,MACtB,CACA,IAIEF,EACAmN,EACA2R,EACAC,EACAC,EAREC,EAAY,GACdvF,EAAc,GACdC,EAAa,GACbC,EAAc,GAMhB,IAAK5Z,EAAI,EAAGA,EAAI,EAAGA,IAEjBmN,EAAMjG,EAAU,CAAC,IAAM,IAAIoW,IAAItd,GAC/B8e,EAAOnJ,GAAYjM,KAAK8S,YAAYrP,EAAK,KACzC4R,EAASpJ,GAAYjM,KAAK+S,cAActP,EAAK,KAC7C6R,EAAQrJ,GAAYjM,KAAKgT,SAASvP,EAAK,KACvC8R,EAAUze,KAAKse,GACfpF,EAAYlZ,KAAKue,GACjBpF,EAAWnZ,KAAKwe,GAChBpF,EAAYpZ,KAAKse,GACjBlF,EAAYpZ,KAAKue,GACjBnF,EAAYpZ,KAAKwe,GAInBC,EAAUlM,KAAK0G,GACfC,EAAY3G,KAAK0G,GACjBE,EAAW5G,KAAK0G,GAChBG,EAAY7G,KAAK0G,GACjB/P,KAAK+U,eAAiB,IAAItS,OAAO,KAAOyN,EAAYnO,KAAK,KAAO,IAAK,KACrE/B,KAAKiV,oBAAsBjV,KAAK+U,eAChC/U,KAAKmV,kBAAoBnV,KAAK+U,eAC9B/U,KAAK8U,qBAAuB,IAAIrS,OAAO,KAAOwN,EAAWlO,KAAK,KAAO,IAAK,KAC1E/B,KAAKgV,0BAA4B,IAAIvS,OAAO,KAAOuN,EAAYjO,KAAK,KAAO,IAAK,KAChF/B,KAAKkV,wBAA0B,IAAIzS,OAAO,KAAO8S,EAAUxT,KAAK,KAAO,IAAK,IAC9E,CAIA,SAASyT,KACP,OAAOxV,KAAKyV,QAAU,IAAM,EAC9B,CACA,SAASC,KACP,OAAO1V,KAAKyV,SAAW,EACzB,CAgBA,SAAS7W,GAASiG,EAAO8Q,GACvB/Q,EAAeC,EAAO,EAAG,GAAG,WAC1B,OAAO7E,KAAKiF,aAAarG,SAASoB,KAAKyV,QAASzV,KAAK4V,UAAWD,EAClE,GACF,CAaA,SAASE,GAAc/J,EAAUpO,GAC/B,OAAOA,EAAOoY,cAChB,CAuDA,SAASC,GAAW7Z,GAGlB,MAAgD,OAAxCA,EAAQ,IAAIsM,cAAcwN,OAAO,EAC3C,CA7FApR,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG4Q,IAClC5Q,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG8Q,IAClC9Q,EAAe,MAAO,EAAG,GAAG,WAC1B,MAAO,GAAK4Q,GAAQ3Z,MAAMmE,MAAQ6D,EAAS7D,KAAK4V,UAAW,EAC7D,IACAhR,EAAe,QAAS,EAAG,GAAG,WAC5B,MAAO,GAAK4Q,GAAQ3Z,MAAMmE,MAAQ6D,EAAS7D,KAAK4V,UAAW,GAAK/R,EAAS7D,KAAKiW,UAAW,EAC3F,IACArR,EAAe,MAAO,EAAG,GAAG,WAC1B,MAAO,GAAK5E,KAAKyV,QAAU5R,EAAS7D,KAAK4V,UAAW,EACtD,IACAhR,EAAe,QAAS,EAAG,GAAG,WAC5B,MAAO,GAAK5E,KAAKyV,QAAU5R,EAAS7D,KAAK4V,UAAW,GAAK/R,EAAS7D,KAAKiW,UAAW,EACpF,IAMArX,GAAS,KAAK,GACdA,GAAS,KAAK,GAIdwJ,GAAa,OAAQ,KAGrBY,GAAgB,OAAQ,IAOxB2C,GAAc,IAAKkK,IACnBlK,GAAc,IAAKkK,IACnBlK,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,MAAOX,IACrBW,GAAc,QAASV,IACvBU,GAAc,MAAOX,IACrBW,GAAc,QAASV,IACvBuB,GAAc,CAAC,IAAK,MAAOU,IAC3BV,GAAc,CAAC,IAAK,OAAO,SAAUtQ,EAAOoJ,EAAOnE,GACjD,IAAI+U,EAASvM,GAAMzN,GACnBoJ,EAAM4H,IAAmB,KAAXgJ,EAAgB,EAAIA,CACpC,IACA1J,GAAc,CAAC,IAAK,MAAM,SAAUtQ,EAAOoJ,EAAOnE,GAChDA,EAAOgV,MAAQhV,EAAOF,QAAQmV,KAAKla,GACnCiF,EAAOkV,UAAYna,CACrB,IACAsQ,GAAc,CAAC,IAAK,OAAO,SAAUtQ,EAAOoJ,EAAOnE,GACjDmE,EAAM4H,IAAQvD,GAAMzN,GACpB6C,EAAgBoC,GAAQxB,SAAU,CACpC,IACA6M,GAAc,OAAO,SAAUtQ,EAAOoJ,EAAOnE,GAC3C,IAAImV,EAAMpa,EAAM1F,OAAS,EACzB8O,EAAM4H,IAAQvD,GAAMzN,EAAMqI,OAAO,EAAG+R,IACpChR,EAAM6H,IAAUxD,GAAMzN,EAAMqI,OAAO+R,IACnCvX,EAAgBoC,GAAQxB,SAAU,CACpC,IACA6M,GAAc,SAAS,SAAUtQ,EAAOoJ,EAAOnE,GAC7C,IAAIoV,EAAOra,EAAM1F,OAAS,EACxBggB,EAAOta,EAAM1F,OAAS,EACxB8O,EAAM4H,IAAQvD,GAAMzN,EAAMqI,OAAO,EAAGgS,IACpCjR,EAAM6H,IAAUxD,GAAMzN,EAAMqI,OAAOgS,EAAM,IACzCjR,EAAM8H,IAAUzD,GAAMzN,EAAMqI,OAAOiS,IACnCzX,EAAgBoC,GAAQxB,SAAU,CACpC,IACA6M,GAAc,OAAO,SAAUtQ,EAAOoJ,EAAOnE,GAC3C,IAAImV,EAAMpa,EAAM1F,OAAS,EACzB8O,EAAM4H,IAAQvD,GAAMzN,EAAMqI,OAAO,EAAG+R,IACpChR,EAAM6H,IAAUxD,GAAMzN,EAAMqI,OAAO+R,GACrC,IACA9J,GAAc,SAAS,SAAUtQ,EAAOoJ,EAAOnE,GAC7C,IAAIoV,EAAOra,EAAM1F,OAAS,EACxBggB,EAAOta,EAAM1F,OAAS,EACxB8O,EAAM4H,IAAQvD,GAAMzN,EAAMqI,OAAO,EAAGgS,IACpCjR,EAAM6H,IAAUxD,GAAMzN,EAAMqI,OAAOgS,EAAM,IACzCjR,EAAM8H,IAAUzD,GAAMzN,EAAMqI,OAAOiS,GACrC,IASA,IAAIC,GAA6B,gBAK/BC,GAAa3M,GAAW,SAAS,GACnC,SAAS4M,GAAelB,EAAOG,EAASgB,GACtC,OAAInB,EAAQ,GACHmB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAE5B,CACA,IAmBEC,GAnBEC,GAAa,CACftT,SAAUP,EACV0C,eAAgBG,EAChBL,YAAagB,EACb1B,QAAS4B,EACToQ,uBAAwBnQ,EACxBgB,aAAcd,EACd8G,OAAQI,GACRL,YAAaO,GACboD,KAAMY,GACNc,SAAUI,GACVN,YAAaQ,GACbP,cAAeM,GACf2D,cAAeP,IAIbQ,GAAU,CAAC,EACbC,GAAiB,CAAC,EAEpB,SAASC,GAAaC,EAAMC,GAC1B,IAAI/gB,EACFghB,EAAOpT,KAAKqL,IAAI6H,EAAK5gB,OAAQ6gB,EAAK7gB,QACpC,IAAKF,EAAI,EAAGA,EAAIghB,EAAMhhB,GAAK,EACzB,GAAI8gB,EAAK9gB,KAAO+gB,EAAK/gB,GACnB,OAAOA,EAGX,OAAOghB,CACT,CACA,SAASC,GAAgB1c,GACvB,OAAOA,EAAMA,EAAI2N,cAAcpD,QAAQ,IAAK,KAAOvK,CACrD,CAKA,SAAS2c,GAAaC,GAMpB,IALA,IACEC,EACAC,EACAja,EACAuQ,EAJE3X,EAAI,EAKDA,EAAImhB,EAAMjhB,QAAQ,CAKvB,IAHAkhB,GADAzJ,EAAQsJ,GAAgBE,EAAMnhB,IAAI2X,MAAM,MAC9BzX,OAEVmhB,GADAA,EAAOJ,GAAgBE,EAAMnhB,EAAI,KACnBqhB,EAAK1J,MAAM,KAAO,KACzByJ,EAAI,GAAG,CAEZ,GADAha,EAASka,GAAW3J,EAAMzS,MAAM,EAAGkc,GAAG3V,KAAK,MAEzC,OAAOrE,EAET,GAAIia,GAAQA,EAAKnhB,QAAUkhB,GAAKP,GAAalJ,EAAO0J,IAASD,EAAI,EAE/D,MAEFA,GACF,CACAphB,GACF,CACA,OAAOugB,EACT,CACA,SAASgB,GAAiBxe,GAExB,OAAoC,MAA7BA,EAAK8L,MAAM,cACpB,CACA,SAASyS,GAAWve,GAClB,IAAIye,EAAY,KAGhB,QAAsBve,IAAlB0d,GAAQ5d,IAAyC,qBAAXhC,GAA0BA,GAAUA,EAAOD,SAAWygB,GAAiBxe,GAC/G,IACEye,EAAYjB,GAAakB,MAEzB,OAAe,KAAc1e,GAC7B2e,GAAmBF,EACrB,CAAE,MAAOvgB,GAGP0f,GAAQ5d,GAAQ,IAClB,CAGF,OAAO4d,GAAQ5d,EACjB,CAKA,SAAS2e,GAAmBnd,EAAKod,GAC/B,IAAIhiB,EAiBJ,OAhBI4E,KAEA5E,EADE4G,EAAYob,GACPC,GAAUrd,GAEVsd,GAAatd,EAAKod,IAIzBpB,GAAe5gB,EAEQ,qBAAZmF,SAA2BA,QAAQkG,MAE5ClG,QAAQkG,KAAK,UAAYzG,EAAM,2CAI9Bgc,GAAakB,KACtB,CACA,SAASI,GAAa9e,EAAM8H,GAC1B,GAAe,OAAXA,EAAiB,CACnB,IAAIzD,EACFoF,EAAegU,GAEjB,GADA3V,EAAOiX,KAAO/e,EACO,MAAjB4d,GAAQ5d,GACV8I,EAAgB,uBAAwB,2OACxCW,EAAemU,GAAQ5d,GAAMkJ,aACxB,GAA2B,MAAvBpB,EAAOkX,aAChB,GAAoC,MAAhCpB,GAAQ9V,EAAOkX,cACjBvV,EAAemU,GAAQ9V,EAAOkX,cAAc9V,YACvC,CAEL,GAAc,OADd7E,EAASka,GAAWzW,EAAOkX,eAWzB,OAPKnB,GAAe/V,EAAOkX,gBACzBnB,GAAe/V,EAAOkX,cAAgB,IAExCnB,GAAe/V,EAAOkX,cAAcvhB,KAAK,CACvCuC,KAAMA,EACN8H,OAAQA,IAEH,KATP2B,EAAepF,EAAO6E,OAW1B,CAaF,OAXA0U,GAAQ5d,GAAQ,IAAI2J,EAAOH,EAAaC,EAAc3B,IAClD+V,GAAe7d,IACjB6d,GAAe7d,GAAMif,SAAQ,SAAU7K,GACrC0K,GAAa1K,EAAEpU,KAAMoU,EAAEtM,OACzB,IAMF6W,GAAmB3e,GACZ4d,GAAQ5d,EACjB,CAGE,cADO4d,GAAQ5d,GACR,IAEX,CACA,SAASkf,GAAalf,EAAM8H,GAC1B,GAAc,MAAVA,EAAgB,CAClB,IAAIzD,EACF8a,EACA1V,EAAegU,GACI,MAAjBG,GAAQ5d,IAA+C,MAA9B4d,GAAQ5d,GAAMgf,aAEzCpB,GAAQ5d,GAAMiJ,IAAIO,EAAaoU,GAAQ5d,GAAMkJ,QAASpB,KAIrC,OADjBqX,EAAYZ,GAAWve,MAErByJ,EAAe0V,EAAUjW,SAE3BpB,EAAS0B,EAAaC,EAAc3B,GACnB,MAAbqX,IAIFrX,EAAOiX,KAAO/e,IAEhBqE,EAAS,IAAIsF,EAAO7B,IACbkX,aAAepB,GAAQ5d,GAC9B4d,GAAQ5d,GAAQqE,GAIlBsa,GAAmB3e,EACrB,MAEuB,MAAjB4d,GAAQ5d,KACwB,MAA9B4d,GAAQ5d,GAAMgf,cAChBpB,GAAQ5d,GAAQ4d,GAAQ5d,GAAMgf,aAC1Bhf,IAAS2e,MACXA,GAAmB3e,IAEK,MAAjB4d,GAAQ5d,WACV4d,GAAQ5d,IAIrB,OAAO4d,GAAQ5d,EACjB,CAGA,SAAS6e,GAAUrd,GACjB,IAAI6C,EAIJ,GAHI7C,GAAOA,EAAIoG,SAAWpG,EAAIoG,QAAQ8W,QACpCld,EAAMA,EAAIoG,QAAQ8W,QAEfld,EACH,OAAOgc,GAET,IAAK5a,EAAQpB,GAAM,CAGjB,GADA6C,EAASka,GAAW/c,GAElB,OAAO6C,EAET7C,EAAM,CAACA,EACT,CACA,OAAO2c,GAAa3c,EACtB,CACA,SAAS4d,KACP,OAAOxW,EAAKgV,GACd,CACA,SAASyB,GAAc9e,GACrB,IAAIsE,EACF3B,EAAI3C,EAAEiT,GAcR,OAbItQ,IAAsC,IAAjCwC,EAAgBnF,GAAGsE,WAC1BA,EAAW3B,EAAEyQ,IAAS,GAAKzQ,EAAEyQ,IAAS,GAAKA,GAAQzQ,EAAE0Q,IAAQ,GAAK1Q,EAAE0Q,IAAQ7C,GAAY7N,EAAEwQ,IAAOxQ,EAAEyQ,KAAUC,GAAO1Q,EAAE2Q,IAAQ,GAAK3Q,EAAE2Q,IAAQ,IAAkB,KAAZ3Q,EAAE2Q,MAA+B,IAAd3Q,EAAE4Q,KAA+B,IAAd5Q,EAAE6Q,KAAoC,IAAnB7Q,EAAE8Q,KAAsBH,GAAO3Q,EAAE4Q,IAAU,GAAK5Q,EAAE4Q,IAAU,GAAKA,GAAS5Q,EAAE6Q,IAAU,GAAK7Q,EAAE6Q,IAAU,GAAKA,GAAS7Q,EAAE8Q,IAAe,GAAK9Q,EAAE8Q,IAAe,IAAMA,IAAe,EACzXtO,EAAgBnF,GAAG+e,qBAAuBza,EAAW6O,IAAQ7O,EAAW+O,MAC1E/O,EAAW+O,IAETlO,EAAgBnF,GAAGgf,iBAAgC,IAAd1a,IACvCA,EAAWoP,IAETvO,EAAgBnF,GAAGif,mBAAkC,IAAd3a,IACzCA,EAAWqP,IAEbxO,EAAgBnF,GAAGsE,SAAWA,GAEzBtE,CACT,CAIA,IAAIkf,GAAmB,iJACrBC,GAAgB,6IAChBC,GAAU,wBACVC,GAAW,CAAC,CAAC,eAAgB,uBAAwB,CAAC,aAAc,mBAAoB,CAAC,eAAgB,kBAAmB,CAAC,aAAc,eAAe,GAAQ,CAAC,WAAY,eAAgB,CAAC,UAAW,cAAc,GAAQ,CAAC,aAAc,cAAe,CAAC,WAAY,SAAU,CAAC,aAAc,eAAgB,CAAC,YAAa,eAAe,GAAQ,CAAC,UAAW,SAAU,CAAC,SAAU,SAAS,GAAQ,CAAC,OAAQ,SAAS,IAE9ZC,GAAW,CAAC,CAAC,gBAAiB,uBAAwB,CAAC,gBAAiB,sBAAuB,CAAC,WAAY,kBAAmB,CAAC,QAAS,aAAc,CAAC,cAAe,qBAAsB,CAAC,cAAe,oBAAqB,CAAC,SAAU,gBAAiB,CAAC,OAAQ,YAAa,CAAC,KAAM,SAC3RC,GAAkB,qBAElBta,GAAU,0LACVua,GAAa,CACXC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIT,SAASC,GAAc5Y,GACrB,IAAI7K,EACFgB,EAGA0iB,EACAC,EACAC,EACAC,EALArS,EAAS3G,EAAOR,GAChBwE,EAAQ2T,GAAiBsB,KAAKtS,IAAWiR,GAAcqB,KAAKtS,GAK5DuS,EAAcpB,GAASziB,OACvB8jB,EAAcpB,GAAS1iB,OACzB,GAAI2O,EAAO,CAET,IADApG,EAAgBoC,GAAQ1C,KAAM,EACzBnI,EAAI,EAAGgB,EAAI+iB,EAAa/jB,EAAIgB,EAAGhB,IAClC,GAAI2iB,GAAS3iB,GAAG,GAAG8jB,KAAKjV,EAAM,IAAK,CACjC8U,EAAahB,GAAS3iB,GAAG,GACzB0jB,GAA+B,IAAnBf,GAAS3iB,GAAG,GACxB,KACF,CAEF,GAAkB,MAAd2jB,EAEF,YADA9Y,EAAOjC,UAAW,GAGpB,GAAIiG,EAAM,GAAI,CACZ,IAAK7O,EAAI,EAAGgB,EAAIgjB,EAAahkB,EAAIgB,EAAGhB,IAClC,GAAI4iB,GAAS5iB,GAAG,GAAG8jB,KAAKjV,EAAM,IAAK,CAEjC+U,GAAc/U,EAAM,IAAM,KAAO+T,GAAS5iB,GAAG,GAC7C,KACF,CAEF,GAAkB,MAAd4jB,EAEF,YADA/Y,EAAOjC,UAAW,EAGtB,CACA,IAAK8a,GAA2B,MAAdE,EAEhB,YADA/Y,EAAOjC,UAAW,GAGpB,GAAIiG,EAAM,GAAI,CACZ,IAAI6T,GAAQoB,KAAKjV,EAAM,IAIrB,YADAhE,EAAOjC,UAAW,GAFlBib,EAAW,GAKf,CACAhZ,EAAOP,GAAKqZ,GAAcC,GAAc,KAAOC,GAAY,IAC3DI,GAA0BpZ,EAC5B,MACEA,EAAOjC,UAAW,CAEtB,CACA,SAASsb,GAA0BC,EAASC,EAAUC,EAAQC,EAASC,EAAWC,GAChF,IAAIC,EAAS,CAACC,GAAeP,GAAUvM,GAAyBpB,QAAQ4N,GAAWrK,SAASsK,EAAQ,IAAKtK,SAASuK,EAAS,IAAKvK,SAASwK,EAAW,KAIpJ,OAHIC,GACFC,EAAOjkB,KAAKuZ,SAASyK,EAAW,KAE3BC,CACT,CACA,SAASC,GAAeP,GACtB,IAAIlR,EAAO8G,SAASoK,EAAS,IAC7B,OAAIlR,GAAQ,GACH,IAAOA,EACLA,GAAQ,IACV,KAAOA,EAETA,CACT,CACA,SAAS0R,GAAkBxf,GAEzB,OAAOA,EAAE2J,QAAQ,qBAAsB,KAAKA,QAAQ,WAAY,KAAKA,QAAQ,SAAU,IAAIA,QAAQ,SAAU,GAC/G,CACA,SAAS8V,GAAaC,EAAYC,EAAaja,GAC7C,OAAIga,GAEoB9H,GAA2BvG,QAAQqO,KACvC,IAAIne,KAAKoe,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAI1G,WAEzE3V,EAAgBoC,GAAQrC,iBAAkB,EAC1CqC,EAAOjC,UAAW,GACX,EAIb,CACA,SAASmc,GAAgBC,EAAWC,EAAgBC,GAClD,GAAIF,EACF,OAAOlC,GAAWkC,GACb,GAAIC,EAET,OAAO,EAEP,IAAIE,EAAKpL,SAASmL,EAAW,IAC3B5hB,EAAI6hB,EAAK,IAEX,OADOA,EAAK7hB,GAAK,IACN,GAAKA,CAEpB,CAGA,SAAS8hB,GAAkBva,GACzB,IACEwa,EADExW,EAAQtG,GAAQub,KAAKa,GAAkB9Z,EAAOR,KAElD,GAAIwE,EAAO,CAET,GADAwW,EAAcnB,GAA0BrV,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAC3F+V,GAAa/V,EAAM,GAAIwW,EAAaxa,GACvC,OAEFA,EAAO0L,GAAK8O,EACZxa,EAAOL,KAAOua,GAAgBlW,EAAM,GAAIA,EAAM,GAAIA,EAAM,KACxDhE,EAAO5B,GAAKqR,GAAc/U,MAAM,KAAMsF,EAAO0L,IAC7C1L,EAAO5B,GAAGqc,cAAcza,EAAO5B,GAAGsc,gBAAkB1a,EAAOL,MAC3D/B,EAAgBoC,GAAQtC,SAAU,CACpC,MACEsC,EAAOjC,UAAW,CAEtB,CAGA,SAAS4c,GAAiB3a,GACxB,IAAI+K,EAAUiN,GAAgBiB,KAAKjZ,EAAOR,IAC1B,OAAZuL,GAIJ6N,GAAc5Y,IACU,IAApBA,EAAOjC,kBACFiC,EAAOjC,SAIhBwc,GAAkBva,IACM,IAApBA,EAAOjC,kBACFiC,EAAOjC,SAIZiC,EAAOzB,QACTyB,EAAOjC,UAAW,EAGlBtD,EAAMmgB,wBAAwB5a,MAnB9BA,EAAO5B,GAAK,IAAIvC,MAAMkP,EAAQ,GAqBlC,CAMA,SAAS8P,GAASzf,EAAGC,EAAG3C,GACtB,OAAS,MAAL0C,EACKA,EAEA,MAALC,EACKA,EAEF3C,CACT,CACA,SAASoiB,GAAiB9a,GAExB,IAAI+a,EAAW,IAAIlf,KAAKpB,EAAM8H,OAC9B,OAAIvC,EAAOgb,QACF,CAACD,EAASpL,iBAAkBoL,EAASE,cAAeF,EAASG,cAE/D,CAACH,EAASxL,cAAewL,EAASI,WAAYJ,EAASK,UAChE,CAMA,SAASC,GAAgBrb,GACvB,IAAI7K,EACF6T,EAEAsS,EACAC,EACAC,EAHAzgB,EAAQ,GAIV,IAAIiF,EAAO5B,GAAX,CA0BA,IAvBAkd,EAAcR,GAAiB9a,GAG3BA,EAAOwL,IAAyB,MAAnBxL,EAAO0L,GAAGI,KAAqC,MAApB9L,EAAO0L,GAAGG,KACpD4P,GAAsBzb,GAIC,MAArBA,EAAO0b,aACTF,EAAYX,GAAS7a,EAAO0L,GAAGE,IAAO0P,EAAY1P,MAC9C5L,EAAO0b,WAAa1M,GAAWwM,IAAoC,IAAtBxb,EAAO0b,cACtD9d,EAAgBoC,GAAQwX,oBAAqB,GAE/CxO,EAAOyG,GAAc+L,EAAW,EAAGxb,EAAO0b,YAC1C1b,EAAO0L,GAAGG,IAAS7C,EAAKiS,cACxBjb,EAAO0L,GAAGI,IAAQ9C,EAAKkS,cAQpB/lB,EAAI,EAAGA,EAAI,GAAqB,MAAhB6K,EAAO0L,GAAGvW,KAAcA,EAC3C6K,EAAO0L,GAAGvW,GAAK4F,EAAM5F,GAAKmmB,EAAYnmB,GAIxC,KAAOA,EAAI,EAAGA,IACZ6K,EAAO0L,GAAGvW,GAAK4F,EAAM5F,GAAqB,MAAhB6K,EAAO0L,GAAGvW,GAAmB,IAANA,EAAU,EAAI,EAAI6K,EAAO0L,GAAGvW,GAIvD,KAApB6K,EAAO0L,GAAGK,KAAsC,IAAtB/L,EAAO0L,GAAGM,KAAuC,IAAtBhM,EAAO0L,GAAGO,KAA4C,IAA3BjM,EAAO0L,GAAGQ,MAC5FlM,EAAO2b,UAAW,EAClB3b,EAAO0L,GAAGK,IAAQ,GAEpB/L,EAAO5B,IAAM4B,EAAOgb,QAAUvL,GAAgBJ,IAAY3U,MAAM,KAAMK,GACtEwgB,EAAkBvb,EAAOgb,QAAUhb,EAAO5B,GAAG6R,YAAcjQ,EAAO5B,GAAGmV,SAIlD,MAAfvT,EAAOL,MACTK,EAAO5B,GAAGqc,cAAcza,EAAO5B,GAAGsc,gBAAkB1a,EAAOL,MAEzDK,EAAO2b,WACT3b,EAAO0L,GAAGK,IAAQ,IAIhB/L,EAAOwL,IAA6B,qBAAhBxL,EAAOwL,GAAG7S,GAAqBqH,EAAOwL,GAAG7S,IAAM4iB,IACrE3d,EAAgBoC,GAAQrC,iBAAkB,EApD5C,CAsDF,CACA,SAAS8d,GAAsBzb,GAC7B,IAAImG,EAAGyV,EAAUzL,EAAMC,EAASN,EAAKC,EAAK8L,EAAMC,EAAiBC,EAErD,OADZ5V,EAAInG,EAAOwL,IACLwQ,IAAqB,MAAP7V,EAAE8V,GAAoB,MAAP9V,EAAE+V,GACnCpM,EAAM,EACNC,EAAM,EAMN6L,EAAWf,GAAS1U,EAAE6V,GAAIhc,EAAO0L,GAAGE,IAAO4E,GAAW2L,KAAe,EAAG,GAAG/T,MAC3E+H,EAAO0K,GAAS1U,EAAE8V,EAAG,KACrB7L,EAAUyK,GAAS1U,EAAE+V,EAAG,IACV,GAAK9L,EAAU,KAC3B0L,GAAkB,KAGpBhM,EAAM9P,EAAOF,QAAQgR,MAAMhB,IAC3BC,EAAM/P,EAAOF,QAAQgR,MAAMf,IAC3BgM,EAAUvL,GAAW2L,KAAerM,EAAKC,GACzC6L,EAAWf,GAAS1U,EAAEiW,GAAIpc,EAAO0L,GAAGE,IAAOmQ,EAAQ3T,MAGnD+H,EAAO0K,GAAS1U,EAAEA,EAAG4V,EAAQ5L,MAClB,MAAPhK,EAAExN,IAEJyX,EAAUjK,EAAExN,GACE,GAAKyX,EAAU,KAC3B0L,GAAkB,GAEJ,MAAP3V,EAAE/P,GAEXga,EAAUjK,EAAE/P,EAAI0Z,GACZ3J,EAAE/P,EAAI,GAAK+P,EAAE/P,EAAI,KACnB0lB,GAAkB,IAIpB1L,EAAUN,GAGVK,EAAO,GAAKA,EAAOQ,GAAYiL,EAAU9L,EAAKC,GAChDnS,EAAgBoC,GAAQyX,gBAAiB,EACb,MAAnBqE,EACTle,EAAgBoC,GAAQ0X,kBAAmB,GAE3CmE,EAAO3L,GAAmB0L,EAAUzL,EAAMC,EAASN,EAAKC,GACxD/P,EAAO0L,GAAGE,IAAQiQ,EAAKzT,KACvBpI,EAAO0b,WAAaG,EAAKtL,UAE7B,CASA,SAAS6I,GAA0BpZ,GAEjC,GAAIA,EAAOP,KAAOhF,EAAM4hB,SAIxB,GAAIrc,EAAOP,KAAOhF,EAAM6hB,SAAxB,CAIAtc,EAAO0L,GAAK,GACZ9N,EAAgBoC,GAAQpD,OAAQ,EAGhC,IACEzH,EACA8kB,EACA7O,EACA1H,EACA6Y,EAGA/e,EACA8N,EATE3E,EAAS,GAAK3G,EAAOR,GAMvBgd,EAAe7V,EAAOtR,OACtBonB,EAAyB,EAK3B,IADAnR,GADAF,EAAS/G,EAAarE,EAAOP,GAAIO,EAAOF,SAASkE,MAAMX,IAAqB,IAC1DhO,OACbF,EAAI,EAAGA,EAAImW,EAAUnW,IACxBuO,EAAQ0H,EAAOjW,IACf8kB,GAAetT,EAAO3C,MAAM4G,GAAsBlH,EAAO1D,KAAY,IAAI,OAEvEuc,EAAU5V,EAAOvD,OAAO,EAAGuD,EAAOgF,QAAQsO,KAC9B5kB,OAAS,GACnBuI,EAAgBoC,GAAQlD,YAAYnH,KAAK4mB,GAE3C5V,EAASA,EAAOtM,MAAMsM,EAAOgF,QAAQsO,GAAeA,EAAY5kB,QAChEonB,GAA0BxC,EAAY5kB,QAGpCmO,EAAqBE,IACnBuW,EACFrc,EAAgBoC,GAAQpD,OAAQ,EAEhCgB,EAAgBoC,GAAQnD,aAAalH,KAAK+N,GAE5C+H,GAAwB/H,EAAOuW,EAAaja,IACnCA,EAAOzB,UAAY0b,GAC5Brc,EAAgBoC,GAAQnD,aAAalH,KAAK+N,GAK9C9F,EAAgBoC,GAAQhD,cAAgBwf,EAAeC,EACnD9V,EAAOtR,OAAS,GAClBuI,EAAgBoC,GAAQlD,YAAYnH,KAAKgR,GAIvC3G,EAAO0L,GAAGK,KAAS,KAA0C,IAApCnO,EAAgBoC,GAAQxB,SAAoBwB,EAAO0L,GAAGK,IAAQ,IACzFnO,EAAgBoC,GAAQxB,aAAUpG,GAEpCwF,EAAgBoC,GAAQzC,gBAAkByC,EAAO0L,GAAGrR,MAAM,GAC1DuD,EAAgBoC,GAAQvC,SAAWuC,EAAOkV,UAE1ClV,EAAO0L,GAAGK,IAAQ2Q,GAAgB1c,EAAOF,QAASE,EAAO0L,GAAGK,IAAO/L,EAAOkV,WAI9D,QADZ1X,EAAMI,EAAgBoC,GAAQxC,OAE5BwC,EAAO0L,GAAGE,IAAQ5L,EAAOF,QAAQ6c,gBAAgBnf,EAAKwC,EAAO0L,GAAGE,MAElEyP,GAAgBrb,GAChBuX,GAAcvX,EA9Dd,MAFEua,GAAkBva,QAJlB4Y,GAAc5Y,EAqElB,CACA,SAAS0c,GAAgBngB,EAAQqgB,EAAMnf,GACrC,IAAIof,EACJ,OAAgB,MAAZpf,EAEKmf,EAEkB,MAAvBrgB,EAAOugB,aACFvgB,EAAOugB,aAAaF,EAAMnf,GACT,MAAflB,EAAO0Y,OAEhB4H,EAAOtgB,EAAO0Y,KAAKxX,KACPmf,EAAO,KACjBA,GAAQ,IAELC,GAAiB,KAATD,IACXA,EAAO,GAEFA,GAGAA,CAEX,CAGA,SAASG,GAAyB/c,GAChC,IAAIgd,EACFC,EACAC,EACA/nB,EACAgoB,EACAC,EACAC,GAAoB,EACpBC,EAAatd,EAAOP,GAAGpK,OACzB,GAAmB,IAAfioB,EAGF,OAFA1f,EAAgBoC,GAAQ5C,eAAgB,OACxC4C,EAAO5B,GAAK,IAAIvC,KAAK8C,MAGvB,IAAKxJ,EAAI,EAAGA,EAAImoB,EAAYnoB,IAC1BgoB,EAAe,EACfC,GAAmB,EACnBJ,EAAa/d,EAAW,CAAC,EAAGe,GACN,MAAlBA,EAAOgb,UACTgC,EAAWhC,QAAUhb,EAAOgb,SAE9BgC,EAAWvd,GAAKO,EAAOP,GAAGtK,GAC1BikB,GAA0B4D,GACtBlf,EAAQkf,KACVI,GAAmB,GAIrBD,GAAgBvf,EAAgBof,GAAYhgB,cAG5CmgB,GAAkE,GAAlDvf,EAAgBof,GAAYngB,aAAaxH,OACzDuI,EAAgBof,GAAYO,MAAQJ,EAC/BE,EASCF,EAAeD,IACjBA,EAAcC,EACdF,EAAaD,IAVI,MAAfE,GAAuBC,EAAeD,GAAeE,KACvDF,EAAcC,EACdF,EAAaD,EACTI,IACFC,GAAoB,IAU5BlhB,EAAO6D,EAAQid,GAAcD,EAC/B,CACA,SAASQ,GAAiBxd,GACxB,IAAIA,EAAO5B,GAAX,CAGA,IAAIjJ,EAAIqS,GAAqBxH,EAAOR,IAClCie,OAAsBrlB,IAAVjD,EAAEsd,IAAoBtd,EAAE6T,KAAO7T,EAAEsd,IAC/CzS,EAAO0L,GAAK5P,EAAI,CAAC3G,EAAEiT,KAAMjT,EAAE4T,MAAO0U,EAAWtoB,EAAEynB,KAAMznB,EAAEuoB,OAAQvoB,EAAEwoB,OAAQxoB,EAAEyoB,cAAc,SAAUriB,GACjG,OAAOA,GAAO2T,SAAS3T,EAAK,GAC9B,IACA8f,GAAgBrb,EANhB,CAOF,CACA,SAAS6d,GAAiB7d,GACxB,IAAI/D,EAAM,IAAI8D,EAAOwX,GAAcuG,GAAc9d,KAMjD,OALI/D,EAAI0f,WAEN1f,EAAIkV,IAAI,EAAG,KACXlV,EAAI0f,cAAWvjB,GAEV6D,CACT,CACA,SAAS6hB,GAAc9d,GACrB,IAAIjF,EAAQiF,EAAOR,GACjBlD,EAAS0D,EAAOP,GAElB,OADAO,EAAOF,QAAUE,EAAOF,SAAWiX,GAAU/W,EAAON,IACtC,OAAV3E,QAA6B3C,IAAXkE,GAAkC,KAAVvB,EACrC2D,EAAc,CACnBzB,WAAW,KAGM,kBAAVlC,IACTiF,EAAOR,GAAKzE,EAAQiF,EAAOF,QAAQie,SAAShjB,IAE1CmF,EAASnF,GACJ,IAAIgF,EAAOwX,GAAcxc,KACvBa,EAAOb,GAChBiF,EAAO5B,GAAKrD,EACHD,EAAQwB,GACjBygB,GAAyB/c,GAChB1D,EACT8c,GAA0BpZ,GAE1Bge,GAAgBhe,GAEblC,EAAQkC,KACXA,EAAO5B,GAAK,MAEP4B,GACT,CACA,SAASge,GAAgBhe,GACvB,IAAIjF,EAAQiF,EAAOR,GACf9D,EAAYX,GACdiF,EAAO5B,GAAK,IAAIvC,KAAKpB,EAAM8H,OAClB3G,EAAOb,GAChBiF,EAAO5B,GAAK,IAAIvC,KAAKd,EAAMqB,WACD,kBAAVrB,EAChB4f,GAAiB3a,GACRlF,EAAQC,IACjBiF,EAAO0L,GAAK5P,EAAIf,EAAMV,MAAM,IAAI,SAAUkB,GACxC,OAAO2T,SAAS3T,EAAK,GACvB,IACA8f,GAAgBrb,IACP9E,EAASH,GAClByiB,GAAiBxd,GACRrE,EAASZ,GAElBiF,EAAO5B,GAAK,IAAIvC,KAAKd,GAErBN,EAAMmgB,wBAAwB5a,EAElC,CACA,SAASvD,GAAiB1B,EAAOuB,EAAQC,EAAQC,EAAQyhB,GACvD,IAAIvlB,EAAI,CAAC,EAoBT,OAnBe,IAAX4D,IAA8B,IAAXA,IACrBE,EAASF,EACTA,OAASlE,IAEI,IAAXmE,IAA8B,IAAXA,IACrBC,EAASD,EACTA,OAASnE,IAEP8C,EAASH,IAAUO,EAAcP,IAAUD,EAAQC,IAA2B,IAAjBA,EAAM1F,UACrE0F,OAAQ3C,GAIVM,EAAE6G,kBAAmB,EACrB7G,EAAEsiB,QAAUtiB,EAAEkH,OAASqe,EACvBvlB,EAAEgH,GAAKnD,EACP7D,EAAE8G,GAAKzE,EACPrC,EAAE+G,GAAKnD,EACP5D,EAAE6F,QAAU/B,EACLqhB,GAAiBnlB,EAC1B,CACA,SAASyjB,GAAYphB,EAAOuB,EAAQC,EAAQC,GAC1C,OAAOC,GAAiB1B,EAAOuB,EAAQC,EAAQC,GAAQ,EACzD,CA1YA/B,EAAMmgB,wBAA0Bta,EAAU,iSAA2S,SAAUN,GAC7VA,EAAO5B,GAAK,IAAIvC,KAAKmE,EAAOR,IAAMQ,EAAOgb,QAAU,OAAS,IAC9D,IA+IAvgB,EAAM4hB,SAAW,WAAa,EAG9B5hB,EAAM6hB,SAAW,WAAa,EAuP9B,IAAI4B,GAAe5d,EAAU,sGAAsG,WAC/H,IAAI6d,EAAQhC,GAAYzhB,MAAM,KAAMC,WACpC,OAAIkE,KAAKf,WAAaqgB,EAAMrgB,UACnBqgB,EAAQtf,KAAOA,KAAOsf,EAEtBzf,GAEX,IACA0f,GAAe9d,EAAU,sGAAsG,WAC7H,IAAI6d,EAAQhC,GAAYzhB,MAAM,KAAMC,WACpC,OAAIkE,KAAKf,WAAaqgB,EAAMrgB,UACnBqgB,EAAQtf,KAAOA,KAAOsf,EAEtBzf,GAEX,IAOF,SAAS2f,GAAOriB,EAAIsiB,GAClB,IAAIriB,EAAK9G,EAIT,GAHuB,IAAnBmpB,EAAQjpB,QAAgByF,EAAQwjB,EAAQ,MAC1CA,EAAUA,EAAQ,KAEfA,EAAQjpB,OACX,OAAO8mB,KAGT,IADAlgB,EAAMqiB,EAAQ,GACTnpB,EAAI,EAAGA,EAAImpB,EAAQjpB,SAAUF,EAC3BmpB,EAAQnpB,GAAG2I,YAAawgB,EAAQnpB,GAAG6G,GAAIC,KAC1CA,EAAMqiB,EAAQnpB,IAGlB,OAAO8G,CACT,CAGA,SAASmS,KAEP,OAAOiQ,GAAO,WADH,GAAGhkB,MAAM5E,KAAKkF,UAAW,GAEtC,CACA,SAASwI,KAEP,OAAOkb,GAAO,UADH,GAAGhkB,MAAM5E,KAAKkF,UAAW,GAEtC,CACA,IAAI4H,GAAM,WACR,OAAO1G,KAAK0G,IAAM1G,KAAK0G,OAAS,IAAI1G,IACtC,EACI0iB,GAAW,CAAC,OAAQ,UAAW,QAAS,OAAQ,MAAO,OAAQ,SAAU,SAAU,eACvF,SAASC,GAAgB/lB,GACvB,IAAIiB,EAEFvE,EADAspB,GAAiB,EAEjBC,EAAWH,GAASlpB,OACtB,IAAKqE,KAAOjB,EACV,GAAI0C,EAAW1C,EAAGiB,MAA2C,IAAjCiS,GAAQlW,KAAK8oB,GAAU7kB,IAA0B,MAAVjB,EAAEiB,IAAiByE,MAAM1F,EAAEiB,KAC5F,OAAO,EAGX,IAAKvE,EAAI,EAAGA,EAAIupB,IAAYvpB,EAC1B,GAAIsD,EAAE8lB,GAASppB,IAAK,CAClB,GAAIspB,EACF,OAAO,EAGLE,WAAWlmB,EAAE8lB,GAASppB,OAASqT,GAAM/P,EAAE8lB,GAASppB,OAClDspB,GAAiB,EAErB,CAEF,OAAO,CACT,CACA,SAASG,KACP,OAAO/f,KAAKd,QACd,CACA,SAAS8gB,KACP,OAAOC,GAAengB,IACxB,CACA,SAASogB,GAASC,GAChB,IAAIrX,EAAkBH,GAAqBwX,GACzCC,EAAQtX,EAAgBS,MAAQ,EAChC8W,EAAWvX,EAAgBwX,SAAW,EACtC1S,EAAS9E,EAAgBoB,OAAS,EAClCqW,EAAQzX,EAAgBwI,MAAQxI,EAAgB0X,SAAW,EAC3DC,EAAO3X,EAAgB8K,KAAO,EAC9B6B,EAAQ3M,EAAgBiV,MAAQ,EAChCnI,EAAU9M,EAAgB+V,QAAU,EACpC5I,EAAUnN,EAAgBgW,QAAU,EACpC4B,EAAe5X,EAAgBiW,aAAe,EAChD/e,KAAKd,SAAWygB,GAAgB7W,GAGhC9I,KAAK2gB,eAAiBD,EAAyB,IAAVzK,EAE3B,IAAVL,EAEQ,IAARH,EAAe,GAAK,GAGpBzV,KAAK4gB,OAASH,EAAe,EAARF,EAIrBvgB,KAAKuO,SAAWX,EAAoB,EAAXyS,EAAuB,GAARD,EACxCpgB,KAAK6gB,MAAQ,CAAC,EACd7gB,KAAKiB,QAAUiX,KACflY,KAAK8gB,SACP,CACA,SAASC,GAAWrkB,GAClB,OAAOA,aAAewjB,EACxB,CACA,SAASc,GAASld,GAChB,OAAIA,EAAS,GACuB,EAA3BI,KAAK+c,OAAO,EAAInd,GAEhBI,KAAK+c,MAAMnd,EAEtB,CAGA,SAASod,GAAcC,EAAQC,EAAQC,GACrC,IAGE/qB,EAHE2J,EAAMiE,KAAKqL,IAAI4R,EAAO3qB,OAAQ4qB,EAAO5qB,QACvC8qB,EAAapd,KAAKC,IAAIgd,EAAO3qB,OAAS4qB,EAAO5qB,QAC7C+qB,EAAQ,EAEV,IAAKjrB,EAAI,EAAGA,EAAI2J,EAAK3J,KACf+qB,GAAeF,EAAO7qB,KAAO8qB,EAAO9qB,KAAO+qB,GAAe1X,GAAMwX,EAAO7qB,MAAQqT,GAAMyX,EAAO9qB,MAC9FirB,IAGJ,OAAOA,EAAQD,CACjB,CAIA,SAASE,GAAO3c,EAAO4c,GACrB7c,EAAeC,EAAO,EAAG,GAAG,WAC1B,IAAI2c,EAASxhB,KAAK0hB,YAChBC,EAAO,IAKT,OAJIH,EAAS,IACXA,GAAUA,EACVG,EAAO,KAEFA,EAAO9d,KAAY2d,EAAS,IAAK,GAAKC,EAAY5d,IAAW2d,EAAS,GAAI,EACnF,GACF,CACAA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIb7V,GAAc,IAAKH,IACnBG,GAAc,KAAMH,IACpBgB,GAAc,CAAC,IAAK,OAAO,SAAUtQ,EAAOoJ,EAAOnE,GACjDA,EAAOgb,SAAU,EACjBhb,EAAOL,KAAO8gB,GAAiBpW,GAAkBtP,EACnD,IAOA,IAAI2lB,GAAc,kBAClB,SAASD,GAAiBE,EAASha,GACjC,IAEEia,EACAnM,EAHEoM,GAAWla,GAAU,IAAI3C,MAAM2c,GAInC,OAAgB,OAAZE,EACK,KAKU,KADnBpM,EAAuB,IADvBmM,IADQC,EAAQA,EAAQxrB,OAAS,IAAM,IACtB,IAAI2O,MAAM0c,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAWlY,GAAMoY,EAAM,KAClB,EAAiB,MAAbA,EAAM,GAAanM,GAAWA,CAC3D,CAGA,SAASqM,GAAgB/lB,EAAOgmB,GAC9B,IAAI9kB,EAAK8K,EACT,OAAIga,EAAMnhB,QACR3D,EAAM8kB,EAAMC,QACZja,GAAQ7G,EAASnF,IAAUa,EAAOb,GAASA,EAAMqB,UAAY+f,GAAYphB,GAAOqB,WAAaH,EAAIG,UAEjGH,EAAImC,GAAG6iB,QAAQhlB,EAAImC,GAAGhC,UAAY2K,GAClCtM,EAAMwF,aAAahE,GAAK,GACjBA,GAEAkgB,GAAYphB,GAAOmmB,OAE9B,CACA,SAASC,GAAc1oB,GAGrB,OAAQsK,KAAK+c,MAAMrnB,EAAE2F,GAAGgjB,oBAC1B,CAoBA,SAASC,GAAatmB,EAAOumB,EAAeC,GAC1C,IACEC,EADEnB,EAASxhB,KAAKgB,SAAW,EAE7B,IAAKhB,KAAKf,UACR,OAAgB,MAAT/C,EAAgB8D,KAAOF,IAEhC,GAAa,MAAT5D,EAAe,CACjB,GAAqB,kBAAVA,GAET,GAAc,QADdA,EAAQ0lB,GAAiBpW,GAAkBtP,IAEzC,OAAO8D,UAEAkE,KAAKC,IAAIjI,GAAS,KAAOwmB,IAClCxmB,GAAgB,IAmBlB,OAjBK8D,KAAKe,QAAU0hB,IAClBE,EAAcL,GAActiB,OAE9BA,KAAKgB,QAAU9E,EACf8D,KAAKe,QAAS,EACK,MAAf4hB,GACF3iB,KAAKsS,IAAIqQ,EAAa,KAEpBnB,IAAWtlB,KACRumB,GAAiBziB,KAAK4iB,kBACzBC,GAAY7iB,KAAMigB,GAAe/jB,EAAQslB,EAAQ,KAAM,GAAG,GAChDxhB,KAAK4iB,oBACf5iB,KAAK4iB,mBAAoB,EACzBhnB,EAAMwF,aAAapB,MAAM,GACzBA,KAAK4iB,kBAAoB,OAGtB5iB,IACT,CACE,OAAOA,KAAKe,OAASygB,EAASc,GAActiB,KAEhD,CACA,SAAS8iB,GAAW5mB,EAAOumB,GACzB,OAAa,MAATvmB,GACmB,kBAAVA,IACTA,GAASA,GAEX8D,KAAK0hB,UAAUxlB,EAAOumB,GACfziB,OAECA,KAAK0hB,WAEjB,CACA,SAASqB,GAAeN,GACtB,OAAOziB,KAAK0hB,UAAU,EAAGe,EAC3B,CACA,SAASO,GAAiBP,GAQxB,OAPIziB,KAAKe,SACPf,KAAK0hB,UAAU,EAAGe,GAClBziB,KAAKe,QAAS,EACV0hB,GACFziB,KAAKijB,SAASX,GAActiB,MAAO,MAGhCA,IACT,CACA,SAASkjB,KACP,GAAiB,MAAbljB,KAAKc,KACPd,KAAK0hB,UAAU1hB,KAAKc,MAAM,GAAO,QAC5B,GAAuB,kBAAZd,KAAKW,GAAiB,CACtC,IAAIwiB,EAAQvB,GAAiBrW,GAAavL,KAAKW,IAClC,MAATwiB,EACFnjB,KAAK0hB,UAAUyB,GAEfnjB,KAAK0hB,UAAU,GAAG,EAEtB,CACA,OAAO1hB,IACT,CACA,SAASojB,GAAqBlnB,GAC5B,QAAK8D,KAAKf,YAGV/C,EAAQA,EAAQohB,GAAYphB,GAAOwlB,YAAc,GACzC1hB,KAAK0hB,YAAcxlB,GAAS,KAAO,EAC7C,CACA,SAASmnB,KACP,OAAOrjB,KAAK0hB,YAAc1hB,KAAKmiB,QAAQjY,MAAM,GAAGwX,aAAe1hB,KAAK0hB,YAAc1hB,KAAKmiB,QAAQjY,MAAM,GAAGwX,WAC1G,CACA,SAAS4B,KACP,IAAKzmB,EAAYmD,KAAKujB,eACpB,OAAOvjB,KAAKujB,cAEd,IACEjE,EADEzlB,EAAI,CAAC,EAUT,OARAuG,EAAWvG,EAAGmG,OACdnG,EAAIolB,GAAcplB,IACZgT,IACJyS,EAAQzlB,EAAEkH,OAASvD,EAAU3D,EAAEgT,IAAMyQ,GAAYzjB,EAAEgT,IACnD7M,KAAKujB,cAAgBvjB,KAAKf,WAAaiiB,GAAcrnB,EAAEgT,GAAIyS,EAAMkE,WAAa,GAE9ExjB,KAAKujB,eAAgB,EAEhBvjB,KAAKujB,aACd,CACA,SAASE,KACP,QAAOzjB,KAAKf,YAAae,KAAKe,MAChC,CACA,SAAS2iB,KACP,QAAO1jB,KAAKf,WAAYe,KAAKe,MAC/B,CACA,SAAS4iB,KACP,QAAO3jB,KAAKf,WAAYe,KAAKe,QAA2B,IAAjBf,KAAKgB,OAC9C,CA1HApF,EAAMwF,aAAe,WAAa,EA6HlC,IAAIwiB,GAAc,wDAIhBC,GAAW,sKACb,SAAS5D,GAAe/jB,EAAOrB,GAC7B,IAGE8mB,EACAmC,EACAC,EALE5D,EAAWjkB,EAEbiJ,EAAQ,KAsDV,OAlDI4b,GAAW7kB,GACbikB,EAAW,CACT1P,GAAIvU,EAAMykB,cACV7mB,EAAGoC,EAAM0kB,MACTpZ,EAAGtL,EAAMqS,SAEFzR,EAASZ,KAAWoD,OAAOpD,IACpCikB,EAAW,CAAC,EACRtlB,EACFslB,EAAStlB,IAAQqB,EAEjBikB,EAASO,cAAgBxkB,IAElBiJ,EAAQye,GAAYxJ,KAAKle,KAClCylB,EAAoB,MAAbxc,EAAM,IAAc,EAAI,EAC/Bgb,EAAW,CACTzY,EAAG,EACH5N,EAAG6P,GAAMxE,EAAM8H,KAAS0U,EACxBxa,EAAGwC,GAAMxE,EAAM+H,KAASyU,EACxB/nB,EAAG+P,GAAMxE,EAAMgI,KAAWwU,EAC1BlmB,EAAGkO,GAAMxE,EAAMiI,KAAWuU,EAC1BlR,GAAI9G,GAAMqX,GAA8B,IAArB7b,EAAMkI,MAAwBsU,KAE1Cxc,EAAQ0e,GAASzJ,KAAKle,KAC/BylB,EAAoB,MAAbxc,EAAM,IAAc,EAAI,EAC/Bgb,EAAW,CACTzY,EAAGsc,GAAS7e,EAAM,GAAIwc,GACtBna,EAAGwc,GAAS7e,EAAM,GAAIwc,GACtBra,EAAG0c,GAAS7e,EAAM,GAAIwc,GACtB7nB,EAAGkqB,GAAS7e,EAAM,GAAIwc,GACtBxa,EAAG6c,GAAS7e,EAAM,GAAIwc,GACtB/nB,EAAGoqB,GAAS7e,EAAM,GAAIwc,GACtBlmB,EAAGuoB,GAAS7e,EAAM,GAAIwc,KAEH,MAAZxB,EAETA,EAAW,CAAC,EACiB,kBAAbA,IAA0B,SAAUA,GAAY,OAAQA,KACxE4D,EAAUE,GAAkB3G,GAAY6C,EAAS7f,MAAOgd,GAAY6C,EAAS9f,MAC7E8f,EAAW,CAAC,GACH1P,GAAKsT,EAAQrD,aACtBP,EAAS3Y,EAAIuc,EAAQnW,QAEvBkW,EAAM,IAAI5D,GAASC,GACfY,GAAW7kB,IAAUI,EAAWJ,EAAO,aACzC4nB,EAAI7iB,QAAU/E,EAAM+E,SAElB8f,GAAW7kB,IAAUI,EAAWJ,EAAO,cACzC4nB,EAAI5kB,SAAWhD,EAAMgD,UAEhB4kB,CACT,CAGA,SAASE,GAASE,EAAKvC,GAIrB,IAAIvkB,EAAM8mB,GAAOpE,WAAWoE,EAAI9e,QAAQ,IAAK,MAE7C,OAAQ9F,MAAMlC,GAAO,EAAIA,GAAOukB,CAClC,CACA,SAASwC,GAA0BC,EAAM9E,GACvC,IAAIliB,EAAM,CAAC,EAMX,OALAA,EAAIwQ,OAAS0R,EAAMpV,QAAUka,EAAKla,QAAyC,IAA9BoV,EAAM/V,OAAS6a,EAAK7a,QAC7D6a,EAAKjC,QAAQ7P,IAAIlV,EAAIwQ,OAAQ,KAAKyW,QAAQ/E,MAC1CliB,EAAIwQ,OAERxQ,EAAIsjB,cAAgBpB,GAAS8E,EAAKjC,QAAQ7P,IAAIlV,EAAIwQ,OAAQ,KACnDxQ,CACT,CACA,SAAS6mB,GAAkBG,EAAM9E,GAC/B,IAAIliB,EACJ,OAAMgnB,EAAKnlB,WAAaqgB,EAAMrgB,WAM9BqgB,EAAQ2C,GAAgB3C,EAAO8E,GAC3BA,EAAKE,SAAShF,GAChBliB,EAAM+mB,GAA0BC,EAAM9E,KAEtCliB,EAAM+mB,GAA0B7E,EAAO8E,IACnC1D,cAAgBtjB,EAAIsjB,aACxBtjB,EAAIwQ,QAAUxQ,EAAIwQ,QAEbxQ,GAbE,CACLsjB,aAAc,EACd9S,OAAQ,EAYd,CAGA,SAAS2W,GAAYC,EAAWnrB,GAC9B,OAAO,SAAUmH,EAAKikB,GACpB,IAASC,EAUT,OARe,OAAXD,GAAoBnlB,OAAOmlB,KAC7BtiB,EAAgB9I,EAAM,YAAcA,EAAO,uDAAyDA,EAA9E,kGACtBqrB,EAAMlkB,EACNA,EAAMikB,EACNA,EAASC,GAGX7B,GAAY7iB,KADNigB,GAAezf,EAAKikB,GACHD,GAChBxkB,IACT,CACF,CACA,SAAS6iB,GAAYpf,EAAK0c,EAAUwE,EAAUvjB,GAC5C,IAAIsf,EAAeP,EAASQ,cAC1BF,EAAOO,GAASb,EAASS,OACzBhT,EAASoT,GAASb,EAAS5R,SACxB9K,EAAIxE,YAITmC,EAA+B,MAAhBA,GAA8BA,EACzCwM,GACFyB,GAAS5L,EAAKtJ,GAAIsJ,EAAK,SAAWmK,EAAS+W,GAEzClE,GACFxW,GAAMxG,EAAK,OAAQtJ,GAAIsJ,EAAK,QAAUgd,EAAOkE,GAE3CjE,GACFjd,EAAIlE,GAAG6iB,QAAQ3e,EAAIlE,GAAGhC,UAAYmjB,EAAeiE,GAE/CvjB,GACFxF,EAAMwF,aAAaqC,EAAKgd,GAAQ7S,GAEpC,CA3EAqS,GAAe9iB,GAAK+iB,GAASxpB,UAC7BupB,GAAe2E,QAAU5E,GA2EzB,IAAI1N,GAAMiS,GAAY,EAAG,OACvBtB,GAAWsB,IAAa,EAAG,YAC7B,SAASM,GAAS3oB,GAChB,MAAwB,kBAAVA,GAAsBA,aAAiB4oB,MACvD,CAGA,SAASC,GAAc7oB,GACrB,OAAOmF,EAASnF,IAAUa,EAAOb,IAAU2oB,GAAS3oB,IAAUY,EAASZ,IAAU8oB,GAAsB9oB,IAAU+oB,GAAoB/oB,IAAoB,OAAVA,QAA4B3C,IAAV2C,CACnK,CACA,SAAS+oB,GAAoB/oB,GAC3B,IAGE5F,EACA2E,EAJEiqB,EAAa7oB,EAASH,KAAWO,EAAcP,GACjDipB,GAAe,EACfC,EAAa,CAAC,QAAS,OAAQ,IAAK,SAAU,QAAS,IAAK,OAAQ,MAAO,IAAK,QAAS,OAAQ,IAAK,QAAS,OAAQ,IAAK,UAAW,SAAU,IAAK,UAAW,SAAU,IAAK,eAAgB,cAAe,MAG/MC,EAAcD,EAAW5uB,OAC3B,IAAKF,EAAI,EAAGA,EAAI+uB,EAAa/uB,GAAK,EAChC2E,EAAWmqB,EAAW9uB,GACtB6uB,EAAeA,GAAgB7oB,EAAWJ,EAAOjB,GAEnD,OAAOiqB,GAAcC,CACvB,CACA,SAASH,GAAsB9oB,GAC7B,IAAIopB,EAAYrpB,EAAQC,GACtBqpB,GAAe,EAMjB,OALID,IACFC,EAEc,IAFCrpB,EAAMspB,QAAO,SAAUC,GACpC,OAAQ3oB,EAAS2oB,IAASZ,GAAS3oB,EACrC,IAAG1F,QAEE8uB,GAAaC,CACtB,CACA,SAASG,GAAexpB,GACtB,IAGE5F,EACA2E,EAJEiqB,EAAa7oB,EAASH,KAAWO,EAAcP,GACjDipB,GAAe,EACfC,EAAa,CAAC,UAAW,UAAW,UAAW,WAAY,WAAY,YAGzE,IAAK9uB,EAAI,EAAGA,EAAI8uB,EAAW5uB,OAAQF,GAAK,EACtC2E,EAAWmqB,EAAW9uB,GACtB6uB,EAAeA,GAAgB7oB,EAAWJ,EAAOjB,GAEnD,OAAOiqB,GAAcC,CACvB,CACA,SAASQ,GAAkBC,EAAUliB,GACnC,IAAIwE,EAAO0d,EAAS1d,KAAKxE,EAAK,QAAQ,GACtC,OAAOwE,GAAQ,EAAI,WAAaA,GAAQ,EAAI,WAAaA,EAAO,EAAI,UAAYA,EAAO,EAAI,UAAYA,EAAO,EAAI,UAAYA,EAAO,EAAI,WAAa,UACxJ,CACA,SAAS2d,GAAWC,EAAMC,GAEC,IAArBjqB,UAAUtF,SACPsF,UAAU,GAGJipB,GAAcjpB,UAAU,KACjCgqB,EAAOhqB,UAAU,GACjBiqB,OAAUxsB,GACDmsB,GAAe5pB,UAAU,MAClCiqB,EAAUjqB,UAAU,GACpBgqB,OAAOvsB,IAPPusB,OAAOvsB,EACPwsB,OAAUxsB,IAWd,IAAImK,EAAMoiB,GAAQxI,KAChB0I,EAAM/D,GAAgBve,EAAK1D,MAAMimB,QAAQ,OACzCxoB,EAAS7B,EAAMsqB,eAAelmB,KAAMgmB,IAAQ,WAC5CriB,EAASoiB,IAAY3jB,EAAW2jB,EAAQtoB,IAAWsoB,EAAQtoB,GAAQ7G,KAAKoJ,KAAM0D,GAAOqiB,EAAQtoB,IAC/F,OAAOuC,KAAKvC,OAAOkG,GAAU3D,KAAKiF,aAAazB,SAAS/F,EAAQuC,KAAMsd,GAAY5Z,IACpF,CACA,SAASye,KACP,OAAO,IAAIjhB,EAAOlB,KACpB,CACA,SAASqkB,GAAQnoB,EAAOwM,GACtB,IAAIyd,EAAa9kB,EAASnF,GAASA,EAAQohB,GAAYphB,GACvD,SAAM8D,KAAKf,YAAaknB,EAAWlnB,aAIrB,iBADdyJ,EAAQD,GAAeC,IAAU,eAExB1I,KAAKzC,UAAY4oB,EAAW5oB,UAE5B4oB,EAAW5oB,UAAYyC,KAAKmiB,QAAQ8D,QAAQvd,GAAOnL,UAE9D,CACA,SAAS+mB,GAASpoB,EAAOwM,GACvB,IAAIyd,EAAa9kB,EAASnF,GAASA,EAAQohB,GAAYphB,GACvD,SAAM8D,KAAKf,YAAaknB,EAAWlnB,aAIrB,iBADdyJ,EAAQD,GAAeC,IAAU,eAExB1I,KAAKzC,UAAY4oB,EAAW5oB,UAE5ByC,KAAKmiB,QAAQiE,MAAM1d,GAAOnL,UAAY4oB,EAAW5oB,UAE5D,CACA,SAAS8oB,GAAU/lB,EAAMD,EAAIqI,EAAO4d,GAClC,IAAIC,EAAYllB,EAASf,GAAQA,EAAOgd,GAAYhd,GAClDkmB,EAAUnlB,EAAShB,GAAMA,EAAKid,GAAYjd,GAC5C,SAAML,KAAKf,WAAasnB,EAAUtnB,WAAaunB,EAAQvnB,aAI5B,OAD3BqnB,EAAcA,GAAe,MACT,GAAatmB,KAAKqkB,QAAQkC,EAAW7d,IAAU1I,KAAKskB,SAASiC,EAAW7d,MAA+B,MAAnB4d,EAAY,GAAatmB,KAAKskB,SAASkC,EAAS9d,IAAU1I,KAAKqkB,QAAQmC,EAAS9d,GAC1L,CACA,SAAS+d,GAAOvqB,EAAOwM,GACrB,IACEge,EADEP,EAAa9kB,EAASnF,GAASA,EAAQohB,GAAYphB,GAEvD,SAAM8D,KAAKf,YAAaknB,EAAWlnB,aAIrB,iBADdyJ,EAAQD,GAAeC,IAAU,eAExB1I,KAAKzC,YAAc4oB,EAAW5oB,WAErCmpB,EAAUP,EAAW5oB,UACdyC,KAAKmiB,QAAQ8D,QAAQvd,GAAOnL,WAAampB,GAAWA,GAAW1mB,KAAKmiB,QAAQiE,MAAM1d,GAAOnL,WAEpG,CACA,SAASopB,GAAczqB,EAAOwM,GAC5B,OAAO1I,KAAKymB,OAAOvqB,EAAOwM,IAAU1I,KAAKqkB,QAAQnoB,EAAOwM,EAC1D,CACA,SAASke,GAAe1qB,EAAOwM,GAC7B,OAAO1I,KAAKymB,OAAOvqB,EAAOwM,IAAU1I,KAAKskB,SAASpoB,EAAOwM,EAC3D,CACA,SAASR,GAAKhM,EAAOwM,EAAOme,GAC1B,IAAIC,EAAMC,EAAWpjB,EACrB,IAAK3D,KAAKf,UACR,OAAOa,IAGT,KADAgnB,EAAO7E,GAAgB/lB,EAAO8D,OACpBf,UACR,OAAOa,IAIT,OAFAinB,EAAoD,KAAvCD,EAAKpF,YAAc1hB,KAAK0hB,aACrChZ,EAAQD,GAAeC,IAErB,IAAK,OACH/E,EAASqjB,GAAUhnB,KAAM8mB,GAAQ,GACjC,MACF,IAAK,QACHnjB,EAASqjB,GAAUhnB,KAAM8mB,GACzB,MACF,IAAK,UACHnjB,EAASqjB,GAAUhnB,KAAM8mB,GAAQ,EACjC,MACF,IAAK,SACHnjB,GAAU3D,KAAO8mB,GAAQ,IACzB,MAEF,IAAK,SACHnjB,GAAU3D,KAAO8mB,GAAQ,IACzB,MAEF,IAAK,OACHnjB,GAAU3D,KAAO8mB,GAAQ,KACzB,MAEF,IAAK,MACHnjB,GAAU3D,KAAO8mB,EAAOC,GAAa,MACrC,MAEF,IAAK,OACHpjB,GAAU3D,KAAO8mB,EAAOC,GAAa,OACrC,MAEF,QACEpjB,EAAS3D,KAAO8mB,EAEpB,OAAOD,EAAUljB,EAAS6F,GAAS7F,EACrC,CACA,SAASqjB,GAAUzqB,EAAGC,GACpB,GAAID,EAAE4N,OAAS3N,EAAE2N,OAGf,OAAQ6c,GAAUxqB,EAAGD,GAGvB,IAAI0qB,EAAyC,IAAvBzqB,EAAE+M,OAAShN,EAAEgN,SAAgB/M,EAAE0N,QAAU3N,EAAE2N,SAE/Dgd,EAAS3qB,EAAE4lB,QAAQ7P,IAAI2U,EAAgB,UAczC,QAASA,GAXLzqB,EAAI0qB,EAAS,GAGL1qB,EAAI0qB,IAAWA,EAFf3qB,EAAE4lB,QAAQ7P,IAAI2U,EAAiB,EAAG,YAMlCzqB,EAAI0qB,IAFJ3qB,EAAE4lB,QAAQ7P,IAAI2U,EAAiB,EAAG,UAETC,MAIA,CACvC,CAGA,SAAS9qB,KACP,OAAO4D,KAAKmiB,QAAQzkB,OAAO,MAAMD,OAAO,mCAC1C,CACA,SAAS0pB,GAAYC,GACnB,IAAKpnB,KAAKf,UACR,OAAO,KAET,IAAIpB,GAAqB,IAAfupB,EACRxtB,EAAIiE,EAAMmC,KAAKmiB,QAAQtkB,MAAQmC,KACjC,OAAIpG,EAAE2P,OAAS,GAAK3P,EAAE2P,OAAS,KACtBhE,EAAa3L,EAAGiE,EAAM,iCAAmC,gCAE9DuE,EAAWpF,KAAKtG,UAAUywB,aAExBtpB,EACKmC,KAAKqnB,SAASF,cAEd,IAAInqB,KAAKgD,KAAKzC,UAA+B,GAAnByC,KAAK0hB,YAAmB,KAAMyF,cAAc/hB,QAAQ,IAAKG,EAAa3L,EAAG,MAGvG2L,EAAa3L,EAAGiE,EAAM,+BAAiC,6BAChE,CAQA,SAASypB,KACP,IAAKtnB,KAAKf,UACR,MAAO,qBAAuBe,KAAKW,GAAK,OAE1C,IAEE4mB,EACAhe,EACAie,EACAC,EALEziB,EAAO,SACT0iB,EAAO,GAaT,OARK1nB,KAAKyjB,YACRze,EAA4B,IAArBhF,KAAK0hB,YAAoB,aAAe,mBAC/CgG,EAAO,KAETH,EAAS,IAAMviB,EAAO,MACtBuE,EAAO,GAAKvJ,KAAKuJ,QAAUvJ,KAAKuJ,QAAU,KAAO,OAAS,SAC1Die,EAAW,wBACXC,EAASC,EAAO,OACT1nB,KAAKvC,OAAO8pB,EAAShe,EAAOie,EAAWC,EAChD,CACA,SAAShqB,GAAOkqB,GACTA,IACHA,EAAc3nB,KAAK2jB,QAAU/nB,EAAMgsB,iBAAmBhsB,EAAMisB,eAE9D,IAAIlkB,EAAS4B,EAAavF,KAAM2nB,GAChC,OAAO3nB,KAAKiF,aAAa6iB,WAAWnkB,EACtC,CACA,SAASrD,GAAKwlB,EAAMje,GAClB,OAAI7H,KAAKf,YAAcoC,EAASykB,IAASA,EAAK7mB,WAAaqe,GAAYwI,GAAM7mB,WACpEghB,GAAe,CACpB5f,GAAIL,KACJM,KAAMwlB,IACLpoB,OAAOsC,KAAKtC,UAAUqqB,UAAUlgB,GAE5B7H,KAAKiF,aAAaQ,aAE7B,CACA,SAASuiB,GAAQngB,GACf,OAAO7H,KAAKM,KAAKgd,KAAezV,EAClC,CACA,SAASxH,GAAGylB,EAAMje,GAChB,OAAI7H,KAAKf,YAAcoC,EAASykB,IAASA,EAAK7mB,WAAaqe,GAAYwI,GAAM7mB,WACpEghB,GAAe,CACpB3f,KAAMN,KACNK,GAAIylB,IACHpoB,OAAOsC,KAAKtC,UAAUqqB,UAAUlgB,GAE5B7H,KAAKiF,aAAaQ,aAE7B,CACA,SAASwiB,GAAMpgB,GACb,OAAO7H,KAAKK,GAAGid,KAAezV,EAChC,CAKA,SAASnK,GAAO7C,GACd,IAAIqtB,EACJ,YAAY3uB,IAARsB,EACKmF,KAAKiB,QAAQ8W,OAGC,OADrBmQ,EAAgBhQ,GAAUrd,MAExBmF,KAAKiB,QAAUinB,GAEVloB,KAEX,CAnGApE,EAAMisB,cAAgB,uBACtBjsB,EAAMgsB,iBAAmB,yBAmGzB,IAAIO,GAAO1mB,EAAU,mJAAmJ,SAAU5G,GAChL,YAAYtB,IAARsB,EACKmF,KAAKiF,aAELjF,KAAKtC,OAAO7C,EAEvB,IACA,SAASoK,KACP,OAAOjF,KAAKiB,OACd,CACA,IAAImnB,GAAgB,IAClBC,GAAgB,GAAKD,GACrBE,GAAc,GAAKD,GACnBE,GAAmB,QAAwBD,GAG7C,SAASE,GAAMC,EAAUC,GACvB,OAAQD,EAAWC,EAAUA,GAAWA,CAC1C,CACA,SAASC,GAAiBjhB,EAAG9N,EAAGE,GAE9B,OAAI4N,EAAI,KAAOA,GAAK,EAEX,IAAI1K,KAAK0K,EAAI,IAAK9N,EAAGE,GAAKyuB,GAE1B,IAAIvrB,KAAK0K,EAAG9N,EAAGE,GAAGyD,SAE7B,CACA,SAASqrB,GAAelhB,EAAG9N,EAAGE,GAE5B,OAAI4N,EAAI,KAAOA,GAAK,EAEX1K,KAAK6T,IAAInJ,EAAI,IAAK9N,EAAGE,GAAKyuB,GAE1BvrB,KAAK6T,IAAInJ,EAAG9N,EAAGE,EAE1B,CACA,SAASmsB,GAAQvd,GACf,IAAIod,EAAM+C,EAEV,QAActvB,KADdmP,EAAQD,GAAeC,KACc,gBAAVA,IAA4B1I,KAAKf,UAC1D,OAAOe,KAGT,OADA6oB,EAAc7oB,KAAKe,OAAS6nB,GAAiBD,GACrCjgB,GACN,IAAK,OACHod,EAAO+C,EAAY7oB,KAAKuJ,OAAQ,EAAG,GACnC,MACF,IAAK,UACHuc,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAAUlK,KAAKkK,QAAU,EAAG,GACjE,MACF,IAAK,QACH4b,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAAS,GAC9C,MACF,IAAK,OACH4b,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAASlK,KAAKmK,OAASnK,KAAKuR,WACjE,MACF,IAAK,UACHuU,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAASlK,KAAKmK,QAAUnK,KAAK8oB,aAAe,IACjF,MACF,IAAK,MACL,IAAK,OACHhD,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAASlK,KAAKmK,QACnD,MACF,IAAK,OACH2b,EAAO9lB,KAAKT,GAAGhC,UACfuoB,GAAQ0C,GAAM1C,GAAQ9lB,KAAKe,OAAS,EAAIf,KAAK0hB,YAAc2G,IAAgBC,IAC3E,MACF,IAAK,SACHxC,EAAO9lB,KAAKT,GAAGhC,UACfuoB,GAAQ0C,GAAM1C,EAAMuC,IACpB,MACF,IAAK,SACHvC,EAAO9lB,KAAKT,GAAGhC,UACfuoB,GAAQ0C,GAAM1C,EAAMsC,IAKxB,OAFApoB,KAAKT,GAAG6iB,QAAQ0D,GAChBlqB,EAAMwF,aAAapB,MAAM,GAClBA,IACT,CACA,SAASomB,GAAM1d,GACb,IAAIod,EAAM+C,EAEV,QAActvB,KADdmP,EAAQD,GAAeC,KACc,gBAAVA,IAA4B1I,KAAKf,UAC1D,OAAOe,KAGT,OADA6oB,EAAc7oB,KAAKe,OAAS6nB,GAAiBD,GACrCjgB,GACN,IAAK,OACHod,EAAO+C,EAAY7oB,KAAKuJ,OAAS,EAAG,EAAG,GAAK,EAC5C,MACF,IAAK,UACHuc,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAAUlK,KAAKkK,QAAU,EAAI,EAAG,GAAK,EAC1E,MACF,IAAK,QACH4b,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAAU,EAAG,GAAK,EACvD,MACF,IAAK,OACH4b,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAASlK,KAAKmK,OAASnK,KAAKuR,UAAY,GAAK,EAClF,MACF,IAAK,UACHuU,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAASlK,KAAKmK,QAAUnK,KAAK8oB,aAAe,GAAK,GAAK,EAC3F,MACF,IAAK,MACL,IAAK,OACHhD,EAAO+C,EAAY7oB,KAAKuJ,OAAQvJ,KAAKkK,QAASlK,KAAKmK,OAAS,GAAK,EACjE,MACF,IAAK,OACH2b,EAAO9lB,KAAKT,GAAGhC,UACfuoB,GAAQwC,GAAcE,GAAM1C,GAAQ9lB,KAAKe,OAAS,EAAIf,KAAK0hB,YAAc2G,IAAgBC,IAAe,EACxG,MACF,IAAK,SACHxC,EAAO9lB,KAAKT,GAAGhC,UACfuoB,GAAQuC,GAAgBG,GAAM1C,EAAMuC,IAAiB,EACrD,MACF,IAAK,SACHvC,EAAO9lB,KAAKT,GAAGhC,UACfuoB,GAAQsC,GAAgBI,GAAM1C,EAAMsC,IAAiB,EAKzD,OAFApoB,KAAKT,GAAG6iB,QAAQ0D,GAChBlqB,EAAMwF,aAAapB,MAAM,GAClBA,IACT,CACA,SAASzC,KACP,OAAOyC,KAAKT,GAAGhC,UAAkC,KAArByC,KAAKgB,SAAW,EAC9C,CACA,SAAS+nB,KACP,OAAO7kB,KAAKwF,MAAM1J,KAAKzC,UAAY,IACrC,CACA,SAAS8pB,KACP,OAAO,IAAIrqB,KAAKgD,KAAKzC,UACvB,CACA,SAASimB,KACP,IAAI5pB,EAAIoG,KACR,MAAO,CAACpG,EAAE2P,OAAQ3P,EAAEsQ,QAAStQ,EAAEuQ,OAAQvQ,EAAEmkB,OAAQnkB,EAAEilB,SAAUjlB,EAAEklB,SAAUllB,EAAEmlB,cAC7E,CACA,SAASiK,KACP,IAAIpvB,EAAIoG,KACR,MAAO,CACLogB,MAAOxmB,EAAE2P,OACTqE,OAAQhU,EAAEsQ,QACVC,KAAMvQ,EAAEuQ,OACRsL,MAAO7b,EAAE6b,QACTG,QAAShc,EAAEgc,UACXK,QAASrc,EAAEqc,UACXyK,aAAc9mB,EAAE8mB,eAEpB,CACA,SAASuI,KAEP,OAAOjpB,KAAKf,UAAYe,KAAKmnB,cAAgB,IAC/C,CACA,SAAS+B,KACP,OAAOjqB,EAAQe,KACjB,CACA,SAASmpB,KACP,OAAO7rB,EAAO,CAAC,EAAGyB,EAAgBiB,MACpC,CACA,SAASopB,KACP,OAAOrqB,EAAgBiB,MAAM9B,QAC/B,CACA,SAASmrB,KACP,MAAO,CACLntB,MAAO8D,KAAKW,GACZlD,OAAQuC,KAAKY,GACblD,OAAQsC,KAAKiB,QACbme,MAAOpf,KAAKe,OACZpD,OAAQqC,KAAKN,QAEjB,CAwCA,SAAS4pB,GAAW1vB,EAAG6D,GACrB,IAAInH,EACFgB,EACA6S,EACAof,EAAOvpB,KAAKwpB,OAAStR,GAAU,MAAMsR,MACvC,IAAKlzB,EAAI,EAAGgB,EAAIiyB,EAAK/yB,OAAQF,EAAIgB,IAAKhB,EAQpC,OANO,kBADQizB,EAAKjzB,GAAGmzB,QAGnBtf,EAAOvO,EAAM2tB,EAAKjzB,GAAGmzB,OAAOxD,QAAQ,OACpCsD,EAAKjzB,GAAGmzB,MAAQtf,EAAK5M,kBAGVgsB,EAAKjzB,GAAGozB,OACrB,IAAK,YACHH,EAAKjzB,GAAGozB,MAAQ,IAChB,MACF,IAAK,SAEHvf,EAAOvO,EAAM2tB,EAAKjzB,GAAGozB,OAAOzD,QAAQ,OAAO1oB,UAC3CgsB,EAAKjzB,GAAGozB,MAAQvf,EAAK5M,UAI3B,OAAOgsB,CACT,CACA,SAASI,GAAgBC,EAASnsB,EAAQE,GACxC,IAAIrH,EACFgB,EAEA+B,EACA+e,EACAyR,EAHAN,EAAOvpB,KAAKupB,OAKd,IADAK,EAAUA,EAAQrjB,cACbjQ,EAAI,EAAGgB,EAAIiyB,EAAK/yB,OAAQF,EAAIgB,IAAKhB,EAIpC,GAHA+C,EAAOkwB,EAAKjzB,GAAG+C,KAAKkN,cACpB6R,EAAOmR,EAAKjzB,GAAG8hB,KAAK7R,cACpBsjB,EAASN,EAAKjzB,GAAGuzB,OAAOtjB,cACpB5I,EACF,OAAQF,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,GAAI2a,IAASwR,EACX,OAAOL,EAAKjzB,GAEd,MACF,IAAK,OACH,GAAI+C,IAASuwB,EACX,OAAOL,EAAKjzB,GAEd,MACF,IAAK,QACH,GAAIuzB,IAAWD,EACb,OAAOL,EAAKjzB,QAIb,GAAI,CAAC+C,EAAM+e,EAAMyR,GAAQ/c,QAAQ8c,IAAY,EAClD,OAAOL,EAAKjzB,EAGlB,CACA,SAASwzB,GAAsBnrB,EAAK4K,GAClC,IAAIwgB,EAAMprB,EAAI8qB,OAAS9qB,EAAI+qB,MAAQ,GAAM,EACzC,YAAanwB,IAATgQ,EACK3N,EAAM+C,EAAI8qB,OAAOlgB,OAEjB3N,EAAM+C,EAAI8qB,OAAOlgB,QAAUA,EAAO5K,EAAI6iB,QAAUuI,CAE3D,CACA,SAASC,KACP,IAAI1zB,EACFgB,EACAkJ,EACA+oB,EAAOvpB,KAAKiF,aAAaskB,OAC3B,IAAKjzB,EAAI,EAAGgB,EAAIiyB,EAAK/yB,OAAQF,EAAIgB,IAAKhB,EAAG,CAGvC,GADAkK,EAAMR,KAAKmiB,QAAQ8D,QAAQ,OAAO1oB,UAC9BgsB,EAAKjzB,GAAGmzB,OAASjpB,GAAOA,GAAO+oB,EAAKjzB,GAAGozB,MACzC,OAAOH,EAAKjzB,GAAG+C,KAEjB,GAAIkwB,EAAKjzB,GAAGozB,OAASlpB,GAAOA,GAAO+oB,EAAKjzB,GAAGmzB,MACzC,OAAOF,EAAKjzB,GAAG+C,IAEnB,CACA,MAAO,EACT,CACA,SAAS4wB,KACP,IAAI3zB,EACFgB,EACAkJ,EACA+oB,EAAOvpB,KAAKiF,aAAaskB,OAC3B,IAAKjzB,EAAI,EAAGgB,EAAIiyB,EAAK/yB,OAAQF,EAAIgB,IAAKhB,EAAG,CAGvC,GADAkK,EAAMR,KAAKmiB,QAAQ8D,QAAQ,OAAO1oB,UAC9BgsB,EAAKjzB,GAAGmzB,OAASjpB,GAAOA,GAAO+oB,EAAKjzB,GAAGozB,MACzC,OAAOH,EAAKjzB,GAAGuzB,OAEjB,GAAIN,EAAKjzB,GAAGozB,OAASlpB,GAAOA,GAAO+oB,EAAKjzB,GAAGmzB,MACzC,OAAOF,EAAKjzB,GAAGuzB,MAEnB,CACA,MAAO,EACT,CACA,SAASK,KACP,IAAI5zB,EACFgB,EACAkJ,EACA+oB,EAAOvpB,KAAKiF,aAAaskB,OAC3B,IAAKjzB,EAAI,EAAGgB,EAAIiyB,EAAK/yB,OAAQF,EAAIgB,IAAKhB,EAAG,CAGvC,GADAkK,EAAMR,KAAKmiB,QAAQ8D,QAAQ,OAAO1oB,UAC9BgsB,EAAKjzB,GAAGmzB,OAASjpB,GAAOA,GAAO+oB,EAAKjzB,GAAGozB,MACzC,OAAOH,EAAKjzB,GAAG8hB,KAEjB,GAAImR,EAAKjzB,GAAGozB,OAASlpB,GAAOA,GAAO+oB,EAAKjzB,GAAGmzB,MACzC,OAAOF,EAAKjzB,GAAG8hB,IAEnB,CACA,MAAO,EACT,CACA,SAAS+R,KACP,IAAI7zB,EACFgB,EACAyyB,EACAvpB,EACA+oB,EAAOvpB,KAAKiF,aAAaskB,OAC3B,IAAKjzB,EAAI,EAAGgB,EAAIiyB,EAAK/yB,OAAQF,EAAIgB,IAAKhB,EAKpC,GAJAyzB,EAAMR,EAAKjzB,GAAGmzB,OAASF,EAAKjzB,GAAGozB,MAAQ,GAAM,EAG7ClpB,EAAMR,KAAKmiB,QAAQ8D,QAAQ,OAAO1oB,UAC9BgsB,EAAKjzB,GAAGmzB,OAASjpB,GAAOA,GAAO+oB,EAAKjzB,GAAGozB,OAASH,EAAKjzB,GAAGozB,OAASlpB,GAAOA,GAAO+oB,EAAKjzB,GAAGmzB,MACzF,OAAQzpB,KAAKuJ,OAAS3N,EAAM2tB,EAAKjzB,GAAGmzB,OAAOlgB,QAAUwgB,EAAMR,EAAKjzB,GAAGkrB,OAGvE,OAAOxhB,KAAKuJ,MACd,CACA,SAAS6gB,GAActe,GAIrB,OAHKxP,EAAW0D,KAAM,mBACpBqqB,GAAiBzzB,KAAKoJ,MAEjB8L,EAAW9L,KAAKsqB,eAAiBtqB,KAAKuqB,UAC/C,CACA,SAASC,GAAc1e,GAIrB,OAHKxP,EAAW0D,KAAM,mBACpBqqB,GAAiBzzB,KAAKoJ,MAEjB8L,EAAW9L,KAAKyqB,eAAiBzqB,KAAKuqB,UAC/C,CACA,SAASG,GAAgB5e,GAIvB,OAHKxP,EAAW0D,KAAM,qBACpBqqB,GAAiBzzB,KAAKoJ,MAEjB8L,EAAW9L,KAAK2qB,iBAAmB3qB,KAAKuqB,UACjD,CACA,SAASK,GAAa9e,EAAUpO,GAC9B,OAAOA,EAAO8sB,cAAc1e,EAC9B,CACA,SAAS+e,GAAa/e,EAAUpO,GAC9B,OAAOA,EAAO0sB,cAActe,EAC9B,CACA,SAASgf,GAAehf,EAAUpO,GAChC,OAAOA,EAAOgtB,gBAAgB5e,EAChC,CACA,SAASif,GAAoBjf,EAAUpO,GACrC,OAAOA,EAAOstB,sBAAwB3f,EACxC,CACA,SAASgf,KACP,IAIE/zB,EACAgB,EALE2zB,EAAa,GACfC,EAAa,GACbC,EAAe,GACfjb,EAAc,GAGdqZ,EAAOvpB,KAAKupB,OACd,IAAKjzB,EAAI,EAAGgB,EAAIiyB,EAAK/yB,OAAQF,EAAIgB,IAAKhB,EACpC40B,EAAWp0B,KAAKmV,GAAYsd,EAAKjzB,GAAG+C,OACpC4xB,EAAWn0B,KAAKmV,GAAYsd,EAAKjzB,GAAG8hB,OACpC+S,EAAar0B,KAAKmV,GAAYsd,EAAKjzB,GAAGuzB,SACtC3Z,EAAYpZ,KAAKmV,GAAYsd,EAAKjzB,GAAG+C,OACrC6W,EAAYpZ,KAAKmV,GAAYsd,EAAKjzB,GAAG8hB,OACrClI,EAAYpZ,KAAKmV,GAAYsd,EAAKjzB,GAAGuzB,SAEvC7pB,KAAKuqB,WAAa,IAAI9nB,OAAO,KAAOyN,EAAYnO,KAAK,KAAO,IAAK,KACjE/B,KAAKsqB,eAAiB,IAAI7nB,OAAO,KAAOyoB,EAAWnpB,KAAK,KAAO,IAAK,KACpE/B,KAAKyqB,eAAiB,IAAIhoB,OAAO,KAAOwoB,EAAWlpB,KAAK,KAAO,IAAK,KACpE/B,KAAK2qB,iBAAmB,IAAIloB,OAAO,KAAO0oB,EAAappB,KAAK,KAAO,IAAK,IAC1E,CAUA,SAASqpB,GAAuBvmB,EAAO9K,GACrC6K,EAAe,EAAG,CAACC,EAAOA,EAAMrO,QAAS,EAAGuD,EAC9C,CAmCA,SAASsxB,GAAenvB,GACtB,OAAOovB,GAAqB10B,KAAKoJ,KAAM9D,EAAO8D,KAAKsR,OAAQtR,KAAKuR,UAAWvR,KAAKiF,aAAagN,MAAMhB,IAAKjR,KAAKiF,aAAagN,MAAMf,IAClI,CACA,SAASqa,GAAkBrvB,GACzB,OAAOovB,GAAqB10B,KAAKoJ,KAAM9D,EAAO8D,KAAKwgB,UAAWxgB,KAAK8oB,aAAc,EAAG,EACtF,CACA,SAAS0C,KACP,OAAO1Z,GAAY9R,KAAKuJ,OAAQ,EAAG,EACrC,CACA,SAASkiB,KACP,OAAO3Z,GAAY9R,KAAK0rB,cAAe,EAAG,EAC5C,CACA,SAASC,KACP,IAAIC,EAAW5rB,KAAKiF,aAAagN,MACjC,OAAOH,GAAY9R,KAAKuJ,OAAQqiB,EAAS3a,IAAK2a,EAAS1a,IACzD,CACA,SAAS2a,KACP,IAAID,EAAW5rB,KAAKiF,aAAagN,MACjC,OAAOH,GAAY9R,KAAK+c,WAAY6O,EAAS3a,IAAK2a,EAAS1a,IAC7D,CACA,SAASoa,GAAqBpvB,EAAOoV,EAAMC,EAASN,EAAKC,GACvD,IAAI4a,EACJ,OAAa,MAAT5vB,EACKyV,GAAW3R,KAAMiR,EAAKC,GAAK3H,MAG9B+H,GADJwa,EAAcha,GAAY5V,EAAO+U,EAAKC,MAEpCI,EAAOwa,GAEFC,GAAWn1B,KAAKoJ,KAAM9D,EAAOoV,EAAMC,EAASN,EAAKC,GAE5D,CACA,SAAS6a,GAAWhP,EAAUzL,EAAMC,EAASN,EAAKC,GAChD,IAAI8a,EAAgB3a,GAAmB0L,EAAUzL,EAAMC,EAASN,EAAKC,GACnE/G,EAAOyG,GAAcob,EAAcziB,KAAM,EAAGyiB,EAActa,WAI5D,OAHA1R,KAAKuJ,KAAKY,EAAK2G,kBACf9Q,KAAKkK,MAAMC,EAAKiS,eAChBpc,KAAKmK,KAAKA,EAAKkS,cACRrc,IACT,CAuBA,SAASisB,GAAc/vB,GACrB,OAAgB,MAATA,EAAgBgI,KAAKuF,MAAMzJ,KAAKkK,QAAU,GAAK,GAAKlK,KAAKkK,MAAoB,GAAbhO,EAAQ,GAAS8D,KAAKkK,QAAU,EACzG,CAnVAtF,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAC9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WACpC+G,GAAc,IAAKif,IACnBjf,GAAc,KAAMif,IACpBjf,GAAc,MAAOif,IACrBjf,GAAc,OAAQkf,IACtBlf,GAAc,QAASmf,IACvBte,GAAc,CAAC,IAAK,KAAM,MAAO,OAAQ,UAAU,SAAUtQ,EAAOoJ,EAAOnE,EAAQ0D,GACjF,IAAIlG,EAAMwC,EAAOF,QAAQirB,UAAUhwB,EAAO2I,EAAO1D,EAAOzB,SACpDf,EACFI,EAAgBoC,GAAQxC,IAAMA,EAE9BI,EAAgBoC,GAAQ9C,WAAanC,CAEzC,IACAyP,GAAc,IAAKN,IACnBM,GAAc,KAAMN,IACpBM,GAAc,MAAON,IACrBM,GAAc,OAAQN,IACtBM,GAAc,KAAMof,IACpBve,GAAc,CAAC,IAAK,KAAM,MAAO,QAASO,IAC1CP,GAAc,CAAC,OAAO,SAAUtQ,EAAOoJ,EAAOnE,EAAQ0D,GACpD,IAAIM,EACAhE,EAAOF,QAAQ+pB,uBACjB7lB,EAAQjJ,EAAMiJ,MAAMhE,EAAOF,QAAQ+pB,uBAEjC7pB,EAAOF,QAAQkrB,oBACjB7mB,EAAMyH,IAAQ5L,EAAOF,QAAQkrB,oBAAoBjwB,EAAOiJ,GAExDG,EAAMyH,IAAQsD,SAASnU,EAAO,GAElC,IAkMA0I,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAO5E,KAAK+c,WAAa,GAC3B,IACAnY,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,OAAO5E,KAAK0rB,cAAgB,GAC9B,IAIAN,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhChjB,GAAa,WAAY,MACzBA,GAAa,cAAe,MAI5BY,GAAgB,WAAY,GAC5BA,GAAgB,cAAe,GAI/B2C,GAAc,IAAKL,IACnBK,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,QAASP,GAAWN,IAClC4B,GAAkB,CAAC,OAAQ,QAAS,OAAQ,UAAU,SAAUxQ,EAAOoV,EAAMnQ,EAAQ0D,GACnFyM,EAAKzM,EAAMN,OAAO,EAAG,IAAMoF,GAAMzN,EACnC,IACAwQ,GAAkB,CAAC,KAAM,OAAO,SAAUxQ,EAAOoV,EAAMnQ,EAAQ0D,GAC7DyM,EAAKzM,GAASjJ,EAAMwU,kBAAkBlU,EACxC,IA+CA0I,EAAe,IAAK,EAAG,KAAM,WAI7BwD,GAAa,UAAW,KAIxBY,GAAgB,UAAW,GAI3B2C,GAAc,IAAKjB,IACnB8B,GAAc,KAAK,SAAUtQ,EAAOoJ,GAClCA,EAAM0H,IAA8B,GAApBrD,GAAMzN,GAAS,EACjC,IAUA0I,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCwD,GAAa,OAAQ,KAGrBY,GAAgB,OAAQ,GAIxB2C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,MAAM,SAAUG,EAAUpO,GAEtC,OAAOoO,EAAWpO,EAAOgF,yBAA2BhF,EAAOkF,cAAgBlF,EAAO8E,8BACpF,IACAgK,GAAc,CAAC,IAAK,MAAOS,IAC3BT,GAAc,MAAM,SAAUtQ,EAAOoJ,GACnCA,EAAM2H,IAAQtD,GAAMzN,EAAMiJ,MAAM4F,IAAW,GAC7C,IAIA,IAAIqhB,GAAmBriB,GAAW,QAAQ,GAyB1C,SAASsiB,GAAgBnwB,GACvB,IAAIwV,EAAYxN,KAAK+c,OAAOjhB,KAAKmiB,QAAQ8D,QAAQ,OAASjmB,KAAKmiB,QAAQ8D,QAAQ,SAAW,OAAS,EACnG,OAAgB,MAAT/pB,EAAgBwV,EAAY1R,KAAKsS,IAAIpW,EAAQwV,EAAW,IACjE,CAxBA9M,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3CwD,GAAa,YAAa,OAG1BY,GAAgB,YAAa,GAI7B2C,GAAc,MAAOT,IACrBS,GAAc,OAAQf,IACtB4B,GAAc,CAAC,MAAO,SAAS,SAAUtQ,EAAOoJ,EAAOnE,GACrDA,EAAO0b,WAAalT,GAAMzN,EAC5B,IAaA0I,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCwD,GAAa,SAAU,KAIvBY,GAAgB,SAAU,IAI1B2C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B6B,GAAc,CAAC,IAAK,MAAOW,IAI3B,IAAImf,GAAeviB,GAAW,WAAW,GAIzCnF,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCwD,GAAa,SAAU,KAIvBY,GAAgB,SAAU,IAI1B2C,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/B6B,GAAc,CAAC,IAAK,MAAOY,IAI3B,IA2CIvI,GAAO0nB,GA3CPC,GAAeziB,GAAW,WAAW,GA4CzC,IAxCAnF,EAAe,IAAK,EAAG,GAAG,WACxB,SAAU5E,KAAK+e,cAAgB,IACjC,IACAna,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC9B,SAAU5E,KAAK+e,cAAgB,GACjC,IACAna,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAChC,OAA4B,GAArB5E,KAAK+e,aACd,IACAna,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WACjC,OAA4B,IAArB5E,KAAK+e,aACd,IACAna,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAClC,OAA4B,IAArB5E,KAAK+e,aACd,IACAna,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACnC,OAA4B,IAArB5E,KAAK+e,aACd,IACAna,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WACpC,OAA4B,IAArB5E,KAAK+e,aACd,IACAna,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACrC,OAA4B,IAArB5E,KAAK+e,aACd,IAIA3W,GAAa,cAAe,MAI5BY,GAAgB,cAAe,IAI/B2C,GAAc,IAAKT,GAAWR,IAC9BiB,GAAc,KAAMT,GAAWP,IAC/BgB,GAAc,MAAOT,GAAWN,IAE3B/F,GAAQ,OAAQA,GAAMrO,QAAU,EAAGqO,IAAS,IAC/C8G,GAAc9G,GAAOwG,IAEvB,SAASohB,GAAQvwB,EAAOoJ,GACtBA,EAAM+H,IAAe1D,GAAuB,KAAhB,KAAOzN,GACrC,CACA,IAAK2I,GAAQ,IAAKA,GAAMrO,QAAU,EAAGqO,IAAS,IAC5C2H,GAAc3H,GAAO4nB,IAWvB,SAASC,KACP,OAAO1sB,KAAKe,OAAS,MAAQ,EAC/B,CACA,SAAS4rB,KACP,OAAO3sB,KAAKe,OAAS,6BAA+B,EACtD,CAdAwrB,GAAoBxiB,GAAW,gBAAgB,GAI/CnF,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAU3B,IAAIgoB,GAAQ1rB,EAAOxK,UAuFnB,SAASm2B,GAAW3wB,GAClB,OAAOohB,GAAoB,IAARphB,EACrB,CACA,SAAS4wB,KACP,OAAOxP,GAAYzhB,MAAM,KAAMC,WAAWixB,WAC5C,CACA,SAASC,GAAmBllB,GAC1B,OAAOA,CACT,CA9FA8kB,GAAMta,IAAMA,GACZsa,GAAMppB,SAAWqiB,GACjB+G,GAAMzK,MAAQA,GACdyK,GAAM1kB,KAAOA,GACb0kB,GAAMxG,MAAQA,GACdwG,GAAMnvB,OAASA,GACfmvB,GAAMtsB,KAAOA,GACbssB,GAAM5E,QAAUA,GAChB4E,GAAMvsB,GAAKA,GACXusB,GAAM3E,MAAQA,GACd2E,GAAMzyB,IAAMkQ,GACZuiB,GAAMxD,UAAYA,GAClBwD,GAAMvI,QAAUA,GAChBuI,GAAMtI,SAAWA,GACjBsI,GAAMvG,UAAYA,GAClBuG,GAAMnG,OAASA,GACfmG,GAAMjG,cAAgBA,GACtBiG,GAAMhG,eAAiBA,GACvBgG,GAAM3tB,QAAUiqB,GAChB0D,GAAMzE,KAAOA,GACbyE,GAAMlvB,OAASA,GACfkvB,GAAM3nB,WAAaA,GACnB2nB,GAAMtoB,IAAMib,GACZqN,GAAMrd,IAAM8P,GACZuN,GAAMzD,aAAeA,GACrByD,GAAMtqB,IAAMgI,GACZsiB,GAAM3G,QAAUA,GAChB2G,GAAM3J,SAAWA,GACjB2J,GAAMpJ,QAAUA,GAChBoJ,GAAM5D,SAAWA,GACjB4D,GAAMvF,OAASA,GACfuF,GAAMzF,YAAcA,GACpByF,GAAMtF,QAAUA,GACM,qBAAXjtB,QAAwC,MAAdA,OAAO4yB,MAC1CL,GAAMvyB,OAAO4yB,IAAI,+BAAiC,WAChD,MAAO,UAAYjtB,KAAKvC,SAAW,GACrC,GAEFmvB,GAAM3D,OAASA,GACf2D,GAAMxwB,SAAWA,GACjBwwB,GAAM7D,KAAOA,GACb6D,GAAMrvB,QAAUA,GAChBqvB,GAAMvD,aAAeA,GACrBuD,GAAMhD,QAAUI,GAChB4C,GAAMM,UAAYjD,GAClB2C,GAAMO,QAAUjD,GAChB0C,GAAMQ,QAAUjD,GAChByC,GAAMrjB,KAAO+G,GACbsc,GAAMtjB,WAAaiH,GACnBqc,GAAM7P,SAAWsO,GACjBuB,GAAMlB,YAAcH,GACpBqB,GAAMtM,QAAUsM,GAAMvM,SAAW4L,GACjCW,GAAM1iB,MAAQsF,GACdod,GAAMxiB,YAAcqF,GACpBmd,GAAMtb,KAAOsb,GAAMrM,MAAQlO,GAC3Bua,GAAMpM,QAAUoM,GAAMS,SAAW9a,GACjCqa,GAAM9a,YAAc6Z,GACpBiB,GAAMU,gBAAkBzB,GACxBe,GAAMW,eAAiB/B,GACvBoB,GAAMY,sBAAwB/B,GAC9BmB,GAAMziB,KAAOiiB,GACbQ,GAAMhZ,IAAMgZ,GAAMnM,KAAOhM,GACzBmY,GAAMrb,QAAUoD,GAChBiY,GAAM9D,WAAalU,GACnBgY,GAAMlb,UAAY2a,GAClBO,GAAM7O,KAAO6O,GAAMnX,MAAQiB,GAC3BkW,GAAM/N,OAAS+N,GAAMhX,QAAU0W,GAC/BM,GAAM9N,OAAS8N,GAAM3W,QAAUuW,GAC/BI,GAAM7N,YAAc6N,GAAMlM,aAAe6L,GACzCK,GAAMlL,UAAYc,GAClBoK,GAAM/uB,IAAMklB,GACZ6J,GAAMvK,MAAQW,GACd4J,GAAMG,UAAY7J,GAClB0J,GAAMxJ,qBAAuBA,GAC7BwJ,GAAMa,MAAQpK,GACduJ,GAAMnJ,QAAUA,GAChBmJ,GAAMlJ,YAAcA,GACpBkJ,GAAMjJ,MAAQA,GACdiJ,GAAMxN,MAAQuE,GACdiJ,GAAMc,SAAWhB,GACjBE,GAAMe,SAAWhB,GACjBC,GAAMgB,MAAQnsB,EAAU,kDAAmD2qB,IAC3EQ,GAAMhf,OAASnM,EAAU,mDAAoD+N,IAC7Eod,GAAMxM,MAAQ3e,EAAU,iDAAkD6O,IAC1Esc,GAAMlF,KAAOjmB,EAAU,2GAA4GqhB,IACnI8J,GAAMiB,aAAepsB,EAAU,0GAA2G6hB,IAU1I,IAAIwK,GAAU9qB,EAAOtM,UAiCrB,SAASq3B,GAAMtwB,EAAQuwB,EAAOC,EAAOC,GACnC,IAAIxwB,EAASwa,KACXra,EAAML,IAAY8E,IAAI4rB,EAAQF,GAChC,OAAOtwB,EAAOuwB,GAAOpwB,EAAKJ,EAC5B,CACA,SAAS0wB,GAAe1wB,EAAQuwB,EAAOC,GAMrC,GALInxB,EAASW,KACXuwB,EAAQvwB,EACRA,OAASlE,GAEXkE,EAASA,GAAU,GACN,MAATuwB,EACF,OAAOD,GAAMtwB,EAAQuwB,EAAOC,EAAO,SAErC,IAAI33B,EACF83B,EAAM,GACR,IAAK93B,EAAI,EAAGA,EAAI,GAAIA,IAClB83B,EAAI93B,GAAKy3B,GAAMtwB,EAAQnH,EAAG23B,EAAO,SAEnC,OAAOG,CACT,CAUA,SAASC,GAAiBC,EAAc7wB,EAAQuwB,EAAOC,GACzB,mBAAjBK,GACLxxB,EAASW,KACXuwB,EAAQvwB,EACRA,OAASlE,GAEXkE,EAASA,GAAU,KAGnBuwB,EADAvwB,EAAS6wB,EAETA,GAAe,EACXxxB,EAASW,KACXuwB,EAAQvwB,EACRA,OAASlE,GAEXkE,EAASA,GAAU,IAErB,IAEEnH,EAFEoH,EAASwa,KACXjhB,EAAQq3B,EAAe5wB,EAAOuU,MAAMhB,IAAM,EAE1Cmd,EAAM,GACR,GAAa,MAATJ,EACF,OAAOD,GAAMtwB,GAASuwB,EAAQ/2B,GAAS,EAAGg3B,EAAO,OAEnD,IAAK33B,EAAI,EAAGA,EAAI,EAAGA,IACjB83B,EAAI93B,GAAKy3B,GAAMtwB,GAASnH,EAAIW,GAAS,EAAGg3B,EAAO,OAEjD,OAAOG,CACT,CACA,SAASG,GAAW9wB,EAAQuwB,GAC1B,OAAOG,GAAe1wB,EAAQuwB,EAAO,SACvC,CACA,SAASQ,GAAgB/wB,EAAQuwB,GAC/B,OAAOG,GAAe1wB,EAAQuwB,EAAO,cACvC,CACA,SAASS,GAAaH,EAAc7wB,EAAQuwB,GAC1C,OAAOK,GAAiBC,EAAc7wB,EAAQuwB,EAAO,WACvD,CACA,SAASU,GAAkBJ,EAAc7wB,EAAQuwB,GAC/C,OAAOK,GAAiBC,EAAc7wB,EAAQuwB,EAAO,gBACvD,CACA,SAASW,GAAgBL,EAAc7wB,EAAQuwB,GAC7C,OAAOK,GAAiBC,EAAc7wB,EAAQuwB,EAAO,cACvD,CAzGAF,GAAQtqB,SAAWA,EACnBsqB,GAAQnoB,eAAiBA,EACzBmoB,GAAQroB,YAAcA,EACtBqoB,GAAQ/oB,QAAUA,EAClB+oB,GAAQ5O,SAAW8N,GACnBc,GAAQhG,WAAakF,GACrBc,GAAQlmB,aAAeA,GACvBkmB,GAAQ7lB,WAAaA,GACrB6lB,GAAQxrB,IAAMA,EACdwrB,GAAQvE,KAAOD,GACfwE,GAAQ5B,UAAYvC,GACpBmE,GAAQhQ,gBAAkBgM,GAC1BgE,GAAQtD,cAAgBA,GACxBsD,GAAQ1D,cAAgBA,GACxB0D,GAAQpD,gBAAkBA,GAC1BoD,GAAQlgB,OAASU,GACjBwf,GAAQngB,YAAcc,GACtBqf,GAAQ/f,YAAcoB,GACtB2e,GAAQhgB,YAAcA,GACtBggB,GAAQjgB,iBAAmBA,GAC3BigB,GAAQxc,KAAOU,GACf8b,GAAQc,eAAiBxc,GACzB0b,GAAQe,eAAiB1c,GACzB2b,GAAQ9a,SAAWU,GACnBoa,GAAQhb,YAAciB,GACtB+Z,GAAQ/a,cAAgBc,GACxBia,GAAQrb,cAAgB6B,GACxBwZ,GAAQ3a,cAAgBA,GACxB2a,GAAQ5a,mBAAqBA,GAC7B4a,GAAQ7a,iBAAmBA,GAC3B6a,GAAQ1X,KAAOL,GACf+X,GAAQlvB,SAAW+X,GA2EnBqB,GAAmB,KAAM,CACvBuR,KAAM,CAAC,CACLE,MAAO,aACPC,MAAO,IACPlI,OAAQ,EACRnoB,KAAM,cACNwwB,OAAQ,KACRzR,KAAM,MACL,CACDqR,MAAO,aACPC,OAAO,IACPlI,OAAQ,EACRnoB,KAAM,gBACNwwB,OAAQ,KACRzR,KAAM,OAERrB,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GADiC,IAA7B6F,GAAM7F,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAExG,IAKFZ,EAAMusB,KAAO1mB,EAAU,wDAAyDuW,IAChFpc,EAAMkzB,SAAWrtB,EAAU,gEAAiEyW,IAC5F,IAAI6W,GAAU7qB,KAAKC,IACnB,SAASA,KACP,IAAIlO,EAAO+J,KAAK6gB,MAUhB,OATA7gB,KAAK2gB,cAAgBoO,GAAQ/uB,KAAK2gB,eAClC3gB,KAAK4gB,MAAQmO,GAAQ/uB,KAAK4gB,OAC1B5gB,KAAKuO,QAAUwgB,GAAQ/uB,KAAKuO,SAC5BtY,EAAKyqB,aAAeqO,GAAQ94B,EAAKyqB,cACjCzqB,EAAKggB,QAAU8Y,GAAQ94B,EAAKggB,SAC5BhgB,EAAK2f,QAAUmZ,GAAQ94B,EAAK2f,SAC5B3f,EAAKwf,MAAQsZ,GAAQ94B,EAAKwf,OAC1Bxf,EAAK2X,OAASmhB,GAAQ94B,EAAK2X,QAC3B3X,EAAKmqB,MAAQ2O,GAAQ94B,EAAKmqB,OACnBpgB,IACT,CACA,SAASgvB,GAAc7O,EAAUjkB,EAAO3B,EAAOiqB,GAC7C,IAAIlF,EAAQW,GAAe/jB,EAAO3B,GAIlC,OAHA4lB,EAASQ,eAAiB6D,EAAYlF,EAAMqB,cAC5CR,EAASS,OAAS4D,EAAYlF,EAAMsB,MACpCT,EAAS5R,SAAWiW,EAAYlF,EAAM/Q,QAC/B4R,EAASW,SAClB,CAGA,SAASmO,GAAM/yB,EAAO3B,GACpB,OAAOy0B,GAAchvB,KAAM9D,EAAO3B,EAAO,EAC3C,CAGA,SAAS20B,GAAWhzB,EAAO3B,GACzB,OAAOy0B,GAAchvB,KAAM9D,EAAO3B,GAAQ,EAC5C,CACA,SAAS40B,GAAQrrB,GACf,OAAIA,EAAS,EACJI,KAAKwF,MAAM5F,GAEXI,KAAKuF,KAAK3F,EAErB,CACA,SAASsrB,KACP,IAIEnZ,EACAL,EACAH,EACA2K,EACAiP,EARE3O,EAAe1gB,KAAK2gB,cACtBF,EAAOzgB,KAAK4gB,MACZhT,EAAS5N,KAAKuO,QACdtY,EAAO+J,KAAK6gB,MAqCd,OA5BMH,GAAgB,GAAKD,GAAQ,GAAK7S,GAAU,GAAK8S,GAAgB,GAAKD,GAAQ,GAAK7S,GAAU,IACjG8S,GAAuD,MAAvCyO,GAAQG,GAAa1hB,GAAU6S,GAC/CA,EAAO,EACP7S,EAAS,GAKX3X,EAAKyqB,aAAeA,EAAe,IACnCzK,EAAUzM,GAASkX,EAAe,KAClCzqB,EAAKggB,QAAUA,EAAU,GACzBL,EAAUpM,GAASyM,EAAU,IAC7BhgB,EAAK2f,QAAUA,EAAU,GACzBH,EAAQjM,GAASoM,EAAU,IAC3B3f,EAAKwf,MAAQA,EAAQ,GACrBgL,GAAQjX,GAASiM,EAAQ,IAIzB7H,GADAyhB,EAAiB7lB,GAAS+lB,GAAa9O,IAEvCA,GAAQ0O,GAAQG,GAAaD,IAG7BjP,EAAQ5W,GAASoE,EAAS,IAC1BA,GAAU,GACV3X,EAAKwqB,KAAOA,EACZxqB,EAAK2X,OAASA,EACd3X,EAAKmqB,MAAQA,EACNpgB,IACT,CACA,SAASuvB,GAAa9O,GAGpB,OAAc,KAAPA,EAAc,MACvB,CACA,SAAS6O,GAAa1hB,GAEpB,OAAgB,OAATA,EAAkB,IAC3B,CACA,SAAS4hB,GAAG9mB,GACV,IAAK1I,KAAKf,UACR,OAAOa,IAET,IAAI2gB,EACF7S,EACA8S,EAAe1gB,KAAK2gB,cAEtB,GAAc,WADdjY,EAAQD,GAAeC,KACY,YAAVA,GAAiC,SAAVA,EAG9C,OAFA+X,EAAOzgB,KAAK4gB,MAAQF,EAAe,MACnC9S,EAAS5N,KAAKuO,QAAUghB,GAAa9O,GAC7B/X,GACN,IAAK,QACH,OAAOkF,EACT,IAAK,UACH,OAAOA,EAAS,EAClB,IAAK,OACH,OAAOA,EAAS,QAKpB,OADA6S,EAAOzgB,KAAK4gB,MAAQ1c,KAAK+c,MAAMqO,GAAatvB,KAAKuO,UACzC7F,GACN,IAAK,OACH,OAAO+X,EAAO,EAAIC,EAAe,OACnC,IAAK,MACH,OAAOD,EAAOC,EAAe,MAC/B,IAAK,OACH,OAAc,GAAPD,EAAYC,EAAe,KACpC,IAAK,SACH,OAAc,KAAPD,EAAcC,EAAe,IACtC,IAAK,SACH,OAAc,MAAPD,EAAeC,EAAe,IAEvC,IAAK,cACH,OAAOxc,KAAKwF,MAAa,MAAP+W,GAAgBC,EACpC,QACE,MAAM,IAAIhoB,MAAM,gBAAkBgQ,GAG1C,CAGA,SAAS+mB,KACP,OAAKzvB,KAAKf,UAGHe,KAAK2gB,cAA6B,MAAb3gB,KAAK4gB,MAAgB5gB,KAAKuO,QAAU,GAAK,OAAoC,QAA3B5E,GAAM3J,KAAKuO,QAAU,IAF1FzO,GAGX,CACA,SAAS4vB,GAAOC,GACd,OAAO,WACL,OAAO3vB,KAAKwvB,GAAGG,EACjB,CACF,CACA,IAAIC,GAAiBF,GAAO,MAC1BG,GAAYH,GAAO,KACnBI,GAAYJ,GAAO,KACnBK,GAAUL,GAAO,KACjBM,GAASN,GAAO,KAChBO,GAAUP,GAAO,KACjBQ,GAAWR,GAAO,KAClBS,GAAaT,GAAO,KACpBU,GAAUV,GAAO,KACnB,SAASW,KACP,OAAOpQ,GAAejgB,KACxB,CACA,SAASswB,GAAM5nB,GAEb,OADAA,EAAQD,GAAeC,GAChB1I,KAAKf,UAAYe,KAAK0I,EAAQ,OAAS5I,GAChD,CACA,SAASywB,GAAWl3B,GAClB,OAAO,WACL,OAAO2G,KAAKf,UAAYe,KAAK6gB,MAAMxnB,GAAQyG,GAC7C,CACF,CACA,IAAI4gB,GAAe6P,GAAW,gBAC5Bta,GAAUsa,GAAW,WACrB3a,GAAU2a,GAAW,WACrB9a,GAAQ8a,GAAW,SACnB9P,GAAO8P,GAAW,QAClB3iB,GAAS2iB,GAAW,UACpBnQ,GAAQmQ,GAAW,SACrB,SAAShQ,KACP,OAAO/W,GAASxJ,KAAKygB,OAAS,EAChC,CACA,IAAIQ,GAAQ/c,KAAK+c,MACfuP,GAAa,CACXvpB,GAAI,GAEJxL,EAAG,GAEH7B,EAAG,GAEHuN,EAAG,GAEHrN,EAAG,GAEHwN,EAAG,KAEHE,EAAG,IAIP,SAASipB,GAAkB3oB,EAAQhE,EAAQ+D,EAAeE,EAAUrK,GAClE,OAAOA,EAAOkK,aAAa9D,GAAU,IAAK+D,EAAeC,EAAQC,EACnE,CACA,SAAS2oB,GAAeC,EAAgB9oB,EAAe2oB,EAAY9yB,GACjE,IAAIyiB,EAAWF,GAAe0Q,GAAgBxsB,MAC5C8R,EAAUgL,GAAMd,EAASqP,GAAG,MAC5B5Z,EAAUqL,GAAMd,EAASqP,GAAG,MAC5B/Z,EAAQwL,GAAMd,EAASqP,GAAG,MAC1B/O,EAAOQ,GAAMd,EAASqP,GAAG,MACzB5hB,EAASqT,GAAMd,EAASqP,GAAG,MAC3BjP,EAAQU,GAAMd,EAASqP,GAAG,MAC1BpP,EAAQa,GAAMd,EAASqP,GAAG,MAC1BjzB,EAAI0Z,GAAWua,EAAWvpB,IAAM,CAAC,IAAKgP,IAAYA,EAAUua,EAAW/0B,GAAK,CAAC,KAAMwa,IAAYL,GAAW,GAAK,CAAC,MAAQA,EAAU4a,EAAW52B,GAAK,CAAC,KAAMgc,IAAYH,GAAS,GAAK,CAAC,MAAQA,EAAQ+a,EAAWrpB,GAAK,CAAC,KAAMsO,IAAUgL,GAAQ,GAAK,CAAC,MAAQA,EAAO+P,EAAW12B,GAAK,CAAC,KAAM2mB,GAQ3R,OAPoB,MAAhB+P,EAAWlpB,IACb/K,EAAIA,GAAKgkB,GAAS,GAAK,CAAC,MAAQA,EAAQiQ,EAAWlpB,GAAK,CAAC,KAAMiZ,KAEjEhkB,EAAIA,GAAKqR,GAAU,GAAK,CAAC,MAAQA,EAAS4iB,EAAWhpB,GAAK,CAAC,KAAMoG,IAAWwS,GAAS,GAAK,CAAC,MAAQ,CAAC,KAAMA,IACxG,GAAKvY,EACPtL,EAAE,IAAMo0B,EAAiB,EACzBp0B,EAAE,GAAKmB,EACA+yB,GAAkB50B,MAAM,KAAMU,EACvC,CAGA,SAASq0B,GAA2BC,GAClC,YAAyBt3B,IAArBs3B,EACK5P,GAEuB,oBAArB4P,IACT5P,GAAQ4P,GACD,EAGX,CAGA,SAASC,GAA4BC,EAAWC,GAC9C,YAA8Bz3B,IAA1Bi3B,GAAWO,UAGDx3B,IAAVy3B,EACKR,GAAWO,IAEpBP,GAAWO,GAAaC,EACN,MAAdD,IACFP,GAAWvpB,GAAK+pB,EAAQ,IAEnB,GACT,CACA,SAASjJ,GAASkJ,EAAeC,GAC/B,IAAKlxB,KAAKf,UACR,OAAOe,KAAKiF,aAAaQ,cAE3B,IAEE/H,EACAiG,EAHEwtB,GAAa,EACfC,EAAKZ,GAqBP,MAlB6B,kBAAlBS,IACTC,EAAgBD,EAChBA,GAAgB,GAEW,mBAAlBA,IACTE,EAAaF,GAEc,kBAAlBC,IACTE,EAAK36B,OAAO46B,OAAO,CAAC,EAAGb,GAAYU,GACZ,MAAnBA,EAAcz1B,GAAiC,MAApBy1B,EAAcjqB,KAC3CmqB,EAAGnqB,GAAKiqB,EAAcz1B,EAAI,IAI9BkI,EAAS+sB,GAAe1wB,MAAOmxB,EAAYC,EAD3C1zB,EAASsC,KAAKiF,cAEVksB,IACFxtB,EAASjG,EAAOuK,YAAYjI,KAAM2D,IAE7BjG,EAAOoqB,WAAWnkB,EAC3B,CACA,IAAI2tB,GAAQptB,KAAKC,IACjB,SAASwd,GAAKlU,GACZ,OAAQA,EAAI,IAAMA,EAAI,KAAOA,CAC/B,CACA,SAAS8jB,KAQP,IAAKvxB,KAAKf,UACR,OAAOe,KAAKiF,aAAaQ,cAE3B,IAGEmQ,EACAH,EACA2K,EACA3kB,EAEA+1B,EACAC,EACAC,EACAC,EAXE1b,EAAUqb,GAAMtxB,KAAK2gB,eAAiB,IACxCF,EAAO6Q,GAAMtxB,KAAK4gB,OAClBhT,EAAS0jB,GAAMtxB,KAAKuO,SAKpBqjB,EAAQ5xB,KAAK6vB,YAKf,OAAK+B,GAOLhc,EAAUpM,GAASyM,EAAU,IAC7BR,EAAQjM,GAASoM,EAAU,IAC3BK,GAAW,GACXL,GAAW,GAGXwK,EAAQ5W,GAASoE,EAAS,IAC1BA,GAAU,GAGVnS,EAAIwa,EAAUA,EAAQ4b,QAAQ,GAAGzsB,QAAQ,SAAU,IAAM,GACzDosB,EAAYI,EAAQ,EAAI,IAAM,GAC9BH,EAAS9P,GAAK3hB,KAAKuO,WAAaoT,GAAKiQ,GAAS,IAAM,GACpDF,EAAW/P,GAAK3hB,KAAK4gB,SAAWe,GAAKiQ,GAAS,IAAM,GACpDD,EAAUhQ,GAAK3hB,KAAK2gB,iBAAmBgB,GAAKiQ,GAAS,IAAM,GACpDJ,EAAY,KAAOpR,EAAQqR,EAASrR,EAAQ,IAAM,KAAOxS,EAAS6jB,EAAS7jB,EAAS,IAAM,KAAO6S,EAAOiR,EAAWjR,EAAO,IAAM,KAAOhL,GAASG,GAAWK,EAAU,IAAM,KAAOR,EAAQkc,EAAUlc,EAAQ,IAAM,KAAOG,EAAU+b,EAAU/b,EAAU,IAAM,KAAOK,EAAU0b,EAAUl2B,EAAI,IAAM,KAnBhS,KAoBX,CACA,IAAIq2B,GAAU5R,GAASxpB,UAyGvB,OAxGAo7B,GAAQ7yB,QAAU8gB,GAClB+R,GAAQ3tB,IAAMA,GACd2tB,GAAQxf,IAAM2c,GACd6C,GAAQ7O,SAAWiM,GACnB4C,GAAQtC,GAAKA,GACbsC,GAAQlC,eAAiBA,GACzBkC,GAAQjC,UAAYA,GACpBiC,GAAQhC,UAAYA,GACpBgC,GAAQ/B,QAAUA,GAClB+B,GAAQ9B,OAASA,GACjB8B,GAAQ7B,QAAUA,GAClB6B,GAAQ5B,SAAWA,GACnB4B,GAAQ3B,WAAaA,GACrB2B,GAAQ1B,QAAUA,GAClB0B,GAAQv0B,QAAUkyB,GAClBqC,GAAQhR,QAAUsO,GAClB0C,GAAQ3P,MAAQkO,GAChByB,GAAQ33B,IAAMm2B,GACdwB,GAAQpR,aAAeA,GACvBoR,GAAQ7b,QAAUA,GAClB6b,GAAQlc,QAAUA,GAClBkc,GAAQrc,MAAQA,GAChBqc,GAAQrR,KAAOA,GACfqR,GAAQvR,MAAQA,GAChBuR,GAAQlkB,OAASA,GACjBkkB,GAAQ1R,MAAQA,GAChB0R,GAAQ/J,SAAWA,GACnB+J,GAAQ3K,YAAcoK,GACtBO,GAAQ11B,SAAWm1B,GACnBO,GAAQ7I,OAASsI,GACjBO,GAAQp0B,OAASA,GACjBo0B,GAAQ7sB,WAAaA,GACrB6sB,GAAQC,YAActwB,EAAU,sFAAuF8vB,IACvHO,GAAQ3J,KAAOA,GAIfvjB,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1B+G,GAAc,IAAKL,IACnBK,GAAc,IAAKF,IACnBe,GAAc,KAAK,SAAUtQ,EAAOoJ,EAAOnE,GACzCA,EAAO5B,GAAK,IAAIvC,KAAyB,IAApB8iB,WAAW5jB,GAClC,IACAsQ,GAAc,KAAK,SAAUtQ,EAAOoJ,EAAOnE,GACzCA,EAAO5B,GAAK,IAAIvC,KAAK2M,GAAMzN,GAC7B,IAIAN,EAAMo2B,QAAU,SAChBj2B,EAAgBuhB,IAChB1hB,EAAMuB,GAAKyvB,GACXhxB,EAAM2T,IAAMA,GACZ3T,EAAM0I,IAAMA,GACZ1I,EAAM8H,IAAMA,GACZ9H,EAAMiC,IAAML,EACZ5B,EAAMmtB,KAAO8D,GACbjxB,EAAMgS,OAAS2gB,GACf3yB,EAAMmB,OAASA,EACfnB,EAAM8B,OAASsa,GACfpc,EAAMgpB,QAAU/kB,EAChBjE,EAAMukB,SAAWF,GACjBrkB,EAAMyF,SAAWA,EACjBzF,EAAMoX,SAAWyb,GACjB7yB,EAAMmxB,UAAYD,GAClBlxB,EAAMqJ,WAAaiT,GACnBtc,EAAMmlB,WAAaA,GACnBnlB,EAAM+R,YAAc6gB,GACpB5yB,EAAMkX,YAAc6b,GACpB/yB,EAAMuc,aAAeA,GACrBvc,EAAM2c,aAAeA,GACrB3c,EAAMqb,QAAUwB,GAChB7c,EAAMmX,cAAgB2b,GACtB9yB,EAAM6M,eAAiBA,GACvB7M,EAAMq2B,qBAAuBrB,GAC7Bh1B,EAAMs2B,sBAAwBpB,GAC9Bl1B,EAAMsqB,eAAiBP,GACvB/pB,EAAMlF,UAAYk2B,GAGlBhxB,EAAMu2B,UAAY,CAChBC,eAAgB,mBAEhBC,uBAAwB,sBAExBC,kBAAmB,0BAEnBrlB,KAAM,aAENslB,KAAM,QAENC,aAAc,WAEdC,QAAS,eAETnlB,KAAM,aAENN,MAAO,WAGFpR,CACT,CAp6IkF82B,E,wCCRlF,OAUA,SAAWC,EAAQD,GACjB,aAE4D,kBAAnBr7B,EAAOD,QAQ9CC,EAAOD,QAAUu7B,EAAO36B,SAAW06B,EAAQC,GAAQ,GAAQ,SAAUrrB,GACnE,IAAKA,EAAEtP,SACL,MAAM,IAAIU,MAAM,4CAElB,OAAOg6B,EAAQprB,EACjB,EAEAorB,EAAQC,EAIX,CAtBD,CAsBqB,qBAAXr3B,OAAyBA,OAAS0E,MAAM,SAAU1E,EAAQs3B,GAKlE,aAEA,IAAI11B,EAAM,GACN21B,EAAWp8B,OAAOq8B,eAClBt3B,EAAQ0B,EAAI1B,MACZu3B,EAAO71B,EAAI61B,KAAO,SAAUztB,GAC9B,OAAOpI,EAAI61B,KAAKn8B,KAAK0O,EACvB,EAAI,SAAUA,GACZ,OAAOpI,EAAI2V,OAAOhX,MAAM,GAAIyJ,EAC9B,EACIxO,EAAOoG,EAAIpG,KACXgW,EAAU5P,EAAI4P,QACdkmB,EAAa,CAAC,EACd52B,EAAW42B,EAAW52B,SACtB62B,EAASD,EAAWr8B,eACpBu8B,EAAaD,EAAO72B,SACpB+2B,EAAuBD,EAAWt8B,KAAKH,QACvC28B,EAAU,CAAC,EACXhxB,EAAa,SAAoB1F,GAQnC,MAAsB,oBAARA,GAA8C,kBAAjBA,EAAI22B,UAA6C,oBAAb32B,EAAI+oB,IACrF,EACI6N,EAAW,SAAkB52B,GAC/B,OAAc,MAAPA,GAAeA,IAAQA,EAAIpB,MACpC,EACItD,EAAWsD,EAAOtD,SAClBu7B,EAA4B,CAC9Bt6B,MAAM,EACNX,KAAK,EACLk7B,OAAO,EACPC,UAAU,GAEZ,SAASC,EAAQC,EAAMC,EAAMC,GAE3B,IAAIv9B,EACFkK,EACAzI,GAHF87B,EAAMA,GAAO77B,GAGEC,cAAc,UAE7B,GADAF,EAAO+7B,KAAOH,EACVC,EACF,IAAKt9B,KAAKi9B,GAWR/yB,EAAMozB,EAAKt9B,IAAMs9B,EAAKG,cAAgBH,EAAKG,aAAaz9B,KAEtDyB,EAAOM,aAAa/B,EAAGkK,GAI7BqzB,EAAIp6B,KAAKC,YAAY3B,GAAQi8B,WAAWC,YAAYl8B,EACtD,CACA,SAASm8B,EAAOx3B,GACd,OAAW,MAAPA,EACKA,EAAM,GAIO,kBAARA,GAAmC,oBAARA,EAAqBs2B,EAAW52B,EAASxF,KAAK8F,KAAS,gBAAkBA,CACpH,CAKA,IAAIs1B,EAAU,QACZmC,EAAc,SAEdC,EAAS,SAAUC,EAAUC,GAG3B,OAAO,IAAIF,EAAOj3B,GAAGo3B,KAAKF,EAAUC,EACtC,EA2UF,SAASE,EAAY93B,GAKnB,IAAIlG,IAAWkG,GAAO,WAAYA,GAAOA,EAAIlG,OAC3CyC,EAAOi7B,EAAOx3B,GAChB,OAAI0F,EAAW1F,KAAQ42B,EAAS52B,KAGhB,UAATzD,GAA+B,IAAXzC,GAAkC,kBAAXA,GAAuBA,EAAS,GAAKA,EAAS,KAAKkG,EACvG,CACA,SAAS+3B,EAASC,EAAMr7B,GACtB,OAAOq7B,EAAKD,UAAYC,EAAKD,SAASjsB,gBAAkBnP,EAAKmP,aAC/D,CAxVA4rB,EAAOj3B,GAAKi3B,EAAO19B,UAAY,CAE7Bi+B,OAAQ3C,EACR4C,YAAaR,EAEb59B,OAAQ,EACRgtB,QAAS,WACP,OAAOhoB,EAAM5E,KAAKoJ,KACpB,EAGA7F,IAAK,SAAU06B,GAEb,OAAW,MAAPA,EACKr5B,EAAM5E,KAAKoJ,MAIb60B,EAAM,EAAI70B,KAAK60B,EAAM70B,KAAKxJ,QAAUwJ,KAAK60B,EAClD,EAGAC,UAAW,SAAUC,GAEnB,IAAIjR,EAAMsQ,EAAOY,MAAMh1B,KAAK40B,cAAeG,GAM3C,OAHAjR,EAAImR,WAAaj1B,KAGV8jB,CACT,EAEAoR,KAAM,SAAUl5B,GACd,OAAOo4B,EAAOc,KAAKl1B,KAAMhE,EAC3B,EACAiB,IAAK,SAAUjB,GACb,OAAOgE,KAAK80B,UAAUV,EAAOn3B,IAAI+C,MAAM,SAAU00B,EAAMp+B,GACrD,OAAO0F,EAASpF,KAAK89B,EAAMp+B,EAAGo+B,EAChC,IACF,EACAl5B,MAAO,WACL,OAAOwE,KAAK80B,UAAUt5B,EAAMK,MAAMmE,KAAMlE,WAC1C,EACAq5B,MAAO,WACL,OAAOn1B,KAAKo1B,GAAG,EACjB,EACAC,KAAM,WACJ,OAAOr1B,KAAKo1B,IAAI,EAClB,EACAE,KAAM,WACJ,OAAOt1B,KAAK80B,UAAUV,EAAOmB,KAAKv1B,MAAM,SAAUw1B,EAAOl/B,GACvD,OAAQA,EAAI,GAAK,CACnB,IACF,EACAm/B,IAAK,WACH,OAAOz1B,KAAK80B,UAAUV,EAAOmB,KAAKv1B,MAAM,SAAUw1B,EAAOl/B,GACvD,OAAOA,EAAI,CACb,IACF,EACA8+B,GAAI,SAAU9+B,GACZ,IAAI2J,EAAMD,KAAKxJ,OACbkhB,GAAKphB,GAAKA,EAAI,EAAI2J,EAAM,GAC1B,OAAOD,KAAK80B,UAAUpd,GAAK,GAAKA,EAAIzX,EAAM,CAACD,KAAK0X,IAAM,GACxD,EACAge,IAAK,WACH,OAAO11B,KAAKi1B,YAAcj1B,KAAK40B,aACjC,EAGA99B,KAAMA,EACNuS,KAAMnM,EAAImM,KACVssB,OAAQz4B,EAAIy4B,QAEdvB,EAAO92B,OAAS82B,EAAOj3B,GAAGG,OAAS,WACjC,IAAIs4B,EACFv8B,EACAf,EACAu9B,EACAC,EACA3T,EACAhpB,EAAS2C,UAAU,IAAM,CAAC,EAC1BxF,EAAI,EACJE,EAASsF,UAAUtF,OACnBu/B,GAAO,EAqBT,IAlBsB,mBAAX58B,IACT48B,EAAO58B,EAGPA,EAAS2C,UAAUxF,IAAM,CAAC,EAC1BA,KAIoB,kBAAX6C,GAAwBiJ,EAAWjJ,KAC5CA,EAAS,CAAC,GAIR7C,IAAME,IACR2C,EAAS6G,KACT1J,KAEKA,EAAIE,EAAQF,IAEjB,GAAgC,OAA3Bs/B,EAAU95B,UAAUxF,IAEvB,IAAK+C,KAAQu8B,EACXC,EAAOD,EAAQv8B,GAIF,cAATA,GAAwBF,IAAW08B,IAKnCE,GAAQF,IAASzB,EAAO4B,cAAcH,KAAUC,EAAc35B,MAAMF,QAAQ45B,MAC9Ev9B,EAAMa,EAAOE,GAIX8oB,EADE2T,IAAgB35B,MAAMF,QAAQ3D,GACxB,GACEw9B,GAAgB1B,EAAO4B,cAAc19B,GAGvCA,EAFA,CAAC,EAIXw9B,GAAc,EAGd38B,EAAOE,GAAQ+6B,EAAO92B,OAAOy4B,EAAM5T,EAAO0T,SAGxBt8B,IAATs8B,IACT18B,EAAOE,GAAQw8B,IAOvB,OAAO18B,CACT,EACAi7B,EAAO92B,OAAO,CAEZ24B,QAAS,UAAYjE,EAAU9tB,KAAKgyB,UAAU9wB,QAAQ,MAAO,IAE7D+wB,SAAS,EACT19B,MAAO,SAAU8I,GACf,MAAM,IAAI7I,MAAM6I,EAClB,EACA60B,KAAM,WAAa,EACnBJ,cAAe,SAAUt5B,GACvB,IAAIkwB,EAAOyJ,EAIX,SAAK35B,GAA8B,oBAAvBN,EAASxF,KAAK8F,QAG1BkwB,EAAQiG,EAASn2B,KASM,oBADvB25B,EAAOpD,EAAOr8B,KAAKg2B,EAAO,gBAAkBA,EAAMgI,cACb1B,EAAWt8B,KAAKy/B,KAAUlD,EACjE,EACAmD,cAAe,SAAU55B,GACvB,IAAIrD,EACJ,IAAKA,KAAQqD,EACX,OAAO,EAET,OAAO,CACT,EAGA65B,WAAY,SAAU5C,EAAMiC,EAAS/B,GACnCH,EAAQC,EAAM,CACZH,MAAOoC,GAAWA,EAAQpC,OACzBK,EACL,EACAqB,KAAM,SAAUx4B,EAAKV,GACnB,IAAIxF,EACFF,EAAI,EACN,GAAIk+B,EAAY93B,GAEd,IADAlG,EAASkG,EAAIlG,OACNF,EAAIE,IACgC,IAArCwF,EAASpF,KAAK8F,EAAIpG,GAAIA,EAAGoG,EAAIpG,IADhBA,UAMnB,IAAKA,KAAKoG,EACR,IAAyC,IAArCV,EAASpF,KAAK8F,EAAIpG,GAAIA,EAAGoG,EAAIpG,IAC/B,MAIN,OAAOoG,CACT,EAEAo3B,KAAM,SAAUY,GACd,IAAId,EACF9P,EAAM,GACNxtB,EAAI,EACJ+8B,EAAWqB,EAAKrB,SAClB,IAAKA,EAEH,KAAOO,EAAOc,EAAKp+B,MAEjBwtB,GAAOsQ,EAAON,KAAKF,GAGvB,OAAiB,IAAbP,GAA+B,KAAbA,EACbqB,EAAK8B,YAEG,IAAbnD,EACKqB,EAAK+B,gBAAgBD,YAEb,IAAbnD,GAA+B,IAAbA,EACbqB,EAAKgC,UAKP5S,CACT,EAEA6S,UAAW,SAAUz5B,EAAK05B,GACxB,IAAI9S,EAAM8S,GAAW,GAQrB,OAPW,MAAP15B,IACEs3B,EAAY/9B,OAAOyG,IACrBk3B,EAAOY,MAAMlR,EAAoB,kBAAR5mB,EAAmB,CAACA,GAAOA,GAEpDpG,EAAKF,KAAKktB,EAAK5mB,IAGZ4mB,CACT,EACA+S,QAAS,SAAUnC,EAAMx3B,EAAK5G,GAC5B,OAAc,MAAP4G,GAAe,EAAI4P,EAAQlW,KAAKsG,EAAKw3B,EAAMp+B,EACpD,EACAwgC,SAAU,SAAUpC,GAClB,IAAIqC,EAAYrC,GAAQA,EAAKsC,aAC3BC,EAAUvC,IAASA,EAAKwC,eAAiBxC,GAAM+B,gBAIjD,OAAQtC,EAAYtuB,KAAKkxB,GAAaE,GAAWA,EAAQxC,UAAY,OACvE,EAGAO,MAAO,SAAUG,EAAOrW,GAItB,IAHA,IAAI7e,GAAO6e,EAAOtoB,OAChBkhB,EAAI,EACJphB,EAAI6+B,EAAM3+B,OACLkhB,EAAIzX,EAAKyX,IACdyd,EAAM7+B,KAAOwoB,EAAOpH,GAGtB,OADAyd,EAAM3+B,OAASF,EACR6+B,CACT,EACAI,KAAM,SAAUR,EAAO/4B,EAAUm7B,GAS/B,IARA,IACEnV,EAAU,GACV1rB,EAAI,EACJE,EAASu+B,EAAMv+B,OACf4gC,GAAkBD,EAIb7gC,EAAIE,EAAQF,KACE0F,EAAS+4B,EAAMz+B,GAAIA,KACd8gC,GACtBpV,EAAQlrB,KAAKi+B,EAAMz+B,IAGvB,OAAO0rB,CACT,EAEA/kB,IAAK,SAAU83B,EAAO/4B,EAAU4F,GAC9B,IAAIpL,EACF+D,EACAjE,EAAI,EACJwtB,EAAM,GAGR,GAAI0Q,EAAYO,GAEd,IADAv+B,EAASu+B,EAAMv+B,OACRF,EAAIE,EAAQF,IAEJ,OADbiE,EAAQyB,EAAS+4B,EAAMz+B,GAAIA,EAAGsL,KAE5BkiB,EAAIhtB,KAAKyD,QAMb,IAAKjE,KAAKy+B,EAEK,OADbx6B,EAAQyB,EAAS+4B,EAAMz+B,GAAIA,EAAGsL,KAE5BkiB,EAAIhtB,KAAKyD,GAMf,OAAOw4B,EAAKjP,EACd,EAEAuT,KAAM,EAGNjE,QAASA,IAEW,oBAAX/4B,SACT+5B,EAAOj3B,GAAG9C,OAAOi9B,UAAYp6B,EAAI7C,OAAOi9B,WAI1ClD,EAAOc,KAAK,uEAAuEjnB,MAAM,MAAM,SAAUtN,EAAItH,GAC3G25B,EAAW,WAAa35B,EAAO,KAAOA,EAAKmP,aAC7C,IAgBA,IAAI+uB,EAAMr6B,EAAIq6B,IACVluB,EAAOnM,EAAImM,KACXssB,EAASz4B,EAAIy4B,OACb6B,EAAa,sBACbC,EAAW,IAAIh1B,OAAO,IAAM+0B,EAAa,8BAAgCA,EAAa,KAAM,KAGhGpD,EAAOsD,SAAW,SAAUn7B,EAAGC,GAC7B,IAAIm7B,EAAMn7B,GAAKA,EAAEw3B,WACjB,OAAOz3B,IAAMo7B,MAAUA,GAAwB,IAAjBA,EAAItE,YAGlC92B,EAAEm7B,SAAWn7B,EAAEm7B,SAASC,GAAOp7B,EAAEq7B,yBAA4D,GAAjCr7B,EAAEq7B,wBAAwBD,IACxF,EAIA,IAAIE,EAAa,+CACjB,SAASC,EAAWC,EAAIC,GACtB,OAAIA,EAES,OAAPD,EACK,SAIFA,EAAGv8B,MAAM,GAAI,GAAK,KAAOu8B,EAAGE,WAAWF,EAAGvhC,OAAS,GAAG4F,SAAS,IAAM,IAIvE,KAAO27B,CAChB,CACA3D,EAAO8D,eAAiB,SAAUC,GAChC,OAAQA,EAAM,IAAI/yB,QAAQyyB,EAAYC,EACxC,EACA,IAAIM,EAAepgC,EACjBqgC,EAAavhC,GACf,WACE,IAAIR,EACFgiC,EACAC,EACAC,EACAC,EAGAzgC,EACAy+B,EACAiC,EACAC,EACA3W,EANAlrB,EAAOuhC,EAQPpC,EAAU7B,EAAO6B,QACjB2C,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAU58B,EAAGC,GAIvB,OAHID,IAAMC,IACRi8B,GAAe,GAEV,CACT,EACAW,EAAW,6HAIXC,EAAa,0BAA4B7B,EAAa,0CAEtD8B,EAAa,MAAQ9B,EAAa,KAAO6B,EAAa,OAAS7B,EAE/D,gBAAkBA,EAElB,2DAA6D6B,EAAa,OAAS7B,EAAa,OAChG+B,EAAU,KAAOF,EAAP,wFAKmBC,EALnB,eASVE,EAAc,IAAI/2B,OAAO+0B,EAAa,IAAK,KAC3CiC,EAAS,IAAIh3B,OAAO,IAAM+0B,EAAa,KAAOA,EAAa,KAC3DkC,EAAqB,IAAIj3B,OAAO,IAAM+0B,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAChGmC,EAAW,IAAIl3B,OAAO+0B,EAAa,MACnCoC,EAAU,IAAIn3B,OAAO82B,GACrBM,EAAc,IAAIp3B,OAAO,IAAM42B,EAAa,KAC5CS,EAAY,CACVC,GAAI,IAAIt3B,OAAO,MAAQ42B,EAAa,KACpCW,MAAO,IAAIv3B,OAAO,QAAU42B,EAAa,KACzCY,IAAK,IAAIx3B,OAAO,KAAO42B,EAAa,SACpCa,KAAM,IAAIz3B,OAAO,IAAM62B,GACvBa,OAAQ,IAAI13B,OAAO,IAAM82B,GACzBa,MAAO,IAAI33B,OAAO,yDAA2D+0B,EAAa,+BAAiCA,EAAa,cAAgBA,EAAa,aAAeA,EAAa,SAAU,KAC3M6C,KAAM,IAAI53B,OAAO,OAAS22B,EAAW,KAAM,KAG3CkB,aAAc,IAAI73B,OAAO,IAAM+0B,EAAa,mDAAqDA,EAAa,mBAAqBA,EAAa,mBAAoB,MAEtK+C,EAAU,sCACVC,EAAU,SAEVC,EAAa,mCACbC,EAAW,OAGXC,EAAY,IAAIl4B,OAAO,uBAAyB+0B,EAAa,uBAAwB,KACrFoD,EAAY,SAAUC,EAAQC,GAC5B,IAAIC,EAAO,KAAOF,EAAOr/B,MAAM,GAAK,MACpC,OAAIs/B,IASGC,EAAO,EAAIjW,OAAOkW,aAAaD,EAAO,OAAWjW,OAAOkW,aAAaD,GAAQ,GAAK,MAAe,KAAPA,EAAe,OAClH,EAKAE,EAAgB,WACdC,IACF,EACAC,EAAqBC,IAAc,SAAU1G,GAC3C,OAAyB,IAAlBA,EAAK2G,UAAqB5G,EAASC,EAAM,WAClD,GAAG,CACD3K,IAAK,aACLpS,KAAM,WAaV,IACE7gB,EAAK+E,MAAMqB,EAAM1B,EAAM5E,KAAKwhC,EAAakD,YAAalD,EAAakD,YAKnEp+B,EAAIk7B,EAAakD,WAAW9kC,QAAQ68B,QACtC,CAAE,MAAO97B,IACPT,EAAO,CACL+E,MAAO,SAAU1C,EAAQoiC,GACvBlD,EAAWx8B,MAAM1C,EAAQqC,EAAM5E,KAAK2kC,GACtC,EACA3kC,KAAM,SAAUuC,GACdk/B,EAAWx8B,MAAM1C,EAAQqC,EAAM5E,KAAKkF,UAAW,GACjD,EAEJ,CACA,SAAS0/B,EAAKnH,EAAUC,EAASsC,EAAS6E,GACxC,IAAI7hC,EACFtD,EACAo+B,EACAgH,EACAv2B,EACAw2B,EACAC,EACAC,EAAavH,GAAWA,EAAQ4C,cAEhC7D,EAAWiB,EAAUA,EAAQjB,SAAW,EAI1C,GAHAuD,EAAUA,GAAW,GAGG,kBAAbvC,IAA0BA,GAAyB,IAAbhB,GAA+B,IAAbA,GAA+B,KAAbA,EACnF,OAAOuD,EAIT,IAAK6E,IACHP,GAAY5G,GACZA,EAAUA,GAAWt8B,EACjB0gC,GAAgB,CAGlB,GAAiB,KAAbrF,IAAoBluB,EAAQs1B,EAAWrgB,KAAKia,IAE9C,GAAIz6B,EAAIuL,EAAM,IAEZ,GAAiB,IAAbkuB,EAAgB,CAClB,KAAIqB,EAAOJ,EAAQwH,eAAeliC,IAQhC,OAAOg9B,EALP,GAAIlC,EAAKqH,KAAOniC,EAEd,OADA9C,EAAKF,KAAKggC,EAASlC,GACZkC,CAOb,MAGE,GAAIiF,IAAenH,EAAOmH,EAAWC,eAAeliC,KAAO4hC,EAAK9D,SAASpD,EAASI,IAASA,EAAKqH,KAAOniC,EAErG,OADA9C,EAAKF,KAAKggC,EAASlC,GACZkC,MAKN,IAAIzxB,EAAM,GAEf,OADArO,EAAK+E,MAAM+6B,EAAStC,EAAQ0H,qBAAqB3H,IAC1CuC,EAGF,IAAKh9B,EAAIuL,EAAM,KAAOmvB,EAAQ2H,uBAEnC,OADAnlC,EAAK+E,MAAM+6B,EAAStC,EAAQ2H,uBAAuBriC,IAC5Cg9B,CACT,CAIF,IAAKsC,EAAuB7E,EAAW,QAAUsE,IAAcA,EAAU9yB,KAAKwuB,IAAY,CAWxF,GAVAuH,EAAcvH,EACdwH,EAAavH,EASI,IAAbjB,IAAmBsG,EAAS9zB,KAAKwuB,IAAaqF,EAAmB7zB,KAAKwuB,IAAY,CAsBpF,KApBAwH,EAAanB,EAAS70B,KAAKwuB,IAAa6H,GAAY5H,EAAQN,aAAeM,IAQzDA,GAAYlB,EAAQ+I,SAEhCT,EAAMpH,EAAQP,aAAa,OAC7B2H,EAAMtH,EAAO8D,eAAewD,GAE5BpH,EAAQj8B,aAAa,KAAMqjC,EAAMzF,IAMrC3/B,GADAqlC,EAASS,GAAS/H,IACP79B,OACJF,KACLqlC,EAAOrlC,IAAMolC,EAAM,IAAMA,EAAM,UAAY,IAAMW,GAAWV,EAAOrlC,IAErEslC,EAAcD,EAAO55B,KAAK,IAC5B,CACA,IAEE,OADAjL,EAAK+E,MAAM+6B,EAASiF,EAAWS,iBAAiBV,IACzChF,CACT,CAAE,MAAO2F,GACPrD,EAAuB7E,GAAU,EACnC,CAAE,QACIqH,IAAQzF,GACV3B,EAAQkI,gBAAgB,KAE5B,CACF,CACF,CAIF,OAAOC,GAAOpI,EAASjvB,QAAQqyB,EAAU,MAAOnD,EAASsC,EAAS6E,EACpE,CAQA,SAAS1C,KACP,IAAI92B,EAAO,GAUX,OATA,SAASy6B,EAAM7hC,EAAKN,GAOlB,OAJI0H,EAAKnL,KAAK+D,EAAM,KAAOy9B,EAAKqE,oBAEvBD,EAAMz6B,EAAKhL,SAEbylC,EAAM7hC,EAAM,KAAON,CAC5B,CAEF,CAMA,SAASqiC,GAAaz/B,GAEpB,OADAA,EAAG84B,IAAW,EACP94B,CACT,CAMA,SAAS0/B,GAAO1/B,GACd,IAAI2/B,EAAK9kC,EAASC,cAAc,YAChC,IACE,QAASkF,EAAG2/B,EACd,CAAE,MAAOvlC,IACP,OAAO,CACT,CAAE,QAEIulC,EAAG9I,YACL8I,EAAG9I,WAAWC,YAAY6I,GAI5BA,EAAK,IACP,CACF,CAMA,SAASC,GAAkB9jC,GACzB,OAAO,SAAUy7B,GACf,OAAOD,EAASC,EAAM,UAAYA,EAAKz7B,OAASA,CAClD,CACF,CAMA,SAAS+jC,GAAmB/jC,GAC1B,OAAO,SAAUy7B,GACf,OAAQD,EAASC,EAAM,UAAYD,EAASC,EAAM,YAAcA,EAAKz7B,OAASA,CAChF,CACF,CAMA,SAASgkC,GAAqB5B,GAE5B,OAAO,SAAU3G,GAIf,MAAI,SAAUA,EAQRA,EAAKV,aAAgC,IAAlBU,EAAK2G,SAEtB,UAAW3G,EACT,UAAWA,EAAKV,WACXU,EAAKV,WAAWqH,WAAaA,EAE7B3G,EAAK2G,WAAaA,EAMtB3G,EAAKwI,aAAe7B,GAE3B3G,EAAKwI,cAAgB7B,GAAYF,EAAmBzG,KAAU2G,EAEzD3G,EAAK2G,WAAaA,EAKhB,UAAW3G,GACbA,EAAK2G,WAAaA,CAK7B,CACF,CAMA,SAAS8B,GAAuBhgC,GAC9B,OAAOy/B,IAAa,SAAUQ,GAE5B,OADAA,GAAYA,EACLR,IAAa,SAAUnB,EAAMzZ,GAMlC,IALA,IAAItK,EACF2lB,EAAelgC,EAAG,GAAIs+B,EAAKjlC,OAAQ4mC,GACnC9mC,EAAI+mC,EAAa7mC,OAGZF,KACDmlC,EAAK/jB,EAAI2lB,EAAa/mC,MACxBmlC,EAAK/jB,KAAOsK,EAAQtK,GAAK+jB,EAAK/jB,IAGpC,GACF,GACF,CAOA,SAASwkB,GAAY5H,GACnB,OAAOA,GAAmD,qBAAjCA,EAAQ0H,sBAAwC1H,CAC3E,CAOA,SAAS4G,GAAYtH,GACnB,IAAI0J,EACFzJ,EAAMD,EAAOA,EAAKsD,eAAiBtD,EAAOwE,EAO5C,OAAIvE,GAAO77B,GAA6B,IAAjB67B,EAAIR,UAAmBQ,EAAI4C,iBAMlDA,GADAz+B,EAAW67B,GACgB4C,gBAC3BiC,GAAkBtE,EAAO0C,SAAS9+B,GAIlCgqB,EAAUyU,EAAgBzU,SAAWyU,EAAgB8G,uBAAyB9G,EAAgB+G,kBAO1F/G,EAAgB+G,mBAKpBpF,GAAgBpgC,IAAaslC,EAAYtlC,EAASylC,cAAgBH,EAAUI,MAAQJ,GAElFA,EAAUK,iBAAiB,SAAU1C,GAOvC7H,EAAQwK,QAAUf,IAAO,SAAUC,GAEjC,OADArG,EAAgB/8B,YAAYojC,GAAIf,GAAK3H,EAAO6B,SACpCj+B,EAAS6lC,oBAAsB7lC,EAAS6lC,kBAAkBzJ,EAAO6B,SAASz/B,MACpF,IAKA48B,EAAQ0K,kBAAoBjB,IAAO,SAAUC,GAC3C,OAAO9a,EAAQprB,KAAKkmC,EAAI,IAC1B,IAIA1J,EAAQ+I,MAAQU,IAAO,WACrB,OAAO7kC,EAASskC,iBAAiB,SACnC,IAWAlJ,EAAQ2K,OAASlB,IAAO,WACtB,IAEE,OADA7kC,EAASgmC,cAAc,oBAChB,CACT,CAAE,MAAOzmC,IACP,OAAO,CACT,CACF,IAGI67B,EAAQwK,SACVtF,EAAK9S,OAAOuU,GAAK,SAAUgC,GACzB,IAAIkC,EAASlC,EAAG32B,QAAQu1B,EAAWC,GACnC,OAAO,SAAUlG,GACf,OAAOA,EAAKX,aAAa,QAAUkK,CACrC,CACF,EACA3F,EAAKkD,KAAKzB,GAAK,SAAUgC,EAAIzH,GAC3B,GAAsC,qBAA3BA,EAAQwH,gBAAkCpD,EAAgB,CACnE,IAAIhE,EAAOJ,EAAQwH,eAAeC,GAClC,OAAOrH,EAAO,CAACA,GAAQ,EACzB,CACF,IAEA4D,EAAK9S,OAAOuU,GAAK,SAAUgC,GACzB,IAAIkC,EAASlC,EAAG32B,QAAQu1B,EAAWC,GACnC,OAAO,SAAUlG,GACf,IAAId,EAAwC,qBAA1Bc,EAAKwJ,kBAAoCxJ,EAAKwJ,iBAAiB,MACjF,OAAOtK,GAAQA,EAAKr5B,QAAU0jC,CAChC,CACF,EAIA3F,EAAKkD,KAAKzB,GAAK,SAAUgC,EAAIzH,GAC3B,GAAsC,qBAA3BA,EAAQwH,gBAAkCpD,EAAgB,CACnE,IAAI9E,EACFt9B,EACAy+B,EACAL,EAAOJ,EAAQwH,eAAeC,GAChC,GAAIrH,EAAM,CAGR,IADAd,EAAOc,EAAKwJ,iBAAiB,QACjBtK,EAAKr5B,QAAUwhC,EACzB,MAAO,CAACrH,GAMV,IAFAK,EAAQT,EAAQuJ,kBAAkB9B,GAClCzlC,EAAI,EACGo+B,EAAOK,EAAMz+B,MAElB,IADAs9B,EAAOc,EAAKwJ,iBAAiB,QACjBtK,EAAKr5B,QAAUwhC,EACzB,MAAO,CAACrH,EAGd,CACA,MAAO,EACT,CACF,GAIF4D,EAAKkD,KAAKvB,IAAM,SAAUkE,EAAK7J,GAC7B,MAA4C,qBAAjCA,EAAQ0H,qBACV1H,EAAQ0H,qBAAqBmC,GAI7B7J,EAAQgI,iBAAiB6B,EAEpC,EAGA7F,EAAKkD,KAAKxB,MAAQ,SAAUoE,EAAW9J,GACrC,GAA8C,qBAAnCA,EAAQ2H,wBAA0CvD,EAC3D,OAAOpE,EAAQ2H,uBAAuBmC,EAE1C,EAOAzF,EAAY,GAIZkE,IAAO,SAAUC,GACf,IAAI5gC,EACJu6B,EAAgB/8B,YAAYojC,GAAIuB,UAAY,UAAYpI,EAAZ,iDAA8EA,EAA9E,oEAIvC6G,EAAGR,iBAAiB,cAAc9lC,QACrCmiC,EAAU7hC,KAAK,MAAQ0gC,EAAa,aAAe4B,EAAW,KAI3D0D,EAAGR,iBAAiB,QAAUrG,EAAU,MAAMz/B,QACjDmiC,EAAU7hC,KAAK,MAMZgmC,EAAGR,iBAAiB,KAAOrG,EAAU,MAAMz/B,QAC9CmiC,EAAU7hC,KAAK,YAOZgmC,EAAGR,iBAAiB,YAAY9lC,QACnCmiC,EAAU7hC,KAAK,aAKjBoF,EAAQlE,EAASC,cAAc,UACzBI,aAAa,OAAQ,UAC3BykC,EAAGpjC,YAAYwC,GAAO7D,aAAa,OAAQ,KAQ3Co+B,EAAgB/8B,YAAYojC,GAAIzB,UAAW,EACK,IAA5CyB,EAAGR,iBAAiB,aAAa9lC,QACnCmiC,EAAU7hC,KAAK,WAAY,cAQ7BoF,EAAQlE,EAASC,cAAc,UACzBI,aAAa,OAAQ,IAC3BykC,EAAGpjC,YAAYwC,GACV4gC,EAAGR,iBAAiB,aAAa9lC,QACpCmiC,EAAU7hC,KAAK,MAAQ0gC,EAAa,QAAUA,EAAa,KAAOA,EAAa,eAEnF,IACKpE,EAAQ2K,QAOXpF,EAAU7hC,KAAK,QAEjB6hC,EAAYA,EAAUniC,QAAU,IAAIiM,OAAOk2B,EAAU52B,KAAK,MAM1Do3B,EAAY,SAAU58B,EAAGC,GAEvB,GAAID,IAAMC,EAER,OADAi8B,GAAe,EACR,EAIT,IAAI6F,GAAW/hC,EAAEq7B,yBAA2Bp7B,EAAEo7B,wBAC9C,OAAI0G,IAcU,GALdA,GAAW/hC,EAAE26B,eAAiB36B,KAAOC,EAAE06B,eAAiB16B,GAAKD,EAAEq7B,wBAAwBp7B,GAEvF,KAGoB42B,EAAQmL,cAAgB/hC,EAAEo7B,wBAAwBr7B,KAAO+hC,EAMvE/hC,IAAMvE,GAAYuE,EAAE26B,eAAiBkB,GAAgBoD,EAAK9D,SAASU,EAAc77B,IAC3E,EAONC,IAAMxE,GAAYwE,EAAE06B,eAAiBkB,GAAgBoD,EAAK9D,SAASU,EAAc57B,GAC5E,EAIFg8B,EAAY1rB,EAAQlW,KAAK4hC,EAAWj8B,GAAKuQ,EAAQlW,KAAK4hC,EAAWh8B,GAAK,EAE9D,EAAV8hC,GAAe,EAAI,EAC5B,EACOtmC,GA3QEA,CA4QX,CAkhBA,IAAK1B,KAjhBLklC,EAAKxZ,QAAU,SAAUwc,EAAMC,GAC7B,OAAOjD,EAAKgD,EAAM,KAAM,KAAMC,EAChC,EACAjD,EAAKkD,gBAAkB,SAAUhK,EAAM8J,GAErC,GADAtD,GAAYxG,GACRgE,IAAmBQ,EAAuBsF,EAAO,QAAU7F,IAAcA,EAAU9yB,KAAK24B,IAC1F,IACE,IAAI1a,EAAM9B,EAAQprB,KAAK89B,EAAM8J,GAG7B,GAAI1a,GAAOsP,EAAQ0K,mBAGnBpJ,EAAK18B,UAAuC,KAA3B08B,EAAK18B,SAASq7B,SAC7B,OAAOvP,CAEX,CAAE,MAAOvsB,IACP2hC,EAAuBsF,GAAM,EAC/B,CAEF,OAAOhD,EAAKgD,EAAMxmC,EAAU,KAAM,CAAC08B,IAAOl+B,OAAS,CACrD,EACAglC,EAAK9D,SAAW,SAAUpD,EAASI,GASjC,OAHKJ,EAAQ4C,eAAiB5C,IAAYt8B,GACxCkjC,GAAY5G,GAEPF,EAAOsD,SAASpD,EAASI,EAClC,EACA8G,EAAKmD,KAAO,SAAUjK,EAAMr7B,IAMrBq7B,EAAKwC,eAAiBxC,IAAS18B,GAClCkjC,GAAYxG,GAEd,IAAIv3B,EAAKm7B,EAAKsG,WAAWvlC,EAAKmP,eAE5BhI,EAAMrD,GAAM81B,EAAOr8B,KAAK0hC,EAAKsG,WAAYvlC,EAAKmP,eAAiBrL,EAAGu3B,EAAMr7B,GAAOq/B,QAAkBn/B,EACnG,YAAYA,IAARiH,EACKA,EAEFk0B,EAAKX,aAAa16B,EAC3B,EACAmiC,EAAK/iC,MAAQ,SAAU8I,GACrB,MAAM,IAAI7I,MAAM,0CAA4C6I,EAC9D,EAMA6yB,EAAOyK,WAAa,SAAUjI,GAC5B,IAAIlC,EACFoK,EAAa,GACbpnB,EAAI,EACJphB,EAAI,EAUN,GAHAmiC,GAAgBrF,EAAQ2L,WACxBvG,GAAapF,EAAQ2L,YAAcvjC,EAAM5E,KAAKggC,EAAS,GACvDvtB,EAAKzS,KAAKggC,EAASuC,GACfV,EAAc,CAChB,KAAO/D,EAAOkC,EAAQtgC,MAChBo+B,IAASkC,EAAQtgC,KACnBohB,EAAIonB,EAAWhoC,KAAKR,IAGxB,KAAOohB,KACLie,EAAO/+B,KAAKggC,EAASkI,EAAWpnB,GAAI,EAExC,CAKA,OADA8gB,EAAY,KACL5B,CACT,EACAxC,EAAOj3B,GAAG0hC,WAAa,WACrB,OAAO7+B,KAAK80B,UAAUV,EAAOyK,WAAWrjC,EAAMK,MAAMmE,OACtD,EACAs4B,EAAOlE,EAAOoK,KAAO,CAEnB7B,YAAa,GACbqC,aAAcpC,GACdz3B,MAAO20B,EACP8E,WAAY,CAAC,EACbpD,KAAM,CAAC,EACPyD,SAAU,CACR,IAAK,CACHlV,IAAK,aACLoL,OAAO,GAET,IAAK,CACHpL,IAAK,cAEP,IAAK,CACHA,IAAK,kBACLoL,OAAO,GAET,IAAK,CACHpL,IAAK,oBAGTmV,UAAW,CACThF,KAAM,SAAU/0B,GAQd,OAPAA,EAAM,GAAKA,EAAM,GAAGC,QAAQu1B,EAAWC,GAGvCz1B,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAIC,QAAQu1B,EAAWC,GACtD,OAAbz1B,EAAM,KACRA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAEvBA,EAAM3J,MAAM,EAAG,EACxB,EACA4+B,MAAO,SAAUj1B,GA2Bf,OAhBAA,EAAM,GAAKA,EAAM,GAAGqD,cACS,QAAzBrD,EAAM,GAAG3J,MAAM,EAAG,IAEf2J,EAAM,IACTq2B,EAAK/iC,MAAM0M,EAAM,IAKnBA,EAAM,KAAOA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAkB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACvFA,EAAM,KAAOA,EAAM,GAAKA,EAAM,IAAmB,QAAbA,EAAM,KAGjCA,EAAM,IACfq2B,EAAK/iC,MAAM0M,EAAM,IAEZA,CACT,EACAg1B,OAAQ,SAAUh1B,GAChB,IAAIg6B,EACFC,GAAYj6B,EAAM,IAAMA,EAAM,GAChC,OAAI20B,EAAUM,MAAMv0B,KAAKV,EAAM,IACtB,MAILA,EAAM,GACRA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAG1Bi6B,GAAYxF,EAAQ/zB,KAAKu5B,KAEpCD,EAAS/C,GAASgD,GAAU,MAE5BD,EAASC,EAAStyB,QAAQ,IAAKsyB,EAAS5oC,OAAS2oC,GAAUC,EAAS5oC,UAElE2O,EAAM,GAAKA,EAAM,GAAG3J,MAAM,EAAG2jC,GAC7Bh6B,EAAM,GAAKi6B,EAAS5jC,MAAM,EAAG2jC,IAIxBh6B,EAAM3J,MAAM,EAAG,GACxB,GAEFgqB,OAAQ,CACNyU,IAAK,SAAUoF,GACb,IAAIC,EAAmBD,EAAiBj6B,QAAQu1B,EAAWC,GAAWpyB,cACtE,MAA4B,MAArB62B,EAA2B,WAChC,OAAO,CACT,EAAI,SAAU3K,GACZ,OAAOD,EAASC,EAAM4K,EACxB,CACF,EACAtF,MAAO,SAAUoE,GACf,IAAImB,EAAUzG,EAAWsF,EAAY,KACrC,OAAOmB,IAAYA,EAAU,IAAI98B,OAAO,MAAQ+0B,EAAa,IAAM4G,EAAY,IAAM5G,EAAa,SAAWsB,EAAWsF,GAAW,SAAU1J,GAC3I,OAAO6K,EAAQ15B,KAA+B,kBAAnB6uB,EAAK0J,WAA0B1J,EAAK0J,WAA0C,qBAAtB1J,EAAKX,cAAgCW,EAAKX,aAAa,UAAY,GACxJ,GACF,EACAmG,KAAM,SAAU7gC,EAAMmmC,EAAUC,GAC9B,OAAO,SAAU/K,GACf,IAAI3Z,EAASygB,EAAKmD,KAAKjK,EAAMr7B,GAC7B,OAAc,MAAV0hB,EACkB,OAAbykB,GAEJA,IAGLzkB,GAAU,GACO,MAAbykB,EACKzkB,IAAW0kB,EAEH,OAAbD,EACKzkB,IAAW0kB,EAEH,OAAbD,EACKC,GAAmC,IAA1B1kB,EAAOjO,QAAQ2yB,GAEhB,OAAbD,EACKC,GAAS1kB,EAAOjO,QAAQ2yB,IAAU,EAE1B,OAAbD,EACKC,GAAS1kB,EAAOvf,OAAOikC,EAAMjpC,UAAYipC,EAEjC,OAAbD,GACM,IAAMzkB,EAAO3V,QAAQo0B,EAAa,KAAO,KAAK1sB,QAAQ2yB,IAAU,EAEzD,OAAbD,IACKzkB,IAAW0kB,GAAS1kB,EAAOvf,MAAM,EAAGikC,EAAMjpC,OAAS,KAAOipC,EAAQ,KAG7E,CACF,EACArF,MAAO,SAAUnhC,EAAMymC,EAAMC,EAAWxK,EAAOE,GAC7C,IAAIuK,EAA8B,QAArB3mC,EAAKuC,MAAM,EAAG,GACzBqkC,EAA6B,SAAnB5mC,EAAKuC,OAAO,GACtBskC,EAAkB,YAATJ,EACX,OAAiB,IAAVvK,GAAwB,IAATE,EAEtB,SAAUX,GACR,QAASA,EAAKV,UAChB,EAAI,SAAUU,EAAMqL,EAAUC,GAC5B,IAAItD,EACFuD,EACArM,EACAsM,EACAC,EACApW,EAAM6V,IAAWC,EAAU,cAAgB,kBAC3CO,EAAS1L,EAAKV,WACd36B,EAAOymC,GAAUpL,EAAKD,SAASjsB,cAC/B63B,GAAYL,IAAQF,EACpB53B,GAAO,EACT,GAAIk4B,EAAQ,CAEV,GAAIR,EAAQ,CACV,KAAO7V,GAAK,CAEV,IADA6J,EAAOc,EACAd,EAAOA,EAAK7J,IACjB,GAAI+V,EAASrL,EAASb,EAAMv6B,GAA0B,IAAlBu6B,EAAKP,SACvC,OAAO,EAKX8M,EAAQpW,EAAe,SAAT9wB,IAAoBknC,GAAS,aAC7C,CACA,OAAO,CACT,CAIA,GAHAA,EAAQ,CAACN,EAAUO,EAAOE,WAAaF,EAAOG,WAG1CV,GAAWQ,GAOb,IAFAn4B,GADAg4B,GADAxD,GADAuD,EAAaG,EAAOnK,KAAamK,EAAOnK,GAAW,CAAC,IACjCh9B,IAAS,IACV,KAAO2/B,GAAW8D,EAAM,KACtBA,EAAM,GAC1B9I,EAAOsM,GAAaE,EAAO9E,WAAW4E,GAC/BtM,IAASsM,GAAatM,GAAQA,EAAK7J,KAE1C7hB,EAAOg4B,EAAY,IAAMC,EAAM5I,OAE7B,GAAsB,IAAlB3D,EAAKP,YAAoBnrB,GAAQ0rB,IAASc,EAAM,CAClDuL,EAAWhnC,GAAQ,CAAC2/B,EAASsH,EAAWh4B,GACxC,KACF,OAaF,GATIm4B,IAIFn4B,EADAg4B,GADAxD,GADAuD,EAAavL,EAAKuB,KAAavB,EAAKuB,GAAW,CAAC,IAC7Bh9B,IAAS,IACV,KAAO2/B,GAAW8D,EAAM,KAM/B,IAATx0B,EAEF,MAAO0rB,IAASsM,GAAatM,GAAQA,EAAK7J,KAAS7hB,EAAOg4B,EAAY,IAAMC,EAAM5I,WAC3EuI,EAASrL,EAASb,EAAMv6B,GAA0B,IAAlBu6B,EAAKP,cAAqBnrB,IAEzDm4B,KACFJ,EAAarM,EAAKqC,KAAarC,EAAKqC,GAAW,CAAC,IACrCh9B,GAAQ,CAAC2/B,EAAS1wB,IAE3B0rB,IAASc,MAUrB,OADAxsB,GAAQmtB,KACQF,GAASjtB,EAAOitB,IAAU,GAAKjtB,EAAOitB,GAAS,CACjE,CACF,CACF,EACAgF,OAAQ,SAAUqG,EAAQpD,GAKxB,IAAIv7B,EACF1E,EAAKm7B,EAAKiB,QAAQiH,IAAWlI,EAAKmI,WAAWD,EAAOh4B,gBAAkBgzB,EAAK/iC,MAAM,uBAAyB+nC,GAK5G,OAAIrjC,EAAG84B,GACE94B,EAAGigC,GAIRjgC,EAAG3G,OAAS,GACdqL,EAAO,CAAC2+B,EAAQA,EAAQ,GAAIpD,GACrB9E,EAAKmI,WAAW9pC,eAAe6pC,EAAOh4B,eAAiBo0B,IAAa,SAAUnB,EAAMzZ,GAIzF,IAHA,IAAI0e,EACFx0B,EAAU/O,EAAGs+B,EAAM2B,GACnB9mC,EAAI4V,EAAQ1V,OACPF,KAELmlC,EADAiF,EAAM5zB,EAAQlW,KAAK6kC,EAAMvvB,EAAQ5V,OACnB0rB,EAAQ0e,GAAOx0B,EAAQ5V,GAEzC,IAAK,SAAUo+B,GACb,OAAOv3B,EAAGu3B,EAAM,EAAG7yB,EACrB,GAEK1E,CACT,GAEFo8B,QAAS,CAEPoH,IAAK/D,IAAa,SAAUvI,GAI1B,IAAIn4B,EAAQ,GACV06B,EAAU,GACV9U,EAAU8e,GAAQvM,EAASjvB,QAAQqyB,EAAU,OAC/C,OAAO3V,EAAQmU,GAAW2G,IAAa,SAAUnB,EAAMzZ,EAAS+d,EAAUC,GAMxE,IALA,IAAItL,EACFmM,EAAY/e,EAAQ2Z,EAAM,KAAMuE,EAAK,IACrC1pC,EAAImlC,EAAKjlC,OAGJF,MACDo+B,EAAOmM,EAAUvqC,MACnBmlC,EAAKnlC,KAAO0rB,EAAQ1rB,GAAKo+B,GAG/B,IAAK,SAAUA,EAAMqL,EAAUC,GAO7B,OANA9jC,EAAM,GAAKw4B,EACX5S,EAAQ5lB,EAAO,KAAM8jC,EAAKpJ,GAI1B16B,EAAM,GAAK,MACH06B,EAAQW,KAClB,CACF,IACAuJ,IAAKlE,IAAa,SAAUvI,GAC1B,OAAO,SAAUK,GACf,OAAO8G,EAAKnH,EAAUK,GAAMl+B,OAAS,CACvC,CACF,IACAkhC,SAAUkF,IAAa,SAAU9I,GAE/B,OADAA,EAAOA,EAAK1uB,QAAQu1B,EAAWC,GACxB,SAAUlG,GACf,OAAQA,EAAK8B,aAAepC,EAAON,KAAKY,IAAO5nB,QAAQgnB,IAAS,CAClE,CACF,IAQA3L,KAAMyU,IAAa,SAAUzU,GAM3B,OAJK0R,EAAYh0B,KAAKsiB,GAAQ,KAC5BqT,EAAK/iC,MAAM,qBAAuB0vB,GAEpCA,EAAOA,EAAK/iB,QAAQu1B,EAAWC,GAAWpyB,cACnC,SAAUksB,GACf,IAAIqM,EACJ,GACE,GAAIA,EAAWrI,EAAiBhE,EAAKvM,KAAOuM,EAAKX,aAAa,aAAeW,EAAKX,aAAa,QAE7F,OADAgN,EAAWA,EAASv4B,iBACA2f,GAAyC,IAAjC4Y,EAASj0B,QAAQqb,EAAO,YAE9CuM,EAAOA,EAAKV,aAAiC,IAAlBU,EAAKrB,UAC1C,OAAO,CACT,CACF,IAEAl6B,OAAQ,SAAUu7B,GAChB,IAAIsM,EAAO1lC,EAAO2lC,UAAY3lC,EAAO2lC,SAASD,KAC9C,OAAOA,GAAQA,EAAKxlC,MAAM,KAAOk5B,EAAKqH,EACxC,EACAmF,KAAM,SAAUxM,GACd,OAAOA,IAAS+B,CAClB,EACA0K,MAAO,SAAUzM,GACf,OAAOA,IAz+Bb,WACE,IACE,OAAO18B,EAASopC,aAClB,CAAE,MAAOjmC,GAAM,CACjB,CAq+BsBkmC,IAAuBrpC,EAASspC,eAAiB5M,EAAKz7B,MAAQy7B,EAAK6M,OAAS7M,EAAK8M,SACnG,EAEAC,QAASxE,IAAqB,GAC9B5B,SAAU4B,IAAqB,GAC/ByE,QAAS,SAAUhN,GAGjB,OAAOD,EAASC,EAAM,YAAcA,EAAKgN,SAAWjN,EAASC,EAAM,aAAeA,EAAKiN,QACzF,EACAA,SAAU,SAAUjN,GASlB,OAJIA,EAAKV,YAEPU,EAAKV,WAAW4N,eAEO,IAAlBlN,EAAKiN,QACd,EAEA5jC,MAAO,SAAU22B,GAKf,IAAKA,EAAOA,EAAK4L,WAAY5L,EAAMA,EAAOA,EAAKmN,YAC7C,GAAInN,EAAKrB,SAAW,EAClB,OAAO,EAGX,OAAO,CACT,EACA+M,OAAQ,SAAU1L,GAChB,OAAQ4D,EAAKiB,QAAQx7B,MAAM22B,EAC7B,EAEAoN,OAAQ,SAAUpN,GAChB,OAAO8F,EAAQ30B,KAAK6uB,EAAKD,SAC3B,EACAv4B,MAAO,SAAUw4B,GACf,OAAO6F,EAAQ10B,KAAK6uB,EAAKD,SAC3B,EACAsN,OAAQ,SAAUrN,GAChB,OAAOD,EAASC,EAAM,UAA0B,WAAdA,EAAKz7B,MAAqBw7B,EAASC,EAAM,SAC7E,EACAZ,KAAM,SAAUY,GACd,IAAIiK,EACJ,OAAOlK,EAASC,EAAM,UAA0B,SAAdA,EAAKz7B,OAID,OAArC0lC,EAAOjK,EAAKX,aAAa,UAA2C,SAAvB4K,EAAKn2B,cACrD,EAEA2sB,MAAOgI,IAAuB,WAC5B,MAAO,CAAC,EACV,IACA9H,KAAM8H,IAAuB,SAAU6E,EAAexrC,GACpD,MAAO,CAACA,EAAS,EACnB,IACA4+B,GAAI+H,IAAuB,SAAU6E,EAAexrC,EAAQ4mC,GAC1D,MAAO,CAACA,EAAW,EAAIA,EAAW5mC,EAAS4mC,EAC7C,IACA9H,KAAM6H,IAAuB,SAAUE,EAAc7mC,GAEnD,IADA,IAAIF,EAAI,EACDA,EAAIE,EAAQF,GAAK,EACtB+mC,EAAavmC,KAAKR,GAEpB,OAAO+mC,CACT,IACA5H,IAAK0H,IAAuB,SAAUE,EAAc7mC,GAElD,IADA,IAAIF,EAAI,EACDA,EAAIE,EAAQF,GAAK,EACtB+mC,EAAavmC,KAAKR,GAEpB,OAAO+mC,CACT,IACA4E,GAAI9E,IAAuB,SAAUE,EAAc7mC,EAAQ4mC,GACzD,IAAI9mC,EAQJ,IANEA,EADE8mC,EAAW,EACTA,EAAW5mC,EACN4mC,EAAW5mC,EAChBA,EAEA4mC,IAEG9mC,GAAK,GACZ+mC,EAAavmC,KAAKR,GAEpB,OAAO+mC,CACT,IACA6E,GAAI/E,IAAuB,SAAUE,EAAc7mC,EAAQ4mC,GAEzD,IADA,IAAI9mC,EAAI8mC,EAAW,EAAIA,EAAW5mC,EAAS4mC,IAClC9mC,EAAIE,GACX6mC,EAAavmC,KAAKR,GAEpB,OAAO+mC,CACT,MAGJ/E,EAAKiB,QAAQ4I,IAAM7J,EAAKiB,QAAQnE,GAGtB,CACRgN,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,UAAU,EACVC,OAAO,GAEPlK,EAAKiB,QAAQjjC,GAAKymC,GAAkBzmC,GAEtC,IAAKA,IAAK,CACRmsC,QAAQ,EACRC,OAAO,GAEPpK,EAAKiB,QAAQjjC,GAAK0mC,GAAmB1mC,GAIvC,SAASmqC,KAAc,CAGvB,SAASrE,GAAS/H,EAAUsO,GAC1B,IAAIz2B,EACF/G,EACAoH,EACAtT,EACA2pC,EACAjH,EACAkH,EACAC,EAAS9J,EAAW3E,EAAW,KACjC,GAAIyO,EACF,OAAOH,EAAY,EAAIG,EAAOtnC,MAAM,GAKtC,IAHAonC,EAAQvO,EACRsH,EAAS,GACTkH,EAAavK,EAAK4G,UACX0D,GAAO,CAuBZ,IAAK3pC,KArBAiT,KAAY/G,EAAQs0B,EAAOrf,KAAKwoB,MAC/Bz9B,IAEFy9B,EAAQA,EAAMpnC,MAAM2J,EAAM,GAAG3O,SAAWosC,GAE1CjH,EAAO7kC,KAAKyV,EAAS,KAEvBL,GAAU,GAGN/G,EAAQu0B,EAAmBtf,KAAKwoB,MAClC12B,EAAU/G,EAAMlO,QAChBsV,EAAOzV,KAAK,CACVyD,MAAO2R,EAEPjT,KAAMkM,EAAM,GAAGC,QAAQqyB,EAAU,OAEnCmL,EAAQA,EAAMpnC,MAAM0Q,EAAQ1V,SAIjB8hC,EAAK9S,SACXrgB,EAAQ20B,EAAU7gC,GAAMmhB,KAAKwoB,KAAaC,EAAW5pC,MAAUkM,EAAQ09B,EAAW5pC,GAAMkM,MAC3F+G,EAAU/G,EAAMlO,QAChBsV,EAAOzV,KAAK,CACVyD,MAAO2R,EACPjT,KAAMA,EACN+oB,QAAS7c,IAEXy9B,EAAQA,EAAMpnC,MAAM0Q,EAAQ1V,SAGhC,IAAK0V,EACH,KAEJ,CAKA,OAAIy2B,EACKC,EAAMpsC,OAERosC,EAAQpH,EAAK/iC,MAAM47B,GAE1B2E,EAAW3E,EAAUsH,GAAQngC,MAAM,EACrC,CACA,SAAS6gC,GAAW9vB,GAIlB,IAHA,IAAIjW,EAAI,EACN2J,EAAMsM,EAAO/V,OACb69B,EAAW,GACN/9B,EAAI2J,EAAK3J,IACd+9B,GAAY9nB,EAAOjW,GAAGiE,MAExB,OAAO85B,CACT,CACA,SAAS+G,GAActZ,EAASihB,EAAY3e,GAC1C,IAAI2F,EAAMgZ,EAAWhZ,IACnBiZ,EAAOD,EAAWprB,KAClB9c,EAAMmoC,GAAQjZ,EACdkZ,EAAmB7e,GAAgB,eAARvpB,EAC3BqoC,EAAWrK,IACb,OAAOkK,EAAW5N,MAElB,SAAUT,EAAMJ,EAAS0L,GACvB,KAAOtL,EAAOA,EAAK3K,IACjB,GAAsB,IAAlB2K,EAAKrB,UAAkB4P,EACzB,OAAOnhB,EAAQ4S,EAAMJ,EAAS0L,GAGlC,OAAO,CACT,EAEA,SAAUtL,EAAMJ,EAAS0L,GACvB,IAAImD,EACFlD,EACAmD,EAAW,CAACxK,EAASsK,GAGvB,GAAIlD,GACF,KAAOtL,EAAOA,EAAK3K,IACjB,IAAsB,IAAlB2K,EAAKrB,UAAkB4P,IACrBnhB,EAAQ4S,EAAMJ,EAAS0L,GACzB,OAAO,OAKb,KAAOtL,EAAOA,EAAK3K,IACjB,GAAsB,IAAlB2K,EAAKrB,UAAkB4P,EAEzB,GADAhD,EAAavL,EAAKuB,KAAavB,EAAKuB,GAAW,CAAC,GAC5C+M,GAAQvO,EAASC,EAAMsO,GACzBtO,EAAOA,EAAK3K,IAAQ2K,MACf,KAAKyO,EAAWlD,EAAWplC,KAASsoC,EAAS,KAAOvK,GAAWuK,EAAS,KAAOD,EAEpF,OAAOE,EAAS,GAAKD,EAAS,GAM9B,GAHAlD,EAAWplC,GAAOuoC,EAGdA,EAAS,GAAKthB,EAAQ4S,EAAMJ,EAAS0L,GACvC,OAAO,CAEX,CAIN,OAAO,CACT,CACF,CACA,SAASqD,GAAeC,GACtB,OAAOA,EAAS9sC,OAAS,EAAI,SAAUk+B,EAAMJ,EAAS0L,GAEpD,IADA,IAAI1pC,EAAIgtC,EAAS9sC,OACVF,KACL,IAAKgtC,EAAShtC,GAAGo+B,EAAMJ,EAAS0L,GAC9B,OAAO,EAGX,OAAO,CACT,EAAIsD,EAAS,EACf,CASA,SAASC,GAAS1C,EAAW5jC,EAAKuoB,EAAQ8O,EAAS0L,GAMjD,IALA,IAAItL,EACF8O,EAAe,GACfltC,EAAI,EACJ2J,EAAM4gC,EAAUrqC,OAChBitC,EAAgB,MAAPxmC,EACJ3G,EAAI2J,EAAK3J,KACVo+B,EAAOmM,EAAUvqC,MACdkvB,IAAUA,EAAOkP,EAAMJ,EAAS0L,KACnCwD,EAAa1sC,KAAK49B,GACd+O,GACFxmC,EAAInG,KAAKR,KAKjB,OAAOktC,CACT,CACA,SAASE,GAAWxE,EAAW7K,EAAUvS,EAAS6hB,EAAYC,EAAYC,GAOxE,OANIF,IAAeA,EAAW1N,KAC5B0N,EAAaD,GAAWC,IAEtBC,IAAeA,EAAW3N,KAC5B2N,EAAaF,GAAWE,EAAYC,IAE/BjH,IAAa,SAAUnB,EAAM7E,EAAStC,EAAS0L,GACpD,IAAIhjB,EACF1mB,EACAo+B,EACAoP,EACAC,EAAS,GACTC,EAAU,GACVC,EAAcrN,EAAQpgC,OAEtBu+B,EAAQ0G,GA1Cd,SAA0BpH,EAAU6P,EAAUtN,GAG5C,IAFA,IAAItgC,EAAI,EACN2J,EAAMikC,EAAS1tC,OACVF,EAAI2J,EAAK3J,IACdklC,EAAKnH,EAAU6P,EAAS5tC,GAAIsgC,GAE9B,OAAOA,CACT,CAmCsBuN,CAAiB9P,GAAY,IAAKC,EAAQjB,SAAW,CAACiB,GAAWA,EAAS,IAE1F8P,GAAYlF,IAAczD,GAASpH,EAA+DU,EAAnDwO,GAASxO,EAAOgP,EAAQ7E,EAAW5K,EAAS0L,GAiB7F,GAhBIle,EAUFA,EAAQsiB,EAPRN,EAAaF,IAAenI,EAAOyD,EAAY+E,GAAeN,GAE9D,GAEA/M,EAG+BtC,EAAS0L,GAExC8D,EAAaM,EAIXT,EAMF,IALA3mB,EAAOumB,GAASO,EAAYE,GAC5BL,EAAW3mB,EAAM,GAAIsX,EAAS0L,GAG9B1pC,EAAI0mB,EAAKxmB,OACFF,MACDo+B,EAAO1X,EAAK1mB,MACdwtC,EAAWE,EAAQ1tC,MAAQ8tC,EAAUJ,EAAQ1tC,IAAMo+B,IAIzD,GAAI+G,GACF,GAAImI,GAAc1E,EAAW,CAC3B,GAAI0E,EAAY,CAId,IAFA5mB,EAAO,GACP1mB,EAAIwtC,EAAWttC,OACRF,MACDo+B,EAAOoP,EAAWxtC,KAEpB0mB,EAAKlmB,KAAKstC,EAAU9tC,GAAKo+B,GAG7BkP,EAAW,KAAME,EAAa,GAAI9mB,EAAMgjB,EAC1C,CAIA,IADA1pC,EAAIwtC,EAAWttC,OACRF,MACAo+B,EAAOoP,EAAWxtC,MAAQ0mB,EAAO4mB,EAAa92B,EAAQlW,KAAK6kC,EAAM/G,GAAQqP,EAAOztC,KAAO,IAC1FmlC,EAAKze,KAAU4Z,EAAQ5Z,GAAQ0X,GAGrC,OAIAoP,EAAaP,GAASO,IAAelN,EAAUkN,EAAWnO,OAAOsO,EAAaH,EAAWttC,QAAUstC,GAC/FF,EACFA,EAAW,KAAMhN,EAASkN,EAAY9D,GAEtClpC,EAAK+E,MAAM+6B,EAASkN,EAG1B,GACF,CACA,SAASO,GAAkB93B,GA2BzB,IA1BA,IAAI+3B,EACFxiB,EACApK,EACAzX,EAAMsM,EAAO/V,OACb+tC,EAAkBjM,EAAK2G,SAAS1yB,EAAO,GAAGtT,MAC1CurC,EAAmBD,GAAmBjM,EAAK2G,SAAS,KACpD3oC,EAAIiuC,EAAkB,EAAI,EAE1BE,EAAerJ,IAAc,SAAU1G,GACrC,OAAOA,IAAS4P,CAClB,GAAGE,GAAkB,GACrBE,EAAkBtJ,IAAc,SAAU1G,GACxC,OAAO5nB,EAAQlW,KAAK0tC,EAAc5P,IAAS,CAC7C,GAAG8P,GAAkB,GACrBlB,EAAW,CAAC,SAAU5O,EAAMJ,EAAS0L,GAKnC,IAAIlc,GAAOygB,IAAoBvE,GAAO1L,GAAWiE,MAAuB+L,EAAehQ,GAASjB,SAAWoR,EAAa/P,EAAMJ,EAAS0L,GAAO0E,EAAgBhQ,EAAMJ,EAAS0L,IAK7K,OADAsE,EAAe,KACRxgB,CACT,GACKxtB,EAAI2J,EAAK3J,IACd,GAAIwrB,EAAUwW,EAAK2G,SAAS1yB,EAAOjW,GAAG2C,MACpCqqC,EAAW,CAAClI,GAAciI,GAAeC,GAAWxhB,QAC/C,CAIL,IAHAA,EAAUwW,EAAK9S,OAAOjZ,EAAOjW,GAAG2C,MAAM4C,MAAM,KAAM0Q,EAAOjW,GAAG0rB,UAGhDiU,GAAU,CAGpB,IADAve,IAAMphB,EACCohB,EAAIzX,IACLq4B,EAAK2G,SAAS1yB,EAAOmL,GAAGze,MADdye,KAKhB,OAAOgsB,GAAWptC,EAAI,GAAK+sC,GAAeC,GAAWhtC,EAAI,GAAK+lC,GAE9D9vB,EAAO/Q,MAAM,EAAGlF,EAAI,GAAGuc,OAAO,CAC5BtY,MAA8B,MAAvBgS,EAAOjW,EAAI,GAAG2C,KAAe,IAAM,MACxCmM,QAAQqyB,EAAU,MAAO3V,EAASxrB,EAAIohB,GAAK2sB,GAAkB93B,EAAO/Q,MAAMlF,EAAGohB,IAAKA,EAAIzX,GAAOokC,GAAkB93B,EAASA,EAAO/Q,MAAMkc,IAAKA,EAAIzX,GAAOo8B,GAAW9vB,GACtK,CACA+2B,EAASxsC,KAAKgrB,EAChB,CAEF,OAAOuhB,GAAeC,EACxB,CAmHA,SAAS1C,GAAQvM,EAAUlvB,GACzB,IAAI7O,EACFquC,EAAc,GACdC,EAAkB,GAClB9B,EAAS7J,EAAc5E,EAAW,KACpC,IAAKyO,EAAQ,CAMX,IAJK39B,IACHA,EAAQi3B,GAAS/H,IAEnB/9B,EAAI6O,EAAM3O,OACHF,MACLwsC,EAASuB,GAAkBl/B,EAAM7O,KACtB2/B,GACT0O,EAAY7tC,KAAKgsC,GAEjB8B,EAAgB9tC,KAAKgsC,GAKzBA,EAAS7J,EAAc5E,EAvI3B,SAAkCuQ,EAAiBD,GACjD,IAAIE,EAAQF,EAAYnuC,OAAS,EAC/BsuC,EAAYF,EAAgBpuC,OAAS,EACrCuuC,EAAe,SAAUtJ,EAAMnH,EAAS0L,EAAKpJ,EAASoO,GACpD,IAAItQ,EACFhd,EACAoK,EACAmjB,EAAe,EACf3uC,EAAI,IACJuqC,EAAYpF,GAAQ,GACpByJ,EAAa,GACbC,EAAgB5M,EAEhBxD,EAAQ0G,GAAQqJ,GAAaxM,EAAKkD,KAAKvB,IAAI,IAAK+K,GAEhDI,EAAgBxM,GAA4B,MAAjBuM,EAAwB,EAAIjhC,KAAKgyB,UAAY,GACxEj2B,EAAM80B,EAAMv+B,OAad,IAZIwuC,IAKFzM,EAAmBjE,GAAWt8B,GAAYs8B,GAAW0Q,GAOhD1uC,IAAM2J,GAA4B,OAApBy0B,EAAOK,EAAMz+B,IAAaA,IAAK,CAClD,GAAIwuC,GAAapQ,EAAM,CAWrB,IAVAhd,EAAI,EAMC4c,GAAWI,EAAKwC,eAAiBl/B,IACpCkjC,GAAYxG,GACZsL,GAAOtH,GAEF5W,EAAU8iB,EAAgBltB,MAC/B,GAAIoK,EAAQ4S,EAAMJ,GAAWt8B,EAAUgoC,GAAM,CAC3ClpC,EAAKF,KAAKggC,EAASlC,GACnB,KACF,CAEEsQ,IACFpM,EAAUwM,EAEd,CAGIP,KAEEnQ,GAAQ5S,GAAW4S,IACrBuQ,IAIExJ,GACFoF,EAAU/pC,KAAK49B,GAGrB,CAaA,GATAuQ,GAAgB3uC,EASZuuC,GAASvuC,IAAM2uC,EAAc,CAE/B,IADAvtB,EAAI,EACGoK,EAAU6iB,EAAYjtB,MAC3BoK,EAAQ+e,EAAWqE,EAAY5Q,EAAS0L,GAE1C,GAAIvE,EAAM,CAER,GAAIwJ,EAAe,EACjB,KAAO3uC,KACCuqC,EAAUvqC,IAAM4uC,EAAW5uC,KAC/B4uC,EAAW5uC,GAAKihC,EAAI3gC,KAAKggC,IAM/BsO,EAAa3B,GAAS2B,EACxB,CAGApuC,EAAK+E,MAAM+6B,EAASsO,GAGhBF,IAAcvJ,GAAQyJ,EAAW1uC,OAAS,GAAKyuC,EAAeN,EAAYnuC,OAAS,GACrF49B,EAAOyK,WAAWjI,EAEtB,CAOA,OAJIoO,IACFpM,EAAUwM,EACV7M,EAAmB4M,GAEdtE,CACT,EACF,OAAOgE,EAAQjI,GAAamI,GAAgBA,CAC9C,CAsBqCM,CAAyBT,EAAiBD,IAG3E7B,EAAOzO,SAAWA,CACpB,CACA,OAAOyO,CACT,CAWA,SAASrG,GAAOpI,EAAUC,EAASsC,EAAS6E,GAC1C,IAAInlC,EACFiW,EACA1H,EACA5L,EACAuiC,EACA8J,EAA+B,oBAAbjR,GAA2BA,EAC7ClvB,GAASs2B,GAAQW,GAAS/H,EAAWiR,EAASjR,UAAYA,GAK5D,GAJAuC,EAAUA,GAAW,GAIA,IAAjBzxB,EAAM3O,OAAc,CAGtB,IADA+V,EAASpH,EAAM,GAAKA,EAAM,GAAG3J,MAAM,IACxBhF,OAAS,GAAkC,QAA5BqO,EAAQ0H,EAAO,IAAItT,MAAsC,IAArBq7B,EAAQjB,UAAkBqF,GAAkBJ,EAAK2G,SAAS1yB,EAAO,GAAGtT,MAAO,CAEvI,KADAq7B,GAAWgE,EAAKkD,KAAKzB,GAAGl1B,EAAMmd,QAAQ,GAAG5c,QAAQu1B,EAAWC,GAAYtG,IAAY,IAAI,IAEtF,OAAOsC,EAGE0O,IACThR,EAAUA,EAAQN,YAEpBK,EAAWA,EAAS74B,MAAM+Q,EAAOtV,QAAQsD,MAAM/D,OACjD,CAIA,IADAF,EAAIwjC,EAAUQ,aAAaz0B,KAAKwuB,GAAY,EAAI9nB,EAAO/V,OAChDF,MACLuO,EAAQ0H,EAAOjW,IAGXgiC,EAAK2G,SAAShmC,EAAO4L,EAAM5L,QAG/B,IAAIuiC,EAAOlD,EAAKkD,KAAKviC,MAEfwiC,EAAOD,EAAK32B,EAAMmd,QAAQ,GAAG5c,QAAQu1B,EAAWC,GAAYF,EAAS70B,KAAK0G,EAAO,GAAGtT,OAASijC,GAAY5H,EAAQN,aAAeM,IAAU,CAI5I,GAFA/nB,EAAOopB,OAAOr/B,EAAG,KACjB+9B,EAAWoH,EAAKjlC,QAAU6lC,GAAW9vB,IAGnC,OADAzV,EAAK+E,MAAM+6B,EAAS6E,GACb7E,EAET,KACF,CAGN,CAKA,OADC0O,GAAY1E,GAAQvM,EAAUlvB,IAAQs2B,EAAMnH,GAAUoE,EAAgB9B,GAAUtC,GAAWoG,EAAS70B,KAAKwuB,IAAa6H,GAAY5H,EAAQN,aAAeM,GACnJsC,CACT,CA9fA6J,GAAW/pC,UAAY4hC,EAAKiN,QAAUjN,EAAKiB,QAC3CjB,EAAKmI,WAAa,IAAIA,GAmgBtBrN,EAAQ2L,WAAa9I,EAAQhoB,MAAM,IAAI5E,KAAK8vB,GAAWp3B,KAAK,MAAQk0B,EAGpEiF,KAIA9H,EAAQmL,aAAe1B,IAAO,SAAUC,GAEtC,OAAwE,EAAjEA,EAAGlF,wBAAwB5/B,EAASC,cAAc,YAC3D,IACAm8B,EAAOoH,KAAOA,EAGdpH,EAAOoK,KAAK,KAAOpK,EAAOoK,KAAKjF,QAC/BnF,EAAOoR,OAASpR,EAAOyK,WAIvBrD,EAAKoF,QAAUA,GACfpF,EAAKiB,OAASA,GACdjB,EAAKN,YAAcA,GACnBM,EAAKY,SAAWA,GAChBZ,EAAKX,OAASzG,EAAO8D,eACrBsD,EAAKiK,QAAUrR,EAAON,KACtB0H,EAAKkK,MAAQtR,EAAO0C,SACpB0E,EAAKmK,UAAYvR,EAAOoK,KACxBhD,EAAKpI,QAAUgB,EAAOhB,QACtBoI,EAAKqD,WAAazK,EAAOyK,UAG1B,CA9uDD,GAgvDA,IAAI9U,EAAM,SAAU2K,EAAM3K,EAAKL,GAG7B,IAFA,IAAIxd,EAAU,GACZ05B,OAAqBrsC,IAAVmwB,GACLgL,EAAOA,EAAK3K,KAA2B,IAAlB2K,EAAKrB,UAChC,GAAsB,IAAlBqB,EAAKrB,SAAgB,CACvB,GAAIuS,GAAYxR,EAAOM,GAAMmR,GAAGnc,GAC9B,MAEFxd,EAAQpV,KAAK49B,EACf,CAEF,OAAOxoB,CACT,EACI45B,EAAW,SAAU/qC,EAAG25B,GAE1B,IADA,IAAIxoB,EAAU,GACPnR,EAAGA,EAAIA,EAAE8mC,YACK,IAAf9mC,EAAEs4B,UAAkBt4B,IAAM25B,GAC5BxoB,EAAQpV,KAAKiE,GAGjB,OAAOmR,CACT,EACI65B,EAAgB3R,EAAOoK,KAAKr5B,MAAMm1B,aAClC0L,EAAa,kEAGjB,SAASC,EAAOxH,EAAUyH,EAAWvF,GACnC,OAAIv+B,EAAW8jC,GACN9R,EAAOmB,KAAKkJ,GAAU,SAAU/J,EAAMp+B,GAC3C,QAAS4vC,EAAUtvC,KAAK89B,EAAMp+B,EAAGo+B,KAAUiM,CAC7C,IAIEuF,EAAU7S,SACLe,EAAOmB,KAAKkJ,GAAU,SAAU/J,GACrC,OAAOA,IAASwR,IAAcvF,CAChC,IAIuB,kBAAduF,EACF9R,EAAOmB,KAAKkJ,GAAU,SAAU/J,GACrC,OAAO5nB,EAAQlW,KAAKsvC,EAAWxR,IAAS,IAAMiM,CAChD,IAIKvM,EAAO5O,OAAO0gB,EAAWzH,EAAUkC,EAC5C,CACAvM,EAAO5O,OAAS,SAAUgZ,EAAMzJ,EAAO4L,GACrC,IAAIjM,EAAOK,EAAM,GAIjB,OAHI4L,IACFnC,EAAO,QAAUA,EAAO,KAEL,IAAjBzJ,EAAMv+B,QAAkC,IAAlBk+B,EAAKrB,SACtBe,EAAOoH,KAAKkD,gBAAgBhK,EAAM8J,GAAQ,CAAC9J,GAAQ,GAErDN,EAAOoH,KAAKxZ,QAAQwc,EAAMpK,EAAOmB,KAAKR,GAAO,SAAUL,GAC5D,OAAyB,IAAlBA,EAAKrB,QACd,IACF,EACAe,EAAOj3B,GAAGG,OAAO,CACfk+B,KAAM,SAAUnH,GACd,IAAI/9B,EACFwtB,EACA7jB,EAAMD,KAAKxJ,OACX2vC,EAAOnmC,KACT,GAAwB,kBAAbq0B,EACT,OAAOr0B,KAAK80B,UAAUV,EAAOC,GAAU7O,QAAO,WAC5C,IAAKlvB,EAAI,EAAGA,EAAI2J,EAAK3J,IACnB,GAAI89B,EAAOsD,SAASyO,EAAK7vC,GAAI0J,MAC3B,OAAO,CAGb,KAGF,IADA8jB,EAAM9jB,KAAK80B,UAAU,IAChBx+B,EAAI,EAAGA,EAAI2J,EAAK3J,IACnB89B,EAAOoH,KAAKnH,EAAU8R,EAAK7vC,GAAIwtB,GAEjC,OAAO7jB,EAAM,EAAIm0B,EAAOyK,WAAW/a,GAAOA,CAC5C,EACA0B,OAAQ,SAAU6O,GAChB,OAAOr0B,KAAK80B,UAAUmR,EAAOjmC,KAAMq0B,GAAY,IAAI,GACrD,EACAsM,IAAK,SAAUtM,GACb,OAAOr0B,KAAK80B,UAAUmR,EAAOjmC,KAAMq0B,GAAY,IAAI,GACrD,EACAwR,GAAI,SAAUxR,GACZ,QAAS4R,EAAOjmC,KAGI,kBAAbq0B,GAAyB0R,EAAclgC,KAAKwuB,GAAYD,EAAOC,GAAYA,GAAY,IAAI,GAAO79B,MAC3G,IAMF,IAAI4vC,EAKF3L,EAAa,uCACNrG,EAAOj3B,GAAGo3B,KAAO,SAAUF,EAAUC,EAAS4M,GACnD,IAAI/7B,EAAOuvB,EAGX,IAAKL,EACH,OAAOr0B,KAQT,GAHAkhC,EAAOA,GAAQkF,EAGS,kBAAb/R,EAAuB,CAShC,KANElvB,EAFkB,MAAhBkvB,EAAS,IAAgD,MAAlCA,EAASA,EAAS79B,OAAS,IAAc69B,EAAS79B,QAAU,EAE7E,CAAC,KAAM69B,EAAU,MAEjBoG,EAAWrgB,KAAKia,MAIZlvB,EAAM,IAAOmvB,EAoCpB,OAAKA,GAAWA,EAAQK,QACrBL,GAAW4M,GAAM1F,KAAKnH,GAKvBr0B,KAAK40B,YAAYN,GAASkH,KAAKnH,GAxCtC,GAAIlvB,EAAM,GAAI,CAQZ,GAPAmvB,EAAUA,aAAmBF,EAASE,EAAQ,GAAKA,EAInDF,EAAOY,MAAMh1B,KAAMo0B,EAAOiS,UAAUlhC,EAAM,GAAImvB,GAAWA,EAAQjB,SAAWiB,EAAQ4C,eAAiB5C,EAAUt8B,GAAU,IAGrHguC,EAAWngC,KAAKV,EAAM,KAAOivB,EAAO4B,cAAc1B,GACpD,IAAKnvB,KAASmvB,EAERlyB,EAAWpC,KAAKmF,IAClBnF,KAAKmF,GAAOmvB,EAAQnvB,IAIpBnF,KAAK2+B,KAAKx5B,EAAOmvB,EAAQnvB,IAI/B,OAAOnF,IAGT,CAOE,OANA00B,EAAO18B,EAAS8jC,eAAe32B,EAAM,OAGnCnF,KAAK,GAAK00B,EACV10B,KAAKxJ,OAAS,GAETwJ,IAcb,CAAO,OAAIq0B,EAAShB,UAClBrzB,KAAK,GAAKq0B,EACVr0B,KAAKxJ,OAAS,EACPwJ,MAIEoC,EAAWiyB,QACE96B,IAAf2nC,EAAKoF,MAAsBpF,EAAKoF,MAAMjS,GAE7CA,EAASD,GAEJA,EAAOuC,UAAUtC,EAAUr0B,KACpC,GAGGtJ,UAAY09B,EAAOj3B,GAGxBipC,EAAahS,EAAOp8B,GACpB,IAAIuuC,EAAe,iCAEjBC,EAAmB,CACjBC,UAAU,EACVC,UAAU,EACV/uB,MAAM,EACNgvB,MAAM,GA8DV,SAASC,EAAQC,EAAK9c,GACpB,MAAQ8c,EAAMA,EAAI9c,KAA0B,IAAjB8c,EAAIxT,WAC/B,OAAOwT,CACT,CA/DAzS,EAAOj3B,GAAGG,OAAO,CACfwjC,IAAK,SAAU3nC,GACb,IAAI2tC,EAAU1S,EAAOj7B,EAAQ6G,MAC3B1I,EAAIwvC,EAAQtwC,OACd,OAAOwJ,KAAKwlB,QAAO,WAEjB,IADA,IAAIlvB,EAAI,EACDA,EAAIgB,EAAGhB,IACZ,GAAI89B,EAAOsD,SAAS13B,KAAM8mC,EAAQxwC,IAChC,OAAO,CAGb,GACF,EACAywC,QAAS,SAAUpB,EAAWrR,GAC5B,IAAIuS,EACFvwC,EAAI,EACJgB,EAAI0I,KAAKxJ,OACT0V,EAAU,GACV46B,EAA+B,kBAAdnB,GAA0BvR,EAAOuR,GAGpD,IAAKI,EAAclgC,KAAK8/B,GACtB,KAAOrvC,EAAIgB,EAAGhB,IACZ,IAAKuwC,EAAM7mC,KAAK1J,GAAIuwC,GAAOA,IAAQvS,EAASuS,EAAMA,EAAI7S,WAEpD,GAAI6S,EAAIxT,SAAW,KAAOyT,EAAUA,EAAQ9Y,MAAM6Y,IAAQ,EAEzC,IAAjBA,EAAIxT,UAAkBe,EAAOoH,KAAKkD,gBAAgBmI,EAAKlB,IAAa,CAClEz5B,EAAQpV,KAAK+vC,GACb,KACF,CAIN,OAAO7mC,KAAK80B,UAAU5oB,EAAQ1V,OAAS,EAAI49B,EAAOyK,WAAW3yB,GAAWA,EAC1E,EAEA8hB,MAAO,SAAU0G,GAEf,OAAKA,EAKe,kBAATA,EACF5nB,EAAQlW,KAAKw9B,EAAOM,GAAO10B,KAAK,IAIlC8M,EAAQlW,KAAKoJ,KAEpB00B,EAAKC,OAASD,EAAK,GAAKA,GAXf10B,KAAK,IAAMA,KAAK,GAAGg0B,WAAah0B,KAAKm1B,QAAQ6R,UAAUxwC,QAAU,CAY5E,EACA8b,IAAK,SAAU+hB,EAAUC,GACvB,OAAOt0B,KAAK80B,UAAUV,EAAOyK,WAAWzK,EAAOY,MAAMh1B,KAAK7F,MAAOi6B,EAAOC,EAAUC,KACpF,EACA2S,QAAS,SAAU5S,GACjB,OAAOr0B,KAAKsS,IAAgB,MAAZ+hB,EAAmBr0B,KAAKi1B,WAAaj1B,KAAKi1B,WAAWzP,OAAO6O,GAC9E,IAMFD,EAAOc,KAAK,CACVkL,OAAQ,SAAU1L,GAChB,IAAI0L,EAAS1L,EAAKV,WAClB,OAAOoM,GAA8B,KAApBA,EAAO/M,SAAkB+M,EAAS,IACrD,EACA8G,QAAS,SAAUxS,GACjB,OAAO3K,EAAI2K,EAAM,aACnB,EACAyS,aAAc,SAAUzS,EAAM/zB,EAAI+oB,GAChC,OAAOK,EAAI2K,EAAM,aAAchL,EACjC,EACA/R,KAAM,SAAU+c,GACd,OAAOkS,EAAQlS,EAAM,cACvB,EACAiS,KAAM,SAAUjS,GACd,OAAOkS,EAAQlS,EAAM,kBACvB,EACA0S,QAAS,SAAU1S,GACjB,OAAO3K,EAAI2K,EAAM,cACnB,EACAsS,QAAS,SAAUtS,GACjB,OAAO3K,EAAI2K,EAAM,kBACnB,EACA2S,UAAW,SAAU3S,EAAM/zB,EAAI+oB,GAC7B,OAAOK,EAAI2K,EAAM,cAAehL,EAClC,EACA4d,UAAW,SAAU5S,EAAM/zB,EAAI+oB,GAC7B,OAAOK,EAAI2K,EAAM,kBAAmBhL,EACtC,EACAoc,SAAU,SAAUpR,GAClB,OAAOoR,GAAUpR,EAAKV,YAAc,CAAC,GAAGsM,WAAY5L,EACtD,EACA+R,SAAU,SAAU/R,GAClB,OAAOoR,EAASpR,EAAK4L,WACvB,EACAoG,SAAU,SAAUhS,GAClB,OAA4B,MAAxBA,EAAK6S,iBAIT1U,EAAS6B,EAAK6S,iBACL7S,EAAK6S,iBAMV9S,EAASC,EAAM,cACjBA,EAAOA,EAAK8S,SAAW9S,GAElBN,EAAOY,MAAM,GAAIN,EAAK4G,YAC/B,IACC,SAAUjiC,EAAM8D,GACjBi3B,EAAOj3B,GAAG9D,GAAQ,SAAUqwB,EAAO2K,GACjC,IAAInoB,EAAUkoB,EAAOn3B,IAAI+C,KAAM7C,EAAIusB,GAkBnC,MAjBuB,UAAnBrwB,EAAKmC,OAAO,KACd64B,EAAW3K,GAET2K,GAAgC,kBAAbA,IACrBnoB,EAAUkoB,EAAO5O,OAAO6O,EAAUnoB,IAEhClM,KAAKxJ,OAAS,IAEXgwC,EAAiBntC,IACpB+6B,EAAOyK,WAAW3yB,GAIhBq6B,EAAa1gC,KAAKxM,IACpB6S,EAAQu7B,WAGLznC,KAAK80B,UAAU5oB,EACxB,CACF,IACA,IAAIw7B,EAAgB,oBAiMpB,SAASC,EAASC,GAChB,OAAOA,CACT,CACA,SAASC,EAAQC,GACf,MAAMA,CACR,CACA,SAASC,EAAWxtC,EAAO3C,EAASC,EAAQmwC,GAC1C,IAAIC,EACJ,IAEM1tC,GAAS6H,EAAW6lC,EAAS1tC,EAAM7C,SACrCuwC,EAAOrxC,KAAK2D,GAAOs+B,KAAKjhC,GAASswC,KAAKrwC,GAG7B0C,GAAS6H,EAAW6lC,EAAS1tC,EAAM4tC,MAC5CF,EAAOrxC,KAAK2D,EAAO3C,EAASC,GAO5BD,EAAQiE,WAAMtC,EAAW,CAACgB,GAAOiB,MAAMwsC,GAM3C,CAAE,MAAOztC,GAGP1C,EAAOgE,WAAMtC,EAAW,CAACgB,GAC3B,CACF,CAjMA65B,EAAOgU,UAAY,SAAUxS,GAG3BA,EAA6B,kBAAZA,EAjCnB,SAAuBA,GACrB,IAAI56B,EAAS,CAAC,EAId,OAHAo5B,EAAOc,KAAKU,EAAQzwB,MAAMuiC,IAAkB,IAAI,SAAUW,EAAGC,GAC3DttC,EAAOstC,IAAQ,CACjB,IACOttC,CACT,CA2B0CutC,CAAc3S,GAAWxB,EAAO92B,OAAO,CAAC,EAAGs4B,GACnF,IAEE4S,EAEAC,EAEAC,EAEAC,EAEAC,EAAO,GAEPC,EAAQ,GAERC,GAAe,EAEfC,EAAO,WAOL,IALAJ,EAASA,GAAU/S,EAAQoT,KAI3BN,EAAQF,GAAS,EACVK,EAAMryC,OAAQsyC,GAAe,EAElC,IADAL,EAASI,EAAM5xC,UACN6xC,EAAcF,EAAKpyC,SAE4B,IAAlDoyC,EAAKE,GAAajtC,MAAM4sC,EAAO,GAAIA,EAAO,KAAiB7S,EAAQqT,cAErEH,EAAcF,EAAKpyC,OACnBiyC,GAAS,GAMV7S,EAAQ6S,SACXA,GAAS,GAEXD,GAAS,EAGLG,IAGAC,EADEH,EACK,GAIA,GAGb,EAEAtC,EAAO,CAEL7zB,IAAK,WAuBH,OAtBIs2B,IAEEH,IAAWD,IACbM,EAAcF,EAAKpyC,OAAS,EAC5BqyC,EAAM/xC,KAAK2xC,IAEb,SAAUn2B,EAAIzQ,GACZuyB,EAAOc,KAAKrzB,GAAM,SAAUwmC,EAAGzmC,GACzBQ,EAAWR,GACRg0B,EAAQ4P,QAAWW,EAAKrF,IAAIl/B,IAC/BgnC,EAAK9xC,KAAK8K,GAEHA,GAAOA,EAAIpL,QAA0B,WAAhB09B,EAAOtyB,IAErC0Q,EAAI1Q,EAER,GACD,CAXD,CAWG9F,WACC2sC,IAAWD,GACbO,KAGG/oC,IACT,EAEAkpC,OAAQ,WAYN,OAXA9U,EAAOc,KAAKp5B,WAAW,SAAUusC,EAAGzmC,GAElC,IADA,IAAIosB,GACIA,EAAQoG,EAAOyC,QAAQj1B,EAAKgnC,EAAM5a,KAAW,GACnD4a,EAAKjT,OAAO3H,EAAO,GAGfA,GAAS8a,GACXA,GAGN,IACO9oC,IACT,EAGA8gC,IAAK,SAAU3jC,GACb,OAAOA,EAAKi3B,EAAOyC,QAAQ15B,EAAIyrC,IAAS,EAAIA,EAAKpyC,OAAS,CAC5D,EAEAuH,MAAO,WAIL,OAHI6qC,IACFA,EAAO,IAEF5oC,IACT,EAIAmpC,QAAS,WAGP,OAFAR,EAASE,EAAQ,GACjBD,EAAOH,EAAS,GACTzoC,IACT,EACAq7B,SAAU,WACR,OAAQuN,CACV,EAIAQ,KAAM,WAKJ,OAJAT,EAASE,EAAQ,GACZJ,GAAWD,IACdI,EAAOH,EAAS,IAEXzoC,IACT,EACA2oC,OAAQ,WACN,QAASA,CACX,EAEAU,SAAU,SAAU/U,EAASzyB,GAS3B,OARK8mC,IAEH9mC,EAAO,CAACyyB,GADRzyB,EAAOA,GAAQ,IACOrG,MAAQqG,EAAKrG,QAAUqG,GAC7CgnC,EAAM/xC,KAAK+K,GACN2mC,GACHO,KAGG/oC,IACT,EAEA+oC,KAAM,WAEJ,OADA5C,EAAKkD,SAASrpC,KAAMlE,WACbkE,IACT,EAEA0oC,MAAO,WACL,QAASA,CACX,GAEJ,OAAOvC,CACT,EAmCA/R,EAAO92B,OAAO,CACZgsC,SAAU,SAAUtkC,GAClB,IAAIukC,EAAS,CAGX,CAAC,SAAU,WAAYnV,EAAOgU,UAAU,UAAWhU,EAAOgU,UAAU,UAAW,GAAI,CAAC,UAAW,OAAQhU,EAAOgU,UAAU,eAAgBhU,EAAOgU,UAAU,eAAgB,EAAG,YAAa,CAAC,SAAU,OAAQhU,EAAOgU,UAAU,eAAgBhU,EAAOgU,UAAU,eAAgB,EAAG,aACjRoB,EAAQ,UACR9xC,EAAU,CACR8xC,MAAO,WACL,OAAOA,CACT,EACAC,OAAQ,WAEN,OADAC,EAAS7Q,KAAK/8B,WAAWosC,KAAKpsC,WACvBkE,IACT,EACA,MAAS,SAAU7C,GACjB,OAAOzF,EAAQywC,KAAK,KAAMhrC,EAC5B,EAEAwsC,KAAM,WAEJ,IAAIC,EAAM9tC,UACV,OAAOs4B,EAAOkV,UAAS,SAAUO,GAC/BzV,EAAOc,KAAKqU,GAAQ,SAAU5oC,EAAImpC,GAEhC,IAAI3sC,EAAKiF,EAAWwnC,EAAIE,EAAM,MAAQF,EAAIE,EAAM,IAKhDJ,EAASI,EAAM,KAAI,WACjB,IAAIC,EAAW5sC,GAAMA,EAAGtB,MAAMmE,KAAMlE,WAChCiuC,GAAY3nC,EAAW2nC,EAASryC,SAClCqyC,EAASryC,UAAUsyC,SAASH,EAASI,QAAQpR,KAAKgR,EAASjyC,SAASswC,KAAK2B,EAAShyC,QAElFgyC,EAASC,EAAM,GAAK,QAAQ9pC,KAAM7C,EAAK,CAAC4sC,GAAYjuC,UAExD,GACF,IACA8tC,EAAM,IACR,IAAGlyC,SACL,EACAywC,KAAM,SAAU+B,EAAaC,EAAYC,GACvC,IAAIC,EAAW,EACf,SAASzyC,EAAQ0yC,EAAOZ,EAAUa,EAASC,GACzC,OAAO,WACL,IAAI1jB,EAAO9mB,KACT6B,EAAO/F,UACP2uC,EAAa,WACX,IAAIV,EAAU5B,EAKd,KAAImC,EAAQD,GAAZ,CAOA,IAJAN,EAAWQ,EAAQ1uC,MAAMirB,EAAMjlB,MAId6nC,EAAShyC,UACxB,MAAM,IAAIgzC,UAAU,4BAOtBvC,EAAO4B,IAIa,kBAAbA,GAA6C,oBAAbA,IAA4BA,EAAS5B,KAGxE/lC,EAAW+lC,GAETqC,EACFrC,EAAKvxC,KAAKmzC,EAAUnyC,EAAQyyC,EAAUX,EAAU/B,EAAU6C,GAAU5yC,EAAQyyC,EAAUX,EAAU7B,EAAS2C,KAKzGH,IACAlC,EAAKvxC,KAAKmzC,EAAUnyC,EAAQyyC,EAAUX,EAAU/B,EAAU6C,GAAU5yC,EAAQyyC,EAAUX,EAAU7B,EAAS2C,GAAU5yC,EAAQyyC,EAAUX,EAAU/B,EAAU+B,EAASiB,eAOhKJ,IAAY5C,IACd7gB,OAAOvtB,EACPsI,EAAO,CAACkoC,KAKTS,GAAWd,EAASkB,aAAa9jB,EAAMjlB,GA3C1C,CA6CF,EAEAgpC,EAAUL,EAAUC,EAAa,WAC/B,IACEA,GACF,CAAE,MAAOlzC,GACH68B,EAAOkV,SAASwB,eAClB1W,EAAOkV,SAASwB,cAAcvzC,EAAGszC,EAAQpyC,OAMvC6xC,EAAQ,GAAKD,IAGXE,IAAY1C,IACd/gB,OAAOvtB,EACPsI,EAAO,CAACtK,IAEVmyC,EAASqB,WAAWjkB,EAAMjlB,GAE9B,CACF,EAMEyoC,EACFO,KAIIzW,EAAOkV,SAAS0B,aAClBH,EAAQpyC,MAAQ27B,EAAOkV,SAAS0B,eAMvB5W,EAAOkV,SAAS2B,eACzBJ,EAAQpyC,MAAQ27B,EAAOkV,SAAS2B,gBAElC3vC,EAAO9B,WAAWqxC,GAEtB,CACF,CACA,OAAOzW,EAAOkV,UAAS,SAAUO,GAE/BN,EAAO,GAAG,GAAGj3B,IAAI1a,EAAQ,EAAGiyC,EAAUznC,EAAWgoC,GAAcA,EAAazC,EAAUkC,EAASc,aAG/FpB,EAAO,GAAG,GAAGj3B,IAAI1a,EAAQ,EAAGiyC,EAAUznC,EAAW8nC,GAAeA,EAAcvC,IAG9E4B,EAAO,GAAG,GAAGj3B,IAAI1a,EAAQ,EAAGiyC,EAAUznC,EAAW+nC,GAAcA,EAAatC,GAC9E,IAAGnwC,SACL,EAGAA,QAAS,SAAUgF,GACjB,OAAc,MAAPA,EAAc03B,EAAO92B,OAAOZ,EAAKhF,GAAWA,CACrD,GAEFgyC,EAAW,CAAC,EA2Dd,OAxDAtV,EAAOc,KAAKqU,GAAQ,SAAUjzC,EAAGwzC,GAC/B,IAAIlB,EAAOkB,EAAM,GACfoB,EAAcpB,EAAM,GAKtBpyC,EAAQoyC,EAAM,IAAMlB,EAAKt2B,IAGrB44B,GACFtC,EAAKt2B,KAAI,WAGPk3B,EAAQ0B,CACV,GAGA3B,EAAO,EAAIjzC,GAAG,GAAG6yC,QAGjBI,EAAO,EAAIjzC,GAAG,GAAG6yC,QAEjBI,EAAO,GAAG,GAAGH,KAEbG,EAAO,GAAG,GAAGH,MAMfR,EAAKt2B,IAAIw3B,EAAM,GAAGf,MAKlBW,EAASI,EAAM,IAAM,WAEnB,OADAJ,EAASI,EAAM,GAAK,QAAQ9pC,OAAS0pC,OAAWnwC,EAAYyG,KAAMlE,WAC3DkE,IACT,EAKA0pC,EAASI,EAAM,GAAK,QAAUlB,EAAKS,QACrC,IAGA3xC,EAAQA,QAAQgyC,GAGZ1kC,GACFA,EAAKpO,KAAK8yC,EAAUA,GAIfA,CACT,EAEAyB,KAAM,SAAUC,GACd,IAEEC,EAAYvvC,UAAUtF,OAEtBF,EAAI+0C,EAEJC,EAAkBnvC,MAAM7F,GACxBi1C,EAAgB/vC,EAAM5E,KAAKkF,WAE3B0vC,EAAUpX,EAAOkV,WAEjBmC,EAAa,SAAUn1C,GACrB,OAAO,SAAUiE,GACf+wC,EAAgBh1C,GAAK0J,KACrBurC,EAAcj1C,GAAKwF,UAAUtF,OAAS,EAAIgF,EAAM5E,KAAKkF,WAAavB,IAC1D8wC,GACNG,EAAQZ,YAAYU,EAAiBC,EAEzC,CACF,EAGF,GAAIF,GAAa,IACftD,EAAWqD,EAAaI,EAAQ3S,KAAK4S,EAAWn1C,IAAIsB,QAAS4zC,EAAQ3zC,QAASwzC,GAGtD,YAApBG,EAAQhC,SAAyBpnC,EAAWmpC,EAAcj1C,IAAMi1C,EAAcj1C,GAAG6xC,OACnF,OAAOqD,EAAQrD,OAKnB,KAAO7xC,KACLyxC,EAAWwD,EAAcj1C,GAAIm1C,EAAWn1C,GAAIk1C,EAAQ3zC,QAEtD,OAAO2zC,EAAQ9zC,SACjB,IAKF,IAAIg0C,EAAc,yDAKlBtX,EAAOkV,SAASwB,cAAgB,SAAUryC,EAAOkzC,GAG3CrwC,EAAOF,SAAWE,EAAOF,QAAQkG,MAAQ7I,GAASizC,EAAY7lC,KAAKpN,EAAMY,OAC3EiC,EAAOF,QAAQkG,KAAK,8BAAgC7I,EAAMW,QAASX,EAAMuJ,MAAO2pC,EAEpF,EACAvX,EAAOwX,eAAiB,SAAUnzC,GAChC6C,EAAO9B,YAAW,WAChB,MAAMf,CACR,GACF,EAGA,IAAIozC,EAAYzX,EAAOkV,WAwCvB,SAASwC,IACP9zC,EAAS+zC,oBAAoB,mBAAoBD,GACjDxwC,EAAOywC,oBAAoB,OAAQD,GACnC1X,EAAOkS,OACT,CA3CAlS,EAAOj3B,GAAGmpC,MAAQ,SAAUnpC,GAS1B,OARA0uC,EAAU1D,KAAKhrC,GAKd6uC,OAAM,SAAUvzC,GACf27B,EAAOwX,eAAenzC,EACxB,IACOuH,IACT,EACAo0B,EAAO92B,OAAO,CAEZ64B,SAAS,EAGT8V,UAAW,EAEX3F,MAAO,SAAU4F,KAEF,IAATA,IAAkB9X,EAAO6X,UAAY7X,EAAO+B,WAKhD/B,EAAO+B,SAAU,GAGJ,IAAT+V,KAAmB9X,EAAO6X,UAAY,GAK1CJ,EAAUjB,YAAY5yC,EAAU,CAACo8B,IACnC,IAEFA,EAAOkS,MAAM6B,KAAO0D,EAAU1D,KAaF,aAAxBnwC,EAASm0C,YAAqD,YAAxBn0C,EAASm0C,aAA6Bn0C,EAASy+B,gBAAgB2V,SAEvG9wC,EAAO9B,WAAW46B,EAAOkS,QAGzBtuC,EAAS2lC,iBAAiB,mBAAoBmO,GAG9CxwC,EAAOqiC,iBAAiB,OAAQmO,IAKlC,IAAIO,GAAS,SAAUtX,EAAO53B,EAAItC,EAAKN,EAAO+xC,EAAWC,EAAUC,GACjE,IAAIl2C,EAAI,EACN2J,EAAM80B,EAAMv+B,OACZi2C,EAAc,MAAP5xC,EAGT,GAAoB,WAAhBq5B,EAAOr5B,GAET,IAAKvE,KADLg2C,GAAY,EACFzxC,EACRwxC,GAAOtX,EAAO53B,EAAI7G,EAAGuE,EAAIvE,IAAI,EAAMi2C,EAAUC,QAI1C,QAAcjzC,IAAVgB,IACT+xC,GAAY,EACPlqC,EAAW7H,KACdiyC,GAAM,GAEJC,IAEED,GACFrvC,EAAGvG,KAAKm+B,EAAOx6B,GACf4C,EAAK,OAILsvC,EAAOtvC,EACPA,EAAK,SAAUu3B,EAAMgY,EAAMnyC,GACzB,OAAOkyC,EAAK71C,KAAKw9B,EAAOM,GAAOn6B,EACjC,IAGA4C,GACF,KAAO7G,EAAI2J,EAAK3J,IACd6G,EAAG43B,EAAMz+B,GAAIuE,EAAK2xC,EAAMjyC,EAAQA,EAAM3D,KAAKm+B,EAAMz+B,GAAIA,EAAG6G,EAAG43B,EAAMz+B,GAAIuE,KAI3E,OAAIyxC,EACKvX,EAIL0X,EACKtvC,EAAGvG,KAAKm+B,GAEV90B,EAAM9C,EAAG43B,EAAM,GAAIl6B,GAAO0xC,CACnC,EAGII,GAAY,QACdC,GAAa,YAGf,SAASC,GAAWC,EAAMC,GACxB,OAAOA,EAAOxmC,aAChB,CAKA,SAASymC,GAAUllC,GACjB,OAAOA,EAAO1C,QAAQunC,GAAW,OAAOvnC,QAAQwnC,GAAYC,GAC9D,CACA,IAAII,GAAa,SAAUC,GAOzB,OAA0B,IAAnBA,EAAM7Z,UAAqC,IAAnB6Z,EAAM7Z,YAAoB6Z,EAAM7Z,QACjE,EACA,SAAS8Z,KACPntC,KAAKi2B,QAAU7B,EAAO6B,QAAUkX,GAAKC,KACvC,CACAD,GAAKC,IAAM,EACXD,GAAKz2C,UAAY,CACfgmC,MAAO,SAAUwQ,GAEf,IAAI3yC,EAAQ2yC,EAAMltC,KAAKi2B,SA0BvB,OAvBK17B,IACHA,EAAQ,CAAC,EAKL0yC,GAAWC,KAGTA,EAAM7Z,SACR6Z,EAAMltC,KAAKi2B,SAAW17B,EAMtB9D,OAAOwD,eAAeizC,EAAOltC,KAAKi2B,QAAS,CACzC17B,MAAOA,EACP8yC,cAAc,MAKf9yC,CACT,EACA+H,IAAK,SAAU4qC,EAAOj3C,EAAMsE,GAC1B,IAAIgG,EACFm8B,EAAQ18B,KAAK08B,MAAMwQ,GAIrB,GAAoB,kBAATj3C,EACTymC,EAAMsQ,GAAU/2C,IAASsE,OAKzB,IAAKgG,KAAQtK,EACXymC,EAAMsQ,GAAUzsC,IAAStK,EAAKsK,GAGlC,OAAOm8B,CACT,EACAviC,IAAK,SAAU+yC,EAAOryC,GACpB,YAAetB,IAARsB,EAAoBmF,KAAK08B,MAAMwQ,GAEtCA,EAAMltC,KAAKi2B,UAAYiX,EAAMltC,KAAKi2B,SAAS+W,GAAUnyC,GACvD,EACAwxC,OAAQ,SAAUa,EAAOryC,EAAKN,GAY5B,YAAYhB,IAARsB,GAAqBA,GAAsB,kBAARA,QAA8BtB,IAAVgB,EAClDyF,KAAK7F,IAAI+yC,EAAOryC,IASzBmF,KAAKsC,IAAI4qC,EAAOryC,EAAKN,QAIJhB,IAAVgB,EAAsBA,EAAQM,EACvC,EACAquC,OAAQ,SAAUgE,EAAOryC,GACvB,IAAIvE,EACFomC,EAAQwQ,EAAMltC,KAAKi2B,SACrB,QAAc18B,IAAVmjC,EAAJ,CAGA,QAAYnjC,IAARsB,EAAmB,CAarBvE,GAREuE,EAHEsB,MAAMF,QAAQpB,GAGVA,EAAIoC,IAAI+vC,KAEdnyC,EAAMmyC,GAAUnyC,MAIH6hC,EAAQ,CAAC7hC,GAAOA,EAAIsK,MAAMuiC,IAAkB,IAEnDlxC,OACR,KAAOF,YACEomC,EAAM7hC,EAAIvE,GAErB,OAGYiD,IAARsB,GAAqBu5B,EAAOkC,cAAcoG,MAKxCwQ,EAAM7Z,SACR6Z,EAAMltC,KAAKi2B,cAAW18B,SAEf2zC,EAAMltC,KAAKi2B,SA7BtB,CAgCF,EACAqX,QAAS,SAAUJ,GACjB,IAAIxQ,EAAQwQ,EAAMltC,KAAKi2B,SACvB,YAAiB18B,IAAVmjC,IAAwBtI,EAAOkC,cAAcoG,EACtD,GAEF,IAAI6Q,GAAW,IAAIJ,GACfK,GAAW,IAAIL,GAYfM,GAAS,gCACXC,GAAa,SAqBf,SAASC,GAASjZ,EAAM75B,EAAK5E,GAC3B,IAAIoD,EAIJ,QAAaE,IAATtD,GAAwC,IAAlBy+B,EAAKrB,SAG7B,GAFAh6B,EAAO,QAAUwB,EAAIuK,QAAQsoC,GAAY,OAAOllC,cAE5B,kBADpBvS,EAAOy+B,EAAKX,aAAa16B,IACK,CAC5B,IACEpD,EA9BR,SAAiBA,GACf,MAAa,SAATA,GAGS,UAATA,IAGS,SAATA,EACK,KAILA,KAAUA,EAAO,IACXA,EAENw3C,GAAO5nC,KAAK5P,GACP23C,KAAKC,MAAM53C,GAEbA,EACT,CAWe63C,CAAQ73C,EACjB,CAAE,MAAOsB,GAAI,CAGbi2C,GAASlrC,IAAIoyB,EAAM75B,EAAK5E,EAC1B,MACEA,OAAOsD,EAGX,OAAOtD,CACT,CACAm+B,EAAO92B,OAAO,CACZgwC,QAAS,SAAU5Y,GACjB,OAAO8Y,GAASF,QAAQ5Y,IAAS6Y,GAASD,QAAQ5Y,EACpD,EACAz+B,KAAM,SAAUy+B,EAAMr7B,EAAMpD,GAC1B,OAAOu3C,GAASnB,OAAO3X,EAAMr7B,EAAMpD,EACrC,EACA83C,WAAY,SAAUrZ,EAAMr7B,GAC1Bm0C,GAAStE,OAAOxU,EAAMr7B,EACxB,EAGAwnB,MAAO,SAAU6T,EAAMr7B,EAAMpD,GAC3B,OAAOs3C,GAASlB,OAAO3X,EAAMr7B,EAAMpD,EACrC,EACA+3C,YAAa,SAAUtZ,EAAMr7B,GAC3Bk0C,GAASrE,OAAOxU,EAAMr7B,EACxB,IAEF+6B,EAAOj3B,GAAGG,OAAO,CACfrH,KAAM,SAAU4E,EAAKN,GACnB,IAAIjE,EACF+C,EACApD,EACAy+B,EAAO10B,KAAK,GACZiuC,EAAQvZ,GAAQA,EAAK4E,WAGvB,QAAY//B,IAARsB,EAAmB,CACrB,GAAImF,KAAKxJ,SACPP,EAAOu3C,GAASrzC,IAAIu6B,GACE,IAAlBA,EAAKrB,WAAmBka,GAASpzC,IAAIu6B,EAAM,iBAAiB,CAE9D,IADAp+B,EAAI23C,EAAMz3C,OACHF,KAGD23C,EAAM33C,IAEsB,KAD9B+C,EAAO40C,EAAM33C,GAAG+C,MACPyT,QAAQ,WACfzT,EAAO2zC,GAAU3zC,EAAKmC,MAAM,IAC5BmyC,GAASjZ,EAAMr7B,EAAMpD,EAAKoD,KAIhCk0C,GAASjrC,IAAIoyB,EAAM,gBAAgB,EACrC,CAEF,OAAOz+B,CACT,CAGA,MAAmB,kBAAR4E,EACFmF,KAAKk1B,MAAK,WACfsY,GAASlrC,IAAItC,KAAMnF,EACrB,IAEKwxC,GAAOrsC,MAAM,SAAUzF,GAC5B,IAAItE,EAOJ,GAAIy+B,QAAkBn7B,IAAVgB,EAIV,YAAahB,KADbtD,EAAOu3C,GAASrzC,IAAIu6B,EAAM75B,UAQbtB,KADbtD,EAAO03C,GAASjZ,EAAM75B,IALb5E,OAWT,EAIF+J,KAAKk1B,MAAK,WAERsY,GAASlrC,IAAItC,KAAMnF,EAAKN,EAC1B,GACF,GAAG,KAAMA,EAAOuB,UAAUtF,OAAS,EAAG,MAAM,EAC9C,EACAu3C,WAAY,SAAUlzC,GACpB,OAAOmF,KAAKk1B,MAAK,WACfsY,GAAStE,OAAOlpC,KAAMnF,EACxB,GACF,IAEFu5B,EAAO92B,OAAO,CACZurC,MAAO,SAAUnU,EAAMz7B,EAAMhD,GAC3B,IAAI4yC,EACJ,GAAInU,EAYF,OAXAz7B,GAAQA,GAAQ,MAAQ,QACxB4vC,EAAQ0E,GAASpzC,IAAIu6B,EAAMz7B,GAGvBhD,KACG4yC,GAAS1sC,MAAMF,QAAQhG,GAC1B4yC,EAAQ0E,GAASlB,OAAO3X,EAAMz7B,EAAMm7B,EAAOuC,UAAU1gC,IAErD4yC,EAAM/xC,KAAKb,IAGR4yC,GAAS,EAEpB,EACAqF,QAAS,SAAUxZ,EAAMz7B,GACvBA,EAAOA,GAAQ,KACf,IAAI4vC,EAAQzU,EAAOyU,MAAMnU,EAAMz7B,GAC7Bk1C,EAActF,EAAMryC,OACpB2G,EAAK0rC,EAAM5xC,QACX2E,EAAQw4B,EAAOga,YAAY1Z,EAAMz7B,GAMxB,eAAPkE,IACFA,EAAK0rC,EAAM5xC,QACXk3C,KAEEhxC,IAGW,OAATlE,GACF4vC,EAAMwF,QAAQ,qBAITzyC,EAAM0yC,KACbnxC,EAAGvG,KAAK89B,GAlBD,WACLN,EAAO8Z,QAAQxZ,EAAMz7B,EACvB,GAgBoB2C,KAEjBuyC,GAAevyC,GAClBA,EAAMmC,MAAMgrC,MAEhB,EAEAqF,YAAa,SAAU1Z,EAAMz7B,GAC3B,IAAI4B,EAAM5B,EAAO,aACjB,OAAOs0C,GAASpzC,IAAIu6B,EAAM75B,IAAQ0yC,GAASlB,OAAO3X,EAAM75B,EAAK,CAC3DkD,MAAOq2B,EAAOgU,UAAU,eAAe91B,KAAI,WACzCi7B,GAASrE,OAAOxU,EAAM,CAACz7B,EAAO,QAAS4B,GACzC,KAEJ,IAEFu5B,EAAOj3B,GAAGG,OAAO,CACfurC,MAAO,SAAU5vC,EAAMhD,GACrB,IAAIi4B,EAAS,EAMb,MALoB,kBAATj1B,IACThD,EAAOgD,EACPA,EAAO,KACPi1B,KAEEpyB,UAAUtF,OAAS03B,EACdkG,EAAOyU,MAAM7oC,KAAK,GAAI/G,QAEfM,IAATtD,EAAqB+J,KAAOA,KAAKk1B,MAAK,WAC3C,IAAI2T,EAAQzU,EAAOyU,MAAM7oC,KAAM/G,EAAMhD,GAGrCm+B,EAAOga,YAAYpuC,KAAM/G,GACZ,OAATA,GAA8B,eAAb4vC,EAAM,IACzBzU,EAAO8Z,QAAQluC,KAAM/G,EAEzB,GACF,EACAi1C,QAAS,SAAUj1C,GACjB,OAAO+G,KAAKk1B,MAAK,WACfd,EAAO8Z,QAAQluC,KAAM/G,EACvB,GACF,EACAs1C,WAAY,SAAUt1C,GACpB,OAAO+G,KAAK6oC,MAAM5vC,GAAQ,KAAM,GAClC,EAGAvB,QAAS,SAAUuB,EAAMyD,GACvB,IAAIgoB,EACF8pB,EAAQ,EACRC,EAAQra,EAAOkV,WACf7K,EAAWz+B,KACX1J,EAAI0J,KAAKxJ,OACToB,EAAU,aACA42C,GACNC,EAAM7D,YAAYnM,EAAU,CAACA,GAEjC,EAMF,IALoB,kBAATxlC,IACTyD,EAAMzD,EACNA,OAAOM,GAETN,EAAOA,GAAQ,KACR3C,MACLouB,EAAM6oB,GAASpzC,IAAIskC,EAASnoC,GAAI2C,EAAO,gBAC5ByrB,EAAI3mB,QACbywC,IACA9pB,EAAI3mB,MAAMuU,IAAI1a,IAIlB,OADAA,IACO62C,EAAM/2C,QAAQgF,EACvB,IAEF,IAAIgyC,GAAO,sCAAsC/rC,OAC7CgsC,GAAU,IAAIlsC,OAAO,iBAAmBisC,GAAO,cAAe,KAC9DE,GAAY,CAAC,MAAO,QAAS,SAAU,QACvCnY,GAAkBz+B,EAASy+B,gBAC3BoY,GAAa,SAAUna,GACvB,OAAON,EAAOsD,SAAShD,EAAKwC,cAAexC,EAC7C,EACAoa,GAAW,CACTA,UAAU,GAQVrY,GAAgBsY,cAClBF,GAAa,SAAUna,GACrB,OAAON,EAAOsD,SAAShD,EAAKwC,cAAexC,IAASA,EAAKqa,YAAYD,MAAcpa,EAAKwC,aAC1F,GAEF,IAAI8X,GAAqB,SAAUta,EAAMoI,GAMvC,MAA8B,UAH9BpI,EAAOoI,GAAMpI,GAGDua,MAAMC,SAA6C,KAAvBxa,EAAKua,MAAMC,SAKnDL,GAAWna,IAAyC,SAAhCN,EAAO+a,IAAIza,EAAM,UACvC,EACA,SAAS0a,GAAU1a,EAAMn0B,EAAM8uC,EAAYC,GACzC,IAAIC,EACFC,EACAC,EAAgB,GAChBC,EAAeJ,EAAQ,WACrB,OAAOA,EAAMzI,KACf,EAAI,WACF,OAAOzS,EAAO+a,IAAIza,EAAMn0B,EAAM,GAChC,EACAovC,EAAUD,IACVrnC,EAAOgnC,GAAcA,EAAW,KAAOjb,EAAOwb,UAAUrvC,GAAQ,GAAK,MAErEsvC,EAAgBnb,EAAKrB,WAAae,EAAOwb,UAAUrvC,IAAkB,OAAT8H,IAAkBsnC,IAAYhB,GAAQv0B,KAAKga,EAAO+a,IAAIza,EAAMn0B,IAC1H,GAAIsvC,GAAiBA,EAAc,KAAOxnC,EAAM,CAU9C,IAPAsnC,GAAoB,EAGpBtnC,EAAOA,GAAQwnC,EAAc,GAG7BA,GAAiBF,GAAW,EACrBF,KAGLrb,EAAO6a,MAAMva,EAAMn0B,EAAMsvC,EAAgBxnC,IACpC,EAAImnC,IAAU,GAAKA,EAAQE,IAAiBC,GAAW,MAAS,IACnEF,EAAgB,GAElBI,GAAgCL,EAElCK,GAAgC,EAChCzb,EAAO6a,MAAMva,EAAMn0B,EAAMsvC,EAAgBxnC,GAGzCgnC,EAAaA,GAAc,EAC7B,CAYA,OAXIA,IACFQ,GAAiBA,IAAkBF,GAAW,EAG9CJ,EAAWF,EAAW,GAAKQ,GAAiBR,EAAW,GAAK,GAAKA,EAAW,IAAMA,EAAW,GACzFC,IACFA,EAAMjnC,KAAOA,EACbinC,EAAMnP,MAAQ0P,EACdP,EAAM5Z,IAAM6Z,IAGTA,CACT,CACA,IAAIO,GAAoB,CAAC,EACzB,SAASC,GAAkBrb,GACzB,IAAI1X,EACF6W,EAAMa,EAAKwC,cACXzC,EAAWC,EAAKD,SAChBya,EAAUY,GAAkBrb,GAC9B,OAAIya,IAGJlyB,EAAO6W,EAAImc,KAAKt2C,YAAYm6B,EAAI57B,cAAcw8B,IAC9Cya,EAAU9a,EAAO+a,IAAInyB,EAAM,WAC3BA,EAAKgX,WAAWC,YAAYjX,GACZ,SAAZkyB,IACFA,EAAU,SAEZY,GAAkBrb,GAAYya,EACvBA,EACT,CACA,SAASe,GAASxR,EAAUyR,GAQ1B,IAPA,IAAIhB,EACFxa,EACAzc,EAAS,GACT+V,EAAQ,EACRx3B,EAASioC,EAASjoC,OAGbw3B,EAAQx3B,EAAQw3B,KACrB0G,EAAO+J,EAASzQ,IACNihB,QAGVC,EAAUxa,EAAKua,MAAMC,QACjBgB,GAIc,SAAZhB,IACFj3B,EAAO+V,GAASuf,GAASpzC,IAAIu6B,EAAM,YAAc,KAC5Czc,EAAO+V,KACV0G,EAAKua,MAAMC,QAAU,KAGE,KAAvBxa,EAAKua,MAAMC,SAAkBF,GAAmBta,KAClDzc,EAAO+V,GAAS+hB,GAAkBrb,KAGpB,SAAZwa,IACFj3B,EAAO+V,GAAS,OAGhBuf,GAASjrC,IAAIoyB,EAAM,UAAWwa,KAMpC,IAAKlhB,EAAQ,EAAGA,EAAQx3B,EAAQw3B,IACT,MAAjB/V,EAAO+V,KACTyQ,EAASzQ,GAAOihB,MAAMC,QAAUj3B,EAAO+V,IAG3C,OAAOyQ,CACT,CACArK,EAAOj3B,GAAGG,OAAO,CACf4yC,KAAM,WACJ,OAAOD,GAASjwC,MAAM,EACxB,EACAmwC,KAAM,WACJ,OAAOF,GAASjwC,KAClB,EACAowC,OAAQ,SAAU5G,GAChB,MAAqB,mBAAVA,EACFA,EAAQxpC,KAAKkwC,OAASlwC,KAAKmwC,OAE7BnwC,KAAKk1B,MAAK,WACX8Z,GAAmBhvC,MACrBo0B,EAAOp0B,MAAMkwC,OAEb9b,EAAOp0B,MAAMmwC,MAEjB,GACF,IAEF,IAKIE,GACAn0C,GANAo0C,GAAiB,wBACjBC,GAAW,iCACXC,GAAc,qCAGdH,GADar4C,EAASy4C,yBACP/2C,YAAY1B,EAASC,cAAc,SAClDiE,GAAQlE,EAASC,cAAc,UAM3BI,aAAa,OAAQ,SAC3B6D,GAAM7D,aAAa,UAAW,WAC9B6D,GAAM7D,aAAa,OAAQ,KAC3Bg4C,GAAI32C,YAAYwC,IAIhBk3B,EAAQsd,WAAaL,GAAIM,WAAU,GAAMA,WAAU,GAAMpQ,UAAUmB,QAInE2O,GAAIhS,UAAY,yBAChBjL,EAAQwd,iBAAmBP,GAAIM,WAAU,GAAMpQ,UAAUsQ,aAKzDR,GAAIhS,UAAY,oBAChBjL,EAAQ0d,SAAWT,GAAI9P,UAIzB,IAAIwQ,GAAU,CAIZC,MAAO,CAAC,EAAG,UAAW,YACtBC,IAAK,CAAC,EAAG,oBAAqB,uBAC9BC,GAAI,CAAC,EAAG,iBAAkB,oBAC1BC,GAAI,CAAC,EAAG,qBAAsB,yBAC9BC,SAAU,CAAC,EAAG,GAAI,KASpB,SAASC,GAAO/c,EAAS6J,GAGvB,IAAIra,EAQJ,OANEA,EAD0C,qBAAjCwQ,EAAQ0H,qBACX1H,EAAQ0H,qBAAqBmC,GAAO,KACG,qBAA7B7J,EAAQgI,iBAClBhI,EAAQgI,iBAAiB6B,GAAO,KAEhC,QAEI5kC,IAAR4kC,GAAqBA,GAAO1J,EAASH,EAAS6J,GACzC/J,EAAOY,MAAM,CAACV,GAAUxQ,GAE1BA,CACT,CAGA,SAASwtB,GAAcvc,EAAOwc,GAG5B,IAFA,IAAIj7C,EAAI,EACNgB,EAAIy9B,EAAMv+B,OACLF,EAAIgB,EAAGhB,IACZi3C,GAASjrC,IAAIyyB,EAAMz+B,GAAI,cAAei7C,GAAehE,GAASpzC,IAAIo3C,EAAYj7C,GAAI,cAEtF,CA/BAy6C,GAAQS,MAAQT,GAAQU,MAAQV,GAAQW,SAAWX,GAAQY,QAAUZ,GAAQC,MAC7ED,GAAQ3f,GAAK2f,GAAQI,GAGhB/d,EAAQ0d,SACXC,GAAQa,SAAWb,GAAQD,OAAS,CAAC,EAAG,+BAAgC,cA2B1E,IAAIe,GAAQ,YACZ,SAASC,GAAc/c,EAAOT,EAASyd,EAASC,EAAWC,GAWzD,IAVA,IAAIvd,EACFhQ,EACAyZ,EACA+T,EACAC,EACAz6B,EACA06B,EAAW9d,EAAQmc,yBACnB4B,EAAQ,GACR/7C,EAAI,EACJgB,EAAIy9B,EAAMv+B,OACLF,EAAIgB,EAAGhB,IAEZ,IADAo+B,EAAOK,EAAMz+B,KACQ,IAATo+B,EAEV,GAAqB,WAAjBR,EAAOQ,GAGTN,EAAOY,MAAMqd,EAAO3d,EAAKrB,SAAW,CAACqB,GAAQA,QAGxC,GAAKmd,GAAMhsC,KAAK6uB,GAIhB,CAUL,IATAhQ,EAAMA,GAAO0tB,EAAS14C,YAAY46B,EAAQr8B,cAAc,QAGxDkmC,GAAOoS,GAASn2B,KAAKsa,IAAS,CAAC,GAAI,KAAK,GAAGlsB,cAC3C0pC,EAAOnB,GAAQ5S,IAAQ4S,GAAQK,SAC/B1sB,EAAI2Z,UAAY6T,EAAK,GAAK9d,EAAOke,cAAc5d,GAAQwd,EAAK,GAG5Dx6B,EAAIw6B,EAAK,GACFx6B,KACLgN,EAAMA,EAAI6b,UAKZnM,EAAOY,MAAMqd,EAAO3tB,EAAI4W,aAGxB5W,EAAM0tB,EAAS9R,YAGX9J,YAAc,EACpB,MA1BE6b,EAAMv7C,KAAKw9B,EAAQie,eAAe7d,IAiCxC,IAFA0d,EAAS5b,YAAc,GACvBlgC,EAAI,EACGo+B,EAAO2d,EAAM/7C,MAElB,GAAI07C,GAAa5d,EAAOyC,QAAQnC,EAAMsd,IAAc,EAC9CC,GACFA,EAAQn7C,KAAK49B,QAejB,GAXAyd,EAAWtD,GAAWna,GAGtBhQ,EAAM2sB,GAAOe,EAAS14C,YAAYg7B,GAAO,UAGrCyd,GACFb,GAAc5sB,GAIZqtB,EAEF,IADAr6B,EAAI,EACGgd,EAAOhQ,EAAIhN,MACZ84B,GAAY3qC,KAAK6uB,EAAKz7B,MAAQ,KAChC84C,EAAQj7C,KAAK49B,GAKrB,OAAO0d,CACT,CACA,IAAII,GAAiB,sBACrB,SAASC,KACP,OAAO,CACT,CACA,SAASC,KACP,OAAO,CACT,CACA,SAASC,GAAGje,EAAMke,EAAOve,EAAUp+B,EAAMkH,EAAI01C,GAC3C,IAAIC,EAAQ75C,EAGZ,GAAqB,kBAAV25C,EAAoB,CAO7B,IAAK35C,IALmB,kBAAbo7B,IAETp+B,EAAOA,GAAQo+B,EACfA,OAAW96B,GAEAq5C,EACXD,GAAGje,EAAMz7B,EAAMo7B,EAAUp+B,EAAM28C,EAAM35C,GAAO45C,GAE9C,OAAOne,CACT,CAiBA,GAhBY,MAARz+B,GAAsB,MAANkH,GAElBA,EAAKk3B,EACLp+B,EAAOo+B,OAAW96B,GACH,MAAN4D,IACe,kBAAbk3B,GAETl3B,EAAKlH,EACLA,OAAOsD,IAGP4D,EAAKlH,EACLA,EAAOo+B,EACPA,OAAW96B,KAGJ,IAAP4D,EACFA,EAAKu1C,QACA,IAAKv1C,EACV,OAAOu3B,EAaT,OAXY,IAARme,IACFC,EAAS31C,EACTA,EAAK,SAAUxE,GAGb,OADAy7B,IAAS2e,IAAIp6C,GACNm6C,EAAOj3C,MAAMmE,KAAMlE,UAC5B,EAGAqB,EAAGk6B,KAAOyb,EAAOzb,OAASyb,EAAOzb,KAAOjD,EAAOiD,SAE1C3C,EAAKQ,MAAK,WACfd,EAAOz7B,MAAM2Z,IAAItS,KAAM4yC,EAAOz1C,EAAIlH,EAAMo+B,EAC1C,GACF,CAmYA,SAAS2e,GAAelW,EAAI7jC,EAAMg6C,GAE3BA,GAQL1F,GAASjrC,IAAIw6B,EAAI7jC,GAAM,GACvBm7B,EAAOz7B,MAAM2Z,IAAIwqB,EAAI7jC,EAAM,CACzB89B,WAAW,EACXwT,QAAS,SAAU5xC,GACjB,IAAIoiB,EACFm4B,EAAQ3F,GAASpzC,IAAI6F,KAAM/G,GAC7B,GAAsB,EAAlBN,EAAMw6C,WAAiBnzC,KAAK/G,IAE9B,GAAKi6C,GAwBO9e,EAAOz7B,MAAM6xC,QAAQvxC,IAAS,CAAC,GAAGm6C,cAC5Cz6C,EAAM06C,uBAdN,GAPAH,EAAQ13C,EAAM5E,KAAKkF,WACnByxC,GAASjrC,IAAItC,KAAM/G,EAAMi6C,GAGzBlzC,KAAK/G,KACL8hB,EAASwyB,GAASpzC,IAAI6F,KAAM/G,GAC5Bs0C,GAASjrC,IAAItC,KAAM/G,GAAM,GACrBi6C,IAAUn4B,EAIZ,OAFApiB,EAAM26C,2BACN36C,EAAM46C,iBACCx4B,OAeFm4B,IAET3F,GAASjrC,IAAItC,KAAM/G,EAAMm7B,EAAOz7B,MAAM66C,QAAQN,EAAM,GAAIA,EAAM13C,MAAM,GAAIwE,OAUxErH,EAAM06C,kBACN16C,EAAM86C,8BAAgChB,GAE1C,UA5D+Bl5C,IAA3Bg0C,GAASpzC,IAAI2iC,EAAI7jC,IACnBm7B,EAAOz7B,MAAM2Z,IAAIwqB,EAAI7jC,EAAMw5C,GA6DjC,CA9bAre,EAAOz7B,MAAQ,CACbg6B,OAAQ,CAAC,EACTrgB,IAAK,SAAUoiB,EAAMke,EAAOrI,EAASt0C,EAAMo+B,GACzC,IAAIqf,EACFC,EACAjvB,EACAkvB,EACAp5C,EACAq5C,EACArJ,EACAsJ,EACA76C,EACA86C,EACAC,EACAC,EAAW1G,GAASpzC,IAAIu6B,GAG1B,GAAKuY,GAAWvY,GAqChB,IAhCI6V,EAAQA,UAEVA,GADAmJ,EAAcnJ,GACQA,QACtBlW,EAAWqf,EAAYrf,UAKrBA,GACFD,EAAOoH,KAAKkD,gBAAgBjI,GAAiBpC,GAI1CkW,EAAQlT,OACXkT,EAAQlT,KAAOjD,EAAOiD,SAIlBuc,EAASK,EAASL,UACtBA,EAASK,EAASL,OAASn9C,OAAOmE,OAAO,QAErC+4C,EAAcM,EAASC,UAC3BP,EAAcM,EAASC,OAAS,SAAU38C,GAGxC,MAAyB,qBAAX68B,GAA0BA,EAAOz7B,MAAMw7C,YAAc58C,EAAE0B,KAAOm7B,EAAOz7B,MAAMy7C,SAASv4C,MAAM64B,EAAM54B,gBAAavC,CAC7H,GAKFiB,GADAo4C,GAASA,GAAS,IAAIztC,MAAMuiC,IAAkB,CAAC,KACrClxC,OACHgE,KAELvB,EAAO+6C,GADPtvB,EAAM8tB,GAAep4B,KAAKw4B,EAAMp4C,KAAO,IACjB,GACtBu5C,GAAcrvB,EAAI,IAAM,IAAIzW,MAAM,KAAK5E,OAGlCpQ,IAKLuxC,EAAUpW,EAAOz7B,MAAM6xC,QAAQvxC,IAAS,CAAC,EAGzCA,GAAQo7B,EAAWmW,EAAQ4I,aAAe5I,EAAQ6J,WAAap7C,EAG/DuxC,EAAUpW,EAAOz7B,MAAM6xC,QAAQvxC,IAAS,CAAC,EAGzC46C,EAAYzf,EAAO92B,OAAO,CACxBrE,KAAMA,EACN+6C,SAAUA,EACV/9C,KAAMA,EACNs0C,QAASA,EACTlT,KAAMkT,EAAQlT,KACdhD,SAAUA,EACViG,aAAcjG,GAAYD,EAAOoK,KAAKr5B,MAAMm1B,aAAaz0B,KAAKwuB,GAC9D0C,UAAWgd,EAAWhyC,KAAK,MAC1B2xC,IAGGI,EAAWF,EAAO36C,OACtB66C,EAAWF,EAAO36C,GAAQ,IACjBq7C,cAAgB,EAGpB9J,EAAQ+J,QAAqE,IAA5D/J,EAAQ+J,MAAM39C,KAAK89B,EAAMz+B,EAAM89C,EAAYJ,IAC3Djf,EAAKiJ,kBACPjJ,EAAKiJ,iBAAiB1kC,EAAM06C,IAI9BnJ,EAAQl4B,MACVk4B,EAAQl4B,IAAI1b,KAAK89B,EAAMmf,GAClBA,EAAUtJ,QAAQlT,OACrBwc,EAAUtJ,QAAQlT,KAAOkT,EAAQlT,OAKjChD,EACFyf,EAASne,OAAOme,EAASQ,gBAAiB,EAAGT,GAE7CC,EAASh9C,KAAK+8C,GAIhBzf,EAAOz7B,MAAMg6B,OAAO15B,IAAQ,EAEhC,EAEAiwC,OAAQ,SAAUxU,EAAMke,EAAOrI,EAASlW,EAAUmgB,GAChD,IAAI98B,EACF+8B,EACA/vB,EACAkvB,EACAp5C,EACAq5C,EACArJ,EACAsJ,EACA76C,EACA86C,EACAC,EACAC,EAAW1G,GAASD,QAAQ5Y,IAAS6Y,GAASpzC,IAAIu6B,GACpD,GAAKuf,IAAcL,EAASK,EAASL,QAArC,CAOA,IADAp5C,GADAo4C,GAASA,GAAS,IAAIztC,MAAMuiC,IAAkB,CAAC,KACrClxC,OACHgE,KAML,GAJAvB,EAAO+6C,GADPtvB,EAAM8tB,GAAep4B,KAAKw4B,EAAMp4C,KAAO,IACjB,GACtBu5C,GAAcrvB,EAAI,IAAM,IAAIzW,MAAM,KAAK5E,OAGlCpQ,EAAL,CAaA,IAPAuxC,EAAUpW,EAAOz7B,MAAM6xC,QAAQvxC,IAAS,CAAC,EAEzC66C,EAAWF,EADX36C,GAAQo7B,EAAWmW,EAAQ4I,aAAe5I,EAAQ6J,WAAap7C,IACpC,GAC3ByrB,EAAMA,EAAI,IAAM,IAAIjiB,OAAO,UAAYsxC,EAAWhyC,KAAK,iBAAmB,WAG1E0yC,EAAY/8B,EAAIo8B,EAASt9C,OAClBkhB,KACLm8B,EAAYC,EAASp8B,IAChB88B,GAAeR,IAAaH,EAAUG,UAAezJ,GAAWA,EAAQlT,OAASwc,EAAUxc,MAAW3S,IAAOA,EAAI7e,KAAKguC,EAAU9c,YAAiB1C,GAAYA,IAAawf,EAAUxf,WAAyB,OAAbA,IAAqBwf,EAAUxf,YAClOyf,EAASne,OAAOje,EAAG,GACfm8B,EAAUxf,UACZyf,EAASQ,gBAEP9J,EAAQtB,QACVsB,EAAQtB,OAAOtyC,KAAK89B,EAAMmf,IAO5BY,IAAcX,EAASt9C,SACpBg0C,EAAQkK,WAAyE,IAA7DlK,EAAQkK,SAAS99C,KAAK89B,EAAMqf,EAAYE,EAASC,SACxE9f,EAAOugB,YAAYjgB,EAAMz7B,EAAMg7C,EAASC,eAEnCN,EAAO36C,GA3BhB,MAJE,IAAKA,KAAQ26C,EACXxf,EAAOz7B,MAAMuwC,OAAOxU,EAAMz7B,EAAO25C,EAAMp4C,GAAI+vC,EAASlW,GAAU,GAmChED,EAAOkC,cAAcsd,IACvBrG,GAASrE,OAAOxU,EAAM,gBAjDxB,CAmDF,EACA0f,SAAU,SAAUQ,GAClB,IAAIt+C,EACFohB,EACAoM,EACA5X,EACA2nC,EACAgB,EACAhzC,EAAO,IAAI1F,MAAML,UAAUtF,QAE3BmC,EAAQy7B,EAAOz7B,MAAMm8C,IAAIF,GACzBd,GAAYvG,GAASpzC,IAAI6F,KAAM,WAAavJ,OAAOmE,OAAO,OAAOjC,EAAMM,OAAS,GAChFuxC,EAAUpW,EAAOz7B,MAAM6xC,QAAQ7xC,EAAMM,OAAS,CAAC,EAIjD,IADA4I,EAAK,GAAKlJ,EACLrC,EAAI,EAAGA,EAAIwF,UAAUtF,OAAQF,IAChCuL,EAAKvL,GAAKwF,UAAUxF,GAKtB,GAHAqC,EAAMo8C,eAAiB/0C,MAGnBwqC,EAAQwK,cAAyD,IAA1CxK,EAAQwK,YAAYp+C,KAAKoJ,KAAMrH,GAA1D,CASA,IAJAk8C,EAAezgB,EAAOz7B,MAAMm7C,SAASl9C,KAAKoJ,KAAMrH,EAAOm7C,GAGvDx9C,EAAI,GACI4V,EAAU2oC,EAAav+C,QAAUqC,EAAMs8C,wBAG7C,IAFAt8C,EAAMu8C,cAAgBhpC,EAAQwoB,KAC9Bhd,EAAI,GACIm8B,EAAY3nC,EAAQ4nC,SAASp8B,QAAU/e,EAAM86C,iCAG9C96C,EAAMw8C,aAAsC,IAAxBtB,EAAU9c,YAAuBp+B,EAAMw8C,WAAWtvC,KAAKguC,EAAU9c,aACxFp+B,EAAMk7C,UAAYA,EAClBl7C,EAAM1C,KAAO49C,EAAU59C,UAEXsD,KADZuqB,IAAQsQ,EAAOz7B,MAAM6xC,QAAQqJ,EAAUG,WAAa,CAAC,GAAGE,QAAUL,EAAUtJ,SAAS1uC,MAAMqQ,EAAQwoB,KAAM7yB,MAE1E,KAAxBlJ,EAAMoiB,OAAS+I,KAClBnrB,EAAM46C,iBACN56C,EAAM06C,oBAWhB,OAHI7I,EAAQ4K,cACV5K,EAAQ4K,aAAax+C,KAAKoJ,KAAMrH,GAE3BA,EAAMoiB,MA/Bb,CAgCF,EACA+4B,SAAU,SAAUn7C,EAAOm7C,GACzB,IAAIx9C,EACFu9C,EACA1b,EACAkd,EACAC,EACAT,EAAe,GACfP,EAAgBR,EAASQ,cACzBzN,EAAMluC,EAAMQ,OAGd,GAAIm7C,GAGJzN,EAAIxT,YAMa,UAAf16B,EAAMM,MAAoBN,EAAMopC,QAAU,GAC1C,KAAO8E,IAAQ7mC,KAAM6mC,EAAMA,EAAI7S,YAAch0B,KAG3C,GAAqB,IAAjB6mC,EAAIxT,WAAmC,UAAf16B,EAAMM,OAAqC,IAAjB4tC,EAAIxL,UAAoB,CAG5E,IAFAga,EAAkB,GAClBC,EAAmB,CAAC,EACfh/C,EAAI,EAAGA,EAAIg+C,EAAeh+C,SAKCiD,IAA1B+7C,EADJnd,GAHA0b,EAAYC,EAASx9C,IAGL+9B,SAAW,OAEzBihB,EAAiBnd,GAAO0b,EAAUvZ,aAAelG,EAAO+D,EAAKn4B,MAAMguB,MAAM6Y,IAAQ,EAAIzS,EAAOoH,KAAKrD,EAAKn4B,KAAM,KAAM,CAAC6mC,IAAMrwC,QAEvH8+C,EAAiBnd,IACnBkd,EAAgBv+C,KAAK+8C,GAGrBwB,EAAgB7+C,QAClBq+C,EAAa/9C,KAAK,CAChB49B,KAAMmS,EACNiN,SAAUuB,GAGhB,CAYJ,OAPAxO,EAAM7mC,KACFs0C,EAAgBR,EAASt9C,QAC3Bq+C,EAAa/9C,KAAK,CAChB49B,KAAMmS,EACNiN,SAAUA,EAASt4C,MAAM84C,KAGtBO,CACT,EACAU,QAAS,SAAUl8C,EAAMm8C,GACvB/+C,OAAOwD,eAAem6B,EAAOqhB,MAAM/+C,UAAW2C,EAAM,CAClDa,YAAY,EACZmzC,cAAc,EACdlzC,IAAKiI,EAAWozC,GAAQ,WACtB,GAAIx1C,KAAK01C,cACP,OAAOF,EAAKx1C,KAAK01C,cAErB,EAAI,WACF,GAAI11C,KAAK01C,cACP,OAAO11C,KAAK01C,cAAcr8C,EAE9B,EACAiJ,IAAK,SAAU/H,GACb9D,OAAOwD,eAAe+F,KAAM3G,EAAM,CAChCa,YAAY,EACZmzC,cAAc,EACdsI,UAAU,EACVp7C,MAAOA,GAEX,GAEJ,EACAu6C,IAAK,SAAUY,GACb,OAAOA,EAActhB,EAAO6B,SAAWyf,EAAgB,IAAIthB,EAAOqhB,MAAMC,EAC1E,EACAlL,QAAS,CACPoL,KAAM,CAEJC,UAAU,GAEZC,MAAO,CAELvB,MAAO,SAAUt+C,GAGf,IAAI6mC,EAAK98B,MAAQ/J,EASjB,OANIq6C,GAAezqC,KAAKi3B,EAAG7jC,OAAS6jC,EAAGgZ,OAASrhB,EAASqI,EAAI,UAE3DkW,GAAelW,EAAI,SAAS,IAIvB,CACT,EACA0W,QAAS,SAAUv9C,GAGjB,IAAI6mC,EAAK98B,MAAQ/J,EAQjB,OALIq6C,GAAezqC,KAAKi3B,EAAG7jC,OAAS6jC,EAAGgZ,OAASrhB,EAASqI,EAAI,UAC3DkW,GAAelW,EAAI,UAId,CACT,EAGAsU,SAAU,SAAUz4C,GAClB,IAAIQ,EAASR,EAAMQ,OACnB,OAAOm3C,GAAezqC,KAAK1M,EAAOF,OAASE,EAAO28C,OAASrhB,EAASt7B,EAAQ,UAAYo0C,GAASpzC,IAAIhB,EAAQ,UAAYs7B,EAASt7B,EAAQ,IAC5I,GAEF48C,aAAc,CACZX,aAAc,SAAUz8C,QAGDY,IAAjBZ,EAAMoiB,QAAwBpiB,EAAM+8C,gBACtC/8C,EAAM+8C,cAAcM,YAAcr9C,EAAMoiB,OAE5C,KA2ENqZ,EAAOugB,YAAc,SAAUjgB,EAAMz7B,EAAMi7C,GAErCxf,EAAKqX,qBACPrX,EAAKqX,oBAAoB9yC,EAAMi7C,EAEnC,EACA9f,EAAOqhB,MAAQ,SAAUn9C,EAAK29C,GAE5B,KAAMj2C,gBAAgBo0B,EAAOqhB,OAC3B,OAAO,IAAIrhB,EAAOqhB,MAAMn9C,EAAK29C,GAI3B39C,GAAOA,EAAIW,MACb+G,KAAK01C,cAAgBp9C,EACrB0H,KAAK/G,KAAOX,EAAIW,KAIhB+G,KAAKk2C,mBAAqB59C,EAAI69C,uBAA6C58C,IAAzBjB,EAAI69C,mBAElC,IAApB79C,EAAI09C,YAAwBvD,GAAaC,GAKzC1yC,KAAK7G,OAASb,EAAIa,QAAkC,IAAxBb,EAAIa,OAAOk6B,SAAiB/6B,EAAIa,OAAO66B,WAAa17B,EAAIa,OACpF6G,KAAKk1C,cAAgB58C,EAAI48C,cACzBl1C,KAAKo2C,cAAgB99C,EAAI89C,eAIzBp2C,KAAK/G,KAAOX,EAIV29C,GACF7hB,EAAO92B,OAAO0C,KAAMi2C,GAItBj2C,KAAKq2C,UAAY/9C,GAAOA,EAAI+9C,WAAar5C,KAAK0G,MAG9C1D,KAAKo0B,EAAO6B,UAAW,CACzB,EAIA7B,EAAOqhB,MAAM/+C,UAAY,CACvBk+B,YAAaR,EAAOqhB,MACpBS,mBAAoBxD,GACpBuC,qBAAsBvC,GACtBe,8BAA+Bf,GAC/B4D,aAAa,EACb/C,eAAgB,WACd,IAAIh8C,EAAIyI,KAAK01C,cACb11C,KAAKk2C,mBAAqBzD,GACtBl7C,IAAMyI,KAAKs2C,aACb/+C,EAAEg8C,gBAEN,EACAF,gBAAiB,WACf,IAAI97C,EAAIyI,KAAK01C,cACb11C,KAAKi1C,qBAAuBxC,GACxBl7C,IAAMyI,KAAKs2C,aACb/+C,EAAE87C,iBAEN,EACAC,yBAA0B,WACxB,IAAI/7C,EAAIyI,KAAK01C,cACb11C,KAAKyzC,8BAAgChB,GACjCl7C,IAAMyI,KAAKs2C,aACb/+C,EAAE+7C,2BAEJtzC,KAAKqzC,iBACP,GAIFjf,EAAOc,KAAK,CACVqhB,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZC,gBAAgB,EAChBC,SAAS,EACTC,QAAQ,EACRC,YAAY,EACZC,SAAS,EACTC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,MAAM,EACN,MAAQ,EACRvjB,MAAM,EACNwjB,UAAU,EACVt8C,KAAK,EACLu8C,SAAS,EACTrV,QAAQ,EACRsV,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,WAAW,EACXC,aAAa,EACbC,SAAS,EACTC,SAAS,EACTC,eAAe,EACfC,WAAW,EACXC,SAAS,EACTC,OAAO,GACN7jB,EAAOz7B,MAAM48C,SAChBnhB,EAAOc,KAAK,CACViM,MAAO,UACP+W,KAAM,aACL,SAAUj/C,EAAMm6C,GACjB,SAAS+E,EAAmBvD,GAC1B,GAAI58C,EAASogD,aAAc,CAQzB,IAAIlE,EAAS3G,GAASpzC,IAAI6F,KAAM,UAC9BrH,EAAQy7B,EAAOz7B,MAAMm8C,IAAIF,GAC3Bj8C,EAAMM,KAA4B,YAArB27C,EAAY37C,KAAqB,QAAU,OACxDN,EAAM29C,aAAc,EAGpBpC,EAAOU,GAMHj8C,EAAMQ,SAAWR,EAAMu8C,eAIzBhB,EAAOv7C,EAEX,MAGEy7B,EAAOz7B,MAAM0/C,SAASjF,EAAcwB,EAAYz7C,OAAQi7B,EAAOz7B,MAAMm8C,IAAIF,GAE7E,CACAxgB,EAAOz7B,MAAM6xC,QAAQvxC,GAAQ,CAE3Bs7C,MAAO,WACL,IAAI+D,EAMJ,GADAtF,GAAehzC,KAAM/G,GAAM,IACvBjB,EAASogD,aAYX,OAAO,GAPPE,EAAW/K,GAASpzC,IAAI6F,KAAMozC,KAE5BpzC,KAAK29B,iBAAiByV,EAAc+E,GAEtC5K,GAASjrC,IAAItC,KAAMozC,GAAekF,GAAY,GAAK,EAKvD,EACA9E,QAAS,WAKP,OAHAR,GAAehzC,KAAM/G,IAGd,CACT,EACAy7C,SAAU,WACR,IAAI4D,EACJ,IAAItgD,EAASogD,aAUX,OAAO,GATPE,EAAW/K,GAASpzC,IAAI6F,KAAMozC,GAAgB,GAK5C7F,GAASjrC,IAAItC,KAAMozC,EAAckF,IAHjCt4C,KAAK+rC,oBAAoBqH,EAAc+E,GACvC5K,GAASrE,OAAOlpC,KAAMozC,GAQ5B,EAGAhC,SAAU,SAAUz4C,GAClB,OAAO40C,GAASpzC,IAAIxB,EAAMQ,OAAQF,EACpC,EACAm6C,aAAcA,GAehBhf,EAAOz7B,MAAM6xC,QAAQ4I,GAAgB,CACnCmB,MAAO,WAGL,IAAI1gB,EAAM7zB,KAAKk3B,eAAiBl3B,KAAKhI,UAAYgI,KAC/Cu4C,EAAavgD,EAASogD,aAAep4C,KAAO6zB,EAC5CykB,EAAW/K,GAASpzC,IAAIo+C,EAAYnF,GAMjCkF,IACCtgD,EAASogD,aACXp4C,KAAK29B,iBAAiByV,EAAc+E,GAEpCtkB,EAAI8J,iBAAiB1kC,EAAMk/C,GAAoB,IAGnD5K,GAASjrC,IAAIi2C,EAAYnF,GAAekF,GAAY,GAAK,EAC3D,EACA5D,SAAU,WACR,IAAI7gB,EAAM7zB,KAAKk3B,eAAiBl3B,KAAKhI,UAAYgI,KAC/Cu4C,EAAavgD,EAASogD,aAAep4C,KAAO6zB,EAC5CykB,EAAW/K,GAASpzC,IAAIo+C,EAAYnF,GAAgB,EACjDkF,EAQH/K,GAASjrC,IAAIi2C,EAAYnF,EAAckF,IAPnCtgD,EAASogD,aACXp4C,KAAK+rC,oBAAoBqH,EAAc+E,GAEvCtkB,EAAIkY,oBAAoB9yC,EAAMk/C,GAAoB,GAEpD5K,GAASrE,OAAOqP,EAAYnF,GAIhC,EAEJ,IAUAhf,EAAOc,KAAK,CACVsjB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,eACb,SAAUC,EAAM9D,GACjB1gB,EAAOz7B,MAAM6xC,QAAQoO,GAAQ,CAC3BxF,aAAc0B,EACdT,SAAUS,EACVZ,OAAQ,SAAUv7C,GAChB,IAAImrB,EAEF+0B,EAAUlgD,EAAMy9C,cAChBvC,EAAYl7C,EAAMk7C,UASpB,OALKgF,IAAWA,IANL74C,MAM4Bo0B,EAAOsD,SANnC13B,KAMoD64C,MAC7DlgD,EAAMM,KAAO46C,EAAUG,SACvBlwB,EAAM+vB,EAAUtJ,QAAQ1uC,MAAMmE,KAAMlE,WACpCnD,EAAMM,KAAO67C,GAERhxB,CACT,EAEJ,IACAsQ,EAAOj3B,GAAGG,OAAO,CACfq1C,GAAI,SAAUC,EAAOve,EAAUp+B,EAAMkH,GACnC,OAAOw1C,GAAG3yC,KAAM4yC,EAAOve,EAAUp+B,EAAMkH,EACzC,EACA01C,IAAK,SAAUD,EAAOve,EAAUp+B,EAAMkH,GACpC,OAAOw1C,GAAG3yC,KAAM4yC,EAAOve,EAAUp+B,EAAMkH,EAAI,EAC7C,EACA41C,IAAK,SAAUH,EAAOve,EAAUl3B,GAC9B,IAAI02C,EAAW56C,EACf,GAAI25C,GAASA,EAAMW,gBAAkBX,EAAMiB,UAIzC,OAFAA,EAAYjB,EAAMiB,UAClBzf,EAAOwe,EAAMmC,gBAAgBhC,IAAIc,EAAU9c,UAAY8c,EAAUG,SAAW,IAAMH,EAAU9c,UAAY8c,EAAUG,SAAUH,EAAUxf,SAAUwf,EAAUtJ,SACnJvqC,KAET,GAAqB,kBAAV4yC,EAAoB,CAE7B,IAAK35C,KAAQ25C,EACX5yC,KAAK+yC,IAAI95C,EAAMo7B,EAAUue,EAAM35C,IAEjC,OAAO+G,IACT,CASA,OARiB,IAAbq0B,GAA0C,oBAAbA,IAE/Bl3B,EAAKk3B,EACLA,OAAW96B,IAEF,IAAP4D,IACFA,EAAKu1C,IAEA1yC,KAAKk1B,MAAK,WACfd,EAAOz7B,MAAMuwC,OAAOlpC,KAAM4yC,EAAOz1C,EAAIk3B,EACvC,GACF,IAEF,IAIEykB,GAAe,wBAEfC,GAAW,oCACXC,GAAe,6BAGjB,SAASC,GAAmBvkB,EAAM8S,GAChC,OAAI/S,EAASC,EAAM,UAAYD,EAA8B,KAArB+S,EAAQnU,SAAkBmU,EAAUA,EAAQlH,WAAY,OACvFlM,EAAOM,GAAM+R,SAAS,SAAS,IAEjC/R,CACT,CAGA,SAASwkB,GAAcxkB,GAErB,OADAA,EAAKz7B,MAAsC,OAA9By7B,EAAKX,aAAa,SAAoB,IAAMW,EAAKz7B,KACvDy7B,CACT,CACA,SAASykB,GAAczkB,GAMrB,MALsC,WAAjCA,EAAKz7B,MAAQ,IAAIuC,MAAM,EAAG,GAC7Bk5B,EAAKz7B,KAAOy7B,EAAKz7B,KAAKuC,MAAM,GAE5Bk5B,EAAK8H,gBAAgB,QAEhB9H,CACT,CACA,SAAS0kB,GAAe9gD,EAAK+gD,GAC3B,IAAI/iD,EAAGgB,EAAG2B,EAAgBqgD,EAAUC,EAAU3F,EAC9C,GAAsB,IAAlByF,EAAKhmB,SAAT,CAKA,GAAIka,GAASD,QAAQh1C,KAEnBs7C,EADWrG,GAASpzC,IAAI7B,GACNs7C,QAGhB,IAAK36C,KADLs0C,GAASrE,OAAOmQ,EAAM,iBACTzF,EACX,IAAKt9C,EAAI,EAAGgB,EAAIs8C,EAAO36C,GAAMzC,OAAQF,EAAIgB,EAAGhB,IAC1C89B,EAAOz7B,MAAM2Z,IAAI+mC,EAAMpgD,EAAM26C,EAAO36C,GAAM3C,IAO9Ck3C,GAASF,QAAQh1C,KACnBghD,EAAW9L,GAASnB,OAAO/zC,GAC3BihD,EAAWnlB,EAAO92B,OAAO,CAAC,EAAGg8C,GAC7B9L,GAASlrC,IAAI+2C,EAAME,GApBrB,CAsBF,CAGA,SAASC,GAASlhD,EAAK+gD,GACrB,IAAI5kB,EAAW4kB,EAAK5kB,SAASjsB,cAGZ,UAAbisB,GAAwB6b,GAAezqC,KAAKvN,EAAIW,MAClDogD,EAAK3X,QAAUppC,EAAIopC,QAGG,UAAbjN,GAAqC,aAAbA,IACjC4kB,EAAKxI,aAAev4C,EAAIu4C,aAE5B,CACA,SAAS4I,GAASC,EAAY73C,EAAM7F,EAAUi2C,GAE5CpwC,EAAOkxB,EAAKlxB,GACZ,IAAIuwC,EACFjd,EACA4c,EACA4H,EACA/lB,EACAC,EACAv9B,EAAI,EACJgB,EAAIoiD,EAAWljD,OACfojD,EAAWtiD,EAAI,EACfiD,EAAQsH,EAAK,GACbg4C,EAAkBz3C,EAAW7H,GAG/B,GAAIs/C,GAAmBviD,EAAI,GAAsB,kBAAViD,IAAuB64B,EAAQsd,YAAcqI,GAASlzC,KAAKtL,GAChG,OAAOm/C,EAAWxkB,MAAK,SAAUlH,GAC/B,IAAImY,EAAOuT,EAAWtkB,GAAGpH,GACrB6rB,IACFh4C,EAAK,GAAKtH,EAAM3D,KAAKoJ,KAAMguB,EAAOmY,EAAK2T,SAEzCL,GAAStT,EAAMtkC,EAAM7F,EAAUi2C,EACjC,IAEF,GAAI36C,IAEF69B,GADAid,EAAWN,GAAcjwC,EAAM63C,EAAW,GAAGxiB,eAAe,EAAOwiB,EAAYzH,IAC9D3R,WACkB,IAA/B8R,EAAS9W,WAAW9kC,SACtB47C,EAAWjd,GAITA,GAAS8c,GAAS,CAOpB,IALA0H,GADA5H,EAAU3d,EAAOn3B,IAAIo0C,GAAOe,EAAU,UAAW8G,KAC5B1iD,OAKdF,EAAIgB,EAAGhB,IACZs9B,EAAOwe,EACH97C,IAAMsjD,IACRhmB,EAAOQ,EAAOjS,MAAMyR,GAAM,GAAM,GAG5B+lB,GAGFvlB,EAAOY,MAAM+c,EAASV,GAAOzd,EAAM,YAGvC53B,EAASpF,KAAK8iD,EAAWpjD,GAAIs9B,EAAMt9B,GAErC,GAAIqjD,EAOF,IANA9lB,EAAMke,EAAQA,EAAQv7C,OAAS,GAAG0gC,cAGlC9C,EAAOn3B,IAAI80C,EAASoH,IAGf7iD,EAAI,EAAGA,EAAIqjD,EAAYrjD,IAC1Bs9B,EAAOme,EAAQz7C,GACXk6C,GAAY3qC,KAAK+tB,EAAK36B,MAAQ,MAAQs0C,GAASlB,OAAOzY,EAAM,eAAiBQ,EAAOsD,SAAS7D,EAAKD,KAChGA,EAAKt7B,KAA2C,YAAnCs7B,EAAK36B,MAAQ,IAAIuP,cAE5B4rB,EAAO2lB,WAAanmB,EAAKH,UAC3BW,EAAO2lB,SAASnmB,EAAKt7B,IAAK,CACxBk7B,MAAOI,EAAKJ,OAASI,EAAKG,aAAa,UACtCF,GAQLH,EAAQE,EAAK4C,YAAYpxB,QAAQ4zC,GAAc,IAAKplB,EAAMC,GAKpE,CAEF,OAAO6lB,CACT,CACA,SAASxQ,GAAOxU,EAAML,EAAU2lB,GAI9B,IAHA,IAAIpmB,EACFye,EAAQhe,EAAWD,EAAO5O,OAAO6O,EAAUK,GAAQA,EACnDp+B,EAAI,EACsB,OAApBs9B,EAAOye,EAAM/7C,IAAaA,IAC3B0jD,GAA8B,IAAlBpmB,EAAKP,UACpBe,EAAO6lB,UAAU5I,GAAOzd,IAEtBA,EAAKI,aACHgmB,GAAYnL,GAAWjb,IACzB0d,GAAcD,GAAOzd,EAAM,WAE7BA,EAAKI,WAAWC,YAAYL,IAGhC,OAAOc,CACT,CACAN,EAAO92B,OAAO,CACZg1C,cAAe,SAAUwH,GACvB,OAAOA,CACT,EACA33B,MAAO,SAAUuS,EAAMwlB,EAAeC,GACpC,IAAI7jD,EACFgB,EACA8iD,EACAC,EACAl4B,EAAQuS,EAAKic,WAAU,GACvB2J,EAASzL,GAAWna,GAGtB,IAAKtB,EAAQwd,iBAAqC,IAAlBlc,EAAKrB,UAAoC,KAAlBqB,EAAKrB,YAAqBe,EAAO0C,SAASpC,GAK/F,IAFA2lB,EAAehJ,GAAOlvB,GAEjB7rB,EAAI,EAAGgB,GADZ8iD,EAAc/I,GAAO3c,IACOl+B,OAAQF,EAAIgB,EAAGhB,IACzCkjD,GAASY,EAAY9jD,GAAI+jD,EAAa/jD,IAK1C,GAAI4jD,EACF,GAAIC,EAGF,IAFAC,EAAcA,GAAe/I,GAAO3c,GACpC2lB,EAAeA,GAAgBhJ,GAAOlvB,GACjC7rB,EAAI,EAAGgB,EAAI8iD,EAAY5jD,OAAQF,EAAIgB,EAAGhB,IACzC8iD,GAAegB,EAAY9jD,GAAI+jD,EAAa/jD,SAG9C8iD,GAAe1kB,EAAMvS,GAWzB,OANAk4B,EAAehJ,GAAOlvB,EAAO,WACZ3rB,OAAS,GACxB86C,GAAc+I,GAAeC,GAAUjJ,GAAO3c,EAAM,WAI/CvS,CACT,EACA83B,UAAW,SAAUllB,GAMnB,IALA,IAAI9+B,EACFy+B,EACAz7B,EACAuxC,EAAUpW,EAAOz7B,MAAM6xC,QACvBl0C,EAAI,OACuBiD,KAArBm7B,EAAOK,EAAMz+B,IAAmBA,IACtC,GAAI22C,GAAWvY,GAAO,CACpB,GAAIz+B,EAAOy+B,EAAK6Y,GAAStX,SAAU,CACjC,GAAIhgC,EAAK29C,OACP,IAAK36C,KAAQhD,EAAK29C,OACZpJ,EAAQvxC,GACVm7B,EAAOz7B,MAAMuwC,OAAOxU,EAAMz7B,GAI1Bm7B,EAAOugB,YAAYjgB,EAAMz7B,EAAMhD,EAAKi+C,QAO1Cxf,EAAK6Y,GAAStX,cAAW18B,CAC3B,CACIm7B,EAAK8Y,GAASvX,WAGhBvB,EAAK8Y,GAASvX,cAAW18B,EAE7B,CAEJ,IAEF66B,EAAOj3B,GAAGG,OAAO,CACfi9C,OAAQ,SAAUlmB,GAChB,OAAO6U,GAAOlpC,KAAMq0B,GAAU,EAChC,EACA6U,OAAQ,SAAU7U,GAChB,OAAO6U,GAAOlpC,KAAMq0B,EACtB,EACAP,KAAM,SAAUv5B,GACd,OAAO8xC,GAAOrsC,MAAM,SAAUzF,GAC5B,YAAiBhB,IAAVgB,EAAsB65B,EAAON,KAAK9zB,MAAQA,KAAKjC,QAAQm3B,MAAK,WAC3C,IAAlBl1B,KAAKqzB,UAAoC,KAAlBrzB,KAAKqzB,UAAqC,IAAlBrzB,KAAKqzB,WACtDrzB,KAAKw2B,YAAcj8B,EAEvB,GACF,GAAG,KAAMA,EAAOuB,UAAUtF,OAC5B,EACAgkD,OAAQ,WACN,OAAOf,GAASz5C,KAAMlE,WAAW,SAAU44B,GACnB,IAAlB10B,KAAKqzB,UAAoC,KAAlBrzB,KAAKqzB,UAAqC,IAAlBrzB,KAAKqzB,UACzC4lB,GAAmBj5C,KAAM00B,GAC/Bh7B,YAAYg7B,EAEvB,GACF,EACA+lB,QAAS,WACP,OAAOhB,GAASz5C,KAAMlE,WAAW,SAAU44B,GACzC,GAAsB,IAAlB10B,KAAKqzB,UAAoC,KAAlBrzB,KAAKqzB,UAAqC,IAAlBrzB,KAAKqzB,SAAgB,CACtE,IAAIl6B,EAAS8/C,GAAmBj5C,KAAM00B,GACtCv7B,EAAOuhD,aAAahmB,EAAMv7B,EAAOmnC,WACnC,CACF,GACF,EACAqa,OAAQ,WACN,OAAOlB,GAASz5C,KAAMlE,WAAW,SAAU44B,GACrC10B,KAAKg0B,YACPh0B,KAAKg0B,WAAW0mB,aAAahmB,EAAM10B,KAEvC,GACF,EACA46C,MAAO,WACL,OAAOnB,GAASz5C,KAAMlE,WAAW,SAAU44B,GACrC10B,KAAKg0B,YACPh0B,KAAKg0B,WAAW0mB,aAAahmB,EAAM10B,KAAK6hC,YAE5C,GACF,EACA9jC,MAAO,WAGL,IAFA,IAAI22B,EACFp+B,EAAI,EACqB,OAAnBo+B,EAAO10B,KAAK1J,IAAaA,IACT,IAAlBo+B,EAAKrB,WAEPe,EAAO6lB,UAAU5I,GAAO3c,GAAM,IAG9BA,EAAK8B,YAAc,IAGvB,OAAOx2B,IACT,EACAmiB,MAAO,SAAU+3B,EAAeC,GAG9B,OAFAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EACzDn6C,KAAK/C,KAAI,WACd,OAAOm3B,EAAOjS,MAAMniB,KAAMk6C,EAAeC,EAC3C,GACF,EACAL,KAAM,SAAUv/C,GACd,OAAO8xC,GAAOrsC,MAAM,SAAUzF,GAC5B,IAAIm6B,EAAO10B,KAAK,IAAM,CAAC,EACrB1J,EAAI,EACJgB,EAAI0I,KAAKxJ,OACX,QAAc+C,IAAVgB,GAAyC,IAAlBm6B,EAAKrB,SAC9B,OAAOqB,EAAK2J,UAId,GAAqB,kBAAV9jC,IAAuBu+C,GAAajzC,KAAKtL,KAAWw2C,IAASR,GAASn2B,KAAK7f,IAAU,CAAC,GAAI,KAAK,GAAGiO,eAAgB,CAC3HjO,EAAQ65B,EAAOke,cAAc/3C,GAC7B,IACE,KAAOjE,EAAIgB,EAAGhB,IAIU,KAHtBo+B,EAAO10B,KAAK1J,IAAM,CAAC,GAGV+8B,WACPe,EAAO6lB,UAAU5I,GAAO3c,GAAM,IAC9BA,EAAK2J,UAAY9jC,GAGrBm6B,EAAO,CAGT,CAAE,MAAOn9B,GAAI,CACf,CACIm9B,GACF10B,KAAKjC,QAAQy8C,OAAOjgD,EAExB,GAAG,KAAMA,EAAOuB,UAAUtF,OAC5B,EACAqkD,YAAa,WACX,IAAI5I,EAAU,GAGd,OAAOwH,GAASz5C,KAAMlE,WAAW,SAAU44B,GACzC,IAAI0L,EAASpgC,KAAKg0B,WACdI,EAAOyC,QAAQ72B,KAAMiyC,GAAW,IAClC7d,EAAO6lB,UAAU5I,GAAOrxC,OACpBogC,GACFA,EAAO0a,aAAapmB,EAAM10B,MAKhC,GAAGiyC,EACL,IAEF7d,EAAOc,KAAK,CACV6lB,SAAU,SACVC,UAAW,UACXN,aAAc,SACdO,YAAa,QACbC,WAAY,gBACX,SAAU7hD,EAAM8hD,GACjB/mB,EAAOj3B,GAAG9D,GAAQ,SAAUg7B,GAM1B,IALA,IAAIU,EACFjR,EAAM,GACNs3B,EAAShnB,EAAOC,GAChBgB,EAAO+lB,EAAO5kD,OAAS,EACvBF,EAAI,EACCA,GAAK++B,EAAM/+B,IAChBy+B,EAAQz+B,IAAM++B,EAAOr1B,KAAOA,KAAKmiB,OAAM,GACvCiS,EAAOgnB,EAAO9kD,IAAI6kD,GAAUpmB,GAI5Bj+B,EAAK+E,MAAMioB,EAAKiR,EAAM56B,OAExB,OAAO6F,KAAK80B,UAAUhR,EACxB,CACF,IACA,IAAIu3B,GAAY,IAAI54C,OAAO,KAAOisC,GAAO,kBAAmB,KACxD4M,GAAc,MACdC,GAAY,SAAU7mB,GAIxB,IAAIwiB,EAAOxiB,EAAKwC,cAAcuG,YAI9B,OAHKyZ,GAASA,EAAKsE,SACjBtE,EAAO57C,GAEF47C,EAAKuE,iBAAiB/mB,EAC/B,EACIgnB,GAAO,SAAUhnB,EAAMkB,EAAS55B,GAClC,IAAI8nB,EACFzqB,EACAsiD,EAAM,CAAC,EAGT,IAAKtiD,KAAQu8B,EACX+lB,EAAItiD,GAAQq7B,EAAKua,MAAM51C,GACvBq7B,EAAKua,MAAM51C,GAAQu8B,EAAQv8B,GAK7B,IAAKA,KAHLyqB,EAAM9nB,EAASpF,KAAK89B,GAGPkB,EACXlB,EAAKua,MAAM51C,GAAQsiD,EAAItiD,GAEzB,OAAOyqB,CACT,EACI83B,GAAY,IAAIn5C,OAAOmsC,GAAU7sC,KAAK,KAAM,KA0HhD,SAAS85C,GAAOnnB,EAAMr7B,EAAMyiD,GAC1B,IAAIC,EACFC,EACAC,EACAn4B,EACAo4B,EAAeZ,GAAYz1C,KAAKxM,GAKhC41C,EAAQva,EAAKua,MA6Df,OA5DA6M,EAAWA,GAAYP,GAAU7mB,MAe/B5Q,EAAMg4B,EAASK,iBAAiB9iD,IAASyiD,EAASziD,GAC9C6iD,GAAgBp4B,IAiBlBA,EAAMA,EAAI1e,QAAQqyB,EAAU,YAASl+B,GAE3B,KAARuqB,GAAe+qB,GAAWna,KAC5B5Q,EAAMsQ,EAAO6a,MAAMva,EAAMr7B,KAQtB+5B,EAAQgpB,kBAAoBf,GAAUx1C,KAAKie,IAAQ83B,GAAU/1C,KAAKxM,KAErE0iD,EAAQ9M,EAAM8M,MACdC,EAAW/M,EAAM+M,SACjBC,EAAWhN,EAAMgN,SAGjBhN,EAAM+M,SAAW/M,EAAMgN,SAAWhN,EAAM8M,MAAQj4B,EAChDA,EAAMg4B,EAASC,MAGf9M,EAAM8M,MAAQA,EACd9M,EAAM+M,SAAWA,EACjB/M,EAAMgN,SAAWA,SAGN1iD,IAARuqB,EAGPA,EAAM,GAAKA,CACb,CACA,SAASu4B,GAAaC,EAAaC,GAEjC,MAAO,CACLpiD,IAAK,WACH,IAAImiD,IAQJ,OAAQt8C,KAAK7F,IAAMoiD,GAAQ1gD,MAAMmE,KAAMlE,kBAL9BkE,KAAK7F,GAMhB,EAEJ,EApNA,WAGE,SAASqiD,IAEP,GAAKnM,EAAL,CAGAoM,EAAUxN,MAAMyN,QAAU,+EAC1BrM,EAAIpB,MAAMyN,QAAU,4HACpBjmB,GAAgB/8B,YAAY+iD,GAAW/iD,YAAY22C,GACnD,IAAIsM,EAAWrhD,EAAOmgD,iBAAiBpL,GACvCuM,EAAoC,OAAjBD,EAASjf,IAG5Bmf,EAAoE,KAA5CC,EAAmBH,EAASI,YAIpD1M,EAAIpB,MAAM+N,MAAQ,MAClBC,EAA2D,KAAvCH,EAAmBH,EAASK,OAIhDE,EAA8D,KAAvCJ,EAAmBH,EAASZ,OAMnD1L,EAAIpB,MAAMkO,SAAW,WACrBC,EAA+D,KAA5CN,EAAmBzM,EAAIgN,YAAc,GACxD5mB,GAAgBxC,YAAYwoB,GAI5BpM,EAAM,IA7BN,CA8BF,CACA,SAASyM,EAAmBQ,GAC1B,OAAOp5C,KAAK+c,MAAMnB,WAAWw9B,GAC/B,CACA,IAAIV,EACFM,EACAE,EACAH,EACAM,EACAV,EACAJ,EAAYzkD,EAASC,cAAc,OACnCo4C,EAAMr4C,EAASC,cAAc,OAG1Bo4C,EAAIpB,QAMToB,EAAIpB,MAAMuO,eAAiB,cAC3BnN,EAAIM,WAAU,GAAM1B,MAAMuO,eAAiB,GAC3CpqB,EAAQqqB,gBAA+C,gBAA7BpN,EAAIpB,MAAMuO,eACpCppB,EAAO92B,OAAO81B,EAAS,CACrBsqB,kBAAmB,WAEjB,OADAlB,IACOU,CACT,EACAd,eAAgB,WAEd,OADAI,IACOS,CACT,EACAU,cAAe,WAEb,OADAnB,IACOI,CACT,EACAgB,mBAAoB,WAElB,OADApB,IACOK,CACT,EACAgB,cAAe,WAEb,OADArB,IACOY,CACT,EAUAU,qBAAsB,WACpB,IAAIC,EAAO7M,EAAI8M,EAASC,EA0BxB,OAzB+B,MAA3BV,IACFQ,EAAQ/lD,EAASC,cAAc,SAC/Bi5C,EAAKl5C,EAASC,cAAc,MAC5B+lD,EAAUhmD,EAASC,cAAc,OACjC8lD,EAAM9O,MAAMyN,QAAU,2DACtBxL,EAAGjC,MAAMyN,QAAU,0CAKnBxL,EAAGjC,MAAMiP,OAAS,MAClBF,EAAQ/O,MAAMiP,OAAS,MAQvBF,EAAQ/O,MAAMC,QAAU,QACxBzY,GAAgB/8B,YAAYqkD,GAAOrkD,YAAYw3C,GAAIx3C,YAAYskD,GAC/DC,EAAU3iD,EAAOmgD,iBAAiBvK,GAClCqM,EAA0BltC,SAAS4tC,EAAQC,OAAQ,IAAM7tC,SAAS4tC,EAAQE,eAAgB,IAAM9tC,SAAS4tC,EAAQG,kBAAmB,MAAQlN,EAAGmN,aAC/I5nB,GAAgBxC,YAAY8pB,IAEvBR,CACT,IAEH,CAxHD,GAqNA,IAAIe,GAAc,CAAC,SAAU,MAAO,MAClCC,GAAavmD,EAASC,cAAc,OAAOg3C,MAC3CuP,GAAc,CAAC,EAgBjB,SAASC,GAAcplD,GACrB,IAAIqlD,EAAQtqB,EAAOuqB,SAAStlD,IAASmlD,GAAYnlD,GACjD,OAAIqlD,IAGArlD,KAAQklD,GACHllD,EAEFmlD,GAAYnlD,GArBrB,SAAwBA,GAItB,IAFA,IAAIulD,EAAUvlD,EAAK,GAAGkN,cAAgBlN,EAAKmC,MAAM,GAC/ClF,EAAIgoD,GAAY9nD,OACXF,KAEL,IADA+C,EAAOilD,GAAYhoD,GAAKsoD,KACZL,GACV,OAAOllD,CAGb,CAW6BwlD,CAAexlD,IAASA,EACrD,CACA,IAIEylD,GAAe,4BACfC,GAAU,CACR5B,SAAU,WACV6B,WAAY,SACZ9P,QAAS,SAEX+P,GAAqB,CACnBC,cAAe,IACfC,WAAY,OAEhB,SAASC,GAAkB5pB,EAAOj7B,EAAO0oB,GAGvC,IAAIjB,EAAU2sB,GAAQv0B,KAAK7f,GAC3B,OAAOynB,EAEP9d,KAAKI,IAAI,EAAG0d,EAAQ,IAAMiB,GAAY,KAAOjB,EAAQ,IAAM,MAAQznB,CACrE,CACA,SAAS8kD,GAAmB3qB,EAAM4qB,EAAWC,EAAKC,EAAaC,EAAQC,GACrE,IAAIppD,EAAkB,UAAdgpD,EAAwB,EAAI,EAClCK,EAAQ,EACRC,EAAQ,EACRC,EAAc,EAGhB,GAAIN,KAASC,EAAc,SAAW,WACpC,OAAO,EAET,KAAOlpD,EAAI,EAAGA,GAAK,EAIL,WAARipD,IACFM,GAAezrB,EAAO+a,IAAIza,EAAM6qB,EAAM3Q,GAAUt4C,IAAI,EAAMmpD,IAIvDD,GAiBS,YAARD,IACFK,GAASxrB,EAAO+a,IAAIza,EAAM,UAAYka,GAAUt4C,IAAI,EAAMmpD,IAIhD,WAARF,IACFK,GAASxrB,EAAO+a,IAAIza,EAAM,SAAWka,GAAUt4C,GAAK,SAAS,EAAMmpD,MArBrEG,GAASxrB,EAAO+a,IAAIza,EAAM,UAAYka,GAAUt4C,IAAI,EAAMmpD,GAG9C,YAARF,EACFK,GAASxrB,EAAO+a,IAAIza,EAAM,SAAWka,GAAUt4C,GAAK,SAAS,EAAMmpD,GAInEE,GAASvrB,EAAO+a,IAAIza,EAAM,SAAWka,GAAUt4C,GAAK,SAAS,EAAMmpD,IA4BzE,OATKD,GAAeE,GAAe,IAGjCE,GAAS17C,KAAKI,IAAI,EAAGJ,KAAKuF,KAAKirB,EAAK,SAAW4qB,EAAU,GAAG/4C,cAAgB+4C,EAAU9jD,MAAM,IAAMkkD,EAAcE,EAAQD,EAAQ,MAI1H,GAEDC,EAAQC,CACjB,CACA,SAASC,GAAiBprB,EAAM4qB,EAAWK,GAEzC,IAAIF,EAASlE,GAAU7mB,GAIrB8qB,IADmBpsB,EAAQsqB,qBAAuBiC,IACgC,eAAjDvrB,EAAO+a,IAAIza,EAAM,aAAa,EAAO+qB,GACtEM,EAAmBP,EACnBh/C,EAAMq7C,GAAOnnB,EAAM4qB,EAAWG,GAC9BO,EAAa,SAAWV,EAAU,GAAG/4C,cAAgB+4C,EAAU9jD,MAAM,GAIvE,GAAI6/C,GAAUx1C,KAAKrF,GAAM,CACvB,IAAKm/C,EACH,OAAOn/C,EAETA,EAAM,MACR,CAkCA,QA7BM4yB,EAAQsqB,qBAAuB8B,IAKpCpsB,EAAQ0qB,wBAA0BrpB,EAASC,EAAM,OAG1C,SAARl0B,IAGCsf,WAAWtf,IAAuD,WAA/C4zB,EAAO+a,IAAIza,EAAM,WAAW,EAAO+qB,KAEvD/qB,EAAKurB,iBAAiBzpD,SACpBgpD,EAA+D,eAAjDprB,EAAO+a,IAAIza,EAAM,aAAa,EAAO+qB,IAKnDM,EAAmBC,KAActrB,KAE/Bl0B,EAAMk0B,EAAKsrB,MAKfx/C,EAAMsf,WAAWtf,IAAQ,GAGZ6+C,GAAmB3qB,EAAM4qB,EAAWK,IAAUH,EAAc,SAAW,WAAYO,EAAkBN,EAElHj/C,GAAO,IACT,CAgQA,SAAS0/C,GAAMxrB,EAAMkB,EAASr1B,EAAMm1B,EAAKyqB,GACvC,OAAO,IAAID,GAAMxpD,UAAU69B,KAAKG,EAAMkB,EAASr1B,EAAMm1B,EAAKyqB,EAC5D,CAjQA/rB,EAAO92B,OAAO,CAGZ8iD,SAAU,CACRC,QAAS,CACPlmD,IAAK,SAAUu6B,EAAMonB,GACnB,GAAIA,EAAU,CAEZ,IAAIh4B,EAAM+3B,GAAOnnB,EAAM,WACvB,MAAe,KAAR5Q,EAAa,IAAMA,CAC5B,CACF,IAIJ8rB,UAAW,CACT0Q,yBAAyB,EACzBC,aAAa,EACbC,kBAAkB,EAClBC,aAAa,EACbC,UAAU,EACVC,YAAY,EACZxB,YAAY,EACZyB,UAAU,EACVC,YAAY,EACZC,eAAe,EACfC,iBAAiB,EACjBC,SAAS,EACTC,YAAY,EACZC,cAAc,EACdC,YAAY,EACZd,SAAS,EACTe,OAAO,EACPC,SAAS,EACT7R,OAAO,EACP8R,QAAQ,EACRC,QAAQ,EACRC,MAAM,EAENC,aAAa,EACbC,cAAc,EACdC,aAAa,EACbC,kBAAkB,EAClBC,eAAe,GAIjBlD,SAAU,CAAC,EAEX1P,MAAO,SAAUva,EAAMr7B,EAAMkB,EAAOolD,GAElC,GAAKjrB,GAA0B,IAAlBA,EAAKrB,UAAoC,IAAlBqB,EAAKrB,UAAmBqB,EAAKua,MAAjE,CAKA,IAAInrB,EACF7qB,EACA2C,EACAkmD,EAAW9U,GAAU3zC,GACrB6iD,EAAeZ,GAAYz1C,KAAKxM,GAChC41C,EAAQva,EAAKua,MAaf,GARKiN,IACH7iD,EAAOolD,GAAcqD,IAIvBlmD,EAAQw4B,EAAOgsB,SAAS/mD,IAAS+6B,EAAOgsB,SAAS0B,QAGnCvoD,IAAVgB,EAsCF,OAAIqB,GAAS,QAASA,QAAmDrC,KAAzCuqB,EAAMloB,EAAMzB,IAAIu6B,GAAM,EAAOirB,IACpD77B,EAIFmrB,EAAM51C,GAvCA,YAHbJ,SAAcsB,KAGYupB,EAAM6qB,GAAQv0B,KAAK7f,KAAWupB,EAAI,KAC1DvpB,EAAQ60C,GAAU1a,EAAMr7B,EAAMyqB,GAG9B7qB,EAAO,UAII,MAATsB,GAAiBA,IAAUA,IAOlB,WAATtB,GAAsBijD,IACxB3hD,GAASupB,GAAOA,EAAI,KAAOsQ,EAAOwb,UAAUkS,GAAY,GAAK,OAI1D1uB,EAAQqqB,iBAA6B,KAAVljD,GAA+C,IAA/BlB,EAAKyT,QAAQ,gBAC3DmiC,EAAM51C,GAAQ,WAIXuC,GAAW,QAASA,QAAsDrC,KAA3CgB,EAAQqB,EAAM0G,IAAIoyB,EAAMn6B,EAAOolD,MAC7DzD,EACFjN,EAAM8S,YAAY1oD,EAAMkB,GAExB00C,EAAM51C,GAAQkB,GAtDpB,CAkEF,EACA40C,IAAK,SAAUza,EAAMr7B,EAAMsmD,EAAOF,GAChC,IAAIj/C,EACFq0B,EACAj5B,EACAkmD,EAAW9U,GAAU3zC,GA6BvB,OA5BiBiiD,GAAYz1C,KAAKxM,KAMhCA,EAAOolD,GAAcqD,KAIvBlmD,EAAQw4B,EAAOgsB,SAAS/mD,IAAS+6B,EAAOgsB,SAAS0B,KAGpC,QAASlmD,IACpB4E,EAAM5E,EAAMzB,IAAIu6B,GAAM,EAAMirB,SAIlBpmD,IAARiH,IACFA,EAAMq7C,GAAOnnB,EAAMr7B,EAAMomD,IAIf,WAARj/C,GAAoBnH,KAAQ4lD,KAC9Bz+C,EAAMy+C,GAAmB5lD,IAIb,KAAVsmD,GAAgBA,GAClB9qB,EAAM/U,WAAWtf,IACA,IAAVm/C,GAAkB71C,SAAS+qB,GAAOA,GAAO,EAAIr0B,GAE/CA,CACT,IAEF4zB,EAAOc,KAAK,CAAC,SAAU,UAAU,SAAUv0B,EAAI2+C,GAC7ClrB,EAAOgsB,SAASd,GAAa,CAC3BnlD,IAAK,SAAUu6B,EAAMonB,EAAU6D,GAC7B,GAAI7D,EAGF,OAAOgD,GAAaj5C,KAAKuuB,EAAO+a,IAAIza,EAAM,aAOzCA,EAAKurB,iBAAiBzpD,QAAWk+B,EAAKstB,wBAAwBjG,MAE1D+D,GAAiBprB,EAAM4qB,EAAWK,GAFiCjE,GAAKhnB,EAAMqqB,IAAS,WAC1F,OAAOe,GAAiBprB,EAAM4qB,EAAWK,EAC3C,GAEJ,EACAr9C,IAAK,SAAUoyB,EAAMn6B,EAAOolD,GAC1B,IAAI39B,EACFy9B,EAASlE,GAAU7mB,GAGnButB,GAAsB7uB,EAAQyqB,iBAAuC,aAApB4B,EAAOtC,SAGxDqC,GADkByC,GAAsBtC,IAC0C,eAAjDvrB,EAAO+a,IAAIza,EAAM,aAAa,EAAO+qB,GACtEx8B,EAAW08B,EAAQN,GAAmB3qB,EAAM4qB,EAAWK,EAAOH,EAAaC,GAAU,EAavF,OATID,GAAeyC,IACjBh/B,GAAY/e,KAAKuF,KAAKirB,EAAK,SAAW4qB,EAAU,GAAG/4C,cAAgB+4C,EAAU9jD,MAAM,IAAMskB,WAAW2/B,EAAOH,IAAcD,GAAmB3qB,EAAM4qB,EAAW,UAAU,EAAOG,GAAU,KAItLx8B,IAAajB,EAAU2sB,GAAQv0B,KAAK7f,KAAoC,QAAxBynB,EAAQ,IAAM,QAChE0S,EAAKua,MAAMqQ,GAAa/kD,EACxBA,EAAQ65B,EAAO+a,IAAIza,EAAM4qB,IAEpBF,GAAkB1qB,EAAMn6B,EAAO0oB,EACxC,EAEJ,IACAmR,EAAOgsB,SAASrD,WAAaV,GAAajpB,EAAQwqB,oBAAoB,SAAUlpB,EAAMonB,GACpF,GAAIA,EACF,OAAQh8B,WAAW+7B,GAAOnnB,EAAM,gBAAkBA,EAAKstB,wBAAwBE,KAAOxG,GAAKhnB,EAAM,CAC/FqoB,WAAY,IACX,WACD,OAAOroB,EAAKstB,wBAAwBE,IACtC,KAAM,IAEV,IAGA9tB,EAAOc,KAAK,CACVitB,OAAQ,GACRC,QAAS,GACTC,OAAQ,UACP,SAAU96B,EAAQE,GACnB2M,EAAOgsB,SAAS74B,EAASE,GAAU,CACjC66B,OAAQ,SAAU/nD,GAKhB,IAJA,IAAIjE,EAAI,EACNisD,EAAW,CAAC,EAEZxgC,EAAyB,kBAAVxnB,EAAqBA,EAAM0T,MAAM,KAAO,CAAC1T,GACnDjE,EAAI,EAAGA,IACZisD,EAASh7B,EAASqnB,GAAUt4C,GAAKmxB,GAAU1F,EAAMzrB,IAAMyrB,EAAMzrB,EAAI,IAAMyrB,EAAM,GAE/E,OAAOwgC,CACT,GAEa,WAAXh7B,IACF6M,EAAOgsB,SAAS74B,EAASE,GAAQnlB,IAAM88C,GAE3C,IACAhrB,EAAOj3B,GAAGG,OAAO,CACf6xC,IAAK,SAAU91C,EAAMkB,GACnB,OAAO8xC,GAAOrsC,MAAM,SAAU00B,EAAMr7B,EAAMkB,GACxC,IAAIklD,EACFx/C,EACAhD,EAAM,CAAC,EACP3G,EAAI,EACN,GAAI6F,MAAMF,QAAQ5C,GAAO,CAGvB,IAFAomD,EAASlE,GAAU7mB,GACnBz0B,EAAM5G,EAAK7C,OACJF,EAAI2J,EAAK3J,IACd2G,EAAI5D,EAAK/C,IAAM89B,EAAO+a,IAAIza,EAAMr7B,EAAK/C,IAAI,EAAOmpD,GAElD,OAAOxiD,CACT,CACA,YAAiB1D,IAAVgB,EAAsB65B,EAAO6a,MAAMva,EAAMr7B,EAAMkB,GAAS65B,EAAO+a,IAAIza,EAAMr7B,EAClF,GAAGA,EAAMkB,EAAOuB,UAAUtF,OAAS,EACrC,IAKF49B,EAAO8rB,MAAQA,GACfA,GAAMxpD,UAAY,CAChBk+B,YAAasrB,GACb3rB,KAAM,SAAUG,EAAMkB,EAASr1B,EAAMm1B,EAAKyqB,EAAQ93C,GAChDrI,KAAK00B,KAAOA,EACZ10B,KAAKO,KAAOA,EACZP,KAAKmgD,OAASA,GAAU/rB,EAAO+rB,OAAO/O,SACtCpxC,KAAK41B,QAAUA,EACf51B,KAAKmgC,MAAQngC,KAAK0D,IAAM1D,KAAK6mC,MAC7B7mC,KAAK01B,IAAMA,EACX11B,KAAKqI,KAAOA,IAAS+rB,EAAOwb,UAAUrvC,GAAQ,GAAK,KACrD,EACAsmC,IAAK,WACH,IAAIjrC,EAAQskD,GAAMsC,UAAUxiD,KAAKO,MACjC,OAAO3E,GAASA,EAAMzB,IAAMyB,EAAMzB,IAAI6F,MAAQkgD,GAAMsC,UAAUpR,SAASj3C,IAAI6F,KAC7E,EACAyiD,IAAK,SAAUC,GACb,IAAIC,EACF/mD,EAAQskD,GAAMsC,UAAUxiD,KAAKO,MAe/B,OAdIP,KAAK41B,QAAQzV,SACfngB,KAAKsW,IAAMqsC,EAAQvuB,EAAO+rB,OAAOngD,KAAKmgD,QAAQuC,EAAS1iD,KAAK41B,QAAQzV,SAAWuiC,EAAS,EAAG,EAAG1iD,KAAK41B,QAAQzV,UAE3GngB,KAAKsW,IAAMqsC,EAAQD,EAErB1iD,KAAK0D,KAAO1D,KAAK01B,IAAM11B,KAAKmgC,OAASwiB,EAAQ3iD,KAAKmgC,MAC9CngC,KAAK41B,QAAQgtB,MACf5iD,KAAK41B,QAAQgtB,KAAKhsD,KAAKoJ,KAAK00B,KAAM10B,KAAK0D,IAAK1D,MAE1CpE,GAASA,EAAM0G,IACjB1G,EAAM0G,IAAItC,MAEVkgD,GAAMsC,UAAUpR,SAAS9uC,IAAItC,MAExBA,IACT,GAEFkgD,GAAMxpD,UAAU69B,KAAK79B,UAAYwpD,GAAMxpD,UACvCwpD,GAAMsC,UAAY,CAChBpR,SAAU,CACRj3C,IAAK,SAAUm1C,GACb,IAAIv0B,EAIJ,OAA4B,IAAxBu0B,EAAM5a,KAAKrB,UAA4C,MAA1Bic,EAAM5a,KAAK4a,EAAM/uC,OAAiD,MAAhC+uC,EAAM5a,KAAKua,MAAMK,EAAM/uC,MACjF+uC,EAAM5a,KAAK4a,EAAM/uC,OAO1Bwa,EAASqZ,EAAO+a,IAAIG,EAAM5a,KAAM4a,EAAM/uC,KAAM,MAGf,SAAXwa,EAAwBA,EAAJ,CACxC,EACAzY,IAAK,SAAUgtC,GAITlb,EAAOyuB,GAAGD,KAAKtT,EAAM/uC,MACvB6zB,EAAOyuB,GAAGD,KAAKtT,EAAM/uC,MAAM+uC,GACM,IAAxBA,EAAM5a,KAAKrB,WAAmBe,EAAOgsB,SAAS9Q,EAAM/uC,OAAwD,MAA/C+uC,EAAM5a,KAAKua,MAAMwP,GAAcnP,EAAM/uC,OAG3G+uC,EAAM5a,KAAK4a,EAAM/uC,MAAQ+uC,EAAM5rC,IAF/B0wB,EAAO6a,MAAMK,EAAM5a,KAAM4a,EAAM/uC,KAAM+uC,EAAM5rC,IAAM4rC,EAAMjnC,KAI3D,IAMJ63C,GAAMsC,UAAUM,UAAY5C,GAAMsC,UAAUO,WAAa,CACvDzgD,IAAK,SAAUgtC,GACTA,EAAM5a,KAAKrB,UAAYic,EAAM5a,KAAKV,aACpCsb,EAAM5a,KAAK4a,EAAM/uC,MAAQ+uC,EAAM5rC,IAEnC,GAEF0wB,EAAO+rB,OAAS,CACd6C,OAAQ,SAAUzqD,GAChB,OAAOA,CACT,EACA0qD,MAAO,SAAU1qD,GACf,MAAO,GAAM2L,KAAKg/C,IAAI3qD,EAAI2L,KAAKi/C,IAAM,CACvC,EACA/R,SAAU,SAEZhd,EAAOyuB,GAAK3C,GAAMxpD,UAAU69B,KAG5BH,EAAOyuB,GAAGD,KAAO,CAAC,EAClB,IAAIQ,GACFC,GACAC,GAAW,yBACXC,GAAO,cACT,SAASC,KACHH,MACsB,IAApBrrD,EAASyrD,QAAoBnoD,EAAOooD,sBACtCpoD,EAAOooD,sBAAsBF,IAE7BloD,EAAO9B,WAAWgqD,GAAUpvB,EAAOyuB,GAAGc,UAExCvvB,EAAOyuB,GAAGe,OAEd,CAGA,SAASC,KAIP,OAHAvoD,EAAO9B,YAAW,WAChB4pD,QAAQ7pD,CACV,IACO6pD,GAAQpmD,KAAK0G,KACtB,CAGA,SAASogD,GAAM7qD,EAAM8qD,GACnB,IAAI9L,EACF3hD,EAAI,EACJ23C,EAAQ,CACNiQ,OAAQjlD,GAMZ,IADA8qD,EAAeA,EAAe,EAAI,EAC3BztD,EAAI,EAAGA,GAAK,EAAIytD,EAErB9V,EAAM,UADNgK,EAAQrJ,GAAUt4C,KACQ23C,EAAM,UAAYgK,GAASh/C,EAKvD,OAHI8qD,IACF9V,EAAMoS,QAAUpS,EAAM8N,MAAQ9iD,GAEzBg1C,CACT,CACA,SAAS+V,GAAYzpD,EAAOgG,EAAM0jD,GAKhC,IAJA,IAAI3U,EACFoK,GAAcwK,GAAUC,SAAS5jD,IAAS,IAAIsS,OAAOqxC,GAAUC,SAAS,MACxEn2B,EAAQ,EACRx3B,EAASkjD,EAAWljD,OACfw3B,EAAQx3B,EAAQw3B,IACrB,GAAIshB,EAAQoK,EAAW1rB,GAAOp3B,KAAKqtD,EAAW1jD,EAAMhG,GAElD,OAAO+0C,CAGb,CA8MA,SAAS4U,GAAUxvB,EAAMtP,EAAYwQ,GACnC,IAAI7a,EACFqpC,EACAp2B,EAAQ,EACRx3B,EAAS0tD,GAAUG,WAAW7tD,OAC9BkzC,EAAWtV,EAAOkV,WAAWG,QAAO,kBAE3Bma,EAAKlvB,IACd,IACAkvB,EAAO,WACL,GAAIQ,EACF,OAAO,EAUT,IARA,IAAIE,EAAclB,IAASS,KACzBxY,EAAYnnC,KAAKI,IAAI,EAAG2/C,EAAUM,UAAYN,EAAU9jC,SAAWmkC,GAInE5B,EAAU,GADHrX,EAAY4Y,EAAU9jC,UAAY,GAEzC6N,EAAQ,EACRx3B,EAASytD,EAAUO,OAAOhuD,OACrBw3B,EAAQx3B,EAAQw3B,IACrBi2B,EAAUO,OAAOx2B,GAAOy0B,IAAIC,GAK9B,OAHAhZ,EAASiB,WAAWjW,EAAM,CAACuvB,EAAWvB,EAASrX,IAG3CqX,EAAU,GAAKlsD,EACV60C,GAIJ70C,GACHkzC,EAASiB,WAAWjW,EAAM,CAACuvB,EAAW,EAAG,IAI3Cva,EAASkB,YAAYlW,EAAM,CAACuvB,KACrB,EACT,EACAA,EAAYva,EAAShyC,QAAQ,CAC3Bg9B,KAAMA,EACNuhB,MAAO7hB,EAAO92B,OAAO,CAAC,EAAG8nB,GACzBq/B,KAAMrwB,EAAO92B,QAAO,EAAM,CACxBonD,cAAe,CAAC,EAChBvE,OAAQ/rB,EAAO+rB,OAAO/O,UACrBxb,GACH+uB,mBAAoBv/B,EACpBw/B,gBAAiBhvB,EACjB2uB,UAAWnB,IAASS,KACpB1jC,SAAUyV,EAAQzV,SAClBqkC,OAAQ,GACRR,YAAa,SAAUzjD,EAAMm1B,GAC3B,IAAI4Z,EAAQlb,EAAO8rB,MAAMxrB,EAAMuvB,EAAUQ,KAAMlkD,EAAMm1B,EAAKuuB,EAAUQ,KAAKC,cAAcnkD,IAAS0jD,EAAUQ,KAAKtE,QAE/G,OADA8D,EAAUO,OAAO1tD,KAAKw4C,GACfA,CACT,EACAhB,KAAM,SAAUuW,GACd,IAAI72B,EAAQ,EAGVx3B,EAASquD,EAAUZ,EAAUO,OAAOhuD,OAAS,EAC/C,GAAI4tD,EACF,OAAOpkD,KAGT,IADAokD,GAAU,EACHp2B,EAAQx3B,EAAQw3B,IACrBi2B,EAAUO,OAAOx2B,GAAOy0B,IAAI,GAU9B,OANIoC,GACFnb,EAASiB,WAAWjW,EAAM,CAACuvB,EAAW,EAAG,IACzCva,EAASkB,YAAYlW,EAAM,CAACuvB,EAAWY,KAEvCnb,EAASqB,WAAWrW,EAAM,CAACuvB,EAAWY,IAEjC7kD,IACT,IAEFi2C,EAAQgO,EAAUhO,MAEpB,KApHF,SAAoBA,EAAOyO,GACzB,IAAI12B,EAAO30B,EAAM8mD,EAAQ5lD,EAAOqB,EAGhC,IAAKoyB,KAASioB,EAaZ,GAXAkK,EAASuE,EADTrrD,EAAO2zC,GAAUhf,IAEjBzzB,EAAQ07C,EAAMjoB,GACV7xB,MAAMF,QAAQ1B,KAChB4lD,EAAS5lD,EAAM,GACfA,EAAQ07C,EAAMjoB,GAASzzB,EAAM,IAE3ByzB,IAAU30B,IACZ48C,EAAM58C,GAAQkB,SACP07C,EAAMjoB,KAEfpyB,EAAQw4B,EAAOgsB,SAAS/mD,KACX,WAAYuC,EAMvB,IAAKoyB,KALLzzB,EAAQqB,EAAM0mD,OAAO/nD,UACd07C,EAAM58C,GAICkB,EACNyzB,KAASioB,IACbA,EAAMjoB,GAASzzB,EAAMyzB,GACrB02B,EAAc12B,GAASmyB,QAI3BuE,EAAcrrD,GAAQ8mD,CAG5B,CAkFE2E,CAAW7O,EAAOgO,EAAUQ,KAAKC,eAC1B12B,EAAQx3B,EAAQw3B,IAErB,GADAjT,EAASmpC,GAAUG,WAAWr2B,GAAOp3B,KAAKqtD,EAAWvvB,EAAMuhB,EAAOgO,EAAUQ,MAK1E,OAHIriD,EAAW2Y,EAAOuzB,QACpBla,EAAOga,YAAY6V,EAAUvvB,KAAMuvB,EAAUQ,KAAK5b,OAAOyF,KAAOvzB,EAAOuzB,KAAKxzC,KAAKigB,IAE5EA,EAeX,OAZAqZ,EAAOn3B,IAAIg5C,EAAO+N,GAAaC,GAC3B7hD,EAAW6hD,EAAUQ,KAAKtkB,QAC5B8jB,EAAUQ,KAAKtkB,MAAMvpC,KAAK89B,EAAMuvB,GAIlCA,EAAUja,SAASia,EAAUQ,KAAKza,UAAUnR,KAAKorB,EAAUQ,KAAK5rB,KAAMorB,EAAUQ,KAAKM,UAAU7c,KAAK+b,EAAUQ,KAAKvc,MAAMuB,OAAOwa,EAAUQ,KAAKhb,QAC/IrV,EAAOyuB,GAAGmC,MAAM5wB,EAAO92B,OAAOsmD,EAAM,CAClClvB,KAAMA,EACNuwB,KAAMhB,EACNpb,MAAOob,EAAUQ,KAAK5b,SAEjBob,CACT,CACA7vB,EAAO8vB,UAAY9vB,EAAO92B,OAAO4mD,GAAW,CAC1CC,SAAU,CACR,IAAK,CAAC,SAAU5jD,EAAMhG,GACpB,IAAI+0C,EAAQtvC,KAAKgkD,YAAYzjD,EAAMhG,GAEnC,OADA60C,GAAUE,EAAM5a,KAAMn0B,EAAMouC,GAAQv0B,KAAK7f,GAAQ+0C,GAC1CA,CACT,IAEF4V,QAAS,SAAUjP,EAAOj6C,GACpBoG,EAAW6zC,IACbj6C,EAAWi6C,EACXA,EAAQ,CAAC,MAETA,EAAQA,EAAM9wC,MAAMuiC,GAKtB,IAHA,IAAInnC,EACFytB,EAAQ,EACRx3B,EAASy/C,EAAMz/C,OACVw3B,EAAQx3B,EAAQw3B,IACrBztB,EAAO01C,EAAMjoB,GACbk2B,GAAUC,SAAS5jD,GAAQ2jD,GAAUC,SAAS5jD,IAAS,GACvD2jD,GAAUC,SAAS5jD,GAAM8tC,QAAQryC,EAErC,EACAqoD,WAAY,CA9Ud,SAA0B3vB,EAAMuhB,EAAOwO,GACrC,IAAIlkD,EACFhG,EACA61C,EACAx0C,EACAupD,EACAC,EACAC,EACAnW,EACAoW,EAAQ,UAAWrP,GAAS,WAAYA,EACxCgP,EAAOjlD,KACP44C,EAAO,CAAC,EACR3J,EAAQva,EAAKua,MACbwU,EAAS/uB,EAAKrB,UAAY2b,GAAmBta,GAC7C6wB,EAAWhY,GAASpzC,IAAIu6B,EAAM,UA2BhC,IAAKn0B,KAxBAkkD,EAAK5b,QAEc,OADtBjtC,EAAQw4B,EAAOga,YAAY1Z,EAAM,OACvB8wB,WACR5pD,EAAM4pD,SAAW,EACjBL,EAAUvpD,EAAMmC,MAAMgrC,KACtBntC,EAAMmC,MAAMgrC,KAAO,WACZntC,EAAM4pD,UACTL,GAEJ,GAEFvpD,EAAM4pD,WACNP,EAAKxb,QAAO,WAEVwb,EAAKxb,QAAO,WACV7tC,EAAM4pD,WACDpxB,EAAOyU,MAAMnU,EAAM,MAAMl+B,QAC5BoF,EAAMmC,MAAMgrC,MAEhB,GACF,KAIWkN,EAEX,GADA17C,EAAQ07C,EAAM11C,GACV+iD,GAASz9C,KAAKtL,GAAQ,CAGxB,UAFO07C,EAAM11C,GACb6vC,EAASA,GAAoB,WAAV71C,EACfA,KAAWkpD,EAAS,OAAS,QAAS,CAGxC,GAAc,SAAVlpD,IAAoBgrD,QAA+BhsD,IAAnBgsD,EAAShlD,GAK3C,SAJAkjD,GAAS,CAMb,CACA7K,EAAKr4C,GAAQglD,GAAYA,EAAShlD,IAAS6zB,EAAO6a,MAAMva,EAAMn0B,EAChE,CAKF,IADA6kD,GAAahxB,EAAOkC,cAAc2f,MAChB7hB,EAAOkC,cAAcsiB,GA0DvC,IAAKr4C,KArDD+kD,GAA2B,IAAlB5wB,EAAKrB,WAKhBoxB,EAAKvmD,SAAW,CAAC+wC,EAAM/wC,SAAU+wC,EAAMwW,UAAWxW,EAAMyW,WAIlC,OADtBL,EAAiBE,GAAYA,EAASrW,WAEpCmW,EAAiB9X,GAASpzC,IAAIu6B,EAAM,YAGtB,UADhBwa,EAAU9a,EAAO+a,IAAIza,EAAM,cAErB2wB,EACFnW,EAAUmW,GAGVpV,GAAS,CAACvb,IAAO,GACjB2wB,EAAiB3wB,EAAKua,MAAMC,SAAWmW,EACvCnW,EAAU9a,EAAO+a,IAAIza,EAAM,WAC3Bub,GAAS,CAACvb,OAKE,WAAZwa,GAAoC,iBAAZA,GAAgD,MAAlBmW,IACtB,SAA9BjxB,EAAO+a,IAAIza,EAAM,WAEd0wB,IACHH,EAAKpsB,MAAK,WACRoW,EAAMC,QAAUmW,CAClB,IACsB,MAAlBA,IACFnW,EAAUD,EAAMC,QAChBmW,EAA6B,SAAZnW,EAAqB,GAAKA,IAG/CD,EAAMC,QAAU,iBAIlBuV,EAAKvmD,WACP+wC,EAAM/wC,SAAW,SACjB+mD,EAAKxb,QAAO,WACVwF,EAAM/wC,SAAWumD,EAAKvmD,SAAS,GAC/B+wC,EAAMwW,UAAYhB,EAAKvmD,SAAS,GAChC+wC,EAAMyW,UAAYjB,EAAKvmD,SAAS,EAClC,KAIFknD,GAAY,EACCxM,EAENwM,IACCG,EACE,WAAYA,IACd9B,EAAS8B,EAAS9B,QAGpB8B,EAAWhY,GAASlB,OAAO3X,EAAM,SAAU,CACzCwa,QAASmW,IAKTjV,IACFmV,EAAS9B,QAAUA,GAIjBA,GACFxT,GAAS,CAACvb,IAAO,GAKnBuwB,EAAKpsB,MAAK,WAQR,IAAKt4B,KAJAkjD,GACHxT,GAAS,CAACvb,IAEZ6Y,GAASrE,OAAOxU,EAAM,UACTkkB,EACXxkB,EAAO6a,MAAMva,EAAMn0B,EAAMq4C,EAAKr4C,GAElC,KAIF6kD,EAAYpB,GAAYP,EAAS8B,EAAShlD,GAAQ,EAAGA,EAAM0kD,GACrD1kD,KAAQglD,IACZA,EAAShlD,GAAQ6kD,EAAUjlB,MACvBsjB,IACF2B,EAAU1vB,IAAM0vB,EAAUjlB,MAC1BilB,EAAUjlB,MAAQ,GAI1B,GAqKEwlB,UAAW,SAAU3pD,EAAUy+C,GACzBA,EACFyJ,GAAUG,WAAWhW,QAAQryC,GAE7BkoD,GAAUG,WAAWvtD,KAAKkF,EAE9B,IAEFo4B,EAAOwxB,MAAQ,SAAUA,EAAOzF,EAAQhjD,GACtC,IAAI0oD,EAAMD,GAA0B,kBAAVA,EAAqBxxB,EAAO92B,OAAO,CAAC,EAAGsoD,GAAS,CACxEb,SAAU5nD,IAAOA,GAAMgjD,GAAU/9C,EAAWwjD,IAAUA,EACtDzlC,SAAUylC,EACVzF,OAAQhjD,GAAMgjD,GAAUA,IAAW/9C,EAAW+9C,IAAWA,GA+B3D,OA3BI/rB,EAAOyuB,GAAG9P,IACZ8S,EAAI1lC,SAAW,EAEa,kBAAjB0lC,EAAI1lC,WACT0lC,EAAI1lC,YAAYiU,EAAOyuB,GAAGiD,OAC5BD,EAAI1lC,SAAWiU,EAAOyuB,GAAGiD,OAAOD,EAAI1lC,UAEpC0lC,EAAI1lC,SAAWiU,EAAOyuB,GAAGiD,OAAO1U,UAMrB,MAAbyU,EAAIhd,QAA+B,IAAdgd,EAAIhd,QAC3Bgd,EAAIhd,MAAQ,MAIdgd,EAAIlK,IAAMkK,EAAId,SACdc,EAAId,SAAW,WACT3iD,EAAWyjD,EAAIlK,MACjBkK,EAAIlK,IAAI/kD,KAAKoJ,MAEX6lD,EAAIhd,OACNzU,EAAO8Z,QAAQluC,KAAM6lD,EAAIhd,MAE7B,EACOgd,CACT,EACAzxB,EAAOj3B,GAAGG,OAAO,CACfyoD,OAAQ,SAAUH,EAAOvlD,EAAI8/C,EAAQnkD,GAEnC,OAAOgE,KAAKwlB,OAAOwpB,IAAoBG,IAAI,UAAW,GAAGe,OAGxDxa,MAAMswB,QAAQ,CACb3F,QAAShgD,GACRulD,EAAOzF,EAAQnkD,EACpB,EACAgqD,QAAS,SAAUzlD,EAAMqlD,EAAOzF,EAAQnkD,GACtC,IAAI+B,EAAQq2B,EAAOkC,cAAc/1B,GAC/B0lD,EAAS7xB,EAAOwxB,MAAMA,EAAOzF,EAAQnkD,GACrCkqD,EAAc,WAEZ,IAAIjB,EAAOf,GAAUlkD,KAAMo0B,EAAO92B,OAAO,CAAC,EAAGiD,GAAO0lD,IAGhDloD,GAASwvC,GAASpzC,IAAI6F,KAAM,YAC9BilD,EAAK3W,MAAK,EAEd,EAEF,OADA4X,EAAYC,OAASD,EACdnoD,IAA0B,IAAjBkoD,EAAOpd,MAAkB7oC,KAAKk1B,KAAKgxB,GAAelmD,KAAK6oC,MAAMod,EAAOpd,MAAOqd,EAC7F,EACA5X,KAAM,SAAUr1C,EAAMs1C,EAAYsW,GAChC,IAAIuB,EAAY,SAAUxqD,GACxB,IAAI0yC,EAAO1yC,EAAM0yC,YACV1yC,EAAM0yC,KACbA,EAAKuW,EACP,EASA,MARoB,kBAAT5rD,IACT4rD,EAAUtW,EACVA,EAAat1C,EACbA,OAAOM,GAELg1C,GACFvuC,KAAK6oC,MAAM5vC,GAAQ,KAAM,IAEpB+G,KAAKk1B,MAAK,WACf,IAAIgZ,GAAU,EACZlgB,EAAgB,MAAR/0B,GAAgBA,EAAO,aAC/BotD,EAASjyB,EAAOiyB,OAChBpwD,EAAOs3C,GAASpzC,IAAI6F,MACtB,GAAIguB,EACE/3B,EAAK+3B,IAAU/3B,EAAK+3B,GAAOsgB,MAC7B8X,EAAUnwD,EAAK+3B,SAGjB,IAAKA,KAAS/3B,EACRA,EAAK+3B,IAAU/3B,EAAK+3B,GAAOsgB,MAAQiV,GAAK19C,KAAKmoB,IAC/Co4B,EAAUnwD,EAAK+3B,IAIrB,IAAKA,EAAQq4B,EAAO7vD,OAAQw3B,KACtBq4B,EAAOr4B,GAAO0G,OAAS10B,MAAiB,MAAR/G,GAAgBotD,EAAOr4B,GAAO6a,QAAU5vC,IAC1EotD,EAAOr4B,GAAOi3B,KAAK3W,KAAKuW,GACxB3W,GAAU,EACVmY,EAAO1wB,OAAO3H,EAAO,KAOrBkgB,GAAY2W,GACdzwB,EAAO8Z,QAAQluC,KAAM/G,EAEzB,GACF,EACAktD,OAAQ,SAAUltD,GAIhB,OAHa,IAATA,IACFA,EAAOA,GAAQ,MAEV+G,KAAKk1B,MAAK,WACf,IAAIlH,EACF/3B,EAAOs3C,GAASpzC,IAAI6F,MACpB6oC,EAAQ5yC,EAAKgD,EAAO,SACpB2C,EAAQ3F,EAAKgD,EAAO,cACpBotD,EAASjyB,EAAOiyB,OAChB7vD,EAASqyC,EAAQA,EAAMryC,OAAS,EAYlC,IATAP,EAAKkwD,QAAS,EAGd/xB,EAAOyU,MAAM7oC,KAAM/G,EAAM,IACrB2C,GAASA,EAAM0yC,MACjB1yC,EAAM0yC,KAAK13C,KAAKoJ,MAAM,GAInBguB,EAAQq4B,EAAO7vD,OAAQw3B,KACtBq4B,EAAOr4B,GAAO0G,OAAS10B,MAAQqmD,EAAOr4B,GAAO6a,QAAU5vC,IACzDotD,EAAOr4B,GAAOi3B,KAAK3W,MAAK,GACxB+X,EAAO1wB,OAAO3H,EAAO,IAKzB,IAAKA,EAAQ,EAAGA,EAAQx3B,EAAQw3B,IAC1B6a,EAAM7a,IAAU6a,EAAM7a,GAAOm4B,QAC/Btd,EAAM7a,GAAOm4B,OAAOvvD,KAAKoJ,aAKtB/J,EAAKkwD,MACd,GACF,IAEF/xB,EAAOc,KAAK,CAAC,SAAU,OAAQ,SAAS,SAAUv0B,EAAItH,GACpD,IAAIitD,EAAQlyB,EAAOj3B,GAAG9D,GACtB+6B,EAAOj3B,GAAG9D,GAAQ,SAAUusD,EAAOzF,EAAQnkD,GACzC,OAAgB,MAAT4pD,GAAkC,mBAAVA,EAAsBU,EAAMzqD,MAAMmE,KAAMlE,WAAakE,KAAKgmD,QAAQlC,GAAMzqD,GAAM,GAAOusD,EAAOzF,EAAQnkD,EACrI,CACF,IAGAo4B,EAAOc,KAAK,CACVqxB,UAAWzC,GAAM,QACjB0C,QAAS1C,GAAM,QACf2C,YAAa3C,GAAM,UACnB4C,OAAQ,CACNrG,QAAS,QAEXsG,QAAS,CACPtG,QAAS,QAEXuG,WAAY,CACVvG,QAAS,YAEV,SAAUhnD,EAAM48C,GACjB7hB,EAAOj3B,GAAG9D,GAAQ,SAAUusD,EAAOzF,EAAQnkD,GACzC,OAAOgE,KAAKgmD,QAAQ/P,EAAO2P,EAAOzF,EAAQnkD,EAC5C,CACF,IACAo4B,EAAOiyB,OAAS,GAChBjyB,EAAOyuB,GAAGe,KAAO,WACf,IAAIoB,EACF1uD,EAAI,EACJ+vD,EAASjyB,EAAOiyB,OAElB,IADAjD,GAAQpmD,KAAK0G,MACNpN,EAAI+vD,EAAO7vD,OAAQF,KACxB0uD,EAAQqB,EAAO/vD,OAGC+vD,EAAO/vD,KAAO0uD,GAC5BqB,EAAO1wB,OAAOr/B,IAAK,GAGlB+vD,EAAO7vD,QACV49B,EAAOyuB,GAAGvU,OAEZ8U,QAAQ7pD,CACV,EACA66B,EAAOyuB,GAAGmC,MAAQ,SAAUA,GAC1B5wB,EAAOiyB,OAAOvvD,KAAKkuD,GACnB5wB,EAAOyuB,GAAG1iB,OACZ,EACA/L,EAAOyuB,GAAGc,SAAW,GACrBvvB,EAAOyuB,GAAG1iB,MAAQ,WACZkjB,KAGJA,IAAa,EACbG,KACF,EACApvB,EAAOyuB,GAAGvU,KAAO,WACf+U,GAAa,IACf,EACAjvB,EAAOyuB,GAAGiD,OAAS,CACjBe,KAAM,IACNC,KAAM,IAEN1V,SAAU,KAIZhd,EAAOj3B,GAAG4pD,MAAQ,SAAUjhC,EAAM7sB,GAGhC,OAFA6sB,EAAOsO,EAAOyuB,IAAKzuB,EAAOyuB,GAAGiD,OAAOhgC,IAAgBA,EACpD7sB,EAAOA,GAAQ,KACR+G,KAAK6oC,MAAM5vC,GAAM,SAAU0e,EAAM/b,GACtC,IAAIzD,EAAUmD,EAAO9B,WAAWme,EAAMmO,GACtClqB,EAAM0yC,KAAO,WACXhzC,EAAOxC,aAAaX,EACtB,CACF,GACF,EACA,WACE,IAAI+D,EAAQlE,EAASC,cAAc,SAEjC4tD,EADS7tD,EAASC,cAAc,UACnByB,YAAY1B,EAASC,cAAc,WAClDiE,EAAMjD,KAAO,WAIbm6B,EAAQ4zB,QAA0B,KAAhB9qD,EAAM3B,MAIxB64B,EAAQ6zB,YAAcpB,EAAIlkB,UAI1BzlC,EAAQlE,EAASC,cAAc,UACzBsC,MAAQ,IACd2B,EAAMjD,KAAO,QACbm6B,EAAQ8zB,WAA6B,MAAhBhrD,EAAM3B,KAC5B,CApBD,GAqBA,IAAI4sD,GACFvoB,GAAaxK,EAAOoK,KAAKI,WAC3BxK,EAAOj3B,GAAGG,OAAO,CACfqhC,KAAM,SAAUtlC,EAAMkB,GACpB,OAAO8xC,GAAOrsC,KAAMo0B,EAAOuK,KAAMtlC,EAAMkB,EAAOuB,UAAUtF,OAAS,EACnE,EACA4wD,WAAY,SAAU/tD,GACpB,OAAO2G,KAAKk1B,MAAK,WACfd,EAAOgzB,WAAWpnD,KAAM3G,EAC1B,GACF,IAEF+6B,EAAO92B,OAAO,CACZqhC,KAAM,SAAUjK,EAAMr7B,EAAMkB,GAC1B,IAAIupB,EACFloB,EACAyrD,EAAQ3yB,EAAKrB,SAGf,GAAc,IAAVg0B,GAAyB,IAAVA,GAAyB,IAAVA,EAKlC,MAAiC,qBAAtB3yB,EAAKX,aACPK,EAAO7zB,KAAKm0B,EAAMr7B,EAAMkB,IAKnB,IAAV8sD,GAAgBjzB,EAAO0C,SAASpC,KAClC94B,EAAQw4B,EAAOkzB,UAAUjuD,EAAKmP,iBAAmB4rB,EAAOoK,KAAKr5B,MAAMk1B,KAAKx0B,KAAKxM,GAAQ8tD,QAAW5tD,SAEpFA,IAAVgB,EACY,OAAVA,OACF65B,EAAOgzB,WAAW1yB,EAAMr7B,GAGtBuC,GAAS,QAASA,QAAkDrC,KAAxCuqB,EAAMloB,EAAM0G,IAAIoyB,EAAMn6B,EAAOlB,IACpDyqB,GAET4Q,EAAKr8B,aAAagB,EAAMkB,EAAQ,IACzBA,GAELqB,GAAS,QAASA,GAA2C,QAAjCkoB,EAAMloB,EAAMzB,IAAIu6B,EAAMr7B,IAC7CyqB,EAKK,OAHdA,EAAMsQ,EAAOoH,KAAKmD,KAAKjK,EAAMr7B,SAGRE,EAAYuqB,EACnC,EACAwjC,UAAW,CACTruD,KAAM,CACJqJ,IAAK,SAAUoyB,EAAMn6B,GACnB,IAAK64B,EAAQ8zB,YAAwB,UAAV3sD,GAAqBk6B,EAASC,EAAM,SAAU,CACvE,IAAIl0B,EAAMk0B,EAAKn6B,MAKf,OAJAm6B,EAAKr8B,aAAa,OAAQkC,GACtBiG,IACFk0B,EAAKn6B,MAAQiG,GAERjG,CACT,CACF,IAGJ6sD,WAAY,SAAU1yB,EAAMn6B,GAC1B,IAAIlB,EACF/C,EAAI,EAGJixD,EAAYhtD,GAASA,EAAM4K,MAAMuiC,GACnC,GAAI6f,GAA+B,IAAlB7yB,EAAKrB,SACpB,KAAOh6B,EAAOkuD,EAAUjxD,MACtBo+B,EAAK8H,gBAAgBnjC,EAG3B,IAIF8tD,GAAW,CACT7kD,IAAK,SAAUoyB,EAAMn6B,EAAOlB,GAO1B,OANc,IAAVkB,EAEF65B,EAAOgzB,WAAW1yB,EAAMr7B,GAExBq7B,EAAKr8B,aAAagB,EAAMA,GAEnBA,CACT,GAEF+6B,EAAOc,KAAKd,EAAOoK,KAAKr5B,MAAMk1B,KAAK13B,OAAOwC,MAAM,SAAS,SAAUxE,EAAItH,GACrE,IAAIU,EAAS6kC,GAAWvlC,IAAS+6B,EAAOoH,KAAKmD,KAC7CC,GAAWvlC,GAAQ,SAAUq7B,EAAMr7B,EAAMqsC,GACvC,IAAI5hB,EACFowB,EACAsT,EAAgBnuD,EAAKmP,cAQvB,OAPKk9B,IAEHwO,EAAStV,GAAW4oB,GACpB5oB,GAAW4oB,GAAiB1jC,EAC5BA,EAAmC,MAA7B/pB,EAAO26B,EAAMr7B,EAAMqsC,GAAiB8hB,EAAgB,KAC1D5oB,GAAW4oB,GAAiBtT,GAEvBpwB,CACT,CACF,IACA,IAAI2jC,GAAa,sCACfC,GAAa,gBAmGf,SAASC,GAAiBptD,GAExB,OADaA,EAAM4K,MAAMuiC,IAAkB,IAC7B3lC,KAAK,IACrB,CACA,SAAS6lD,GAASlzB,GAChB,OAAOA,EAAKX,cAAgBW,EAAKX,aAAa,UAAY,EAC5D,CACA,SAAS8zB,GAAettD,GACtB,OAAI4B,MAAMF,QAAQ1B,GACTA,EAEY,kBAAVA,GACFA,EAAM4K,MAAMuiC,IAEd,EACT,CAjHAtT,EAAOj3B,GAAGG,OAAO,CACfiD,KAAM,SAAUlH,EAAMkB,GACpB,OAAO8xC,GAAOrsC,KAAMo0B,EAAO7zB,KAAMlH,EAAMkB,EAAOuB,UAAUtF,OAAS,EACnE,EACAsxD,WAAY,SAAUzuD,GACpB,OAAO2G,KAAKk1B,MAAK,kBACRl1B,KAAKo0B,EAAO2zB,QAAQ1uD,IAASA,EACtC,GACF,IAEF+6B,EAAO92B,OAAO,CACZiD,KAAM,SAAUm0B,EAAMr7B,EAAMkB,GAC1B,IAAIupB,EACFloB,EACAyrD,EAAQ3yB,EAAKrB,SAGf,GAAc,IAAVg0B,GAAyB,IAAVA,GAAyB,IAAVA,EAQlC,OALc,IAAVA,GAAgBjzB,EAAO0C,SAASpC,KAElCr7B,EAAO+6B,EAAO2zB,QAAQ1uD,IAASA,EAC/BuC,EAAQw4B,EAAOouB,UAAUnpD,SAEbE,IAAVgB,EACEqB,GAAS,QAASA,QAAkDrC,KAAxCuqB,EAAMloB,EAAM0G,IAAIoyB,EAAMn6B,EAAOlB,IACpDyqB,EAEF4Q,EAAKr7B,GAAQkB,EAElBqB,GAAS,QAASA,GAA2C,QAAjCkoB,EAAMloB,EAAMzB,IAAIu6B,EAAMr7B,IAC7CyqB,EAEF4Q,EAAKr7B,EACd,EACAmpD,UAAW,CACThhB,SAAU,CACRrnC,IAAK,SAAUu6B,GAKb,IAAIszB,EAAW5zB,EAAOoH,KAAKmD,KAAKjK,EAAM,YACtC,OAAIszB,EACK33C,SAAS23C,EAAU,IAExBP,GAAW5hD,KAAK6uB,EAAKD,WAAaizB,GAAW7hD,KAAK6uB,EAAKD,WAAaC,EAAK6M,KACpE,GAED,CACV,IAGJwmB,QAAS,CACP,IAAO,UACP,MAAS,eAYR30B,EAAQ6zB,cACX7yB,EAAOouB,UAAU7gB,SAAW,CAC1BxnC,IAAK,SAAUu6B,GAGb,IAAI0L,EAAS1L,EAAKV,WAIlB,OAHIoM,GAAUA,EAAOpM,YACnBoM,EAAOpM,WAAW4N,cAEb,IACT,EACAt/B,IAAK,SAAUoyB,GAGb,IAAI0L,EAAS1L,EAAKV,WACdoM,IACFA,EAAOwB,cACHxB,EAAOpM,YACToM,EAAOpM,WAAW4N,cAGxB,IAGJxN,EAAOc,KAAK,CAAC,WAAY,WAAY,YAAa,cAAe,cAAe,UAAW,UAAW,SAAU,cAAe,oBAAoB,WACjJd,EAAO2zB,QAAQ/nD,KAAKwI,eAAiBxI,IACvC,IAoBAo0B,EAAOj3B,GAAGG,OAAO,CACf2qD,SAAU,SAAU1tD,GAClB,IAAI2tD,EAAYrhB,EAAKshB,EAAU/pB,EAAW9nC,EAAG8xD,EAC7C,OAAIhmD,EAAW7H,GACNyF,KAAKk1B,MAAK,SAAUxd,GACzB0c,EAAOp0B,MAAMioD,SAAS1tD,EAAM3D,KAAKoJ,KAAM0X,EAAGkwC,GAAS5nD,OACrD,KAEFkoD,EAAaL,GAAettD,IACb/D,OACNwJ,KAAKk1B,MAAK,WAGf,GAFAizB,EAAWP,GAAS5nD,MACpB6mC,EAAwB,IAAlB7mC,KAAKqzB,UAAkB,IAAMs0B,GAAiBQ,GAAY,IACvD,CACP,IAAK7xD,EAAI,EAAGA,EAAI4xD,EAAW1xD,OAAQF,IACjC8nC,EAAY8pB,EAAW5xD,GACnBuwC,EAAI/5B,QAAQ,IAAMsxB,EAAY,KAAO,IACvCyI,GAAOzI,EAAY,KAKvBgqB,EAAaT,GAAiB9gB,GAC1BshB,IAAaC,GACfpoD,KAAK3H,aAAa,QAAS+vD,EAE/B,CACF,IAEKpoD,IACT,EACAqoD,YAAa,SAAU9tD,GACrB,IAAI2tD,EAAYrhB,EAAKshB,EAAU/pB,EAAW9nC,EAAG8xD,EAC7C,OAAIhmD,EAAW7H,GACNyF,KAAKk1B,MAAK,SAAUxd,GACzB0c,EAAOp0B,MAAMqoD,YAAY9tD,EAAM3D,KAAKoJ,KAAM0X,EAAGkwC,GAAS5nD,OACxD,IAEGlE,UAAUtF,QAGf0xD,EAAaL,GAAettD,IACb/D,OACNwJ,KAAKk1B,MAAK,WAKf,GAJAizB,EAAWP,GAAS5nD,MAGpB6mC,EAAwB,IAAlB7mC,KAAKqzB,UAAkB,IAAMs0B,GAAiBQ,GAAY,IACvD,CACP,IAAK7xD,EAAI,EAAGA,EAAI4xD,EAAW1xD,OAAQF,IAIjC,IAHA8nC,EAAY8pB,EAAW5xD,GAGhBuwC,EAAI/5B,QAAQ,IAAMsxB,EAAY,MAAQ,GAC3CyI,EAAMA,EAAIzhC,QAAQ,IAAMg5B,EAAY,IAAK,KAK7CgqB,EAAaT,GAAiB9gB,GAC1BshB,IAAaC,GACfpoD,KAAK3H,aAAa,QAAS+vD,EAE/B,CACF,IAEKpoD,KA3BEA,KAAK2+B,KAAK,QAAS,GA4B9B,EACA2pB,YAAa,SAAU/tD,EAAOguD,GAC5B,IAAIL,EACF9pB,EACA9nC,EACA6vC,EACAltC,SAAcsB,EACdiuD,EAAwB,WAATvvD,GAAqBkD,MAAMF,QAAQ1B,GACpD,OAAI6H,EAAW7H,GACNyF,KAAKk1B,MAAK,SAAU5+B,GACzB89B,EAAOp0B,MAAMsoD,YAAY/tD,EAAM3D,KAAKoJ,KAAM1J,EAAGsxD,GAAS5nD,MAAOuoD,GAAWA,EAC1E,IAEsB,mBAAbA,GAA0BC,EAC5BD,EAAWvoD,KAAKioD,SAAS1tD,GAASyF,KAAKqoD,YAAY9tD,IAE5D2tD,EAAaL,GAAettD,GACrByF,KAAKk1B,MAAK,WACf,GAAIszB,EAGF,IADAriB,EAAO/R,EAAOp0B,MACT1J,EAAI,EAAGA,EAAI4xD,EAAW1xD,OAAQF,IACjC8nC,EAAY8pB,EAAW5xD,GAGnB6vC,EAAKsiB,SAASrqB,GAChB+H,EAAKkiB,YAAYjqB,GAEjB+H,EAAK8hB,SAAS7pB,aAKC7kC,IAAVgB,GAAgC,YAATtB,KAChCmlC,EAAYwpB,GAAS5nD,QAGnButC,GAASjrC,IAAItC,KAAM,gBAAiBo+B,GAOlCp+B,KAAK3H,cACP2H,KAAK3H,aAAa,QAAS+lC,IAAuB,IAAV7jC,EAAkB,GAAKgzC,GAASpzC,IAAI6F,KAAM,kBAAoB,IAG5G,IACF,EACAyoD,SAAU,SAAUp0B,GAClB,IAAI+J,EACF1J,EACAp+B,EAAI,EAEN,IADA8nC,EAAY,IAAM/J,EAAW,IACtBK,EAAO10B,KAAK1J,MACjB,GAAsB,IAAlBo+B,EAAKrB,WAAmB,IAAMs0B,GAAiBC,GAASlzB,IAAS,KAAK5nB,QAAQsxB,IAAc,EAC9F,OAAO,EAGX,OAAO,CACT,IAEF,IAAIsqB,GAAU,MACdt0B,EAAOj3B,GAAGG,OAAO,CACfkD,IAAK,SAAUjG,GACb,IAAIqB,EACFkoB,EACA+1B,EACAnlB,EAAO10B,KAAK,GACd,OAAKlE,UAAUtF,QAkBfqjD,EAAkBz3C,EAAW7H,GACtByF,KAAKk1B,MAAK,SAAU5+B,GACzB,IAAIkK,EACkB,IAAlBR,KAAKqzB,WAUE,OANT7yB,EADEq5C,EACIt/C,EAAM3D,KAAKoJ,KAAM1J,EAAG89B,EAAOp0B,MAAMQ,OAEjCjG,GAKNiG,EAAM,GACkB,kBAARA,EAChBA,GAAO,GACErE,MAAMF,QAAQuE,KACvBA,EAAM4zB,EAAOn3B,IAAIuD,GAAK,SAAUjG,GAC9B,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,EACtC,MAEFqB,EAAQw4B,EAAOu0B,SAAS3oD,KAAK/G,OAASm7B,EAAOu0B,SAAS3oD,KAAKy0B,SAASjsB,iBAGpD,QAAS5M,QAA4CrC,IAAlCqC,EAAM0G,IAAItC,KAAMQ,EAAK,WACtDR,KAAKzF,MAAQiG,GAEjB,KA7CMk0B,GACF94B,EAAQw4B,EAAOu0B,SAASj0B,EAAKz7B,OAASm7B,EAAOu0B,SAASj0B,EAAKD,SAASjsB,iBACvD,QAAS5M,QAA8CrC,KAApCuqB,EAAMloB,EAAMzB,IAAIu6B,EAAM,UAC7C5Q,EAKU,kBAHnBA,EAAM4Q,EAAKn6B,OAIFupB,EAAI1e,QAAQsjD,GAAS,IAIhB,MAAP5kC,EAAc,GAAKA,OAE5B,CA+BJ,IAEFsQ,EAAO92B,OAAO,CACZqrD,SAAU,CACR7X,OAAQ,CACN32C,IAAK,SAAUu6B,GACb,IAAIl0B,EAAM4zB,EAAOoH,KAAKmD,KAAKjK,EAAM,SACjC,OAAc,MAAPl0B,EAAcA,EAKrBmnD,GAAiBvzB,EAAON,KAAKY,GAC/B,GAEF+H,OAAQ,CACNtiC,IAAK,SAAUu6B,GACb,IAAIn6B,EACFu2C,EACAx6C,EACAs/B,EAAUlB,EAAKkB,QACf5H,EAAQ0G,EAAKkN,cACbiR,EAAoB,eAAdne,EAAKz7B,KACXgf,EAAS46B,EAAM,KAAO,GACtBvuC,EAAMuuC,EAAM7kB,EAAQ,EAAI4H,EAAQp/B,OAQlC,IANEF,EADE03B,EAAQ,EACN1pB,EAEAuuC,EAAM7kB,EAAQ,EAIb13B,EAAIgO,EAAKhO,IAKd,KAJAw6C,EAASlb,EAAQt/B,IAILqrC,UAAYrrC,IAAM03B,KAE7B8iB,EAAOzV,YAAcyV,EAAO9c,WAAWqH,WAAa5G,EAASqc,EAAO9c,WAAY,aAAc,CAK7F,GAHAz5B,EAAQ65B,EAAO0c,GAAQtwC,MAGnBqyC,EACF,OAAOt4C,EAIT0d,EAAOnhB,KAAKyD,EACd,CAEF,OAAO0d,CACT,EACA3V,IAAK,SAAUoyB,EAAMn6B,GAMnB,IALA,IAAIquD,EACF9X,EACAlb,EAAUlB,EAAKkB,QACf3d,EAASmc,EAAOuC,UAAUp8B,GAC1BjE,EAAIs/B,EAAQp/B,OACPF,OACLw6C,EAASlb,EAAQt/B,IAINqrC,SAAWvN,EAAOyC,QAAQzC,EAAOu0B,SAAS7X,OAAO32C,IAAI22C,GAAS74B,IAAW,KAClF2wC,GAAY,GAUhB,OAHKA,IACHl0B,EAAKkN,eAAiB,GAEjB3pB,CACT,MAMNmc,EAAOc,KAAK,CAAC,QAAS,aAAa,WACjCd,EAAOu0B,SAAS3oD,MAAQ,CACtBsC,IAAK,SAAUoyB,EAAMn6B,GACnB,GAAI4B,MAAMF,QAAQ1B,GAChB,OAAOm6B,EAAKgN,QAAUtN,EAAOyC,QAAQzC,EAAOM,GAAMl0B,MAAOjG,IAAU,CAEvE,GAEG64B,EAAQ4zB,UACX5yB,EAAOu0B,SAAS3oD,MAAM7F,IAAM,SAAUu6B,GACpC,OAAsC,OAA/BA,EAAKX,aAAa,SAAoB,KAAOW,EAAKn6B,KAC3D,EAEJ,IAGA,IAAI0mC,GAAW3lC,EAAO2lC,SAClBzN,GAAQ,CACV6D,KAAMr6B,KAAK0G,OAETmlD,GAAS,KAGbz0B,EAAO00B,SAAW,SAAU7yD,GAC1B,IAAI+pC,EAAK+oB,EACT,IAAK9yD,GAAwB,kBAATA,EAClB,OAAO,KAKT,IACE+pC,GAAM,IAAI1kC,EAAO0tD,WAAYC,gBAAgBhzD,EAAM,WACrD,CAAE,MAAOsB,GAAI,CAOb,OANAwxD,EAAkB/oB,GAAOA,EAAIhE,qBAAqB,eAAe,GAC5DgE,IAAO+oB,GACV30B,EAAO37B,MAAM,iBAAmBswD,EAAkB30B,EAAOn3B,IAAI8rD,EAAgBztB,YAAY,SAAUwB,GACjG,OAAOA,EAAGtG,WACZ,IAAGz0B,KAAK,MAAQ9L,IAEX+pC,CACT,EACA,IAAIkpB,GAAc,kCAChBC,GAA0B,SAAU5xD,GAClCA,EAAE87C,iBACJ,EACFjf,EAAO92B,OAAO82B,EAAOz7B,MAAO,CAC1B66C,QAAS,SAAU76C,EAAO1C,EAAMy+B,EAAM00B,GACpC,IAAI9yD,EACFuwC,EACAniB,EACA2kC,EACAC,EACApV,EACA1J,EACA+e,EACAC,EAAY,CAAC90B,GAAQ18B,GACrBiB,EAAOg6B,EAAOr8B,KAAK+B,EAAO,QAAUA,EAAMM,KAAON,EACjDo7C,EAAa9gB,EAAOr8B,KAAK+B,EAAO,aAAeA,EAAMo+B,UAAU9oB,MAAM,KAAO,GAI9E,GAHA44B,EAAM0iB,EAAc7kC,EAAMgQ,EAAOA,GAAQ18B,EAGnB,IAAlB08B,EAAKrB,UAAoC,IAAlBqB,EAAKrB,WAK5B61B,GAAYrjD,KAAK5M,EAAOm7B,EAAOz7B,MAAMw7C,aAGrCl7C,EAAK6T,QAAQ,MAAQ,IAEvBinC,EAAa96C,EAAKgV,MAAM,KACxBhV,EAAO86C,EAAW98C,QAClB88C,EAAW1qC,QAEbigD,EAASrwD,EAAK6T,QAAQ,KAAO,GAAK,KAAO7T,GAGzCN,EAAQA,EAAMy7B,EAAO6B,SAAWt9B,EAAQ,IAAIy7B,EAAOqhB,MAAMx8C,EAAuB,kBAAVN,GAAsBA,IAGtFw6C,UAAYiW,EAAe,EAAI,EACrCzwD,EAAMo+B,UAAYgd,EAAWhyC,KAAK,KAClCpJ,EAAMw8C,WAAax8C,EAAMo+B,UAAY,IAAIt0B,OAAO,UAAYsxC,EAAWhyC,KAAK,iBAAmB,WAAa,KAG5GpJ,EAAMoiB,YAASxhB,EACVZ,EAAMQ,SACTR,EAAMQ,OAASu7B,GAIjBz+B,EAAe,MAARA,EAAe,CAAC0C,GAASy7B,EAAOuC,UAAU1gC,EAAM,CAAC0C,IAGxD6xC,EAAUpW,EAAOz7B,MAAM6xC,QAAQvxC,IAAS,CAAC,EACpCmwD,IAAgB5e,EAAQgJ,UAAiD,IAAtChJ,EAAQgJ,QAAQ33C,MAAM64B,EAAMz+B,IAApE,CAMA,IAAKmzD,IAAiB5e,EAAQqL,WAAaviB,EAASoB,GAAO,CAKzD,IAJA20B,EAAa7e,EAAQ4I,cAAgBn6C,EAChCiwD,GAAYrjD,KAAKwjD,EAAapwD,KACjC4tC,EAAMA,EAAI7S,YAEL6S,EAAKA,EAAMA,EAAI7S,WACpBw1B,EAAU1yD,KAAK+vC,GACfniB,EAAMmiB,EAIJniB,KAASgQ,EAAKwC,eAAiBl/B,IACjCwxD,EAAU1yD,KAAK4tB,EAAI+Y,aAAe/Y,EAAI+kC,cAAgBnuD,EAE1D,CAIA,IADAhF,EAAI,GACIuwC,EAAM2iB,EAAUlzD,QAAUqC,EAAMs8C,wBACtCsU,EAAc1iB,EACdluC,EAAMM,KAAO3C,EAAI,EAAI+yD,EAAa7e,EAAQ6J,UAAYp7C,GAGtDi7C,GAAU3G,GAASpzC,IAAI0sC,EAAK,WAAapwC,OAAOmE,OAAO,OAAOjC,EAAMM,OAASs0C,GAASpzC,IAAI0sC,EAAK,YAE7FqN,EAAOr4C,MAAMgrC,EAAK5wC,IAIpBi+C,EAASoV,GAAUziB,EAAIyiB,KACTpV,EAAOr4C,OAASoxC,GAAWpG,KACvCluC,EAAMoiB,OAASm5B,EAAOr4C,MAAMgrC,EAAK5wC,IACZ,IAAjB0C,EAAMoiB,QACRpiB,EAAM46C,kBAkCZ,OA9BA56C,EAAMM,KAAOA,EAGRmwD,GAAiBzwD,EAAMu9C,sBACpB1L,EAAQ4G,WAA8D,IAAlD5G,EAAQ4G,SAASv1C,MAAM2tD,EAAUjyB,MAAOthC,KAAoBg3C,GAAWvY,IAG3F40B,GAAUlnD,EAAWsyB,EAAKz7B,MAAWq6B,EAASoB,MAEhDhQ,EAAMgQ,EAAK40B,MAET50B,EAAK40B,GAAU,MAIjBl1B,EAAOz7B,MAAMw7C,UAAYl7C,EACrBN,EAAMs8C,wBACRsU,EAAY5rB,iBAAiB1kC,EAAMkwD,IAErCz0B,EAAKz7B,KACDN,EAAMs8C,wBACRsU,EAAYxd,oBAAoB9yC,EAAMkwD,IAExC/0B,EAAOz7B,MAAMw7C,eAAY56C,EACrBmrB,IACFgQ,EAAK40B,GAAU5kC,IAKhB/rB,EAAMoiB,MAvEb,CAwEF,EAGAs9B,SAAU,SAAUp/C,EAAMy7B,EAAM/7B,GAC9B,IAAIpB,EAAI68B,EAAO92B,OAAO,IAAI82B,EAAOqhB,MAAS98C,EAAO,CAC/CM,KAAMA,EACNq9C,aAAa,IAEfliB,EAAOz7B,MAAM66C,QAAQj8C,EAAG,KAAMm9B,EAChC,IAEFN,EAAOj3B,GAAGG,OAAO,CACfk2C,QAAS,SAAUv6C,EAAMhD,GACvB,OAAO+J,KAAKk1B,MAAK,WACfd,EAAOz7B,MAAM66C,QAAQv6C,EAAMhD,EAAM+J,KACnC,GACF,EACA0pD,eAAgB,SAAUzwD,EAAMhD,GAC9B,IAAIy+B,EAAO10B,KAAK,GAChB,GAAI00B,EACF,OAAON,EAAOz7B,MAAM66C,QAAQv6C,EAAMhD,EAAMy+B,GAAM,EAElD,IAEF,IAAIi1B,GAAW,QACbC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCACjB,SAASC,GAAYxiC,EAAQ7qB,EAAKstD,EAAa13C,GAC7C,IAAIjZ,EACJ,GAAI8C,MAAMF,QAAQS,GAEhB03B,EAAOc,KAAKx4B,GAAK,SAAUpG,EAAGsxC,GACxBoiB,GAAeL,GAAS9jD,KAAK0hB,GAE/BjV,EAAIiV,EAAQqgB,GAGZmiB,GAAYxiC,EAAS,KAAoB,kBAANqgB,GAAuB,MAALA,EAAYtxC,EAAI,IAAM,IAAKsxC,EAAGoiB,EAAa13C,EAEpG,SACK,GAAK03C,GAA+B,WAAhB91B,EAAOx3B,GAOhC4V,EAAIiV,EAAQ7qB,QALZ,IAAKrD,KAAQqD,EACXqtD,GAAYxiC,EAAS,IAAMluB,EAAO,IAAKqD,EAAIrD,GAAO2wD,EAAa13C,EAMrE,CAIA8hB,EAAO61B,MAAQ,SAAU1tD,EAAGytD,GAC1B,IAAIziC,EACF9rB,EAAI,GACJ6W,EAAM,SAAUzX,EAAKqvD,GAEnB,IAAI3vD,EAAQ6H,EAAW8nD,GAAmBA,IAAoBA,EAC9DzuD,EAAEA,EAAEjF,QAAU2zD,mBAAmBtvD,GAAO,IAAMsvD,mBAA4B,MAAT5vD,EAAgB,GAAKA,EACxF,EACF,GAAS,MAALgC,EACF,MAAO,GAIT,GAAIJ,MAAMF,QAAQM,IAAMA,EAAEo4B,SAAWP,EAAO4B,cAAcz5B,GAExD63B,EAAOc,KAAK34B,GAAG,WACb+V,EAAItS,KAAK3G,KAAM2G,KAAKzF,MACtB,SAIA,IAAKgtB,KAAUhrB,EACbwtD,GAAYxiC,EAAQhrB,EAAEgrB,GAASyiC,EAAa13C,GAKhD,OAAO7W,EAAEsG,KAAK,IAChB,EACAqyB,EAAOj3B,GAAGG,OAAO,CACf8sD,UAAW,WACT,OAAOh2B,EAAO61B,MAAMjqD,KAAKqqD,iBAC3B,EACAA,eAAgB,WACd,OAAOrqD,KAAK/C,KAAI,WAEd,IAAIwhC,EAAWrK,EAAO7zB,KAAKP,KAAM,YACjC,OAAOy+B,EAAWrK,EAAOuC,UAAU8H,GAAYz+B,IACjD,IAAGwlB,QAAO,WACR,IAAIvsB,EAAO+G,KAAK/G,KAGhB,OAAO+G,KAAK3G,OAAS+6B,EAAOp0B,MAAM6lC,GAAG,cAAgBikB,GAAajkD,KAAK7F,KAAKy0B,YAAco1B,GAAgBhkD,KAAK5M,KAAU+G,KAAK0hC,UAAY4O,GAAezqC,KAAK5M,GAChK,IAAGgE,KAAI,SAAU0D,EAAI+zB,GACnB,IAAIl0B,EAAM4zB,EAAOp0B,MAAMQ,MACvB,OAAW,MAAPA,EACK,KAELrE,MAAMF,QAAQuE,GACT4zB,EAAOn3B,IAAIuD,GAAK,SAAUA,GAC/B,MAAO,CACLnH,KAAMq7B,EAAKr7B,KACXkB,MAAOiG,EAAI4E,QAAQwkD,GAAO,QAE9B,IAEK,CACLvwD,KAAMq7B,EAAKr7B,KACXkB,MAAOiG,EAAI4E,QAAQwkD,GAAO,QAE9B,IAAGzvD,KACL,IAEF,IAAImwD,GAAM,OACRC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAGXC,GAAa,iBACbC,GAAY,QAUZtG,GAAa,CAAC,EAMduG,GAAa,CAAC,EAEdC,GAAW,KAAKh4C,OAAO,KAEvBi4C,GAAe9yD,EAASC,cAAc,KAIxC,SAAS8yD,GAA4BC,GAEnC,OAAO,SAAUC,EAAoBjmD,GACD,kBAAvBimD,IACTjmD,EAAOimD,EACPA,EAAqB,KAEvB,IAAIC,EACF50D,EAAI,EACJ60D,EAAYF,EAAmBziD,cAAcrD,MAAMuiC,IAAkB,GACvE,GAAItlC,EAAW4C,GAEb,KAAOkmD,EAAWC,EAAU70D,MAEN,MAAhB40D,EAAS,IACXA,EAAWA,EAAS1vD,MAAM,IAAM,KAC/BwvD,EAAUE,GAAYF,EAAUE,IAAa,IAAI7c,QAAQrpC,KAIzDgmD,EAAUE,GAAYF,EAAUE,IAAa,IAAIp0D,KAAKkO,EAI/D,CACF,CAGA,SAASomD,GAA8BJ,EAAWp1B,EAASgvB,EAAiByG,GAC1E,IAAIC,EAAY,CAAC,EACfC,EAAmBP,IAAcJ,GACnC,SAAStjC,EAAQ4jC,GACf,IAAIvpB,EAYJ,OAXA2pB,EAAUJ,IAAY,EACtB92B,EAAOc,KAAK81B,EAAUE,IAAa,IAAI,SAAU7iB,EAAGmjB,GAClD,IAAIC,EAAsBD,EAAmB51B,EAASgvB,EAAiByG,GACvE,MAAmC,kBAAxBI,GAAqCF,GAAqBD,EAAUG,GAIpEF,IACA5pB,EAAW8pB,QADf,GAHL71B,EAAQu1B,UAAU9c,QAAQod,GAC1BnkC,EAAQmkC,IACD,EAIX,IACO9pB,CACT,CACA,OAAOra,EAAQsO,EAAQu1B,UAAU,MAAQG,EAAU,MAAQhkC,EAAQ,IACrE,CAKA,SAASokC,GAAWvyD,EAAQb,GAC1B,IAAIuC,EACFk7B,EACA41B,EAAcv3B,EAAOw3B,aAAaD,aAAe,CAAC,EACpD,IAAK9wD,KAAOvC,OACOiB,IAAbjB,EAAIuC,MACL8wD,EAAY9wD,GAAO1B,EAAS48B,IAASA,EAAO,CAAC,IAAIl7B,GAAOvC,EAAIuC,IAMjE,OAHIk7B,GACF3B,EAAO92B,QAAO,EAAMnE,EAAQ48B,GAEvB58B,CACT,CApEA2xD,GAAavpB,KAAON,GAASM,KA6N7BnN,EAAO92B,OAAO,CAEZuuD,OAAQ,EAERC,aAAc,CAAC,EACfC,KAAM,CAAC,EACPH,aAAc,CACZI,IAAK/qB,GAASM,KACdtoC,KAAM,MACNwqB,QA7Pe,4DA6PS5d,KAAKo7B,GAASgrB,UACtCt5B,QAAQ,EACRu5B,aAAa,EACbC,OAAO,EACPC,YAAa,mDAabC,QAAS,CACP,IAAKxB,GACL/2B,KAAM,aACNgmB,KAAM,YACN9Z,IAAK,4BACLssB,KAAM,qCAER5lB,SAAU,CACR1G,IAAK,UACL8Z,KAAM,SACNwS,KAAM,YAERC,eAAgB,CACdvsB,IAAK,cACLlM,KAAM,eACNw4B,KAAM,gBAIRE,WAAY,CAEV,SAAU1nC,OAEV,aAAa,EAEb,YAAa8oB,KAAKC,MAElB,WAAYzZ,EAAO00B,UAMrB6C,YAAa,CACXK,KAAK,EACL13B,SAAS,IAMbm4B,UAAW,SAAUtzD,EAAQuzD,GAC3B,OAAOA,EAEPhB,GAAWA,GAAWvyD,EAAQi7B,EAAOw3B,cAAec,GAEpDhB,GAAWt3B,EAAOw3B,aAAczyD,EAClC,EACAwzD,cAAe5B,GAA4B1G,IAC3CuI,cAAe7B,GAA4BH,IAE3CiC,KAAM,SAAUb,EAAKp2B,GAEA,kBAARo2B,IACTp2B,EAAUo2B,EACVA,OAAMzyD,GAIRq8B,EAAUA,GAAW,CAAC,EACtB,IAAIk3B,EAEFC,EAEAC,EACAC,EAEAC,EAEAC,EAEArhB,EAEAshB,EAEA92D,EAEA+2D,EAEA5xD,EAAI24B,EAAOq4B,UAAU,CAAC,EAAG72B,GAEzB03B,EAAkB7xD,EAAE64B,SAAW74B,EAE/B8xD,EAAqB9xD,EAAE64B,UAAYg5B,EAAgBj6B,UAAYi6B,EAAgB34B,QAAUP,EAAOk5B,GAAmBl5B,EAAOz7B,MAE1H+wC,EAAWtV,EAAOkV,WAClBkkB,EAAmBp5B,EAAOgU,UAAU,eAEpCqlB,EAAahyD,EAAEgyD,YAAc,CAAC,EAE9BC,EAAiB,CAAC,EAClBC,EAAsB,CAAC,EAEvBC,EAAW,WAEXvC,EAAQ,CACNlf,WAAY,EAEZ0hB,kBAAmB,SAAUhzD,GAC3B,IAAIsK,EACJ,GAAI2mC,EAAW,CACb,IAAKmhB,EAEH,IADAA,EAAkB,CAAC,EACZ9nD,EAAQslD,GAASrwC,KAAK4yC,IAC3BC,EAAgB9nD,EAAM,GAAGqD,cAAgB,MAAQykD,EAAgB9nD,EAAM,GAAGqD,cAAgB,MAAQ,IAAIqK,OAAO1N,EAAM,IAGvHA,EAAQ8nD,EAAgBpyD,EAAI2N,cAAgB,IAC9C,CACA,OAAgB,MAATrD,EAAgB,KAAOA,EAAMpD,KAAK,KAC3C,EAEA+rD,sBAAuB,WACrB,OAAOhiB,EAAYkhB,EAAwB,IAC7C,EAEAe,iBAAkB,SAAU10D,EAAMkB,GAKhC,OAJiB,MAAbuxC,IACFzyC,EAAOs0D,EAAoBt0D,EAAKmP,eAAiBmlD,EAAoBt0D,EAAKmP,gBAAkBnP,EAC5Fq0D,EAAer0D,GAAQkB,GAElByF,IACT,EAEAguD,iBAAkB,SAAU/0D,GAI1B,OAHiB,MAAb6yC,IACFrwC,EAAEwyD,SAAWh1D,GAER+G,IACT,EAEAytD,WAAY,SAAUxwD,GACpB,IAAI02B,EACJ,GAAI12B,EACF,GAAI6uC,EAEFuf,EAAM5hB,OAAOxsC,EAAIouD,EAAM6C,cAGvB,IAAKv6B,KAAQ12B,EACXwwD,EAAW95B,GAAQ,CAAC85B,EAAW95B,GAAO12B,EAAI02B,IAIhD,OAAO3zB,IACT,EAEAmuD,MAAO,SAAUC,GACf,IAAIC,EAAYD,GAAcR,EAK9B,OAJId,GACFA,EAAUqB,MAAME,GAElBx1B,EAAK,EAAGw1B,GACDruD,IACT,GAkBJ,GAdA0pC,EAAShyC,QAAQ2zD,GAKjB5vD,EAAEuwD,MAAQA,GAAOvwD,EAAEuwD,KAAO/qB,GAASM,MAAQ,IAAIn8B,QAAQulD,GAAW1pB,GAASgrB,SAAW,MAGtFxwD,EAAExC,KAAO28B,EAAQqS,QAAUrS,EAAQ38B,MAAQwC,EAAEwsC,QAAUxsC,EAAExC,KAGzDwC,EAAE0vD,WAAa1vD,EAAEyvD,UAAY,KAAK1iD,cAAcrD,MAAMuiC,IAAkB,CAAC,IAGpD,MAAjBjsC,EAAE6yD,YAAqB,CACzBnB,EAAYn1D,EAASC,cAAc,KAKnC,IACEk1D,EAAU5rB,KAAO9lC,EAAEuwD,IAInBmB,EAAU5rB,KAAO4rB,EAAU5rB,KAC3B9lC,EAAE6yD,YAAcxD,GAAamB,SAAW,KAAOnB,GAAayD,OAASpB,EAAUlB,SAAW,KAAOkB,EAAUoB,IAC7G,CAAE,MAAOh3D,GAGPkE,EAAE6yD,aAAc,CAClB,CACF,CAWA,GARI7yD,EAAExF,MAAQwF,EAAEywD,aAAiC,kBAAXzwD,EAAExF,OACtCwF,EAAExF,KAAOm+B,EAAO61B,MAAMxuD,EAAExF,KAAMwF,EAAEuuD,cAIlCoB,GAA8B/G,GAAY5oD,EAAGm6B,EAASy1B,GAGlDvf,EACF,OAAOuf,EAqET,IAAK/0D,KAhEL82D,EAAch5B,EAAOz7B,OAAS8C,EAAEk3B,SAGO,IAApByB,EAAOy3B,UACxBz3B,EAAOz7B,MAAM66C,QAAQ,aAIvB/3C,EAAExC,KAAOwC,EAAExC,KAAKsN,cAGhB9K,EAAE+yD,YAAc9D,GAAW7kD,KAAKpK,EAAExC,MAKlC8zD,EAAWtxD,EAAEuwD,IAAI5mD,QAAQmlD,GAAO,IAG3B9uD,EAAE+yD,WAsBI/yD,EAAExF,MAAQwF,EAAEywD,aAAsF,KAAtEzwD,EAAE2wD,aAAe,IAAIt/C,QAAQ,uCAClErR,EAAExF,KAAOwF,EAAExF,KAAKmP,QAAQklD,GAAK,OArB7B+C,EAAW5xD,EAAEuwD,IAAIxwD,MAAMuxD,EAASv2D,QAG5BiF,EAAExF,OAASwF,EAAEywD,aAAiC,kBAAXzwD,EAAExF,QACvC82D,IAAalE,GAAOhjD,KAAKknD,GAAY,IAAM,KAAOtxD,EAAExF,YAG7CwF,EAAExF,OAIK,IAAZwF,EAAEihC,QACJqwB,EAAWA,EAAS3nD,QAAQolD,GAAY,MACxC6C,GAAYxE,GAAOhjD,KAAKknD,GAAY,IAAM,KAAO,KAAOv5B,GAAM6D,OAASg2B,GAIzE5xD,EAAEuwD,IAAMe,EAAWM,GAQjB5xD,EAAEgzD,aACAr6B,EAAO03B,aAAaiB,IACtB1B,EAAM0C,iBAAiB,oBAAqB35B,EAAO03B,aAAaiB,IAE9D34B,EAAO23B,KAAKgB,IACd1B,EAAM0C,iBAAiB,gBAAiB35B,EAAO23B,KAAKgB,MAKpDtxD,EAAExF,MAAQwF,EAAE+yD,aAAgC,IAAlB/yD,EAAE2wD,aAAyBx2B,EAAQw2B,cAC/Df,EAAM0C,iBAAiB,eAAgBtyD,EAAE2wD,aAI3Cf,EAAM0C,iBAAiB,SAAUtyD,EAAE0vD,UAAU,IAAM1vD,EAAE4wD,QAAQ5wD,EAAE0vD,UAAU,IAAM1vD,EAAE4wD,QAAQ5wD,EAAE0vD,UAAU,KAA0B,MAAnB1vD,EAAE0vD,UAAU,GAAa,KAAON,GAAW,WAAa,IAAMpvD,EAAE4wD,QAAQ,MAG1K5wD,EAAEizD,QACVrD,EAAM0C,iBAAiBz3D,EAAGmF,EAAEizD,QAAQp4D,IAItC,GAAImF,EAAEkzD,cAAgE,IAAjDlzD,EAAEkzD,WAAW/3D,KAAK02D,EAAiBjC,EAAO5vD,IAAgBqwC,GAE7E,OAAOuf,EAAM8C,QAef,GAXAP,EAAW,QAGXJ,EAAiBl7C,IAAI7W,EAAEspD,UACvBsG,EAAMxyB,KAAKp9B,EAAEmzD,SACbvD,EAAMnjB,KAAKzsC,EAAEhD,OAGbq0D,EAAY1B,GAA8BR,GAAYnvD,EAAGm6B,EAASy1B,GAK3D,CASL,GARAA,EAAMlf,WAAa,EAGfihB,GACFG,EAAmB/Z,QAAQ,WAAY,CAAC6X,EAAO5vD,IAI7CqwC,EACF,OAAOuf,EAIL5vD,EAAE0wD,OAAS1wD,EAAEtD,QAAU,IACzB+0D,EAAe5xD,EAAO9B,YAAW,WAC/B6xD,EAAM8C,MAAM,UACd,GAAG1yD,EAAEtD,UAEP,IACE2zC,GAAY,EACZghB,EAAU+B,KAAKnB,EAAgB70B,EACjC,CAAE,MAAOthC,GAEP,GAAIu0C,EACF,MAAMv0C,EAIRshC,GAAM,EAAGthC,EACX,CACF,MAhCEshC,GAAM,EAAG,gBAmCX,SAASA,EAAKq1B,EAAQY,EAAkBC,EAAWL,GACjD,IAAIM,EACFJ,EACAn2D,EACAw2D,EACAC,EACAd,EAAaU,EAGXhjB,IAGJA,GAAY,EAGRohB,GACF5xD,EAAOxC,aAAao0D,GAKtBJ,OAAYvzD,EAGZyzD,EAAwB0B,GAAW,GAGnCrD,EAAMlf,WAAa+hB,EAAS,EAAI,EAAI,EAGpCc,EAAYd,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGzCa,IACFE,EAxhBR,SAA6BxzD,EAAG4vD,EAAO0D,GASrC,IARA,IAAII,EACFl2D,EACAm2D,EACAC,EACA3oB,EAAWjrC,EAAEirC,SACbykB,EAAY1vD,EAAE0vD,UAGQ,MAAjBA,EAAU,IACfA,EAAUl0D,aACCsC,IAAP41D,IACFA,EAAK1zD,EAAEwyD,UAAY5C,EAAMwC,kBAAkB,iBAK/C,GAAIsB,EACF,IAAKl2D,KAAQytC,EACX,GAAIA,EAASztC,IAASytC,EAASztC,GAAM4M,KAAKspD,GAAK,CAC7ChE,EAAU9c,QAAQp1C,GAClB,KACF,CAKJ,GAAIkyD,EAAU,KAAM4D,EAClBK,EAAgBjE,EAAU,OACrB,CAEL,IAAKlyD,KAAQ81D,EAAW,CACtB,IAAK5D,EAAU,IAAM1vD,EAAE+wD,WAAWvzD,EAAO,IAAMkyD,EAAU,IAAK,CAC5DiE,EAAgBn2D,EAChB,KACF,CACKo2D,IACHA,EAAgBp2D,EAEpB,CAGAm2D,EAAgBA,GAAiBC,CACnC,CAKA,GAAID,EAIF,OAHIA,IAAkBjE,EAAU,IAC9BA,EAAU9c,QAAQ+gB,GAEbL,EAAUK,EAErB,CAkemBE,CAAoB7zD,EAAG4vD,EAAO0D,KAItCC,GAAa56B,EAAOyC,QAAQ,SAAUp7B,EAAE0vD,YAAc,GAAK/2B,EAAOyC,QAAQ,OAAQp7B,EAAE0vD,WAAa,IACpG1vD,EAAE+wD,WAAW,eAAiB,WAAa,GAI7CyC,EAteN,SAAqBxzD,EAAGwzD,EAAU5D,EAAO2D,GACvC,IAAIO,EACFC,EACAC,EACA/qC,EACAiiB,EACA6lB,EAAa,CAAC,EAEdrB,EAAY1vD,EAAE0vD,UAAU3vD,QAG1B,GAAI2vD,EAAU,GACZ,IAAKsE,KAAQh0D,EAAE+wD,WACbA,EAAWiD,EAAKjnD,eAAiB/M,EAAE+wD,WAAWiD,GAMlD,IAHAD,EAAUrE,EAAUl0D,QAGbu4D,GAWL,GAVI/zD,EAAE8wD,eAAeiD,KACnBnE,EAAM5vD,EAAE8wD,eAAeiD,IAAYP,IAIhCtoB,GAAQqoB,GAAavzD,EAAEi0D,aAC1BT,EAAWxzD,EAAEi0D,WAAWT,EAAUxzD,EAAEyvD,WAEtCvkB,EAAO6oB,EACPA,EAAUrE,EAAUl0D,QAGlB,GAAgB,MAAZu4D,EACFA,EAAU7oB,OAGL,GAAa,MAATA,GAAgBA,IAAS6oB,EAAS,CAK3C,KAHAC,EAAOjD,EAAW7lB,EAAO,IAAM6oB,IAAYhD,EAAW,KAAOgD,IAI3D,IAAKD,KAAS/C,EAGZ,IADA9nC,EAAM6qC,EAAMthD,MAAM,MACV,KAAOuhD,IAEbC,EAAOjD,EAAW7lB,EAAO,IAAMjiB,EAAI,KAAO8nC,EAAW,KAAO9nC,EAAI,KACtD,EAEK,IAAT+qC,EACFA,EAAOjD,EAAW+C,IAGa,IAAtB/C,EAAW+C,KACpBC,EAAU9qC,EAAI,GACdymC,EAAU9c,QAAQ3pB,EAAI,KAExB,KACF,CAMN,IAAa,IAAT+qC,EAEF,GAAIA,GAAQh0D,EAAEk0D,OACZV,EAAWQ,EAAKR,QAEhB,IACEA,EAAWQ,EAAKR,EAClB,CAAE,MAAO13D,GACP,MAAO,CACLiyC,MAAO,cACP/wC,MAAOg3D,EAAOl4D,EAAI,sBAAwBovC,EAAO,OAAS6oB,EAE9D,CAGN,CAGJ,MAAO,CACLhmB,MAAO,UACPvzC,KAAMg5D,EAEV,CA+YiBW,CAAYn0D,EAAGwzD,EAAU5D,EAAO2D,GAGvCA,GAEEvzD,EAAEgzD,cACJS,EAAW7D,EAAMwC,kBAAkB,oBAEjCz5B,EAAO03B,aAAaiB,GAAYmC,IAElCA,EAAW7D,EAAMwC,kBAAkB,WAEjCz5B,EAAO23B,KAAKgB,GAAYmC,IAKb,MAAXhB,GAA6B,SAAXzyD,EAAExC,KACtBm1D,EAAa,YAGO,MAAXF,EACTE,EAAa,eAIbA,EAAaa,EAASzlB,MACtBolB,EAAUK,EAASh5D,KAEnB+4D,IADAv2D,EAAQw2D,EAASx2D,UAKnBA,EAAQ21D,GACJF,GAAWE,IACbA,EAAa,QACTF,EAAS,IACXA,EAAS,KAMf7C,EAAM6C,OAASA,EACf7C,EAAM+C,YAAcU,GAAoBV,GAAc,GAGlDY,EACFtlB,EAASkB,YAAY0iB,EAAiB,CAACsB,EAASR,EAAY/C,IAE5D3hB,EAASqB,WAAWuiB,EAAiB,CAACjC,EAAO+C,EAAY31D,IAI3D4yD,EAAMoC,WAAWA,GACjBA,OAAal0D,EACT6zD,GACFG,EAAmB/Z,QAAQwb,EAAY,cAAgB,YAAa,CAAC3D,EAAO5vD,EAAGuzD,EAAYJ,EAAUn2D,IAIvG+0D,EAAiBnkB,SAASikB,EAAiB,CAACjC,EAAO+C,IAC/ChB,IACFG,EAAmB/Z,QAAQ,eAAgB,CAAC6X,EAAO5vD,MAG3C24B,EAAOy3B,QACbz3B,EAAOz7B,MAAM66C,QAAQ,aAG3B,CACA,OAAO6X,CACT,EACAwE,QAAS,SAAU7D,EAAK/1D,EAAM+F,GAC5B,OAAOo4B,EAAOj6B,IAAI6xD,EAAK/1D,EAAM+F,EAAU,OACzC,EACA8zD,UAAW,SAAU9D,EAAKhwD,GACxB,OAAOo4B,EAAOj6B,IAAI6xD,OAAKzyD,EAAWyC,EAAU,SAC9C,IAEFo4B,EAAOc,KAAK,CAAC,MAAO,SAAS,SAAUv0B,EAAIsnC,GACzC7T,EAAO6T,GAAU,SAAU+jB,EAAK/1D,EAAM+F,EAAU/C,GAS9C,OAPImJ,EAAWnM,KACbgD,EAAOA,GAAQ+C,EACfA,EAAW/F,EACXA,OAAOsD,GAIF66B,EAAOy4B,KAAKz4B,EAAO92B,OAAO,CAC/B0uD,IAAKA,EACL/yD,KAAMgvC,EACNijB,SAAUjyD,EACVhD,KAAMA,EACN24D,QAAS5yD,GACRo4B,EAAO4B,cAAcg2B,IAAQA,GAClC,CACF,IACA53B,EAAOu4B,eAAc,SAAUlxD,GAC7B,IAAInF,EACJ,IAAKA,KAAKmF,EAAEizD,QACc,iBAApBp4D,EAAEkS,gBACJ/M,EAAE2wD,YAAc3wD,EAAEizD,QAAQp4D,IAAM,GAGtC,IACA89B,EAAO2lB,SAAW,SAAUiS,EAAKp2B,EAAS/B,GACxC,OAAOO,EAAOy4B,KAAK,CACjBb,IAAKA,EAEL/yD,KAAM,MACNiyD,SAAU,SACVxuB,OAAO,EACPyvB,OAAO,EACPx5B,QAAQ,EAIR65B,WAAY,CACV,cAAe,WAAa,GAE9BkD,WAAY,SAAUT,GACpB76B,EAAOmC,WAAW04B,EAAUr5B,EAAS/B,EACvC,GAEJ,EACAO,EAAOj3B,GAAGG,OAAO,CACfyyD,QAAS,SAAUjW,GACjB,IAAI5H,EAmBJ,OAlBIlyC,KAAK,KACHoC,EAAW03C,KACbA,EAAOA,EAAKljD,KAAKoJ,KAAK,KAIxBkyC,EAAO9d,EAAO0lB,EAAM95C,KAAK,GAAGk3B,eAAe9B,GAAG,GAAGjT,OAAM,GACnDniB,KAAK,GAAGg0B,YACVke,EAAKwI,aAAa16C,KAAK,IAEzBkyC,EAAKj1C,KAAI,WAEP,IADA,IAAIy3B,EAAO10B,KACJ00B,EAAKs7B,mBACVt7B,EAAOA,EAAKs7B,kBAEd,OAAOt7B,CACT,IAAG8lB,OAAOx6C,OAELA,IACT,EACAiwD,UAAW,SAAUnW,GACnB,OAAI13C,EAAW03C,GACN95C,KAAKk1B,MAAK,SAAU5+B,GACzB89B,EAAOp0B,MAAMiwD,UAAUnW,EAAKljD,KAAKoJ,KAAM1J,GACzC,IAEK0J,KAAKk1B,MAAK,WACf,IAAIiR,EAAO/R,EAAOp0B,MAChB0mC,EAAWP,EAAKO,WACdA,EAASlwC,OACXkwC,EAASqpB,QAAQjW,GAEjB3T,EAAKqU,OAAOV,EAEhB,GACF,EACA5H,KAAM,SAAU4H,GACd,IAAIoW,EAAiB9tD,EAAW03C,GAChC,OAAO95C,KAAKk1B,MAAK,SAAU5+B,GACzB89B,EAAOp0B,MAAM+vD,QAAQG,EAAiBpW,EAAKljD,KAAKoJ,KAAM1J,GAAKwjD,EAC7D,GACF,EACAqW,OAAQ,SAAU97B,GAIhB,OAHAr0B,KAAKogC,OAAO/L,GAAUsM,IAAI,QAAQzL,MAAK,WACrCd,EAAOp0B,MAAM66C,YAAY76C,KAAKs7B,WAChC,IACOt7B,IACT,IAEFo0B,EAAOoK,KAAKjF,QAAQkqB,OAAS,SAAU/uB,GACrC,OAAQN,EAAOoK,KAAKjF,QAAQ62B,QAAQ17B,EACtC,EACAN,EAAOoK,KAAKjF,QAAQ62B,QAAU,SAAU17B,GACtC,SAAUA,EAAK2oB,aAAe3oB,EAAK2pB,cAAgB3pB,EAAKurB,iBAAiBzpD,OAC3E,EACA49B,EAAOw3B,aAAayE,IAAM,WACxB,IACE,OAAO,IAAI/0D,EAAOg1D,cACpB,CAAE,MAAO/4D,GAAI,CACf,EACA,IAAIg5D,GAAmB,CAEnB,EAAG,IAGH,KAAM,KAERC,GAAep8B,EAAOw3B,aAAayE,MACrCj9B,EAAQq9B,OAASD,IAAgB,oBAAqBA,GACtDp9B,EAAQy5B,KAAO2D,KAAiBA,GAChCp8B,EAAOw4B,eAAc,SAAUh3B,GAC7B,IAAI55B,EAAU00D,EAGd,GAAIt9B,EAAQq9B,MAAQD,KAAiB56B,EAAQ04B,YAC3C,MAAO,CACLO,KAAM,SAAUH,EAAS3J,GACvB,IAAIzuD,EACF+5D,EAAMz6B,EAAQy6B,MAIhB,GAHAA,EAAIM,KAAK/6B,EAAQ38B,KAAM28B,EAAQo2B,IAAKp2B,EAAQu2B,MAAOv2B,EAAQg7B,SAAUh7B,EAAQ2M,UAGzE3M,EAAQi7B,UACV,IAAKv6D,KAAKs/B,EAAQi7B,UAChBR,EAAI/5D,GAAKs/B,EAAQi7B,UAAUv6D,GAmB/B,IAAKA,KAdDs/B,EAAQq4B,UAAYoC,EAAIrC,kBAC1BqC,EAAIrC,iBAAiBp4B,EAAQq4B,UAQ1Br4B,EAAQ04B,aAAgBI,EAAQ,sBACnCA,EAAQ,oBAAsB,kBAItBA,EACR2B,EAAItC,iBAAiBz3D,EAAGo4D,EAAQp4D,IAIlC0F,EAAW,SAAU/C,GACnB,OAAO,WACD+C,IACFA,EAAW00D,EAAgBL,EAAIx3D,OAASw3D,EAAIz3D,QAAUy3D,EAAIS,QAAUT,EAAIU,UAAYV,EAAIW,mBAAqB,KAChG,UAAT/3D,EACFo3D,EAAIlC,QACc,UAATl1D,EAIiB,kBAAfo3D,EAAInC,OACbnJ,EAAS,EAAG,SAEZA,EAEAsL,EAAInC,OAAQmC,EAAIjC,YAGlBrJ,EAASwL,GAAiBF,EAAInC,SAAWmC,EAAInC,OAAQmC,EAAIjC,WAIxB,UAAhCiC,EAAIY,cAAgB,SAAkD,kBAArBZ,EAAIa,aAA4B,CAChFC,OAAQd,EAAIpB,UACV,CACFn7B,KAAMu8B,EAAIa,cACTb,EAAIvC,yBAGb,CACF,EAGAuC,EAAIx3D,OAASmD,IACb00D,EAAgBL,EAAIz3D,QAAUy3D,EAAIU,UAAY/0D,EAAS,cAKnCzC,IAAhB82D,EAAIS,QACNT,EAAIS,QAAUJ,EAEdL,EAAIW,mBAAqB,WAEA,IAAnBX,EAAIlkB,YAKN7wC,EAAO9B,YAAW,WACZwC,GACF00D,GAEJ,GAEJ,EAIF10D,EAAWA,EAAS,SACpB,IAEEq0D,EAAIxB,KAAKj5B,EAAQ44B,YAAc54B,EAAQ3/B,MAAQ,KACjD,CAAE,MAAOsB,GAEP,GAAIyE,EACF,MAAMzE,CAEV,CACF,EACA42D,MAAO,WACDnyD,GACFA,GAEJ,EAGN,IAGAo4B,EAAOu4B,eAAc,SAAUlxD,GACzBA,EAAE6yD,cACJ7yD,EAAEirC,SAAS3uC,QAAS,EAExB,IAGAq8B,EAAOq4B,UAAU,CACfJ,QAAS,CACPt0D,OAAQ,6FAEV2uC,SAAU,CACR3uC,OAAQ,2BAEVy0D,WAAY,CACV,cAAe,SAAU14B,GAEvB,OADAM,EAAOmC,WAAWzC,GACXA,CACT,KAKJM,EAAOu4B,cAAc,UAAU,SAAUlxD,QACvBlC,IAAZkC,EAAEihC,QACJjhC,EAAEihC,OAAQ,GAERjhC,EAAE6yD,cACJ7yD,EAAExC,KAAO,MAEb,IAGAm7B,EAAOw4B,cAAc,UAAU,SAAUnxD,GAGrC,IAAI1D,EAAQiE,EADd,GAAIP,EAAE6yD,aAAe7yD,EAAE21D,YAErB,MAAO,CACLvC,KAAM,SAAUxmB,EAAG0c,GACjBhtD,EAASq8B,EAAO,YAAYuK,KAAKljC,EAAE21D,aAAe,CAAC,GAAG7wD,KAAK,CACzDrI,QAASuD,EAAE41D,cACX/4D,IAAKmD,EAAEuwD,MACNrZ,GAAG,aAAc32C,EAAW,SAAUs1D,GACvCv5D,EAAOmxC,SACPltC,EAAW,KACPs1D,GACFvM,EAAsB,UAAbuM,EAAIr4D,KAAmB,IAAM,IAAKq4D,EAAIr4D,KAEnD,GAGAjB,EAASyB,KAAKC,YAAY3B,EAAO,GACnC,EACAo2D,MAAO,WACDnyD,GACFA,GAEJ,EAGN,IACA,IAuFMg0C,GAvFFuhB,GAAe,GACjBC,GAAS,oBAGXp9B,EAAOq4B,UAAU,CACfgF,MAAO,WACPC,cAAe,WACb,IAAI11D,EAAWu1D,GAAah6B,OAASnD,EAAO6B,QAAU,IAAMzC,GAAM6D,OAElE,OADAr3B,KAAKhE,IAAY,EACVA,CACT,IAIFo4B,EAAOu4B,cAAc,cAAc,SAAUlxD,EAAGk2D,EAAkBtG,GAChE,IAAIuG,EACFC,EACAC,EACAC,GAAuB,IAAZt2D,EAAEg2D,QAAoBD,GAAO3rD,KAAKpK,EAAEuwD,KAAO,MAA0B,kBAAXvwD,EAAExF,MAA4F,KAAtEwF,EAAE2wD,aAAe,IAAIt/C,QAAQ,sCAA8C0kD,GAAO3rD,KAAKpK,EAAExF,OAAS,QAGjM,GAAI87D,GAA+B,UAAnBt2D,EAAE0vD,UAAU,GAwD1B,OAtDAyG,EAAen2D,EAAEi2D,cAAgBtvD,EAAW3G,EAAEi2D,eAAiBj2D,EAAEi2D,gBAAkBj2D,EAAEi2D,cAGjFK,EACFt2D,EAAEs2D,GAAYt2D,EAAEs2D,GAAU3sD,QAAQosD,GAAQ,KAAOI,IAC5B,IAAZn2D,EAAEg2D,QACXh2D,EAAEuwD,MAAQnD,GAAOhjD,KAAKpK,EAAEuwD,KAAO,IAAM,KAAOvwD,EAAEg2D,MAAQ,IAAMG,GAI9Dn2D,EAAE+wD,WAAW,eAAiB,WAI5B,OAHKsF,GACH19B,EAAO37B,MAAMm5D,EAAe,mBAEvBE,EAAkB,EAC3B,EAGAr2D,EAAE0vD,UAAU,GAAK,OAGjB0G,EAAcv2D,EAAOs2D,GACrBt2D,EAAOs2D,GAAgB,WACrBE,EAAoBh2D,SACtB,EAGAuvD,EAAM5hB,QAAO,gBAESlwC,IAAhBs4D,EACFz9B,EAAO94B,GAAQwsD,WAAW8J,GAI1Bt2D,EAAOs2D,GAAgBC,EAIrBp2D,EAAEm2D,KAEJn2D,EAAEi2D,cAAgBC,EAAiBD,cAGnCH,GAAaz6D,KAAK86D,IAIhBE,GAAqB1vD,EAAWyvD,IAClCA,EAAYC,EAAkB,IAEhCA,EAAoBD,OAAct4D,CACpC,IAGO,QAEX,IAOA65B,EAAQ4+B,qBACFhiB,GAAOh4C,EAASi6D,eAAeD,mBAAmB,IAAIhiB,MACrD3R,UAAY,6BACiB,IAA3B2R,GAAK1U,WAAW9kC,QAOzB49B,EAAOiS,UAAY,SAAUpwC,EAAMq+B,EAAS49B,GAC1C,MAAoB,kBAATj8D,EACF,IAEc,mBAAZq+B,IACT49B,EAAc59B,EACdA,GAAU,GAGPA,IAGClB,EAAQ4+B,qBAMV5tC,GALAkQ,EAAUt8B,EAASi6D,eAAeD,mBAAmB,KAKtC/5D,cAAc,SACxBspC,KAAOvpC,EAASipC,SAASM,KAC9BjN,EAAQ76B,KAAKC,YAAY0qB,IAEzBkQ,EAAUt8B,GAId+5C,GAAWmgB,GAAe,IAD1BC,EAASnsB,EAAW5rB,KAAKnkB,IAKhB,CAACq+B,EAAQr8B,cAAck6D,EAAO,MAEvCA,EAASrgB,GAAc,CAAC77C,GAAOq+B,EAASyd,GACpCA,GAAWA,EAAQv7C,QACrB49B,EAAO2d,GAAS7I,SAEX9U,EAAOY,MAAM,GAAIm9B,EAAO72B,cA5B/B,IAAIlX,EAAM+tC,EAAQpgB,CA6BpB,EAKA3d,EAAOj3B,GAAGy4C,KAAO,SAAUoW,EAAKoG,EAAQp2D,GACtC,IAAIq4B,EACFp7B,EACAg2D,EACA9oB,EAAOnmC,KACP+yC,EAAMiZ,EAAIl/C,QAAQ,KA8CpB,OA7CIimC,GAAO,IACT1e,EAAWszB,GAAiBqE,EAAIxwD,MAAMu3C,IACtCiZ,EAAMA,EAAIxwD,MAAM,EAAGu3C,IAIjB3wC,EAAWgwD,IAEbp2D,EAAWo2D,EACXA,OAAS74D,GAGA64D,GAA4B,kBAAXA,IAC1Bn5D,EAAO,QAILktC,EAAK3vC,OAAS,GAChB49B,EAAOy4B,KAAK,CACVb,IAAKA,EAIL/yD,KAAMA,GAAQ,MACdiyD,SAAU,OACVj1D,KAAMm8D,IACLv5B,MAAK,SAAUq4B,GAEhBjC,EAAWnzD,UACXqqC,EAAK2T,KAAKzlB,EAGVD,EAAO,SAASomB,OAAOpmB,EAAOiS,UAAU6qB,IAAe11B,KAAKnH,GAE5D68B,EAKF,IAAGznB,OAAOztC,GAAY,SAAUqvD,EAAO6C,GACrC/nB,EAAKjR,MAAK,WACRl5B,EAASH,MAAMmE,KAAMivD,GAAY,CAAC5D,EAAM6F,aAAchD,EAAQ7C,GAChE,GACF,GAEKrrD,IACT,EACAo0B,EAAOoK,KAAKjF,QAAQ84B,SAAW,SAAU39B,GACvC,OAAON,EAAOmB,KAAKnB,EAAOiyB,QAAQ,SAAUlpD,GAC1C,OAAOu3B,IAASv3B,EAAGu3B,IACrB,IAAGl+B,MACL,EACA49B,EAAO5S,OAAS,CACd8wC,UAAW,SAAU59B,EAAMkB,EAASt/B,GAClC,IAAIi8D,EACFC,EACAC,EACAC,EACAC,EACAC,EAEAzV,EAAW/oB,EAAO+a,IAAIza,EAAM,YAC5Bm+B,EAAUz+B,EAAOM,GACjBuhB,EAAQ,CAAC,EAGM,WAAbkH,IACFzoB,EAAKua,MAAMkO,SAAW,YAExBwV,EAAYE,EAAQrxC,SACpBixC,EAAYr+B,EAAO+a,IAAIza,EAAM,OAC7Bk+B,EAAax+B,EAAO+a,IAAIza,EAAM,SACI,aAAbyoB,GAAwC,UAAbA,KAA0BsV,EAAYG,GAAY9lD,QAAQ,SAAW,GAMnH4lD,GADAH,EAAcM,EAAQ1V,YACDzf,IACrB80B,EAAUD,EAAYrQ,OAEtBwQ,EAAS5yC,WAAW2yC,IAAc,EAClCD,EAAU1yC,WAAW8yC,IAAe,GAElCxwD,EAAWwzB,KAEbA,EAAUA,EAAQh/B,KAAK89B,EAAMp+B,EAAG89B,EAAO92B,OAAO,CAAC,EAAGq1D,KAEjC,MAAf/8B,EAAQ8H,MACVuY,EAAMvY,IAAM9H,EAAQ8H,IAAMi1B,EAAUj1B,IAAMg1B,GAExB,MAAhB98B,EAAQssB,OACVjM,EAAMiM,KAAOtsB,EAAQssB,KAAOyQ,EAAUzQ,KAAOsQ,GAE3C,UAAW58B,EACbA,EAAQk9B,MAAMl8D,KAAK89B,EAAMuhB,GAEzB4c,EAAQ1jB,IAAI8G,EAEhB,GAEF7hB,EAAOj3B,GAAGG,OAAO,CAEfkkB,OAAQ,SAAUoU,GAEhB,GAAI95B,UAAUtF,OACZ,YAAmB+C,IAAZq8B,EAAwB51B,KAAOA,KAAKk1B,MAAK,SAAU5+B,GACxD89B,EAAO5S,OAAO8wC,UAAUtyD,KAAM41B,EAASt/B,EACzC,IAEF,IAAIy8D,EACFC,EACAt+B,EAAO10B,KAAK,GACd,OAAK00B,EAQAA,EAAKurB,iBAAiBzpD,QAQ3Bu8D,EAAOr+B,EAAKstB,wBACZgR,EAAMt+B,EAAKwC,cAAcuG,YAClB,CACLC,IAAKq1B,EAAKr1B,IAAMs1B,EAAIC,YACpB/Q,KAAM6Q,EAAK7Q,KAAO8Q,EAAIE,cAXf,CACLx1B,IAAK,EACLwkB,KAAM,QAXV,CAsBF,EAGA/E,SAAU,WACR,GAAKn9C,KAAK,GAAV,CAGA,IAAImzD,EACF3xC,EACAqS,EACAa,EAAO10B,KAAK,GACZozD,EAAe,CACb11B,IAAK,EACLwkB,KAAM,GAIV,GAAqC,UAAjC9tB,EAAO+a,IAAIza,EAAM,YAEnBlT,EAASkT,EAAKstB,4BACT,CAOL,IANAxgC,EAASxhB,KAAKwhB,SAIdqS,EAAMa,EAAKwC,cACXi8B,EAAez+B,EAAKy+B,cAAgBt/B,EAAI4C,gBACjC08B,IAAiBA,IAAiBt/B,EAAImc,MAAQmjB,IAAiBt/B,EAAI4C,kBAA6D,WAAzCrC,EAAO+a,IAAIgkB,EAAc,aACrHA,EAAeA,EAAan/B,WAE1Bm/B,GAAgBA,IAAiBz+B,GAAkC,IAA1By+B,EAAa9/B,YAExD+/B,EAAeh/B,EAAO++B,GAAc3xC,UACvBkc,KAAOtJ,EAAO+a,IAAIgkB,EAAc,kBAAkB,GAC/DC,EAAalR,MAAQ9tB,EAAO+a,IAAIgkB,EAAc,mBAAmB,GAErE,CAGA,MAAO,CACLz1B,IAAKlc,EAAOkc,IAAM01B,EAAa11B,IAAMtJ,EAAO+a,IAAIza,EAAM,aAAa,GACnEwtB,KAAM1gC,EAAO0gC,KAAOkR,EAAalR,KAAO9tB,EAAO+a,IAAIza,EAAM,cAAc,GAnCzE,CAqCF,EAWAy+B,aAAc,WACZ,OAAOnzD,KAAK/C,KAAI,WAEd,IADA,IAAIk2D,EAAenzD,KAAKmzD,aACjBA,GAAyD,WAAzC/+B,EAAO+a,IAAIgkB,EAAc,aAC9CA,EAAeA,EAAaA,aAE9B,OAAOA,GAAgB18B,EACzB,GACF,IAIFrC,EAAOc,KAAK,CACV6tB,WAAY,cACZD,UAAW,gBACV,SAAU7a,EAAQ1nC,GACnB,IAAIm9B,EAAM,gBAAkBn9B,EAC5B6zB,EAAOj3B,GAAG8qC,GAAU,SAAUznC,GAC5B,OAAO6rC,GAAOrsC,MAAM,SAAU00B,EAAMuT,EAAQznC,GAE1C,IAAIwyD,EAMJ,GALI1/B,EAASoB,GACXs+B,EAAMt+B,EACqB,IAAlBA,EAAKrB,WACd2/B,EAAMt+B,EAAK+I,kBAEDlkC,IAARiH,EACF,OAAOwyD,EAAMA,EAAIzyD,GAAQm0B,EAAKuT,GAE5B+qB,EACFA,EAAIK,SAAU31B,EAAYs1B,EAAIE,YAAV1yD,EAAuBk9B,EAAMl9B,EAAMwyD,EAAIC,aAE3Dv+B,EAAKuT,GAAUznC,CAEnB,GAAGynC,EAAQznC,EAAK1E,UAAUtF,OAC5B,CACF,IAQA49B,EAAOc,KAAK,CAAC,MAAO,SAAS,SAAUv0B,EAAIJ,GACzC6zB,EAAOgsB,SAAS7/C,GAAQ87C,GAAajpB,EAAQuqB,eAAe,SAAUjpB,EAAMonB,GAC1E,GAAIA,EAIF,OAHAA,EAAWD,GAAOnnB,EAAMn0B,GAGjB86C,GAAUx1C,KAAKi2C,GAAY1nB,EAAOM,GAAMyoB,WAAW58C,GAAQ,KAAOu7C,CAE7E,GACF,IAGA1nB,EAAOc,KAAK,CACVo+B,OAAQ,SACRC,MAAO,UACN,SAAUl6D,EAAMJ,GACjBm7B,EAAOc,KAAK,CACVktB,QAAS,QAAU/oD,EACnBmuC,QAASvuC,EACT,GAAI,QAAUI,IACb,SAAUm6D,EAAcC,GAEzBr/B,EAAOj3B,GAAGs2D,GAAY,SAAUtR,EAAQ5nD,GACtC,IAAI+xC,EAAYxwC,UAAUtF,SAAWg9D,GAAkC,mBAAXrR,GAC1DxC,EAAQ6T,KAA4B,IAAXrR,IAA6B,IAAV5nD,EAAiB,SAAW,UAC1E,OAAO8xC,GAAOrsC,MAAM,SAAU00B,EAAMz7B,EAAMsB,GACxC,IAAIs5B,EACJ,OAAIP,EAASoB,GAE0B,IAA9B++B,EAAS3mD,QAAQ,SAAiB4nB,EAAK,QAAUr7B,GAAQq7B,EAAK18B,SAASy+B,gBAAgB,SAAWp9B,GAIrF,IAAlBq7B,EAAKrB,UACPQ,EAAMa,EAAK+B,gBAIJvyB,KAAKI,IAAIowB,EAAKsb,KAAK,SAAW32C,GAAOw6B,EAAI,SAAWx6B,GAAOq7B,EAAKsb,KAAK,SAAW32C,GAAOw6B,EAAI,SAAWx6B,GAAOw6B,EAAI,SAAWx6B,UAEpHE,IAAVgB,EAEP65B,EAAO+a,IAAIza,EAAMz7B,EAAM0mD,GAEvBvrB,EAAO6a,MAAMva,EAAMz7B,EAAMsB,EAAOolD,EAClC,GAAG1mD,EAAMqzC,EAAY6V,OAAS5oD,EAAW+yC,EAC3C,CACF,GACF,IACAlY,EAAOc,KAAK,CAAC,YAAa,WAAY,eAAgB,YAAa,cAAe,aAAa,SAAUv0B,EAAI1H,GAC3Gm7B,EAAOj3B,GAAGlE,GAAQ,SAAUkE,GAC1B,OAAO6C,KAAK2yC,GAAG15C,EAAMkE,EACvB,CACF,IACAi3B,EAAOj3B,GAAGG,OAAO,CACfxC,KAAM,SAAU83C,EAAO38C,EAAMkH,GAC3B,OAAO6C,KAAK2yC,GAAGC,EAAO,KAAM38C,EAAMkH,EACpC,EACAu2D,OAAQ,SAAU9gB,EAAOz1C,GACvB,OAAO6C,KAAK+yC,IAAIH,EAAO,KAAMz1C,EAC/B,EACAw2D,SAAU,SAAUt/B,EAAUue,EAAO38C,EAAMkH,GACzC,OAAO6C,KAAK2yC,GAAGC,EAAOve,EAAUp+B,EAAMkH,EACxC,EACAy2D,WAAY,SAAUv/B,EAAUue,EAAOz1C,GAErC,OAA4B,IAArBrB,UAAUtF,OAAewJ,KAAK+yC,IAAI1e,EAAU,MAAQr0B,KAAK+yC,IAAIH,EAAOve,GAAY,KAAMl3B,EAC/F,EACA02D,MAAO,SAAUC,EAAQC,GACvB,OAAO/zD,KAAK2yC,GAAG,aAAcmhB,GAAQnhB,GAAG,aAAcohB,GAASD,EACjE,IAEF1/B,EAAOc,KAAK,wLAAoMjnB,MAAM,MAAM,SAAUtN,EAAItH,GAExO+6B,EAAOj3B,GAAG9D,GAAQ,SAAUpD,EAAMkH,GAChC,OAAOrB,UAAUtF,OAAS,EAAIwJ,KAAK2yC,GAAGt5C,EAAM,KAAMpD,EAAMkH,GAAM6C,KAAKwzC,QAAQn6C,EAC7E,CACF,IAMA,IAAI26D,GAAQ,sDAMZ5/B,EAAO6/B,MAAQ,SAAU92D,EAAIm3B,GAC3B,IAAI5P,EAAK7iB,EAAMoyD,EASf,GARuB,kBAAZ3/B,IACT5P,EAAMvnB,EAAGm3B,GACTA,EAAUn3B,EACVA,EAAKunB,GAKFtiB,EAAWjF,GAYhB,OAPA0E,EAAOrG,EAAM5E,KAAKkF,UAAW,GAC7Bm4D,EAAQ,WACN,OAAO92D,EAAGtB,MAAMy4B,GAAWt0B,KAAM6B,EAAKgR,OAAOrX,EAAM5E,KAAKkF,YAC1D,EAGAm4D,EAAM58B,KAAOl6B,EAAGk6B,KAAOl6B,EAAGk6B,MAAQjD,EAAOiD,OAClC48B,CACT,EACA7/B,EAAO8/B,UAAY,SAAUC,GACvBA,EACF//B,EAAO6X,YAEP7X,EAAOkS,OAAM,EAEjB,EACAlS,EAAOn4B,QAAUE,MAAMF,QACvBm4B,EAAOggC,UAAYxmB,KAAKC,MACxBzZ,EAAOK,SAAWA,EAClBL,EAAOhyB,WAAaA,EACpBgyB,EAAOd,SAAWA,EAClBc,EAAO4Y,UAAYA,GACnB5Y,EAAOn7B,KAAOi7B,EACdE,EAAO1wB,IAAM1G,KAAK0G,IAClB0wB,EAAOigC,UAAY,SAAU33D,GAI3B,IAAIzD,EAAOm7B,EAAOn7B,KAAKyD,GACvB,OAAiB,WAATzD,GAA8B,WAATA,KAI5BqG,MAAM5C,EAAMojB,WAAWpjB,GAC1B,EACA03B,EAAOkgC,KAAO,SAAUxgC,GACtB,OAAe,MAARA,EAAe,IAAMA,EAAO,IAAI1uB,QAAQ4uD,GAAO,KACxD,OAkBG,KAFoB,EAAF,WACjB,OAAO5/B,CACR,UAFgB,OAEhB,aAEH,IAEEmgC,GAAUj5D,EAAO84B,OAEjBogC,GAAKl5D,EAAOm5D,EAiBd,OAhBArgC,EAAOsgC,WAAa,SAAU3+B,GAO5B,OANIz6B,EAAOm5D,IAAMrgC,IACf94B,EAAOm5D,EAAID,IAETz+B,GAAQz6B,EAAO84B,SAAWA,IAC5B94B,EAAO84B,OAASmgC,IAEXngC,CACT,EAKwB,qBAAbxB,IACTt3B,EAAO84B,OAAS94B,EAAOm5D,EAAIrgC,GAEtBA,CACT,G,oGCvyRA,IAAIugC,EAA6B,WAC/B,SAASA,EAAcC,EAAaC,EAAWC,GAC7C90D,KAAK40D,YAAcA,EACnB50D,KAAK60D,UAAYA,EACjB70D,KAAK80D,aAAeA,EACpB90D,KAAK+0D,kBAAoB,IAAIC,GAC/B,CAsCA,OArCAL,EAAcj+D,UAAUu+D,QAAU,WAChCj1D,KAAK40D,YAAYj3B,iBAAiB39B,KAAK60D,UAAW70D,KAAMA,KAAK80D,aAC/D,EACAH,EAAcj+D,UAAUw+D,WAAa,WACnCl1D,KAAK40D,YAAY7oB,oBAAoB/rC,KAAK60D,UAAW70D,KAAMA,KAAK80D,aAClE,EAGAH,EAAcj+D,UAAUy+D,iBAAmB,SAAUC,GACnDp1D,KAAK+0D,kBAAkBziD,IAAI8iD,EAC7B,EAEAT,EAAcj+D,UAAU2+D,oBAAsB,SAAUD,GACtDp1D,KAAK+0D,kBAAkBO,OAAOF,EAChC,EACAT,EAAcj+D,UAAU6+D,YAAc,SAAU58D,GAE9C,IADA,IAAI68D,EAwBR,SAAqB78D,GACnB,GAAI,gCAAiCA,EACnC,OAAOA,EAEP,IAAI88D,EAA6B98D,EAAM26C,yBACvC,OAAO78C,OAAO46B,OAAO14B,EAAO,CAC1B+8D,6BAA6B,EAC7BpiB,yBAA0B,WACxBtzC,KAAK01D,6BAA8B,EACnCD,EAA2B7+D,KAAKoJ,KAClC,GAGN,CArCwB21D,CAAYh9D,GACvBgI,EAAK,EAAGkM,EAAK7M,KAAK41D,SAAUj1D,EAAKkM,EAAGrW,OAAQmK,IAAM,CACzD,IAAIy0D,EAAUvoD,EAAGlM,GACjB,GAAI60D,EAAcE,4BAChB,MAEAN,EAAQG,YAAYC,EAExB,CACF,EACA/+D,OAAOwD,eAAe06D,EAAcj+D,UAAW,WAAY,CACzDyD,IAAK,WACH,OAAOgC,MAAMmE,KAAKN,KAAK+0D,mBAAmB1rD,MAAK,SAAU64C,EAAMlF,GAC7D,IAAI6Y,EAAY3T,EAAKl0B,MACnB8nC,EAAa9Y,EAAMhvB,MACrB,OAAO6nC,EAAYC,GAAc,EAAID,EAAYC,EAAa,EAAI,CACpE,GACF,EACA57D,YAAY,EACZmzC,cAAc,IAETsnB,CACT,CA7CiC,GCCjC,IAAI,EAA0B,WAC5B,SAASoB,EAAWC,GAClBh2D,KAAKg2D,YAAcA,EACnBh2D,KAAKi2D,kBAAoB,IAAIC,IAC7Bl2D,KAAKm2D,SAAU,CACjB,CAgFA,OA/EAJ,EAAWr/D,UAAUypC,MAAQ,WACtBngC,KAAKm2D,UACRn2D,KAAKm2D,SAAU,EACfn2D,KAAKo2D,eAAe99C,SAAQ,SAAU+9C,GACpC,OAAOA,EAAcpB,SACvB,IAEJ,EACAc,EAAWr/D,UAAU43C,KAAO,WACtBtuC,KAAKm2D,UACPn2D,KAAKm2D,SAAU,EACfn2D,KAAKo2D,eAAe99C,SAAQ,SAAU+9C,GACpC,OAAOA,EAAcnB,YACvB,IAEJ,EACAz+D,OAAOwD,eAAe87D,EAAWr/D,UAAW,iBAAkB,CAC5DyD,IAAK,WACH,OAAOgC,MAAMmE,KAAKN,KAAKi2D,kBAAkBh+C,UAAUq+C,QAAO,SAAUC,EAAWt5D,GAC7E,OAAOs5D,EAAU1jD,OAAO1W,MAAMmE,KAAKrD,EAAIgb,UACzC,GAAG,GACL,EACA/d,YAAY,EACZmzC,cAAc,IAIhB0oB,EAAWr/D,UAAUy+D,iBAAmB,SAAUC,GAChDp1D,KAAKw2D,6BAA6BpB,GAASD,iBAAiBC,EAC9D,EAEAW,EAAWr/D,UAAU2+D,oBAAsB,SAAUD,GACnDp1D,KAAKw2D,6BAA6BpB,GAASC,oBAAoBD,EACjE,EAEAW,EAAWr/D,UAAU+/D,YAAc,SAAUh+D,EAAOW,EAASw9C,QAC5C,IAAXA,IACFA,EAAS,CAAC,GAEZ52C,KAAKg2D,YAAYS,YAAYh+D,EAAO,SAAWW,EAASw9C,EAC1D,EACAmf,EAAWr/D,UAAU8/D,6BAA+B,SAAUpB,GAC5D,IAAIR,EAAcQ,EAAQR,YACxBC,EAAYO,EAAQP,UACpBC,EAAeM,EAAQN,aACzB,OAAO90D,KAAK02D,mBAAmB9B,EAAaC,EAAWC,EACzD,EACAiB,EAAWr/D,UAAUggE,mBAAqB,SAAU9B,EAAaC,EAAWC,GAC1E,IAAI6B,EAAmB32D,KAAK42D,oCAAoChC,GAC5DiC,EAAW72D,KAAK62D,SAAShC,EAAWC,GACpCuB,EAAgBM,EAAiBx8D,IAAI08D,GAKzC,OAJKR,IACHA,EAAgBr2D,KAAK82D,oBAAoBlC,EAAaC,EAAWC,GACjE6B,EAAiBr0D,IAAIu0D,EAAUR,IAE1BA,CACT,EACAN,EAAWr/D,UAAUogE,oBAAsB,SAAUlC,EAAaC,EAAWC,GAC3E,IAAIuB,EAAgB,IAAI1B,EAAcC,EAAaC,EAAWC,GAI9D,OAHI90D,KAAKm2D,SACPE,EAAcpB,UAEToB,CACT,EACAN,EAAWr/D,UAAUkgE,oCAAsC,SAAUhC,GACnE,IAAI+B,EAAmB32D,KAAKi2D,kBAAkB97D,IAAIy6D,GAKlD,OAJK+B,IACHA,EAAmB,IAAIT,IACvBl2D,KAAKi2D,kBAAkB3zD,IAAIsyD,EAAa+B,IAEnCA,CACT,EACAZ,EAAWr/D,UAAUmgE,SAAW,SAAUhC,EAAWC,GACnD,IAAI/yC,EAAQ,CAAC8yC,GAIb,OAHAp+D,OAAOwL,KAAK6yD,GAAczrD,OAAOiP,SAAQ,SAAUzd,GACjDknB,EAAMjrB,MAAWg+D,EAAaj6D,GAAO,GAAK,KAAOA,EACnD,IACOknB,EAAMhgB,KAAK,IACpB,EACOg0D,CACT,CAtF8B,GCA1BgB,EAAoB,4DAYxB,SAASC,EAAiBC,GACxB,MAAuB,UAAnBA,EACK37D,OACqB,YAAnB27D,EACFj/D,cADF,CAGT,CClBA,IAAI,EAAsB,WACxB,SAASk/D,EAAOC,EAASnpC,EAAOopC,GAC9Bp3D,KAAKm3D,QAAUA,EACfn3D,KAAKguB,MAAQA,EACbhuB,KAAK40D,YAAcwC,EAAWxC,aAAeuC,EAC7Cn3D,KAAK60D,UAAYuC,EAAWvC,WA0CzB,SAAuCsC,GAC5C,IAAIE,EAAUF,EAAQE,QAAQ7uD,cAC9B,GAAI6uD,KAAWC,EACb,OAAOA,EAAkBD,GAASF,EAEtC,CA/C6CI,CAA8BJ,IAAY1+D,EAAM,sBACzFuH,KAAK80D,aAAesC,EAAWtC,cAAgB,CAAC,EAChD90D,KAAKq5B,WAAa+9B,EAAW/9B,YAAc5gC,EAAM,sBACjDuH,KAAKw3D,WAAaJ,EAAWI,YAAc/+D,EAAM,sBACnD,CAeA,OAdAy+D,EAAOO,SAAW,SAAU5yD,GAC1B,OAAO,IAAI7E,KAAK6E,EAAMsyD,QAAStyD,EAAMmpB,ODVG0pC,ECUgC7yD,EAAM2iC,QDPzE,CACLotB,YAAaoC,GAFXh1C,EADS01C,EAAiBpD,OACTnvD,MAAM4xD,IAAsB,IAET,IACtClC,UAAW7yC,EAAQ,GACnB8yC,aAAc9yC,EAAQ,IAYC8yC,EAZsB9yC,EAAQ,GAahD8yC,EAAa7mD,MAAM,KAAKqoD,QAAO,SAAU1gC,EAAS/wB,GACvD,IAAIgI,EACJ,OAAOpW,OAAO46B,OAAOuE,IAAU/oB,EAAK,CAAC,GAAMhI,EAAMO,QAAQ,KAAM,MAAQ,KAAKS,KAAKhB,GAAQgI,GAC3F,GAAG,CAAC,IAhByD,CAAC,EAC5DwsB,WAAYrX,EAAQ,GACpBw1C,WAAYx1C,EAAQ,MARjB,IAAqC01C,EAkBjB5C,EAhBrB9yC,CCSJ,EACAk1C,EAAOxgE,UAAU0F,SAAW,WAC1B,IAAIu7D,EAAkB33D,KAAKi3D,gBAAkB,IAAMj3D,KAAKi3D,gBAAkB,GAC1E,MAAO,GAAKj3D,KAAK60D,UAAY8C,EAAkB,KAAO33D,KAAKq5B,WAAa,IAAMr5B,KAAKw3D,UACrF,EACA/gE,OAAOwD,eAAei9D,EAAOxgE,UAAW,kBAAmB,CACzDyD,IAAK,WACH,ODM+By6D,ECNH50D,KAAK40D,cDOlBt5D,OACV,SACEs5D,GAAe58D,SACjB,gBADF,EAHF,IAA8B48D,CCLjC,EACA16D,YAAY,EACZmzC,cAAc,IAET6pB,CACT,CAzB0B,GA2BtBI,EAAoB,CACtB,EAAK,SAAU//D,GACb,MAAO,OACT,EACA,OAAU,SAAUA,GAClB,MAAO,OACT,EACA,KAAQ,SAAUA,GAChB,MAAO,QACT,EACA,MAAS,SAAUA,GACjB,MAAiC,UAA1BA,EAAEw8B,aAAa,QAAsB,QAAU,OACxD,EACA,OAAU,SAAUx8B,GAClB,MAAO,QACT,EACA,SAAY,SAAUA,GACpB,MAAO,OACT,GAQF,SAASkB,EAAMW,GACb,MAAM,IAAIV,MAAMU,EAClB,CCxDA,IAAIw+D,EAAuB,WACzB,SAASA,EAAQtjC,EAASujC,GACxB73D,KAAKs0B,QAAUA,EACft0B,KAAK63D,OAASA,CAChB,CA6GA,OA5GAphE,OAAOwD,eAAe29D,EAAQlhE,UAAW,QAAS,CAChDyD,IAAK,WACH,OAAO6F,KAAK63D,OAAO7pC,KACrB,EACA9zB,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe29D,EAAQlhE,UAAW,cAAe,CACtDyD,IAAK,WACH,OAAO6F,KAAK63D,OAAOjD,WACrB,EACA16D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe29D,EAAQlhE,UAAW,eAAgB,CACvDyD,IAAK,WACH,OAAO6F,KAAK63D,OAAO/C,YACrB,EACA56D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe29D,EAAQlhE,UAAW,aAAc,CACrDyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ+E,UACtB,EACAn/B,YAAY,EACZmzC,cAAc,IAEhBuqB,EAAQlhE,UAAU6+D,YAAc,SAAU58D,GACpCqH,KAAK83D,qBAAqBn/D,IAC5BqH,KAAK+3D,gBAAgBp/D,EAEzB,EACAlC,OAAOwD,eAAe29D,EAAQlhE,UAAW,YAAa,CACpDyD,IAAK,WACH,OAAO6F,KAAK63D,OAAOhD,SACrB,EACA36D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe29D,EAAQlhE,UAAW,SAAU,CACjDyD,IAAK,WACH,IAAI8tC,EAASjoC,KAAKg4D,WAAWh4D,KAAKw3D,YAClC,GAAqB,mBAAVvvB,EACT,OAAOA,EAET,MAAM,IAAIvvC,MAAM,WAAcsH,KAAK63D,OAAS,kCAAsC73D,KAAKw3D,WAAa,IACtG,EACAt9D,YAAY,EACZmzC,cAAc,IAEhBuqB,EAAQlhE,UAAUqhE,gBAAkB,SAAUp/D,GAC5C,IACEqH,KAAKioC,OAAOrxC,KAAKoJ,KAAKg4D,WAAYr/D,EACpC,CAAE,MAAOF,GACP,IAAIoU,EAAK7M,KAKL42C,EAAS,CACXvd,WALaxsB,EAAGwsB,WAMhB2+B,WALanrD,EAAGmrD,WAMhBb,QALUtqD,EAAGsqD,QAMbnpC,MALQnhB,EAAGmhB,MAMXr1B,MAAOA,GAETqH,KAAKs0B,QAAQmiC,YAAYh+D,EAAO,oBAAuBuH,KAAK63D,OAAS,IAAMjhB,EAC7E,CACF,EACAghB,EAAQlhE,UAAUohE,qBAAuB,SAAUn/D,GACjD,IAAIi8D,EAAcj8D,EAAMQ,OACxB,OAAI6G,KAAKm3D,UAAYvC,IAEVA,aAAuBqD,SAAWj4D,KAAKm3D,QAAQz/B,SAASk9B,GAC1D50D,KAAKm8B,MAAM+7B,gBAAgBtD,GAE3B50D,KAAKm8B,MAAM+7B,gBAAgBl4D,KAAK63D,OAAOV,SAElD,EACA1gE,OAAOwD,eAAe29D,EAAQlhE,UAAW,aAAc,CACrDyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ0jC,UACtB,EACA99D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe29D,EAAQlhE,UAAW,aAAc,CACrDyD,IAAK,WACH,OAAO6F,KAAK63D,OAAOL,UACrB,EACAt9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe29D,EAAQlhE,UAAW,UAAW,CAClDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMg7B,OACpB,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe29D,EAAQlhE,UAAW,QAAS,CAChDyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ6H,KACtB,EACAjiC,YAAY,EACZmzC,cAAc,IAETuqB,CACT,CAlH2B,GCAvBO,EAA+B,WACjC,SAASA,EAAgBhB,EAASxD,GAChC,IAAIyE,EAAQp4D,KACZA,KAAKm3D,QAAUA,EACfn3D,KAAKm2D,SAAU,EACfn2D,KAAK2zD,SAAWA,EAChB3zD,KAAKy+B,SAAW,IAAIu2B,IACpBh1D,KAAKq4D,iBAAmB,IAAIC,kBAAiB,SAAUC,GACrD,OAAOH,EAAMI,iBAAiBD,EAChC,GACF,CAgIA,OA/HAJ,EAAgBzhE,UAAUypC,MAAQ,WAC3BngC,KAAKm2D,UACRn2D,KAAKm2D,SAAU,EACfn2D,KAAKq4D,iBAAiBI,QAAQz4D,KAAKm3D,QAAS,CAC1C79B,YAAY,EACZo/B,WAAW,EACXC,SAAS,IAEX34D,KAAK44D,UAET,EACAT,EAAgBzhE,UAAU43C,KAAO,WAC3BtuC,KAAKm2D,UACPn2D,KAAKq4D,iBAAiBQ,cACtB74D,KAAKq4D,iBAAiBnD,aACtBl1D,KAAKm2D,SAAU,EAEnB,EACAgC,EAAgBzhE,UAAUkiE,QAAU,WAClC,GAAI54D,KAAKm2D,QAAS,CAEhB,IADA,IAAIn0C,EAAU,IAAIgzC,IAAIh1D,KAAK84D,uBAClBn4D,EAAK,EAAGkM,EAAK1Q,MAAMmE,KAAKN,KAAKy+B,UAAW99B,EAAKkM,EAAGrW,OAAQmK,IAAM,CACrE,IAAIw2D,EAAUtqD,EAAGlM,GACZqhB,EAAQ8e,IAAIq2B,IACfn3D,KAAK+4D,cAAc5B,EAEvB,CACA,IAAK,IAAI6B,EAAK,EAAGC,EAAK98D,MAAMmE,KAAK0hB,GAAUg3C,EAAKC,EAAGziE,OAAQwiE,IAAM,CAC3D7B,EAAU8B,EAAGD,GACjBh5D,KAAKk5D,WAAW/B,EAClB,CACF,CACF,EAEAgB,EAAgBzhE,UAAU8hE,iBAAmB,SAAUD,GACrD,GAAIv4D,KAAKm2D,QACP,IAAK,IAAIx1D,EAAK,EAAGw4D,EAAcZ,EAAW53D,EAAKw4D,EAAY3iE,OAAQmK,IAAM,CACvE,IAAIy4D,EAAWD,EAAYx4D,GAC3BX,KAAKq5D,gBAAgBD,EACvB,CAEJ,EACAjB,EAAgBzhE,UAAU2iE,gBAAkB,SAAUD,GAC/B,cAAjBA,EAASngE,KACX+G,KAAKs5D,uBAAuBF,EAASjgE,OAAQigE,EAASG,eAC5B,aAAjBH,EAASngE,OAClB+G,KAAKw5D,oBAAoBJ,EAASK,cAClCz5D,KAAK05D,kBAAkBN,EAASO,YAEpC,EACAxB,EAAgBzhE,UAAU4iE,uBAAyB,SAAU1lC,EAAM2lC,GACjE,IAAIpC,EAAUvjC,EACV5zB,KAAKy+B,SAASqC,IAAIq2B,GAChBn3D,KAAK2zD,SAASiG,yBAA2B55D,KAAK65D,aAAa1C,GAC7Dn3D,KAAK2zD,SAASiG,wBAAwBzC,EAASoC,GAE/Cv5D,KAAK+4D,cAAc5B,GAEZn3D,KAAK65D,aAAa1C,IAC3Bn3D,KAAKk5D,WAAW/B,EAEpB,EACAgB,EAAgBzhE,UAAU8iE,oBAAsB,SAAUnnB,GACxD,IAAK,IAAI1xC,EAAK,EAAGkM,EAAK1Q,MAAMmE,KAAK+xC,GAAQ1xC,EAAKkM,EAAGrW,OAAQmK,IAAM,CAC7D,IAAIizB,EAAO/mB,EAAGlM,GACVw2D,EAAUn3D,KAAK85D,gBAAgBlmC,GAC/BujC,GACFn3D,KAAK+5D,YAAY5C,EAASn3D,KAAK+4D,cAEnC,CACF,EACAZ,EAAgBzhE,UAAUgjE,kBAAoB,SAAUrnB,GACtD,IAAK,IAAI1xC,EAAK,EAAGkM,EAAK1Q,MAAMmE,KAAK+xC,GAAQ1xC,EAAKkM,EAAGrW,OAAQmK,IAAM,CAC7D,IAAIizB,EAAO/mB,EAAGlM,GACVw2D,EAAUn3D,KAAK85D,gBAAgBlmC,GAC/BujC,GAAWn3D,KAAKg6D,gBAAgB7C,IAClCn3D,KAAK+5D,YAAY5C,EAASn3D,KAAKk5D,WAEnC,CACF,EAEAf,EAAgBzhE,UAAUmjE,aAAe,SAAU1C,GACjD,OAAOn3D,KAAK2zD,SAASkG,aAAa1C,EACpC,EACAgB,EAAgBzhE,UAAUoiE,oBAAsB,SAAUmB,GAIxD,YAHa,IAATA,IACFA,EAAOj6D,KAAKm3D,SAEPn3D,KAAK2zD,SAASmF,oBAAoBmB,EAC3C,EACA9B,EAAgBzhE,UAAUqjE,YAAc,SAAUE,EAAMC,GACtD,IAAK,IAAIv5D,EAAK,EAAGkM,EAAK7M,KAAK84D,oBAAoBmB,GAAOt5D,EAAKkM,EAAGrW,OAAQmK,IAAM,CAC1E,IAAIw2D,EAAUtqD,EAAGlM,GACjBu5D,EAAUtjE,KAAKoJ,KAAMm3D,EACvB,CACF,EACAgB,EAAgBzhE,UAAUojE,gBAAkB,SAAUlmC,GACpD,GAAIA,EAAKP,UAAY8mC,KAAKC,aACxB,OAAOxmC,CAEX,EACAukC,EAAgBzhE,UAAUsjE,gBAAkB,SAAU7C,GACpD,OAAIA,EAAQkD,aAAer6D,KAAKm3D,QAAQkD,aAG/Br6D,KAAKm3D,QAAQz/B,SAASy/B,EAEjC,EAEAgB,EAAgBzhE,UAAUwiE,WAAa,SAAU/B,GAC1Cn3D,KAAKy+B,SAASqC,IAAIq2B,IACjBn3D,KAAKg6D,gBAAgB7C,KACvBn3D,KAAKy+B,SAASnsB,IAAI6kD,GACdn3D,KAAK2zD,SAAS2G,gBAChBt6D,KAAK2zD,SAAS2G,eAAenD,GAIrC,EACAgB,EAAgBzhE,UAAUqiE,cAAgB,SAAU5B,GAC9Cn3D,KAAKy+B,SAASqC,IAAIq2B,KACpBn3D,KAAKy+B,SAAS62B,OAAO6B,GACjBn3D,KAAK2zD,SAAS4G,kBAChBv6D,KAAK2zD,SAAS4G,iBAAiBpD,GAGrC,EACOgB,CACT,CA3ImC,GCC/B,EAAiC,WACnC,SAASqC,EAAkBrD,EAASoC,EAAe5F,GACjD3zD,KAAKu5D,cAAgBA,EACrBv5D,KAAK2zD,SAAWA,EAChB3zD,KAAKy6D,gBAAkB,IAAItC,EAAgBhB,EAASn3D,KACtD,CAuDA,OAtDAvJ,OAAOwD,eAAeugE,EAAkB9jE,UAAW,UAAW,CAC5DyD,IAAK,WACH,OAAO6F,KAAKy6D,gBAAgBtD,OAC9B,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeugE,EAAkB9jE,UAAW,WAAY,CAC7DyD,IAAK,WACH,MAAO,IAAM6F,KAAKu5D,cAAgB,GACpC,EACAr/D,YAAY,EACZmzC,cAAc,IAEhBmtB,EAAkB9jE,UAAUypC,MAAQ,WAClCngC,KAAKy6D,gBAAgBt6B,OACvB,EACAq6B,EAAkB9jE,UAAU43C,KAAO,WACjCtuC,KAAKy6D,gBAAgBnsB,MACvB,EACAksB,EAAkB9jE,UAAUkiE,QAAU,WACpC54D,KAAKy6D,gBAAgB7B,SACvB,EACAniE,OAAOwD,eAAeugE,EAAkB9jE,UAAW,UAAW,CAC5DyD,IAAK,WACH,OAAO6F,KAAKy6D,gBAAgBtE,OAC9B,EACAj8D,YAAY,EACZmzC,cAAc,IAGhBmtB,EAAkB9jE,UAAUmjE,aAAe,SAAU1C,GACnD,OAAOA,EAAQuD,aAAa16D,KAAKu5D,cACnC,EACAiB,EAAkB9jE,UAAUoiE,oBAAsB,SAAUmB,GAC1D,IAAI90D,EAAQnF,KAAK65D,aAAaI,GAAQ,CAACA,GAAQ,GAC3Cj4C,EAAU7lB,MAAMmE,KAAK25D,EAAK39B,iBAAiBt8B,KAAKq0B,WACpD,OAAOlvB,EAAM0N,OAAOmP,EACtB,EACAw4C,EAAkB9jE,UAAU4jE,eAAiB,SAAUnD,GACjDn3D,KAAK2zD,SAASgH,yBAChB36D,KAAK2zD,SAASgH,wBAAwBxD,EAASn3D,KAAKu5D,cAExD,EACAiB,EAAkB9jE,UAAU6jE,iBAAmB,SAAUpD,GACnDn3D,KAAK2zD,SAASiH,2BAChB56D,KAAK2zD,SAASiH,0BAA0BzD,EAASn3D,KAAKu5D,cAE1D,EACAiB,EAAkB9jE,UAAUkjE,wBAA0B,SAAUzC,EAASoC,GACnEv5D,KAAK2zD,SAASkH,8BAAgC76D,KAAKu5D,eAAiBA,GACtEv5D,KAAK2zD,SAASkH,6BAA6B1D,EAASoC,EAExD,EACOiB,CACT,CA7DqC,GCDjCM,EAAiC,WACnC,SAASA,EAAkB3D,EAASxD,GAClC,IAAIyE,EAAQp4D,KACZA,KAAKm3D,QAAUA,EACfn3D,KAAK2zD,SAAWA,EAChB3zD,KAAKm2D,SAAU,EACfn2D,KAAK+6D,UAAY,IAAI7E,IACrBl2D,KAAKq4D,iBAAmB,IAAIC,kBAAiB,SAAUC,GACrD,OAAOH,EAAMI,iBAAiBD,EAChC,GACF,CAiGA,OAhGAuC,EAAkBpkE,UAAUypC,MAAQ,WAC7BngC,KAAKm2D,UACRn2D,KAAKm2D,SAAU,EACfn2D,KAAKq4D,iBAAiBI,QAAQz4D,KAAKm3D,QAAS,CAC1C79B,YAAY,IAEdt5B,KAAK44D,UAET,EACAkC,EAAkBpkE,UAAU43C,KAAO,WAC7BtuC,KAAKm2D,UACPn2D,KAAKq4D,iBAAiBQ,cACtB74D,KAAKq4D,iBAAiBnD,aACtBl1D,KAAKm2D,SAAU,EAEnB,EACA2E,EAAkBpkE,UAAUkiE,QAAU,WACpC,GAAI54D,KAAKm2D,QACP,IAAK,IAAIx1D,EAAK,EAAGkM,EAAK7M,KAAKg7D,oBAAqBr6D,EAAKkM,EAAGrW,OAAQmK,IAAM,CACpE,IAAI44D,EAAgB1sD,EAAGlM,GACvBX,KAAKi7D,iBAAiB1B,EACxB,CAEJ,EAEAuB,EAAkBpkE,UAAU8hE,iBAAmB,SAAUD,GACvD,GAAIv4D,KAAKm2D,QACP,IAAK,IAAIx1D,EAAK,EAAGw4D,EAAcZ,EAAW53D,EAAKw4D,EAAY3iE,OAAQmK,IAAM,CACvE,IAAIy4D,EAAWD,EAAYx4D,GAC3BX,KAAKq5D,gBAAgBD,EACvB,CAEJ,EACA0B,EAAkBpkE,UAAU2iE,gBAAkB,SAAUD,GACtD,IAAIG,EAAgBH,EAASG,cACzBA,GACFv5D,KAAKi7D,iBAAiB1B,EAE1B,EAEAuB,EAAkBpkE,UAAUukE,iBAAmB,SAAU1B,GACvD,IAAI1+D,EAAMmF,KAAK2zD,SAASuH,4BAA4B3B,GACpD,GAAW,MAAP1+D,EAAa,CACVmF,KAAK+6D,UAAUj6B,IAAIy4B,IACtBv5D,KAAKm7D,kBAAkBtgE,EAAK0+D,GAE9B,IAAIh/D,EAAQyF,KAAKm3D,QAAQpjC,aAAawlC,GAClCv5D,KAAK+6D,UAAU5gE,IAAIo/D,IAAkBh/D,GACvCyF,KAAKo7D,sBAAsB7gE,EAAOM,GAEvB,MAATN,GACFyF,KAAK+6D,UAAUzF,OAAOiE,GACtBv5D,KAAKq7D,oBAAoBxgE,EAAK0+D,IAE9Bv5D,KAAK+6D,UAAUz4D,IAAIi3D,EAAeh/D,EAEtC,CACF,EACAugE,EAAkBpkE,UAAUykE,kBAAoB,SAAUtgE,EAAK0+D,GACzDv5D,KAAK2zD,SAASwH,mBAChBn7D,KAAK2zD,SAASwH,kBAAkBtgE,EAAK0+D,EAEzC,EACAuB,EAAkBpkE,UAAU0kE,sBAAwB,SAAU7gE,EAAOM,GAC/DmF,KAAK2zD,SAASyH,uBAChBp7D,KAAK2zD,SAASyH,sBAAsB7gE,EAAOM,EAE/C,EACAigE,EAAkBpkE,UAAU2kE,oBAAsB,SAAUxgE,EAAK0+D,GAC3Dv5D,KAAK2zD,SAAS0H,qBAChBr7D,KAAK2zD,SAAS0H,oBAAoBxgE,EAAK0+D,EAE3C,EACA9iE,OAAOwD,eAAe6gE,EAAkBpkE,UAAW,sBAAuB,CACxEyD,IAAK,WACH,OAAOgC,MAAMmE,KAAK,IAAI00D,IAAIh1D,KAAKs7D,sBAAsBzoD,OAAO7S,KAAKu7D,yBACnE,EACArhE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe6gE,EAAkBpkE,UAAW,wBAAyB,CAC1EyD,IAAK,WACH,OAAOgC,MAAMmE,KAAKN,KAAKm3D,QAAQ79B,YAAYr8B,KAAI,SAAUu+D,GACvD,OAAOA,EAAUniE,IACnB,GACF,EACAa,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe6gE,EAAkBpkE,UAAW,yBAA0B,CAC3EyD,IAAK,WACH,OAAOgC,MAAMmE,KAAKN,KAAK+6D,UAAU94D,OACnC,EACA/H,YAAY,EACZmzC,cAAc,IAETytB,CACT,CA5GqC,GCA9B,SAASxoD,EAAIrV,EAAKpC,EAAKN,GAC5BkhE,EAAMx+D,EAAKpC,GAAKyX,IAAI/X,EACtB,CACO,SAASmhE,EAAIz+D,EAAKpC,EAAKN,GAC5BkhE,EAAMx+D,EAAKpC,GAAKy6D,OAAO/6D,GAWlB,SAAe0C,EAAKpC,GACzB,IAAIod,EAAShb,EAAI9C,IAAIU,GACP,MAAVod,GAAiC,GAAfA,EAAO0jD,MAC3B1+D,EAAIq4D,OAAOz6D,EAEf,CAfE+gE,CAAM3+D,EAAKpC,EACb,CACO,SAAS4gE,EAAMx+D,EAAKpC,GACzB,IAAIod,EAAShb,EAAI9C,IAAIU,GAKrB,OAJKod,IACHA,EAAS,IAAI+8C,IACb/3D,EAAIqF,IAAIzH,EAAKod,IAERA,CACT,CCbA,ICAM4jD,EDAF,EAAwB,WAC1B,SAASC,IACP97D,KAAK+7D,YAAc,IAAI7F,GACzB,CAuDA,OAtDAz/D,OAAOwD,eAAe6hE,EAASplE,UAAW,SAAU,CAClDyD,IAAK,WAEH,OADWgC,MAAMmE,KAAKN,KAAK+7D,YAAY9jD,UAC3Bq+C,QAAO,SAAUr+C,EAAQ3V,GACnC,OAAO2V,EAAOpF,OAAO1W,MAAMmE,KAAKgC,GAClC,GAAG,GACL,EACApI,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe6hE,EAASplE,UAAW,OAAQ,CAChDyD,IAAK,WAEH,OADWgC,MAAMmE,KAAKN,KAAK+7D,YAAY9jD,UAC3Bq+C,QAAO,SAAUqF,EAAMr5D,GACjC,OAAOq5D,EAAOr5D,EAAIq5D,IACpB,GAAG,EACL,EACAzhE,YAAY,EACZmzC,cAAc,IAEhByuB,EAASplE,UAAU4b,IAAM,SAAUzX,EAAKN,GACtC+X,EAAItS,KAAK+7D,YAAalhE,EAAKN,EAC7B,EACAuhE,EAASplE,UAAU4+D,OAAS,SAAUz6D,EAAKN,GACzCmhE,EAAI17D,KAAK+7D,YAAalhE,EAAKN,EAC7B,EACAuhE,EAASplE,UAAUoqC,IAAM,SAAUjmC,EAAKN,GACtC,IAAI0d,EAASjY,KAAK+7D,YAAY5hE,IAAIU,GAClC,OAAiB,MAAVod,GAAkBA,EAAO6oB,IAAIvmC,EACtC,EACAuhE,EAASplE,UAAUslE,OAAS,SAAUnhE,GACpC,OAAOmF,KAAK+7D,YAAYj7B,IAAIjmC,EAC9B,EACAihE,EAASplE,UAAUulE,SAAW,SAAU1hE,GAEtC,OADW4B,MAAMmE,KAAKN,KAAK+7D,YAAY9jD,UAC3Btc,MAAK,SAAU2G,GACzB,OAAOA,EAAIw+B,IAAIvmC,EACjB,GACF,EACAuhE,EAASplE,UAAUwlE,gBAAkB,SAAUrhE,GAC7C,IAAIod,EAASjY,KAAK+7D,YAAY5hE,IAAIU,GAClC,OAAOod,EAAS9b,MAAMmE,KAAK2X,GAAU,EACvC,EACA6jD,EAASplE,UAAUylE,gBAAkB,SAAU5hE,GAC7C,OAAO4B,MAAMmE,KAAKN,KAAK+7D,aAAav2C,QAAO,SAAU3Y,GACzCA,EAAG,GAEb,OADWA,EAAG,GACAi0B,IAAIvmC,EACpB,IAAG0C,KAAI,SAAU4P,GACf,IAAIhS,EAAMgS,EAAG,GACFA,EAAG,GACd,OAAOhS,CACT,GACF,EACOihE,CACT,CA3D4B,GCDxBM,GACEP,EAAgB,SAAU/hE,EAAG0C,GAQ/B,OAPAq/D,EAAgBplE,OAAO4lE,gBAAkB,CACvCC,UAAW,cACAngE,OAAS,SAAUrC,EAAG0C,GACjC1C,EAAEwiE,UAAY9/D,CAChB,GAAK,SAAU1C,EAAG0C,GAChB,IAAK,IAAIjE,KAAKiE,EAAOA,EAAE7F,eAAe4B,KAAIuB,EAAEvB,GAAKiE,EAAEjE,GACrD,EACOsjE,EAAc/hE,EAAG0C,EAC1B,EACO,SAAU1C,EAAG0C,GAElB,SAAS+/D,IACPv8D,KAAK40B,YAAc96B,CACrB,CAHA+hE,EAAc/hE,EAAG0C,GAIjB1C,EAAEpD,UAAkB,OAAN8F,EAAa/F,OAAOmE,OAAO4B,IAAM+/D,EAAG7lE,UAAY8F,EAAE9F,UAAW,IAAI6lE,EACjF,GCfE,GDmB+B,SAAUC,GAE3C,SAASC,IACP,IAAIrE,EAAQoE,EAAO5lE,KAAKoJ,OAASA,KAEjC,OADAo4D,EAAMsE,YAAc,IAAIxG,IACjBkC,CACT,CALAgE,EAAUK,EAAiBD,GAM3B/lE,OAAOwD,eAAewiE,EAAgB/lE,UAAW,SAAU,CACzDyD,IAAK,WACH,OAAOgC,MAAMmE,KAAKN,KAAK08D,YAAYz6D,OACrC,EACA/H,YAAY,EACZmzC,cAAc,IAEhBovB,EAAgB/lE,UAAU4b,IAAM,SAAUzX,EAAKN,GAC7CiiE,EAAO9lE,UAAU4b,IAAI1b,KAAKoJ,KAAMnF,EAAKN,GACrC+X,EAAItS,KAAK08D,YAAaniE,EAAOM,EAC/B,EACA4hE,EAAgB/lE,UAAU4+D,OAAS,SAAUz6D,EAAKN,GAChDiiE,EAAO9lE,UAAU4+D,OAAO1+D,KAAKoJ,KAAMnF,EAAKN,GACxCmhE,EAAI17D,KAAK08D,YAAaniE,EAAOM,EAC/B,EACA4hE,EAAgB/lE,UAAUulE,SAAW,SAAU1hE,GAC7C,OAAOyF,KAAK08D,YAAY57B,IAAIvmC,EAC9B,EACAkiE,EAAgB/lE,UAAUylE,gBAAkB,SAAU5hE,GACpD,IAAI+H,EAAMtC,KAAK08D,YAAYviE,IAAII,GAC/B,OAAO+H,EAAMnG,MAAMmE,KAAKgC,GAAO,EACjC,CAEF,CA9BmC,CA8BjC,GCjDmC,WACnC,SAASq6D,EAAkBxF,EAASoC,EAAe5F,GACjD3zD,KAAK48D,kBAAoB,IAAI,EAAkBzF,EAASoC,EAAev5D,MACvEA,KAAK2zD,SAAWA,EAChB3zD,KAAK68D,gBAAkB,IAAI,CAC7B,CAoFA,OAnFApmE,OAAOwD,eAAe0iE,EAAkBjmE,UAAW,UAAW,CAC5DyD,IAAK,WACH,OAAO6F,KAAK48D,kBAAkBzG,OAChC,EACAj8D,YAAY,EACZmzC,cAAc,IAEhBsvB,EAAkBjmE,UAAUypC,MAAQ,WAClCngC,KAAK48D,kBAAkBz8B,OACzB,EACAw8B,EAAkBjmE,UAAU43C,KAAO,WACjCtuC,KAAK48D,kBAAkBtuB,MACzB,EACAquB,EAAkBjmE,UAAUkiE,QAAU,WACpC54D,KAAK48D,kBAAkBhE,SACzB,EACAniE,OAAOwD,eAAe0iE,EAAkBjmE,UAAW,UAAW,CAC5DyD,IAAK,WACH,OAAO6F,KAAK48D,kBAAkBzF,OAChC,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe0iE,EAAkBjmE,UAAW,gBAAiB,CAClEyD,IAAK,WACH,OAAO6F,KAAK48D,kBAAkBrD,aAChC,EACAr/D,YAAY,EACZmzC,cAAc,IAGhBsvB,EAAkBjmE,UAAUikE,wBAA0B,SAAUxD,GAC9Dn3D,KAAK88D,cAAc98D,KAAK+8D,qBAAqB5F,GAC/C,EACAwF,EAAkBjmE,UAAUmkE,6BAA+B,SAAU1D,GACnE,IAAItqD,EAAK7M,KAAKg9D,wBAAwB7F,GACpC8F,EAAkBpwD,EAAG,GACrBqwD,EAAgBrwD,EAAG,GACrB7M,KAAKm9D,gBAAgBF,GACrBj9D,KAAK88D,cAAcI,EACrB,EACAP,EAAkBjmE,UAAUkkE,0BAA4B,SAAUzD,GAChEn3D,KAAKm9D,gBAAgBn9D,KAAK68D,gBAAgBX,gBAAgB/E,GAC5D,EACAwF,EAAkBjmE,UAAUomE,cAAgB,SAAUvwD,GACpD,IAAI6rD,EAAQp4D,KACZuM,EAAO+L,SAAQ,SAAUzT,GACvB,OAAOuzD,EAAMgF,aAAav4D,EAC5B,GACF,EACA83D,EAAkBjmE,UAAUymE,gBAAkB,SAAU5wD,GACtD,IAAI6rD,EAAQp4D,KACZuM,EAAO+L,SAAQ,SAAUzT,GACvB,OAAOuzD,EAAMiF,eAAex4D,EAC9B,GACF,EACA83D,EAAkBjmE,UAAU0mE,aAAe,SAAUv4D,GACnD7E,KAAK2zD,SAASyJ,aAAav4D,GAC3B7E,KAAK68D,gBAAgBvqD,IAAIzN,EAAMsyD,QAAStyD,EAC1C,EACA83D,EAAkBjmE,UAAU2mE,eAAiB,SAAUx4D,GACrD7E,KAAK2zD,SAAS0J,eAAex4D,GAC7B7E,KAAK68D,gBAAgBvH,OAAOzwD,EAAMsyD,QAAStyD,EAC7C,EACA83D,EAAkBjmE,UAAUsmE,wBAA0B,SAAU7F,GAC9D,IAiCSjV,EAAMlF,EACbxmD,EAlCE8mE,EAAiBt9D,KAAK68D,gBAAgBX,gBAAgB/E,GACtDoG,EAAgBv9D,KAAK+8D,qBAAqB5F,GAC1CqG,GA+BKtb,EA/BqBob,EA+BftgB,EA/B+BugB,EAgC5C/mE,EAAS0N,KAAKI,IAAI49C,EAAK1rD,OAAQwmD,EAAMxmD,QAClC2F,MAAMmE,KAAK,CAChB9J,OAAQA,IACP,SAAU6xC,EAAGra,GACd,MAAO,CAACk0B,EAAKl0B,GAAQgvB,EAAMhvB,GAC7B,KArC+DyvC,WAAU,SAAU5wD,GAG/E,OAoCN,SAAwBq1C,EAAMlF,GAC5B,OAAOkF,GAAQlF,GAASkF,EAAKl0B,OAASgvB,EAAMhvB,OAASk0B,EAAK1a,SAAWwV,EAAMxV,OAC7E,CAtCck2B,CAFY7wD,EAAG,GACNA,EAAG,GAEtB,IACA,OAA4B,GAAxB2wD,EACK,CAAC,GAAI,IAEL,CAACF,EAAe9hE,MAAMgiE,GAAsBD,EAAc/hE,MAAMgiE,GAE3E,EACAb,EAAkBjmE,UAAUqmE,qBAAuB,SAAU5F,GAC3D,IAAIoC,EAAgBv5D,KAAKu5D,cAEzB,OAKJ,SAA0BoE,EAAaxG,EAASoC,GAC9C,OAAOoE,EAAYrJ,OAAOrmD,MAAM,OAAOuX,QAAO,SAAUgiB,GACtD,OAAOA,EAAQhxC,MACjB,IAAGyG,KAAI,SAAUuqC,EAASxZ,GACxB,MAAO,CACLmpC,QAASA,EACToC,cAAeA,EACf/xB,QAASA,EACTxZ,MAAOA,EAEX,GACF,CAhBW4vC,CADWzG,EAAQpjC,aAAawlC,IAAkB,GACpBpC,EAASoC,EAChD,EACOoD,CACT,CA1FqC,ICDrC,IAAI,EAAiC,WACnC,SAASkB,EAAkB1G,EAASoC,EAAe5F,GACjD3zD,KAAK89D,kBAAoB,IAAI,EAAkB3G,EAASoC,EAAev5D,MACvEA,KAAK2zD,SAAWA,EAChB3zD,KAAK+9D,oBAAsB,IAAIC,QAC/Bh+D,KAAKi+D,uBAAyB,IAAID,OACpC,CA2EA,OA1EAvnE,OAAOwD,eAAe4jE,EAAkBnnE,UAAW,UAAW,CAC5DyD,IAAK,WACH,OAAO6F,KAAK89D,kBAAkB3H,OAChC,EACAj8D,YAAY,EACZmzC,cAAc,IAEhBwwB,EAAkBnnE,UAAUypC,MAAQ,WAClCngC,KAAK89D,kBAAkB39B,OACzB,EACA09B,EAAkBnnE,UAAU43C,KAAO,WACjCtuC,KAAK89D,kBAAkBxvB,MACzB,EACAuvB,EAAkBnnE,UAAUkiE,QAAU,WACpC54D,KAAK89D,kBAAkBlF,SACzB,EACAniE,OAAOwD,eAAe4jE,EAAkBnnE,UAAW,UAAW,CAC5DyD,IAAK,WACH,OAAO6F,KAAK89D,kBAAkB3G,OAChC,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe4jE,EAAkBnnE,UAAW,gBAAiB,CAClEyD,IAAK,WACH,OAAO6F,KAAK89D,kBAAkBvE,aAChC,EACAr/D,YAAY,EACZmzC,cAAc,IAEhBwwB,EAAkBnnE,UAAU0mE,aAAe,SAAUv4D,GACnD,IAAIsyD,EAAUtyD,EAAMsyD,QAChB58D,EAAQyF,KAAKk+D,yBAAyBr5D,GAAOtK,MAC7CA,IACFyF,KAAKm+D,6BAA6BhH,GAAS70D,IAAIuC,EAAOtK,GACtDyF,KAAK2zD,SAASyK,oBAAoBjH,EAAS58D,GAE/C,EACAsjE,EAAkBnnE,UAAU2mE,eAAiB,SAAUx4D,GACrD,IAAIsyD,EAAUtyD,EAAMsyD,QAChB58D,EAAQyF,KAAKk+D,yBAAyBr5D,GAAOtK,MAC7CA,IACFyF,KAAKm+D,6BAA6BhH,GAAS7B,OAAOzwD,GAClD7E,KAAK2zD,SAAS0K,sBAAsBlH,EAAS58D,GAEjD,EACAsjE,EAAkBnnE,UAAUwnE,yBAA2B,SAAUr5D,GAC/D,IAAIy5D,EAAct+D,KAAK+9D,oBAAoB5jE,IAAI0K,GAK/C,OAJKy5D,IACHA,EAAct+D,KAAKu+D,WAAW15D,GAC9B7E,KAAK+9D,oBAAoBz7D,IAAIuC,EAAOy5D,IAE/BA,CACT,EACAT,EAAkBnnE,UAAUynE,6BAA+B,SAAUhH,GACnE,IAAIqH,EAAgBx+D,KAAKi+D,uBAAuB9jE,IAAIg9D,GAKpD,OAJKqH,IACHA,EAAgB,IAAItI,IACpBl2D,KAAKi+D,uBAAuB37D,IAAI60D,EAASqH,IAEpCA,CACT,EACAX,EAAkBnnE,UAAU6nE,WAAa,SAAU15D,GACjD,IAEE,MAAO,CACLtK,MAFUyF,KAAK2zD,SAAS8K,mBAAmB55D,GAI/C,CAAE,MAAOpM,GACP,MAAO,CACLA,MAAOA,EAEX,CACF,EACOolE,CACT,CAlFqC,GCEjC,EAA+B,WACjC,SAASa,EAAgBpqC,EAASq/B,GAChC3zD,KAAKs0B,QAAUA,EACft0B,KAAK2zD,SAAWA,EAChB3zD,KAAK2+D,iBAAmB,IAAIzI,GAC9B,CAiFA,OAhFAwI,EAAgBhoE,UAAUypC,MAAQ,WAC3BngC,KAAK4+D,oBACR5+D,KAAK4+D,kBAAoB,IAAI,EAAkB5+D,KAAKm3D,QAASn3D,KAAK6+D,gBAAiB7+D,MACnFA,KAAK4+D,kBAAkBz+B,QAE3B,EACAu+B,EAAgBhoE,UAAU43C,KAAO,WAC3BtuC,KAAK4+D,oBACP5+D,KAAK4+D,kBAAkBtwB,cAChBtuC,KAAK4+D,kBACZ5+D,KAAK8+D,uBAET,EACAroE,OAAOwD,eAAeykE,EAAgBhoE,UAAW,UAAW,CAC1DyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ6iC,OACtB,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeykE,EAAgBhoE,UAAW,aAAc,CAC7DyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ+E,UACtB,EACAn/B,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeykE,EAAgBhoE,UAAW,kBAAmB,CAClEyD,IAAK,WACH,OAAO6F,KAAK++D,OAAOF,eACrB,EACA3kE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeykE,EAAgBhoE,UAAW,SAAU,CACzDyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQyqC,MACtB,EACA7kE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeykE,EAAgBhoE,UAAW,WAAY,CAC3DyD,IAAK,WACH,OAAOgC,MAAMmE,KAAKN,KAAK2+D,iBAAiB1mD,SAC1C,EACA/d,YAAY,EACZmzC,cAAc,IAEhBqxB,EAAgBhoE,UAAUsoE,cAAgB,SAAUnH,GAClD,IAAIzC,EAAU,IAAIwC,EAAQ53D,KAAKs0B,QAASujC,GACxC73D,KAAK2+D,iBAAiBr8D,IAAIu1D,EAAQzC,GAClCp1D,KAAK2zD,SAASwB,iBAAiBC,EACjC,EACAsJ,EAAgBhoE,UAAUuoE,iBAAmB,SAAUpH,GACrD,IAAIzC,EAAUp1D,KAAK2+D,iBAAiBxkE,IAAI09D,GACpCzC,IACFp1D,KAAK2+D,iBAAiBrJ,OAAOuC,GAC7B73D,KAAK2zD,SAAS0B,oBAAoBD,GAEtC,EACAsJ,EAAgBhoE,UAAUooE,qBAAuB,WAC/C,IAAI1G,EAAQp4D,KACZA,KAAK41D,SAASt9C,SAAQ,SAAU88C,GAC9B,OAAOgD,EAAMzE,SAAS0B,oBAAoBD,EAC5C,IACAp1D,KAAK2+D,iBAAiBO,OACxB,EAEAR,EAAgBhoE,UAAU+nE,mBAAqB,SAAU55D,GACvD,IAAIgzD,EAAS,EAAOJ,SAAS5yD,GAC7B,GAAIgzD,EAAOx+B,YAAcr5B,KAAKq5B,WAC5B,OAAOw+B,CAEX,EACA6G,EAAgBhoE,UAAU0nE,oBAAsB,SAAUjH,EAASU,GACjE73D,KAAKg/D,cAAcnH,EACrB,EACA6G,EAAgBhoE,UAAU2nE,sBAAwB,SAAUlH,EAASU,GACnE73D,KAAKi/D,iBAAiBpH,EACxB,EACO6G,CACT,CAvFmC,GCF/B,EAA6B,WAC/B,SAASS,EAAc7qC,EAAS8qC,GAC9Bp/D,KAAKs0B,QAAUA,EACft0B,KAAKo/D,SAAWA,EAChBp/D,KAAKq/D,kBAAoB,IAAIvE,EAAkB96D,KAAKm3D,QAASn3D,MAC7DA,KAAKs/D,mBAAqBt/D,KAAKg4D,WAAWsH,mBAC1Ct/D,KAAKu/D,wCACP,CA2DA,OA1DAJ,EAAczoE,UAAUypC,MAAQ,WAC9BngC,KAAKq/D,kBAAkBl/B,OACzB,EACAg/B,EAAczoE,UAAU43C,KAAO,WAC7BtuC,KAAKq/D,kBAAkB/wB,MACzB,EACA73C,OAAOwD,eAAeklE,EAAczoE,UAAW,UAAW,CACxDyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ6iC,OACtB,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeklE,EAAczoE,UAAW,aAAc,CAC3DyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ0jC,UACtB,EACA99D,YAAY,EACZmzC,cAAc,IAGhB8xB,EAAczoE,UAAUwkE,4BAA8B,SAAU3B,GAC9D,GAAIA,KAAiBv5D,KAAKs/D,mBACxB,OAAOt/D,KAAKs/D,mBAAmB/F,GAAelgE,IAElD,EACA8lE,EAAczoE,UAAU0kE,sBAAwB,SAAUoE,EAAgBnmE,GACxE2G,KAAKy/D,8BAA8BpmE,EACrC,EACA8lE,EAAczoE,UAAU6oE,uCAAyC,WAC/D,IAAK,IAAI5+D,EAAK,EAAGkM,EAAK7M,KAAK0/D,iBAAkB/+D,EAAKkM,EAAGrW,OAAQmK,IAAM,CACjE,IAAIq4D,EAAKnsD,EAAGlM,GACV9F,EAAMm+D,EAAGn+D,IACT8kE,EAAS3G,EAAG3/D,UAEME,GADHy/D,EAAGnoB,cACc7wC,KAAKg4D,WAAW/hE,KAAK6qC,IAAIjmC,IACzDmF,KAAKy/D,8BAA8BE,EAEvC,CACF,EACAR,EAAczoE,UAAU+oE,8BAAgC,SAAUpmE,GAChE,IAAIm+D,EAAan+D,EAAO,UACpB4uC,EAASjoC,KAAKo/D,SAAS5H,GAC3B,GAAqB,mBAAVvvB,EAAsB,CAC/B,IAAI1tC,EAAQyF,KAAKo/D,SAAS/lE,GAC1B4uC,EAAOrxC,KAAKoJ,KAAKo/D,SAAU7kE,EAC7B,CACF,EACA9D,OAAOwD,eAAeklE,EAAczoE,UAAW,mBAAoB,CACjEyD,IAAK,WACH,IAAImlE,EAAqBt/D,KAAKs/D,mBAC9B,OAAO7oE,OAAOwL,KAAKq9D,GAAoBriE,KAAI,SAAUpC,GACnD,OAAOykE,EAAmBzkE,EAC5B,GACF,EACAX,YAAY,EACZmzC,cAAc,IAET8xB,CACT,CAnEiC,GCC7B,EAAuB,WACzB,SAASS,EAAQvoE,EAAQ8kC,GACvBn8B,KAAK3I,OAASA,EACd2I,KAAKm8B,MAAQA,EACbn8B,KAAKg4D,WAAa,IAAI3gE,EAAOwoE,sBAAsB7/D,MACnDA,KAAK8/D,gBAAkB,IAAI,EAAgB9/D,KAAMA,KAAK+/D,YACtD//D,KAAKggE,cAAgB,IAAI,EAAchgE,KAAMA,KAAKg4D,YAClD,IACEh4D,KAAKg4D,WAAWiI,YAClB,CAAE,MAAOxnE,GACPuH,KAAKy2D,YAAYh+D,EAAO,0BAC1B,CACF,CA6EA,OA5EAmnE,EAAQlpE,UAAUu+D,QAAU,WAC1Bj1D,KAAK8/D,gBAAgB3/B,QACrBngC,KAAKggE,cAAc7/B,QACnB,IACEngC,KAAKg4D,WAAW/C,SAClB,CAAE,MAAOx8D,GACPuH,KAAKy2D,YAAYh+D,EAAO,wBAC1B,CACF,EACAmnE,EAAQlpE,UAAUw+D,WAAa,WAC7B,IACEl1D,KAAKg4D,WAAW9C,YAClB,CAAE,MAAOz8D,GACPuH,KAAKy2D,YAAYh+D,EAAO,2BAC1B,CACAuH,KAAKggE,cAAc1xB,OACnBtuC,KAAK8/D,gBAAgBxxB,MACvB,EACA73C,OAAOwD,eAAe2lE,EAAQlpE,UAAW,cAAe,CACtDyD,IAAK,WACH,OAAO6F,KAAK3I,OAAO2+D,WACrB,EACA97D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe2lE,EAAQlpE,UAAW,aAAc,CACrDyD,IAAK,WACH,OAAO6F,KAAK3I,OAAOgiC,UACrB,EACAn/B,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe2lE,EAAQlpE,UAAW,SAAU,CACjDyD,IAAK,WACH,OAAO6F,KAAKg2D,YAAY+I,MAC1B,EACA7kE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe2lE,EAAQlpE,UAAW,aAAc,CACrDyD,IAAK,WACH,OAAO6F,KAAKg2D,YAAY+J,UAC1B,EACA7lE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe2lE,EAAQlpE,UAAW,UAAW,CAClDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMg7B,OACpB,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe2lE,EAAQlpE,UAAW,gBAAiB,CACxDyD,IAAK,WACH,OAAO6F,KAAKm3D,QAAQ+I,aACtB,EACAhmE,YAAY,EACZmzC,cAAc,IAGhBuyB,EAAQlpE,UAAU+/D,YAAc,SAAUh+D,EAAOW,EAASw9C,QACzC,IAAXA,IACFA,EAAS,CAAC,GAEZ,IAAI/pC,EAAK7M,KACPq5B,EAAaxsB,EAAGwsB,WAChB2+B,EAAanrD,EAAGmrD,WAChBb,EAAUtqD,EAAGsqD,QACfvgB,EAASngD,OAAO46B,OAAO,CACrBgI,WAAYA,EACZ2+B,WAAYA,EACZb,QAASA,GACRvgB,GACH52C,KAAKg2D,YAAYS,YAAYh+D,EAAO,SAAWW,EAASw9C,EAC1D,EACOgpB,CACT,CA1F2B,GCFpB,SAASO,EAAiCvrC,EAAawrC,GAC5D,IAAIC,EAAYC,EAA2B1rC,GAC3C,OAAOz4B,MAAMmE,KAAK+/D,EAAU/J,QAAO,SAAUr+C,EAAQ2c,GAInD,OAkBJ,SAAiCA,EAAawrC,GAC5C,IAAIG,EAAa3rC,EAAYwrC,GAC7B,OAAOjkE,MAAMF,QAAQskE,GAAcA,EAAa,EAClD,CAxBIC,CAAwB5rC,EAAawrC,GAAc9nD,SAAQ,SAAUjf,GACnE,OAAO4e,EAAO3F,IAAIjZ,EACpB,IACO4e,CACT,GAAG,IAAI+8C,KACT,CACO,SAASyL,EAAiC7rC,EAAawrC,GAE5D,OADgBE,EAA2B1rC,GAC1B0hC,QAAO,SAAUoK,EAAO9rC,GAEvC,OADA8rC,EAAM5pE,KAAK+E,MAAM6kE,EAgBrB,SAAiC9rC,EAAawrC,GAC5C,IAAIG,EAAa3rC,EAAYwrC,GAC7B,OAAOG,EAAa9pE,OAAOwL,KAAKs+D,GAAYtjE,KAAI,SAAUpC,GACxD,MAAO,CAACA,EAAK0lE,EAAW1lE,GAC1B,IAAK,EACP,CArB4B8lE,CAAwB/rC,EAAawrC,IACtDM,CACT,GAAG,GACL,CACA,SAASJ,EAA2B1rC,GAElC,IADA,IAAIyrC,EAAY,GACTzrC,GACLyrC,EAAUvpE,KAAK89B,GACfA,EAAcn+B,OAAOq8B,eAAe8B,GAEtC,OAAOyrC,EAAU54B,SACnB,CCvBA,IAAI,EAAsC,WACxC,IAAIo0B,EAAgB,SAAU/hE,EAAG0C,GAQ/B,OAPAq/D,EAAgBplE,OAAO4lE,gBAAkB,CACvCC,UAAW,cACAngE,OAAS,SAAUrC,EAAG0C,GACjC1C,EAAEwiE,UAAY9/D,CAChB,GAAK,SAAU1C,EAAG0C,GAChB,IAAK,IAAIjE,KAAKiE,EAAOA,EAAE7F,eAAe4B,KAAIuB,EAAEvB,GAAKiE,EAAEjE,GACrD,EACOsjE,EAAc/hE,EAAG0C,EAC1B,EACA,OAAO,SAAU1C,EAAG0C,GAElB,SAAS+/D,IACPv8D,KAAK40B,YAAc96B,CACrB,CAHA+hE,EAAc/hE,EAAG0C,GAIjB1C,EAAEpD,UAAkB,OAAN8F,EAAa/F,OAAOmE,OAAO4B,IAAM+/D,EAAG7lE,UAAY8F,EAAE9F,UAAW,IAAI6lE,EACjF,CACF,CAlB0C,GAmBtCqE,EAAgD,WAClD,IAAK,IAAInlE,EAAI,EAAGnF,EAAI,EAAGuqE,EAAK/kE,UAAUtF,OAAQF,EAAIuqE,EAAIvqE,IAAKmF,GAAKK,UAAUxF,GAAGE,OACxE,IAAI4D,EAAI+B,MAAMV,GAAImB,EAAI,EAA3B,IAA8BtG,EAAI,EAAGA,EAAIuqE,EAAIvqE,IAAK,IAAK,IAAIiG,EAAIT,UAAUxF,GAAIohB,EAAI,EAAGopD,EAAKvkE,EAAE/F,OAAQkhB,EAAIopD,EAAIppD,IAAK9a,IAAKxC,EAAEwC,GAAKL,EAAEmb,GAC9H,OAAOtd,CACT,EAGO,SAAS2mE,EAAMnsC,GACpB,OAEF,SAAgBA,EAAaxP,GAC3B,IAAI47C,EAAoB1jE,EAAOs3B,GAC3BqsC,EAeN,SAA6BvqE,EAAW0uB,GACtC,OAAO87C,EAAW97C,GAAYkxC,QAAO,SAAU2K,EAAkBpmE,GAC/D,IAAIgS,EACAuqD,EAOR,SAA+B1gE,EAAW0uB,EAAYvqB,GACpD,IAAIsmE,EAAsB1qE,OAAO2qE,yBAAyB1qE,EAAWmE,GAErE,IADsBsmE,KAAuB,UAAWA,GAClC,CACpB,IAAI/J,EAAa3gE,OAAO2qE,yBAAyBh8C,EAAYvqB,GAAKN,MAKlE,OAJI4mE,IACF/J,EAAWj9D,IAAMgnE,EAAoBhnE,KAAOi9D,EAAWj9D,IACvDi9D,EAAW90D,IAAM6+D,EAAoB7+D,KAAO80D,EAAW90D,KAElD80D,CACT,CACF,CAlBqBiK,CAAsB3qE,EAAW0uB,EAAYvqB,GAI9D,OAHIu8D,GACF3gE,OAAO46B,OAAO4vC,IAAmBp0D,EAAK,CAAC,GAAMhS,GAAOu8D,EAAYvqD,IAE3Do0D,CACT,GAAG,CAAC,EACN,CAxByBK,CAAoB1sC,EAAYl+B,UAAW0uB,GAElE,OADA3uB,OAAO8qE,iBAAiBP,EAAkBtqE,UAAWuqE,GAC9CD,CACT,CAPSQ,CAAO5sC,EAQhB,SAA8BA,GAC5B,IAAI6sC,EAAYtB,EAAiCvrC,EAAa,aAC9D,OAAO6sC,EAAUnL,QAAO,SAAUoL,EAAmBC,GACnD,IAAIv8C,EAAau8C,EAAS/sC,GAC1B,IAAK,IAAI/5B,KAAOuqB,EAAY,CAC1B,IAAIgyC,EAAasK,EAAkB7mE,IAAQ,CAAC,EAC5C6mE,EAAkB7mE,GAAOpE,OAAO46B,OAAO+lC,EAAYhyC,EAAWvqB,GAChE,CACA,OAAO6mE,CACT,GAAG,CAAC,EACN,CAlB6BE,CAAqBhtC,GAClD,CAwCA,IAAIssC,EACyC,mBAAhCzqE,OAAOorE,sBACT,SAAU7mE,GACf,OAAO4lE,EAAenqE,OAAOkG,oBAAoB3B,GAASvE,OAAOorE,sBAAsB7mE,GACzF,EAEOvE,OAAOkG,oBAGdW,EAAS,WACX,SAASwkE,EAAkBltC,GACzB,SAASmtC,IACP,IAAIC,EAAahiE,MAAQA,gBAAgB+hE,EAAW/hE,KAAK40B,iBAAc,EACvE,OAAOqtC,QAAQC,UAAUttC,EAAa94B,UAAWkmE,EACnD,CAOA,OANAD,EAASrrE,UAAYD,OAAOmE,OAAOg6B,EAAYl+B,UAAW,CACxDk+B,YAAa,CACXr6B,MAAOwnE,KAGXE,QAAQ5F,eAAe0F,EAAUntC,GAC1BmtC,CACT,CASA,IAEE,OANIvlE,EAAIslE,GAHA,WACN9hE,KAAKzD,EAAE3F,KAAKoJ,KACd,KAEEtJ,UAAU6F,EAAI,WAAa,EACtB,IAAIC,EAIJslE,CACT,CAAE,MAAOrpE,GACP,OAAO,SAAUm8B,GACf,OAAqB,SAAU4nC,GAE3B,SAASuF,IACP,OAAkB,OAAXvF,GAAmBA,EAAO3gE,MAAMmE,KAAMlE,YAAckE,IAC7D,CACA,OAJA,EAAU+hE,EAAUvF,GAIbuF,CACT,CANK,CAMHntC,EAEN,CACF,CAtBA,IAIMp4B,CAmBR,CArCa,GC3Eb,IAAI,EAAsB,WACxB,SAAS2lE,EAAOnM,EAAauK,GAC3BvgE,KAAKg2D,YAAcA,EACnBh2D,KAAKugE,WCHF,SAAyBA,GAC9B,MAAO,CACLlnC,WAAYknC,EAAWlnC,WACvBwmC,sBAAuBkB,EAAMR,EAAWV,uBAE5C,CDFsBuC,CAAgB7B,GAClCvgE,KAAKqiE,gBAAkB,IAAIrE,QAC3Bh+D,KAAKsiE,kBAAoB,IAAItN,GAC/B,CA0CA,OAzCAv+D,OAAOwD,eAAekoE,EAAOzrE,UAAW,aAAc,CACpDyD,IAAK,WACH,OAAO6F,KAAKugE,WAAWlnC,UACzB,EACAn/B,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAekoE,EAAOzrE,UAAW,wBAAyB,CAC/DyD,IAAK,WACH,OAAO6F,KAAKugE,WAAWV,qBACzB,EACA3lE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAekoE,EAAOzrE,UAAW,WAAY,CAClDyD,IAAK,WACH,OAAOgC,MAAMmE,KAAKN,KAAKsiE,kBACzB,EACApoE,YAAY,EACZmzC,cAAc,IAEhB80B,EAAOzrE,UAAU6rE,uBAAyB,SAAUpmC,GAClD,IAAI7H,EAAUt0B,KAAKwiE,qBAAqBrmC,GACxCn8B,KAAKsiE,kBAAkBhwD,IAAIgiB,GAC3BA,EAAQ2gC,SACV,EACAkN,EAAOzrE,UAAU+rE,0BAA4B,SAAUtmC,GACrD,IAAI7H,EAAUt0B,KAAKqiE,gBAAgBloE,IAAIgiC,GACnC7H,IACFt0B,KAAKsiE,kBAAkBhN,OAAOhhC,GAC9BA,EAAQ4gC,aAEZ,EACAiN,EAAOzrE,UAAU8rE,qBAAuB,SAAUrmC,GAChD,IAAI7H,EAAUt0B,KAAKqiE,gBAAgBloE,IAAIgiC,GAKvC,OAJK7H,IACHA,EAAU,IAAI,EAAQt0B,KAAMm8B,GAC5Bn8B,KAAKqiE,gBAAgB//D,IAAI65B,EAAO7H,IAE3BA,CACT,EACO6tC,CACT,CAjD0B,GEFtBO,EAAwB,WAC1B,SAASA,EAASvmC,GAChBn8B,KAAKm8B,MAAQA,CACf,CAoBA,OAnBAumC,EAAShsE,UAAUoqC,IAAM,SAAUznC,GACjC,OAAO2G,KAAK/J,KAAK6qC,IAAI9gC,KAAK2iE,WAAWtpE,GACvC,EACAqpE,EAAShsE,UAAUyD,IAAM,SAAUd,GACjC,OAAO2G,KAAK/J,KAAKkE,IAAI6F,KAAK2iE,WAAWtpE,GACvC,EACAqpE,EAAShsE,UAAUksE,iBAAmB,SAAUvpE,GAC9C,OAAO2G,KAAK/J,KAAK4sE,uBAAuB7iE,KAAK2iE,WAAWtpE,GAC1D,EACAqpE,EAAShsE,UAAUisE,WAAa,SAAUtpE,GACxC,OAAOA,EAAO,QAChB,EACA5C,OAAOwD,eAAeyoE,EAAShsE,UAAW,OAAQ,CAChDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMlmC,IACpB,EACAiE,YAAY,EACZmzC,cAAc,IAETq1B,CACT,CAxB4B,GCArB,SAASI,EAASvoE,GACvB,OAAOA,EAAM6K,QAAQ,uBAAuB,SAAUijC,EAAG06B,GACvD,OAAOA,EAAKx8D,aACd,GACF,CACO,SAASy8D,EAAWzoE,GACzB,OAAOA,EAAMyb,OAAO,GAAGzP,cAAgBhM,EAAMiB,MAAM,EACrD,CACO,SAASynE,EAAU1oE,GACxB,OAAOA,EAAM6K,QAAQ,YAAY,SAAUijC,EAAG06B,GAC5C,MAAO,IAAMA,EAAKv6D,aACpB,GACF,CCXA,IAAI,EAAuB,WACzB,SAAS06D,EAAQ/mC,GACfn8B,KAAKm8B,MAAQA,CACf,CAwCA,OAvCA1lC,OAAOwD,eAAeipE,EAAQxsE,UAAW,UAAW,CAClDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMg7B,OACpB,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeipE,EAAQxsE,UAAW,aAAc,CACrDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAM9C,UACpB,EACAn/B,YAAY,EACZmzC,cAAc,IAEhB61B,EAAQxsE,UAAUyD,IAAM,SAAUU,GAChC,IAAIxB,EAAO2G,KAAK6iE,uBAAuBhoE,GACvC,OAAOmF,KAAKm3D,QAAQpjC,aAAa16B,EACnC,EACA6pE,EAAQxsE,UAAU4L,IAAM,SAAUzH,EAAKN,GACrC,IAAIlB,EAAO2G,KAAK6iE,uBAAuBhoE,GAEvC,OADAmF,KAAKm3D,QAAQ9+D,aAAagB,EAAMkB,GACzByF,KAAK7F,IAAIU,EAClB,EACAqoE,EAAQxsE,UAAUoqC,IAAM,SAAUjmC,GAChC,IAAIxB,EAAO2G,KAAK6iE,uBAAuBhoE,GACvC,OAAOmF,KAAKm3D,QAAQuD,aAAarhE,EACnC,EACA6pE,EAAQxsE,UAAU4+D,OAAS,SAAUz6D,GACnC,GAAImF,KAAK8gC,IAAIjmC,GAAM,CACjB,IAAI8kE,EAAS3/D,KAAK6iE,uBAAuBhoE,GAEzC,OADAmF,KAAKm3D,QAAQ36B,gBAAgBmjC,IACtB,CACT,CACE,OAAO,CAEX,EACAuD,EAAQxsE,UAAUmsE,uBAAyB,SAAUhoE,GACnD,MAAO,QAAUmF,KAAKq5B,WAAa,IAAM4pC,EAAUpoE,EACrD,EACOqoE,CACT,CA5C2B,GCDvBC,EAAqB,WACvB,SAASA,EAAMC,GACbpjE,KAAKqjE,mBAAqB,IAAIrF,QAC9Bh+D,KAAKojE,OAASA,CAChB,CAYA,OAXAD,EAAMzsE,UAAU4K,KAAO,SAAUtG,EAAQH,EAAKzB,GAC5C,IAAIkqE,EAAatjE,KAAKqjE,mBAAmBlpE,IAAIa,GACxCsoE,IACHA,EAAa,IAAItO,IACjBh1D,KAAKqjE,mBAAmB/gE,IAAItH,EAAQsoE,IAEjCA,EAAWxiC,IAAIjmC,KAClByoE,EAAWhxD,IAAIzX,GACfmF,KAAKojE,OAAO9hE,KAAKlI,EAAS4B,GAE9B,EACOmoE,CACT,CAjByB,GCClB,SAASI,EAA4BhK,EAAe10D,GACzD,MAAO,IAAM00D,EAAgB,MAAS10D,EAAQ,IAChD,CCHA,IAAI,EAAgD,WAClD,IAAK,IAAIpJ,EAAI,EAAGnF,EAAI,EAAGuqE,EAAK/kE,UAAUtF,OAAQF,EAAIuqE,EAAIvqE,IAAKmF,GAAKK,UAAUxF,GAAGE,OACxE,IAAI4D,EAAI+B,MAAMV,GAAImB,EAAI,EAA3B,IAA8BtG,EAAI,EAAGA,EAAIuqE,EAAIvqE,IAAK,IAAK,IAAIiG,EAAIT,UAAUxF,GAAIohB,EAAI,EAAGopD,EAAKvkE,EAAE/F,OAAQkhB,EAAIopD,EAAIppD,IAAK9a,IAAKxC,EAAEwC,GAAKL,EAAEmb,GAC9H,OAAOtd,CACT,EAEI,EAAyB,WAC3B,SAASopE,EAAUrnC,GACjBn8B,KAAKm8B,MAAQA,CACf,CAuFA,OAtFA1lC,OAAOwD,eAAeupE,EAAU9sE,UAAW,UAAW,CACpDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMg7B,OACpB,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeupE,EAAU9sE,UAAW,aAAc,CACvDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAM9C,UACpB,EACAn/B,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeupE,EAAU9sE,UAAW,SAAU,CACnDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAM4iC,MACpB,EACA7kE,YAAY,EACZmzC,cAAc,IAEhBm2B,EAAU9sE,UAAUoqC,IAAM,SAAU2iC,GAClC,OAAgC,MAAzBzjE,KAAKw7B,KAAKioC,EACnB,EACAD,EAAU9sE,UAAU8kC,KAAO,WAGzB,IAFA,IAAI48B,EAAQp4D,KACR0jE,EAAc,GACT/iE,EAAK,EAAGA,EAAK7E,UAAUtF,OAAQmK,IACtC+iE,EAAY/iE,GAAM7E,UAAU6E,GAE9B,OAAO+iE,EAAYpN,QAAO,SAAUn9D,EAAQsqE,GAC1C,OAAOtqE,GAAUi/D,EAAMuL,WAAWF,IAAerL,EAAMwL,iBAAiBH,EAC1E,QAAGlqE,EACL,EACAiqE,EAAU9sE,UAAUmtE,QAAU,WAG5B,IAFA,IAAIzL,EAAQp4D,KACR0jE,EAAc,GACT/iE,EAAK,EAAGA,EAAK7E,UAAUtF,OAAQmK,IACtC+iE,EAAY/iE,GAAM7E,UAAU6E,GAE9B,OAAO+iE,EAAYpN,QAAO,SAAUxvB,EAAS28B,GAC3C,OAAO,EAAe38B,EAASsxB,EAAM0L,eAAeL,GAAarL,EAAM2L,qBAAqBN,GAC9F,GAAG,GACL,EACAD,EAAU9sE,UAAUitE,WAAa,SAAUF,GACzC,IAAIpvC,EAAWr0B,KAAKgkE,yBAAyBP,GAC7C,OAAOzjE,KAAKm8B,MAAM8nC,YAAY5vC,EAChC,EACAmvC,EAAU9sE,UAAUotE,eAAiB,SAAUL,GAC7C,IAAIpvC,EAAWr0B,KAAKgkE,yBAAyBP,GAC7C,OAAOzjE,KAAKm8B,MAAM+nC,gBAAgB7vC,EACpC,EACAmvC,EAAU9sE,UAAUstE,yBAA2B,SAAUP,GAEvD,OAAOF,EADa,QAAUvjE,KAAKq5B,WAAa,UACEoqC,EACpD,EACAD,EAAU9sE,UAAUktE,iBAAmB,SAAUH,GAC/C,IAAIpvC,EAAWr0B,KAAKmkE,+BAA+BV,GACnD,OAAOzjE,KAAKyB,UAAUzB,KAAKm8B,MAAM8nC,YAAY5vC,GAAWovC,EAC1D,EACAD,EAAU9sE,UAAUqtE,qBAAuB,SAAUN,GACnD,IAAIrL,EAAQp4D,KACRq0B,EAAWr0B,KAAKmkE,+BAA+BV,GACnD,OAAOzjE,KAAKm8B,MAAM+nC,gBAAgB7vC,GAAUp3B,KAAI,SAAUk6D,GACxD,OAAOiB,EAAM32D,UAAU01D,EAASsM,EAClC,GACF,EACAD,EAAU9sE,UAAUytE,+BAAiC,SAAUV,GAC7D,IAAIW,EAAmBpkE,KAAKq5B,WAAa,IAAMoqC,EAC/C,OAAOF,EAA4BvjE,KAAK++D,OAAOsF,gBAAiBD,EAClE,EACAZ,EAAU9sE,UAAU+K,UAAY,SAAU01D,EAASsM,GACjD,GAAItM,EAAS,CACX,IAAI99B,EAAar5B,KAAKq5B,WAClBkgC,EAAgBv5D,KAAK++D,OAAOsF,gBAChCrkE,KAAKskE,MAAMhjE,KAAK61D,EAAS,UAAYsM,EAAY,kBAAoBlK,EAAgB,KAAQlgC,EAAa,IAAMoqC,EAAa,eAAkBpqC,EAAa,YAAeoqC,EAA1H,UAA0JlK,EAAgB,gFAC7N,CACA,OAAOpC,CACT,EACA1gE,OAAOwD,eAAeupE,EAAU9sE,UAAW,QAAS,CAClDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMmoC,KACpB,EACApqE,YAAY,EACZmzC,cAAc,IAETm2B,CACT,CA3F6B,GCNzB,EAAgD,WAClD,IAAK,IAAI/nE,EAAI,EAAGnF,EAAI,EAAGuqE,EAAK/kE,UAAUtF,OAAQF,EAAIuqE,EAAIvqE,IAAKmF,GAAKK,UAAUxF,GAAGE,OACxE,IAAI4D,EAAI+B,MAAMV,GAAImB,EAAI,EAA3B,IAA8BtG,EAAI,EAAGA,EAAIuqE,EAAIvqE,IAAK,IAAK,IAAIiG,EAAIT,UAAUxF,GAAIohB,EAAI,EAAGopD,EAAKvkE,EAAE/F,OAAQkhB,EAAIopD,EAAIppD,IAAK9a,IAAKxC,EAAEwC,GAAKL,EAAEmb,GAC9H,OAAOtd,CACT,EAMI,EAAqB,WACvB,SAASmqE,EAAMxF,EAAQ5H,EAAS99B,EAAY+pC,GAC1C,IAAIhL,EAAQp4D,KACZA,KAAK8mC,QAAU,IAAI,EAAU9mC,MAC7BA,KAAKwkE,QAAU,IAAI9B,EAAS1iE,MAC5BA,KAAK/J,KAAO,IAAI,EAAQ+J,MACxBA,KAAKk4D,gBAAkB,SAAUf,GAC/B,OAAOA,EAAQpwB,QAAQqxB,EAAMqM,sBAAwBrM,EAAMjB,OAC7D,EACAn3D,KAAK++D,OAASA,EACd/+D,KAAKm3D,QAAUA,EACfn3D,KAAKq5B,WAAaA,EAClBr5B,KAAKskE,MAAQ,IAAInB,EAAMC,EACzB,CAiBA,OAhBAmB,EAAM7tE,UAAUutE,YAAc,SAAU5vC,GACtC,OAAOr0B,KAAKm3D,QAAQn1C,QAAQqS,GAAYr0B,KAAKm3D,QAAUn3D,KAAK0kE,cAAcrwC,GAAUmH,KAAKx7B,KAAKk4D,gBAChG,EACAqM,EAAM7tE,UAAUwtE,gBAAkB,SAAU7vC,GAC1C,OAAO,EAAer0B,KAAKm3D,QAAQn1C,QAAQqS,GAAY,CAACr0B,KAAKm3D,SAAW,GAAIn3D,KAAK0kE,cAAcrwC,GAAU7O,OAAOxlB,KAAKk4D,iBACvH,EACAqM,EAAM7tE,UAAUguE,cAAgB,SAAUrwC,GACxC,OAAOl4B,MAAMmE,KAAKN,KAAKm3D,QAAQ76B,iBAAiBjI,GAClD,EACA59B,OAAOwD,eAAesqE,EAAM7tE,UAAW,qBAAsB,CAC3DyD,IAAK,WACH,OAAOopE,EAA4BvjE,KAAK++D,OAAO4F,oBAAqB3kE,KAAKq5B,WAC3E,EACAn/B,YAAY,EACZmzC,cAAc,IAETk3B,CACT,CA/ByB,GCTrB,EAA6B,WAC/B,SAASK,EAAczN,EAAS4H,EAAQpL,GACtC3zD,KAAKm3D,QAAUA,EACfn3D,KAAK++D,OAASA,EACd/+D,KAAK2zD,SAAWA,EAChB3zD,KAAK4+D,kBAAoB,IAAI,EAAkB5+D,KAAKm3D,QAASn3D,KAAK2kE,oBAAqB3kE,MACvFA,KAAK6kE,4BAA8B,IAAI7G,QACvCh+D,KAAK8kE,qBAAuB,IAAI9G,OAClC,CAqDA,OApDA4G,EAAcluE,UAAUypC,MAAQ,WAC9BngC,KAAK4+D,kBAAkBz+B,OACzB,EACAykC,EAAcluE,UAAU43C,KAAO,WAC7BtuC,KAAK4+D,kBAAkBtwB,MACzB,EACA73C,OAAOwD,eAAe2qE,EAAcluE,UAAW,sBAAuB,CACpEyD,IAAK,WACH,OAAO6F,KAAK++D,OAAO4F,mBACrB,EACAzqE,YAAY,EACZmzC,cAAc,IAIhBu3B,EAAcluE,UAAU+nE,mBAAqB,SAAU55D,GACrD,IAAIsyD,EAAUtyD,EAAMsyD,QAClB99B,EAAax0B,EAAM2iC,QACjBu9B,EAAqB/kE,KAAKglE,kCAAkC7N,GAC5Dh7B,EAAQ4oC,EAAmB5qE,IAAIk/B,GAKnC,OAJK8C,IACHA,EAAQn8B,KAAK2zD,SAASsR,mCAAmC9N,EAAS99B,GAClE0rC,EAAmBziE,IAAI+2B,EAAY8C,IAE9BA,CACT,EAEAyoC,EAAcluE,UAAU0nE,oBAAsB,SAAUjH,EAAS58D,GAC/D,IAAI2qE,GAAkBllE,KAAK8kE,qBAAqB3qE,IAAII,IAAU,GAAK,EACnEyF,KAAK8kE,qBAAqBxiE,IAAI/H,EAAO2qE,GACf,GAAlBA,GACFllE,KAAK2zD,SAASwR,eAAe5qE,EAEjC,EAEAqqE,EAAcluE,UAAU2nE,sBAAwB,SAAUlH,EAAS58D,GACjE,IAAI2qE,EAAiBllE,KAAK8kE,qBAAqB3qE,IAAII,GAC/C2qE,IACFllE,KAAK8kE,qBAAqBxiE,IAAI/H,EAAO2qE,EAAiB,GAChC,GAAlBA,GACFllE,KAAK2zD,SAASyR,kBAAkB7qE,GAGtC,EACAqqE,EAAcluE,UAAUsuE,kCAAoC,SAAU7N,GACpE,IAAI4N,EAAqB/kE,KAAK6kE,4BAA4B1qE,IAAIg9D,GAK9D,OAJK4N,IACHA,EAAqB,IAAI7O,IACzBl2D,KAAK6kE,4BAA4BviE,IAAI60D,EAAS4N,IAEzCA,CACT,EACOH,CACT,CA9DiC,GCG7B,EAAsB,WACxB,SAASS,EAAOrP,GACdh2D,KAAKg2D,YAAcA,EACnBh2D,KAAKslE,cAAgB,IAAI,EAActlE,KAAKm3D,QAASn3D,KAAK++D,OAAQ/+D,MAClEA,KAAK+kE,mBAAqB,IAAI,EAC9B/kE,KAAKulE,oBAAsB,IAAIrP,GACjC,CA+GA,OA9GAz/D,OAAOwD,eAAeorE,EAAO3uE,UAAW,UAAW,CACjDyD,IAAK,WACH,OAAO6F,KAAKg2D,YAAYmB,OAC1B,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeorE,EAAO3uE,UAAW,SAAU,CAChDyD,IAAK,WACH,OAAO6F,KAAKg2D,YAAY+I,MAC1B,EACA7kE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeorE,EAAO3uE,UAAW,SAAU,CAChDyD,IAAK,WACH,OAAO6F,KAAKg2D,YAAYoN,MAC1B,EACAlpE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeorE,EAAO3uE,UAAW,sBAAuB,CAC7DyD,IAAK,WACH,OAAO6F,KAAK++D,OAAO4F,mBACrB,EACAzqE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeorE,EAAO3uE,UAAW,UAAW,CACjDyD,IAAK,WACH,OAAOgC,MAAMmE,KAAKN,KAAKulE,oBAAoBttD,SAC7C,EACA/d,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAeorE,EAAO3uE,UAAW,WAAY,CAClDyD,IAAK,WACH,OAAO6F,KAAKjJ,QAAQu/D,QAAO,SAAUpyB,EAAU7sC,GAC7C,OAAO6sC,EAASrxB,OAAOxb,EAAO6sC,SAChC,GAAG,GACL,EACAhqC,YAAY,EACZmzC,cAAc,IAEhBg4B,EAAO3uE,UAAUypC,MAAQ,WACvBngC,KAAKslE,cAAcnlC,OACrB,EACAklC,EAAO3uE,UAAU43C,KAAO,WACtBtuC,KAAKslE,cAAch3B,MACrB,EACA+2B,EAAO3uE,UAAU8uE,eAAiB,SAAUjF,GAC1CvgE,KAAKylE,iBAAiBlF,EAAWlnC,YACjC,IAAIhiC,EAAS,IAAI,EAAO2I,KAAKg2D,YAAauK,GAC1CvgE,KAAK0lE,cAAcruE,EACrB,EACAguE,EAAO3uE,UAAU+uE,iBAAmB,SAAUpsC,GAC5C,IAAIhiC,EAAS2I,KAAKulE,oBAAoBprE,IAAIk/B,GACtChiC,GACF2I,KAAK2lE,iBAAiBtuE,EAE1B,EACAguE,EAAO3uE,UAAUkvE,kCAAoC,SAAUzO,EAAS99B,GACtE,IAAIhiC,EAAS2I,KAAKulE,oBAAoBprE,IAAIk/B,GAC1C,GAAIhiC,EACF,OAAOA,EAAO6sC,SAAS1I,MAAK,SAAUlH,GACpC,OAAOA,EAAQ6iC,SAAWA,CAC5B,GAEJ,EAGAkO,EAAO3uE,UAAU+/D,YAAc,SAAUh+D,EAAOW,EAASw9C,GACvD52C,KAAKg2D,YAAYS,YAAYh+D,EAAOW,EAASw9C,EAC/C,EAGAyuB,EAAO3uE,UAAUuuE,mCAAqC,SAAU9N,EAAS99B,GACvE,OAAO,IAAI,EAAMr5B,KAAK++D,OAAQ5H,EAAS99B,EAAYr5B,KAAKojE,OAC1D,EAEAiC,EAAO3uE,UAAUyuE,eAAiB,SAAUhpC,GAC1Cn8B,KAAK+kE,mBAAmBzyD,IAAI6pB,EAAM9C,WAAY8C,GAC9C,IAAI9kC,EAAS2I,KAAKulE,oBAAoBprE,IAAIgiC,EAAM9C,YAC5ChiC,GACFA,EAAOkrE,uBAAuBpmC,EAElC,EAEAkpC,EAAO3uE,UAAU0uE,kBAAoB,SAAUjpC,GAC7Cn8B,KAAK+kE,mBAAmBzP,OAAOn5B,EAAM9C,WAAY8C,GACjD,IAAI9kC,EAAS2I,KAAKulE,oBAAoBprE,IAAIgiC,EAAM9C,YAC5ChiC,GACFA,EAAOorE,0BAA0BtmC,EAErC,EAEAkpC,EAAO3uE,UAAUgvE,cAAgB,SAAUruE,GACzC2I,KAAKulE,oBAAoBjjE,IAAIjL,EAAOgiC,WAAYhiC,GACnC2I,KAAK+kE,mBAAmB7I,gBAAgB7kE,EAAOgiC,YACrD/gB,SAAQ,SAAU6jB,GACvB,OAAO9kC,EAAOkrE,uBAAuBpmC,EACvC,GACF,EACAkpC,EAAO3uE,UAAUivE,iBAAmB,SAAUtuE,GAC5C2I,KAAKulE,oBAAoBjQ,OAAOj+D,EAAOgiC,YAC1Br5B,KAAK+kE,mBAAmB7I,gBAAgB7kE,EAAOgiC,YACrD/gB,SAAQ,SAAU6jB,GACvB,OAAO9kC,EAAOorE,0BAA0BtmC,EAC1C,GACF,EACOkpC,CACT,CAtH0B,GCJfQ,EAAgB,CACzBlB,oBAAqB,kBACrB9F,gBAAiB,cACjBwF,gBAAiB,eCHfyB,EAAsC,SAAUC,EAASC,EAAYC,EAAGC,GAM1E,OAAO,IAAKD,IAAMA,EAAItuE,WAAU,SAAUC,EAASC,GACjD,SAASsuE,EAAU5rE,GACjB,IACEqoD,EAAKsjB,EAAUvuD,KAAKpd,GACtB,CAAE,MAAOhD,GACPM,EAAON,EACT,CACF,CACA,SAAS6uE,EAAS7rE,GAChB,IACEqoD,EAAKsjB,EAAiB,MAAE3rE,GAC1B,CAAE,MAAOhD,GACPM,EAAON,EACT,CACF,CACA,SAASqrD,EAAK7nC,GApBhB,IAAexgB,EAqBXwgB,EAAO8d,KAAOjhC,EAAQmjB,EAAOxgB,QArBlBA,EAqBiCwgB,EAAOxgB,MApB9CA,aAAiB0rE,EAAI1rE,EAAQ,IAAI0rE,GAAE,SAAUruE,GAClDA,EAAQ2C,EACV,KAkB4D4tC,KAAKg+B,EAAWC,EAC5E,CACAxjB,GAAMsjB,EAAYA,EAAUrqE,MAAMkqE,EAASC,GAAc,KAAKruD,OAChE,GACF,EACI0uD,EAA0C,SAAUN,EAAS/1B,GAC/D,IASEs2B,EACA5+D,EACAlN,EACA+rE,EAZEl+B,EAAI,CACJm+B,MAAO,EACPC,KAAM,WACJ,GAAW,EAAPjsE,EAAE,GAAQ,MAAMA,EAAE,GACtB,OAAOA,EAAE,EACX,EACAksE,KAAM,GACNC,IAAK,IAMT,OAAOJ,EAAI,CACT5uD,KAAMivD,EAAK,GACX,MAASA,EAAK,GACd,OAAUA,EAAK,IACI,oBAAXvsE,SAA0BksE,EAAElsE,OAAOi9B,UAAY,WACvD,OAAOt3B,IACT,GAAIumE,EACJ,SAASK,EAAK7rE,GACZ,OAAO,SAAU6sC,GACf,OAGJ,SAAci/B,GACZ,GAAIP,EAAG,MAAM,IAAI57B,UAAU,mCAC3B,KAAOrC,OACL,GAAIi+B,EAAI,EAAG5+D,IAAMlN,EAAY,EAARqsE,EAAG,GAASn/D,EAAU,OAAIm/D,EAAG,GAAKn/D,EAAS,SAAOlN,EAAIkN,EAAU,SAAMlN,EAAE5D,KAAK8Q,GAAI,GAAKA,EAAEiQ,SAAWnd,EAAIA,EAAE5D,KAAK8Q,EAAGm/D,EAAG,KAAKhuC,KAAM,OAAOr+B,EAE3J,OADIkN,EAAI,EAAGlN,IAAGqsE,EAAK,CAAS,EAARA,EAAG,GAAQrsE,EAAED,QACzBssE,EAAG,IACT,KAAK,EACL,KAAK,EACHrsE,EAAIqsE,EACJ,MACF,KAAK,EAEH,OADAx+B,EAAEm+B,QACK,CACLjsE,MAAOssE,EAAG,GACVhuC,MAAM,GAEV,KAAK,EACHwP,EAAEm+B,QACF9+D,EAAIm/D,EAAG,GACPA,EAAK,CAAC,GACN,SACF,KAAK,EACHA,EAAKx+B,EAAEs+B,IAAIpvC,MACX8Q,EAAEq+B,KAAKnvC,MACP,SACF,QACE,KAAkB/8B,GAAZA,EAAI6tC,EAAEq+B,MAAYlwE,OAAS,GAAKgE,EAAEA,EAAEhE,OAAS,MAAkB,IAAVqwE,EAAG,IAAsB,IAAVA,EAAG,IAAW,CACtFx+B,EAAI,EACJ,QACF,CACA,GAAc,IAAVw+B,EAAG,MAAcrsE,GAAKqsE,EAAG,GAAKrsE,EAAE,IAAMqsE,EAAG,GAAKrsE,EAAE,IAAK,CACvD6tC,EAAEm+B,MAAQK,EAAG,GACb,KACF,CACA,GAAc,IAAVA,EAAG,IAAYx+B,EAAEm+B,MAAQhsE,EAAE,GAAI,CACjC6tC,EAAEm+B,MAAQhsE,EAAE,GACZA,EAAIqsE,EACJ,KACF,CACA,GAAIrsE,GAAK6tC,EAAEm+B,MAAQhsE,EAAE,GAAI,CACvB6tC,EAAEm+B,MAAQhsE,EAAE,GACZ6tC,EAAEs+B,IAAI7vE,KAAK+vE,GACX,KACF,CACIrsE,EAAE,IAAI6tC,EAAEs+B,IAAIpvC,MAChB8Q,EAAEq+B,KAAKnvC,MACP,SAEJsvC,EAAK72B,EAAKp5C,KAAKmvE,EAAS19B,EAC1B,CAAE,MAAO9wC,GACPsvE,EAAK,CAAC,EAAGtvE,GACTmQ,EAAI,CACN,CAAE,QACA4+D,EAAI9rE,EAAI,CACV,CACA,GAAY,EAARqsE,EAAG,GAAQ,MAAMA,EAAG,GACxB,MAAO,CACLtsE,MAAOssE,EAAG,GAAKA,EAAG,QAAK,EACvBhuC,MAAM,EAEV,CA/DW+pB,CAAK,CAAC7nD,EAAG6sC,GAClB,CACF,CA8DF,EACI,EAAgD,WAClD,IAAK,IAAInsC,EAAI,EAAGnF,EAAI,EAAGuqE,EAAK/kE,UAAUtF,OAAQF,EAAIuqE,EAAIvqE,IAAKmF,GAAKK,UAAUxF,GAAGE,OACxE,IAAI4D,EAAI+B,MAAMV,GAAImB,EAAI,EAA3B,IAA8BtG,EAAI,EAAGA,EAAIuqE,EAAIvqE,IAAK,IAAK,IAAIiG,EAAIT,UAAUxF,GAAIohB,EAAI,EAAGopD,EAAKvkE,EAAE/F,OAAQkhB,EAAIopD,EAAIppD,IAAK9a,IAAKxC,EAAEwC,GAAKL,EAAEmb,GAC9H,OAAOtd,CACT,EAII,EAA2B,WAC7B,SAAS0sE,EAAY3P,EAAS4H,QACZ,IAAZ5H,IACFA,EAAUn/D,SAASy+B,sBAEN,IAAXsoC,IACFA,EAAS8G,GAEX7lE,KAAKojE,OAAShoE,QACd4E,KAAKm3D,QAAUA,EACfn3D,KAAK++D,OAASA,EACd/+D,KAAK+/D,WAAa,IAAI,EAAW//D,MACjCA,KAAK+mE,OAAS,IAAI,EAAO/mE,KAC3B,CAwEA,OAvEA8mE,EAAY3mC,MAAQ,SAAUg3B,EAAS4H,GACrC,IAAI/I,EAAc,IAAI8Q,EAAY3P,EAAS4H,GAE3C,OADA/I,EAAY71B,QACL61B,CACT,EACA8Q,EAAYpwE,UAAUypC,MAAQ,WAC5B,OAAO2lC,EAAU9lE,UAAM,OAAQ,GAAQ,WACrC,OAAOqmE,EAAYrmE,MAAM,SAAU6M,GACjC,OAAQA,EAAG25D,OACT,KAAK,EACH,MAAO,CAAC,EAiEX,IAAI7uE,SAAQ,SAAUC,GACA,WAAvBI,SAASm0C,WACXn0C,SAAS2lC,iBAAiB,mBAAoB/lC,GAE9CA,GAEJ,KAtEQ,KAAK,EAIH,OAHAiV,EAAG45D,OACHzmE,KAAK+/D,WAAW5/B,QAChBngC,KAAK+mE,OAAO5mC,QACL,CAAC,GAEd,GACF,GACF,EAEA2mC,EAAYpwE,UAAU43C,KAAO,WAC3BtuC,KAAK+/D,WAAWzxB,OAChBtuC,KAAK+mE,OAAOz4B,MACd,EACAw4B,EAAYpwE,UAAUswE,SAAW,SAAU3tC,EAAYwmC,GACrD7/D,KAAK41C,KAAK,CACRvc,WAAYA,EACZwmC,sBAAuBA,GAE3B,EACAiH,EAAYpwE,UAAUk/C,KAAO,SAAUn8C,GAGrC,IAFA,IAAI2+D,EAAQp4D,KACRinE,EAAO,GACFtmE,EAAK,EAAGA,EAAK7E,UAAUtF,OAAQmK,IACtCsmE,EAAKtmE,EAAK,GAAK7E,UAAU6E,IAETxE,MAAMF,QAAQxC,GAAQA,EAAO,EAAe,CAACA,GAAOwtE,IAC1D3uD,SAAQ,SAAUioD,GAC5B,OAAOnI,EAAM2O,OAAOvB,eAAejF,EACrC,GACF,EACAuG,EAAYpwE,UAAUwwE,OAAS,SAAUztE,GAGvC,IAFA,IAAI2+D,EAAQp4D,KACRinE,EAAO,GACFtmE,EAAK,EAAGA,EAAK7E,UAAUtF,OAAQmK,IACtCsmE,EAAKtmE,EAAK,GAAK7E,UAAU6E,IAETxE,MAAMF,QAAQxC,GAAQA,EAAO,EAAe,CAACA,GAAOwtE,IAC1D3uD,SAAQ,SAAU+gB,GAC5B,OAAO++B,EAAM2O,OAAOtB,iBAAiBpsC,EACvC,GACF,EACA5iC,OAAOwD,eAAe6sE,EAAYpwE,UAAW,cAAe,CAE1DyD,IAAK,WACH,OAAO6F,KAAK+mE,OAAO7iC,SAASjnC,KAAI,SAAUq3B,GACxC,OAAOA,EAAQ0jC,UACjB,GACF,EACA99D,YAAY,EACZmzC,cAAc,IAEhBy5B,EAAYpwE,UAAUywE,qCAAuC,SAAUhQ,EAAS99B,GAC9E,IAAI/E,EAAUt0B,KAAK+mE,OAAOnB,kCAAkCzO,EAAS99B,GACrE,OAAO/E,EAAUA,EAAQ0jC,WAAa,IACxC,EAEA8O,EAAYpwE,UAAU+/D,YAAc,SAAUh+D,EAAOW,EAASw9C,GAC5D52C,KAAKojE,OAAO3qE,MAAM,iBAAkBW,EAASX,EAAOm+C,EACtD,EACOkwB,CACT,CAtF+B,GCxHxB,SAASM,EAAwBxyC,GAEtC,OADcurC,EAAiCvrC,EAAa,WAC7C0hC,QAAO,SAAUlxC,EAAYiiD,GAC1C,OAAO5wE,OAAO46B,OAAOjM,IAMhBvY,EAAK,CAAC,GADTxT,GAFgCwB,EAH4BwsE,GAK/C,SACU,CACzBltE,IAAK,WACH,IAAIqqE,EAAUxkE,KAAKwkE,QACnB,GAAIA,EAAQ1jC,IAAIjmC,GACd,OAAO2pE,EAAQrqE,IAAIU,GAEnB,IAAI2gE,EAAYgJ,EAAQ5B,iBAAiB/nE,GACzC,MAAM,IAAInC,MAAM,sBAAyB8iE,EAAY,IAEzD,GACC3uD,EAAG,MAAQm2D,EAAW3pE,IAAS,CAChCc,IAAK,WACH,OAAO6F,KAAKwkE,QAAQ1jC,IAAIjmC,EAC1B,GACCgS,IAjBL,IAAsChS,EAChCgS,EACAxT,CAJJ,GAAG,CAAC,EACN,CCLO,SAASiuE,EAAyB1yC,GAEvC,OADcurC,EAAiCvrC,EAAa,WAC7C0hC,QAAO,SAAUlxC,EAAYmiD,GAC1C,OAAO9wE,OAAO46B,OAAOjM,IAKhBvY,EAAK,CAAC,IAFwBxT,EAH4BkuE,GAKvC,UAAY,CACpCptE,IAAK,WACH,IAAIhB,EAAS6G,KAAK8mC,QAAQtL,KAAKniC,GAC/B,GAAIF,EACF,OAAOA,EAEP,MAAM,IAAIT,MAAM,2BAA8BsH,KAAKq5B,WAAa,IAAMhgC,EAAO,IAEjF,GACCwT,EAAGxT,EAAO,WAAa,CACxBc,IAAK,WACH,OAAO6F,KAAK8mC,QAAQ+8B,QAAQxqE,EAC9B,GACCwT,EAAG,MAAQm2D,EAAW3pE,GAAQ,UAAY,CAC3Cc,IAAK,WACH,OAAO6F,KAAK8mC,QAAQhG,IAAIznC,EAC1B,GACCwT,IAnBL,IAAuCxT,EACjCwT,CAHJ,GAAG,CAAC,EACN,CCLO,SAAS26D,GAAwB5yC,GACtC,IAAI6yC,EAAuBhH,EAAiC7rC,EAAa,UACrE8yC,EAAwB,CAC1BpI,mBAAoB,CAClBnlE,IAAK,WACH,IAAIi+D,EAAQp4D,KACZ,OAAOynE,EAAqBnR,QAAO,SAAUv7C,EAAQ4sD,GACnD,IAAI96D,EACA+6D,EAAkBC,GAAyBF,GAC3CpO,EAAgBnB,EAAMniE,KAAK4sE,uBAAuB+E,EAAgB/sE,KACtE,OAAOpE,OAAO46B,OAAOtW,IAASlO,EAAK,CAAC,GAAM0sD,GAAiBqO,EAAiB/6D,GAC9E,GAAG,CAAC,EACN,IAGJ,OAAO46D,EAAqBnR,QAAO,SAAUlxC,EAAYuiD,GACvD,OAAOlxE,OAAO46B,OAAOjM,EAIlB,SAA0CuiD,GAC/C,IAAI96D,EACA0zD,EAAasH,GAAyBF,GACtC1uE,EAAOsnE,EAAWtnE,KACpB4B,EAAM0lE,EAAW1lE,IACjBxB,EAAOknE,EAAWlnE,KAChByuE,EAAOC,GAAQ9uE,GACjB+uE,EAAQC,GAAQhvE,IAASgvE,GAAQC,QACnC,OAAOr7D,EAAK,CAAC,GAAMxT,GAAQ,CACzBc,IAAK,WACH,IAAII,EAAQyF,KAAK/J,KAAKkE,IAAIU,GAC1B,OAAc,OAAVN,EACKutE,EAAKvtE,GAELgmE,EAAW1vB,YAEtB,EACAvuC,IAAK,SAAU/H,QACChB,IAAVgB,EACFyF,KAAK/J,KAAKq/D,OAAOz6D,GAEjBmF,KAAK/J,KAAKqM,IAAIzH,EAAKmtE,EAAMztE,GAE7B,GACCsS,EAAG,MAAQm2D,EAAW3pE,IAAS,CAChCc,IAAK,WACH,OAAO6F,KAAK/J,KAAK6qC,IAAIjmC,EACvB,GACCgS,CACL,CAjCqCs7D,CAAiCR,GACpE,GAAGD,EACL,CAgCA,SAASG,GAAyBh7D,GAChC,IAAIhI,EAAQgI,EAAG,GAEX5T,EAGN,SAAgCmvE,GAC9B,OAAQA,GACN,KAAKjsE,MACH,MAAO,QACT,KAAKksE,QACH,MAAO,UACT,KAAKC,OACH,MAAO,SACT,KAAK7xE,OACH,MAAO,SACT,KAAKquB,OACH,MAAO,SAEX,MAAM,IAAIpsB,MAAM,gCAAmC0vE,EAAe,IACpE,CAjBaG,CADM17D,EAAG,IAEpB,OAiBF,SAAwChI,EAAO5L,GAC7C,IAAI4B,EAAMooE,EAAUp+D,GAAS,SAC7B,MAAO,CACL5L,KAAMA,EACN4B,IAAKA,EACLxB,KAAMypE,EAASjoE,GACf,gBAAIg2C,GACF,OAAO23B,GAAoBvvE,EAC7B,EAEJ,CA3BSwvE,CAA+B5jE,EAAO5L,EAC/C,CA2BA,IAAIuvE,GAAsB,CACxB,SAAIljE,GACF,MAAO,EACT,EACAojE,SAAS,EACT5kE,OAAQ,EACR,UAAI9I,GACF,MAAO,CAAC,CACV,EACA8M,OAAQ,IAENigE,GAAU,CACZziE,MAAO,SAAU/K,GACf,IAAI+K,EAAQsoC,KAAKC,MAAMtzC,GACvB,IAAK4B,MAAMF,QAAQqJ,GACjB,MAAM,IAAIolC,UAAU,kBAEtB,OAAOplC,CACT,EACAojE,QAAS,SAAUnuE,GACjB,QAAkB,KAATA,GAAyB,SAATA,EAC3B,EACAuJ,OAAQ,SAAUvJ,GAChB,OAAOulB,WAAWvlB,EACpB,EACAS,OAAQ,SAAUT,GAChB,IAAIS,EAAS4yC,KAAKC,MAAMtzC,GACxB,GAAe,OAAXS,GAAoC,iBAAVA,GAAsBmB,MAAMF,QAAQjB,GAChE,MAAM,IAAI0vC,UAAU,mBAEtB,OAAO1vC,CACT,EACA8M,OAAQ,SAAUvN,GAChB,OAAOA,CACT,GAEE0tE,GAAU,CACZC,QAOF,SAAqB3tE,GACnB,MAAO,GAAKA,CACd,EARE+K,MAAOqjE,GACP3tE,OAAQ2tE,IAEV,SAASA,GAAUpuE,GACjB,OAAOqzC,KAAKg7B,UAAUruE,EACxB,CC7HA,IAAI,GAA0B,WAC5B,SAASsuE,EAAWv0C,GAClBt0B,KAAKs0B,QAAUA,CACjB,CA8DA,OA7DA79B,OAAOwD,eAAe4uE,EAAWnyE,UAAW,cAAe,CACzDyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ0hC,WACtB,EACA97D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe4uE,EAAWnyE,UAAW,QAAS,CACnDyD,IAAK,WACH,OAAO6F,KAAKs0B,QAAQ6H,KACtB,EACAjiC,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe4uE,EAAWnyE,UAAW,UAAW,CACrDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMg7B,OACpB,EACAj9D,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe4uE,EAAWnyE,UAAW,aAAc,CACxDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAM9C,UACpB,EACAn/B,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe4uE,EAAWnyE,UAAW,UAAW,CACrDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAM2K,OACpB,EACA5sC,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe4uE,EAAWnyE,UAAW,UAAW,CACrDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMqoC,OACpB,EACAtqE,YAAY,EACZmzC,cAAc,IAEhB52C,OAAOwD,eAAe4uE,EAAWnyE,UAAW,OAAQ,CAClDyD,IAAK,WACH,OAAO6F,KAAKm8B,MAAMlmC,IACpB,EACAiE,YAAY,EACZmzC,cAAc,IAEhBw7B,EAAWnyE,UAAUupE,WAAa,WAElC,EACA4I,EAAWnyE,UAAUu+D,QAAU,WAE/B,EACA4T,EAAWnyE,UAAUw+D,WAAa,WAElC,EACA2T,EAAWpH,UAAY,CAAC2F,EAAyBE,EAA0BE,IAC3EqB,EAAW/hC,QAAU,GACrB+hC,EAAW5wD,OAAS,CAAC,EACd4wD,CACT,CAlE8B,E,oBCIrB,SAAUzxE,EAASq9D,EAAGqU,GAC7B,aAEA,SAASC,EAAsBxxE,GAC7B,OAAOA,GAAkB,kBAANA,GAAkB,YAAaA,EAAIA,EAAI,CACxD,QAAWA,EAEf,CACA,IAAIyxE,EAA0BD,EAAsBtU,GAChDwU,EAA+BF,EAAsBD,GACzD,SAASI,EAAkB/vE,EAAQ88C,GACjC,IAAK,IAAI3/C,EAAI,EAAGA,EAAI2/C,EAAMz/C,OAAQF,IAAK,CACrC,IAAI8gE,EAAanhB,EAAM3/C,GACvB8gE,EAAWl9D,WAAak9D,EAAWl9D,aAAc,EACjDk9D,EAAW/pB,cAAe,EACtB,UAAW+pB,IAAYA,EAAWzhB,UAAW,GACjDl/C,OAAOwD,eAAed,EAAQi+D,EAAWv8D,IAAKu8D,EAChD,CACF,CACA,SAAS+R,EAAaC,EAAaC,EAAYC,GAM7C,OALID,GAAYH,EAAkBE,EAAY1yE,UAAW2yE,GACrDC,GAAaJ,EAAkBE,EAAaE,GAChD7yE,OAAOwD,eAAemvE,EAAa,YAAa,CAC9CzzB,UAAU,IAELyzB,CACT,CACA,SAASG,IAYP,OAXAA,EAAW9yE,OAAO46B,OAAS56B,OAAO46B,OAAOv2B,OAAS,SAAU3B,GAC1D,IAAK,IAAI7C,EAAI,EAAGA,EAAIwF,UAAUtF,OAAQF,IAAK,CACzC,IAAIqM,EAAS7G,UAAUxF,GACvB,IAAK,IAAIuE,KAAO8H,EACVlM,OAAOC,UAAUC,eAAeC,KAAK+L,EAAQ9H,KAC/C1B,EAAO0B,GAAO8H,EAAO9H,GAG3B,CACA,OAAO1B,CACT,EACOowE,EAAS1tE,MAAMmE,KAAMlE,UAC9B,CACA,SAAS0tE,EAAeC,EAAUC,GAChCD,EAAS/yE,UAAYD,OAAOmE,OAAO8uE,EAAWhzE,WAC9C+yE,EAAS/yE,UAAUk+B,YAAc60C,EACjCE,EAAgBF,EAAUC,EAC5B,CACA,SAASC,EAAgB3vE,EAAGzB,GAK1B,OAJAoxE,EAAkBlzE,OAAO4lE,eAAiB5lE,OAAO4lE,eAAevhE,OAAS,SAAyBd,EAAGzB,GAEnG,OADAyB,EAAEsiE,UAAY/jE,EACPyB,CACT,EACO2vE,EAAgB3vE,EAAGzB,EAC5B,CAYA,IAAIqxE,EAAiB,gBACjBC,EAAU,IACVC,EAA0B,IAE9B,SAAS51C,EAAOx3B,GACd,OAAY,OAARA,GAA+B,qBAARA,EAClB,GAAKA,EAEP,CAAC,EAAEN,SAASxF,KAAK8F,GAAKyI,MAAM,eAAe,GAAGqD,aACvD,CACA,SAASuhE,IACP,MAAO,CACL11B,SAAUu1B,EACVx2B,aAAcw2B,EACd11B,OAAQ,SAAgBv7C,GACtB,GAAIqwE,EAAoB,QAAErwE,EAAMQ,QAAQ0sC,GAAG7lC,MACzC,OAAOrH,EAAMk7C,UAAUtJ,QAAQ1uC,MAAMmE,KAAMlE,UAI/C,EAEJ,CACA,SAASkuE,EAAsB7pD,GAC7B,IAAIi4C,EAAQp4D,KACRiqE,GAAS,EASb,OARAjB,EAAoB,QAAEhpE,MAAM6yC,IAAIq3B,EAAKN,gBAAgB,WACnDK,GAAS,CACX,IACAzwE,YAAW,WACJywE,GACHC,EAAKC,qBAAqB/R,EAE9B,GAAGj4C,GACIngB,IACT,CACA,SAASoqE,IACPpB,EAAoB,QAAE7rE,GAAGktE,qBAAuBL,EAChDhB,EAAoB,QAAErwE,MAAM6xC,QAAQ0/B,EAAKN,gBAAkBG,GAC7D,CAKA,IAAIG,EAAO,CACTN,eAAgB,kBAChBU,OAAQ,SAAgB/iD,GACtB,GAEEA,MAAarjB,KAAKgyB,SAAW2zC,SACtB7xE,SAAS8jC,eAAevU,IACjC,OAAOA,CACT,EACAgjD,uBAAwB,SAAgCpT,GACtD,IAAI9iC,EAAW8iC,EAAQpjC,aAAa,eACpC,IAAKM,GAAyB,MAAbA,EAAkB,CACjC,IAAIm2C,EAAWrT,EAAQpjC,aAAa,QACpCM,EAAWm2C,GAAyB,MAAbA,EAAmBA,EAASlW,OAAS,EAC9D,CACA,IACE,OAAOt8D,SAASgmC,cAAc3J,GAAYA,EAAW,IACvD,CAAE,MAAOgU,GACP,OAAO,IACT,CACF,EACAoiC,iCAAkC,SAA0CtT,GAC1E,IAAKA,EACH,OAAO,EAGT,IAAIuT,EAAqB1B,EAAoB,QAAE7R,GAAShoB,IAAI,uBACxDw7B,EAAkB3B,EAAoB,QAAE7R,GAAShoB,IAAI,oBACrDy7B,EAA0B9qD,WAAW4qD,GACrCG,EAAuB/qD,WAAW6qD,GAEtC,OAAKC,GAA4BC,GAIjCH,EAAqBA,EAAmBz8D,MAAM,KAAK,GACnD08D,EAAkBA,EAAgB18D,MAAM,KAAK,IACrC6R,WAAW4qD,GAAsB5qD,WAAW6qD,IAAoBb,GAL/D,CAMX,EACAgB,OAAQ,SAAgB3T,GACtB,OAAOA,EAAQ9Y,YACjB,EACA8rB,qBAAsB,SAA8BhT,GAClD6R,EAAoB,QAAE7R,GAAS3jB,QAAQo2B,EACzC,EACAmB,sBAAuB,WACrB,OAAO1C,QAAQuB,EACjB,EACAoB,UAAW,SAAmBtuE,GAC5B,OAAQA,EAAI,IAAMA,GAAK22B,QACzB,EACA43C,gBAAiB,SAAyBC,EAAe/pE,EAAQgqE,GAC/D,IAAK,IAAIlwE,KAAYkwE,EACnB,GAAI10E,OAAOC,UAAUC,eAAeC,KAAKu0E,EAAalwE,GAAW,CAC/D,IAAImwE,EAAgBD,EAAYlwE,GAC5BV,EAAQ4G,EAAOlG,GACfowE,EAAY9wE,GAAS2vE,EAAKc,UAAUzwE,GAAS,UAAY25B,EAAO35B,GACpE,IAAK,IAAIkI,OAAO2oE,GAAevlE,KAAKwlE,GAClC,MAAM,IAAI3yE,MAAMwyE,EAAc3kE,cAAd2kE,aAAoDjwE,EAAW,oBAAwBowE,EAAvFH,wBAAsIE,EAAgB,KAE1K,CAEJ,EACAE,eAAgB,SAAwBnU,GACtC,IAAKn/D,SAASy+B,gBAAgB80C,aAC5B,OAAO,KAGT,GAAmC,oBAAxBpU,EAAQpoB,YAA4B,CAC7C,IAAI7N,EAAOi2B,EAAQpoB,cACnB,OAAO7N,aAAgBsqC,WAAatqC,EAAO,IAC7C,CACA,OAAIi2B,aAAmBqU,WACdrU,EAGJA,EAAQnjC,WAGNk2C,EAAKoB,eAAenU,EAAQnjC,YAF1B,IAGX,EACAy3C,gBAAiB,WACf,GAAqC,qBAA1BzC,EAAoB,QAC7B,MAAM,IAAIt+B,UAAU,kGAEtB,IAAI1Y,EAAUg3C,EAAoB,QAAE7rE,GAAGw3B,OAAO1mB,MAAM,KAAK,GAAGA,MAAM,KAC9Dy9D,EAAW,EACXC,EAAU,EACVC,EAAW,EACXC,EAAW,EACXC,EAAW,EACf,GAAI95C,EAAQ,GAAK25C,GAAW35C,EAAQ,GAAK45C,GAAY55C,EAAQ,KAAO05C,GAAY15C,EAAQ,KAAO45C,GAAY55C,EAAQ,GAAK65C,GAAY75C,EAAQ,IAAM85C,EAChJ,MAAM,IAAIpzE,MAAM,8EAEpB,GAEFwxE,EAAKuB,kBACLrB,IAMA,IAAI2B,EAAS,QACTC,EAAY,QACZC,EAAa,WACbC,EAAc,IAAMD,EACpBE,EAAiB,YACjBC,EAAuBpD,EAAoB,QAAE7rE,GAAG4uE,GAChDM,EAAmB,QACnBC,EAAoB,OACpBC,EAAoB,OACpBC,EAAc,QAAUN,EACxBO,EAAe,SAAWP,EAC1BQ,EAAyB,QAAUR,EAAcC,EACjDQ,EAAmB,yBAKnBC,EAAqB,WACvB,SAASA,EAAMzV,GACbn3D,KAAK6sE,SAAW1V,CAClB,CAEA,IAAI2V,EAASF,EAAMl2E,UAgFnB,OA7EAo2E,EAAOC,MAAQ,SAAe5V,GAC5B,IAAI6V,EAAchtE,KAAK6sE,SACnB1V,IACF6V,EAAchtE,KAAKitE,gBAAgB9V,IAEnBn3D,KAAKktE,mBAAmBF,GAC1B92B,sBAGhBl2C,KAAKmtE,eAAeH,EACtB,EACAF,EAAOM,QAAU,WACfpE,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAUZ,GAChDjsE,KAAK6sE,SAAW,IAClB,EAGAC,EAAOG,gBAAkB,SAAyB9V,GAChD,IAAI9iC,EAAW61C,EAAKK,uBAAuBpT,GACvC/2B,GAAS,EAOb,OANI/L,IACF+L,EAASpoC,SAASgmC,cAAc3J,IAE7B+L,IACHA,EAAS4oC,EAAoB,QAAE7R,GAASpwB,QAAQ,IAAMslC,GAAkB,IAEnEjsC,CACT,EACA0sC,EAAOI,mBAAqB,SAA4B/V,GACtD,IAAIkW,EAAarE,EAAoB,QAAEvzB,MAAM+2B,GAE7C,OADAxD,EAAoB,QAAE7R,GAAS3jB,QAAQ65B,GAChCA,CACT,EACAP,EAAOK,eAAiB,SAAwBhW,GAC9C,IAAIiB,EAAQp4D,KAEZ,GADAgpE,EAAoB,QAAE7R,GAAS9O,YAAYkkB,GACtCvD,EAAoB,QAAE7R,GAAS1O,SAAS6jB,GAA7C,CAIA,IAAI5B,EAAqBR,EAAKO,iCAAiCtT,GAC/D6R,EAAoB,QAAE7R,GAAStkB,IAAIq3B,EAAKN,gBAAgB,SAAUjxE,GAChE,OAAOy/D,EAAMkV,gBAAgBnW,EAASx+D,EACxC,IAAG0xE,qBAAqBK,EAJxB,MAFE1qE,KAAKstE,gBAAgBnW,EAOzB,EACA2V,EAAOQ,gBAAkB,SAAyBnW,GAChD6R,EAAoB,QAAE7R,GAAS5c,SAAS/G,QAAQi5B,GAAcvjC,QAChE,EAGA0jC,EAAMW,iBAAmB,SAA0BpsE,GACjD,OAAOnB,KAAKk1B,MAAK,WACf,IAAIs4C,EAAWxE,EAAoB,QAAEhpE,MACjC/J,EAAOu3E,EAASv3E,KAAKg2E,GACpBh2E,IACHA,EAAO,IAAI22E,EAAM5sE,MACjBwtE,EAASv3E,KAAKg2E,EAAYh2E,IAEb,UAAXkL,GACFlL,EAAKkL,GAAQnB,KAEjB,GACF,EACA4sE,EAAMa,eAAiB,SAAwBC,GAC7C,OAAO,SAAU/0E,GACXA,GACFA,EAAM46C,iBAERm6B,EAAcX,MAAM/sE,KACtB,CACF,EACAmpE,EAAayD,EAAO,KAAM,CAAC,CACzB/xE,IAAK,UACLV,IAAK,WACH,OAAO6xE,CACT,KAEKY,CACT,CAtFyB,GA2FzB5D,EAAoB,QAAEhxE,UAAU26C,GAAG+5B,EAAwBC,EAAkBC,EAAMa,eAAe,IAAIb,IAKtG5D,EAAoB,QAAE7rE,GAAG4uE,GAAUa,EAAMW,iBACzCvE,EAAoB,QAAE7rE,GAAG4uE,GAAQ3C,YAAcwD,EAC/C5D,EAAoB,QAAE7rE,GAAG4uE,GAAQrX,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAG4uE,GAAUK,EAC5BQ,EAAMW,gBACf,EAMA,IAAII,EAAS,SACTC,EAAY,QACZC,EAAa,YACbC,EAAc,IAAMD,EACpBE,EAAiB,YACjBC,EAAuBhF,EAAoB,QAAE7rE,GAAGwwE,GAChDM,EAAsB,SACtBC,EAAoB,MACpBC,EAAmB,QACnBC,EAAyB,QAAUN,EAAcC,EACjDM,EAA4B,QAAUP,EAAcC,EAAxB,QAAyDD,EAAcC,EACnGO,EAAwB,OAASR,EAAcC,EAC/CQ,EAA8B,0BAC9BC,EAAwB,0BACxBC,EAAyB,yBACzBC,EAAgC,+BAChCC,EAAiB,6BACjBC,EAAoB,UACpBC,EAAkB,OAKlBC,EAAsB,WACxB,SAASA,EAAO3X,GACdn3D,KAAK6sE,SAAW1V,EAChBn3D,KAAK+uE,0BAA2B,CAClC,CAEA,IAAIjC,EAASgC,EAAOp4E,UAoEpB,OAjEAo2E,EAAO18B,OAAS,WACd,IAAI4+B,GAAqB,EACrBC,GAAiB,EACjBjC,EAAchE,EAAoB,QAAEhpE,KAAK6sE,UAAU9lC,QAAQynC,GAAuB,GACtF,GAAIxB,EAAa,CACf,IAAI9wE,EAAQ8D,KAAK6sE,SAAS7uC,cAAc2wC,GACxC,GAAIzyE,EAAO,CACT,GAAmB,UAAfA,EAAMjD,KACR,GAAIiD,EAAMwlC,SAAW1hC,KAAK6sE,SAASqC,UAAUx3C,SAASu2C,GACpDe,GAAqB,MAChB,CACL,IAAI5tC,EAAgB4rC,EAAYhvC,cAAc4wC,GAC1CxtC,GACF4nC,EAAoB,QAAE5nC,GAAeinB,YAAY4lB,EAErD,CAEEe,IAEiB,aAAf9yE,EAAMjD,MAAsC,UAAfiD,EAAMjD,OACrCiD,EAAMwlC,SAAW1hC,KAAK6sE,SAASqC,UAAUx3C,SAASu2C,IAE/CjuE,KAAK+uE,0BACR/F,EAAoB,QAAE9sE,GAAOs3C,QAAQ,WAGzCt3C,EAAMilC,QACN8tC,GAAiB,CACnB,CACF,CACMjvE,KAAK6sE,SAASnS,aAAa,aAAe16D,KAAK6sE,SAASqC,UAAUx3C,SAAS,cAC3Eu3C,GACFjvE,KAAK6sE,SAASx0E,aAAa,gBAAiB2H,KAAK6sE,SAASqC,UAAUx3C,SAASu2C,IAE3Ee,GACFhG,EAAoB,QAAEhpE,KAAK6sE,UAAUvkB,YAAY2lB,GAGvD,EACAnB,EAAOM,QAAU,WACfpE,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAUgB,GAChD7tE,KAAK6sE,SAAW,IAClB,EAGAiC,EAAOvB,iBAAmB,SAA0BpsE,EAAQguE,GAC1D,OAAOnvE,KAAKk1B,MAAK,WACf,IAAIs4C,EAAWxE,EAAoB,QAAEhpE,MACjC/J,EAAOu3E,EAASv3E,KAAK43E,GACpB53E,IACHA,EAAO,IAAI64E,EAAO9uE,MAClBwtE,EAASv3E,KAAK43E,EAAY53E,IAE5BA,EAAK84E,yBAA2BI,EACjB,WAAXhuE,GACFlL,EAAKkL,IAET,GACF,EACAgoE,EAAa2F,EAAQ,KAAM,CAAC,CAC1Bj0E,IAAK,UACLV,IAAK,WACH,OAAOyzE,CACT,KAEKkB,CACT,CA3E0B,GAgF1B9F,EAAoB,QAAEhxE,UAAU26C,GAAGy7B,EAAwBG,GAA6B,SAAU51E,GAChG,IAAIopC,EAASppC,EAAMQ,OACfi2E,EAAgBrtC,EAIpB,GAHKinC,EAAoB,QAAEjnC,GAAQ0mB,SAASylB,KAC1CnsC,EAASinC,EAAoB,QAAEjnC,GAAQgF,QAAQ8nC,GAAiB,KAE7D9sC,GAAUA,EAAO24B,aAAa,aAAe34B,EAAOmtC,UAAUx3C,SAAS,YAC1E/+B,EAAM46C,qBACD,CACL,IAAI87B,EAAWttC,EAAO/D,cAAc2wC,GACpC,GAAIU,IAAaA,EAAS3U,aAAa,aAAe2U,EAASH,UAAUx3C,SAAS,aAGhF,YAFA/+B,EAAM46C,iBAIsB,UAA1B67B,EAAc/X,SAA0C,UAAnBt1B,EAAOs1B,SAC9CyX,EAAOvB,iBAAiB32E,KAAKoyE,EAAoB,QAAEjnC,GAAS,SAAoC,UAA1BqtC,EAAc/X,QAExF,CACF,IAAG1kB,GAAG07B,EAA2BE,GAA6B,SAAU51E,GACtE,IAAIopC,EAASinC,EAAoB,QAAErwE,EAAMQ,QAAQ4tC,QAAQ8nC,GAAiB,GAC1E7F,EAAoB,QAAEjnC,GAAQumB,YAAY6lB,EAAkB,eAAetoE,KAAKlN,EAAMM,MACxF,IACA+vE,EAAoB,QAAE1tE,QAAQq3C,GAAG27B,GAAuB,WAItD,IADA,IAAIj3B,EAAU,GAAG77C,MAAM5E,KAAKoB,SAASskC,iBAAiBoyC,IAC7Cp4E,EAAI,EAAG2J,EAAMo3C,EAAQ7gD,OAAQF,EAAI2J,EAAK3J,IAAK,CAClD,IAAIyrC,EAASsV,EAAQ/gD,GACjB4F,EAAQ6lC,EAAO/D,cAAc2wC,GAC7BzyE,EAAMwlC,SAAWxlC,EAAMw+D,aAAa,WACtC34B,EAAOmtC,UAAU58D,IAAI27D,GAErBlsC,EAAOmtC,UAAUhmC,OAAO+kC,EAE5B,CAGA,IAAK,IAAIttE,EAAK,EAAG2uE,GADjBj4B,EAAU,GAAG77C,MAAM5E,KAAKoB,SAASskC,iBAAiBmyC,KAClBj4E,OAAQmK,EAAK2uE,EAAM3uE,IAAM,CACvD,IAAI4uE,EAAUl4B,EAAQ12C,GACuB,SAAzC4uE,EAAQx7C,aAAa,gBACvBw7C,EAAQL,UAAU58D,IAAI27D,GAEtBsB,EAAQL,UAAUhmC,OAAO+kC,EAE7B,CACF,IAKAjF,EAAoB,QAAE7rE,GAAGwwE,GAAUmB,EAAOvB,iBAC1CvE,EAAoB,QAAE7rE,GAAGwwE,GAAQvE,YAAc0F,EAC/C9F,EAAoB,QAAE7rE,GAAGwwE,GAAQjZ,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAGwwE,GAAUK,EAC5Bc,EAAOvB,gBAChB,EAMA,IAAIiC,EAAS,WACTC,GAAY,QACZC,GAAa,cACbC,GAAc,IAAMD,GACpBE,GAAiB,YACjBC,GAAuB7G,EAAoB,QAAE7rE,GAAGqyE,GAChDM,GAAqB,GAErBC,GAAsB,GAEtBC,GAAyB,IAEzBC,GAAkB,GAClBC,GAAsB,WACtBC,GAAsB,SACtBC,GAAmB,QACnBC,GAAmB,sBACnBC,GAAkB,qBAClBC,GAAkB,qBAClBC,GAAkB,qBAClBC,GAA2B,gBAC3BC,GAAiB,OACjBC,GAAiB,OACjBC,GAAiB,OACjBC,GAAkB,QAClBC,GAAc,QAAUnB,GACxBoB,GAAa,OAASpB,GACtBqB,GAAgB,UAAYrB,GAC5BsB,GAAmB,aAAetB,GAClCuB,GAAmB,aAAevB,GAClCwB,GAAmB,aAAexB,GAClCyB,GAAkB,YAAczB,GAChC0B,GAAiB,WAAa1B,GAC9B2B,GAAoB,cAAgB3B,GACpC4B,GAAkB,YAAc5B,GAChC6B,GAAmB,YAAc7B,GACjC8B,GAAwB,OAAS9B,GAAcC,GAC/C8B,GAAyB,QAAU/B,GAAcC,GACjD+B,GAAoB,UACpBC,GAAuB,wBACvBC,GAAgB,iBAChBC,GAAoB,qBACpBC,GAAqB,2CACrBC,GAAsB,uBACtBC,GAAsB,gCACtBC,GAAqB,yBACrBC,GAAY,CACdxuB,SAAU,IACVyuB,UAAU,EACVC,OAAO,EACPC,MAAO,QACPpgC,MAAM,EACNqgC,OAAO,GAELC,GAAgB,CAClB7uB,SAAU,mBACVyuB,SAAU,UACVC,MAAO,mBACPC,MAAO,mBACPpgC,KAAM,UACNqgC,MAAO,WAELE,GAAc,CAChBC,MAAO,QACPC,IAAK,OAMHC,GAAwB,WAC1B,SAASA,EAASzb,EAASh2D,GACzBnB,KAAK6yE,OAAS,KACd7yE,KAAK8yE,UAAY,KACjB9yE,KAAK+yE,eAAiB,KACtB/yE,KAAKgzE,WAAY,EACjBhzE,KAAKizE,YAAa,EAClBjzE,KAAKkzE,aAAe,KACpBlzE,KAAKmzE,YAAc,EACnBnzE,KAAKozE,YAAc,EACnBpzE,KAAKuC,QAAUvC,KAAKqzE,WAAWlyE,GAC/BnB,KAAK6sE,SAAW1V,EAChBn3D,KAAKszE,mBAAqBtzE,KAAK6sE,SAAS7uC,cAAcg0C,IACtDhyE,KAAKuzE,gBAAkB,iBAAkBv7E,SAASy+B,iBAAmB+8C,UAAUC,eAAiB,EAChGzzE,KAAK0zE,cAAgBrL,QAAQ/sE,OAAOq4E,cAAgBr4E,OAAOs4E,gBAC3D5zE,KAAK6zE,oBACP,CAEA,IAAI/G,EAAS8F,EAASl8E,UAoXtB,OAjXAo2E,EAAOn1D,KAAO,WACP3X,KAAKizE,YACRjzE,KAAK8zE,OAAOpD,GAEhB,EACA5D,EAAOiH,gBAAkB,WACvB,IAAIvG,EAAWxE,EAAoB,QAAEhpE,KAAK6sE,WAGrC70E,SAASyrD,QAAU+pB,EAAS3nC,GAAG,aAA8C,WAA/B2nC,EAASr+B,IAAI,eAC9DnvC,KAAK2X,MAET,EACAm1D,EAAOnmC,KAAO,WACP3mC,KAAKizE,YACRjzE,KAAK8zE,OAAOnD,GAEhB,EACA7D,EAAOwF,MAAQ,SAAe35E,GACvBA,IACHqH,KAAKgzE,WAAY,GAEfhzE,KAAK6sE,SAAS7uC,cAAc+zC,MAC9B7H,EAAKC,qBAAqBnqE,KAAK6sE,UAC/B7sE,KAAKg0E,OAAM,IAEbC,cAAcj0E,KAAK8yE,WACnB9yE,KAAK8yE,UAAY,IACnB,EACAhG,EAAOkH,MAAQ,SAAer7E,GACvBA,IACHqH,KAAKgzE,WAAY,GAEfhzE,KAAK8yE,YACPmB,cAAcj0E,KAAK8yE,WACnB9yE,KAAK8yE,UAAY,MAEf9yE,KAAKuC,QAAQohD,WAAa3jD,KAAKgzE,YACjChzE,KAAKk0E,kBACLl0E,KAAK8yE,UAAYqB,aAAan8E,SAASo8E,gBAAkBp0E,KAAK+zE,gBAAkB/zE,KAAK2X,MAAM7c,KAAKkF,MAAOA,KAAKuC,QAAQohD,UAExH,EACAmpB,EAAOzsE,GAAK,SAAY2tB,GACtB,IAAIoqC,EAAQp4D,KACZA,KAAK+yE,eAAiB/yE,KAAK6sE,SAAS7uC,cAAc4zC,IAClD,IAAIyC,EAAcr0E,KAAKs0E,cAAct0E,KAAK+yE,gBAC1C,KAAI/kD,EAAQhuB,KAAK6yE,OAAOr8E,OAAS,GAAKw3B,EAAQ,GAG9C,GAAIhuB,KAAKizE,WACPjK,EAAoB,QAAEhpE,KAAK6sE,UAAUh6B,IAAIk+B,IAAY,WACnD,OAAO3Y,EAAM/3D,GAAG2tB,EAClB,QAHF,CAMA,GAAIqmD,IAAgBrmD,EAGlB,OAFAhuB,KAAKsyE,aACLtyE,KAAKg0E,QAGP,IAAIxvD,EAAYwJ,EAAQqmD,EAAc3D,GAAiBC,GACvD3wE,KAAK8zE,OAAOtvD,EAAWxkB,KAAK6yE,OAAO7kD,GAPnC,CAQF,EACA8+C,EAAOM,QAAU,WACfpE,EAAoB,QAAEhpE,KAAK6sE,UAAU95B,IAAI48B,IACzC3G,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAU6C,IAChD1vE,KAAK6yE,OAAS,KACd7yE,KAAKuC,QAAU,KACfvC,KAAK6sE,SAAW,KAChB7sE,KAAK8yE,UAAY,KACjB9yE,KAAKgzE,UAAY,KACjBhzE,KAAKizE,WAAa,KAClBjzE,KAAK+yE,eAAiB,KACtB/yE,KAAKszE,mBAAqB,IAC5B,EAGAxG,EAAOuG,WAAa,SAAoBlyE,GAGtC,OAFAA,EAASooE,EAAS,CAAC,EAAG4I,GAAWhxE,GACjC+oE,EAAKe,gBAAgBuE,EAAQruE,EAAQqxE,IAC9BrxE,CACT,EACA2rE,EAAOyH,aAAe,WACpB,IAAIC,EAAYtwE,KAAKC,IAAInE,KAAKozE,aAC9B,KAAIoB,GAAavE,IAAjB,CAGA,IAAIzrD,EAAYgwD,EAAYx0E,KAAKozE,YACjCpzE,KAAKozE,YAAc,EAEf5uD,EAAY,GACdxkB,KAAK2mC,OAGHniB,EAAY,GACdxkB,KAAK2X,MATP,CAWF,EACAm1D,EAAO+G,mBAAqB,WAC1B,IAAIY,EAASz0E,KACTA,KAAKuC,QAAQ6vE,UACfpJ,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAGq+B,IAAe,SAAUr4E,GAC/D,OAAO87E,EAAOC,SAAS/7E,EACzB,IAEyB,UAAvBqH,KAAKuC,QAAQ+vE,OACftJ,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAGs+B,IAAkB,SAAUt4E,GAClE,OAAO87E,EAAOnC,MAAM35E,EACtB,IAAGg6C,GAAGu+B,IAAkB,SAAUv4E,GAChC,OAAO87E,EAAOT,MAAMr7E,EACtB,IAEEqH,KAAKuC,QAAQgwE,OACfvyE,KAAK20E,yBAET,EACA7H,EAAO6H,wBAA0B,WAC/B,IAAIC,EAAS50E,KACb,GAAKA,KAAKuzE,gBAAV,CAGA,IAAIpzC,EAAQ,SAAexnC,GACrBi8E,EAAOlB,eAAiBjB,GAAY95E,EAAM+8C,cAAciC,YAAYpxC,eACtEquE,EAAOzB,YAAcx6E,EAAM+8C,cAAc4B,QAC/Bs9B,EAAOlB,gBACjBkB,EAAOzB,YAAcx6E,EAAM+8C,cAAcsC,QAAQ,GAAGV,QAExD,EACIu9B,EAAO,SAAcl8E,GAEvBi8E,EAAOxB,YAAcz6E,EAAM+8C,cAAcsC,SAAWr/C,EAAM+8C,cAAcsC,QAAQxhD,OAAS,EAAI,EAAImC,EAAM+8C,cAAcsC,QAAQ,GAAGV,QAAUs9B,EAAOzB,WACnJ,EACIz9C,EAAM,SAAa/8B,GACjBi8E,EAAOlB,eAAiBjB,GAAY95E,EAAM+8C,cAAciC,YAAYpxC,iBACtEquE,EAAOxB,YAAcz6E,EAAM+8C,cAAc4B,QAAUs9B,EAAOzB,aAE5DyB,EAAOL,eACsB,UAAzBK,EAAOryE,QAAQ+vE,QAQjBsC,EAAOtC,QACHsC,EAAO1B,cACTp6E,aAAa87E,EAAO1B,cAEtB0B,EAAO1B,aAAe15E,YAAW,SAAUb,GACzC,OAAOi8E,EAAOZ,MAAMr7E,EACtB,GAAGq3E,GAAyB4E,EAAOryE,QAAQohD,UAE/C,EACAqlB,EAAoB,QAAEhpE,KAAK6sE,SAASvwC,iBAAiBw1C,KAAoBn/B,GAAG6+B,IAAkB,SAAUj6E,GACtG,OAAOA,EAAEg8C,gBACX,IACIvzC,KAAK0zE,eACP1K,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAG2+B,IAAmB,SAAU34E,GACnE,OAAOwnC,EAAMxnC,EACf,IACAqwE,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAG4+B,IAAiB,SAAU54E,GACjE,OAAO+8B,EAAI/8B,EACb,IACAqH,KAAK6sE,SAASqC,UAAU58D,IAAIm+D,MAE5BzH,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAGw+B,IAAkB,SAAUx4E,GAClE,OAAOwnC,EAAMxnC,EACf,IACAqwE,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAGy+B,IAAiB,SAAUz4E,GACjE,OAAOk8E,EAAKl8E,EACd,IACAqwE,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAG0+B,IAAgB,SAAU14E,GAChE,OAAO+8B,EAAI/8B,EACb,IAtDF,CAwDF,EACAm0E,EAAO4H,SAAW,SAAkB/7E,GAClC,IAAI,kBAAkBkN,KAAKlN,EAAMQ,OAAOk+D,SAGxC,OAAQ1+D,EAAMs/C,OACZ,KAAK63B,GACHn3E,EAAM46C,iBACNvzC,KAAK2mC,OACL,MACF,KAAKopC,GACHp3E,EAAM46C,iBACNvzC,KAAK2X,OAGX,EACAm1D,EAAOwH,cAAgB,SAAuBnd,GAE5C,OADAn3D,KAAK6yE,OAAS1b,GAAWA,EAAQnjC,WAAa,GAAGx4B,MAAM5E,KAAKugE,EAAQnjC,WAAWsI,iBAAiBu1C,KAAkB,GAC3G7xE,KAAK6yE,OAAO/lE,QAAQqqD,EAC7B,EACA2V,EAAOgI,oBAAsB,SAA6BtwD,EAAW4c,GACnE,IAAI2zC,EAAkBvwD,IAAcksD,GAChCsE,EAAkBxwD,IAAcmsD,GAChC0D,EAAcr0E,KAAKs0E,cAAclzC,GACjC6zC,EAAgBj1E,KAAK6yE,OAAOr8E,OAAS,EAEzC,IADoBw+E,GAAmC,IAAhBX,GAAqBU,GAAmBV,IAAgBY,KACzEj1E,KAAKuC,QAAQ2vC,KACjC,OAAO9Q,EAET,IACI8zC,GAAab,GADL7vD,IAAcmsD,IAAkB,EAAI,IACR3wE,KAAK6yE,OAAOr8E,OACpD,OAAsB,IAAf0+E,EAAmBl1E,KAAK6yE,OAAO7yE,KAAK6yE,OAAOr8E,OAAS,GAAKwJ,KAAK6yE,OAAOqC,EAC9E,EACApI,EAAOqI,mBAAqB,SAA4B/+B,EAAeg/B,GACrE,IAAIC,EAAcr1E,KAAKs0E,cAAcl+B,GACjCk/B,EAAYt1E,KAAKs0E,cAAct0E,KAAK6sE,SAAS7uC,cAAc4zC,KAC3D2D,EAAavM,EAAoB,QAAEvzB,MAAMq7B,GAAa,CACxD16B,cAAeA,EACf5xB,UAAW4wD,EACX90E,KAAMg1E,EACNj1E,GAAIg1E,IAGN,OADArM,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQ+hC,GACtCA,CACT,EACAzI,EAAO0I,2BAA6B,SAAoCre,GACtE,GAAIn3D,KAAKszE,mBAAoB,CAC3B,IAAImC,EAAa,GAAGj6E,MAAM5E,KAAKoJ,KAAKszE,mBAAmBh3C,iBAAiBq1C,KACxE3I,EAAoB,QAAEyM,GAAYptB,YAAY8nB,IAC9C,IAAIuF,EAAgB11E,KAAKszE,mBAAmB7sC,SAASzmC,KAAKs0E,cAAcnd,IACpEue,GACF1M,EAAoB,QAAE0M,GAAeztB,SAASkoB,GAElD,CACF,EACArD,EAAOoH,gBAAkB,WACvB,IAAI/c,EAAUn3D,KAAK+yE,gBAAkB/yE,KAAK6sE,SAAS7uC,cAAc4zC,IACjE,GAAKza,EAAL,CAGA,IAAIwe,EAAkBtlE,SAAS8mD,EAAQpjC,aAAa,iBAAkB,IAClE4hD,GACF31E,KAAKuC,QAAQqzE,gBAAkB51E,KAAKuC,QAAQqzE,iBAAmB51E,KAAKuC,QAAQohD,SAC5E3jD,KAAKuC,QAAQohD,SAAWgyB,GAExB31E,KAAKuC,QAAQohD,SAAW3jD,KAAKuC,QAAQqzE,iBAAmB51E,KAAKuC,QAAQohD,QANvE,CAQF,EACAmpB,EAAOgH,OAAS,SAAgBtvD,EAAW2yC,GACzC,IAMI0e,EACAC,EACAV,EARAW,EAAS/1E,KACTohC,EAAgBphC,KAAK6sE,SAAS7uC,cAAc4zC,IAC5CoE,EAAqBh2E,KAAKs0E,cAAclzC,GACxC60C,EAAc9e,GAAW/1B,GAAiBphC,KAAK80E,oBAAoBtwD,EAAW4c,GAC9E80C,EAAmBl2E,KAAKs0E,cAAc2B,GACtCE,EAAY9N,QAAQroE,KAAK8yE,WAa7B,GATItuD,IAAcksD,IAChBmF,EAAuBvF,GACvBwF,EAAiBvF,GACjB6E,EAAqBxE,KAErBiF,EAAuBxF,GACvByF,EAAiBtF,GACjB4E,EAAqBvE,IAEnBoF,GAAejN,EAAoB,QAAEiN,GAAaxtB,SAAS0nB,IAC7DnwE,KAAKizE,YAAa,OAIpB,IADiBjzE,KAAKm1E,mBAAmBc,EAAab,GACvCl/B,sBAGV9U,GAAkB60C,EAAvB,CAIAj2E,KAAKizE,YAAa,EACdkD,GACFn2E,KAAKsyE,QAEPtyE,KAAKw1E,2BAA2BS,GAChCj2E,KAAK+yE,eAAiBkD,EACtB,IAAIG,EAAYpN,EAAoB,QAAEvzB,MAAMs7B,GAAY,CACtD36B,cAAe6/B,EACfzxD,UAAW4wD,EACX90E,KAAM01E,EACN31E,GAAI61E,IAEN,GAAIlN,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAAS2nB,IAAmB,CACnEpH,EAAoB,QAAEiN,GAAahuB,SAAS6tB,GAC5C5L,EAAKY,OAAOmL,GACZjN,EAAoB,QAAE5nC,GAAe6mB,SAAS4tB,GAC9C7M,EAAoB,QAAEiN,GAAahuB,SAAS4tB,GAC5C,IAAInL,EAAqBR,EAAKO,iCAAiCrpC,GAC/D4nC,EAAoB,QAAE5nC,GAAeyR,IAAIq3B,EAAKN,gBAAgB,WAC5DZ,EAAoB,QAAEiN,GAAa5tB,YAAYwtB,EAAuB,IAAMC,GAAgB7tB,SAASkoB,IACrGnH,EAAoB,QAAE5nC,GAAeinB,YAAY8nB,GAAsB,IAAM2F,EAAiB,IAAMD,GACpGE,EAAO9C,YAAa,EACpBz5E,YAAW,WACT,OAAOwvE,EAAoB,QAAE+M,EAAOlJ,UAAUr5B,QAAQ4iC,EACxD,GAAG,EACL,IAAG/L,qBAAqBK,EAC1B,MACE1B,EAAoB,QAAE5nC,GAAeinB,YAAY8nB,IACjDnH,EAAoB,QAAEiN,GAAahuB,SAASkoB,IAC5CnwE,KAAKizE,YAAa,EAClBjK,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQ4iC,GAE3CD,GACFn2E,KAAKg0E,OAlCP,CAoCF,EAGApB,EAASrF,iBAAmB,SAA0BpsE,GACpD,OAAOnB,KAAKk1B,MAAK,WACf,IAAIj/B,EAAO+yE,EAAoB,QAAEhpE,MAAM/J,KAAKy5E,IACxCntE,EAAUgnE,EAAS,CAAC,EAAG4I,GAAWnJ,EAAoB,QAAEhpE,MAAM/J,QAC5C,kBAAXkL,IACToB,EAAUgnE,EAAS,CAAC,EAAGhnE,EAASpB,IAElC,IAAI02D,EAA2B,kBAAX12D,EAAsBA,EAASoB,EAAQ8vE,MAK3D,GAJKp8E,IACHA,EAAO,IAAI28E,EAAS5yE,KAAMuC,GAC1BymE,EAAoB,QAAEhpE,MAAM/J,KAAKy5E,GAAYz5E,IAEzB,kBAAXkL,EACTlL,EAAKoK,GAAGc,QACH,GAAsB,kBAAX02D,EAAqB,CACrC,GAA4B,qBAAjB5hE,EAAK4hE,GACd,MAAM,IAAIntB,UAAU,oBAAuBmtB,EAAS,KAEtD5hE,EAAK4hE,IACP,MAAWt1D,EAAQohD,UAAYphD,EAAQ8zE,OACrCpgF,EAAKq8E,QACLr8E,EAAK+9E,QAET,GACF,EACApB,EAAS0D,qBAAuB,SAA8B39E,GAC5D,IAAI07B,EAAW61C,EAAKK,uBAAuBvqE,MAC3C,GAAKq0B,EAAL,CAGA,IAAIl7B,EAAS6vE,EAAoB,QAAE30C,GAAU,GAC7C,GAAKl7B,GAAW6vE,EAAoB,QAAE7vE,GAAQsvD,SAASynB,IAAvD,CAGA,IAAI/uE,EAASooE,EAAS,CAAC,EAAGP,EAAoB,QAAE7vE,GAAQlD,OAAQ+yE,EAAoB,QAAEhpE,MAAM/J,QACxFsgF,EAAav2E,KAAK+zB,aAAa,iBAC/BwiD,IACFp1E,EAAOwiD,UAAW,GAEpBivB,EAASrF,iBAAiB32E,KAAKoyE,EAAoB,QAAE7vE,GAASgI,GAC1Do1E,GACFvN,EAAoB,QAAE7vE,GAAQlD,KAAKy5E,IAAYrvE,GAAGk2E,GAEpD59E,EAAM46C,gBAVN,CAJA,CAeF,EACA41B,EAAayJ,EAAU,KAAM,CAAC,CAC5B/3E,IAAK,UACLV,IAAK,WACH,OAAOs1E,EACT,GACC,CACD50E,IAAK,UACLV,IAAK,WACH,OAAOg4E,EACT,KAEKS,CACT,CAvY4B,GA4Y5B5J,EAAoB,QAAEhxE,UAAU26C,GAAG++B,GAAwBO,GAAqBW,GAAS0D,sBACzFtN,EAAoB,QAAE1tE,QAAQq3C,GAAG8+B,IAAuB,WAEtD,IADA,IAAI+E,EAAY,GAAGh7E,MAAM5E,KAAKoB,SAASskC,iBAAiB41C,KAC/C57E,EAAI,EAAG2J,EAAMu2E,EAAUhgF,OAAQF,EAAI2J,EAAK3J,IAAK,CACpD,IAAImgF,EAAYzN,EAAoB,QAAEwN,EAAUlgF,IAChDs8E,GAASrF,iBAAiB32E,KAAK6/E,EAAWA,EAAUxgF,OACtD,CACF,IAKA+yE,EAAoB,QAAE7rE,GAAGqyE,GAAUoD,GAASrF,iBAC5CvE,EAAoB,QAAE7rE,GAAGqyE,GAAQpG,YAAcwJ,GAC/C5J,EAAoB,QAAE7rE,GAAGqyE,GAAQ9a,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAGqyE,GAAUK,GAC5B+C,GAASrF,gBAClB,EAMA,IAAImJ,GAAS,WACTC,GAAY,QACZC,GAAa,cACbC,GAAc,IAAMD,GACpBE,GAAiB,YACjBC,GAAuB/N,EAAoB,QAAE7rE,GAAGu5E,IAChDM,GAAoB,OACpBC,GAAsB,WACtBC,GAAwB,aACxBC,GAAuB,YACvBC,GAAkB,QAClBC,GAAmB,SACnBC,GAAe,OAAST,GACxBU,GAAgB,QAAUV,GAC1BW,GAAe,OAASX,GACxBY,GAAiB,SAAWZ,GAC5Ba,GAAyB,QAAUb,GAAcC,GACjDa,GAAmB,qBACnBC,GAAyB,2BACzBC,GAAY,CACdznC,QAAQ,EACRhQ,OAAQ,IAEN03C,GAAgB,CAClB1nC,OAAQ,UACRhQ,OAAQ,oBAMN23C,GAAwB,WAC1B,SAASA,EAAS5gB,EAASh2D,GACzBnB,KAAKg4E,kBAAmB,EACxBh4E,KAAK6sE,SAAW1V,EAChBn3D,KAAKuC,QAAUvC,KAAKqzE,WAAWlyE,GAC/BnB,KAAKi4E,cAAgB,GAAGz8E,MAAM5E,KAAKoB,SAASskC,iBAAiB,mCAAwC66B,EAAQp7B,GAAhD,6CAA8Go7B,EAAQp7B,GAAK,OAExL,IADA,IAAIm8C,EAAa,GAAG18E,MAAM5E,KAAKoB,SAASskC,iBAAiBs7C,KAChDthF,EAAI,EAAG2J,EAAMi4E,EAAW1hF,OAAQF,EAAI2J,EAAK3J,IAAK,CACrD,IAAIo+B,EAAOwjD,EAAW5hF,GAClB+9B,EAAW61C,EAAKK,uBAAuB71C,GACvCyjD,EAAgB,GAAG38E,MAAM5E,KAAKoB,SAASskC,iBAAiBjI,IAAW7O,QAAO,SAAU4yD,GACtF,OAAOA,IAAcjhB,CACvB,IACiB,OAAb9iC,GAAqB8jD,EAAc3hF,OAAS,IAC9CwJ,KAAKq4E,UAAYhkD,EACjBr0B,KAAKi4E,cAAcnhF,KAAK49B,GAE5B,CACA10B,KAAKs4E,QAAUt4E,KAAKuC,QAAQ69B,OAASpgC,KAAKu4E,aAAe,KACpDv4E,KAAKuC,QAAQ69B,QAChBpgC,KAAKw4E,0BAA0Bx4E,KAAK6sE,SAAU7sE,KAAKi4E,eAEjDj4E,KAAKuC,QAAQ6tC,QACfpwC,KAAKowC,QAET,CAEA,IAAI08B,EAASiL,EAASrhF,UA0LtB,OAvLAo2E,EAAO18B,OAAS,WACV44B,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAASuuB,IAChDh3E,KAAKmwC,OAELnwC,KAAKkwC,MAET,EACA48B,EAAO58B,KAAO,WACZ,IAIIuoC,EACAC,EALAtgB,EAAQp4D,KACZ,IAAIA,KAAKg4E,mBAAoBhP,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAASuuB,MAKvEh3E,KAAKs4E,SAOgB,KANvBG,EAAU,GAAGj9E,MAAM5E,KAAKoJ,KAAKs4E,QAAQh8C,iBAAiBq7C,KAAmBnyD,QAAO,SAAUkP,GACxF,MAAoC,kBAAzB0jC,EAAM71D,QAAQ69B,OAChB1L,EAAKX,aAAa,iBAAmBqkC,EAAM71D,QAAQ69B,OAErD1L,EAAKw6C,UAAUx3C,SAASu/C,GACjC,KACYzgF,SACViiF,EAAU,QAGVA,IACFC,EAAc1P,EAAoB,QAAEyP,GAAS93C,IAAI3gC,KAAKq4E,WAAWpiF,KAAK2gF,MACnD8B,EAAYV,mBAFjC,CAMA,IAAIW,EAAa3P,EAAoB,QAAEvzB,MAAM6hC,IAE7C,GADAtO,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQmlC,IACzCA,EAAWziC,qBAAf,CAGIuiC,IACFV,EAASxK,iBAAiB32E,KAAKoyE,EAAoB,QAAEyP,GAAS93C,IAAI3gC,KAAKq4E,WAAY,QAC9EK,GACH1P,EAAoB,QAAEyP,GAASxiF,KAAK2gF,GAAY,OAGpD,IAAIt3B,EAAYt/C,KAAK44E,gBACrB5P,EAAoB,QAAEhpE,KAAK6sE,UAAUxkB,YAAY4uB,IAAqBhvB,SAASivB,IAC/El3E,KAAK6sE,SAAS59B,MAAMqQ,GAAa,EAC7Bt/C,KAAKi4E,cAAczhF,QACrBwyE,EAAoB,QAAEhpE,KAAKi4E,eAAe5vB,YAAY8uB,IAAsBx4C,KAAK,iBAAiB,GAEpG3+B,KAAK64E,kBAAiB,GACtB,IAAI9zB,EAAW,WACbikB,EAAoB,QAAE5Q,EAAMyU,UAAUxkB,YAAY6uB,IAAuBjvB,SAASgvB,GAAsB,IAAMD,IAC9G5e,EAAMyU,SAAS59B,MAAMqQ,GAAa,GAClC8Y,EAAMygB,kBAAiB,GACvB7P,EAAoB,QAAE5Q,EAAMyU,UAAUr5B,QAAQ+jC,GAChD,EAEIuB,EAAa,UADUx5B,EAAU,GAAG/4C,cAAgB+4C,EAAU9jD,MAAM,IAEpEkvE,EAAqBR,EAAKO,iCAAiCzqE,KAAK6sE,UACpE7D,EAAoB,QAAEhpE,KAAK6sE,UAAUh6B,IAAIq3B,EAAKN,eAAgB7kB,GAAUslB,qBAAqBK,GAC7F1qE,KAAK6sE,SAAS59B,MAAMqQ,GAAat/C,KAAK6sE,SAASiM,GAAc,IAxB7D,CALA,CA8BF,EACAhM,EAAO38B,KAAO,WACZ,IAAIskC,EAASz0E,KACb,IAAIA,KAAKg4E,kBAAqBhP,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAASuuB,IAA5E,CAGA,IAAI2B,EAAa3P,EAAoB,QAAEvzB,MAAM+hC,IAE7C,GADAxO,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQmlC,IACzCA,EAAWziC,qBAAf,CAGA,IAAIoJ,EAAYt/C,KAAK44E,gBACrB54E,KAAK6sE,SAAS59B,MAAMqQ,GAAat/C,KAAK6sE,SAAS7qB,wBAAwB1C,GAAa,KACpF4qB,EAAKY,OAAO9qE,KAAK6sE,UACjB7D,EAAoB,QAAEhpE,KAAK6sE,UAAU5kB,SAASivB,IAAuB7uB,YAAY4uB,GAAsB,IAAMD,IAC7G,IAAI+B,EAAqB/4E,KAAKi4E,cAAczhF,OAC5C,GAAIuiF,EAAqB,EACvB,IAAK,IAAIziF,EAAI,EAAGA,EAAIyiF,EAAoBziF,IAAK,CAC3C,IAAIk9C,EAAUxzC,KAAKi4E,cAAc3hF,GAC7B+9B,EAAW61C,EAAKK,uBAAuB/2B,GAC1B,OAAbnf,IACU20C,EAAoB,QAAE,GAAGxtE,MAAM5E,KAAKoB,SAASskC,iBAAiBjI,KAC/Do0B,SAASuuB,KAClBhO,EAAoB,QAAEx1B,GAASyU,SAASkvB,IAAsBx4C,KAAK,iBAAiB,GAG1F,CAEF3+B,KAAK64E,kBAAiB,GACtB,IAAI9zB,EAAW,WACb0vB,EAAOoE,kBAAiB,GACxB7P,EAAoB,QAAEyL,EAAO5H,UAAUxkB,YAAY6uB,IAAuBjvB,SAASgvB,IAAqBzjC,QAAQikC,GAClH,EACAz3E,KAAK6sE,SAAS59B,MAAMqQ,GAAa,GACjC,IAAIorB,EAAqBR,EAAKO,iCAAiCzqE,KAAK6sE,UACpE7D,EAAoB,QAAEhpE,KAAK6sE,UAAUh6B,IAAIq3B,EAAKN,eAAgB7kB,GAAUslB,qBAAqBK,EAzB7F,CALA,CA+BF,EACAoC,EAAO+L,iBAAmB,SAA0BG,GAClDh5E,KAAKg4E,iBAAmBgB,CAC1B,EACAlM,EAAOM,QAAU,WACfpE,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAU+J,IAChD52E,KAAKuC,QAAU,KACfvC,KAAKs4E,QAAU,KACft4E,KAAK6sE,SAAW,KAChB7sE,KAAKi4E,cAAgB,KACrBj4E,KAAKg4E,iBAAmB,IAC1B,EAGAlL,EAAOuG,WAAa,SAAoBlyE,GAKtC,OAJAA,EAASooE,EAAS,CAAC,EAAGsO,GAAW12E,IAC1BivC,OAASi4B,QAAQlnE,EAAOivC,QAE/B85B,EAAKe,gBAAgByL,GAAQv1E,EAAQ22E,IAC9B32E,CACT,EACA2rE,EAAO8L,cAAgB,WAErB,OADe5P,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAAS2uB,IAC3CA,GAAkBC,EACtC,EACAvK,EAAOyL,WAAa,WAClB,IACIn4C,EADAw0C,EAAS50E,KAETkqE,EAAKc,UAAUhrE,KAAKuC,QAAQ69B,SAC9BA,EAASpgC,KAAKuC,QAAQ69B,OAEoB,qBAA/BpgC,KAAKuC,QAAQ69B,OAAOzL,SAC7ByL,EAASpgC,KAAKuC,QAAQ69B,OAAO,KAG/BA,EAASpoC,SAASgmC,cAAch+B,KAAKuC,QAAQ69B,QAE/C,IAAI/L,EAAW,yCAA8Cr0B,KAAKuC,QAAQ69B,OAAS,KAC/EqG,EAAW,GAAGjrC,MAAM5E,KAAKwpC,EAAO9D,iBAAiBjI,IAIrD,OAHA20C,EAAoB,QAAEviC,GAAUvR,MAAK,SAAU5+B,EAAG6gE,GAChDyd,EAAO4D,0BAA0BT,EAASkB,sBAAsB9hB,GAAU,CAACA,GAC7E,IACO/2B,CACT,EACA0sC,EAAO0L,0BAA4B,SAAmCrhB,EAAS+hB,GAC7E,IAAIC,EAASnQ,EAAoB,QAAE7R,GAAS1O,SAASuuB,IACjDkC,EAAa1iF,QACfwyE,EAAoB,QAAEkQ,GAAc5wB,YAAY6uB,IAAuBgC,GAAQx6C,KAAK,gBAAiBw6C,EAEzG,EAGApB,EAASkB,sBAAwB,SAA+B9hB,GAC9D,IAAI9iC,EAAW61C,EAAKK,uBAAuBpT,GAC3C,OAAO9iC,EAAWr8B,SAASgmC,cAAc3J,GAAY,IACvD,EACA0jD,EAASxK,iBAAmB,SAA0BpsE,GACpD,OAAOnB,KAAKk1B,MAAK,WACf,IAAIs4C,EAAWxE,EAAoB,QAAEhpE,MACjC/J,EAAOu3E,EAASv3E,KAAK2gF,IACrBr0E,EAAUgnE,EAAS,CAAC,EAAGsO,GAAWrK,EAASv3E,OAA0B,kBAAXkL,GAAuBA,EAASA,EAAS,CAAC,GAQxG,IAPKlL,GAAQsM,EAAQ6tC,QAA4B,kBAAXjvC,GAAuB,YAAY0E,KAAK1E,KAC5EoB,EAAQ6tC,QAAS,GAEdn6C,IACHA,EAAO,IAAI8hF,EAAS/3E,KAAMuC,GAC1BirE,EAASv3E,KAAK2gF,GAAY3gF,IAEN,kBAAXkL,EAAqB,CAC9B,GAA4B,qBAAjBlL,EAAKkL,GACd,MAAM,IAAIupC,UAAU,oBAAuBvpC,EAAS,KAEtDlL,EAAKkL,IACP,CACF,GACF,EACAgoE,EAAa4O,EAAU,KAAM,CAAC,CAC5Bl9E,IAAK,UACLV,IAAK,WACH,OAAOw8E,EACT,GACC,CACD97E,IAAK,UACLV,IAAK,WACH,OAAO09E,EACT,KAEKE,CACT,CAtN4B,GA2N5B/O,EAAoB,QAAEhxE,UAAU26C,GAAG+kC,GAAwBE,IAAwB,SAAUj/E,GAEvD,MAAhCA,EAAMu8C,cAAcmiB,SACtB1+D,EAAM46C,iBAER,IAAI6lC,EAAWpQ,EAAoB,QAAEhpE,MACjCq0B,EAAW61C,EAAKK,uBAAuBvqE,MACvC2lC,EAAY,GAAGnqC,MAAM5E,KAAKoB,SAASskC,iBAAiBjI,IACxD20C,EAAoB,QAAErjC,GAAWzQ,MAAK,WACpC,IAAImkD,EAAUrQ,EAAoB,QAAEhpE,MAEhCmB,EADOk4E,EAAQpjF,KAAK2gF,IACJ,SAAWwC,EAASnjF,OACxC8hF,GAASxK,iBAAiB32E,KAAKyiF,EAASl4E,EAC1C,GACF,IAKA6nE,EAAoB,QAAE7rE,GAAGu5E,IAAUqB,GAASxK,iBAC5CvE,EAAoB,QAAE7rE,GAAGu5E,IAAQtN,YAAc2O,GAC/C/O,EAAoB,QAAE7rE,GAAGu5E,IAAQhiB,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAGu5E,IAAUK,GAC5BgB,GAASxK,gBAClB,EAMA,IAAI+L,GAAS,WACTC,GAAY,QACZC,GAAa,cACbC,GAAc,IAAMD,GACpBE,GAAiB,YACjBC,GAAuB3Q,EAAoB,QAAE7rE,GAAGm8E,IAChDM,GAAmB,GAEnBC,GAAgB,GAEhBC,GAAc,EAEdC,GAAmB,GAEnBC,GAAqB,GAErBC,GAA2B,EAE3BC,GAAiB,IAAIz3E,OAAOs3E,GAAmB,IAAMC,GAAqB,IAAMJ,IAChFO,GAAwB,WACxBC,GAAoB,OACpBC,GAAoB,SACpBC,GAAuB,YACvBC,GAAsB,WACtBC,GAAuB,sBACvBC,GAA6B,kBAC7BC,GAAe,OAASjB,GACxBkB,GAAiB,SAAWlB,GAC5BmB,GAAe,OAASnB,GACxBoB,GAAgB,QAAUpB,GAC1BqB,GAAc,QAAUrB,GACxBsB,GAAyB,QAAUtB,GAAcC,GACjDsB,GAAyB,UAAYvB,GAAcC,GACnDuB,GAAuB,QAAUxB,GAAcC,GAC/CwB,GAAyB,2BACzBC,GAAsB,iBACtBC,GAAgB,iBAChBC,GAAsB,cACtBC,GAAyB,8DACzBC,GAAgB,YAChBC,GAAmB,UACnBC,GAAmB,eACnBC,GAAsB,aACtBC,GAAkB,cAClBC,GAAiB,aACjBC,GAAY,CACdr6D,OAAQ,EACRs6D,MAAM,EACNC,SAAU,eACVC,UAAW,SACX9sC,QAAS,UACT+sC,aAAc,MAEZC,GAAgB,CAClB16D,OAAQ,2BACRs6D,KAAM,UACNC,SAAU,mBACVC,UAAW,mBACX9sC,QAAS,SACT+sC,aAAc,iBAMZE,GAAwB,WAC1B,SAASA,EAAShlB,EAASh2D,GACzBnB,KAAK6sE,SAAW1V,EAChBn3D,KAAKo8E,QAAU,KACfp8E,KAAKuC,QAAUvC,KAAKqzE,WAAWlyE,GAC/BnB,KAAKq8E,MAAQr8E,KAAKs8E,kBAClBt8E,KAAKu8E,UAAYv8E,KAAKw8E,gBACtBx8E,KAAK6zE,oBACP,CAEA,IAAI/G,EAASqP,EAASzlF,UAuTtB,OApTAo2E,EAAO18B,OAAS,WACd,IAAIpwC,KAAK6sE,SAASxxC,WAAY2tC,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAAS0xB,IAA5E,CAGA,IAAIsC,EAAWzT,EAAoB,QAAEhpE,KAAKq8E,OAAO5zB,SAAS2xB,IAC1D+B,EAASO,cACLD,GAGJz8E,KAAKkwC,MAAK,EANV,CAOF,EACA48B,EAAO58B,KAAO,SAAcysC,GAI1B,QAHkB,IAAdA,IACFA,GAAY,KAEV38E,KAAK6sE,SAASxxC,UAAY2tC,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAAS0xB,KAA0BnR,EAAoB,QAAEhpE,KAAKq8E,OAAO5zB,SAAS2xB,KAAjJ,CAGA,IAAIhkC,EAAgB,CAClBA,cAAep2C,KAAK6sE,UAElB+P,EAAY5T,EAAoB,QAAEvzB,MAAMmlC,GAAcxkC,GACtDhW,EAAS+7C,EAASU,sBAAsB78E,KAAK6sE,UAEjD,GADA7D,EAAoB,QAAE5oC,GAAQoT,QAAQopC,IAClCA,EAAU1mC,qBAAd,CAIA,IAAKl2C,KAAKu8E,WAAaI,EAAW,CAEhC,GAA0C,qBAA/B1T,EAAyB,QAClC,MAAM,IAAIv+B,UAAU,gEAEtB,IAAIoyC,EAAmB98E,KAAK6sE,SACG,WAA3B7sE,KAAKuC,QAAQy5E,UACfc,EAAmB18C,EACV8pC,EAAKc,UAAUhrE,KAAKuC,QAAQy5E,aACrCc,EAAmB98E,KAAKuC,QAAQy5E,UAEa,qBAAlCh8E,KAAKuC,QAAQy5E,UAAUrnD,SAChCmoD,EAAmB98E,KAAKuC,QAAQy5E,UAAU,KAMhB,iBAA1Bh8E,KAAKuC,QAAQw5E,UACf/S,EAAoB,QAAE5oC,GAAQ6nB,SAASwyB,IAEzCz6E,KAAKo8E,QAAU,IAAInT,EAAyB,QAAE6T,EAAkB98E,KAAKq8E,MAAOr8E,KAAK+8E,mBACnF,CAKI,iBAAkB/kF,SAASy+B,iBAAyF,IAAtEuyC,EAAoB,QAAE5oC,GAAQ2G,QAAQs0C,IAAqB7kF,QAC3GwyE,EAAoB,QAAEhxE,SAASg4C,MAAMvJ,WAAWkM,GAAG,YAAa,KAAMq2B,EAAoB,QAAE5yC,MAE9Fp2B,KAAK6sE,SAAS1rC,QACdnhC,KAAK6sE,SAASx0E,aAAa,iBAAiB,GAC5C2wE,EAAoB,QAAEhpE,KAAKq8E,OAAO/zB,YAAY8xB,IAC9CpR,EAAoB,QAAE5oC,GAAQkoB,YAAY8xB,IAAmB5mC,QAAQw1B,EAAoB,QAAEvzB,MAAMolC,GAAezkC,GAnChH,CATA,CA6CF,EACA02B,EAAO38B,KAAO,WACZ,IAAInwC,KAAK6sE,SAASxxC,WAAY2tC,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAAS0xB,KAA2BnR,EAAoB,QAAEhpE,KAAKq8E,OAAO5zB,SAAS2xB,IAAlJ,CAGA,IAAIhkC,EAAgB,CAClBA,cAAep2C,KAAK6sE,UAElBmQ,EAAYhU,EAAoB,QAAEvzB,MAAMilC,GAActkC,GACtDhW,EAAS+7C,EAASU,sBAAsB78E,KAAK6sE,UACjD7D,EAAoB,QAAE5oC,GAAQoT,QAAQwpC,GAClCA,EAAU9mC,uBAGVl2C,KAAKo8E,SACPp8E,KAAKo8E,QAAQa,UAEfjU,EAAoB,QAAEhpE,KAAKq8E,OAAO/zB,YAAY8xB,IAC9CpR,EAAoB,QAAE5oC,GAAQkoB,YAAY8xB,IAAmB5mC,QAAQw1B,EAAoB,QAAEvzB,MAAMklC,GAAgBvkC,IAdjH,CAeF,EACA02B,EAAOM,QAAU,WACfpE,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAU2M,IAChDxQ,EAAoB,QAAEhpE,KAAK6sE,UAAU95B,IAAI0mC,IACzCz5E,KAAK6sE,SAAW,KAChB7sE,KAAKq8E,MAAQ,KACQ,OAAjBr8E,KAAKo8E,UACPp8E,KAAKo8E,QAAQa,UACbj9E,KAAKo8E,QAAU,KAEnB,EACAtP,EAAOoQ,OAAS,WACdl9E,KAAKu8E,UAAYv8E,KAAKw8E,gBACD,OAAjBx8E,KAAKo8E,SACPp8E,KAAKo8E,QAAQe,gBAEjB,EAGArQ,EAAO+G,mBAAqB,WAC1B,IAAIzb,EAAQp4D,KACZgpE,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAGmoC,IAAa,SAAUniF,GAC7DA,EAAM46C,iBACN56C,EAAM06C,kBACN+kB,EAAMhoB,QACR,GACF,EACA08B,EAAOuG,WAAa,SAAoBlyE,GAGtC,OAFAA,EAASooE,EAAS,CAAC,EAAGvpE,KAAK40B,YAAYwoD,QAASpU,EAAoB,QAAEhpE,KAAK6sE,UAAU52E,OAAQkL,GAC7F+oE,EAAKe,gBAAgBqO,GAAQn4E,EAAQnB,KAAK40B,YAAYyoD,aAC/Cl8E,CACT,EACA2rE,EAAOwP,gBAAkB,WACvB,IAAKt8E,KAAKq8E,MAAO,CACf,IAAIj8C,EAAS+7C,EAASU,sBAAsB78E,KAAK6sE,UAC7CzsC,IACFpgC,KAAKq8E,MAAQj8C,EAAOpC,cAAco9C,IAEtC,CACA,OAAOp7E,KAAKq8E,KACd,EACAvP,EAAOwQ,cAAgB,WACrB,IAAIC,EAAkBvU,EAAoB,QAAEhpE,KAAK6sE,SAAS74C,YACtDwpD,EAAY/B,GAWhB,OATI8B,EAAgB90B,SAAS4xB,IAC3BmD,EAAYxU,EAAoB,QAAEhpE,KAAKq8E,OAAO5zB,SAAS+xB,IAAwBgB,GAAmBD,GACzFgC,EAAgB90B,SAAS6xB,IAClCkD,EAAY7B,GACH4B,EAAgB90B,SAAS8xB,IAClCiD,EAAY5B,GACH5S,EAAoB,QAAEhpE,KAAKq8E,OAAO5zB,SAAS+xB,MACpDgD,EAAY9B,IAEP8B,CACT,EACA1Q,EAAO0P,cAAgB,WACrB,OAAOxT,EAAoB,QAAEhpE,KAAK6sE,UAAU9lC,QAAQ,WAAWvwC,OAAS,CAC1E,EACAs2E,EAAO2Q,WAAa,WAClB,IAAIhJ,EAASz0E,KACTwhB,EAAS,CAAC,EASd,MARmC,oBAAxBxhB,KAAKuC,QAAQif,OACtBA,EAAOrkB,GAAK,SAAUlH,GAEpB,OADAA,EAAKynF,QAAUnU,EAAS,CAAC,EAAGtzE,EAAKynF,QAASjJ,EAAOlyE,QAAQif,OAAOvrB,EAAKynF,QAASjJ,EAAO5H,WAC9E52E,CACT,EAEAurB,EAAOA,OAASxhB,KAAKuC,QAAQif,OAExBA,CACT,EACAsrD,EAAOiQ,iBAAmB,WACxB,IAAId,EAAe,CACjBuB,UAAWx9E,KAAKs9E,gBAChBK,UAAW,CACTn8D,OAAQxhB,KAAKy9E,aACb3B,KAAM,CACJr6C,QAASzhC,KAAKuC,QAAQu5E,MAExB8B,gBAAiB,CACfC,kBAAmB79E,KAAKuC,QAAQw5E,YAUtC,MAL6B,WAAzB/7E,KAAKuC,QAAQ2sC,UACf+sC,EAAa0B,UAAUG,WAAa,CAClCr8C,SAAS,IAGN8nC,EAAS,CAAC,EAAG0S,EAAcj8E,KAAKuC,QAAQ05E,aACjD,EAGAE,EAAS5O,iBAAmB,SAA0BpsE,GACpD,OAAOnB,KAAKk1B,MAAK,WACf,IAAIj/B,EAAO+yE,EAAoB,QAAEhpE,MAAM/J,KAAKujF,IAM5C,GAJKvjF,IACHA,EAAO,IAAIkmF,EAASn8E,KAFU,kBAAXmB,EAAsBA,EAAS,MAGlD6nE,EAAoB,QAAEhpE,MAAM/J,KAAKujF,GAAYvjF,IAEzB,kBAAXkL,EAAqB,CAC9B,GAA4B,qBAAjBlL,EAAKkL,GACd,MAAM,IAAIupC,UAAU,oBAAuBvpC,EAAS,KAEtDlL,EAAKkL,IACP,CACF,GACF,EACAg7E,EAASO,YAAc,SAAqB/jF,GAC1C,IAAIA,GAAUA,EAAMs/C,QAAUgiC,KAA2C,UAAfthF,EAAMM,MAAoBN,EAAMs/C,QAAU6hC,IAIpG,IADA,IAAIiE,EAAU,GAAGviF,MAAM5E,KAAKoB,SAASskC,iBAAiB4+C,KAC7C5kF,EAAI,EAAG2J,EAAM89E,EAAQvnF,OAAQF,EAAI2J,EAAK3J,IAAK,CAClD,IAAI8pC,EAAS+7C,EAASU,sBAAsBkB,EAAQznF,IAChDg+B,EAAU00C,EAAoB,QAAE+U,EAAQznF,IAAIL,KAAKujF,IACjDpjC,EAAgB,CAClBA,cAAe2nC,EAAQznF,IAKzB,GAHIqC,GAAwB,UAAfA,EAAMM,OACjBm9C,EAAc4nC,WAAarlF,GAExB27B,EAAL,CAGA,IAAI2pD,EAAe3pD,EAAQ+nD,MAC3B,GAAKrT,EAAoB,QAAE5oC,GAAQqoB,SAAS2xB,OAGxCzhF,IAAyB,UAAfA,EAAMM,MAAoB,kBAAkB4M,KAAKlN,EAAMQ,OAAOk+D,UAA2B,UAAf1+D,EAAMM,MAAoBN,EAAMs/C,QAAU6hC,KAAgB9Q,EAAoB,QAAEtxC,SAAS0I,EAAQznC,EAAMQ,SAA/L,CAGA,IAAI6jF,EAAYhU,EAAoB,QAAEvzB,MAAMilC,GAActkC,GAC1D4yB,EAAoB,QAAE5oC,GAAQoT,QAAQwpC,GAClCA,EAAU9mC,uBAKV,iBAAkBl+C,SAASy+B,iBAC7BuyC,EAAoB,QAAEhxE,SAASg4C,MAAMvJ,WAAWsM,IAAI,YAAa,KAAMi2B,EAAoB,QAAE5yC,MAE/F2nD,EAAQznF,GAAG+B,aAAa,gBAAiB,SACrCi8B,EAAQ8nD,SACV9nD,EAAQ8nD,QAAQa,UAElBjU,EAAoB,QAAEiV,GAAc51B,YAAY+xB,IAChDpR,EAAoB,QAAE5oC,GAAQioB,YAAY+xB,IAAmB5mC,QAAQw1B,EAAoB,QAAEvzB,MAAMklC,GAAgBvkC,IAhBjH,CAPA,CAwBF,CACF,EACA+lC,EAASU,sBAAwB,SAA+B1lB,GAC9D,IAAI/2B,EACA/L,EAAW61C,EAAKK,uBAAuBpT,GAI3C,OAHI9iC,IACF+L,EAASpoC,SAASgmC,cAAc3J,IAE3B+L,GAAU+2B,EAAQnjC,UAC3B,EAGAmoD,EAAS+B,uBAAyB,SAAgCvlF,GAQhE,KAAI,kBAAkBkN,KAAKlN,EAAMQ,OAAOk+D,SAAW1+D,EAAMs/C,QAAU4hC,IAAiBlhF,EAAMs/C,QAAU2hC,KAAqBjhF,EAAMs/C,QAAU+hC,IAAsBrhF,EAAMs/C,QAAU8hC,IAAoB/Q,EAAoB,QAAErwE,EAAMQ,QAAQ4tC,QAAQq0C,IAAe5kF,SAAW0jF,GAAer0E,KAAKlN,EAAMs/C,UAG/Rj4C,KAAKq7B,WAAY2tC,EAAoB,QAAEhpE,MAAMyoD,SAAS0xB,IAA1D,CAGA,IAAI/5C,EAAS+7C,EAASU,sBAAsB78E,MACxCy8E,EAAWzT,EAAoB,QAAE5oC,GAAQqoB,SAAS2xB,IACtD,GAAKqC,GAAY9jF,EAAMs/C,QAAU2hC,GAAjC,CAKA,GAFAjhF,EAAM46C,iBACN56C,EAAM06C,mBACDopC,GAAY9jF,EAAMs/C,QAAU2hC,IAAoBjhF,EAAMs/C,QAAU4hC,GAKnE,OAJIlhF,EAAMs/C,QAAU2hC,IAClB5Q,EAAoB,QAAE5oC,EAAOpC,cAAck9C,KAAyB1nC,QAAQ,cAE9Ew1B,EAAoB,QAAEhpE,MAAMwzC,QAAQ,SAGtC,IAAI2qC,EAAQ,GAAG3iF,MAAM5E,KAAKwpC,EAAO9D,iBAAiBg/C,KAAyB91D,QAAO,SAAUC,GAC1F,OAAOujD,EAAoB,QAAEvjD,GAAMogB,GAAG,WACxC,IACA,GAAqB,IAAjBs4C,EAAM3nF,OAAV,CAGA,IAAIw3B,EAAQmwD,EAAMrxE,QAAQnU,EAAMQ,QAC5BR,EAAMs/C,QAAU8hC,IAAoB/rD,EAAQ,GAE9CA,IAEEr1B,EAAMs/C,QAAU+hC,IAAsBhsD,EAAQmwD,EAAM3nF,OAAS,GAE/Dw3B,IAEEA,EAAQ,IACVA,EAAQ,GAEVmwD,EAAMnwD,GAAOmT,OAbb,CAfA,CALA,CAkCF,EACAgoC,EAAagT,EAAU,KAAM,CAAC,CAC5BthF,IAAK,UACLV,IAAK,WACH,OAAOo/E,EACT,GACC,CACD1+E,IAAK,UACLV,IAAK,WACH,OAAO0hF,EACT,GACC,CACDhhF,IAAK,cACLV,IAAK,WACH,OAAO+hF,EACT,KAEKC,CACT,CAlU4B,GAuU5BnT,EAAoB,QAAEhxE,UAAU26C,GAAGqoC,GAAwBE,GAAwBiB,GAAS+B,wBAAwBvrC,GAAGqoC,GAAwBI,GAAee,GAAS+B,wBAAwBvrC,GAAGooC,GAAyB,IAAME,GAAsBkB,GAASO,aAAa/pC,GAAGooC,GAAwBG,IAAwB,SAAUviF,GACxUA,EAAM46C,iBACN56C,EAAM06C,kBACN8oC,GAAS5O,iBAAiB32E,KAAKoyE,EAAoB,QAAEhpE,MAAO,SAC9D,IAAG2yC,GAAGooC,GAAwBI,IAAqB,SAAU5jF,GAC3DA,EAAE87C,iBACJ,IAKA21B,EAAoB,QAAE7rE,GAAGm8E,IAAU6C,GAAS5O,iBAC5CvE,EAAoB,QAAE7rE,GAAGm8E,IAAQlQ,YAAc+S,GAC/CnT,EAAoB,QAAE7rE,GAAGm8E,IAAQ5kB,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAGm8E,IAAUK,GAC5BwC,GAAS5O,gBAClB,EAMA,IAAI6Q,GAAS,QACTC,GAAY,QACZC,GAAa,WACbC,GAAc,IAAMD,GACpBE,GAAiB,YACjBC,GAAuBzV,EAAoB,QAAE7rE,GAAGihF,IAChDM,GAAiB,GAEjBC,GAAwB,0BACxBC,GAAgC,0BAChCC,GAAsB,iBACtBC,GAAkB,aAClBC,GAAoB,OACpBC,GAAoB,OACpBC,GAAoB,eACpBC,GAAe,OAASX,GACxBY,GAAuB,gBAAkBZ,GACzCa,GAAiB,SAAWb,GAC5Bc,GAAe,OAASd,GACxBe,GAAgB,QAAUf,GAC1BgB,GAAgB,UAAYhB,GAC5BiB,GAAe,SAAWjB,GAC1BkB,GAAwB,gBAAkBlB,GAC1CmB,GAAwB,kBAAoBnB,GAC5CoB,GAAwB,kBAAoBpB,GAC5CqB,GAA0B,oBAAsBrB,GAChDsB,GAAyB,QAAUtB,GAAcC,GACjDsB,GAAkB,gBAClBC,GAAsB,cACtBC,GAAyB,wBACzBC,GAA0B,yBAC1BC,GAAyB,oDACzBC,GAA0B,cAC1BC,GAAY,CACdC,UAAU,EACVjO,UAAU,EACVjxC,OAAO,EACP+O,MAAM,GAEJowC,GAAgB,CAClBD,SAAU,mBACVjO,SAAU,UACVjxC,MAAO,UACP+O,KAAM,WAMJqwC,GAAqB,WACvB,SAASA,EAAMppB,EAASh2D,GACtBnB,KAAKuC,QAAUvC,KAAKqzE,WAAWlyE,GAC/BnB,KAAK6sE,SAAW1V,EAChBn3D,KAAKwgF,QAAUrpB,EAAQn5B,cAAc8hD,IACrC9/E,KAAKygF,UAAY,KACjBzgF,KAAK0gF,UAAW,EAChB1gF,KAAK2gF,oBAAqB,EAC1B3gF,KAAK4gF,sBAAuB,EAC5B5gF,KAAKg4E,kBAAmB,EACxBh4E,KAAK6gF,gBAAkB,CACzB,CAEA,IAAI/T,EAASyT,EAAM7pF,UAsYnB,OAnYAo2E,EAAO18B,OAAS,SAAgBgG,GAC9B,OAAOp2C,KAAK0gF,SAAW1gF,KAAKmwC,OAASnwC,KAAKkwC,KAAKkG,EACjD,EACA02B,EAAO58B,KAAO,SAAckG,GAC1B,IAAIgiB,EAAQp4D,KACZ,IAAIA,KAAK0gF,WAAY1gF,KAAKg4E,iBAA1B,CAGA,IAAI4E,EAAY5T,EAAoB,QAAEvzB,MAAM4pC,GAAc,CACxDjpC,cAAeA,IAEjB4yB,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQopC,GACzCA,EAAU1mC,uBAGdl2C,KAAK0gF,UAAW,EACZ1X,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAASs2B,MAChD/+E,KAAKg4E,kBAAmB,GAE1Bh4E,KAAK8gF,kBACL9gF,KAAK+gF,gBACL/gF,KAAKghF,gBACLhhF,KAAKihF,kBACLjhF,KAAKkhF,kBACLlY,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAG8sC,GAAuBQ,IAAyB,SAAUtnF,GAChG,OAAOy/D,EAAMjoB,KAAKx3C,EACpB,IACAqwE,EAAoB,QAAEhpE,KAAKwgF,SAAS7tC,GAAGitC,IAAyB,WAC9D5W,EAAoB,QAAE5Q,EAAMyU,UAAUh6B,IAAI8sC,IAAuB,SAAUhnF,GACrEqwE,EAAoB,QAAErwE,EAAMQ,QAAQ0sC,GAAGuyB,EAAMyU,YAC/CzU,EAAMwoB,sBAAuB,EAEjC,GACF,IACA5gF,KAAKmhF,eAAc,WACjB,OAAO/oB,EAAMgpB,aAAahrC,EAC5B,IA7BA,CA8BF,EACA02B,EAAO38B,KAAO,SAAcx3C,GAC1B,IAAI87E,EAASz0E,KAIb,GAHIrH,GACFA,EAAM46C,iBAEHvzC,KAAK0gF,WAAY1gF,KAAKg4E,iBAA3B,CAGA,IAAIgF,EAAYhU,EAAoB,QAAEvzB,MAAMypC,IAE5C,GADAlW,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQwpC,GACxCh9E,KAAK0gF,WAAY1D,EAAU9mC,qBAAhC,CAGAl2C,KAAK0gF,UAAW,EAChB,IAAIW,EAAarY,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAASs2B,IAU/D,GATIsC,IACFrhF,KAAKg4E,kBAAmB,GAE1Bh4E,KAAKihF,kBACLjhF,KAAKkhF,kBACLlY,EAAoB,QAAEhxE,UAAU+6C,IAAIwsC,IACpCvW,EAAoB,QAAEhpE,KAAK6sE,UAAUxkB,YAAY22B,IACjDhW,EAAoB,QAAEhpE,KAAK6sE,UAAU95B,IAAI0sC,IACzCzW,EAAoB,QAAEhpE,KAAKwgF,SAASztC,IAAI6sC,IACpCyB,EAAY,CACd,IAAI3W,EAAqBR,EAAKO,iCAAiCzqE,KAAK6sE,UACpE7D,EAAoB,QAAEhpE,KAAK6sE,UAAUh6B,IAAIq3B,EAAKN,gBAAgB,SAAUjxE,GACtE,OAAO87E,EAAO6M,WAAW3oF,EAC3B,IAAG0xE,qBAAqBK,EAC1B,MACE1qE,KAAKshF,YAlBP,CALA,CAyBF,EACAxU,EAAOM,QAAU,WACf,CAAC9xE,OAAQ0E,KAAK6sE,SAAU7sE,KAAKwgF,SAASloE,SAAQ,SAAUipE,GACtD,OAAOvY,EAAoB,QAAEuY,GAAaxuC,IAAIwrC,GAChD,IAOAvV,EAAoB,QAAEhxE,UAAU+6C,IAAIwsC,IACpCvW,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAUyR,IAChDt+E,KAAKuC,QAAU,KACfvC,KAAK6sE,SAAW,KAChB7sE,KAAKwgF,QAAU,KACfxgF,KAAKygF,UAAY,KACjBzgF,KAAK0gF,SAAW,KAChB1gF,KAAK2gF,mBAAqB,KAC1B3gF,KAAK4gF,qBAAuB,KAC5B5gF,KAAKg4E,iBAAmB,KACxBh4E,KAAK6gF,gBAAkB,IACzB,EACA/T,EAAO0U,aAAe,WACpBxhF,KAAKghF,eACP,EAGAlU,EAAOuG,WAAa,SAAoBlyE,GAGtC,OAFAA,EAASooE,EAAS,CAAC,EAAG6W,GAAWj/E,GACjC+oE,EAAKe,gBAAgBmT,GAAQj9E,EAAQm/E,IAC9Bn/E,CACT,EACA2rE,EAAO2U,2BAA6B,WAClC,IAAI7M,EAAS50E,KACT0hF,EAAqB1Y,EAAoB,QAAEvzB,MAAM0pC,IAErD,GADAnW,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQkuC,IACzCA,EAAmBxrC,qBAAvB,CAGA,IAAIyrC,EAAqB3hF,KAAK6sE,SAAS+U,aAAe5pF,SAASy+B,gBAAgBorD,aAC1EF,IACH3hF,KAAK6sE,SAAS59B,MAAMyW,UAAY,UAElC1lD,KAAK6sE,SAASqC,UAAU58D,IAAI2sE,IAC5B,IAAI6C,EAA0B5X,EAAKO,iCAAiCzqE,KAAKwgF,SACzExX,EAAoB,QAAEhpE,KAAK6sE,UAAU95B,IAAIm3B,EAAKN,gBAC9CZ,EAAoB,QAAEhpE,KAAK6sE,UAAUh6B,IAAIq3B,EAAKN,gBAAgB,WAC5DgL,EAAO/H,SAASqC,UAAUhmC,OAAO+1C,IAC5B0C,GACH3Y,EAAoB,QAAE4L,EAAO/H,UAAUh6B,IAAIq3B,EAAKN,gBAAgB,WAC9DgL,EAAO/H,SAAS59B,MAAMyW,UAAY,EACpC,IAAG2kB,qBAAqBuK,EAAO/H,SAAUiV,EAE7C,IAAGzX,qBAAqByX,GACxB9hF,KAAK6sE,SAAS1rC,OAhBd,CAiBF,EACA2rC,EAAOsU,aAAe,SAAsBhrC,GAC1C,IAAI2/B,EAAS/1E,KACTqhF,EAAarY,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAASs2B,IAC3DgD,EAAY/hF,KAAKwgF,QAAUxgF,KAAKwgF,QAAQxiD,cAAc+hD,IAAuB,KAC5E//E,KAAK6sE,SAAS74C,YAAch0B,KAAK6sE,SAAS74C,WAAWX,WAAa8mC,KAAKC,cAE1EpiE,SAASg4C,KAAKt2C,YAAYsG,KAAK6sE,UAEjC7sE,KAAK6sE,SAAS59B,MAAMC,QAAU,QAC9BlvC,KAAK6sE,SAASrwC,gBAAgB,eAC9Bx8B,KAAK6sE,SAASx0E,aAAa,cAAc,GACzC2H,KAAK6sE,SAASx0E,aAAa,OAAQ,UAC/B2wE,EAAoB,QAAEhpE,KAAKwgF,SAAS/3B,SAASk2B,KAA0BoD,EACzEA,EAAUj/B,UAAY,EAEtB9iD,KAAK6sE,SAAS/pB,UAAY,EAExBu+B,GACFnX,EAAKY,OAAO9qE,KAAK6sE,UAEnB7D,EAAoB,QAAEhpE,KAAK6sE,UAAU5kB,SAAS+2B,IAC1Ch/E,KAAKuC,QAAQ4+B,OACfnhC,KAAKgiF,gBAEP,IAAIC,EAAajZ,EAAoB,QAAEvzB,MAAM6pC,GAAe,CAC1DlpC,cAAeA,IAEb8rC,EAAqB,WACnBnM,EAAOxzE,QAAQ4+B,OACjB40C,EAAOlJ,SAAS1rC,QAElB40C,EAAOiC,kBAAmB,EAC1BhP,EAAoB,QAAE+M,EAAOlJ,UAAUr5B,QAAQyuC,EACjD,EACA,GAAIZ,EAAY,CACd,IAAI3W,EAAqBR,EAAKO,iCAAiCzqE,KAAKwgF,SACpExX,EAAoB,QAAEhpE,KAAKwgF,SAAS3tC,IAAIq3B,EAAKN,eAAgBsY,GAAoB7X,qBAAqBK,EACxG,MACEwX,GAEJ,EACApV,EAAOkV,cAAgB,WACrB,IAAIG,EAASniF,KACbgpE,EAAoB,QAAEhxE,UAAU+6C,IAAIwsC,IACnC5sC,GAAG4sC,IAAe,SAAU5mF,GACvBX,WAAaW,EAAMQ,QAAUgpF,EAAOtV,WAAal0E,EAAMQ,QAA8E,IAApE6vE,EAAoB,QAAEmZ,EAAOtV,UAAU/rC,IAAInoC,EAAMQ,QAAQ3C,QAC5H2rF,EAAOtV,SAAS1rC,OAEpB,GACF,EACA2rC,EAAOmU,gBAAkB,WACvB,IAAImB,EAASpiF,KACTA,KAAK0gF,SACP1X,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAG+sC,IAAuB,SAAU/mF,GACnEypF,EAAO7/E,QAAQ6vE,UAAYz5E,EAAMs/C,QAAUymC,IAC7C/lF,EAAM46C,iBACN6uC,EAAOjyC,QACGiyC,EAAO7/E,QAAQ6vE,UAAYz5E,EAAMs/C,QAAUymC,IACrD0D,EAAOX,4BAEX,IACUzhF,KAAK0gF,UACf1X,EAAoB,QAAEhpE,KAAK6sE,UAAU95B,IAAI2sC,GAE7C,EACA5S,EAAOoU,gBAAkB,WACvB,IAAImB,EAASriF,KACTA,KAAK0gF,SACP1X,EAAoB,QAAE1tE,QAAQq3C,GAAG6sC,IAAc,SAAU7mF,GACvD,OAAO0pF,EAAOb,aAAa7oF,EAC7B,IAEAqwE,EAAoB,QAAE1tE,QAAQy3C,IAAIysC,GAEtC,EACA1S,EAAOwU,WAAa,WAClB,IAAIgB,EAAStiF,KACbA,KAAK6sE,SAAS59B,MAAMC,QAAU,OAC9BlvC,KAAK6sE,SAASx0E,aAAa,eAAe,GAC1C2H,KAAK6sE,SAASrwC,gBAAgB,cAC9Bx8B,KAAK6sE,SAASrwC,gBAAgB,QAC9Bx8B,KAAKg4E,kBAAmB,EACxBh4E,KAAKmhF,eAAc,WACjBnY,EAAoB,QAAEhxE,SAASg4C,MAAMqY,YAAYy2B,IACjDwD,EAAOC,oBACPD,EAAOE,kBACPxZ,EAAoB,QAAEsZ,EAAOzV,UAAUr5B,QAAQ4rC,GACjD,GACF,EACAtS,EAAO2V,gBAAkB,WACnBziF,KAAKygF,YACPzX,EAAoB,QAAEhpE,KAAKygF,WAAWv3C,SACtClpC,KAAKygF,UAAY,KAErB,EACA3T,EAAOqU,cAAgB,SAAuBnlF,GAC5C,IAAI0mF,EAAS1iF,KACTgmD,EAAUgjB,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAASs2B,IAAqBA,GAAoB,GACrG,GAAI/+E,KAAK0gF,UAAY1gF,KAAKuC,QAAQ89E,SAAU,CAyB1C,GAxBArgF,KAAKygF,UAAYzoF,SAASC,cAAc,OACxC+H,KAAKygF,UAAUriD,UAAYygD,GACvB74B,GACFhmD,KAAKygF,UAAUvR,UAAU58D,IAAI0zC,GAE/BgjB,EAAoB,QAAEhpE,KAAKygF,WAAW1lC,SAAS/iD,SAASg4C,MACxDg5B,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAG8sC,IAAuB,SAAU9mF,GACnE+pF,EAAO9B,qBACT8B,EAAO9B,sBAAuB,EAG5BjoF,EAAMQ,SAAWR,EAAMu8C,gBAGK,WAA5BwtC,EAAOngF,QAAQ89E,SACjBqC,EAAOjB,6BAEPiB,EAAOvyC,OAEX,IACI6V,GACFkkB,EAAKY,OAAO9qE,KAAKygF,WAEnBzX,EAAoB,QAAEhpE,KAAKygF,WAAWx4B,SAAS+2B,KAC1ChjF,EACH,OAEF,IAAKgqD,EAEH,YADAhqD,IAGF,IAAI2mF,EAA6BzY,EAAKO,iCAAiCzqE,KAAKygF,WAC5EzX,EAAoB,QAAEhpE,KAAKygF,WAAW5tC,IAAIq3B,EAAKN,eAAgB5tE,GAAUquE,qBAAqBsY,EAChG,MAAO,IAAK3iF,KAAK0gF,UAAY1gF,KAAKygF,UAAW,CAC3CzX,EAAoB,QAAEhpE,KAAKygF,WAAWp4B,YAAY22B,IAClD,IAAI4D,EAAiB,WACnBF,EAAOD,kBACHzmF,GACFA,GAEJ,EACA,GAAIgtE,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAASs2B,IAAoB,CACpE,IAAI8D,EAA8B3Y,EAAKO,iCAAiCzqE,KAAKygF,WAC7EzX,EAAoB,QAAEhpE,KAAKygF,WAAW5tC,IAAIq3B,EAAKN,eAAgBgZ,GAAgBvY,qBAAqBwY,EACtG,MACED,GAEJ,MAAW5mF,GACTA,GAEJ,EAMA8wE,EAAOkU,cAAgB,WACrB,IAAIW,EAAqB3hF,KAAK6sE,SAAS+U,aAAe5pF,SAASy+B,gBAAgBorD,cAC1E7hF,KAAK2gF,oBAAsBgB,IAC9B3hF,KAAK6sE,SAAS59B,MAAM6zC,YAAc9iF,KAAK6gF,gBAAkB,MAEvD7gF,KAAK2gF,qBAAuBgB,IAC9B3hF,KAAK6sE,SAAS59B,MAAM8zC,aAAe/iF,KAAK6gF,gBAAkB,KAE9D,EACA/T,EAAOyV,kBAAoB,WACzBviF,KAAK6sE,SAAS59B,MAAM6zC,YAAc,GAClC9iF,KAAK6sE,SAAS59B,MAAM8zC,aAAe,EACrC,EACAjW,EAAOgU,gBAAkB,WACvB,IAAI/tB,EAAO/6D,SAASg4C,KAAKgS,wBACzBhiD,KAAK2gF,mBAAqBz8E,KAAK+c,MAAM8xC,EAAK7Q,KAAO6Q,EAAK/V,OAAS1hD,OAAO0nF,WACtEhjF,KAAK6gF,gBAAkB7gF,KAAKijF,oBAC9B,EACAnW,EAAOiU,cAAgB,WACrB,IAAImC,EAAUljF,KACd,GAAIA,KAAK2gF,mBAAoB,CAG3B,IAAIwC,EAAe,GAAG3nF,MAAM5E,KAAKoB,SAASskC,iBAAiB4jD,KACvDkD,EAAgB,GAAG5nF,MAAM5E,KAAKoB,SAASskC,iBAAiB6jD,KAE5DnX,EAAoB,QAAEma,GAAcjuD,MAAK,SAAUlH,EAAOmpC,GACxD,IAAIksB,EAAgBlsB,EAAQloB,MAAM8zC,aAC9BO,EAAoBta,EAAoB,QAAE7R,GAAShoB,IAAI,iBAC3D65B,EAAoB,QAAE7R,GAASlhE,KAAK,gBAAiBotF,GAAel0C,IAAI,gBAAiBrvB,WAAWwjE,GAAqBJ,EAAQrC,gBAAkB,KACrJ,IAEA7X,EAAoB,QAAEoa,GAAeluD,MAAK,SAAUlH,EAAOmpC,GACzD,IAAIosB,EAAepsB,EAAQloB,MAAMu0C,YAC7BC,EAAmBza,EAAoB,QAAE7R,GAAShoB,IAAI,gBAC1D65B,EAAoB,QAAE7R,GAASlhE,KAAK,eAAgBstF,GAAcp0C,IAAI,eAAgBrvB,WAAW2jE,GAAoBP,EAAQrC,gBAAkB,KACjJ,IAEA,IAAIwC,EAAgBrrF,SAASg4C,KAAKf,MAAM8zC,aACpCO,EAAoBta,EAAoB,QAAEhxE,SAASg4C,MAAMb,IAAI,iBACjE65B,EAAoB,QAAEhxE,SAASg4C,MAAM/5C,KAAK,gBAAiBotF,GAAel0C,IAAI,gBAAiBrvB,WAAWwjE,GAAqBtjF,KAAK6gF,gBAAkB,KACxJ,CACA7X,EAAoB,QAAEhxE,SAASg4C,MAAMiY,SAAS62B,GAChD,EACAhS,EAAO0V,gBAAkB,WAEvB,IAAIW,EAAe,GAAG3nF,MAAM5E,KAAKoB,SAASskC,iBAAiB4jD,KAC3DlX,EAAoB,QAAEma,GAAcjuD,MAAK,SAAUlH,EAAOmpC,GACxD,IAAI/U,EAAU4mB,EAAoB,QAAE7R,GAASlhE,KAAK,iBAClD+yE,EAAoB,QAAE7R,GAASppB,WAAW,iBAC1CopB,EAAQloB,MAAM8zC,aAAe3gC,GAAoB,EACnD,IAEA,IAAI3jB,EAAW,GAAGjjC,MAAM5E,KAAKoB,SAASskC,iBAAiB,GAAK6jD,KAC5DnX,EAAoB,QAAEvqC,GAAUvJ,MAAK,SAAUlH,EAAOmpC,GACpD,IAAIhV,EAAS6mB,EAAoB,QAAE7R,GAASlhE,KAAK,gBAC3B,qBAAXksD,GACT6mB,EAAoB,QAAE7R,GAAShoB,IAAI,eAAgBgT,GAAQpU,WAAW,eAE1E,IAEA,IAAIqU,EAAU4mB,EAAoB,QAAEhxE,SAASg4C,MAAM/5C,KAAK,iBACxD+yE,EAAoB,QAAEhxE,SAASg4C,MAAMjC,WAAW,iBAChD/1C,SAASg4C,KAAKf,MAAM8zC,aAAe3gC,GAAoB,EACzD,EACA0qB,EAAOmW,mBAAqB,WAE1B,IAAIS,EAAY1rF,SAASC,cAAc,OACvCyrF,EAAUtlD,UAAYwgD,GACtB5mF,SAASg4C,KAAKt2C,YAAYgqF,GAC1B,IAAIC,EAAiBD,EAAU1hC,wBAAwBjG,MAAQ2nC,EAAUE,YAEzE,OADA5rF,SAASg4C,KAAK/b,YAAYyvD,GACnBC,CACT,EAGApD,EAAMhT,iBAAmB,SAA0BpsE,EAAQi1C,GACzD,OAAOp2C,KAAKk1B,MAAK,WACf,IAAIj/B,EAAO+yE,EAAoB,QAAEhpE,MAAM/J,KAAKqoF,IACxC/7E,EAAUgnE,EAAS,CAAC,EAAG6W,GAAWpX,EAAoB,QAAEhpE,MAAM/J,OAA0B,kBAAXkL,GAAuBA,EAASA,EAAS,CAAC,GAK3H,GAJKlL,IACHA,EAAO,IAAIsqF,EAAMvgF,KAAMuC,GACvBymE,EAAoB,QAAEhpE,MAAM/J,KAAKqoF,GAAYroF,IAEzB,kBAAXkL,EAAqB,CAC9B,GAA4B,qBAAjBlL,EAAKkL,GACd,MAAM,IAAIupC,UAAU,oBAAuBvpC,EAAS,KAEtDlL,EAAKkL,GAAQi1C,EACf,MAAW7zC,EAAQ2tC,MACjBj6C,EAAKi6C,KAAKkG,EAEd,GACF,EACA+yB,EAAaoX,EAAO,KAAM,CAAC,CACzB1lF,IAAK,UACLV,IAAK,WACH,OAAOkkF,EACT,GACC,CACDxjF,IAAK,UACLV,IAAK,WACH,OAAOimF,EACT,KAEKG,CACT,CApZyB,GAyZzBvX,EAAoB,QAAEhxE,UAAU26C,GAAGktC,GAAwBG,IAAwB,SAAUrnF,GAC3F,IACIQ,EADA0qF,EAAU7jF,KAEVq0B,EAAW61C,EAAKK,uBAAuBvqE,MACvCq0B,IACFl7B,EAASnB,SAASgmC,cAAc3J,IAElC,IAAIlzB,EAAS6nE,EAAoB,QAAE7vE,GAAQlD,KAAKqoF,IAAc,SAAW/U,EAAS,CAAC,EAAGP,EAAoB,QAAE7vE,GAAQlD,OAAQ+yE,EAAoB,QAAEhpE,MAAM/J,QACnI,MAAjB+J,KAAKq3D,SAAoC,SAAjBr3D,KAAKq3D,SAC/B1+D,EAAM46C,iBAER,IAAI8lC,EAAUrQ,EAAoB,QAAE7vE,GAAQ05C,IAAIwsC,IAAc,SAAUzC,GAClEA,EAAU1mC,sBAIdmjC,EAAQxmC,IAAIusC,IAAgB,WACtBpW,EAAoB,QAAE6a,GAASh+C,GAAG,aACpCg+C,EAAQ1iD,OAEZ,GACF,IACAo/C,GAAMhT,iBAAiB32E,KAAKoyE,EAAoB,QAAE7vE,GAASgI,EAAQnB,KACrE,IAKAgpE,EAAoB,QAAE7rE,GAAGihF,IAAUmC,GAAMhT,iBACzCvE,EAAoB,QAAE7rE,GAAGihF,IAAQhV,YAAcmX,GAC/CvX,EAAoB,QAAE7rE,GAAGihF,IAAQ1pB,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAGihF,IAAUK,GAC5B8B,GAAMhT,gBACf,EAQA,IAAIuW,GAAW,CAAC,aAAc,OAAQ,OAAQ,WAAY,WAAY,SAAU,MAAO,cAEnFC,GAAmB,CAErB,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAHT,kBAI3BxnF,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BynF,KAAM,GACNxnF,EAAG,GACHynF,GAAI,GACJhzC,IAAK,GACLtd,KAAM,GACN0c,IAAK,GACL6zC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJnuF,EAAG,GACHouF,IAAK,CAAC,MAAO,SAAU,MAAO,QAAS,QAAS,UAChDC,GAAI,GACJC,GAAI,GACJrsF,EAAG,GACHssF,IAAK,GACLppF,EAAG,GACHqpF,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACR97E,EAAG,GACH+7E,GAAI,IAQFC,GAAmB,iEAOnBC,GAAmB,qIACvB,SAASC,GAAiB3mD,EAAM4mD,GAC9B,IAAIC,EAAW7mD,EAAKlK,SAASjsB,cAC7B,IAAgD,IAA5C+8E,EAAqBz4E,QAAQ04E,GAC/B,OAAoC,IAAhC1B,GAASh3E,QAAQ04E,IACZnd,QAAQ+c,GAAiBv/E,KAAK84B,EAAKjI,YAAc2uD,GAAiBx/E,KAAK84B,EAAKjI,YAQvF,IAJA,IAAI+uD,EAASF,EAAqB//D,QAAO,SAAUkgE,GACjD,OAAOA,aAAqBjjF,MAC9B,IAESnM,EAAI,EAAG2J,EAAMwlF,EAAOjvF,OAAQF,EAAI2J,EAAK3J,IAC5C,GAAImvF,EAAOnvF,GAAGuP,KAAK2/E,GACjB,OAAO,EAGX,OAAO,CACT,CACA,SAASG,GAAaC,EAAYC,EAAWC,GAC3C,GAA0B,IAAtBF,EAAWpvF,OACb,OAAOovF,EAET,GAAIE,GAAoC,oBAAfA,EACvB,OAAOA,EAAWF,GAsBpB,IApBA,IACIG,GADY,IAAIzqF,OAAO0tD,WACKC,gBAAgB28B,EAAY,aACxDI,EAAgBvvF,OAAOwL,KAAK4jF,GAC5BpnD,EAAW,GAAGjjC,MAAM5E,KAAKmvF,EAAgB/1C,KAAK1T,iBAAiB,MAC/D2pD,EAAQ,SAAe3vF,EAAG2J,GAC5B,IAAI68B,EAAK2B,EAASnoC,GACd4vF,EAASppD,EAAGrI,SAASjsB,cACzB,IAA0D,IAAtDw9E,EAAcl5E,QAAQgwB,EAAGrI,SAASjsB,eAEpC,OADAs0B,EAAG9I,WAAWC,YAAY6I,GACnB,WAET,IAAIqpD,EAAgB,GAAG3qF,MAAM5E,KAAKkmC,EAAGxD,YAEjC8sD,EAAwB,GAAGvzE,OAAOgzE,EAAU,MAAQ,GAAIA,EAAUK,IAAW,IACjFC,EAAc7tE,SAAQ,SAAUqmB,GACzB2mD,GAAiB3mD,EAAMynD,IAC1BtpD,EAAGN,gBAAgBmC,EAAKlK,SAE5B,GACF,EACSn+B,EAAI,EAAG2J,EAAMw+B,EAASjoC,OAAQF,EAAI2J,EAAK3J,IACnC2vF,EAAM3vF,GAGnB,OAAOyvF,EAAgB/1C,KAAK3R,SAC9B,CAMA,IAAIgoD,GAAS,UACTC,GAAY,QACZC,GAAa,aACbC,GAAc,IAAMD,GACpBE,GAAuBzd,EAAoB,QAAE7rE,GAAGkpF,IAChDK,GAAiB,aACjBC,GAAuB,IAAIlkF,OAAO,UAAYikF,GAAiB,OAAQ,KACvEE,GAAwB,CAAC,WAAY,YAAa,cAClDC,GAAoB,OACpBC,GAAoB,OACpBC,GAAmB,OACnBC,GAAkB,MAClBC,GAAyB,iBACzBC,GAAiB,SACjBC,GAAgB,QAChBC,GAAgB,QAChBC,GAAgB,QAChBC,GAAiB,SACjBC,GAAgB,CAClBC,KAAM,OACNC,IAAK,MACLC,MAAO,QACPC,OAAQ,SACRC,KAAM,QAEJC,GAAY,CACd5jC,WAAW,EACX6jC,SAAU,uGACVt0C,QAAS,cACTu0C,MAAO,GACPhhC,MAAO,EACPjN,MAAM,EACNzlB,UAAU,EACVmpD,UAAW,MACXh8D,OAAQ,EACRi7B,WAAW,EACXurC,kBAAmB,OACnBjM,SAAU,eACVkM,YAAa,GACbC,UAAU,EACVpC,WAAY,KACZD,UAAW9B,GACX9H,aAAc,MAEZkM,GAAgB,CAClBlkC,UAAW,UACX6jC,SAAU,SACVC,MAAO,4BACPv0C,QAAS,SACTuT,MAAO,kBACPjN,KAAM,UACNzlB,SAAU,mBACVmpD,UAAW,oBACXh8D,OAAQ,2BACRi7B,UAAW,2BACXurC,kBAAmB,iBACnBjM,SAAU,mBACVkM,YAAa,oBACbC,SAAU,UACVpC,WAAY,kBACZD,UAAW,SACX5J,aAAc,iBAEZmM,GAAU,CACZC,KAAM,OAAS7B,GACf8B,OAAQ,SAAW9B,GACnB+B,KAAM,OAAS/B,GACfgC,MAAO,QAAUhC,GACjBiC,SAAU,WAAajC,GACvBkC,MAAO,QAAUlC,GACjBmC,QAAS,UAAYnC,GACrBoC,SAAU,WAAapC,GACvBqC,WAAY,aAAerC,GAC3BsC,WAAY,aAAetC,IAMzBuC,GAAuB,WACzB,SAASA,EAAQ5xB,EAASh2D,GACxB,GAA0C,qBAA/B8nE,EAAyB,QAClC,MAAM,IAAIv+B,UAAU,+DAGtB1qC,KAAKgpF,YAAa,EAClBhpF,KAAKipF,SAAW,EAChBjpF,KAAKkpF,YAAc,GACnBlpF,KAAKmpF,eAAiB,CAAC,EACvBnpF,KAAKo8E,QAAU,KAEfp8E,KAAKm3D,QAAUA,EACfn3D,KAAKmB,OAASnB,KAAKqzE,WAAWlyE,GAC9BnB,KAAKopF,IAAM,KACXppF,KAAKqpF,eACP,CAEA,IAAIvc,EAASic,EAAQryF,UA6drB,OA1dAo2E,EAAOwc,OAAS,WACdtpF,KAAKgpF,YAAa,CACpB,EACAlc,EAAO3jC,QAAU,WACfnpC,KAAKgpF,YAAa,CACpB,EACAlc,EAAOyc,cAAgB,WACrBvpF,KAAKgpF,YAAchpF,KAAKgpF,UAC1B,EACAlc,EAAO18B,OAAS,SAAgBz3C,GAC9B,GAAKqH,KAAKgpF,WAGV,GAAIrwF,EAAO,CACT,IAAI6wF,EAAUxpF,KAAK40B,YAAY60D,SAC3Bn1D,EAAU00C,EAAoB,QAAErwE,EAAMu8C,eAAej/C,KAAKuzF,GACzDl1D,IACHA,EAAU,IAAIt0B,KAAK40B,YAAYj8B,EAAMu8C,cAAel1C,KAAK0pF,sBACzD1gB,EAAoB,QAAErwE,EAAMu8C,eAAej/C,KAAKuzF,EAASl1D,IAE3DA,EAAQ60D,eAAerzC,OAASxhB,EAAQ60D,eAAerzC,MACnDxhB,EAAQq1D,uBACVr1D,EAAQs1D,OAAO,KAAMt1D,GAErBA,EAAQu1D,OAAO,KAAMv1D,EAEzB,KAAO,CACL,GAAI00C,EAAoB,QAAEhpE,KAAK8pF,iBAAiBrhC,SAASq+B,IAEvD,YADA9mF,KAAK6pF,OAAO,KAAM7pF,MAGpBA,KAAK4pF,OAAO,KAAM5pF,KACpB,CACF,EACA8sE,EAAOM,QAAU,WACft0E,aAAakH,KAAKipF,UAClBjgB,EAAoB,QAAEj7B,WAAW/tC,KAAKm3D,QAASn3D,KAAK40B,YAAY60D,UAChEzgB,EAAoB,QAAEhpE,KAAKm3D,SAASpkB,IAAI/yC,KAAK40B,YAAYm1D,WACzD/gB,EAAoB,QAAEhpE,KAAKm3D,SAASpwB,QAAQ,UAAUgM,IAAI,gBAAiB/yC,KAAKgqF,mBAC5EhqF,KAAKopF,KACPpgB,EAAoB,QAAEhpE,KAAKopF,KAAKlgD,SAElClpC,KAAKgpF,WAAa,KAClBhpF,KAAKipF,SAAW,KAChBjpF,KAAKkpF,YAAc,KACnBlpF,KAAKmpF,eAAiB,KAClBnpF,KAAKo8E,SACPp8E,KAAKo8E,QAAQa,UAEfj9E,KAAKo8E,QAAU,KACfp8E,KAAKm3D,QAAU,KACfn3D,KAAKmB,OAAS,KACdnB,KAAKopF,IAAM,IACb,EACAtc,EAAO58B,KAAO,WACZ,IAAIkoB,EAAQp4D,KACZ,GAA2D,SAAvDgpE,EAAoB,QAAEhpE,KAAKm3D,SAAShoB,IAAI,WAC1C,MAAM,IAAIz2C,MAAM,uCAElB,IAAIkkF,EAAY5T,EAAoB,QAAEvzB,MAAMz1C,KAAK40B,YAAY6gB,MAAM8yC,MACnE,GAAIvoF,KAAKiqF,iBAAmBjqF,KAAKgpF,WAAY,CAC3ChgB,EAAoB,QAAEhpE,KAAKm3D,SAAS3jB,QAAQopC,GAC5C,IAAIsN,EAAahgB,EAAKoB,eAAetrE,KAAKm3D,SACtCgzB,EAAanhB,EAAoB,QAAEtxC,SAAwB,OAAfwyD,EAAsBA,EAAalqF,KAAKm3D,QAAQjgC,cAAcT,gBAAiBz2B,KAAKm3D,SACpI,GAAIylB,EAAU1mC,uBAAyBi0C,EACrC,OAEF,IAAIf,EAAMppF,KAAK8pF,gBACXM,EAAQlgB,EAAKI,OAAOtqE,KAAK40B,YAAYy1D,MACzCjB,EAAI/wF,aAAa,KAAM+xF,GACvBpqF,KAAKm3D,QAAQ9+D,aAAa,mBAAoB+xF,GAC9CpqF,KAAKsqF,aACDtqF,KAAKmB,OAAO8iD,WACd+kB,EAAoB,QAAEogB,GAAKnhC,SAAS4+B,IAEtC,IAAIrJ,EAA6C,oBAA1Bx9E,KAAKmB,OAAOq8E,UAA2Bx9E,KAAKmB,OAAOq8E,UAAU5mF,KAAKoJ,KAAMopF,EAAKppF,KAAKm3D,SAAWn3D,KAAKmB,OAAOq8E,UAC5H+M,EAAavqF,KAAKwqF,eAAehN,GACrCx9E,KAAKyqF,mBAAmBF,GACxB,IAAI9tC,EAAYz8C,KAAK0qF,gBACrB1hB,EAAoB,QAAEogB,GAAKnzF,KAAK+J,KAAK40B,YAAY60D,SAAUzpF,MACtDgpE,EAAoB,QAAEtxC,SAAS13B,KAAKm3D,QAAQjgC,cAAcT,gBAAiBz2B,KAAKopF,MACnFpgB,EAAoB,QAAEogB,GAAKruC,SAAS0B,GAEtCusB,EAAoB,QAAEhpE,KAAKm3D,SAAS3jB,QAAQxzC,KAAK40B,YAAY6gB,MAAMgzC,UACnEzoF,KAAKo8E,QAAU,IAAInT,EAAyB,QAAEjpE,KAAKm3D,QAASiyB,EAAKppF,KAAK+8E,iBAAiBwN,IACvFvhB,EAAoB,QAAEogB,GAAKnhC,SAAS6+B,IACpC9d,EAAoB,QAAEogB,GAAKnhC,SAASjoD,KAAKmB,OAAO8mF,aAK5C,iBAAkBjwF,SAASy+B,iBAC7BuyC,EAAoB,QAAEhxE,SAASg4C,MAAMvJ,WAAWkM,GAAG,YAAa,KAAMq2B,EAAoB,QAAE5yC,MAE9F,IAAI2uB,EAAW,WACTqT,EAAMj3D,OAAO8iD,WACfmU,EAAMuyB,iBAER,IAAIC,EAAiBxyB,EAAM8wB,YAC3B9wB,EAAM8wB,YAAc,KACpBlgB,EAAoB,QAAE5Q,EAAMjB,SAAS3jB,QAAQ4kB,EAAMxjC,YAAY6gB,MAAM+yC,OACjEoC,IAAmB5D,IACrB5uB,EAAMyxB,OAAO,KAAMzxB,EAEvB,EACA,GAAI4Q,EAAoB,QAAEhpE,KAAKopF,KAAK3gC,SAASo+B,IAAoB,CAC/D,IAAInc,EAAqBR,EAAKO,iCAAiCzqE,KAAKopF,KACpEpgB,EAAoB,QAAEhpE,KAAKopF,KAAKv2C,IAAIq3B,EAAKN,eAAgB7kB,GAAUslB,qBAAqBK,EAC1F,MACE3lB,GAEJ,CACF,EACA+nB,EAAO38B,KAAO,SAAcn0C,GAC1B,IAAIy4E,EAASz0E,KACTopF,EAAMppF,KAAK8pF,gBACX9M,EAAYhU,EAAoB,QAAEvzB,MAAMz1C,KAAK40B,YAAY6gB,MAAM4yC,MAC/DtjC,EAAW,WACT0vB,EAAOyU,cAAgBnC,IAAoBqC,EAAIp1D,YACjDo1D,EAAIp1D,WAAWC,YAAYm1D,GAE7B3U,EAAOoW,iBACPpW,EAAOtd,QAAQ36B,gBAAgB,oBAC/BwsC,EAAoB,QAAEyL,EAAOtd,SAAS3jB,QAAQihC,EAAO7/C,YAAY6gB,MAAM6yC,QAChD,OAAnB7T,EAAO2H,SACT3H,EAAO2H,QAAQa,UAEbjhF,GACFA,GAEJ,EAEA,GADAgtE,EAAoB,QAAEhpE,KAAKm3D,SAAS3jB,QAAQwpC,IACxCA,EAAU9mC,qBAAd,CAYA,GATA8yB,EAAoB,QAAEogB,GAAK/gC,YAAYy+B,IAGnC,iBAAkB9uF,SAASy+B,iBAC7BuyC,EAAoB,QAAEhxE,SAASg4C,MAAMvJ,WAAWsM,IAAI,YAAa,KAAMi2B,EAAoB,QAAE5yC,MAE/Fp2B,KAAKmpF,eAAe9B,KAAiB,EACrCrnF,KAAKmpF,eAAe/B,KAAiB,EACrCpnF,KAAKmpF,eAAehC,KAAiB,EACjCne,EAAoB,QAAEhpE,KAAKopF,KAAK3gC,SAASo+B,IAAoB,CAC/D,IAAInc,EAAqBR,EAAKO,iCAAiC2e,GAC/DpgB,EAAoB,QAAEogB,GAAKv2C,IAAIq3B,EAAKN,eAAgB7kB,GAAUslB,qBAAqBK,EACrF,MACE3lB,IAEF/kD,KAAKkpF,YAAc,EAhBnB,CAiBF,EACApc,EAAOoQ,OAAS,WACO,OAAjBl9E,KAAKo8E,SACPp8E,KAAKo8E,QAAQe,gBAEjB,EAGArQ,EAAOmd,cAAgB,WACrB,OAAO5hB,QAAQroE,KAAK8qF,WACtB,EACAhe,EAAO2d,mBAAqB,SAA4BF,GACtDvhB,EAAoB,QAAEhpE,KAAK8pF,iBAAiB7hC,SAASy+B,GAAiB,IAAM6D,EAC9E,EACAzd,EAAOgd,cAAgB,WAErB,OADA9pF,KAAKopF,IAAMppF,KAAKopF,KAAOpgB,EAAoB,QAAEhpE,KAAKmB,OAAO2mF,UAAU,GAC5D9nF,KAAKopF,GACd,EACAtc,EAAOwd,WAAa,WAClB,IAAIlB,EAAMppF,KAAK8pF,gBACf9pF,KAAK+qF,kBAAkB/hB,EAAoB,QAAEogB,EAAI9sD,iBAAiB2qD,KAA0BjnF,KAAK8qF,YACjG9hB,EAAoB,QAAEogB,GAAK/gC,YAAYw+B,GAAoB,IAAMC,GACnE,EACAha,EAAOie,kBAAoB,SAA2Bvd,EAAUhmC,GACvC,kBAAZA,IAAyBA,EAAQnU,WAAYmU,EAAQ7S,OAW5D30B,KAAKmB,OAAO24C,MACV95C,KAAKmB,OAAO+mF,WACd1gD,EAAUm+C,GAAan+C,EAASxnC,KAAKmB,OAAO0kF,UAAW7lF,KAAKmB,OAAO2kF,aAErEtY,EAAS1zB,KAAKtS,IAEdgmC,EAAS15C,KAAK0T,GAfVxnC,KAAKmB,OAAO24C,KACTkvB,EAAoB,QAAExhC,GAASpH,SAASyF,GAAG2nC,IAC9CA,EAASzvE,QAAQy8C,OAAOhT,GAG1BgmC,EAAS15C,KAAKk1C,EAAoB,QAAExhC,GAAS1T,OAYnD,EACAg5C,EAAOge,SAAW,WAChB,IAAI/C,EAAQ/nF,KAAKm3D,QAAQpjC,aAAa,uBAItC,OAHKg0D,IACHA,EAAqC,oBAAtB/nF,KAAKmB,OAAO4mF,MAAuB/nF,KAAKmB,OAAO4mF,MAAMnxF,KAAKoJ,KAAKm3D,SAAWn3D,KAAKmB,OAAO4mF,OAEhGA,CACT,EAGAjb,EAAOiQ,iBAAmB,SAA0BwN,GAClD,IAAI3V,EAAS50E,KAwBb,OAAOupE,EAAS,CAAC,EAvBK,CACpBiU,UAAW+M,EACX5M,UAAW,CACTn8D,OAAQxhB,KAAKy9E,aACb3B,KAAM,CACJkP,SAAUhrF,KAAKmB,OAAO6mF,mBAExBiD,MAAO,CACL9zB,QAAS+vB,IAEXtJ,gBAAiB,CACfC,kBAAmB79E,KAAKmB,OAAO46E,WAGnCmP,SAAU,SAAkBj1F,GACtBA,EAAKk1F,oBAAsBl1F,EAAKunF,WAClC5I,EAAOwW,6BAA6Bn1F,EAExC,EACAo1F,SAAU,SAAkBp1F,GAC1B,OAAO2+E,EAAOwW,6BAA6Bn1F,EAC7C,GAEmC+J,KAAKmB,OAAO86E,aACnD,EACAnP,EAAO2Q,WAAa,WAClB,IAAI1H,EAAS/1E,KACTwhB,EAAS,CAAC,EASd,MARkC,oBAAvBxhB,KAAKmB,OAAOqgB,OACrBA,EAAOrkB,GAAK,SAAUlH,GAEpB,OADAA,EAAKynF,QAAUnU,EAAS,CAAC,EAAGtzE,EAAKynF,QAAS3H,EAAO50E,OAAOqgB,OAAOvrB,EAAKynF,QAAS3H,EAAO5e,UAC7ElhE,CACT,EAEAurB,EAAOA,OAASxhB,KAAKmB,OAAOqgB,OAEvBA,CACT,EACAsrD,EAAO4d,cAAgB,WACrB,OAA8B,IAA1B1qF,KAAKmB,OAAOs7C,UACPzkD,SAASg4C,KAEdk6B,EAAKc,UAAUhrE,KAAKmB,OAAOs7C,WACtBusB,EAAoB,QAAEhpE,KAAKmB,OAAOs7C,WAEpCusB,EAAoB,QAAEhxE,UAAUwjC,KAAKx7B,KAAKmB,OAAOs7C,UAC1D,EACAqwB,EAAO0d,eAAiB,SAAwBhN,GAC9C,OAAO+J,GAAc/J,EAAUj3E,cACjC,EACAumE,EAAOuc,cAAgB,WACrB,IAAIlH,EAASniF,KACEA,KAAKmB,OAAOqyC,QAAQvlC,MAAM,KAChCqK,SAAQ,SAAUk7B,GACzB,GAAgB,UAAZA,EACFw1B,EAAoB,QAAEmZ,EAAOhrB,SAASxkB,GAAGwvC,EAAOvtD,YAAY6gB,MAAMizC,MAAOvG,EAAOhhF,OAAOkzB,UAAU,SAAU17B,GACzG,OAAOwpF,EAAO/xC,OAAOz3C,EACvB,SACK,GAAI66C,IAAY8zC,GAAgB,CACrC,IAAIgE,EAAU93C,IAAY2zC,GAAgBhF,EAAOvtD,YAAY6gB,MAAMozC,WAAa1G,EAAOvtD,YAAY6gB,MAAMkzC,QACrG4C,EAAW/3C,IAAY2zC,GAAgBhF,EAAOvtD,YAAY6gB,MAAMqzC,WAAa3G,EAAOvtD,YAAY6gB,MAAMmzC,SAC1G5f,EAAoB,QAAEmZ,EAAOhrB,SAASxkB,GAAG24C,EAASnJ,EAAOhhF,OAAOkzB,UAAU,SAAU17B,GAClF,OAAOwpF,EAAOyH,OAAOjxF,EACvB,IAAGg6C,GAAG44C,EAAUpJ,EAAOhhF,OAAOkzB,UAAU,SAAU17B,GAChD,OAAOwpF,EAAO0H,OAAOlxF,EACvB,GACF,CACF,IACAqH,KAAKgqF,kBAAoB,WACnB7H,EAAOhrB,SACTgrB,EAAOhyC,MAEX,EACA64B,EAAoB,QAAEhpE,KAAKm3D,SAASpwB,QAAQ,UAAU4L,GAAG,gBAAiB3yC,KAAKgqF,mBAC3EhqF,KAAKmB,OAAOkzB,SACdr0B,KAAKmB,OAASooE,EAAS,CAAC,EAAGvpE,KAAKmB,OAAQ,CACtCqyC,QAAS,SACTnf,SAAU,KAGZr0B,KAAKwrF,WAET,EACA1e,EAAO0e,UAAY,WACjB,IAAIC,SAAmBzrF,KAAKm3D,QAAQpjC,aAAa,wBAC7C/zB,KAAKm3D,QAAQpjC,aAAa,UAA0B,WAAd03D,KACxCzrF,KAAKm3D,QAAQ9+D,aAAa,sBAAuB2H,KAAKm3D,QAAQpjC,aAAa,UAAY,IACvF/zB,KAAKm3D,QAAQ9+D,aAAa,QAAS,IAEvC,EACAy0E,EAAO8c,OAAS,SAAgBjxF,EAAO27B,GACrC,IAAIk1D,EAAUxpF,KAAK40B,YAAY60D,UAC/Bn1D,EAAUA,GAAW00C,EAAoB,QAAErwE,EAAMu8C,eAAej/C,KAAKuzF,MAEnEl1D,EAAU,IAAIt0B,KAAK40B,YAAYj8B,EAAMu8C,cAAel1C,KAAK0pF,sBACzD1gB,EAAoB,QAAErwE,EAAMu8C,eAAej/C,KAAKuzF,EAASl1D,IAEvD37B,IACF27B,EAAQ60D,eAA8B,YAAfxwF,EAAMM,KAAqBmuF,GAAgBD,KAAiB,GAEjFne,EAAoB,QAAE10C,EAAQw1D,iBAAiBrhC,SAASq+B,KAAsBxyD,EAAQ40D,cAAgBnC,GACxGzyD,EAAQ40D,YAAcnC,IAGxBjuF,aAAaw7B,EAAQ20D,UACrB30D,EAAQ40D,YAAcnC,GACjBzyD,EAAQnzB,OAAO4lD,OAAUzyB,EAAQnzB,OAAO4lD,MAAM7W,KAInD5b,EAAQ20D,SAAWzvF,YAAW,WACxB86B,EAAQ40D,cAAgBnC,IAC1BzyD,EAAQ4b,MAEZ,GAAG5b,EAAQnzB,OAAO4lD,MAAM7W,MAPtB5b,EAAQ4b,OAQZ,EACA48B,EAAO+c,OAAS,SAAgBlxF,EAAO27B,GACrC,IAAIk1D,EAAUxpF,KAAK40B,YAAY60D,UAC/Bn1D,EAAUA,GAAW00C,EAAoB,QAAErwE,EAAMu8C,eAAej/C,KAAKuzF,MAEnEl1D,EAAU,IAAIt0B,KAAK40B,YAAYj8B,EAAMu8C,cAAel1C,KAAK0pF,sBACzD1gB,EAAoB,QAAErwE,EAAMu8C,eAAej/C,KAAKuzF,EAASl1D,IAEvD37B,IACF27B,EAAQ60D,eAA8B,aAAfxwF,EAAMM,KAAsBmuF,GAAgBD,KAAiB,GAElF7yD,EAAQq1D,yBAGZ7wF,aAAaw7B,EAAQ20D,UACrB30D,EAAQ40D,YAAclC,GACjB1yD,EAAQnzB,OAAO4lD,OAAUzyB,EAAQnzB,OAAO4lD,MAAM5W,KAInD7b,EAAQ20D,SAAWzvF,YAAW,WACxB86B,EAAQ40D,cAAgBlC,IAC1B1yD,EAAQ6b,MAEZ,GAAG7b,EAAQnzB,OAAO4lD,MAAM5W,MAPtB7b,EAAQ6b,OAQZ,EACA28B,EAAO6c,qBAAuB,WAC5B,IAAK,IAAIn2C,KAAWxzC,KAAKmpF,eACvB,GAAInpF,KAAKmpF,eAAe31C,GACtB,OAAO,EAGX,OAAO,CACT,EACAs5B,EAAOuG,WAAa,SAAoBlyE,GACtC,IAAIuqF,EAAiB1iB,EAAoB,QAAEhpE,KAAKm3D,SAASlhE,OAuBzD,OAtBAQ,OAAOwL,KAAKypF,GAAgBpzE,SAAQ,SAAUq1B,IACK,IAA7Ci5C,GAAsB95E,QAAQ6gC,WACzB+9C,EAAe/9C,EAE1B,IAE4B,kBAD5BxsC,EAASooE,EAAS,CAAC,EAAGvpE,KAAK40B,YAAYwoD,QAASsO,EAAkC,kBAAXvqF,GAAuBA,EAASA,EAAS,CAAC,IAC/F4lD,QAChB5lD,EAAO4lD,MAAQ,CACb7W,KAAM/uC,EAAO4lD,MACb5W,KAAMhvC,EAAO4lD,QAGW,kBAAjB5lD,EAAO4mF,QAChB5mF,EAAO4mF,MAAQ5mF,EAAO4mF,MAAM3rF,YAEA,kBAAnB+E,EAAOqmC,UAChBrmC,EAAOqmC,QAAUrmC,EAAOqmC,QAAQprC,YAElC8tE,EAAKe,gBAAgBob,GAAQllF,EAAQnB,KAAK40B,YAAYyoD,aAClDl8E,EAAO+mF,WACT/mF,EAAO2mF,SAAWnC,GAAaxkF,EAAO2mF,SAAU3mF,EAAO0kF,UAAW1kF,EAAO2kF,aAEpE3kF,CACT,EACA2rE,EAAO4c,mBAAqB,WAC1B,IAAIvoF,EAAS,CAAC,EACd,GAAInB,KAAKmB,OACP,IAAK,IAAItG,KAAOmF,KAAKmB,OACfnB,KAAK40B,YAAYwoD,QAAQviF,KAASmF,KAAKmB,OAAOtG,KAChDsG,EAAOtG,GAAOmF,KAAKmB,OAAOtG,IAIhC,OAAOsG,CACT,EACA2rE,EAAO+d,eAAiB,WACtB,IAAIc,EAAO3iB,EAAoB,QAAEhpE,KAAK8pF,iBAClC8B,EAAWD,EAAKhtD,KAAK,SAASx5B,MAAMwhF,IACvB,OAAbiF,GAAqBA,EAASp1F,QAChCm1F,EAAKtjC,YAAYujC,EAAS7pF,KAAK,IAEnC,EACA+qE,EAAOse,6BAA+B,SAAsCS,GAC1E7rF,KAAKopF,IAAMyC,EAAWC,SAASC,OAC/B/rF,KAAK6qF,iBACL7qF,KAAKyqF,mBAAmBzqF,KAAKwqF,eAAeqB,EAAWrO,WACzD,EACA1Q,EAAO6d,eAAiB,WACtB,IAAIvB,EAAMppF,KAAK8pF,gBACXkC,EAAsBhsF,KAAKmB,OAAO8iD,UACE,OAApCmlC,EAAIr1D,aAAa,iBAGrBi1C,EAAoB,QAAEogB,GAAK/gC,YAAYw+B,IACvC7mF,KAAKmB,OAAO8iD,WAAY,EACxBjkD,KAAKmwC,OACLnwC,KAAKkwC,OACLlwC,KAAKmB,OAAO8iD,UAAY+nC,EAC1B,EAGAjD,EAAQxb,iBAAmB,SAA0BpsE,GACnD,OAAOnB,KAAKk1B,MAAK,WACf,IAAIs4C,EAAWxE,EAAoB,QAAEhpE,MACjC/J,EAAOu3E,EAASv3E,KAAKswF,IACrBhkF,EAA4B,kBAAXpB,GAAuBA,EAC5C,IAAKlL,IAAQ,eAAe4P,KAAK1E,MAG5BlL,IACHA,EAAO,IAAI8yF,EAAQ/oF,KAAMuC,GACzBirE,EAASv3E,KAAKswF,GAAYtwF,IAEN,kBAAXkL,GAAqB,CAC9B,GAA4B,qBAAjBlL,EAAKkL,GACd,MAAM,IAAIupC,UAAU,oBAAuBvpC,EAAS,KAEtDlL,EAAKkL,IACP,CACF,GACF,EACAgoE,EAAa4f,EAAS,KAAM,CAAC,CAC3BluF,IAAK,UACLV,IAAK,WACH,OAAOmsF,EACT,GACC,CACDzrF,IAAK,UACLV,IAAK,WACH,OAAO0tF,EACT,GACC,CACDhtF,IAAK,OACLV,IAAK,WACH,OAAOksF,EACT,GACC,CACDxrF,IAAK,WACLV,IAAK,WACH,OAAOosF,EACT,GACC,CACD1rF,IAAK,QACLV,IAAK,WACH,OAAOiuF,EACT,GACC,CACDvtF,IAAK,YACLV,IAAK,WACH,OAAOqsF,EACT,GACC,CACD3rF,IAAK,cACLV,IAAK,WACH,OAAOguF,EACT,KAEKY,CACT,CAhf2B,GAqf3B/f,EAAoB,QAAE7rE,GAAGkpF,IAAU0C,GAAQxb,iBAC3CvE,EAAoB,QAAE7rE,GAAGkpF,IAAQjd,YAAc2f,GAC/C/f,EAAoB,QAAE7rE,GAAGkpF,IAAQ3xB,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAGkpF,IAAUI,GAC5BsC,GAAQxb,gBACjB,EAMA,IAAI0e,GAAS,UACTC,GAAY,QACZC,GAAa,aACbC,GAAc,IAAMD,GACpBE,GAAuBrjB,EAAoB,QAAE7rE,GAAG8uF,IAChDK,GAAe,aACfC,GAAqB,IAAI9pF,OAAO,UAAY6pF,GAAe,OAAQ,KACnEE,GAAoB,OACpBC,GAAoB,OACpBC,GAAiB,kBACjBC,GAAmB,gBACnBC,GAAYrjB,EAAS,CAAC,EAAGwf,GAAQ3L,QAAS,CAC5CI,UAAW,QACXhqC,QAAS,QACThM,QAAS,GACTsgD,SAAU,wIAER+E,GAAgBtjB,EAAS,CAAC,EAAGwf,GAAQ1L,YAAa,CACpD71C,QAAS,8BAEPiO,GAAQ,CACV4yC,KAAM,OAAS+D,GACf9D,OAAQ,SAAW8D,GACnB7D,KAAM,OAAS6D,GACf5D,MAAO,QAAU4D,GACjB3D,SAAU,WAAa2D,GACvB1D,MAAO,QAAU0D,GACjBzD,QAAS,UAAYyD,GACrBxD,SAAU,WAAawD,GACvBvD,WAAY,aAAeuD,GAC3BtD,WAAY,aAAesD,IAMzBU,GAAuB,SAAUC,GAEnC,SAASD,IACP,OAAOC,EAASlxF,MAAMmE,KAAMlE,YAAckE,IAC5C,CAHAwpE,EAAesjB,EAASC,GAIxB,IAAIjgB,EAASggB,EAAQp2F,UA+FrB,OA5FAo2E,EAAOmd,cAAgB,WACrB,OAAOjqF,KAAK8qF,YAAc9qF,KAAKgtF,aACjC,EACAlgB,EAAO2d,mBAAqB,SAA4BF,GACtDvhB,EAAoB,QAAEhpE,KAAK8pF,iBAAiB7hC,SAASqkC,GAAe,IAAM/B,EAC5E,EACAzd,EAAOgd,cAAgB,WAErB,OADA9pF,KAAKopF,IAAMppF,KAAKopF,KAAOpgB,EAAoB,QAAEhpE,KAAKmB,OAAO2mF,UAAU,GAC5D9nF,KAAKopF,GACd,EACAtc,EAAOwd,WAAa,WAClB,IAAIqB,EAAO3iB,EAAoB,QAAEhpE,KAAK8pF,iBAEtC9pF,KAAK+qF,kBAAkBY,EAAKnwD,KAAKkxD,IAAiB1sF,KAAK8qF,YACvD,IAAItjD,EAAUxnC,KAAKgtF,cACI,oBAAZxlD,IACTA,EAAUA,EAAQ5wC,KAAKoJ,KAAKm3D,UAE9Bn3D,KAAK+qF,kBAAkBY,EAAKnwD,KAAKmxD,IAAmBnlD,GACpDmkD,EAAKtjC,YAAYmkC,GAAoB,IAAMC,GAC7C,EAGA3f,EAAOkgB,YAAc,WACnB,OAAOhtF,KAAKm3D,QAAQpjC,aAAa,iBAAmB/zB,KAAKmB,OAAOqmC,OAClE,EACAslC,EAAO+d,eAAiB,WACtB,IAAIc,EAAO3iB,EAAoB,QAAEhpE,KAAK8pF,iBAClC8B,EAAWD,EAAKhtD,KAAK,SAASx5B,MAAMonF,IACvB,OAAbX,GAAqBA,EAASp1F,OAAS,GACzCm1F,EAAKtjC,YAAYujC,EAAS7pF,KAAK,IAEnC,EAGA+qF,EAAQvf,iBAAmB,SAA0BpsE,GACnD,OAAOnB,KAAKk1B,MAAK,WACf,IAAIj/B,EAAO+yE,EAAoB,QAAEhpE,MAAM/J,KAAKk2F,IACxC5pF,EAA4B,kBAAXpB,EAAsBA,EAAS,KACpD,IAAKlL,IAAQ,eAAe4P,KAAK1E,MAG5BlL,IACHA,EAAO,IAAI62F,EAAQ9sF,KAAMuC,GACzBymE,EAAoB,QAAEhpE,MAAM/J,KAAKk2F,GAAYl2F,IAEzB,kBAAXkL,GAAqB,CAC9B,GAA4B,qBAAjBlL,EAAKkL,GACd,MAAM,IAAIupC,UAAU,oBAAuBvpC,EAAS,KAEtDlL,EAAKkL,IACP,CACF,GACF,EACAgoE,EAAa2jB,EAAS,KAAM,CAAC,CAC3BjyF,IAAK,UACLV,IAEA,WACE,OAAO+xF,EACT,GACC,CACDrxF,IAAK,UACLV,IAAK,WACH,OAAOyyF,EACT,GACC,CACD/xF,IAAK,OACLV,IAAK,WACH,OAAO8xF,EACT,GACC,CACDpxF,IAAK,WACLV,IAAK,WACH,OAAOgyF,EACT,GACC,CACDtxF,IAAK,QACLV,IAAK,WACH,OAAOs7C,EACT,GACC,CACD56C,IAAK,YACLV,IAAK,WACH,OAAOiyF,EACT,GACC,CACDvxF,IAAK,cACLV,IAAK,WACH,OAAO0yF,EACT,KAEKC,CACT,CArG2B,CAqGzB/D,IAKF/f,EAAoB,QAAE7rE,GAAG8uF,IAAUa,GAAQvf,iBAC3CvE,EAAoB,QAAE7rE,GAAG8uF,IAAQ7iB,YAAc0jB,GAC/C9jB,EAAoB,QAAE7rE,GAAG8uF,IAAQv3B,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAG8uF,IAAUI,GAC5BS,GAAQvf,gBACjB,EAMA,IAAI0f,GAAS,YACTC,GAAY,QACZC,GAAa,eACbC,GAAc,IAAMD,GACpBE,GAAiB,YACjBC,GAAuBtkB,EAAoB,QAAE7rE,GAAG8vF,IAChDM,GAA2B,gBAC3BC,GAAsB,SACtBC,GAAiB,WAAaL,GAC9BM,GAAe,SAAWN,GAC1BO,GAAsB,OAASP,GAAcC,GAC7CO,GAAgB,SAChBC,GAAkB,WAClBC,GAAoB,sBACpBC,GAA4B,oBAC5BC,GAAqB,YACrBC,GAAqB,YACrBC,GAAsB,mBACtBC,GAAsB,YACtBC,GAA0B,iBAC1BC,GAA6B,mBAC7BC,GAAY,CACd9sE,OAAQ,GACRymB,OAAQ,OACR9uC,OAAQ,IAENo1F,GAAgB,CAClB/sE,OAAQ,SACRymB,OAAQ,SACR9uC,OAAQ,oBAMNq1F,GAAyB,WAC3B,SAASA,EAAUr3B,EAASh2D,GAC1B,IAAIi3D,EAAQp4D,KACZA,KAAK6sE,SAAW1V,EAChBn3D,KAAKyuF,eAAqC,SAApBt3B,EAAQE,QAAqB/7D,OAAS67D,EAC5Dn3D,KAAKuC,QAAUvC,KAAKqzE,WAAWlyE,GAC/BnB,KAAKq4E,UAAYr4E,KAAKuC,QAAQpJ,OAAS,IAAM60F,GAAqB,IAAOhuF,KAAKuC,QAAQpJ,OAAS,IAAM+0F,GAAsB,IAAQluF,KAAKuC,QAAQpJ,OAAS,IAAMi1F,GAC/JpuF,KAAK0uF,SAAW,GAChB1uF,KAAK2uF,SAAW,GAChB3uF,KAAK4uF,cAAgB,KACrB5uF,KAAK6uF,cAAgB,EACrB7lB,EAAoB,QAAEhpE,KAAKyuF,gBAAgB97C,GAAG+6C,IAAc,SAAU/0F,GACpE,OAAOy/D,EAAM02B,SAASn2F,EACxB,IACAqH,KAAK44D,UACL54D,KAAK8uF,UACP,CAEA,IAAIhiB,EAAS0hB,EAAU93F,UA0JvB,OAvJAo2E,EAAOlU,QAAU,WACf,IAAI6b,EAASz0E,KACT+uF,EAAa/uF,KAAKyuF,iBAAmBzuF,KAAKyuF,eAAenzF,OAASsyF,GAAgBC,GAClFmB,EAAuC,SAAxBhvF,KAAKuC,QAAQ0lC,OAAoB8mD,EAAa/uF,KAAKuC,QAAQ0lC,OAC1EgnD,EAAaD,IAAiBnB,GAAkB7tF,KAAKkvF,gBAAkB,EAC3ElvF,KAAK0uF,SAAW,GAChB1uF,KAAK2uF,SAAW,GAChB3uF,KAAK6uF,cAAgB7uF,KAAKmvF,mBACZ,GAAG3zF,MAAM5E,KAAKoB,SAASskC,iBAAiBt8B,KAAKq4E,YACnDp7E,KAAI,SAAUk6D,GACpB,IAAIh+D,EACAi2F,EAAiBllB,EAAKK,uBAAuBpT,GAIjD,GAHIi4B,IACFj2F,EAASnB,SAASgmC,cAAcoxD,IAE9Bj2F,EAAQ,CACV,IAAIk2F,EAAYl2F,EAAO6oD,wBACvB,GAAIqtC,EAAUtzC,OAASszC,EAAUnxC,OAE/B,MAAO,CAAC8qB,EAAoB,QAAE7vE,GAAQ61F,KAAgBtxD,IAAMuxD,EAAYG,EAE5E,CACA,OAAO,IACT,IAAG5pE,OAAO6iD,SAASh/D,MAAK,SAAU9M,EAAGC,GACnC,OAAOD,EAAE,GAAKC,EAAE,EAClB,IAAG8b,SAAQ,SAAUmN,GACnBgvD,EAAOia,SAAS53F,KAAK2uB,EAAK,IAC1BgvD,EAAOka,SAAS73F,KAAK2uB,EAAK,GAC5B,GACF,EACAqnD,EAAOM,QAAU,WACfpE,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAUsgB,IAChDnkB,EAAoB,QAAEhpE,KAAKyuF,gBAAgB17C,IAAIq6C,IAC/CptF,KAAK6sE,SAAW,KAChB7sE,KAAKyuF,eAAiB,KACtBzuF,KAAKuC,QAAU,KACfvC,KAAKq4E,UAAY,KACjBr4E,KAAK0uF,SAAW,KAChB1uF,KAAK2uF,SAAW,KAChB3uF,KAAK4uF,cAAgB,KACrB5uF,KAAK6uF,cAAgB,IACvB,EAGA/hB,EAAOuG,WAAa,SAAoBlyE,GAEtC,GAA6B,kBAD7BA,EAASooE,EAAS,CAAC,EAAG+kB,GAA6B,kBAAXntF,GAAuBA,EAASA,EAAS,CAAC,IAChEhI,QAAuB+wE,EAAKc,UAAU7pE,EAAOhI,QAAS,CACtE,IAAI4iC,EAAKitC,EAAoB,QAAE7nE,EAAOhI,QAAQwlC,KAAK,MAC9C5C,IACHA,EAAKmuC,EAAKI,OAAO2iB,IACjBjkB,EAAoB,QAAE7nE,EAAOhI,QAAQwlC,KAAK,KAAM5C,IAElD56B,EAAOhI,OAAS,IAAM4iC,CACxB,CAEA,OADAmuC,EAAKe,gBAAgBgiB,GAAQ9rF,EAAQotF,IAC9BptF,CACT,EACA2rE,EAAOoiB,cAAgB,WACrB,OAAOlvF,KAAKyuF,iBAAmBnzF,OAAS0E,KAAKyuF,eAAex7B,YAAcjzD,KAAKyuF,eAAe3rC,SAChG,EACAgqB,EAAOqiB,iBAAmB,WACxB,OAAOnvF,KAAKyuF,eAAe7M,cAAgB19E,KAAKI,IAAItM,SAASg4C,KAAK4xC,aAAc5pF,SAASy+B,gBAAgBmrD,aAC3G,EACA9U,EAAOwiB,iBAAmB,WACxB,OAAOtvF,KAAKyuF,iBAAmBnzF,OAASA,OAAOi0F,YAAcvvF,KAAKyuF,eAAezsC,wBAAwB9D,MAC3G,EACA4uB,EAAOgiB,SAAW,WAChB,IAAIhsC,EAAY9iD,KAAKkvF,gBAAkBlvF,KAAKuC,QAAQif,OAChDogE,EAAe5hF,KAAKmvF,mBACpBK,EAAYxvF,KAAKuC,QAAQif,OAASogE,EAAe5hF,KAAKsvF,mBAI1D,GAHItvF,KAAK6uF,gBAAkBjN,GACzB5hF,KAAK44D,UAEH9V,GAAa0sC,EAAjB,CACE,IAAIr2F,EAAS6G,KAAK2uF,SAAS3uF,KAAK2uF,SAASn4F,OAAS,GAC9CwJ,KAAK4uF,gBAAkBz1F,GACzB6G,KAAKyvF,UAAUt2F,EAGnB,KANA,CAOA,GAAI6G,KAAK4uF,eAAiB9rC,EAAY9iD,KAAK0uF,SAAS,IAAM1uF,KAAK0uF,SAAS,GAAK,EAG3E,OAFA1uF,KAAK4uF,cAAgB,UACrB5uF,KAAK0vF,SAGP,IAAK,IAAIp5F,EAAI0J,KAAK0uF,SAASl4F,OAAQF,KACZ0J,KAAK4uF,gBAAkB5uF,KAAK2uF,SAASr4F,IAAMwsD,GAAa9iD,KAAK0uF,SAASp4F,KAAuC,qBAAzB0J,KAAK0uF,SAASp4F,EAAI,IAAsBwsD,EAAY9iD,KAAK0uF,SAASp4F,EAAI,KAE7K0J,KAAKyvF,UAAUzvF,KAAK2uF,SAASr4F,GATjC,CAYF,EACAw2E,EAAO2iB,UAAY,SAAmBt2F,GACpC6G,KAAK4uF,cAAgBz1F,EACrB6G,KAAK0vF,SACL,IAAIC,EAAU3vF,KAAKq4E,UAAUpqE,MAAM,KAAKhR,KAAI,SAAUo3B,GACpD,OAAOA,EAAW,iBAAoBl7B,EAAS,MAASk7B,EAAW,UAAal7B,EAAS,IAC3F,IACIy2F,EAAQ5mB,EAAoB,QAAE,GAAGxtE,MAAM5E,KAAKoB,SAASskC,iBAAiBqzD,EAAQ5tF,KAAK,QACnF6tF,EAAMnnC,SAAS8kC,KACjBqC,EAAM7oD,QAAQonD,IAAqB3yD,KAAK6yD,IAA4BpmC,SAASulC,IAC7EoC,EAAM3nC,SAASulC,MAGfoC,EAAM3nC,SAASulC,IAGfoC,EAAM1oD,QAAQ6mD,IAA2BpnD,KAAKqnD,GAAqB,KAAOE,IAAqBjmC,SAASulC,IAExGoC,EAAM1oD,QAAQ6mD,IAA2BpnD,KAAKsnD,IAAoBxnD,SAASunD,IAAoB/lC,SAASulC,KAE1GxkB,EAAoB,QAAEhpE,KAAKyuF,gBAAgBj7C,QAAQi6C,GAAgB,CACjEr3C,cAAej9C,GAEnB,EACA2zE,EAAO4iB,OAAS,WACd,GAAGl0F,MAAM5E,KAAKoB,SAASskC,iBAAiBt8B,KAAKq4E,YAAY7yD,QAAO,SAAUoO,GACxE,OAAOA,EAAKs7C,UAAUx3C,SAAS81D,GACjC,IAAGl1E,SAAQ,SAAUsb,GACnB,OAAOA,EAAKs7C,UAAUhmC,OAAOskD,GAC/B,GACF,EAGAgB,EAAUjhB,iBAAmB,SAA0BpsE,GACrD,OAAOnB,KAAKk1B,MAAK,WACf,IAAIj/B,EAAO+yE,EAAoB,QAAEhpE,MAAM/J,KAAKk3F,IAM5C,GAJKl3F,IACHA,EAAO,IAAIu4F,EAAUxuF,KAFS,kBAAXmB,GAAuBA,GAG1C6nE,EAAoB,QAAEhpE,MAAM/J,KAAKk3F,GAAYl3F,IAEzB,kBAAXkL,EAAqB,CAC9B,GAA4B,qBAAjBlL,EAAKkL,GACd,MAAM,IAAIupC,UAAU,oBAAuBvpC,EAAS,KAEtDlL,EAAKkL,IACP,CACF,GACF,EACAgoE,EAAaqlB,EAAW,KAAM,CAAC,CAC7B3zF,IAAK,UACLV,IAAK,WACH,OAAO+yF,EACT,GACC,CACDryF,IAAK,UACLV,IAAK,WACH,OAAOm0F,EACT,KAEKE,CACT,CA7K6B,GAkL7BxlB,EAAoB,QAAE1tE,QAAQq3C,GAAGg7C,IAAqB,WAGpD,IAFA,IAAIkC,EAAa,GAAGr0F,MAAM5E,KAAKoB,SAASskC,iBAAiBwxD,KAEhDx3F,EADcu5F,EAAWr5F,OACHF,KAAM,CACnC,IAAIw5F,EAAO9mB,EAAoB,QAAE6mB,EAAWv5F,IAC5Ck4F,GAAUjhB,iBAAiB32E,KAAKk5F,EAAMA,EAAK75F,OAC7C,CACF,IAKA+yE,EAAoB,QAAE7rE,GAAG8vF,IAAUuB,GAAUjhB,iBAC7CvE,EAAoB,QAAE7rE,GAAG8vF,IAAQ7jB,YAAcolB,GAC/CxlB,EAAoB,QAAE7rE,GAAG8vF,IAAQv4B,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAG8vF,IAAUK,GAC5BkB,GAAUjhB,gBACnB,EAMA,IAAIwiB,GAAS,MACTC,GAAY,QACZC,GAAa,SACbC,GAAc,IAAMD,GACpBE,GAAe,YACfC,GAAuBpnB,EAAoB,QAAE7rE,GAAG4yF,IAChDM,GAA2B,gBAC3BC,GAAoB,SACpBC,GAAsB,WACtBC,GAAoB,OACpBC,GAAoB,OACpBC,GAAe,OAASR,GACxBS,GAAiB,SAAWT,GAC5BU,GAAe,OAASV,GACxBW,GAAgB,QAAUX,GAC1BY,GAAuB,QAAUZ,GAAcC,GAC/CY,GAAoB,YACpBC,GAA0B,oBAC1BC,GAAkB,UAClBC,GAAqB,iBACrBC,GAAuB,kEACvBC,GAA2B,mBAC3BC,GAAiC,2BAKjCC,GAAmB,WACrB,SAASA,EAAIn6B,GACXn3D,KAAK6sE,SAAW1V,CAClB,CAEA,IAAI2V,EAASwkB,EAAI56F,UAkIjB,OA/HAo2E,EAAO58B,KAAO,WACZ,IAAIkoB,EAAQp4D,KACZ,KAAIA,KAAK6sE,SAAS74C,YAAch0B,KAAK6sE,SAAS74C,WAAWX,WAAa8mC,KAAKC,cAAgB4O,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAAS6nC,KAAsBtnB,EAAoB,QAAEhpE,KAAK6sE,UAAUpkB,SAAS8nC,KAAwBvwF,KAAK6sE,SAASnS,aAAa,aAAhQ,CAGA,IAAIvhE,EACAo4F,EACAC,EAAcxoB,EAAoB,QAAEhpE,KAAK6sE,UAAU9lC,QAAQiqD,IAAyB,GACpF38D,EAAW61C,EAAKK,uBAAuBvqE,KAAK6sE,UAChD,GAAI2kB,EAAa,CACf,IAAIC,EAAwC,OAAzBD,EAAY/8D,UAA8C,OAAzB+8D,EAAY/8D,SAAoBy8D,GAAqBD,GAEzGM,GADAA,EAAWvoB,EAAoB,QAAEryC,UAAUqyC,EAAoB,QAAEwoB,GAAah2D,KAAKi2D,KAC/DF,EAAS/6F,OAAS,EACxC,CACA,IAAIwmF,EAAYhU,EAAoB,QAAEvzB,MAAMi7C,GAAc,CACxDt6C,cAAep2C,KAAK6sE,WAElB+P,EAAY5T,EAAoB,QAAEvzB,MAAMm7C,GAAc,CACxDx6C,cAAem7C,IAMjB,GAJIA,GACFvoB,EAAoB,QAAEuoB,GAAU/9C,QAAQwpC,GAE1ChU,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQopC,IACzCA,EAAU1mC,uBAAwB8mC,EAAU9mC,qBAAhD,CAGI7hB,IACFl7B,EAASnB,SAASgmC,cAAc3J,IAElCr0B,KAAKyvF,UAAUzvF,KAAK6sE,SAAU2kB,GAC9B,IAAIzsC,EAAW,WACb,IAAI2sC,EAAc1oB,EAAoB,QAAEvzB,MAAMk7C,GAAgB,CAC5Dv6C,cAAegiB,EAAMyU,WAEnBoV,EAAajZ,EAAoB,QAAEvzB,MAAMo7C,GAAe,CAC1Dz6C,cAAem7C,IAEjBvoB,EAAoB,QAAEuoB,GAAU/9C,QAAQk+C,GACxC1oB,EAAoB,QAAE5Q,EAAMyU,UAAUr5B,QAAQyuC,EAChD,EACI9oF,EACF6G,KAAKyvF,UAAUt2F,EAAQA,EAAO66B,WAAY+wB,GAE1CA,GAlBF,CAtBA,CA0CF,EACA+nB,EAAOM,QAAU,WACfpE,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAUojB,IAChDjwF,KAAK6sE,SAAW,IAClB,EAGAC,EAAO2iB,UAAY,SAAmBt4B,EAAS1a,EAAWzgD,GACxD,IAAIy4E,EAASz0E,KAET6rD,IADiBpP,GAAqC,OAAvBA,EAAUhoB,UAA4C,OAAvBgoB,EAAUhoB,SAAiFu0C,EAAoB,QAAEvsB,GAAWhW,SAASwqD,IAAtGjoB,EAAoB,QAAEvsB,GAAWjhB,KAAK01D,KAC3G,GACxBlY,EAAkBh9E,GAAY6vD,GAAUmd,EAAoB,QAAEnd,GAAQpD,SAAS+nC,IAC/EzrC,EAAW,WACb,OAAO0vB,EAAOkd,oBAAoBx6B,EAAStL,EAAQ7vD,EACrD,EACA,GAAI6vD,GAAUmtB,EAAiB,CAC7B,IAAItO,EAAqBR,EAAKO,iCAAiC5e,GAC/Dmd,EAAoB,QAAEnd,GAAQxD,YAAYooC,IAAmB59C,IAAIq3B,EAAKN,eAAgB7kB,GAAUslB,qBAAqBK,EACvH,MACE3lB,GAEJ,EACA+nB,EAAO6kB,oBAAsB,SAA6Bx6B,EAAStL,EAAQ7vD,GACzE,GAAI6vD,EAAQ,CACVmd,EAAoB,QAAEnd,GAAQxD,YAAYioC,IAC1C,IAAIsB,EAAgB5oB,EAAoB,QAAEnd,EAAO73B,YAAYwH,KAAK61D,IAAgC,GAC9FO,GACF5oB,EAAoB,QAAE4oB,GAAevpC,YAAYioC,IAEf,QAAhCzkC,EAAO93B,aAAa,SACtB83B,EAAOxzD,aAAa,iBAAiB,EAEzC,CACA2wE,EAAoB,QAAE7R,GAASlP,SAASqoC,IACH,QAAjCn5B,EAAQpjC,aAAa,SACvBojC,EAAQ9+D,aAAa,iBAAiB,GAExC6xE,EAAKY,OAAO3T,GACRA,EAAQ+X,UAAUx3C,SAAS84D,KAC7Br5B,EAAQ+X,UAAU58D,IAAIm+E,IAExB,IAAIrwD,EAAS+2B,EAAQnjC,WAIrB,GAHIoM,GAA8B,OAApBA,EAAO3L,WACnB2L,EAASA,EAAOpM,YAEdoM,GAAU4oC,EAAoB,QAAE5oC,GAAQqoB,SAAS4nC,IAA2B,CAC9E,IAAIwB,EAAkB7oB,EAAoB,QAAE7R,GAASpwB,QAAQgqD,IAAmB,GAChF,GAAIc,EAAiB,CACnB,IAAIC,EAAqB,GAAGt2F,MAAM5E,KAAKi7F,EAAgBv1D,iBAAiB80D,KACxEpoB,EAAoB,QAAE8oB,GAAoB7pC,SAASqoC,GACrD,CACAn5B,EAAQ9+D,aAAa,iBAAiB,EACxC,CACI2D,GACFA,GAEJ,EAGAs1F,EAAI/jB,iBAAmB,SAA0BpsE,GAC/C,OAAOnB,KAAKk1B,MAAK,WACf,IAAI68D,EAAQ/oB,EAAoB,QAAEhpE,MAC9B/J,EAAO87F,EAAM97F,KAAKg6F,IAKtB,GAJKh6F,IACHA,EAAO,IAAIq7F,EAAItxF,MACf+xF,EAAM97F,KAAKg6F,GAAYh6F,IAEH,kBAAXkL,EAAqB,CAC9B,GAA4B,qBAAjBlL,EAAKkL,GACd,MAAM,IAAIupC,UAAU,oBAAuBvpC,EAAS,KAEtDlL,EAAKkL,IACP,CACF,GACF,EACAgoE,EAAamoB,EAAK,KAAM,CAAC,CACvBz2F,IAAK,UACLV,IAAK,WACH,OAAO61F,EACT,KAEKsB,CACT,CAxIuB,GA6IvBtoB,EAAoB,QAAEhxE,UAAU26C,GAAGm+C,GAAsBK,IAAsB,SAAUx4F,GACvFA,EAAM46C,iBACN+9C,GAAI/jB,iBAAiB32E,KAAKoyE,EAAoB,QAAEhpE,MAAO,OACzD,IAKAgpE,EAAoB,QAAE7rE,GAAG4yF,IAAUuB,GAAI/jB,iBACvCvE,EAAoB,QAAE7rE,GAAG4yF,IAAQ3mB,YAAckoB,GAC/CtoB,EAAoB,QAAE7rE,GAAG4yF,IAAQr7B,WAAa,WAE5C,OADAsU,EAAoB,QAAE7rE,GAAG4yF,IAAUK,GAC5BkB,GAAI/jB,gBACb,EAMA,IAAI8c,GAAO,QACP2H,GAAU,QACVvI,GAAW,WACXM,GAAY,IAAMN,GAClBwI,GAAqBjpB,EAAoB,QAAE7rE,GAAGktF,IAC9C6H,GAAkB,OAClBC,GAAkB,OAClBC,GAAkB,OAClBC,GAAqB,UACrBC,GAAsB,gBAAkBvI,GACxCwI,GAAa,OAASxI,GACtByI,GAAe,SAAWzI,GAC1B0I,GAAa,OAAS1I,GACtB2I,GAAc,QAAU3I,GACxB4I,GAAwB,yBACxBvV,GAAU,CACZn5B,WAAW,EACX2uC,UAAU,EACV7rC,MAAO,KAELs2B,GAAc,CAChBp5B,UAAW,UACX2uC,SAAU,UACV7rC,MAAO,UAML8rC,GAAqB,WACvB,SAASA,EAAM17B,EAASh2D,GACtBnB,KAAK6sE,SAAW1V,EAChBn3D,KAAKuC,QAAUvC,KAAKqzE,WAAWlyE,GAC/BnB,KAAKipF,SAAW,KAChBjpF,KAAKqpF,eACP,CAEA,IAAIvc,EAAS+lB,EAAMn8F,UAyHnB,OAtHAo2E,EAAO58B,KAAO,WACZ,IAAIkoB,EAAQp4D,KACR48E,EAAY5T,EAAoB,QAAEvzB,MAAMg9C,IAE5C,GADAzpB,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQopC,IACzCA,EAAU1mC,qBAAd,CAGAl2C,KAAK8yF,gBACD9yF,KAAKuC,QAAQ0hD,WACfjkD,KAAK6sE,SAASqC,UAAU58D,IAAI4/E,IAE9B,IAAIntC,EAAW,WACbqT,EAAMyU,SAASqC,UAAUhmC,OAAOmpD,IAChCj6B,EAAMyU,SAASqC,UAAU58D,IAAI8/E,IAC7BppB,EAAoB,QAAE5Q,EAAMyU,UAAUr5B,QAAQk/C,IAC1Ct6B,EAAM71D,QAAQqwF,WAChBx6B,EAAM6wB,SAAWzvF,YAAW,WAC1B4+D,EAAMjoB,MACR,GAAGioB,EAAM71D,QAAQwkD,OAErB,EAIA,GAHA/mD,KAAK6sE,SAASqC,UAAUhmC,OAAOipD,IAC/BjoB,EAAKY,OAAO9qE,KAAK6sE,UACjB7sE,KAAK6sE,SAASqC,UAAU58D,IAAI+/E,IACxBryF,KAAKuC,QAAQ0hD,UAAW,CAC1B,IAAIymB,EAAqBR,EAAKO,iCAAiCzqE,KAAK6sE,UACpE7D,EAAoB,QAAEhpE,KAAK6sE,UAAUh6B,IAAIq3B,EAAKN,eAAgB7kB,GAAUslB,qBAAqBK,EAC/F,MACE3lB,GAtBF,CAwBF,EACA+nB,EAAO38B,KAAO,WACZ,GAAKnwC,KAAK6sE,SAASqC,UAAUx3C,SAAS06D,IAAtC,CAGA,IAAIpV,EAAYhU,EAAoB,QAAEvzB,MAAM88C,IAC5CvpB,EAAoB,QAAEhpE,KAAK6sE,UAAUr5B,QAAQwpC,GACzCA,EAAU9mC,sBAGdl2C,KAAK+yF,QANL,CAOF,EACAjmB,EAAOM,QAAU,WACfptE,KAAK8yF,gBACD9yF,KAAK6sE,SAASqC,UAAUx3C,SAAS06D,KACnCpyF,KAAK6sE,SAASqC,UAAUhmC,OAAOkpD,IAEjCppB,EAAoB,QAAEhpE,KAAK6sE,UAAU95B,IAAIu/C,IACzCtpB,EAAoB,QAAEj7B,WAAW/tC,KAAK6sE,SAAU4c,IAChDzpF,KAAK6sE,SAAW,KAChB7sE,KAAKuC,QAAU,IACjB,EAGAuqE,EAAOuG,WAAa,SAAoBlyE,GAGtC,OAFAA,EAASooE,EAAS,CAAC,EAAG6T,GAASpU,EAAoB,QAAEhpE,KAAK6sE,UAAU52E,OAA0B,kBAAXkL,GAAuBA,EAASA,EAAS,CAAC,GAC7H+oE,EAAKe,gBAAgBof,GAAMlpF,EAAQnB,KAAK40B,YAAYyoD,aAC7Cl8E,CACT,EACA2rE,EAAOuc,cAAgB,WACrB,IAAI5U,EAASz0E,KACbgpE,EAAoB,QAAEhpE,KAAK6sE,UAAUl6B,GAAG2/C,GAAqBK,IAAuB,WAClF,OAAOle,EAAOtkC,MAChB,GACF,EACA28B,EAAOimB,OAAS,WACd,IAAIne,EAAS50E,KACT+kD,EAAW,WACb6vB,EAAO/H,SAASqC,UAAU58D,IAAI6/E,IAC9BnpB,EAAoB,QAAE4L,EAAO/H,UAAUr5B,QAAQg/C,GACjD,EAEA,GADAxyF,KAAK6sE,SAASqC,UAAUhmC,OAAOkpD,IAC3BpyF,KAAKuC,QAAQ0hD,UAAW,CAC1B,IAAIymB,EAAqBR,EAAKO,iCAAiCzqE,KAAK6sE,UACpE7D,EAAoB,QAAEhpE,KAAK6sE,UAAUh6B,IAAIq3B,EAAKN,eAAgB7kB,GAAUslB,qBAAqBK,EAC/F,MACE3lB,GAEJ,EACA+nB,EAAOgmB,cAAgB,WACrBh6F,aAAakH,KAAKipF,UAClBjpF,KAAKipF,SAAW,IAClB,EAGA4J,EAAMtlB,iBAAmB,SAA0BpsE,GACjD,OAAOnB,KAAKk1B,MAAK,WACf,IAAIs4C,EAAWxE,EAAoB,QAAEhpE,MACjC/J,EAAOu3E,EAASv3E,KAAKwzF,IAMzB,GAJKxzF,IACHA,EAAO,IAAI48F,EAAM7yF,KAFa,kBAAXmB,GAAuBA,GAG1CqsE,EAASv3E,KAAKwzF,GAAUxzF,IAEJ,kBAAXkL,EAAqB,CAC9B,GAA4B,qBAAjBlL,EAAKkL,GACd,MAAM,IAAIupC,UAAU,oBAAuBvpC,EAAS,KAEtDlL,EAAKkL,GAAQnB,KACf,CACF,GACF,EACAmpE,EAAa0pB,EAAO,KAAM,CAAC,CACzBh4F,IAAK,UACLV,IAAK,WACH,OAAO63F,EACT,GACC,CACDn3F,IAAK,cACLV,IAAK,WACH,OAAOkjF,EACT,GACC,CACDxiF,IAAK,UACLV,IAAK,WACH,OAAOijF,EACT,KAEKyV,CACT,CAlIyB,GAuIzB7pB,EAAoB,QAAE7rE,GAAGktF,IAAQwI,GAAMtlB,iBACvCvE,EAAoB,QAAE7rE,GAAGktF,IAAMjhB,YAAcypB,GAC7C7pB,EAAoB,QAAE7rE,GAAGktF,IAAM31B,WAAa,WAE1C,OADAsU,EAAoB,QAAE7rE,GAAGktF,IAAQ4H,GAC1BY,GAAMtlB,gBACf,EACAn2E,EAAQw1E,MAAQA,EAChBx1E,EAAQ03E,OAASA,EACjB13E,EAAQw7E,SAAWA,GACnBx7E,EAAQ2gF,SAAWA,GACnB3gF,EAAQ+kF,SAAWA,GACnB/kF,EAAQmpF,MAAQA,GAChBnpF,EAAQ01F,QAAUA,GAClB11F,EAAQ47F,UAAYxE,GACpBp3F,EAAQk6F,IAAMA,GACdl6F,EAAQy7F,MAAQA,GAChBz7F,EAAQ2xF,QAAUA,GAClB3xF,EAAQ8yE,KAAOA,EACfzzE,OAAOwD,eAAe7C,EAAS,aAAc,CAC3CmD,OAAO,GAEX,CAzjHiEm4B,CAAQt7B,EAAS,EAAQ,GAAW,EAAQ,I,mBCN7G,qBAKA,YAEE,YACE,WACE4I,KAAKizF,MAAQ,CACXC,kBAAmB,yGACnBC,oBAAqB,CACnB9+D,SAAU,oEACV++D,QAAS,eAEXC,oBAAqB,iEACrBC,mBAAoB,8BACpBC,uBAAwB,ySACxBC,oBAAqB,sMACrBC,mBAAoB,4MACpBC,kBAAmB,yCACnBC,oBAAqB,wCACrBC,sBAAuB,4EAE1B,GAAEh9F,KAAKoJ,KACT,GAAEpJ,KAnBWoJ,MAoBd,IAAIizF,EApBUjzF,KAoBMizF,OACpB,YACE,WACE,IAAIz/D,EACJA,EAAQ,KACRy/D,EAAMY,aAAe,WACnB,IAAIC,EACJ,OAAOtgE,EAAkE,OAAzDsgE,EAAM97F,SAASgmC,cAAc,yBAAmC81D,EAAItsD,aAAU,CAChG,EACAyrD,EAAMc,SAAW,WACf,OAAgB,MAATvgE,EAAgBA,EAAQy/D,EAAMY,cACvC,CACD,GAAEj9F,KAAKoJ,MACR,WACE,IAAIi2B,EAASr8B,EACbA,EAAIq+D,QAAQvhE,UAAUsrB,SAAWi2C,QAAQvhE,UAAUgoC,iBAAmBu5B,QAAQvhE,UAAUs9F,oBAAsB/7B,QAAQvhE,UAAU8mC,mBAAqBy6B,QAAQvhE,UAAUu9F,kBAAoBh8B,QAAQvhE,UAAU6mC,sBAC7M01D,EAAMjxE,QAAU,SAAUm1C,EAAS9iC,GACjC,OAAwB,MAApBA,EAAS++D,QACJx5F,EAAEhD,KAAKugE,EAAS9iC,EAASA,YAAcz6B,EAAEhD,KAAKugE,EAAS9iC,EAAS++D,SAEhEx5F,EAAEhD,KAAKugE,EAAS9iC,EAE3B,EACA4B,EAAU,WACVg9D,EAAMnlD,QAAU,SAAUqpB,EAASt8D,GACjC,IAAIi5F,EACJ,OAAmC,OAA3BA,EAAM38B,EAAQlhC,IAAoB69D,EAAIj5F,QAAO,CACvD,EACAo4F,EAAMiB,QAAU,SAAU/8B,EAASt8D,EAAKN,GAItC,OAHwB,MAApB48D,EAAQlhC,KACVkhC,EAAQlhC,GAAW,CAAC,GAEfkhC,EAAQlhC,GAASp7B,GAAON,CACjC,EACA04F,EAAMx+B,EAAI,SAAUpgC,GAClB,OAAOl4B,MAAMzF,UAAU8E,MAAM5E,KAAKoB,SAASskC,iBAAiBjI,GAC9D,CACD,EAAEz9B,KAAKoJ,MACR,WACE,IAAIy0D,EAAG0/B,EAAWC,EAClB3/B,EAAIw+B,EAAMx+B,EACV2/B,EAAYnB,EAAMmB,UAAY,WAC5B,IAAIC,EAEJ,OADAA,EAAOr8F,SAASgmC,cAAc,2BACfq2D,EAAK7sD,OACtB,EACA2sD,EAAYlB,EAAMkB,UAAY,WAC5B,IAAIE,EAEJ,OADAA,EAAOr8F,SAASgmC,cAAc,2BACfq2D,EAAK7sD,OACtB,EACAyrD,EAAMqB,eAAiB,SAAUjkC,GAC/B,IAAIxrD,EAEJ,GAAa,OADbA,EAAQuvF,KAEN,OAAO/jC,EAAItC,iBAAiB,eAAgBlpD,EAEhD,EACAouF,EAAMsB,kBAAoB,WACxB,IAAItqC,EAAOplD,EAGX,GAFAA,EAAQuvF,IACRnqC,EAAQkqC,IACK,MAATtvF,GAA0B,MAATolD,EACnB,OAAOwK,EAAE,oBAAsBxK,EAAQ,MAAM3xC,SAAQ,SAAUpc,GAC7D,OAAOA,EAAM3B,MAAQsK,CACvB,GAEJ,CACD,EAAEjO,KAAKoJ,MACR,WACE,IAAIw0F,EAAazrD,EAAM/mB,EAASuxB,EAChCvxB,EAAUixE,EAAMjxE,QAEW,oBAD3BwyE,EAAcl5F,OAAOk5F,gBAEnBA,EAAc,SAAU77F,EAAOy5D,GAC7B,IAAId,EAGJ,OAFAA,EAAMt5D,SAASy8F,YAAY,gBACvBC,gBAAgB/7F,EAAOy5D,EAAO5b,QAAS4b,EAAO3b,WAAY2b,EAAOxb,QAC9D0a,CACT,GACY56D,UAAY4E,OAAOm6C,MAAM/+C,UACrC68C,EAAiBihD,EAAY99F,UAAU68C,eACvCihD,EAAY99F,UAAU68C,eAAiB,WACrC,IAAIx4B,EASJ,OARAA,EAASw4B,EAAe38C,KAAKoJ,MACzBA,KAAKy2C,aAAez2C,KAAKm2C,kBAC3B1/C,OAAOwD,eAAe+F,KAAM,mBAAoB,CAC9C7F,IAAK,WACH,OAAO,CACT,IAGG4gB,CACT,GAEFguB,EAAOkqD,EAAMlqD,KAAO,SAAUrsC,EAAKrD,EAAMpD,GACvC,IAAI0C,EAOJ,OANAA,EAAQ,IAAI67F,EAAYn7F,EAAM,CAC5Bm9C,SAAS,EACTC,YAAY,EACZG,OAAQ3gD,IAEVyG,EAAIi4F,cAAch8F,IACVA,EAAMw9C,gBAChB,EACA88C,EAAM2B,eAAiB,SAAUr9F,GAI/B,OAHAwxC,EAAKxxC,EAAE4B,OAAQ,yBACf5B,EAAEg8C,iBACFh8C,EAAE87C,kBACK97C,EAAE+7C,0BACX,EACA2/C,EAAMt/B,SAAW,SAAUwD,EAAS9iC,EAAUwgE,EAAWtqD,GACvD,OAAO4sB,EAAQx5B,iBAAiBk3D,GAAW,SAAUt9F,GACnD,IAAI4B,EAEJ,IADAA,EAAS5B,EAAE4B,OACAA,aAAkB8+D,UAAYj2C,EAAQ7oB,EAAQk7B,IACvDl7B,EAASA,EAAO66B,WAElB,GAAI76B,aAAkB8+D,UAAuC,IAA5B1tB,EAAQ3zC,KAAKuC,EAAQ5B,GAEpD,OADAA,EAAEg8C,iBACKh8C,EAAE87C,iBAEb,GACF,CACD,EAAEz8C,KAAKoJ,MACR,WACE,IAAI80F,EAAeR,EAAgBS,EAAWhB,EAAgBiB,EAAgBC,EAC9ElB,EAAWd,EAAMc,SAAUO,EAAiBrB,EAAMqB,eAAuBrB,EAAMlqD,KAC/E+rD,EAAgB,CACd,IAAK,MACLhhE,KAAM,aACNgmB,KAAM,YACN9Z,IAAK,4BACLssB,KAAM,oCACNv0D,OAAQ,6FAEVk7F,EAAMpmC,KAAO,SAAUj3B,GACrB,IAAIy6B,EAgBJ,OAfAz6B,EAAUo/D,EAAep/D,GACzBy6B,EAAM0kC,EAAUn/D,GAAS,WACvB,IAAIk+D,EAAK7kC,EAWT,OAVAA,EAAWgmC,EAAwC,OAAvBnB,EAAMzjC,EAAIpB,UAAoB6kC,EAAMzjC,EAAIa,aAAcb,EAAIxC,kBAAkB,iBACnE,IAAjC3pD,KAAKwF,MAAM2mD,EAAInC,OAAS,KACK,oBAApBt4B,EAAQg5B,SACjBh5B,EAAQg5B,QAAQK,EAAUoB,EAAIjC,WAAYiC,GAGf,oBAAlBz6B,EAAQn9B,OACjBm9B,EAAQn9B,MAAMw2D,EAAUoB,EAAIjC,WAAYiC,GAGT,oBAArBz6B,EAAQmvB,SAA0BnvB,EAAQmvB,SAASsL,EAAKA,EAAIjC,iBAAc,CAC1F,MAC0B,MAAtBx4B,EAAQ+4B,aAAuB/4B,EAAQ+4B,WAAW0B,EAAKz6B,MAGvDy6B,EAAIlkB,aAAemkB,eAAe4kC,OAC7B7kC,EAAIxB,KAAKj5B,EAAQ3/B,WAD1B,EAGF,EACA++F,EAAiB,SAAUp/D,GAiBzB,OAhBAA,EAAQo2B,IAAMp2B,EAAQo2B,KAAO/qB,SAASM,KACtC3L,EAAQ38B,KAAO28B,EAAQ38B,KAAKsN,cACP,QAAjBqvB,EAAQ38B,MAAkB28B,EAAQ3/B,OAChC2/B,EAAQo2B,IAAIl/C,QAAQ,KAAO,EAC7B8oB,EAAQo2B,KAAO,IAAMp2B,EAAQ3/B,KAE7B2/B,EAAQo2B,KAAO,IAAMp2B,EAAQ3/B,MAGM,MAAnC6+F,EAAcl/D,EAAQs1B,YACxBt1B,EAAQs1B,SAAW,KAErBt1B,EAAQu/D,OAASL,EAAcl/D,EAAQs1B,UACd,MAArBt1B,EAAQs1B,WACVt1B,EAAQu/D,QAAU,iBAEbv/D,CACT,EACAm/D,EAAY,SAAUn/D,EAASiD,GAC7B,IAAIw3B,EAiBJ,OAhBAA,EAAM,IAAIC,gBACNK,KAAK/6B,EAAQ38B,KAAM28B,EAAQo2B,KAAK,GACpCqE,EAAItC,iBAAiB,SAAUn4B,EAAQu/D,QACX,kBAAjBv/D,EAAQ3/B,MACjBo6D,EAAItC,iBAAiB,eAAgB,oDAElCn4B,EAAQ04B,cACX+B,EAAItC,iBAAiB,mBAAoB,kBACzCumC,EAAejkC,IAEjBA,EAAI+kC,kBAAoBx/D,EAAQw/D,gBAChC/kC,EAAIW,mBAAqB,WACvB,GAAIX,EAAIlkB,aAAemkB,eAAe+kC,KACpC,OAAOx8D,EAAKw3B,EAEhB,EACOA,CACT,EACA4kC,EAAkB,SAAUhmC,EAAUh2D,GACpC,IAAIq8F,EAAQv9F,EACZ,GAAwB,kBAAbk3D,GAAyC,kBAATh2D,EACzC,GAAIA,EAAKkM,MAAM,YACb,IACE8pD,EAAWrhB,KAAKC,MAAMohB,EACxB,CAAE,MAAOx2D,GAAQ,MACZ,GAAIQ,EAAKkM,MAAM,4BACpBpN,EAASC,SAASC,cAAc,WACzBI,aAAa,QAAS07F,KAC7Bh8F,EAAO+7B,KAAOm7B,EACdj3D,SAASyB,KAAKC,YAAY3B,GAAQi8B,WAAWC,YAAYl8B,QACpD,GAAIkB,EAAKkM,MAAM,sBAAuB,CAC3CmwF,EAAS,IAAItsC,UACb/vD,EAAOA,EAAKmM,QAAQ,MAAO,IAC3B,IACE6pD,EAAWqmC,EAAOrsC,gBAAgBgG,EAAUh2D,EAC9C,CAAE,MAAOR,GAAQ,CACnB,CAEF,OAAOw2D,CACT,EACAgkC,EAAM1xD,KAAO,SAAU41B,GACrB,OAAOA,EAAQ51B,IACjB,EACA0xD,EAAMsC,cAAgB,SAAUvpC,GAC9B,IAAOlB,EAAcqC,GACrBrC,EAAe9yD,SAASC,cAAc,MACzBspC,KAAON,SAASM,KAC7B4rB,EAAYn1D,SAASC,cAAc,KACnC,IAEE,OADAk1D,EAAU5rB,KAAOyqB,MACNmB,EAAUlB,UAAmC,MAAvBkB,EAAUlB,YAAsBkB,EAAUoB,MAAQzD,EAAamB,SAAW,KAAOnB,EAAayD,OAASpB,EAAUlB,SAAW,KAAOkB,EAAUoB,KAChL,CAAE,MAAO91D,GAEP,OADIA,GACG,CACT,CACF,CACD,EAAE7B,KAAKoJ,MACR,WACE,IAAIgiB,EAASwB,EACbxB,EAAUixE,EAAMjxE,QAChBwB,EAAU,SAAUjsB,GAClB,OAAO4E,MAAMzF,UAAU8E,MAAM5E,KAAKW,EACpC,EACA07F,EAAMuC,iBAAmB,SAAUr+B,EAASs+B,GAC1C,IAAIC,EAAQtjC,EAgCZ,OA/BAsjC,EAAS,CAACv+B,GACNn1C,EAAQm1C,EAAS,UACnBu+B,EAASlyE,EAAQ2zC,EAAQ14B,WAE3B2zB,EAAS,GACTsjC,EAAOp9E,SAAQ,SAAUpc,GACvB,GAAKA,EAAM7C,OAAQ6C,EAAMm/B,WAGrBrZ,EAAQ9lB,EAAO,wBAGnB,OAAI8lB,EAAQ9lB,EAAO,UACVsnB,EAAQtnB,EAAM05B,SAAStd,SAAQ,SAAUw4B,GAC9C,GAAIA,EAAOnP,SACT,OAAOywB,EAAOt7D,KAAK,CACjBuC,KAAM6C,EAAM7C,KACZkB,MAAOu2C,EAAOv2C,OAGpB,IACS2B,EAAMwlC,UAAoE,IAAzD,CAAC,QAAS,WAAY,UAAU50B,QAAQ5Q,EAAMjD,MACjEm5D,EAAOt7D,KAAK,CACjBuC,KAAM6C,EAAM7C,KACZkB,MAAO2B,EAAM3B,aAHV,CAMT,IACIk7F,GACFrjC,EAAOt7D,KAAK2+F,GAEPrjC,EAAOn1D,KAAI,SAAUgtD,GAC1B,OAAkB,MAAdA,EAAM5wD,KACD8wD,mBAAmBF,EAAM5wD,MAAQ,IAAM8wD,mBAAmBF,EAAM1vD,OAEhE0vD,CAEX,IAAGloD,KAAK,IACV,EACAkxF,EAAM0C,aAAe,SAAUC,EAAMvhE,GACnC,OAAIrS,EAAQ4zE,EAAM,QACTpyE,EAAQoyE,EAAKn3D,UAAUjZ,QAAO,SAAUsX,GAC7C,OAAO9a,EAAQ8a,EAAIzI,EACrB,IAEO7Q,EAAQoyE,EAAKt5D,iBAAiBjI,GAEzC,CACD,EAAEz9B,KAAKoJ,MACR,WACE,IAAI61F,EAAa9sD,EAAM6rD,EACvB7rD,EAAOkqD,EAAMlqD,KAAM6rD,EAAiB3B,EAAM2B,eAC1C3B,EAAM6C,cAAgB,SAAUv+F,GAC9B,IAAKs+F,EAAY71F,MACf,OAAO40F,EAAer9F,EAE1B,EACA07F,EAAM8C,QAAU,SAAU38F,EAAS+9D,GACjC,OAAO4+B,QAAQ38F,EACjB,EACAy8F,EAAc,SAAU1+B,GACtB,IAAI6+B,EAAQh6F,EAAU5C,EAEtB,KADAA,EAAU+9D,EAAQpjC,aAAa,iBAE7B,OAAO,EAGT,GADAiiE,GAAS,EACLjtD,EAAKouB,EAAS,WAAY,CAC5B,IACE6+B,EAAS/C,EAAM8C,QAAQ38F,EAAS+9D,EAClC,CAAE,MAAO1+D,GAAQ,CACjBuD,EAAW+sC,EAAKouB,EAAS,mBAAoB,CAAC6+B,GAChD,CACA,OAAOA,GAAUh6F,CACnB,CACD,EAAEpF,KAAKoJ,MACR,WACE,IAAIi2F,EAAoBC,EAAqBC,EAAoBC,EAAmBC,EAAoBC,EAAmBX,EAAc7nD,EAASyoD,EAAev0E,EAASkyE,EAASU,EACnL5yE,EAAUixE,EAAMjxE,QAAS8rB,EAAUmlD,EAAMnlD,QAASomD,EAAUjB,EAAMiB,QAASU,EAAiB3B,EAAM2B,eAAgBe,EAAe1C,EAAM0C,aACvI1C,EAAMuD,sBAAwB,SAAUj/F,GAGtC,GADUyI,UACEq7B,SACV,OAAOu5D,EAAer9F,EAE1B,EACA07F,EAAMwD,cAAgB,SAAUl/F,GAC9B,IAAI4/D,EACJ,GAAI5/D,aAAak+C,MAAO,CACtB,GAAI8gD,EAAch/F,GAChB,OAEF4/D,EAAU5/D,EAAE4B,MACd,MACEg+D,EAAU5/D,EAEZ,OAAIyqB,EAAQm1C,EAAS87B,EAAMU,qBAClB2C,EAAkBn/B,GAChBn1C,EAAQm1C,EAAS87B,EAAMW,wBAA0B5xE,EAAQm1C,EAAS87B,EAAMQ,oBAC1E2C,EAAkBj/B,GAChBn1C,EAAQm1C,EAAS87B,EAAMK,oBACzB+C,EAAmBl/B,QADrB,CAGT,EACA87B,EAAMyD,eAAiB,SAAUn/F,GAC/B,IAAI4/D,EAEJ,OADAA,EAAU5/D,aAAak+C,MAAQl+C,EAAE4B,OAAS5B,EACtCyqB,EAAQm1C,EAAS87B,EAAMU,qBAClBwC,EAAmBh/B,GACjBn1C,EAAQm1C,EAAS87B,EAAMW,wBAA0B5xE,EAAQm1C,EAAS87B,EAAMO,qBAC1EyC,EAAmB9+B,GACjBn1C,EAAQm1C,EAAS87B,EAAMK,oBACzB4C,EAAoB/+B,QADtB,CAGT,EACAg/B,EAAqB,SAAUh/B,GAC7B,IAAIw/B,EACJ,IAAI7oD,EAAQqpB,EAAS,gBASrB,OALmB,OADnBw/B,EAAcx/B,EAAQpjC,aAAa,wBAEjCmgE,EAAQ/8B,EAAS,kBAAmBA,EAAQ94B,WAC5C84B,EAAQ94B,UAAYs4D,GAEtBx/B,EAAQx5B,iBAAiB,QAASi3D,GAC3BV,EAAQ/8B,EAAS,gBAAgB,EAC1C,EACAm/B,EAAoB,SAAUn/B,GAC5B,IAAIy/B,EAOJ,OALoB,OADpBA,EAAe9oD,EAAQqpB,EAAS,sBAE9BA,EAAQ94B,UAAYu4D,EACpB1C,EAAQ/8B,EAAS,kBAAmB,OAEtCA,EAAQprB,oBAAoB,QAAS6oD,GAC9BV,EAAQ/8B,EAAS,eAAgB,KAC1C,EACA++B,EAAsB,SAAUN,GAC9B,OAAOD,EAAaC,EAAM3C,EAAMO,qBAAqBl7E,QAAQ29E,EAC/D,EACAA,EAAqB,SAAU9+B,GAC7B,IAAIw/B,EACJ,IAAI7oD,EAAQqpB,EAAS,gBAcrB,OAVmB,OADnBw/B,EAAcx/B,EAAQpjC,aAAa,wBAE7B/R,EAAQm1C,EAAS,WACnB+8B,EAAQ/8B,EAAS,kBAAmBA,EAAQ94B,WAC5C84B,EAAQ94B,UAAYs4D,IAEpBzC,EAAQ/8B,EAAS,kBAAmBA,EAAQ58D,OAC5C48D,EAAQ58D,MAAQo8F,IAGpBx/B,EAAQ97B,UAAW,EACZ64D,EAAQ/8B,EAAS,gBAAgB,EAC1C,EACAk/B,EAAqB,SAAUT,GAC7B,OAAOD,EAAaC,EAAM3C,EAAMQ,oBAAoBn7E,QAAQ89E,EAC9D,EACAA,EAAoB,SAAUj/B,GAC5B,IAAIy/B,EAWJ,OAToB,OADpBA,EAAe9oD,EAAQqpB,EAAS,sBAE1Bn1C,EAAQm1C,EAAS,UACnBA,EAAQ94B,UAAYu4D,EAEpBz/B,EAAQ58D,MAAQq8F,EAElB1C,EAAQ/8B,EAAS,kBAAmB,OAEtCA,EAAQ97B,UAAW,EACZ64D,EAAQ/8B,EAAS,eAAgB,KAC1C,EACAo/B,EAAgB,SAAU59F,GACxB,IAAIm7F,EAAKzjC,EAET,OAA2E,OAA5D,OADfA,EAA8B,OAAvByjC,EAAMn7F,EAAMi+C,QAAkBk9C,EAAI,QAAK,GACxBzjC,EAAIxC,kBAAkB,uBAAoB,EAClE,CACD,EAAEj3D,KAAKoJ,MACR,WACE,IAAI40F,EACJA,EAAiB3B,EAAM2B,eACvB3B,EAAM4D,aAAe,SAAUt/F,GAC7B,IAAI48F,EAAWC,EAAWwB,EAAMkB,EAAav1D,EAAMw1D,EAAM9uD,EAGzD,GADAA,GADA8uD,EAAO/2F,MACO+zB,aAAa,eAoB3B,OAhBAwN,EAAO0xD,EAAM1xD,KAAKw1D,GAClB3C,EAAYnB,EAAMmB,YAClBD,EAAYlB,EAAMkB,YAClByB,EAAO59F,SAASC,cAAc,QAC9B6+F,EAAc,gCAAkC7uD,EAAS,qBACxC,MAAbksD,GAAkC,MAAbC,GAAsBnB,EAAMsC,cAAch0D,KACjEu1D,GAAe,gBAAkB3C,EAAY,YAAcC,EAAY,sBAEzE0C,GAAe,0BACflB,EAAK3tD,OAAS,OACd2tD,EAAK/9B,OAASt2B,EACdq0D,EAAKz8F,OAAS49F,EAAK59F,OACnBy8F,EAAKv3D,UAAYy4D,EACjBlB,EAAK3mD,MAAMC,QAAU,OACrBl3C,SAASg4C,KAAKt2C,YAAYk8F,GAC1BA,EAAK53D,cAAc,mBAAmB8X,QAC/B8+C,EAAer9F,EACxB,CACD,EAAEX,KAAKoJ,MACR,WACE,IAAI6sD,EACF9jB,EACA+E,EACAynD,EACAyB,EACAh1E,EACAwzE,EACAtB,EACAU,EACAp5F,EAAQ,GAAGA,MACbwmB,EAAUixE,EAAMjxE,QAAS8rB,EAAUmlD,EAAMnlD,QAASomD,EAAUjB,EAAMiB,QAASnrD,EAAOkqD,EAAMlqD,KAAM6rD,EAAiB3B,EAAM2B,eAAgB/nC,EAAOomC,EAAMpmC,KAAM0oC,EAAgBtC,EAAMsC,cAAeC,EAAmBvC,EAAMuC,iBACtNwB,EAAW,SAAU7/B,GACnB,IAAI58D,EAEJ,OAAgB,OADhBA,EAAQ48D,EAAQpjC,aAAa,iBACK,UAAVx5B,CAC1B,EACA04F,EAAMgE,aAAe,SAAU1/F,GAC7B,IAAIwqC,EAAQ9rC,EAAMi1D,EAAUiM,EAASlvB,EAAQ+jB,EAAKopC,EAElD,OAAK4B,EADL7/B,EAAUn3D,QAIL+oC,EAAKouB,EAAS,gBAInBi+B,EAAkBj+B,EAAQpjC,aAAa,yBACvCm3B,EAAWiM,EAAQpjC,aAAa,cAAgB,SAC5C/R,EAAQm1C,EAAS87B,EAAMK,qBACzBvxD,EAAS+L,EAAQqpB,EAAS,qBAC1BlvB,EAAS6F,EAAQqpB,EAAS,iCAAmCA,EAAQlvB,OACrE+jB,EAAMle,EAAQqpB,EAAS,iCAAmCA,EAAQpjC,aAAa,WAAakN,SAASM,KACxE,QAAzB0G,EAAO1hC,gBACTylD,EAAMA,EAAI5mD,QAAQ,QAAS,KAEL,wBAApB+xD,EAAQ+/B,SACVjhG,EAAO,IAAIkhG,SAAShgC,GACN,MAAVp1B,GACF9rC,EAAKukD,OAAOzY,EAAO1oC,KAAM0oC,EAAOxnC,QAGlCtE,EAAOu/F,EAAiBr+B,EAASp1B,GAEnCmyD,EAAQ/8B,EAAS,oBAAqB,MACtC+8B,EAAQ/8B,EAAS,+BAAgC,MACjD+8B,EAAQ/8B,EAAS,+BAAgC,OACxCn1C,EAAQm1C,EAAS87B,EAAME,sBAAwBnxE,EAAQm1C,EAAS87B,EAAMI,sBAC/EprD,EAASkvB,EAAQpjC,aAAa,eAC9Bi4B,EAAMmL,EAAQpjC,aAAa,YAC3B99B,EAAOu/F,EAAiBr+B,EAASA,EAAQpjC,aAAa,kBAEtDkU,EAASkvB,EAAQpjC,aAAa,eAC9Bi4B,EAAMinC,EAAM1xD,KAAK41B,GACjBlhE,EAAOkhE,EAAQpjC,aAAa,gBAE9B84B,EAAK,CACH5zD,KAAMgvC,GAAU,MAChB+jB,IAAKA,EACL/1D,KAAMA,EACNi1D,SAAUA,EACVyD,WAAY,SAAU0B,EAAKz6B,GACzB,OAAImT,EAAKouB,EAAS,kBAAmB,CAAC9G,EAAKz6B,IAClCmT,EAAKouB,EAAS,YAAa,CAAC9G,KAEnCtnB,EAAKouB,EAAS,iBACP,EAEX,EACAvI,QAAS,WACP,IAAI/sD,EAEJ,OADAA,EAAO,GAAK/F,UAAUtF,OAASgF,EAAM5E,KAAKkF,UAAW,GAAK,GACnDitC,EAAKouB,EAAS,eAAgBt1D,EACvC,EACApJ,MAAO,WACL,IAAIoJ,EAEJ,OADAA,EAAO,GAAK/F,UAAUtF,OAASgF,EAAM5E,KAAKkF,UAAW,GAAK,GACnDitC,EAAKouB,EAAS,aAAct1D,EACrC,EACAkjD,SAAU,WACR,IAAIljD,EAEJ,OADAA,EAAO,GAAK/F,UAAUtF,OAASgF,EAAM5E,KAAKkF,UAAW,GAAK,GACnDitC,EAAKouB,EAAS,gBAAiBt1D,EACxC,EACAysD,YAAainC,EAAcvpC,GAC3BopC,gBAAoC,MAAnBA,GAA+C,UAApBA,IAEvCR,EAAer9F,KA/DpBwxC,EAAKouB,EAAS,iBACP,GA+DX,EACA87B,EAAMmE,sBAAwB,SAAU7/F,GACtC,IAAIwqC,EAAQ6zD,EAGZ,GADAA,GADA7zD,EAAS/hC,MACK41F,KAYd,OARI7zD,EAAO1oC,MACT66F,EAAQ0B,EAAM,oBAAqB,CACjCv8F,KAAM0oC,EAAO1oC,KACbkB,MAAOwnC,EAAOxnC,QAGlB25F,EAAQ0B,EAAM,4BAA6B7zD,EAAOs1D,gBAClDnD,EAAQ0B,EAAM,+BAAgC7zD,EAAOhO,aAAa,eAC3DmgE,EAAQ0B,EAAM,+BAAgC7zD,EAAOhO,aAAa,cAC3E,EACAk/D,EAAMqE,0BAA4B,SAAU//F,GAC1C,IAAItB,EAAMshG,EAAyCtvD,EAOnD,GANOjoC,KACPioC,GADOjoC,KACQ+zB,aAAa,gBAAkB,OAAOxtB,cACrDtQ,EAFO+J,KAEK+zB,aAAa,eAEzBwjE,GADYhgG,EAAEu/C,SAAWv/C,EAAEo/C,UACsB,QAAX1O,IAAqBhyC,EACxB,MAAZsB,EAAEwqC,QAA+B,IAAbxqC,EAAEwqC,QACjBw1D,EAC1B,OAAOhgG,EAAE+7C,0BAEb,CACD,EAAE18C,KAAKoJ,MACR,WACE,IAAIy0D,EAAG6/B,EAAgB3gC,EAAU+iC,EAAgBD,EAAe1tD,EAAMquD,EAAuBtpD,EAASgoD,EAAeU,EAAuBK,EAAcI,EAAcpD,EAAcyD,EAA2B/C,EAEjN,GADAxrD,EAAOkqD,EAAMlqD,KAAM4qB,EAAWs/B,EAAMt/B,SAAU7lB,EAAUmlD,EAAMnlD,QAAS2mB,EAAIw+B,EAAMx+B,EAAG8/B,EAAoBtB,EAAMsB,kBAAmBD,EAAiBrB,EAAMqB,eAAgBT,EAAeZ,EAAMY,aAAc4C,EAAgBxD,EAAMwD,cAAeC,EAAiBzD,EAAMyD,eAAgBF,EAAwBvD,EAAMuD,sBAAuBV,EAAgB7C,EAAM6C,cAAewB,EAA4BrE,EAAMqE,0BAA2BL,EAAehE,EAAMgE,aAAcG,EAAwBnE,EAAMmE,sBAAuBP,EAAe5D,EAAM4D,aACrgB,qBAAXziE,GAAqC,OAAXA,GAAkC,MAAfA,EAAOy4B,KAAc,CAC3E,GAAIz4B,EAAOojE,MACT,MAAM,IAAI9+F,MAAM,kEAElB07B,EAAOojE,MAAQvE,EACf7+D,EAAOu4B,eAAc,SAAU/2B,EAASgvB,EAAiByL,GACvD,IAAKz6B,EAAQ04B,YACX,OAAOgmC,EAAejkC,EAE1B,GACF,CACA4iC,EAAM9yD,MAAQ,WACZ,GAAI7kC,OAAOm8F,cACT,MAAM,IAAI/+F,MAAM,sCAgDlB,OA9CA4C,OAAOqiC,iBAAiB,YAAY,WAMlC,OALA82B,EAAEw+B,EAAMQ,oBAAoBn7E,SAAQ,SAAUwkB,GAC5C,GAAIgR,EAAQhR,EAAI,gBACd,OAAO25D,EAAc35D,EAEzB,IACO23B,EAAEw+B,EAAMU,qBAAqBr7E,SAAQ,SAAUwkB,GACpD,GAAIgR,EAAQhR,EAAI,gBACd,OAAO25D,EAAc35D,EAEzB,GACF,IACA62B,EAAS37D,SAAUi7F,EAAMU,oBAAqB,gBAAiB8C,GAC/D9iC,EAAS37D,SAAUi7F,EAAMU,oBAAqB,eAAgB8C,GAC9D9iC,EAAS37D,SAAUi7F,EAAMW,sBAAuB,gBAAiB6C,GACjE9iC,EAAS37D,SAAUi7F,EAAMW,sBAAuB,eAAgB6C,GAChE9iC,EAAS37D,SAAUi7F,EAAMC,kBAAmB,QAASoE,GACrD3jC,EAAS37D,SAAUi7F,EAAMC,kBAAmB,QAASsD,GACrD7iC,EAAS37D,SAAUi7F,EAAMC,kBAAmB,QAAS4C,GACrDniC,EAAS37D,SAAUi7F,EAAMC,kBAAmB,QAASwD,GACrD/iC,EAAS37D,SAAUi7F,EAAMC,kBAAmB,QAAS+D,GACrDtjC,EAAS37D,SAAUi7F,EAAMC,kBAAmB,QAAS2D,GACrDljC,EAAS37D,SAAUi7F,EAAME,oBAAqB,QAASmE,GACvD3jC,EAAS37D,SAAUi7F,EAAME,oBAAqB,QAASqD,GACvD7iC,EAAS37D,SAAUi7F,EAAME,oBAAqB,QAAS2C,GACvDniC,EAAS37D,SAAUi7F,EAAME,oBAAqB,QAASuD,GACvD/iC,EAAS37D,SAAUi7F,EAAME,oBAAqB,QAAS8D,GACvDtjC,EAAS37D,SAAUi7F,EAAMI,oBAAqB,SAAUmD,GACxD7iC,EAAS37D,SAAUi7F,EAAMI,oBAAqB,SAAUyC,GACxDniC,EAAS37D,SAAUi7F,EAAMI,oBAAqB,SAAU4D,GACxDtjC,EAAS37D,SAAUi7F,EAAMK,mBAAoB,SAAUkD,GACvD7iC,EAAS37D,SAAUi7F,EAAMK,mBAAoB,SAAUwC,GACvDniC,EAAS37D,SAAUi7F,EAAMK,mBAAoB,SAAU2D,GACvDtjC,EAAS37D,SAAUi7F,EAAMK,mBAAoB,UAAU,SAAU/7F,GAC/D,OAAOiC,YAAW,WAChB,OAAOk9F,EAAen/F,EACxB,GAAG,GACL,IACAo8D,EAAS37D,SAAUi7F,EAAMK,mBAAoB,YAAaoD,GAC1D/iC,EAAS37D,SAAUi7F,EAAMK,mBAAoB,gBAAiBmD,GAC9D9iC,EAAS37D,SAAUi7F,EAAMM,uBAAwB,QAAS+D,GAC1D3jC,EAAS37D,SAAUi7F,EAAMM,uBAAwB,QAASiD,GAC1D7iC,EAAS37D,SAAUi7F,EAAMM,uBAAwB,QAASuC,GAC1DniC,EAAS37D,SAAUi7F,EAAMM,uBAAwB,QAAS6D,GAC1Dp/F,SAAS2lC,iBAAiB,mBAAoB42D,GAC9Cv8F,SAAS2lC,iBAAiB,mBAAoBk2D,GACvCv4F,OAAOm8F,eAAgB,CAChC,EACIn8F,OAAO23F,QAAUA,GAASlqD,EAAK/wC,SAAU,yBAC3Ci7F,EAAM9yD,OAET,EAAEvpC,KAAKoJ,KACT,GAAEpJ,KAAKoJ,MAC0B3I,EAAOD,QACvCC,EAAOD,QAAU67F,OAEL,2BAAZ,KAAY,iCAEf,GAAEr8F,KAAKoJ,K,kDCtqBR,YACA,IAAIy/B,EAAQ,SAAUi4D,GACpB,OAAOA,GAAMA,EAAGxzF,OAASA,MAAQwzF,CACnC,EAGArgG,EAAOD,QAELqoC,EAA2B,iBAAdk4D,YAA0BA,aACvCl4D,EAAuB,iBAAVnkC,QAAsBA,SAEnCmkC,EAAqB,iBAAR0G,MAAoBA,OACjC1G,EAAuB,iBAAV9M,GAAsBA,IAEnC,WAAe,OAAO3yB,IAAO,CAA7B,IAAoCA,MAAQqC,SAAS,cAATA,E,kDCZ9CjL,EAAQsD,YAAa,EACrBtD,EAAQkG,OAASA,EACjBlG,EAAQ0V,QAwDR,SAAiBxH,EAAO/K,GACtB,IAAK,IAAIjE,EAAI,EAAG2J,EAAMqF,EAAM9O,OAAQF,EAAI2J,EAAK3J,IAC3C,GAAIgP,EAAMhP,KAAOiE,EACf,OAAOjE,EAGX,OAAQ,CACV,EA9DAc,EAAQwgG,iBA+DR,SAA0B9vF,GACxB,GAAsB,kBAAXA,EAAqB,CAE9B,GAAIA,GAAUA,EAAO+vF,OACnB,OAAO/vF,EAAO+vF,SACT,GAAc,MAAV/vF,EACT,MAAO,GACF,IAAKA,EACV,OAAOA,EAAS,GAMlBA,EAAS,GAAKA,CAChB,CACA,IAAKgwF,EAASjyF,KAAKiC,GACjB,OAAOA,EAET,OAAOA,EAAO1C,QAAQ2yF,EAAUC,EAClC,EAlFA5gG,EAAQ6gG,QAmFR,SAAiB19F,GACf,OAAKA,GAAmB,IAAVA,MAEH0B,EAAQ1B,IAA2B,IAAjBA,EAAM/D,OAKrC,EA1FAY,EAAQ8gG,YA2FR,SAAqBl9F,GACnB,IAAIm9F,EAAQ76F,EAAO,CAAC,EAAGtC,GAEvB,OADAm9F,EAAM7f,QAAUt9E,EACTm9F,CACT,EA9FA/gG,EAAQghG,YA+FR,SAAqBhmC,EAAQimC,GAE3B,OADAjmC,EAAOkmC,KAAOD,EACPjmC,CACT,EAjGAh7D,EAAQmhG,kBAkGR,SAA2BC,EAAaz8D,GACtC,OAAQy8D,EAAcA,EAAc,IAAM,IAAMz8D,CAClD,EAnGA,IAAIlB,EAAS,CACX,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,UAEHk9D,EAAW,aACbD,EAAW,YACb,SAASE,EAAWS,GAClB,OAAO59D,EAAO49D,EAChB,CACA,SAASn7F,EAAOZ,GACd,IAAK,IAAIpG,EAAI,EAAGA,EAAIwF,UAAUtF,OAAQF,IACpC,IAAK,IAAIuE,KAAOiB,UAAUxF,GACpBG,OAAOC,UAAUC,eAAeC,KAAKkF,UAAUxF,GAAIuE,KACrD6B,EAAI7B,GAAOiB,UAAUxF,GAAGuE,IAI9B,OAAO6B,CACT,CACA,IAAIN,EAAW3F,OAAOC,UAAU0F,SAChChF,EAAQgF,SAAWA,EAInB,IAAIgG,EAAa,SAAoB7H,GACnC,MAAwB,oBAAVA,CAChB,EAGI6H,EAAW,OACbhL,EAAQgL,WAAaA,EAAa,SAAU7H,GAC1C,MAAwB,oBAAVA,GAAiD,sBAAzB6B,EAASxF,KAAK2D,EACtD,GAEFnD,EAAQgL,WAAaA,EAKrB,IAAInG,EAAUE,MAAMF,SAAW,SAAU1B,GACvC,SAAOA,GAA0B,kBAAVA,IAA8C,mBAAzB6B,EAASxF,KAAK2D,EAC5D,EACAnD,EAAQ6E,QAAUA,C,+BCzDlB,SAASy8F,EAAex7F,EAAK5G,GAAK,OAKlC,SAAyB4G,GAAO,GAAIf,MAAMF,QAAQiB,GAAM,OAAOA,CAAK,CAL3By7F,CAAgBz7F,IAIzD,SAA+B9C,EAAG9C,GAAK,IAAIkD,EAAI,MAAQJ,EAAI,KAAO,oBAAsBC,QAAUD,EAAEC,OAAOi9B,WAAal9B,EAAE,cAAe,GAAI,MAAQI,EAAG,CAAE,IAAIjD,EAAGwD,EAAGzE,EAAG8S,EAAG7M,EAAI,GAAI+pE,GAAI,EAAItsE,GAAI,EAAI,IAAM,GAAI1D,GAAKkE,EAAIA,EAAE5D,KAAKwD,IAAIud,KAAM,IAAMrgB,EAAG,CAAE,GAAIb,OAAO+D,KAAOA,EAAG,OAAQ8rE,GAAI,CAAI,MAAO,OAASA,GAAK/uE,EAAIjB,EAAEM,KAAK4D,IAAIq+B,QAAUt8B,EAAEzF,KAAKS,EAAEgD,OAAQgC,EAAE/F,SAAWc,GAAIgvE,GAAI,GAAK,CAAE,MAAOlsE,GAAKJ,GAAI,EAAIe,EAAIX,CAAG,CAAE,QAAU,IAAM,IAAKksE,GAAK,MAAQ9rE,EAAEo+F,SAAWxvF,EAAI5O,EAAEo+F,SAAUniG,OAAO2S,KAAOA,GAAI,MAAQ,CAAE,QAAU,GAAIpP,EAAG,MAAMe,CAAG,CAAE,CAAE,OAAOwB,CAAG,CAAE,CAJlds8F,CAAsB37F,EAAK5G,IAE5F,SAAqC0D,EAAG8+F,GAAU,IAAK9+F,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO++F,EAAkB/+F,EAAG8+F,GAAS,IAAI/9F,EAAItE,OAAOC,UAAU0F,SAASxF,KAAKoD,GAAGwB,MAAM,GAAI,GAAc,WAANT,GAAkBf,EAAE46B,cAAa75B,EAAIf,EAAE46B,YAAYv7B,MAAM,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOoB,MAAMmE,KAAKtG,GAAI,GAAU,cAANe,GAAqB,2CAA2C8K,KAAK9K,GAAI,OAAOg+F,EAAkB/+F,EAAG8+F,EAAS,CAF7TE,CAA4B97F,EAAK5G,IACnI,WAA8B,MAAM,IAAIo0C,UAAU,4IAA8I,CADvDuuD,EAAoB,CAG7J,SAASF,EAAkB77F,EAAK+C,IAAkB,MAAPA,GAAeA,EAAM/C,EAAI1G,UAAQyJ,EAAM/C,EAAI1G,QAAQ,IAAK,IAAIF,EAAI,EAAG+gB,EAAO,IAAIlb,MAAM8D,GAAM3J,EAAI2J,EAAK3J,IAAK+gB,EAAK/gB,GAAK4G,EAAI5G,GAAI,OAAO+gB,CAAM,CAHlL,yGAUA,WACE,QAAuB9d,IAAnB+B,OAAO2mE,cAAmD1oE,IAA1B+B,OAAO49F,gBAAgC59F,OAAO49F,eAAeC,0BAC/F,OAEF,MAAMC,EAAqBC,YACrBC,EACS,WACX,OAAOr3B,QAAQC,UAAUk3B,EAAoB,GAAIp5F,KAAK40B,YACxD,EAEFt5B,OAAO+9F,YAAcC,EACrBD,YAAY3iG,UAAY0iG,EAAmB1iG,UAC3C2iG,YAAY3iG,UAAUk+B,YAAcykE,YACpC5iG,OAAO4lE,eAAeg9B,YAAaD,EACpC,CAdD,GAwCA,SAAW1iG,GAoBT,SAAS6iG,EAAMC,EAAkBpgG,EAASC,GACxC,MAAM,IAAImgG,EAAiB,2DAA6DpgG,EAAU,IAAKC,EACzG,CArBsC,mBAA3B3C,EAAU+iG,gBACrB/iG,EAAU+iG,cAAgB,SAAUC,GAC9BA,IAYN,SAA2BA,EAAW9D,GACpC8D,aAAqBL,aAAeE,EAAM7uD,UAAW,4CACnC,UAAlBgvD,EAAUzgG,MAAoBsgG,EAAM7uD,UAAW,gDAC/CgvD,EAAU9D,MAAQA,GAAQ2D,EAAMI,aAAc,0DAA2D,gBAC3G,CAfIC,CAAkBF,EAAW15F,MAC7B05F,EAAU5jD,WAEV4jD,EAAY1hG,SAASC,cAAc,UACzBgB,KAAO,SACjBygG,EAAUj2C,QAAS,EACnBzjD,KAAKtG,YAAYggG,GACjBA,EAAU5jD,QACV91C,KAAKi0B,YAAYylE,GAErB,EASD,CAvBD,CAuBGG,gBAAgBnjG,WACnB,MAAMojG,EAAmB,IAAI97B,QAM7B,SAAS+7B,EAAcphG,GACrB,MAAM+gG,EANR,SAAsCvgG,GACpC,MAAMg+D,EAAUh+D,aAAkB8+D,QAAU9+D,EAASA,aAAkBghE,KAAOhhE,EAAO+mE,cAAgB,KAC/F85B,EAAY7iC,EAAUA,EAAQpwB,QAAQ,iBAAmB,KAC/D,MAAiF,WAA3D,OAAdizD,QAAoC,IAAdA,OAAuB,EAASA,EAAU/gG,MAAoB+gG,EAAY,IAC1G,CAEoBC,CAA6BthG,EAAMQ,QACjDugG,GAAaA,EAAU9D,MACzBkE,EAAiBx3F,IAAIo3F,EAAU9D,KAAM8D,EAEzC,CAkBA,IAAIQ,EAoXAC,EAwLAC,EASAC,EA6gCAC,EAOAC,GA1lDJ,WACE,GAAI,cAAe9kD,MAAM/+C,UAAW,OACpC,IAAIA,EAAY4E,OAAOm6C,MAAM/+C,UAC7B,GAAI,gBAAiB4E,QAAU,iBAAiBuK,KAAK2tE,UAAUgnB,QAC7D9jG,EAAY4E,OAAOm/F,YAAY/jG,eAC1B,GAAI,gBAAiB4E,OAC1B,OAEFqiC,iBAAiB,QAASo8D,GAAe,GACzCtjG,OAAOwD,eAAevD,EAAW,YAAa,CAC5C,GAAAyD,GACE,GAAiB,UAAb6F,KAAK/G,MAAoB+G,KAAK7G,kBAAkB0gG,gBAClD,OAAOC,EAAiB3/F,IAAI6F,KAAK7G,OAErC,GAEH,CAhBD,GAkBA,SAAW+gG,GACTA,EAAyB,MAAI,QAC7BA,EAAwB,KAAI,MAC7B,CAHD,CAGGA,IAAsBA,EAAoB,CAAC,IAC9C,MAAMQ,UAAqBrB,YACzB,6BAAWsB,GACT,MAAO,CAAC,WAAY,WAAY,UAAW,MAC7C,CACA,WAAA/lE,GACEgmE,QACA56F,KAAK66F,OAASljG,QAAQC,UACtBoI,KAAK2zD,SAAW,IAAI+mC,EAAaI,oBAAoB96F,KACvD,CACA,iBAAA+6F,GACE/6F,KAAK2zD,SAASsB,SAChB,CACA,oBAAA+lC,GACEh7F,KAAK2zD,SAASuB,YAChB,CACA,MAAA+lC,GACE,OAAOj7F,KAAK2zD,SAASunC,mBACvB,CACA,wBAAAC,CAAyB9hG,GACX,WAARA,EACF2G,KAAK2zD,SAASynC,sBACG,YAAR/hG,EACT2G,KAAK2zD,SAAS0nC,kBACG,OAARhiG,EACT2G,KAAK2zD,SAAS2nC,mBAEdt7F,KAAK2zD,SAAS4nC,iBAElB,CACA,OAAIjjG,GACF,OAAO0H,KAAK+zB,aAAa,MAC3B,CACA,OAAIz7B,CAAIiC,GACFA,EACFyF,KAAK3H,aAAa,MAAOkC,GAEzByF,KAAKw8B,gBAAgB,MAEzB,CACA,WAAIg/D,GACF,OAwCJ,SAAqCvsD,GACnC,GACO,SADCA,EAAMzmC,cAEV,OAAO0xF,EAAkBuB,KAEzB,OAAOvB,EAAkBwB,KAE/B,CA/CWC,CAA4B37F,KAAK+zB,aAAa,YAAc,GACrE,CACA,WAAIynE,CAAQjhG,GACNA,EACFyF,KAAK3H,aAAa,UAAWkC,GAE7ByF,KAAKw8B,gBAAgB,UAEzB,CACA,YAAInB,GACF,OAAOr7B,KAAK06D,aAAa,WAC3B,CACA,YAAIr/B,CAAS9gC,GACPA,EACFyF,KAAK3H,aAAa,WAAY,IAE9B2H,KAAKw8B,gBAAgB,WAEzB,CACA,cAAIo/D,GACF,OAAO57F,KAAK06D,aAAa,aAC3B,CACA,cAAIkhC,CAAWrhG,GACTA,EACFyF,KAAK3H,aAAa,aAAc,IAEhC2H,KAAKw8B,gBAAgB,aAEzB,CACA,YAAIuoB,GACF,OAAQ/kD,KAAK2zD,SAASkoC,SACxB,CACA,YAAIpf,GACF,OAAOz8E,KAAKk3B,gBAAkBl/B,WAAagI,KAAK87F,SAClD,CACA,aAAIA,GACF,IAAIjvF,EAAImsD,EACR,OAAoG,QAA5FA,EAAmC,QAA7BnsD,EAAK7M,KAAKk3B,qBAAkC,IAAPrqB,OAAgB,EAASA,EAAG4pB,uBAAoC,IAAPuiC,OAAgB,EAASA,EAAG0B,aAAa,qBACvJ,EAUF,SAASqhC,EAAUC,GACjB,OAAO,IAAIC,IAAID,EAAU5/F,WAAYpE,SAASkkG,QAChD,CACA,SAASC,EAAUnwC,GACjB,IAAIowC,EACJ,OAAIpwC,EAAIhrB,KACCgrB,EAAIhrB,KAAKxlC,MAAM,IACb4gG,EAAcpwC,EAAIzqB,KAAKp8B,MAAM,WAC/Bi3F,EAAY,QADd,CAGT,CACA,SAASC,EAAUzG,EAAM8D,GAEvB,OAAOqC,GADuB,OAAdrC,QAAoC,IAAdA,OAAuB,EAASA,EAAU3lE,aAAa,gBAAkB6hE,EAAK7hE,aAAa,WAAa6hE,EAAK/9B,OAErJ,CACA,SAASykC,EAAatwC,GACpB,OAyBF,SAA8BA,GAC5B,OAJF,SAA2BA,GACzB,OAAOA,EAAIuwC,SAAStuF,MAAM,KAAKzS,MAAM,EACvC,CAESghG,CAAkBxwC,GAAKxwD,OAAO,GAAG,EAC1C,CA3BUihG,CAAqBzwC,GAAK7mD,MAAM,aAAe,IAAI,IAAM,EACnE,CAIA,SAASu3F,EAAaC,EAAS3wC,GAC7B,MAAMzkC,EAsBR,SAAmBykC,GACjB,OAEwBzxD,EAFAyxD,EAAI4wC,OAAS5wC,EAAIuwC,SAGlChiG,EAAMsiG,SAAS,KAAOtiG,EAAQA,EAAQ,IAD/C,IAA0BA,CAD1B,CAxBiBuiG,CAAU9wC,GACzB,OAAO2wC,EAAQp7D,OAASw6D,EAAUx0E,GAAQga,MAAQo7D,EAAQp7D,KAAKw7D,WAAWx1E,EAC5E,CACA,SAASy1E,EAAoB/7D,EAAUg8D,GACrC,OAAOP,EAAaz7D,EAAUg8D,MAPrBX,EAO6Cr7D,GAP3B97B,MAAM,kCAQnC,CACA,SAAS+3F,EAAclxC,GACrB,MAAM9kC,EAASi1E,EAAUnwC,GACzB,OAAiB,MAAV9kC,EAAiB8kC,EAAIzqB,KAAK/lC,MAAM,IAAK0rB,EAAO1wB,OAAS,IAAMw1D,EAAIzqB,IACxE,CACA,SAAS47D,EAAWnxC,GAClB,OAAOkxC,EAAclxC,EACvB,CAgBA,MAAMoxC,EACJ,WAAAxoE,CAAYq6B,GACVjvD,KAAKivD,SAAWA,CAClB,CACA,aAAIouC,GACF,OAAOr9F,KAAKivD,SAASquC,EACvB,CACA,UAAIC,GACF,OAAQv9F,KAAKq9F,SACf,CACA,eAAIG,GACF,OAAOx9F,KAAKytD,YAAc,KAAOztD,KAAKytD,YAAc,GACtD,CACA,eAAIgwC,GACF,OAAOz9F,KAAKytD,YAAc,KAAOztD,KAAKytD,YAAc,GACtD,CACA,cAAIiwC,GACF,OAAO19F,KAAKivD,SAASyuC,UACvB,CACA,YAAIz8D,GACF,OAAO86D,EAAU/7F,KAAKivD,SAASjD,IACjC,CACA,UAAI2xC,GACF,OAAO39F,KAAKosD,aAAepsD,KAAKosD,YAAYjnD,MAAM,yDACpD,CACA,cAAIsoD,GACF,OAAOztD,KAAKivD,SAASf,MACvB,CACA,eAAI9B,GACF,OAAOpsD,KAAK8hC,OAAO,eACrB,CACA,gBAAIovB,GACF,OAAOlxD,KAAKivD,SAAS9sC,QAAQ2R,MAC/B,CACA,gBAAI8pE,GACF,OAAI59F,KAAK29F,OACA39F,KAAKivD,SAAS9sC,QAAQ2R,OAEtBn8B,QAAQC,aAAQ2B,EAE3B,CACA,MAAAuoC,CAAOzoC,GACL,OAAO2G,KAAKivD,SAASP,QAAQv0D,IAAId,EACnC,EAEF,SAASwkG,EAAsB1mC,GAC7B,GAA+C,SAA3CA,EAAQpjC,aAAa,mBACvB,OAAOojC,EACF,CACL,MAAM2mC,EAAuB9lG,SAASC,cAAc,UAC9C87F,EAAWgK,EAAe,aAOhC,OANIhK,IACF+J,EAAqBtqE,MAAQugE,GAE/B+J,EAAqBtnE,YAAc2gC,EAAQ3gC,YAC3CsnE,EAAqB3xC,OAAQ,EAKjC,SAA+B6xC,EAAoBC,GACjD,IAAK,MAAMC,KAAQD,EAAc3kE,WAAY,CAC3C,MAAMjgC,EAAO6kG,EAAK7kG,KACZkB,EAAQ2jG,EAAK3jG,MACnByjG,EAAmB3lG,aAAagB,EAAMkB,EACxC,CACF,CAVI4jG,CAAsBL,EAAsB3mC,GACrC2mC,CACT,CACF,CAaA,SAAS1pD,EAASygB,GAChB,IAAIupC,EAAQtiG,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E3C,EAASilG,EAAMjlG,OACfs9C,EAAa2nD,EAAM3nD,WACnBG,EAASwnD,EAAMxnD,OACjB,MAAMj+C,EAAQ,IAAI67F,YAAY3/B,EAAW,CACvCpe,aACAD,SAAS,EACT1H,UAAU,EACV8H,WAOF,OALIz9C,GAAUA,EAAOkhE,YACnBlhE,EAAOw7F,cAAch8F,GAErBX,SAASy+B,gBAAgBk+D,cAAch8F,GAElCA,CACT,CACA,SAAS0lG,IACP,OAAO,IAAI1mG,SAAQC,GAAW8rD,uBAAsB,IAAM9rD,OAC5D,CAOA,SAAS0mG,IACP,IAAIxkD,EAAOh+C,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,GAC/E,OAAO,IAAIktD,WAAYC,gBAAgBnP,EAAM,YAC/C,CACA,SAASykD,EAASC,GAChB,IAAK,IAAIlvB,EAAOxzE,UAAUtF,OAAQyhB,EAAS,IAAI9b,MAAMmzE,EAAO,EAAIA,EAAO,EAAI,GAAI5iC,EAAO,EAAGA,EAAO4iC,EAAM5iC,IACpGz0B,EAAOy0B,EAAO,GAAK5wC,UAAU4wC,GAE/B,MAAM+xD,EAKR,SAAqBD,EAASvmF,GAC5B,OAAOumF,EAAQloC,QAAO,CAACv7C,EAAQjT,EAAQxR,IAE9BykB,EAASjT,QADWvO,GAAb0e,EAAO3hB,GAAkB,GAAK2hB,EAAO3hB,KAElD,GACL,CAVgBooG,CAAYF,EAASvmF,GAAQ7S,QAAQ,MAAO,IAAI6I,MAAM,MAC9D9I,EAAQs5F,EAAM,GAAGt5F,MAAM,QACvBw5F,EAASx5F,EAAQA,EAAM,GAAG3O,OAAS,EACzC,OAAOioG,EAAMxhG,KAAI2hG,GAAQA,EAAKpjG,MAAMmjG,KAAS58F,KAAK,KACpD,CAOA,SAAS88F,IACP,OAAO1iG,MAAMmE,KAAK,CAChB9J,OAAQ,KACPyG,KAAI,CAACorC,EAAG/xC,IACA,GAALA,GAAe,IAALA,GAAgB,IAALA,GAAgB,IAALA,EAC3B,IACO,IAALA,EACF,IACO,IAALA,GACD4N,KAAKwF,MAAsB,EAAhBxF,KAAKgyB,UAAgB,GAAG95B,SAAS,IAE7C8H,KAAKwF,MAAsB,GAAhBxF,KAAKgyB,UAAe95B,SAAS,MAEhD2F,KAAK,GACV,CACA,SAASgyB,EAAawlC,GACpB,IAAK,IAAIulC,EAAQhjG,UAAUtF,OAAQioC,EAAW,IAAItiC,MAAM2iG,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAC5GtgE,EAASsgE,EAAQ,GAAKjjG,UAAUijG,GAElC,IAAK,MAAMxkG,KAASkkC,EAASxhC,KAAIk6D,GAAuB,OAAZA,QAAgC,IAAZA,OAAqB,EAASA,EAAQpjC,aAAawlC,KACjH,GAAoB,iBAATh/D,EAAmB,OAAOA,EAEvC,OAAO,IACT,CAOA,SAASykG,IACP,IAAK,IAAIC,EAAQnjG,UAAUtF,OAAQioC,EAAW,IAAItiC,MAAM8iG,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACxFzgE,EAASygE,GAASpjG,UAAUojG,GAE9B,IAAK,MAAM/nC,KAAW14B,EACK,eAArB04B,EAAQgoC,WACVhoC,EAAQ9+D,aAAa,OAAQ,IAE/B8+D,EAAQ9+D,aAAa,YAAa,OAEtC,CACA,SAAS+mG,IACP,IAAK,IAAIC,EAAQvjG,UAAUtF,OAAQioC,EAAW,IAAItiC,MAAMkjG,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACxF7gE,EAAS6gE,GAASxjG,UAAUwjG,GAE9B,IAAK,MAAMnoC,KAAW14B,EACK,eAArB04B,EAAQgoC,WACVhoC,EAAQ36B,gBAAgB,QAE1B26B,EAAQ36B,gBAAgB,YAE5B,CACA,SAAS+iE,EAAYpoC,GACnB,IAAIqoC,EAAwB1jG,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,IAChG,OAAO,IAAInE,SAAQC,IACjB,MAAM6nG,EAAa,KACjBtoC,EAAQprB,oBAAoB,QAAS0zD,GACrCtoC,EAAQprB,oBAAoB,OAAQ0zD,GACpC7nG,GAAS,EAEXu/D,EAAQx5B,iBAAiB,OAAQ8hE,EAAY,CAC3Cz2D,MAAM,IAERmuB,EAAQx5B,iBAAiB,QAAS8hE,EAAY,CAC5Cz2D,MAAM,IAERxvC,WAAW5B,EAAS4nG,EAAsB,GAE9C,CACA,SAASE,EAA0B7nC,GACjC,OAAQA,GACN,IAAK,UACH,OAAO8nC,QAAQC,aACjB,IAAK,UACL,IAAK,UACH,OAAOD,QAAQE,UAErB,CAIA,SAASC,IACP,IAAK,IAAIC,EAAQjkG,UAAUtF,OAAQioC,EAAW,IAAItiC,MAAM4jG,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACxFvhE,EAASuhE,GAASlkG,UAAUkkG,GAE9B,MAAMnoC,EAAS9jC,EAAa,uBAAwB0K,GACpD,OARF,SAAkBo5B,GAChB,MAAiB,WAAVA,GAAiC,WAAVA,GAAiC,WAAVA,CACvD,CAMSooC,CAASpoC,GAAUA,EAAS,IACrC,CACA,SAASqoC,EAAe7mG,GACtB,OAAOrB,SAASgmC,cAAc,cAAc3kC,MAC9C,CACA,SAAS0kG,EAAe1kG,GACtB,MAAM89D,EAAU+oC,EAAe7mG,GAC/B,OAAO89D,GAAWA,EAAQ3vB,OAC5B,CAWA,SAAS24D,EAAuBhpC,EAAS9iC,GACvC,IAAIxnB,EACJ,GAAIsqD,aAAmBc,QACrB,OAAOd,EAAQpwB,QAAQ1S,IAAa8rE,EAAuBhpC,EAAQipC,eAAkD,QAAhCvzF,EAAKsqD,EAAQpoB,qBAAkC,IAAPliC,OAAgB,EAASA,EAAG0hD,MAAOl6B,EAEpK,EAEA,SAAW8lE,GACTA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAAkB,KAAI,GAAK,OACvCA,EAAYA,EAAiB,IAAI,GAAK,MACtCA,EAAYA,EAAmB,MAAI,GAAK,QACxCA,EAAYA,EAAoB,OAAI,GAAK,QAC1C,CAND,CAMGA,IAAgBA,EAAc,CAAC,IAelC,MAAMkG,EACJ,WAAAzrE,CAAY++B,EAAU1rB,EAAQhH,GAC5B,IAAI+O,EAAOl0C,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,IAAIwkG,gBAC/EnnG,EAAS2C,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,KACjFkE,KAAKugG,gBAAkB,IAAIC,gBAC3BxgG,KAAKygG,sBAAwBC,MAC7B1gG,KAAK2zD,SAAWA,EAChB3zD,KAAKioC,OAASA,EACdjoC,KAAK0uD,QAAU1uD,KAAK2gG,eACpB3gG,KAAKgwC,KAAOA,EACZhwC,KAAKgsD,IAAM/qB,EACXjhC,KAAK7G,OAASA,CAChB,CACA,YAAI8nC,GACF,OAAOjhC,KAAKgsD,GACd,CACA,UAAIoG,GACF,OAAOpyD,KAAKgsD,IAAI40C,YAClB,CACA,WAAIC,GACF,OAAO7gG,KAAKgwC,KAAO7zC,MAAMmE,KAAKN,KAAKgwC,KAAK6wD,WAAa,EACvD,CACA,MAAAC,GACE9gG,KAAKugG,gBAAgBpyC,OACvB,CACA,aAAM4yC,GACJ,MAAMC,EAAehhG,KAAKghG,aAC1BhhG,KAAK2zD,SAASstC,eAAejhG,YACvBA,KAAKkhG,4BAA4BF,GACvC,IACEhhG,KAAK2zD,SAASwtC,eAAenhG,MAC7B,MAAMivD,QAAiBwM,MAAMz7D,KAAKgsD,IAAIzqB,KAAMy/D,GAC5C,aAAahhG,KAAKohG,QAAQnyC,EAC5B,CAAE,MAAOx2D,GACP,GAAmB,eAAfA,EAAMY,KAIR,MAHI2G,KAAKqhG,0BAA0B5oG,IACjCuH,KAAK2zD,SAAS2tC,eAAethG,KAAMvH,GAE/BA,CAEV,CAAE,QACAuH,KAAK2zD,SAAS4tC,gBAAgBvhG,KAChC,CACF,CACA,aAAMohG,CAAQnyC,GACZ,MAAMuyC,EAAgB,IAAIpE,EAAcnuC,GAexC,OAdc7a,EAAS,8BAA+B,CACpDqC,YAAY,EACZG,OAAQ,CACN4qD,iBAEFroG,OAAQ6G,KAAK7G,SAELg9C,iBACRn2C,KAAK2zD,SAAS8tC,iCAAiCzhG,KAAMwhG,GAC5CA,EAAcnE,UACvBr9F,KAAK2zD,SAAS+tC,6BAA6B1hG,KAAMwhG,GAEjDxhG,KAAK2zD,SAASguC,0BAA0B3hG,KAAMwhG,GAEzCA,CACT,CACA,gBAAIR,GACF,IAAIn0F,EACJ,MAAO,CACLo7B,OAAQkyD,EAAYn6F,KAAKioC,QAAQ1hC,cACjCq7F,YAAa,cACblzC,QAAS1uD,KAAK0uD,QACdmzC,SAAU,SACV7xD,KAAMhwC,KAAK8hG,OAAS,KAAO9hG,KAAKgwC,KAChC+xD,OAAQ/hG,KAAKgiG,YACbC,SAA4C,QAAjCp1F,EAAK7M,KAAK2zD,SAASsuC,gBAA6B,IAAPp1F,OAAgB,EAASA,EAAG00B,KAEpF,CACA,kBAAIo/D,GACF,MAAO,CACLuB,OAAQ,mCAEZ,CACA,UAAIJ,GACF,OAAO9hG,KAAKioC,SAAWkyD,EAAYhgG,GACrC,CACA,eAAI6nG,GACF,OAAOhiG,KAAKugG,gBAAgBwB,MAC9B,CACA,kBAAAI,CAAmBl0C,GACjBjuD,KAAK0uD,QAAgB,OAAI,CAACT,EAAUjuD,KAAK0uD,QAAgB,QAAG3sD,KAAK,KACnE,CACA,iCAAMm/F,CAA4BF,GAChC,MAAMoB,EAAsB,IAAIzqG,SAAQC,GAAWoI,KAAKygG,sBAAwB7oG,IAClEw8C,EAAS,6BAA8B,CACnDqC,YAAY,EACZG,OAAQ,CACNoqD,eACAh1C,IAAKhsD,KAAKgsD,IACVq2C,OAAQriG,KAAKygG,uBAEftnG,OAAQ6G,KAAK7G,SAELg9C,wBAAwBisD,CACpC,CACA,yBAAAf,CAA0B5oG,GASxB,OARc27C,EAAS,4BAA6B,CAClDj7C,OAAQ6G,KAAK7G,OACbs9C,YAAY,EACZG,OAAQ,CACNt9C,QAAS0G,KACTvH,MAAOA,KAGG09C,gBAChB,EAEF,MAAMmsD,EACJ,WAAA1tE,CAAY++B,EAAUwD,GACpBn3D,KAAKm2D,SAAU,EACfn2D,KAAKuiG,UAAY1B,IACf,MAAM2B,EAAY3B,EAAQrlG,OAAO,GAAG,IAClB,OAAdgnG,QAAoC,IAAdA,OAAuB,EAASA,EAAUC,iBAClEziG,KAAK2zD,SAAS+uC,0BAA0B1iG,KAAKm3D,QAC/C,EAEFn3D,KAAK2zD,SAAWA,EAChB3zD,KAAKm3D,QAAUA,EACfn3D,KAAK2iG,qBAAuB,IAAIC,qBAAqB5iG,KAAKuiG,UAC5D,CACA,KAAApiE,GACOngC,KAAKm2D,UACRn2D,KAAKm2D,SAAU,EACfn2D,KAAK2iG,qBAAqBlqC,QAAQz4D,KAAKm3D,SAE3C,CACA,IAAA7oB,GACMtuC,KAAKm2D,UACPn2D,KAAKm2D,SAAU,EACfn2D,KAAK2iG,qBAAqBE,UAAU7iG,KAAKm3D,SAE7C,EAEF,MAAM2rC,EACJ,WAAO5wD,CAAK94C,GACV,MAAsB,iBAAXA,EACF,IAAI4G,KAtUjB,SAAgC85C,GAC9B,MAAMguC,EAAW9vF,SAASC,cAAc,YAExC,OADA6vF,EAASzpD,UAAYyb,EACdguC,EAAStgD,OAClB,CAkUsBiJ,CAAuBr3C,IAEhCA,CAEX,CACA,WAAAw7B,CAAYwd,GACVpyC,KAAKoyC,SAIT,SAA8BA,GAC5B,IAAK,MAAM+kB,KAAW/kB,EAAS9V,iBAAiB,gBAAiB,CAC/D,MAAMymE,EAAgB/qG,SAASgrG,WAAW7rC,GAAS,GACnD,IAAK,MAAM8rC,KAAsBF,EAAcG,gBAAgB17D,QAAQlL,iBAAiB,UACtF2mE,EAAmBpoD,YAAYgjD,EAAsBoF,IAEvD9rC,EAAQtc,YAAYkoD,EACtB,CACA,OAAO3wD,CACT,CAboB+wD,CAAqB/wD,EACvC,EAEF0wD,EAAc12C,YAAc,6BAY5B,SAAWguC,GACTA,EAAoBA,EAAiC,YAAI,GAAK,cAC9DA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA+B,UAAI,GAAK,YAC5DA,EAAoBA,EAA8B,SAAI,GAAK,WAC3DA,EAAoBA,EAA6B,QAAI,GAAK,SAC3D,CAPD,CAOGA,IAAwBA,EAAsB,CAAC,IAElD,SAAWC,GACTA,EAAwB,WAAI,oCAC5BA,EAAuB,UAAI,sBAC3BA,EAAmB,MAAI,YACxB,CAJD,CAIGA,IAAgBA,EAAc,CAAC,IAWlC,MAAM+I,EACJ,oBAAOC,CAAcjqG,EAASyzE,EAAUy2B,GACtC,OAAO3rG,QAAQC,QAAQm+F,QAAQ38F,GACjC,CACA,WAAAw7B,CAAY++B,EAAU4vC,EAAa7J,GACjC,IAAI8J,EAAe1nG,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,IAAmBA,UAAU,GAClFkE,KAAKwpC,MAAQ4wD,EAAoBqJ,YACjCzjG,KAAK2zD,SAAWA,EAChB3zD,KAAKujG,YAAcA,EACnBvjG,KAAK05F,UAAYA,EACjB15F,KAAK0jG,SA6KT,SAAuBH,EAAa7J,GAClC,MAAMgK,EAAW,IAAIvM,SAASoM,GACxBlqG,EAAqB,OAAdqgG,QAAoC,IAAdA,OAAuB,EAASA,EAAU3lE,aAAa,QACpFx5B,EAAsB,OAAdm/F,QAAoC,IAAdA,OAAuB,EAASA,EAAU3lE,aAAa,SACvF16B,GACFqqG,EAASlpD,OAAOnhD,EAAMkB,GAAS,IAEjC,OAAOmpG,CACT,CArLoBC,CAAcJ,EAAa7J,GAC3C15F,KAAKihC,SAAW86D,EAAU/7F,KAAK63D,QAC3B73D,KAAKioC,QAAUkyD,EAAYhgG,KAiMnC,SAA8B6xD,EAAK60C,GACjC,MAAMD,EAAe,IAAIN,gBACzB,IAAK,MAAMsD,KAAS/C,EAAS,CAC3B,IAAIgD,EAAQnL,EAAekL,EAAO,GAClC,MAAMvqG,EAAOwqG,EAAM,GACbtpG,EAAQspG,EAAM,GAChBtpG,aAAiBupG,MACrBlD,EAAapmD,OAAOnhD,EAAMkB,EAC5B,CACAyxD,EAAI+3C,OAASnD,EAAaxkG,UAE5B,CA3MM4nG,CAAqBhkG,KAAKihC,SAAU,IAAIjhC,KAAKgwC,KAAK6wD,YAEpD7gG,KAAKikG,aAAe,IAAI5D,EAAargG,KAAMA,KAAKioC,OAAQjoC,KAAKihC,SAAUjhC,KAAKgwC,KAAMhwC,KAAKujG,aACvFvjG,KAAKwjG,aAAeA,CACtB,CACA,UAAIv7D,GACF,IAAIp7B,EAEJ,OA9NJ,SAA+Bo7B,GAC7B,OAAQA,EAAOz/B,eACb,IAAK,MACH,OAAO2xF,EAAYhgG,IACrB,IAAK,OACH,OAAOggG,EAAY+J,KACrB,IAAK,MACH,OAAO/J,EAAYgK,IACrB,IAAK,QACH,OAAOhK,EAAYiK,MACrB,IAAK,SACH,OAAOjK,EAAY7kC,OAEzB,CAiNW+uC,GADmC,QAAzBx3F,EAAK7M,KAAK05F,iBAA8B,IAAP7sF,OAAgB,EAASA,EAAGknB,aAAa,gBAAkB/zB,KAAKujG,YAAYxvE,aAAa,WAAa,IACpHvrB,gBAAkB2xF,EAAYhgG,GACpE,CACA,UAAI09D,GACF,IAAIhrD,EACJ,MAAMy3F,EAAuD,kBAA5BtkG,KAAKujG,YAAY1rC,OAAsB73D,KAAKujG,YAAY1rC,OAAS,KAClG,OAA8B,QAAzBhrD,EAAK7M,KAAK05F,iBAA8B,IAAP7sF,OAAgB,EAASA,EAAG6tD,aAAa,eACtE16D,KAAK05F,UAAU3lE,aAAa,eAAiB,GAE7C/zB,KAAKujG,YAAYxvE,aAAa,WAAauwE,GAAqB,EAE3E,CACA,QAAIt0D,GACF,OAAIhwC,KAAKk3F,SAAWmD,EAAYkK,YAAcvkG,KAAKioC,QAAUkyD,EAAYhgG,IAChE,IAAImmG,gBAAgBtgG,KAAKwkG,gBAEzBxkG,KAAK0jG,QAEhB,CACA,WAAIxM,GACF,IAAIrqF,EACJ,OAnDJ,SAA+B43F,GAC7B,OAAQA,EAASj8F,eACf,KAAK6xF,EAAYqK,UACf,OAAOrK,EAAYqK,UACrB,KAAKrK,EAAYsK,MACf,OAAOtK,EAAYsK,MACrB,QACE,OAAOtK,EAAYkK,WAEzB,CA0CWK,EAAiD,QAAzB/3F,EAAK7M,KAAK05F,iBAA8B,IAAP7sF,OAAgB,EAASA,EAAGknB,aAAa,iBAAmB/zB,KAAKujG,YAAYrM,QAC/I,CACA,UAAI4K,GACF,OAAO9hG,KAAKikG,aAAanC,MAC3B,CACA,kBAAI0C,GACF,MAAO,IAAIxkG,KAAK0jG,UAAUptC,QAAO,CAACuqC,EAASgE,KACzC,IAAIC,EAAQpM,EAAemM,EAAO,GAChCxrG,EAAOyrG,EAAM,GACbvqG,EAAQuqG,EAAM,GAChB,OAAOjE,EAAQhuF,OAAuB,iBAATtY,EAAoB,CAAC,CAAClB,EAAMkB,IAAU,GAAG,GACrE,GACL,CACA,WAAM4lC,GACJ,MAAM4kE,EAAuB3K,EAC3BqJ,EAAcsB,EAAqBtB,YACnCuB,EAAaD,EAAqBC,WAC9BC,EAAsBlxE,EAAa,qBAAsB/zB,KAAK05F,UAAW15F,KAAKujG,aACpF,GAAmC,kBAAxB0B,EAAkC,CAE3C,UADqB7B,EAAeC,cAAc4B,EAAqBjlG,KAAKujG,YAAavjG,KAAK05F,WAE5F,MAEJ,CACA,GAAI15F,KAAKwpC,OAASi6D,EAEhB,OADAzjG,KAAKwpC,MAAQw7D,EACNhlG,KAAKikG,aAAalD,SAE7B,CACA,IAAAzyD,GACE,MAAM42D,EAAwB9K,EAC5B+K,EAAWD,EAAsBC,SACjC/gD,EAAU8gD,EAAsB9gD,QAClC,GAAIpkD,KAAKwpC,OAAS27D,GAAYnlG,KAAKwpC,OAAS4a,EAG1C,OAFApkD,KAAKwpC,MAAQ27D,EACbnlG,KAAKikG,aAAanD,UACX,CAEX,CACA,cAAAG,CAAe3nG,GACb,IAAKA,EAAQwoG,OAAQ,CACnB,MAAMj9F,EA8GZ,SAAwBugG,GACtB,GAAkB,MAAdA,EAAoB,CACtB,MACMC,GADUrtG,SAASqtG,OAASrtG,SAASqtG,OAAOp3F,MAAM,MAAQ,IACzCutB,MAAK6pE,GAAUA,EAAOtI,WAAWqI,KACxD,GAAIC,EAAQ,CACV,MAAM9qG,EAAQ8qG,EAAOp3F,MAAM,KAAKzS,MAAM,GAAGuG,KAAK,KAC9C,OAAOxH,EAAQ+qG,mBAAmB/qG,QAAShB,CAC7C,CACF,CACF,CAvHoBgsG,CAAexH,EAAe,gBAAkBA,EAAe,cACzEl5F,IACFvL,EAAQo1D,QAAQ,gBAAkB7pD,EAEtC,CACI7E,KAAKwlG,kCAAkClsG,IACzCA,EAAQ6oG,mBAAmBW,EAAc12C,YAE7C,CACA,cAAA+0C,CAAesE,GACb,IAAI54F,EACJ7M,KAAKwpC,MAAQ4wD,EAAoBsL,QACP,QAAzB74F,EAAK7M,KAAK05F,iBAA8B,IAAP7sF,GAAyBA,EAAGxU,aAAa,WAAY,IACvF2H,KAAK2lG,iBACLvxD,EAAS,qBAAsB,CAC7Bj7C,OAAQ6G,KAAKujG,YACb3sD,OAAQ,CACNgvD,eAAgB5lG,QAGpBA,KAAK2zD,SAASkyC,sBAAsB7lG,KACtC,CACA,gCAAAyhG,CAAiCnoG,EAAS21D,GACxCjvD,KAAK+a,OAAS,CACZ6zC,QAASK,EAASouC,UAClBmE,cAAevyC,EAEnB,CACA,4BAAAyyC,CAA6BpoG,EAAS21D,GACpC,GAAIA,EAASuuC,aAAevuC,EAASwuC,YACnCz9F,KAAK2zD,SAASmyC,iCAAiC9lG,KAAMivD,QAChD,GAAIjvD,KAAK+lG,oBAAoBzsG,IAyFxC,SAA0C21D,GACxC,OAA8B,KAAvBA,EAASxB,aAAsBwB,EAASyuC,UACjD,CA3FoDsI,CAAiC/2C,GAAW,CAC1F,MAAMx2D,EAAQ,IAAIC,MAAM,oDACxBsH,KAAK2zD,SAASsyC,sBAAsBjmG,KAAMvH,EAC5C,MACEuH,KAAKwpC,MAAQ4wD,EAAoB8L,UACjClmG,KAAK+a,OAAS,CACZ6zC,SAAS,EACT4yC,cAAevyC,GAEjBjvD,KAAK2zD,SAASwyC,oCAAoCnmG,KAAMivD,EAE5D,CACA,yBAAA0yC,CAA0BroG,EAAS21D,GACjCjvD,KAAK+a,OAAS,CACZ6zC,SAAS,EACT4yC,cAAevyC,GAEjBjvD,KAAK2zD,SAASmyC,iCAAiC9lG,KAAMivD,EACvD,CACA,cAAAqyC,CAAehoG,EAASb,GACtBuH,KAAK+a,OAAS,CACZ6zC,SAAS,EACTn2D,SAEFuH,KAAK2zD,SAASsyC,sBAAsBjmG,KAAMvH,EAC5C,CACA,eAAA8oG,CAAgBkE,GACd,IAAI54F,EACJ7M,KAAKwpC,MAAQ4wD,EAAoBh2C,QACP,QAAzBv3C,EAAK7M,KAAK05F,iBAA8B,IAAP7sF,GAAyBA,EAAG2vB,gBAAgB,YAC9Ex8B,KAAKomG,qBACLhyD,EAAS,mBAAoB,CAC3Bj7C,OAAQ6G,KAAKujG,YACb3sD,OAAQngD,OAAO46B,OAAO,CACpBu0E,eAAgB5lG,MACfA,KAAK+a,UAEV/a,KAAK2zD,SAAS0yC,uBAAuBrmG,KACvC,CACA,cAAA2lG,GACE,GAAK3lG,KAAK05F,WAAc15F,KAAKsmG,YAC7B,GAAItmG,KAAK05F,UAAU13E,QAAQ,UACzBhiB,KAAKumG,mBAAqBvmG,KAAK05F,UAAUr7D,UACzCr+B,KAAK05F,UAAUr7D,UAAYr+B,KAAKsmG,iBAC3B,GAAItmG,KAAK05F,UAAU13E,QAAQ,SAAU,CAC1C,MAAM9lB,EAAQ8D,KAAK05F,UACnB15F,KAAKumG,mBAAqBrqG,EAAM3B,MAChC2B,EAAM3B,MAAQyF,KAAKsmG,WACrB,CACF,CACA,kBAAAF,GACE,GAAKpmG,KAAK05F,WAAc15F,KAAKumG,mBAC7B,GAAIvmG,KAAK05F,UAAU13E,QAAQ,UACzBhiB,KAAK05F,UAAUr7D,UAAYr+B,KAAKumG,wBAC3B,GAAIvmG,KAAK05F,UAAU13E,QAAQ,SAAU,CAC5BhiB,KAAK05F,UACbn/F,MAAQyF,KAAKumG,kBACrB,CACF,CACA,mBAAAR,CAAoBzsG,GAClB,OAAQA,EAAQwoG,QAAU9hG,KAAKwjG,YACjC,CACA,iCAAAgC,CAAkClsG,GAChC,OAAQA,EAAQwoG,QAxdpB,SAAsBvoC,GACpB,IAAK,IAAIitC,EAAQ1qG,UAAUtF,OAAQioC,EAAW,IAAItiC,MAAMqqG,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IAC5GhoE,EAASgoE,EAAQ,GAAK3qG,UAAU2qG,GAElC,OAAOhoE,EAAS9iC,MAAKw7D,GAAWA,GAAWA,EAAQuD,aAAanB,IAClE,CAmd8BmB,CAAa,oBAAqB16D,KAAK05F,UAAW15F,KAAKujG,YACnF,CACA,eAAI+C,GACF,IAAIz5F,EACJ,OAAiC,QAAzBA,EAAK7M,KAAK05F,iBAA8B,IAAP7sF,OAAgB,EAASA,EAAGknB,aAAa,0BACpF,EAoCF,MAAM2yE,EACJ,WAAA9xE,CAAYuiC,GACVn3D,KAAKm3D,QAAUA,CACjB,CACA,iBAAI/1B,GACF,OAAOphC,KAAKm3D,QAAQjgC,cAAckK,aACpC,CACA,YAAIqF,GACF,MAAO,IAAIzmC,KAAKm3D,QAAQ1wB,SAC1B,CACA,SAAAkgE,CAAUz/E,GACR,OAA2C,MAApClnB,KAAK4mG,oBAAoB1/E,EAClC,CACA,mBAAA0/E,CAAoB1/E,GAClB,OAAOA,EAASlnB,KAAKm3D,QAAQn5B,cAAc,QAAQ9W,gBAAqBA,OAAc,IACxF,CACA,eAAImzC,GACF,OAAOr6D,KAAKm3D,QAAQkD,WACtB,CACA,6BAAIwsC,GAEF,IAAK,MAAM1vC,KAAWn3D,KAAKm3D,QAAQ76B,iBAAiB,eAClD,GAA8C,MAA1C66B,EAAQpwB,QAFgB,yEAEwB,OAAOowB,EAE7D,OAAO,IACT,CACA,qBAAI2vC,GACF,OAAOC,EAA0B/mG,KAAKm3D,QACxC,CACA,uBAAA6vC,CAAwBjrE,GACtB,OAAOirE,EAAwBhnG,KAAKm3D,QAASp7B,EAC/C,CACA,iCAAAkrE,CAAkCC,GAChC,MAAMC,EAAsB,CAAC,EAC7B,IAAK,MAAMC,KAA2BpnG,KAAK8mG,kBAAmB,CAC5D,MAAM/qE,EAAKqrE,EAAwBrrE,GAC7BsrE,EAAsBH,EAASF,wBAAwBjrE,GACzDsrE,IACFF,EAAoBprE,GAAM,CAACqrE,EAAyBC,GAExD,CACA,OAAOF,CACT,EAEF,SAASH,EAAwBpzE,EAAMmI,GACrC,OAAOnI,EAAKoK,cAAc,IAAIjC,0BAChC,CACA,SAASgrE,EAA0BnzE,GACjC,OAAOA,EAAK0I,iBAAiB,6BAC/B,CACA,MAAMgrE,EACJ,WAAA1yE,CAAY++B,EAAUiB,GACpB50D,KAAKm2D,SAAU,EACfn2D,KAAKunG,eAAiB,KACpBvnG,KAAK40D,YAAY7oB,oBAAoB,SAAU/rC,KAAKwnG,eAAe,GACnExnG,KAAK40D,YAAYj3B,iBAAiB,SAAU39B,KAAKwnG,eAAe,EAAM,EAExExnG,KAAKwnG,cAAgB7uG,IACnB,IAAKA,EAAMw9C,iBAAkB,CAC3B,MAAMy/C,EAAOj9F,EAAMQ,kBAAkB0gG,gBAAkBlhG,EAAMQ,YAASI,EAChEmgG,EAAY/gG,EAAM+gG,gBAAangG,EACjCq8F,GAuBZ,SAAwCA,EAAM8D,GAC5C,MAAMzxD,GAAwB,OAAdyxD,QAAoC,IAAdA,OAAuB,EAASA,EAAU3lE,aAAa,gBAAkB6hE,EAAK7hE,aAAa,UACjI,MAAiB,UAAVkU,CACT,CA1BoBw/D,CAA+B7R,EAAM8D,IA2BzD,SAAuC9D,EAAM8D,GAC3C,IAAmB,OAAdA,QAAoC,IAAdA,OAAuB,EAASA,EAAUh/B,aAAa,gBAAkBk7B,EAAKl7B,aAAa,UAAW,CAC/H,MAAMvhE,GAAwB,OAAdugG,QAAoC,IAAdA,OAAuB,EAASA,EAAU3lE,aAAa,gBAAkB6hE,EAAKz8F,OACpH,IAAK,MAAMg+D,KAAWn/D,SAAS6lC,kBAAkB1kC,GAC/C,GAAIg+D,aAAmBuwC,kBAAmB,OAAO,EAEnD,OAAO,CACT,CACE,OAAO,CAEX,CArCuEC,CAA8B/R,EAAM8D,IAAc15F,KAAK2zD,SAASi0C,eAAehS,EAAM8D,KAClJ/gG,EAAM46C,iBACN56C,EAAM26C,2BACNtzC,KAAK2zD,SAASk0C,cAAcjS,EAAM8D,GAEtC,GAEF15F,KAAK2zD,SAAWA,EAChB3zD,KAAK40D,YAAcA,CACrB,CACA,KAAAz0B,GACOngC,KAAKm2D,UACRn2D,KAAK40D,YAAYj3B,iBAAiB,SAAU39B,KAAKunG,gBAAgB,GACjEvnG,KAAKm2D,SAAU,EAEnB,CACA,IAAA7nB,GACMtuC,KAAKm2D,UACPn2D,KAAK40D,YAAY7oB,oBAAoB,SAAU/rC,KAAKunG,gBAAgB,GACpEvnG,KAAKm2D,SAAU,EAEnB,EAiBF,MAAM2xC,EACJ,WAAAlzE,CAAY++B,EAAUwD,GACpBn3D,KAAK+nG,qBAAuBrH,MAC5B1gG,KAAKgoG,2BAA6BtH,MAClC1gG,KAAK2zD,SAAWA,EAChB3zD,KAAKm3D,QAAUA,CACjB,CACA,cAAA8wC,CAAe/gF,GACb,MAAMiwC,EAAUn3D,KAAKknG,SAASN,oBAAoB1/E,GAC9CiwC,GACFn3D,KAAKkoG,gBAAgB/wC,GACrBn3D,KAAKmoG,aAAahxC,IAElBn3D,KAAKooG,iBAAiB,CACpB36F,EAAG,EACH/F,EAAG,GAGT,CACA,0BAAA2gG,CAA2BpnE,GACzBjhC,KAAKioG,eAAe9L,EAAUl7D,GAChC,CACA,eAAAinE,CAAgB/wC,GACdA,EAAQmxC,gBACV,CACA,YAAAH,CAAahxC,GACPA,aAAmBkiC,cACjBliC,EAAQuD,aAAa,YACvBvD,EAAQh2B,SAERg2B,EAAQ9+D,aAAa,WAAY,MACjC8+D,EAAQh2B,QACRg2B,EAAQ36B,gBAAgB,aAG9B,CACA,gBAAA4rE,CAAiBG,GACf,IAAI96F,EAAI86F,EAAM96F,EACZ/F,EAAI6gG,EAAM7gG,EACZ1H,KAAKwoG,WAAWn1C,SAAS5lD,EAAG/F,EAC9B,CACA,WAAA+gG,GACEzoG,KAAKooG,iBAAiB,CACpB36F,EAAG,EACH/F,EAAG,GAEP,CACA,cAAI8gG,GACF,OAAOltG,MACT,CACA,YAAMotG,CAAOC,GACX,MAAM7M,EAAY6M,EAAS7M,UACzB8M,EAAeD,EAASC,aACxB1B,EAAWyB,EAASE,YACtB,GAAID,EACF,IACE5oG,KAAK8oG,cAAgB,IAAInxG,SAAQC,GAAWoI,KAAK+nG,qBAAuBnwG,IACxEoI,KAAK2oG,SAAWA,QACV3oG,KAAK+oG,wBAAwBJ,GACnC,MAAMK,EAAqB,IAAIrxG,SAAQC,GAAWoI,KAAKgoG,2BAA6BpwG,IAC9Eg+B,EAAU,CACdysE,OAAQriG,KAAKgoG,2BACbU,OAAQ1oG,KAAK2oG,SAASM,eAEAjpG,KAAK2zD,SAASu1C,sBAAsBhC,EAAUtxE,UAC1CozE,QACtBhpG,KAAKmpG,eAAeR,GAC1B3oG,KAAK2zD,SAASy1C,qBAAqBlC,EAAUpL,GAC7C97F,KAAK2zD,SAAS01C,0BAA0BrpG,KAAKm3D,SAC7Cn3D,KAAKspG,wBAAwBX,EAC/B,CAAE,eACO3oG,KAAK2oG,SACZ3oG,KAAK+nG,0BAAqBxuG,UACnByG,KAAK8oG,aACd,MAEA9oG,KAAKupG,WAAWZ,EAASa,aAE7B,CACA,UAAAD,CAAWE,GACTzpG,KAAK2zD,SAAS+1C,gBAAgBD,EAChC,CACA,6BAAMV,CAAwBJ,GAC5B3oG,KAAK2pG,cAAchB,EAAS7M,iBACtB6M,EAASiB,iBACjB,CACA,aAAAD,CAAc7N,GACRA,EACF97F,KAAKm3D,QAAQ9+D,aAAa,qBAAsB,IAEhD2H,KAAKm3D,QAAQ36B,gBAAgB,qBAEjC,CACA,oBAAM2sE,CAAeR,SACbA,EAASD,QACjB,CACA,uBAAAY,CAAwBX,GACtBA,EAASkB,iBACX,EAEF,MAAMC,UAAkBhC,EACtB,OAAAiC,GACE/pG,KAAKm3D,QAAQ94B,UAAY,4DAC3B,CACA,YAAI6oE,GACF,OAAO,IAAIR,EAAS1mG,KAAKm3D,QAC3B,EAEF,MAAM6yC,EACJ,WAAAp1E,CAAY++B,EAAUwD,GACpBn3D,KAAKiqG,aAAetxG,IACdqH,KAAKkqG,sBAAsBvxG,EAAMQ,QACnC6G,KAAKg+E,WAAarlF,SAEXqH,KAAKg+E,UACd,EAEFh+E,KAAKmqG,YAAcxxG,IACbqH,KAAKg+E,YAAch+E,KAAKkqG,sBAAsBvxG,EAAMQ,SAAWR,EAAMQ,kBAAkB8+D,SACrFj4D,KAAK2zD,SAASy2C,yBAAyBzxG,EAAMQ,OAAQR,EAAMi+C,OAAOoV,IAAKrzD,EAAMi+C,OAAOlB,iBACtF11C,KAAKg+E,WAAWzqC,iBAChB56C,EAAM46C,iBACNvzC,KAAK2zD,SAAS02C,qBAAqB1xG,EAAMQ,OAAQR,EAAMi+C,OAAOoV,IAAKrzD,EAAMi+C,OAAOlB,uBAG7E11C,KAAKg+E,UAAU,EAExBh+E,KAAKsqG,UAAYC,WACRvqG,KAAKg+E,UAAU,EAExBh+E,KAAK2zD,SAAWA,EAChB3zD,KAAKm3D,QAAUA,CACjB,CACA,KAAAh3B,GACEngC,KAAKm3D,QAAQx5B,iBAAiB,QAAS39B,KAAKiqG,cAC5CjyG,SAAS2lC,iBAAiB,cAAe39B,KAAKmqG,aAC9CnyG,SAAS2lC,iBAAiB,qBAAsB39B,KAAKsqG,UACvD,CACA,IAAAh8D,GACEtuC,KAAKm3D,QAAQprB,oBAAoB,QAAS/rC,KAAKiqG,cAC/CjyG,SAAS+zC,oBAAoB,cAAe/rC,KAAKmqG,aACjDnyG,SAAS+zC,oBAAoB,qBAAsB/rC,KAAKsqG,UAC1D,CACA,qBAAAJ,CAAsB/wG,GACpB,MAAMg+D,EAAUh+D,aAAkB8+D,QAAU9+D,EAASA,aAAkBghE,KAAOhhE,EAAO+mE,cAAgB,KACrG,OAAO/I,GAAWA,EAAQpwB,QAAQ,sBAAwB/mC,KAAKm3D,OACjE,EAEF,MAAMqzC,EACJ,WAAA51E,CAAY++B,EAAUiB,GACpB50D,KAAKm2D,SAAU,EACfn2D,KAAK+5F,cAAgB,KACnB/5F,KAAK40D,YAAY7oB,oBAAoB,QAAS/rC,KAAKiqG,cAAc,GACjEjqG,KAAK40D,YAAYj3B,iBAAiB,QAAS39B,KAAKiqG,cAAc,EAAM,EAEtEjqG,KAAKiqG,aAAetxG,IAClB,GAAIA,aAAiB8xG,YAAczqG,KAAK0qG,wBAAwB/xG,GAAQ,CACtE,MAAMQ,EAASR,EAAMgyG,cAAgBhyG,EAAMgyG,eAAe,IAAMhyG,EAAMQ,OAChE49F,EAAO/2F,KAAK4qG,wBAAwBzxG,GAC1C,GAAI49F,GAkCZ,SAA6B7vE,GAC3B,GAAIA,EAAOwzC,aAAa,UAAW,CACjC,IAAK,MAAMvD,KAAWn/D,SAAS6lC,kBAAkB3W,EAAO/tB,QACtD,GAAIg+D,aAAmBuwC,kBAAmB,OAAO,EAEnD,OAAO,CACT,CACE,OAAO,CAEX,CA3CoBmD,CAAoB9T,GAAO,CACrC,MAAM91D,EAAWjhC,KAAK8qG,mBAAmB/T,GACrC/2F,KAAK2zD,SAASo3C,yBAAyBhU,EAAM91D,EAAUtoC,KACzDA,EAAM46C,iBACNvzC,KAAK2zD,SAASq3C,uBAAuBjU,EAAM91D,GAE/C,CACF,GAEFjhC,KAAK2zD,SAAWA,EAChB3zD,KAAK40D,YAAcA,CACrB,CACA,KAAAz0B,GACOngC,KAAKm2D,UACRn2D,KAAK40D,YAAYj3B,iBAAiB,QAAS39B,KAAK+5F,eAAe,GAC/D/5F,KAAKm2D,SAAU,EAEnB,CACA,IAAA7nB,GACMtuC,KAAKm2D,UACPn2D,KAAK40D,YAAY7oB,oBAAoB,QAAS/rC,KAAK+5F,eAAe,GAClE/5F,KAAKm2D,SAAU,EAEnB,CACA,uBAAAu0C,CAAwB/xG,GACtB,QAASA,EAAMQ,QAAUR,EAAMQ,OAAO8xG,mBAAqBtyG,EAAMw9C,kBAAoBx9C,EAAMs/C,MAAQ,GAAKt/C,EAAM49C,QAAU59C,EAAMg+C,SAAWh+C,EAAMm+C,SAAWn+C,EAAMs+C,SAClK,CACA,uBAAA2zD,CAAwBzxG,GACtB,OAAOgnG,EAAuBhnG,EAAQ,2CACxC,CACA,kBAAA2xG,CAAmB/T,GACjB,OAAOgF,EAAUhF,EAAKhjE,aAAa,SAAW,GAChD,EAYF,MAAMm3E,EACJ,WAAAt2E,CAAY++B,EAAUwD,GACpBn3D,KAAK2zD,SAAWA,EAChB3zD,KAAKmrG,gBAAkB,IAAIX,EAAkBxqG,KAAMm3D,EACrD,CACA,KAAAh3B,GACEngC,KAAKmrG,gBAAgBhrE,OACvB,CACA,IAAAmO,GACEtuC,KAAKmrG,gBAAgB78D,MACvB,CACA,wBAAAy8D,CAAyBhU,EAAM91D,EAAUyU,GACvC,OAAO11C,KAAK2zD,SAASy3C,6BAA6BrU,EAAM91D,EAAUyU,IAAkBqhD,EAAKr8B,aAAa,oBACxG,CACA,sBAAAswC,CAAuBjU,EAAM91D,GAC3B,MAAM20D,EAAO59F,SAASC,cAAc,QAEpC,IAAK,MAAMozG,KAASpqE,EAAS2/D,aAAc,CACzC,IAAI0K,EAAQ5S,EAAe2S,EAAO,GAClC,MAAMhyG,EAAOiyG,EAAM,GACb/wG,EAAQ+wG,EAAM,GACpB1V,EAAKp7C,OAAO/jD,OAAO46B,OAAOr5B,SAASC,cAAc,SAAU,CACzDgB,KANS,SAOTI,OACAkB,UAEJ,CACA,MAAMs9D,EAASphE,OAAO46B,OAAO4P,EAAU,CACrC8iE,OAAQ,KAEVnO,EAAKv9F,aAAa,aAAc,QAChCu9F,EAAKv9F,aAAa,SAAUw/D,EAAOt2B,MACnCq0D,EAAKv9F,aAAa,SAAU,IAC5B,MAAM4vC,EAAS8uD,EAAKhjE,aAAa,qBAC7BkU,GAAQ2tD,EAAKv9F,aAAa,SAAU4vC,GACxC,MAAMsjE,EAAaxU,EAAKhjE,aAAa,oBACjCw3E,GAAY3V,EAAKv9F,aAAa,mBAAoBkzG,GACtD,MAAMC,EAAc1L,EAAe/I,GAC/ByU,GAAa5V,EAAKv9F,aAAa,oBAAqBmzG,GACxD,MAAMC,EAAe1U,EAAKhjE,aAAa,sBACnC03E,GAAc7V,EAAKv9F,aAAa,qBAAsBozG,GACtC1U,EAAKr8B,aAAa,sBACrBk7B,EAAKv9F,aAAa,oBAAqB,IACxD2H,KAAK2zD,SAAS+3C,4BAA4B3U,EAAM91D,EAAU20D,GAC1D59F,SAASg4C,KAAKt2C,YAAYk8F,GAC1BA,EAAKj4D,iBAAiB,oBAAoB,IAAMi4D,EAAK1sD,UAAU,CAC7DF,MAAM,IAER0a,uBAAsB,IAAMkyC,EAAK6D,iBACnC,EAEF,MAAMkS,EACJ,wCAAaC,CAA4Bj4C,EAAUwzC,EAAqBnrG,GACtE,MAAM6vG,EAAQ,IAAI7rG,KAAK2zD,EAAUwzC,GACjC0E,EAAMC,cACA9vG,IACN6vG,EAAME,OACR,CACA,WAAAn3E,CAAY++B,EAAUwzC,GACpBnnG,KAAK2zD,SAAWA,EAChB3zD,KAAKmnG,oBAAsBA,CAC7B,CACA,KAAA2E,GACE,IAAK,MAAM/vE,KAAM/7B,KAAKmnG,oBAAqB,CACzC,MAAM6E,EAAwBtT,EAAe14F,KAAKmnG,oBAAoBprE,GAAK,GACzEqrE,EAA0B4E,EAAsB,GAChD3E,EAAsB2E,EAAsB,GAC9ChsG,KAAK2zD,SAASs4C,cAAc7E,EAAyBC,GACrDrnG,KAAKksG,0CAA0C7E,EACjD,CACF,CACA,KAAA0E,GACE,IAAK,MAAMhwE,KAAM/7B,KAAKmnG,oBAAqB,CACzC,MACEC,EAD6B1O,EAAe14F,KAAKmnG,oBAAoBprE,GAAK,GACzB,GACnD/7B,KAAKmsG,wCAAwC/E,GAC7CpnG,KAAKosG,uCAAuChF,GAC5CpnG,KAAK2zD,SAAS04C,aAAajF,EAC7B,CACF,CACA,yCAAA8E,CAA0CI,GACxC,MAAMC,EAkBV,SAA8CD,GAC5C,MAAMn1C,EAAUn/D,SAASC,cAAc,QAGvC,OAFAk/D,EAAQ9+D,aAAa,OAAQ,+BAC7B8+D,EAAQ9+D,aAAa,UAAWi0G,EAAiBvwE,IAC1Co7B,CACT,CAvBwBq1C,CAAqCF,GACzDA,EAAiBzxD,YAAY0xD,EAC/B,CACA,uCAAAJ,CAAwCG,GACtC,MAAMnqF,EAAQmqF,EAAiB37D,WAAU,GACzC27D,EAAiBzxD,YAAY14B,EAC/B,CACA,sCAAAiqF,CAAuCE,GACrC,MAAMC,EAAcvsG,KAAKysG,mBAAmBH,EAAiBvwE,IAC7C,OAAhBwwE,QAAwC,IAAhBA,GAAkCA,EAAY1xD,YAAYyxD,EACpF,CACA,kBAAAG,CAAmB1wE,GACjB,OAAO/7B,KAAK0sG,aAAalxE,MAAK27B,GAAWA,EAAQ3vB,SAAWzL,GAC9D,CACA,gBAAI2wE,GACF,MAAO,IAAI10G,SAASskC,iBAAiB,mDACvC,EAQF,MAAMqwE,EACJ,WAAA/3E,CAAYg4E,EAAiB/D,EAAaI,EAAenN,GACvD,IAAI+Q,IAAa/wG,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,KAAmBA,UAAU,GAChFkE,KAAKohC,cAAgB,KACrBphC,KAAK4sG,gBAAkBA,EACvB5sG,KAAK6oG,YAAcA,EACnB7oG,KAAK87F,UAAYA,EACjB97F,KAAK6sG,WAAaA,EAClB7sG,KAAKipG,cAAgBA,EACrBjpG,KAAKtI,QAAU,IAAIC,SAAQ,CAACC,EAASC,IAAWmI,KAAK8sG,mBAAqB,CACxEl1G,UACAC,WAEJ,CACA,gBAAI+wG,GACF,OAAO,CACT,CACA,gBAAIY,GAEJ,CACA,eAAAI,GAEA,CACA,eAAAC,GACM7pG,KAAK8sG,qBACP9sG,KAAK8sG,mBAAmBl1G,iBACjBoI,KAAK8sG,mBAEhB,CACA,iCAAMlB,CAA4B5vG,SAC1B2vG,EAAMC,4BAA4B5rG,KAAMA,KAAKmnG,oBAAqBnrG,EAC1E,CACA,8BAAA+wG,GACE,MAAM51C,EAAUn3D,KAAKgtG,kBAAkBnG,2BA8B3C,SAA4B1vC,GAC1B,OAAOA,GAAmC,mBAAjBA,EAAQh2B,KACnC,EA/BQ8rE,CAAmB91C,IACrBA,EAAQh2B,OAEZ,CACA,aAAA8qE,CAAc7E,GACRpnG,KAAKohC,eACLgmE,EAAwB1vE,SAAS13B,KAAK4sG,gBAAgBxrE,iBACxDphC,KAAKohC,cAAgBphC,KAAK4sG,gBAAgBxrE,cAE9C,CACA,YAAAirE,CAAajF,GACPA,EAAwB1vE,SAAS13B,KAAKohC,gBAAkBphC,KAAKohC,yBAAyBi4D,cACxFr5F,KAAKohC,cAAcD,QACnBnhC,KAAKohC,cAAgB,KAEzB,CACA,qBAAI4rE,GACF,OAAOhtG,KAAK6oG,YAAYxuC,YAAcr6D,KAAK6oG,YAAc7oG,KAAK4sG,eAChE,CACA,kBAAIM,GACF,OAAOltG,KAAK4sG,gBAAgBz1C,OAC9B,CACA,cAAIg2C,GACF,OAAOntG,KAAK6oG,YAAY1xC,OAC1B,CACA,uBAAIgwC,GACF,OAAOnnG,KAAK4sG,gBAAgB3F,kCAAkCjnG,KAAK6oG,YACrE,EAKF,MAAMuE,UAAsBT,EAC1B,oBAAO1D,CAAciE,EAAgBC,GACnC,IAAItgG,EACJ,MAAMwgG,EAAmBr1G,SAASs1G,cAClCD,EAAiBE,mBAAmBL,GACpCG,EAAiBG,iBACjB,MAAMC,EAAeN,EACfO,EAAoD,QAArC7gG,EAAK4gG,EAAav2E,qBAAkC,IAAPrqB,OAAgB,EAASA,EAAGygG,cAC1FI,IACFA,EAAYH,mBAAmBE,GAC/BP,EAAexzG,YAAYg0G,EAAYC,mBAE3C,CACA,WAAA/4E,CAAY++B,EAAUi5C,EAAiB/D,EAAaI,EAAenN,GAEjElB,MAAMgS,EAAiB/D,EAAaI,EAAenN,IADlChgG,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,KAAmBA,UAAU,IAEhFkE,KAAK2zD,SAAWA,CAClB,CACA,gBAAIi1C,GACF,OAAO,CACT,CACA,YAAMF,SACErK,IACNr+F,KAAK4rG,6BAA4B,KAC/B5rG,KAAK4tG,kBAAkB,IAEzB5tG,KAAK6tG,4BACCxP,IACNr+F,KAAK+sG,uCACC1O,IACNr+F,KAAK8tG,wBACP,CACA,gBAAAF,GACE5tG,KAAK2zD,SAASo6C,gBAAgB/tG,KAAKktG,eAAgBltG,KAAKmtG,YACxDntG,KAAKipG,cAAcjpG,KAAKktG,eAAgBltG,KAAKmtG,WAC/C,CACA,mBAAAU,GACE,GAAI7tG,KAAKktG,eAAetR,YAAc57F,KAAKmtG,WAAWvR,WAAY,CAChE,MAAMzkC,EAAUn3D,KAAKktG,eAAel9C,kBAC9Bg+C,GAsBuBzzG,EAtBWyF,KAAKktG,eAAen5E,aAAa,yBAsBrC8c,EAtB+D,MAuB1F,OAATt2C,GAA2B,SAATA,GAA6B,UAATA,GAA8B,WAATA,EACtDA,EAEAs2C,GAzBCm6C,EA4BZ,SAA4BzwF,EAAOs2C,GACjC,MAAa,QAATt2C,GAA4B,UAATA,EACdA,EAEAs2C,CAEX,CAlCuBo9D,CAAmBjuG,KAAKktG,eAAen5E,aAAa,4BAA6B,QAClG,GAAIojC,EAKF,OAJAA,EAAQmxC,eAAe,CACrB0F,QACAhjB,cAEK,CAEX,CAaJ,IAAmCzwF,EAAOs2C,EAZtC,OAAO,CACT,CACA,sBAAAi9D,GACE,IAAK,MAAM7K,KAAsBjjG,KAAKkuG,kBAAmB,CACvD,MAAMC,EAAyBtQ,EAAsBoF,GACrDA,EAAmBpoD,YAAYszD,EACjC,CACF,CACA,qBAAID,GACF,OAAOluG,KAAKktG,eAAe5wE,iBAAiB,SAC9C,EAgBF,MAAM8xE,GACJ,qBAAWC,GACT,OAAO9P,CAAQ;;;;;;;;;;kBAUD6P,GAAYE;oBACVF,GAAYE,kBAAoB,OAAOF,GAAYE,kBAAoB;;;KAIzF,CACA,WAAA15E,GACE50B,KAAKuuG,QAAS,EACdvuG,KAAKzF,MAAQ,EACbyF,KAAKowD,SAAU,EACfpwD,KAAKwuG,QAAU,KACbxuG,KAAKyuG,SAASzuG,KAAKzF,MAAQ2J,KAAKgyB,SAAW,IAAI,EAEjDl2B,KAAK0uG,kBAAoB1uG,KAAK2uG,0BAC9B3uG,KAAK4uG,gBAAkB5uG,KAAK6uG,wBAC5B7uG,KAAK8uG,2BACL9uG,KAAKyuG,SAAS,EAChB,CACA,IAAAv+D,GACOlwC,KAAKowD,UACRpwD,KAAKowD,SAAU,EACfpwD,KAAK+uG,yBACL/uG,KAAKgvG,iBAET,CACA,IAAA7+D,GACMnwC,KAAKowD,UAAYpwD,KAAKuuG,SACxBvuG,KAAKuuG,QAAS,EACdvuG,KAAKivG,qBAAoB,KACvBjvG,KAAKkvG,2BACLlvG,KAAKmvG,gBACLnvG,KAAKowD,SAAU,EACfpwD,KAAKuuG,QAAS,CAAK,IAGzB,CACA,QAAAE,CAASl0G,GACPyF,KAAKzF,MAAQA,EACbyF,KAAK44D,SACP,CACA,wBAAAk2C,GACE92G,SAASyB,KAAKihD,aAAa16C,KAAK0uG,kBAAmB12G,SAASyB,KAAK6mC,WACnE,CACA,sBAAAyuE,GACE/uG,KAAK4uG,gBAAgB3/D,MAAM8M,MAAQ,IACnC/7C,KAAK4uG,gBAAgB3/D,MAAMoR,QAAU,IACrCroD,SAASy+B,gBAAgBikB,aAAa16C,KAAK4uG,gBAAiB52G,SAASg4C,MACrEhwC,KAAK44D,SACP,CACA,mBAAAq2C,CAAoBjzG,GAClBgE,KAAK4uG,gBAAgB3/D,MAAMoR,QAAU,IACrC7mD,WAAWwC,EAA0C,IAAhCoyG,GAAYE,kBACnC,CACA,wBAAAY,GACMlvG,KAAK4uG,gBAAgB56E,YACvBh8B,SAASy+B,gBAAgBxC,YAAYj0B,KAAK4uG,gBAE9C,CACA,cAAAI,GACOhvG,KAAKovG,kBACRpvG,KAAKovG,gBAAkB9zG,OAAO64E,YAAYn0E,KAAKwuG,QAASJ,GAAYE,mBAExE,CACA,aAAAa,GACE7zG,OAAO24E,cAAcj0E,KAAKovG,wBACnBpvG,KAAKovG,eACd,CACA,OAAAx2C,GACElV,uBAAsB,KACpB1jD,KAAK4uG,gBAAgB3/D,MAAM8M,MAAW,GAAkB,GAAb/7C,KAAKzF,MAAb,GAA0B,GAEjE,CACA,uBAAAo0G,GACE,MAAMx3C,EAAUn/D,SAASC,cAAc,SAMvC,OALAk/D,EAAQl+D,KAAO,WACfk+D,EAAQ3gC,YAAc43E,GAAYC,WAC9BruG,KAAK+zF,WACP58B,EAAQ3jC,MAAQxzB,KAAK+zF,UAEhB58B,CACT,CACA,qBAAA03C,GACE,MAAM13C,EAAUn/D,SAASC,cAAc,OAEvC,OADAk/D,EAAQ/4B,UAAY,qBACb+4B,CACT,CACA,YAAI48B,GACF,OAAOgK,EAAe,YACxB,EAEFqQ,GAAYE,kBAAoB,IAChC,MAAMe,WAAqB3I,EACzB,WAAA9xE,GACEgmE,SAAS9+F,WACTkE,KAAKsvG,mBAAqBtvG,KAAKymC,SAASjhB,QAAO2xC,IA0EnD,SAA2BA,GACzB,MAAME,EAAUF,EAAQgoC,UACxB,MAAkB,YAAX9nC,CACT,CA7E+Dk4C,CAAkBp4C,KAAUl6D,KAAIk6D,GAsF/F,SAA6BA,GACvBA,EAAQuD,aAAa,UACvBvD,EAAQ9+D,aAAa,QAAS,IAEhC,OAAO8+D,CACT,CA3F0Gq4C,CAAoBr4C,KAAUb,QAAO,CAACv7C,EAAQo8C,KAClJ,MAAMs4C,EAAYt4C,EAAQs4C,UACpBC,EAAUD,KAAa10F,EAASA,EAAO00F,GAAa,CACxDx2G,KAAM02G,GAAYx4C,GAClBy4C,QAASC,GAAiB14C,GAC1B14B,SAAU,IAEZ,OAAOhoC,OAAO46B,OAAO56B,OAAO46B,OAAO,CAAC,EAAGtW,GAAS,CAC9C,CAAC00F,GAAYh5G,OAAO46B,OAAO56B,OAAO46B,OAAO,CAAC,EAAGq+E,GAAU,CACrDjxE,SAAU,IAAIixE,EAAQjxE,SAAU04B,MAElC,GACD,CAAC,EACN,CACA,2BAAI24C,GACF,OAAOr5G,OAAOwL,KAAKjC,KAAKsvG,oBAAoB9pF,QAAOiqF,GAAazvG,KAAKsvG,mBAAmBG,GAAWG,UAAS7tG,KAAK,GACnH,CACA,8BAAAguG,CAA+B7I,GAC7B,OAAOlnG,KAAKgwG,qCAAqC,SAAU9I,EAC7D,CACA,kCAAA+I,CAAmC/I,GACjC,OAAOlnG,KAAKgwG,qCAAqC,aAAc9I,EACjE,CACA,oCAAA8I,CAAqCE,EAAahJ,GAChD,OAAOzwG,OAAOwL,KAAKjC,KAAKsvG,oBAAoB9pF,QAAOiqF,KAAeA,KAAavI,EAASoI,sBAAqBryG,KAAIwyG,GAAazvG,KAAKsvG,mBAAmBG,KAAYjqF,QAAO2qF,GAC5JA,EAAOl3G,MACHi3G,IACdjzG,KAAImzG,GACiB1X,EAAe0X,EAAO3xE,SAAU,GAC1B,IAGhC,CACA,uBAAI4xE,GACF,OAAO55G,OAAOwL,KAAKjC,KAAKsvG,oBAAoBh5C,QAAO,CAACv7C,EAAQ00F,KAC1D,MAAMa,EAAwBtwG,KAAKsvG,mBAAmBG,GACpDx2G,EAAOq3G,EAAsBr3G,KAC7B22G,EAAUU,EAAsBV,QAChCnxE,EAAW6xE,EAAsB7xE,SACnC,OAAY,MAARxlC,GAAiB22G,EAEVnxE,EAASjoC,OAAS,EACpB,IAAIukB,KAAW0jB,EAASjjC,MAAM,IAE9Buf,EAJA,IAAIA,KAAW0jB,EAKxB,GACC,GACL,CACA,YAAA8xE,CAAal3G,GACX,MAAM89D,EAAUn3D,KAAKwwG,sBAAsBn3G,GAC3C,OAAO89D,EAAUA,EAAQpjC,aAAa,WAAa,IACrD,CACA,qBAAAy8E,CAAsBn3G,GACpB,OAAO5C,OAAOwL,KAAKjC,KAAKsvG,oBAAoBh5C,QAAO,CAACv7C,EAAQ00F,KAC1D,MACEt4C,EAD6BuhC,EAAe14F,KAAKsvG,mBAAmBG,GAAWhxE,SAAU,GACxD,GACnC,OA0BN,SAAsC04B,EAAS99D,GAC7C,MAAMg+D,EAAUF,EAAQgoC,UACxB,MAAkB,QAAX9nC,GAAqBF,EAAQpjC,aAAa,SAAW16B,CAC9D,CA7Bao3G,CAA6Bt5C,EAAS99D,GAAQ89D,EAAUp8C,CAAM,QACpExhB,EACL,EAEF,SAASo2G,GAAYx4C,GACnB,OASF,SAAyBA,GACvB,MAAME,EAAUF,EAAQgoC,UACxB,MAAkB,UAAX9nC,CACT,CAZMq5C,CAAgBv5C,GACX,SAgBX,SAA6BA,GAC3B,MAAME,EAAUF,EAAQgoC,UACxB,MAAkB,SAAX9nC,GAAiC,QAAXA,GAAoD,cAA/BF,EAAQpjC,aAAa,MACzE,CAlBa48E,CAAoBx5C,GACtB,kBADF,CAGT,CACA,SAAS04C,GAAiB14C,GACxB,MAAmD,UAA5CA,EAAQpjC,aAAa,mBAC9B,CAuBA,MAAM68E,WAAqBlK,EACzB,qBAAOmK,GACL,IAAI/2D,EAAOh+C,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,GAC/E,OAAOkE,KAAK8wG,aAAaxS,EAAkBxkD,GAC7C,CACA,kBAAOi3D,CAAY55C,GACjB,OAAOn3D,KAAK8wG,aAAa35C,EAAQjgC,cACnC,CACA,mBAAO45E,CAAaE,GAClB,IAAIv3G,EAAOu3G,EAAOv3G,KAElB,OAAO,IAAIuG,KADFgxG,EAAOhhE,KACM,IAAIq/D,GAAa51G,GACzC,CACA,WAAAm7B,CAAYuiC,EAAS85C,GACnBrW,MAAMzjC,GACNn3D,KAAKixG,aAAeA,CACtB,CACA,KAAA9uF,GACE,MAAM+uF,EAAgBlxG,KAAKm3D,QAAQxmB,WAAU,GACvCwgE,EAAiBnxG,KAAKm3D,QAAQ76B,iBAAiB,UAC/C80E,EAAuBF,EAAc50E,iBAAiB,UAC5D,IAAK,MAAM+0E,KAAUF,EAAetQ,UAAW,CAC7C,IAAIyQ,EAAS5Y,EAAe2Y,EAAQ,GACpC,MAAMrjF,EAAQsjF,EAAO,GACf3uG,EAAS2uG,EAAO,GAChBnvF,EAAQivF,EAAqBpjF,GACnC,IAAK,MAAM8iB,KAAU3uB,EAAMovF,gBAAiBzgE,EAAOnP,UAAW,EAC9D,IAAK,MAAMmP,KAAUnuC,EAAO4uG,gBAAiBpvF,EAAMyT,QAAQkb,EAAO9iB,OAAO2T,UAAW,CACtF,CACA,IAAK,MAAM6vE,KAAuBN,EAAc50E,iBAAiB,0BAC/Dk1E,EAAoBj3G,MAAQ,GAE9B,OAAO,IAAIq2G,GAAaM,EAAelxG,KAAKixG,aAC9C,CACA,eAAIQ,GACF,OAAOzxG,KAAKixG,aAAa95C,OAC3B,CACA,gBAAI8lC,GACF,IAAIpwF,EAEJ,OAAOkvF,EADyC,QAAlClvF,EAAK7M,KAAK0xG,WAAW,eAA4B,IAAP7kG,EAAgBA,EAAK,IAE/E,CACA,qBAAI8kG,GACF,OAAO3xG,KAAK0xG,WAAW,gBACzB,CACA,iBAAIE,GACF,MAAiC,cAA1B5xG,KAAK2xG,iBACd,CACA,eAAIE,GACF,MAAiC,YAA1B7xG,KAAK2xG,iBACd,CACA,eAAIG,GACF,MAA2C,UAApC9xG,KAAK0xG,WAAW,gBACzB,CACA,UAAAA,CAAWr4G,GACT,OAAO2G,KAAKixG,aAAaV,aAAa,SAASl3G,IACjD,GAGF,SAAWihG,GACTA,EAAyB,WAAI,aAC7BA,EAA2B,aAAI,eAC/BA,EAAyB,WAAI,aAC7BA,EAAuB,SAAI,UAC5B,CALD,CAKGA,IAAiBA,EAAe,CAAC,IAEpC,SAAWC,GACTA,EAAwB,YAAI,cAC5BA,EAAoB,QAAI,UACxBA,EAAqB,SAAI,WACzBA,EAAmB,OAAI,SACvBA,EAAsB,UAAI,WAC3B,CAND,CAMGA,IAAeA,EAAa,CAAC,IAChC,MAAMwX,GAAiB,CACrBl6C,OAAQ,UACRm6C,gBAAgB,EAChBC,oBAAqB,OACrBpF,YAAY,EACZqF,eAAe,EACfC,qBAAqB,EACrBC,uBAAuB,GAEzB,IAAIC,GAwuBAC,IAvuBJ,SAAWD,GACTA,EAAiBA,EAAiC,eAAI,GAAK,iBAC3DA,EAAiBA,EAAiC,gBAAK,GAAK,iBAC5DA,EAAiBA,EAAsC,qBAAK,GAAK,qBAClE,CAJD,CAIGA,KAAqBA,GAAmB,CAAC,IAC5C,MAAME,GACJ,WAAA39E,CAAY++B,EAAU1yB,EAAUuxE,GAC9B,IAAI58E,EAAU95B,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFkE,KAAKq5B,WAAawlE,IAClB7+F,KAAKyyG,cAAgB,CAAC,EACtBzyG,KAAK0yG,kBAAmB,EACxB1yG,KAAKgyG,gBAAiB,EACtBhyG,KAAK2yG,UAAW,EAChB3yG,KAAKmyG,qBAAsB,EAC3BnyG,KAAKoyG,uBAAwB,EAC7BpyG,KAAK4yG,gBAAiB,EACtB5yG,KAAKwpC,MAAQ+wD,EAAWkJ,YACxBzjG,KAAK2zD,SAAWA,EAChB3zD,KAAKihC,SAAWA,EAChBjhC,KAAKwyG,sBAAwBA,GAAyB3T,IACtD,MAAMgU,EAAiBp8G,OAAO46B,OAAO56B,OAAO46B,OAAO,CAAC,EAAG0gF,IAAiBn8E,GACtEiiC,EAASg7C,EAAeh7C,OACxBm6C,EAAiBa,EAAeb,eAChC/P,EAAW4Q,EAAe5Q,SAC1BiF,EAAW2L,EAAe3L,SAC1B4L,EAAeD,EAAeC,aAC9B7jD,EAAW4jD,EAAe5jD,SAC1BgjD,EAAsBY,EAAeZ,oBACrCpF,EAAagG,EAAehG,WAC5BqF,EAAgBW,EAAeX,cAC/BC,EAAsBU,EAAeV,oBACrCC,EAAwBS,EAAeT,sBACzCpyG,KAAK63D,OAASA,EACd73D,KAAKgyG,eAAiBA,EACtBhyG,KAAKiiG,SAAWA,EAChBjiG,KAAKknG,SAAWA,EAChBlnG,KAAK8yG,aAAeA,EACpB9yG,KAAKivD,SAAWA,EAChBjvD,KAAK+yG,WAAa/yG,KAAK2zD,SAASq/C,6BAA6BhzG,KAAKihC,SAAUjhC,KAAK63D,QACjF73D,KAAKiyG,oBAAsBA,EAC3BjyG,KAAK6sG,WAAaA,EAClB7sG,KAAKkyG,cAAgBA,EACrBlyG,KAAK2yG,UAAY9F,EACjB7sG,KAAKmyG,oBAAsBA,EAC3BnyG,KAAKoyG,sBAAwBA,CAC/B,CACA,WAAIa,GACF,OAAOjzG,KAAK2zD,SAASs/C,OACvB,CACA,QAAI/7D,GACF,OAAOl3C,KAAK2zD,SAASzc,IACvB,CACA,WAAIyoD,GACF,OAAO3/F,KAAK2zD,SAASgsC,OACvB,CACA,mBAAIuT,GACF,OAAOlzG,KAAK2/F,QAAQwT,gCAAgCnzG,KAAKwyG,sBAC3D,CACA,UAAIY,GACF,OAAOpzG,KAAK+yG,UACd,CACA,KAAA5yE,GACMngC,KAAKwpC,OAAS+wD,EAAWkJ,cAC3BzjG,KAAKqzG,mBAAmB/Y,EAAagZ,YACrCtzG,KAAKwpC,MAAQ+wD,EAAWpkC,QACxBn2D,KAAKizG,QAAQM,aAAavzG,MAC1BA,KAAK2zD,SAAS4/C,aAAavzG,MAE/B,CACA,MAAA8gG,GACM9gG,KAAKwpC,OAAS+wD,EAAWpkC,UACvBn2D,KAAK1G,SACP0G,KAAK1G,QAAQwnG,SAEf9gG,KAAKwzG,eACLxzG,KAAKwpC,MAAQ+wD,EAAWkZ,SAE5B,CACA,QAAA1uD,GACM/kD,KAAKwpC,OAAS+wD,EAAWpkC,UAC3Bn2D,KAAKqzG,mBAAmB/Y,EAAaoZ,UACrC1zG,KAAKwpC,MAAQ+wD,EAAWzuD,UACxB9rC,KAAK2zG,iBACA3zG,KAAK0yG,mBACR1yG,KAAKizG,QAAQW,eAAe5zG,MAC5BA,KAAK2zD,SAASigD,eAAe5zG,OAGnC,CACA,IAAAkoC,GACMloC,KAAKwpC,OAAS+wD,EAAWpkC,UAC3Bn2D,KAAKwpC,MAAQ+wD,EAAWgD,OACxBv9F,KAAKizG,QAAQY,YAAY7zG,MAE7B,CACA,aAAA8zG,GACE,IAAIjnG,EACJ,IAAK7M,KAAKgyG,gBAAkBhyG,KAAKkyG,cAAe,CAC9C,MACMjqE,EAASy3D,EADU1/F,KAAKihC,SAASM,QAAmC,QAAxB10B,EAAK7M,KAAKiiG,gBAA6B,IAAPp1F,OAAgB,EAASA,EAAG00B,MAAQ,UAAYvhC,KAAK63D,QAEvI73D,KAAK2/F,QAAQziB,OAAOj1C,EAAQjoC,KAAKihC,SAAUjhC,KAAKwyG,uBAChDxyG,KAAKgyG,gBAAiB,CACxB,CACF,CACA,YAAA+B,GACM/zG,KAAKg0G,uBACPh0G,KAAKi0G,kBACIj0G,KAAKk0G,uBAAyBl0G,KAAK1G,UAC5C0G,KAAK1G,QAAU,IAAI+mG,EAAargG,KAAMm6F,EAAYhgG,IAAK6F,KAAKihC,UAC5DjhC,KAAK1G,QAAQynG,UAEjB,CACA,eAAAkT,GACMj0G,KAAKivD,WACPjvD,KAAKm0G,eACLn0G,KAAKo0G,iBACLp0G,KAAKq0G,gBAET,CACA,YAAAF,GACEn0G,KAAKqzG,mBAAmB/Y,EAAaga,cACrCt0G,KAAKizG,QAAQsB,oBAAoBv0G,KACnC,CACA,cAAAo0G,GACE,IAAInlD,EAAWnzD,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAKkE,KAAKivD,SAExF,GADAjvD,KAAKivD,SAAWA,EACZA,EAAU,CACZ,MAAMxB,EAAawB,EAASxB,WACxB+mD,GAAa/mD,GACfztD,KAAKizG,QAAQwB,sBAAsBz0G,MAEnCA,KAAKizG,QAAQyB,iCAAiC10G,KAAMytD,EAExD,CACF,CACA,aAAA4mD,GACEr0G,KAAKqzG,mBAAmB/Y,EAAaqa,YACrC30G,KAAKizG,QAAQ2B,qBAAqB50G,KACpC,CACA,YAAA60G,GACE,GAAI70G,KAAKivD,SAAU,CACjB,MAAM6lD,EAAiB90G,KAAKivD,SAC1BxB,EAAaqnD,EAAernD,WAC5BmwC,EAAekX,EAAelX,aAChC59F,KAAK0oG,QAAOv8C,UACNnsD,KAAKmyG,qBAAqBnyG,KAAK+0G,gBAC/B/0G,KAAKk3C,KAAK4xD,qBAAqB9oG,KAAKk3C,KAAK4xD,cACzC0L,GAAa/mD,IAA+B,MAAhBmwC,SACxB59F,KAAKk3C,KAAK89D,WAAWpE,GAAaC,eAAejT,IAAe,EAAO59F,KAAK6sG,WAAY7sG,MAC9FA,KAAKi1G,gBACLj1G,KAAKizG,QAAQiC,cAAcl1G,MAC3BA,KAAK+kD,mBAEC/kD,KAAKk3C,KAAKi+D,YAAYvE,GAAaC,eAAejT,GAAe59F,MACvEA,KAAKizG,QAAQiC,cAAcl1G,MAC3BA,KAAKkoC,OACP,GAEJ,CACF,CACA,iBAAAktE,GACE,MAAMlO,EAAWlnG,KAAKk3C,KAAKm+D,6BAA6Br1G,KAAKihC,WAAajhC,KAAKs1G,uBAC/E,GAAIpO,KAAc/K,EAAUn8F,KAAKihC,WAAaimE,EAASP,UAAUxK,EAAUn8F,KAAKihC,cAC3D,WAAfjhC,KAAK63D,QAAuBqvC,EAAS0K,eACvC,OAAO1K,CAGb,CACA,oBAAAoO,GACE,GAAIt1G,KAAK8yG,aACP,OAAOlC,GAAaC,eAAe7wG,KAAK8yG,aAE5C,CACA,iBAAAyC,GACE,OAAmC,MAA5Bv1G,KAAKo1G,mBACd,CACA,kBAAAI,GACE,MAAMtO,EAAWlnG,KAAKo1G,oBACtB,GAAIlO,EAAU,CACZ,MAAMpL,EAAY97F,KAAKk0G,qBACvBl0G,KAAK0oG,QAAOv8C,UACVnsD,KAAK+0G,gBACD/0G,KAAK+yG,WACP/yG,KAAKizG,QAAQiC,cAAcl1G,OAEvBA,KAAKk3C,KAAK4xD,qBAAqB9oG,KAAKk3C,KAAK4xD,oBACvC9oG,KAAKk3C,KAAK89D,WAAW9N,EAAUpL,EAAW97F,KAAK6sG,WAAY7sG,MACjEA,KAAKi1G,gBACLj1G,KAAKizG,QAAQiC,cAAcl1G,MACtB87F,GACH97F,KAAK+kD,WAET,GAEJ,CACF,CACA,cAAA4uD,GACE,IAAI9mG,EACA7M,KAAKy1G,uBAAyBz1G,KAAK0yG,mBAA8C,QAAxB7lG,EAAK7M,KAAKivD,gBAA6B,IAAPpiD,OAAgB,EAASA,EAAG6wF,cACvH19F,KAAKizG,QAAQyC,wBAAwB11G,KAAKy1G,qBAAsB,CAC9D59C,OAAQ,UACR5I,SAAUjvD,KAAKivD,SACfkjD,qBAAqB,EACrBtF,YAAY,IAEd7sG,KAAK0yG,kBAAmB,EAE5B,CACA,kBAAAiD,GACM31G,KAAK+yG,YACP/yG,KAAK0oG,QAAOv8C,UACVnsD,KAAK+0G,gBACL/0G,KAAKi1G,gBACLj1G,KAAK8zG,gBACL9zG,KAAKizG,QAAQiC,cAAcl1G,KAAK,GAGtC,CACA,cAAAihG,CAAe3nG,GACT0G,KAAKoyG,uBACP94G,EAAQ6oG,mBAAmBW,EAAc12C,YAE7C,CACA,cAAA+0C,GACEnhG,KAAKm0G,cACP,CACA,gCAAA1S,CAAiCgE,EAAUmQ,GAAY,CACvD,kCAAMlU,CAA6BpoG,EAAS21D,GAC1C,MAAM2uC,QAAqB3uC,EAAS2uC,aAC9BF,EAAazuC,EAASyuC,WAC1BjwC,EAAawB,EAASxB,gBACJl0D,GAAhBqkG,EACF59F,KAAKo0G,eAAe,CAClB3mD,WAAY4kD,GAAiBwD,oBAC7BnY,gBAGF19F,KAAKy1G,qBAAuBxmD,EAASyuC,WAAazuC,EAAShuB,cAAW1nC,EACtEyG,KAAKo0G,eAAe,CAClB3mD,WAAYA,EACZmwC,eACAF,eAGN,CACA,+BAAMiE,CAA0BroG,EAAS21D,GACvC,MAAM2uC,QAAqB3uC,EAAS2uC,aAC9BF,EAAazuC,EAASyuC,WAC1BjwC,EAAawB,EAASxB,gBACJl0D,GAAhBqkG,EACF59F,KAAKo0G,eAAe,CAClB3mD,WAAY4kD,GAAiBwD,oBAC7BnY,eAGF19F,KAAKo0G,eAAe,CAClB3mD,WAAYA,EACZmwC,eACAF,cAGN,CACA,cAAA4D,CAAemE,EAAUqQ,GACvB91G,KAAKo0G,eAAe,CAClB3mD,WAAY4kD,GAAiB0D,eAC7BrY,YAAY,GAEhB,CACA,eAAA6D,GACEvhG,KAAKq0G,eACP,CACA,aAAAY,GACOj1G,KAAK2yG,UAAa3yG,KAAKk3C,KAAK8+D,gBACZ,WAAfh2G,KAAK63D,OACP73D,KAAKi2G,4BAA8Bj2G,KAAKioG,kBAAoBjoG,KAAKk3C,KAAKuxD,cAEtEzoG,KAAKioG,kBAAoBjoG,KAAKk3C,KAAKuxD,cAEjCzoG,KAAK+yG,YACP/yG,KAAK2zD,SAASuiD,gCAAgCl2G,KAAKk3C,KAAKi/D,qBAAsBn2G,KAAKihC,UAErFjhC,KAAK2yG,UAAW,EAEpB,CACA,wBAAAsD,GACE,MAAMG,EAAiBp2G,KAAKkzG,gBAAgBkD,eAC5C,GAAIA,EAEF,OADAp2G,KAAKk3C,KAAKkxD,iBAAiBgO,IACpB,CAEX,CACA,cAAAnO,GACE,MAAM/gF,EAASi1E,EAAUn8F,KAAKihC,UAC9B,GAAc,MAAV/Z,EAEF,OADAlnB,KAAKk3C,KAAK+wD,eAAe/gF,IAClB,CAEX,CACA,kBAAAmsF,CAAmBgD,GACjBr2G,KAAKyyG,cAAc4D,IAAU,IAAIr5G,MAAOwC,SAC1C,CACA,gBAAA82G,GACE,OAAO7/G,OAAO46B,OAAO,CAAC,EAAGrxB,KAAKyyG,cAChC,CACA,yBAAA/S,CAA0B7nC,GACxB,OAAQA,GACN,IAAK,UACH,OAAO8nC,QAAQC,aACjB,IAAK,UACL,IAAK,UACH,OAAOD,QAAQE,UAErB,CACA,oBAAAmU,GACE,MAA+B,iBAAjBh0G,KAAKivD,QACrB,CACA,kBAAAilD,GACE,OAAIl0G,KAAK+yG,aAEiB,WAAf/yG,KAAK63D,QACN73D,KAAKu1G,oBAENv1G,KAAK6sG,WAEhB,CACA,aAAAkI,GACO/0G,KAAK4yG,iBACR5yG,KAAKk3C,KAAK69D,cAAc/0G,KAAKknG,UAAU/+D,MAAK++D,GAAYA,GAAYlnG,KAAKiyG,oBAAoB/K,KAC7FlnG,KAAK4yG,gBAAiB,EAE1B,CACA,YAAMlK,CAAO1sG,GACXgE,KAAKwzG,qBACC,IAAI77G,SAAQC,IAChBoI,KAAKm4F,MAAQz0C,uBAAsB,IAAM9rD,KAAU,UAE/CoE,WACCgE,KAAKm4F,KACd,CACA,YAAAqb,GACMxzG,KAAKm4F,QACPoe,qBAAqBv2G,KAAKm4F,cACnBn4F,KAAKm4F,MAEhB,EAEF,SAASqc,GAAa/mD,GACpB,OAAOA,GAAc,KAAOA,EAAa,GAC3C,CACA,MAAM+oD,GACJ,WAAA5hF,CAAY6hF,GACVz2G,KAAK02G,YAAc,IAAItI,GACvBpuG,KAAK22G,gBAAkB,KACrB32G,KAAK02G,YAAYxmE,MAAM,EAEzBlwC,KAAKy2G,QAAUA,CACjB,CACA,uBAAAf,CAAwBz0E,EAAUrL,GAChC51B,KAAKwzE,UAAUojC,WAAW31E,GAAuB,OAAZrL,QAAgC,IAAZA,OAAqB,EAASA,EAAQ48E,wBAA0B3T,IAAQjpE,EACnI,CACA,YAAA29E,CAAasD,GACX72G,KAAKihC,SAAW41E,EAAM51E,SACtB41E,EAAMrB,qBACNqB,EAAM9C,eACN8C,EAAMlB,oBACR,CACA,mBAAApB,CAAoBsC,GAClB72G,KAAK02G,YAAYjI,SAAS,GACtBoI,EAAMtB,qBAAuC,WAAhBsB,EAAMh/C,OACrC73D,KAAK82G,iCAEL92G,KAAK22G,iBAET,CACA,qBAAAlC,CAAsBoC,GACpBA,EAAMhC,cACR,CACA,gCAAAH,CAAiCmC,EAAOppD,GACtC,OAAQA,GACN,KAAK4kD,GAAiB0D,eACtB,KAAK1D,GAAiB0E,eACtB,KAAK1E,GAAiBwD,oBACpB,OAAO71G,KAAKi7F,OAAO,CACjBwO,OAAQ,iBACRn1E,QAAS,CACPm5B,gBAGN,QACE,OAAOopD,EAAMhC,eAEnB,CACA,oBAAAD,CAAqBoC,GACnBh3G,KAAK02G,YAAYjI,SAAS,GAC1BzuG,KAAKi3G,sBACP,CACA,cAAArD,CAAeoD,GAAS,CACxB,eAAAE,CAAgBzN,GACdzpG,KAAKi7F,OAAOwO,EACd,CACA,WAAAoK,CAAYmD,GAAS,CACrB,aAAA9B,CAAc8B,GAAS,CACvB,qBAAAnR,CAAsBsR,GACpBn3G,KAAK02G,YAAYjI,SAAS,GAC1BzuG,KAAKo3G,+BACP,CACA,sBAAA/Q,CAAuB8Q,GACrBn3G,KAAK02G,YAAYjI,SAAS,GAC1BzuG,KAAKq3G,qBACP,CACA,8BAAAP,GACE92G,KAAKs3G,wBAA0Bh8G,OAAO9B,WAAWwG,KAAK22G,gBAAiB32G,KAAKy2G,QAAQc,iBACtF,CACA,oBAAAN,GACEj3G,KAAK02G,YAAYvmE,OACmB,MAAhCnwC,KAAKs3G,0BACPh8G,OAAOxC,aAAakH,KAAKs3G,gCAClBt3G,KAAKs3G,wBAEhB,CACA,6BAAAF,GACqC,MAA/Bp3G,KAAKw3G,yBACPx3G,KAAKw3G,uBAAyBl8G,OAAO9B,WAAWwG,KAAK22G,gBAAiB32G,KAAKy2G,QAAQc,kBAEvF,CACA,mBAAAF,GACEr3G,KAAK02G,YAAYvmE,OACkB,MAA/BnwC,KAAKw3G,yBACPl8G,OAAOxC,aAAakH,KAAKw3G,+BAClBx3G,KAAKw3G,uBAEhB,CACA,MAAAvc,CAAOwO,GACL,IAAI58F,EACJunC,EAAS,eAAgB,CACvBwC,OAAQ6yD,IAEVnuG,OAAO2lC,SAASM,MAAiC,QAAxB10B,EAAK7M,KAAKihC,gBAA6B,IAAPp0B,OAAgB,EAASA,EAAGzQ,aAAed,OAAO2lC,SAASM,IACtH,CACA,aAAIiyC,GACF,OAAOxzE,KAAKy2G,QAAQjjC,SACtB,EAEF,MAAMikC,GACJ,WAAA7iF,GACE50B,KAAKq0B,SAAW,yBAChBr0B,KAAK03G,mBAAqB,2BAC1B13G,KAAKm2D,SAAU,EACfn2D,KAAK23G,wBAA0BpN,IAC7B,IAAK,MAAMpzC,KAAWn3D,KAAK43G,kBACzBzgD,EAAQjuB,QACV,CAEJ,CACA,KAAA/I,GACOngC,KAAKm2D,UACRn2D,KAAKm2D,SAAU,EACfx4B,iBAAiB,qBAAsB39B,KAAK23G,yBAAyB,GAEzE,CACA,IAAArpE,GACMtuC,KAAKm2D,UACPn2D,KAAKm2D,SAAU,EACfpqB,oBAAoB,qBAAsB/rC,KAAK23G,yBAAyB,GAE5E,CACA,qBAAIC,GACF,MAAO,IAAI5/G,SAASskC,iBAAiBt8B,KAAKq0B,aAAcr0B,KAAK63G,iCAC/D,CACA,oCAAIA,GACF,MAAMp5E,EAAWzmC,SAASskC,iBAAiBt8B,KAAK03G,oBAIhD,OAHIj5E,EAASjoC,QACX4E,QAAQkG,KAAK,OAAOtB,KAAK03G,0FAA0F13G,KAAKq0B,qBAEnH,IAAIoK,EACb,EAEF,MAAMq5E,GACJ,WAAAljF,CAAY6hF,EAASt/C,GACnBn3D,KAAKy2G,QAAUA,EACfz2G,KAAKm3D,QAAUA,EACfn3D,KAAKmrG,gBAAkB,IAAInB,EAAgBhqG,KAAMm3D,GACjDn3D,KAAK+3G,mBAAqB,IAAIzQ,EAAmBtnG,KAAMm3D,EACzD,CACA,KAAAh3B,GACEngC,KAAKmrG,gBAAgBhrE,QACrBngC,KAAK+3G,mBAAmB53E,OAC1B,CACA,IAAAmO,GACEtuC,KAAKmrG,gBAAgB78D,OACrBtuC,KAAK+3G,mBAAmBzpE,MAC1B,CACA,wBAAA87D,CAAyBjzC,EAAS6gD,EAAWzN,GAC3C,OAAOvqG,KAAKi4G,eAAe9gD,EAC7B,CACA,oBAAAkzC,CAAqBlzC,EAASnL,EAAKrzD,GACjC,MAAMw/F,EAAQn4F,KAAKk4G,iBAAiB/gD,GAChCghC,GACFA,EAAMxkC,SAAS02C,qBAAqBlzC,EAASnL,EAAKrzD,EAEtD,CACA,cAAAivG,CAAezwC,EAASuiC,GACtB,OAAyC,MAAlCviC,EAAQpwB,QAAQ,gBAA0B/mC,KAAKm4G,aAAahhD,EAASuiC,IAAc15F,KAAKi4G,eAAe9gD,EAASuiC,EACzH,CACA,aAAAmO,CAAc1wC,EAASuiC,GACrB,MAAMvB,EAAQn4F,KAAKk4G,iBAAiB/gD,EAASuiC,GACzCvB,GACFA,EAAMxkC,SAASk0C,cAAc1wC,EAASuiC,EAE1C,CACA,YAAAye,CAAaviB,EAAM8D,GACjB,IAAI7sF,EACJ,MAAMgrD,EAASwkC,EAAUzG,EAAM8D,GACzBrF,EAAOr0F,KAAKm3D,QAAQjgC,cAAc8G,cAAc,2BAChDi/D,EAAelB,EAA8E,QAAnElvF,EAAc,OAATwnF,QAA0B,IAATA,OAAkB,EAASA,EAAK7sD,eAA4B,IAAP36B,EAAgBA,EAAK,KAChI,OAAO7M,KAAKi4G,eAAeriB,EAAM8D,IAAcsD,EAAoBnlC,EAAQolC,EAC7E,CACA,cAAAgb,CAAe9gD,EAASuiC,GAEtB,GADsBviC,aAAmB0iC,gBAAkB75F,KAAKy2G,QAAQ2B,wBAAwBjhD,EAASuiC,GAAa15F,KAAKy2G,QAAQ4B,qBAAqBlhD,GACrI,CACjB,MAAMghC,EAAQn4F,KAAKk4G,iBAAiB/gD,EAASuiC,GAC7C,QAAOvB,GAAQA,GAAShhC,EAAQpwB,QAAQ,cAC1C,CACE,OAAO,CAEX,CACA,gBAAAmxE,CAAiB/gD,EAASuiC,GACxB,MAAM39D,GAAoB,OAAd29D,QAAoC,IAAdA,OAAuB,EAASA,EAAU3lE,aAAa,sBAAwBojC,EAAQpjC,aAAa,oBACtI,GAAIgI,GAAY,QAANA,EAAc,CACtB,MAAMo8D,EAAQn4F,KAAKm3D,QAAQn5B,cAAc,IAAIjC,qBAC7C,GAAIo8D,aAAiBuC,EACnB,OAAOvC,CAEX,CACF,EAEF,MAAMmgB,GACJ,WAAA1jF,CAAY++B,GACV3zD,KAAKwyG,sBAAwB3T,IAC7B7+F,KAAKkzG,gBAAkB,CAAC,EACxBlzG,KAAKm2D,SAAU,EACfn2D,KAAKu4G,YAAa,EAClBv4G,KAAKw4G,WAAa7/G,IAChB,GAAIqH,KAAKy4G,uBAAwB,CAC/B,MACEC,GADa//G,EAAM6wC,OAAS,CAAC,GACdkvE,MACjB,GAAIA,EAAO,CACT14G,KAAKihC,SAAW,IAAIg7D,IAAI3gG,OAAO2lC,SAASM,MACxC,MAAMixE,EAAwBkG,EAAMlG,sBACpCxyG,KAAKwyG,sBAAwBA,EAC7BxyG,KAAK2zD,SAASglD,iDAAiD34G,KAAKihC,SAAUuxE,EAChF,CACF,GAEFxyG,KAAK44G,WAAazsD,gBAr5Dbx0D,QAAQC,UAu5DXoI,KAAKu4G,YAAa,CAAI,EAExBv4G,KAAK2zD,SAAWA,CAClB,CACA,KAAAxzB,GACOngC,KAAKm2D,UACRx4B,iBAAiB,WAAY39B,KAAKw4G,YAAY,GAC9C76E,iBAAiB,OAAQ39B,KAAK44G,YAAY,GAC1C54G,KAAKm2D,SAAU,EACfn2D,KAAKoF,QAAQ,IAAI62F,IAAI3gG,OAAO2lC,SAASM,OAEzC,CACA,IAAA+M,GACMtuC,KAAKm2D,UACPpqB,oBAAoB,WAAY/rC,KAAKw4G,YAAY,GACjDzsE,oBAAoB,OAAQ/rC,KAAK44G,YAAY,GAC7C54G,KAAKm2D,SAAU,EAEnB,CACA,IAAAr/D,CAAKmqC,EAAUuxE,GACbxyG,KAAKk9E,OAAOyiB,QAAQE,UAAW5+D,EAAUuxE,EAC3C,CACA,OAAAptG,CAAQ67B,EAAUuxE,GAChBxyG,KAAKk9E,OAAOyiB,QAAQC,aAAc3+D,EAAUuxE,EAC9C,CACA,MAAAt1B,CAAOj1C,EAAQhH,GACb,IAAIuxE,EAAwB12G,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK+iG,IAChG,MAAMr1D,EAAQ,CACZkvE,MAAO,CACLlG,0BAGJvqE,EAAOrxC,KAAK+oG,QAASn2D,EAAO,GAAIvI,EAASM,MACzCvhC,KAAKihC,SAAWA,EAChBjhC,KAAKwyG,sBAAwBA,CAC/B,CACA,+BAAAW,CAAgCX,GAC9B,OAAOxyG,KAAKkzG,gBAAgBV,IAA0B,CAAC,CACzD,CACA,qBAAAqG,CAAsBC,GACpB,MAAMtG,EAAwBxyG,KAAKwyG,sBAC7BU,EAAkBlzG,KAAKkzG,gBAAgBV,GAC7CxyG,KAAKkzG,gBAAgBV,GAAyB/7G,OAAO46B,OAAO56B,OAAO46B,OAAO,CAAC,EAAG6hF,GAAkB4F,EAClG,CACA,gCAAAC,GACE,IAAIlsG,EACC7M,KAAKg5G,4BACRh5G,KAAKg5G,0BAAiE,QAApCnsG,EAAK8yF,QAAQsZ,yBAAsC,IAAPpsG,EAAgBA,EAAK,OACnG8yF,QAAQsZ,kBAAoB,SAEhC,CACA,oCAAAC,GACMl5G,KAAKg5G,4BACPrZ,QAAQsZ,kBAAoBj5G,KAAKg5G,iCAC1Bh5G,KAAKg5G,0BAEhB,CACA,oBAAAP,GACE,OAAOz4G,KAAKm5G,cACd,CACA,YAAAA,GACE,OAAOn5G,KAAKu4G,YAAqC,YAAvBvgH,SAASm0C,UACrC,EAEF,MAAMitE,GACJ,WAAAxkF,CAAY++B,GACV3zD,KAAK2zD,SAAWA,CAClB,CACA,YAAA0lD,CAAap4E,GACX,IAAIrL,EAAU95B,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EkE,KAAK2zD,SAAS2lD,iCAAiCr4E,EAAUrL,EAAQiiC,UAC/DmlC,EAAoB/7D,EAAUjhC,KAAKk3C,KAAKgwD,SAASjK,cACnDj9F,KAAK2zD,SAAS+hD,wBAAwBz0E,EAAUrL,GAEhDt6B,OAAO2lC,SAASM,KAAON,EAAS7kC,WAGtC,CACA,UAAAw6G,CAAW5a,EAAWwW,GACpB,IAAI58E,EAAU95B,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFkE,KAAKsuC,OACLtuC,KAAKu5G,aAAe,IAAIhH,GAAMvyG,KAAM+7F,EAAUC,GAAYwW,EAAuB/7G,OAAO46B,OAAO,CAC7F4wE,SAAUjiG,KAAKihC,UACdrL,IACH51B,KAAKu5G,aAAap5E,OACpB,CACA,UAAAq5E,CAAW5jB,EAAM8D,GACf15F,KAAKsuC,OACLtuC,KAAK4lG,eAAiB,IAAIxC,EAAepjG,KAAM41F,EAAM8D,GAAW,GAChE15F,KAAK4lG,eAAezlE,OACtB,CACA,IAAAmO,GACMtuC,KAAK4lG,iBACP5lG,KAAK4lG,eAAet3D,cACbtuC,KAAK4lG,gBAEV5lG,KAAKu5G,eACPv5G,KAAKu5G,aAAazY,gBACX9gG,KAAKu5G,aAEhB,CACA,WAAItG,GACF,OAAOjzG,KAAK2zD,SAASs/C,OACvB,CACA,QAAI/7D,GACF,OAAOl3C,KAAK2zD,SAASzc,IACvB,CACA,WAAIyoD,GACF,OAAO3/F,KAAK2zD,SAASgsC,OACvB,CACA,qBAAAkG,CAAsBD,GAC8B,oBAAvC5lG,KAAKizG,QAAQpN,uBACtB7lG,KAAKizG,QAAQpN,sBAAsBD,EAEvC,CACA,yCAAMO,CAAoCP,EAAgBpE,GACxD,GAAIoE,GAAkB5lG,KAAK4lG,eAAgB,CACzC,MAAMhI,QAAqB4D,EAAc5D,aACzC,GAAIA,EAAc,CAChB,MAAMuU,EAAsBvM,EAAe9D,OACtCqQ,GACHnyG,KAAKk3C,KAAKuiE,qBAEZ,MAAMhsD,EAAa+zC,EAAc/zC,WAC/BiwC,EAAa8D,EAAc9D,WAEvBgc,EAAe,CACnB7hD,OAFa73D,KAAK25G,2BAA2B/T,GAG7CuM,sBACAljD,SAAU,CACRxB,aACAmwC,eACAF,eAGJ19F,KAAKq5G,aAAa7X,EAAcvgE,SAAUy4E,EAC5C,CACF,CACF,CACA,sCAAM5T,CAAiCF,EAAgBpE,GACrD,MAAM5D,QAAqB4D,EAAc5D,aACzC,GAAIA,EAAc,CAChB,MAAMsJ,EAAW0J,GAAaC,eAAejT,GACzC4D,EAAc/D,kBACVz9F,KAAKk3C,KAAKi+D,YAAYjO,EAAUlnG,KAAKu5G,oBAErCv5G,KAAKk3C,KAAK89D,WAAW9N,GAAU,GAAO,EAAMlnG,KAAKu5G,cAEzDv5G,KAAKk3C,KAAKuxD,cACVzoG,KAAKk3C,KAAKuiE,oBACZ,CACF,CACA,qBAAAxT,CAAsBL,EAAgBntG,GACpC2C,QAAQ3C,MAAMA,EAChB,CACA,sBAAA4tG,CAAuBT,GAC8B,oBAAxC5lG,KAAKizG,QAAQ5M,wBACtBrmG,KAAKizG,QAAQ5M,uBAAuBT,EAExC,CACA,YAAA2N,CAAasD,GACX72G,KAAK2zD,SAAS4/C,aAAasD,EAC7B,CACA,cAAAjD,CAAeiD,GACb72G,KAAK2zD,SAASigD,eAAeiD,EAC/B,CACA,4BAAA7D,CAA6B/xE,EAAU42B,GACrC,MAAM3wC,EAASi1E,EAAUl7D,GACnB24E,EAAgBzd,EAAUn8F,KAAKk3C,KAAKi/D,sBACpC0D,EAAgC,YAAXhiD,GAA0C,qBAAX3wC,EAC1D,MAAkB,YAAX2wC,GAAwBqlC,EAAcj8D,KAAci8D,EAAcl9F,KAAKk3C,KAAKi/D,wBAA0B0D,GAAgC,MAAV3yF,GAAkBA,IAAW0yF,EAClK,CACA,+BAAA1D,CAAgC4D,EAAQC,GACtC/5G,KAAK2zD,SAASuiD,gCAAgC4D,EAAQC,EACxD,CACA,YAAI94E,GACF,OAAOjhC,KAAK2/F,QAAQ1+D,QACtB,CACA,yBAAIuxE,GACF,OAAOxyG,KAAK2/F,QAAQ6S,qBACtB,CACA,0BAAAmH,CAA2BK,GAGzB,OAAOla,EAFSka,EAAOtgB,UACPsgB,EAAOzW,cAC0B,SACnD,GAGF,SAAW+O,GACTA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAuB,YAAI,GAAK,cAC1CA,EAAUA,EAAoB,SAAI,GAAK,UACxC,CALD,CAKGA,KAAcA,GAAY,CAAC,IAC9B,MAAM2H,GACJ,WAAArlF,CAAY++B,GACV3zD,KAAKk6G,MAAQ5H,GAAU3iE,QACvB3vC,KAAKm2D,SAAU,EACfn2D,KAAKm6G,oBAAsB,KACzB,MAAMhuE,EAAansC,KAAKmsC,WACN,eAAdA,EACFnsC,KAAKo6G,oBACkB,YAAdjuE,GACTnsC,KAAKq6G,gBACP,EAEFr6G,KAAKs6G,eAAiB,KACpBt6G,KAAK2zD,SAAS2mD,gBAAgB,EAEhCt6G,KAAK2zD,SAAWA,CAClB,CACA,KAAAxzB,GACOngC,KAAKm2D,UACJn2D,KAAKk6G,OAAS5H,GAAU3iE,UAC1B3vC,KAAKk6G,MAAQ5H,GAAU9W,SAEzBxjG,SAAS2lC,iBAAiB,mBAAoB39B,KAAKm6G,qBAAqB,GACxEx8E,iBAAiB,WAAY39B,KAAKs6G,gBAAgB,GAClDt6G,KAAKm2D,SAAU,EAEnB,CACA,IAAA7nB,GACMtuC,KAAKm2D,UACPn+D,SAAS+zC,oBAAoB,mBAAoB/rC,KAAKm6G,qBAAqB,GAC3EpuE,oBAAoB,WAAY/rC,KAAKs6G,gBAAgB,GACrDt6G,KAAKm2D,SAAU,EAEnB,CACA,iBAAAikD,GACMp6G,KAAKk6G,OAAS5H,GAAU9W,UAC1Bx7F,KAAKk6G,MAAQ5H,GAAUiI,YACvBv6G,KAAK2zD,SAAS6mD,wBAElB,CACA,cAAAH,GACEr6G,KAAKo6G,oBACDp6G,KAAKk6G,OAAS5H,GAAUiI,cAC1Bv6G,KAAKk6G,MAAQ5H,GAAUvtD,SACvB/kD,KAAK2zD,SAAS4kD,aAElB,CACA,cAAIpsE,GACF,OAAOn0C,SAASm0C,UAClB,EAEF,MAAMsuE,GACJ,WAAA7lF,CAAY++B,GACV3zD,KAAKm2D,SAAU,EACfn2D,KAAK06G,SAAW,KACd16G,KAAK26G,eAAe,CAClBltG,EAAGnS,OAAO43D,YACVxrD,EAAGpM,OAAO23D,aACV,EAEJjzD,KAAK2zD,SAAWA,CAClB,CACA,KAAAxzB,GACOngC,KAAKm2D,UACRx4B,iBAAiB,SAAU39B,KAAK06G,UAAU,GAC1C16G,KAAK06G,WACL16G,KAAKm2D,SAAU,EAEnB,CACA,IAAA7nB,GACMtuC,KAAKm2D,UACPpqB,oBAAoB,SAAU/rC,KAAK06G,UAAU,GAC7C16G,KAAKm2D,SAAU,EAEnB,CACA,cAAAwkD,CAAex9D,GACbn9C,KAAK2zD,SAASinD,sBAAsBz9D,EACtC,EAEF,MAAM09D,GACJ,MAAAnS,CAAOoS,GACL,IAAI1oE,EAAW0oE,EAAO1oE,SACtBu5D,EAAMC,4BAA4B5rG,KAOtC,SAA2CoyC,GACzC,MAAM2oE,EAA8BhU,EAA0B/uG,SAASy+B,iBACjE0wE,EAAsB,CAAC,EAC7B,IAAK,MAAM6T,KAA8BD,EAA6B,CACpE,MAAMh/E,EAAKi/E,EAA2Bj/E,GACtC,IAAK,MAAMgnE,KAAiB3wD,EAAS9V,iBAAiB,gBAAiB,CACrE,MAAM2+E,EAAkBjU,EAAwBjE,EAAcG,gBAAgB17D,QAASzL,GACnFk/E,IACF9T,EAAoBprE,GAAM,CAACi/E,EAA4BC,GAE3D,CACF,CACA,OAAO9T,CACT,CApB4C+T,CAAkC9oE,IAAW,IAAMp6C,SAASy+B,gBAAgB/8B,YAAY04C,IAClI,CACA,aAAA65D,CAAc7E,EAAyBC,GACrCA,EAAoBxsD,YAAYusD,EAAwBz2D,WAAU,GACpE,CACA,YAAA07D,GAAgB,EAgBlB,MAAM8O,GACJ,WAAAvmF,CAAY++B,GACV3zD,KAAKo7G,QAAU,IAAIpmD,IACnBh1D,KAAKm2D,SAAU,EACfn2D,KAAKq7G,qBAAuB1iH,IAC1B,MAAMs2D,EAkDZ,SAAgCt2D,GAC9B,IAAIkU,EACJ,MAAM20F,EAAwC,QAAvB30F,EAAKlU,EAAMi+C,cAA2B,IAAP/pC,OAAgB,EAASA,EAAG20F,cAClF,GAAIA,aAAyBpE,EAC3B,OAAOoE,CAEX,CAxDuB8Z,CAAuB3iH,GACpCs2D,GAwDV,SAA+BA,GAC7B,IAAIpiD,EACJ,MAAMu/C,EAA8C,QAA/Bv/C,EAAKoiD,EAAS7C,mBAAgC,IAAPv/C,EAAgBA,EAAK,GACjF,OAAOu/C,EAAY2wC,WAAW+F,EAAc12C,YAC9C,CA5DsBmvD,CAAsBtsD,KACpCt2D,EAAM46C,iBACNvzC,KAAKw7G,uBAAuBvsD,GAC9B,EAEFjvD,KAAKy7G,oBAAsB9iH,IACrBqH,KAAKm2D,SAAgC,iBAAdx9D,EAAM1C,MAC/B+J,KAAK07G,mBAAmB/iH,EAAM1C,KAChC,EAEF+J,KAAK2zD,SAAWA,CAClB,CACA,KAAAxzB,GACOngC,KAAKm2D,UACRn2D,KAAKm2D,SAAU,EACfx4B,iBAAiB,8BAA+B39B,KAAKq7G,sBAAsB,GAE/E,CACA,IAAA/sE,GACMtuC,KAAKm2D,UACPn2D,KAAKm2D,SAAU,EACfpqB,oBAAoB,8BAA+B/rC,KAAKq7G,sBAAsB,GAElF,CACA,mBAAAM,CAAoBh5G,GACb3C,KAAK47G,wBAAwBj5G,KAChC3C,KAAKo7G,QAAQ9oG,IAAI3P,GACjBA,EAAOg7B,iBAAiB,UAAW39B,KAAKy7G,qBAAqB,GAEjE,CACA,sBAAAI,CAAuBl5G,GACjB3C,KAAK47G,wBAAwBj5G,KAC/B3C,KAAKo7G,QAAQ9lD,OAAO3yD,GACpBA,EAAOopC,oBAAoB,UAAW/rC,KAAKy7G,qBAAqB,GAEpE,CACA,uBAAAG,CAAwBj5G,GACtB,OAAO3C,KAAKo7G,QAAQt6E,IAAIn+B,EAC1B,CACA,4BAAM64G,CAAuBvsD,GAC3B,MAAMnV,QAAamV,EAAS2uC,aACxB9jD,GACF95C,KAAK07G,mBAAmB5hE,EAE5B,CACA,kBAAA4hE,CAAmB5hE,GACjB95C,KAAK2zD,SAASmoD,0BAA0BhZ,EAAc5wD,KAAK4H,GAC7D,EAcF,MAAMiiE,WAAsBpP,EAC1B,oBAAO1D,CAAciE,EAAgBC,GACnC,MAAM6O,EAAYhkH,SAChBy+B,EAAkBulF,EAAUvlF,gBAC5BuZ,EAAOgsE,EAAUhsE,KACnBvZ,EAAgBqkB,aAAaqyD,EAAYn9D,EAC3C,CACA,YAAM04D,GACJ1oG,KAAKi8G,qBACLj8G,KAAK8tG,wBACP,CACA,kBAAAmO,GACE,MAAMC,EAAalkH,SACjBy+B,EAAkBylF,EAAWzlF,gBAC7Bh9B,EAAOyiH,EAAWziH,KACpBg9B,EAAgBqkB,aAAa96C,KAAKm8G,QAAS1iH,GAC3CuG,KAAKipG,cAAcjpG,KAAKktG,eAAgBltG,KAAKmtG,WAC/C,CACA,sBAAAW,GACE,IAAK,MAAMsO,KAAsBp8G,KAAKq8G,eAAgB,CACpD,MAAMroF,EAAaooF,EAAmBpoF,WACtC,GAAIA,EAAY,CACd,MAAMmjC,EAAU0mC,EAAsBue,GACtCpoF,EAAW8mB,aAAaqc,EAASilD,EACnC,CACF,CACF,CACA,WAAID,GACF,OAAOn8G,KAAK6oG,YAAYoI,aAAa95C,OACvC,CACA,kBAAIklD,GACF,OAAOrkH,SAASy+B,gBAAgB6F,iBAAiB,SACnD,EAEF,MAAMggF,WAAqB3P,EACzB,oBAAO1D,CAAciE,EAAgBC,GAC/Bn1G,SAASg4C,MAAQm9D,aAAsBoP,gBACzCvkH,SAASg4C,KAAK6K,YAAYsyD,GAE1Bn1G,SAASy+B,gBAAgB/8B,YAAYyzG,EAEzC,CACA,gBAAIvE,GACF,OAAO5oG,KAAK6oG,YAAYiJ,aAAe9xG,KAAKw8G,2BAC9C,CACA,gBAAIhT,GACF,OAAKxpG,KAAK6oG,YAAYiJ,YAKjB9xG,KAAKw8G,iCAAV,EACS,CACL/S,OAAQ,4BANH,CACLA,OAAQ,gCAQd,CACA,qBAAMG,SACE5pG,KAAKy8G,WACb,CACA,YAAM/T,GACA1oG,KAAK6sG,kBACD7sG,KAAK08G,aAEf,CACA,eAAA7S,GACEjP,MAAMiP,kBACD7pG,KAAK87F,WACR97F,KAAK+sG,gCAET,CACA,uBAAI4P,GACF,OAAO38G,KAAK4sG,gBAAgBqE,YAC9B,CACA,mBAAI2L,GACF,OAAO58G,KAAK6oG,YAAYoI,YAC1B,CACA,cAAI9D,GACF,OAAOntG,KAAK6oG,YAAY1xC,OAC1B,CACA,eAAMslD,GACJ,MAAMI,EAAqB78G,KAAK88G,2BAC1BC,EAAwB/8G,KAAKg9G,gCACnCh9G,KAAKi9G,kCACCJ,QACAE,CACR,CACA,iBAAML,SACE18G,KAAK4rG,6BAA4Bz/C,UACrCnsD,KAAKk9G,wBACCl9G,KAAKm9G,eAAe,GAE9B,CACA,+BAAIX,GACF,OAAOx8G,KAAK28G,oBAAoB7M,yBAA2B9vG,KAAK48G,gBAAgB9M,uBAClF,CACA,mCAAMkN,GACJ,MAAMI,EAAkB,GACxB,IAAK,MAAMjmD,KAAWn3D,KAAKq9G,0BACzBD,EAAgBtmH,KAAKyoG,EAAYpoC,IACjCn/D,SAASyB,KAAKC,YAAYy9D,SAEtBx/D,QAAQgC,IAAIyjH,EACpB,CACA,yBAAAH,GACE,IAAK,MAAM9lD,KAAWn3D,KAAKs9G,sBACzBtlH,SAASyB,KAAKC,YAAYmkG,EAAsB1mC,GAEpD,CACA,8BAAM2lD,GACJ,MAAMS,EAAkB,IAAIv9G,KAAKw9G,4BACjC,IAAK,MAAMrmD,KAAWn3D,KAAKy9G,+BACpBz9G,KAAK09G,8BAA8BvmD,EAASomD,IAC/CvlH,SAASyB,KAAKw6B,YAAYkjC,GAG9B,IAAK,MAAMA,KAAWomD,EACpBvlH,SAASyB,KAAKC,YAAYy9D,EAE9B,CACA,6BAAAumD,CAA8BvmD,EAASwmD,GACrC,IAAK,MAAMC,KAAUD,EAAY9c,UAAW,CAC1C,IAAIgd,EAASnlB,EAAeklB,EAAQ,GACpC,MAAM5vF,EAAQ6vF,EAAO,GACf1Q,EAAa0Q,EAAO,GAC1B,GAAuB,SAAnB1mD,EAAQE,QAAoB,CAC9B,GAA0B,SAAtB81C,EAAW91C,QACb,SAEF,GAAIF,EAAQ94B,WAAa8uE,EAAW9uE,UAElC,OADAs/E,EAAYhoF,OAAO3H,EAAO,IACnB,CAEX,CACA,GAAIm/E,EAAW2Q,YAAY3mD,GAEzB,OADAwmD,EAAYhoF,OAAO3H,EAAO,IACnB,CAEX,CACA,OAAO,CACT,CACA,oCAAA+vF,GACE,IAAK,MAAM5mD,KAAWn3D,KAAKy9G,+BACzBzlH,SAASyB,KAAKw6B,YAAYkjC,EAE9B,CACA,8BAAA6mD,GACE,IAAK,MAAM7mD,KAAWn3D,KAAKw9G,2BACzBxlH,SAASyB,KAAKC,YAAYy9D,EAE9B,CACA,eAAA+lD,GACEllH,SAASimH,UAAUj+G,KAAKmtG,YACxBntG,KAAKk+G,+BACP,CACA,6BAAAA,GACE,IAAK,MAAMjb,KAAsBjjG,KAAKm+G,sBAAuB,CAC3D,MAAMhQ,EAAyBtQ,EAAsBoF,GACrDA,EAAmBpoD,YAAYszD,EACjC,CACF,CACA,mBAAMgP,SACEn9G,KAAKipG,cAAcjpG,KAAKktG,eAAgBltG,KAAKmtG,WACrD,CACA,6BAAIkQ,GACF,OAAOr9G,KAAK48G,gBAAgB3M,mCAAmCjwG,KAAK28G,oBACtE,CACA,yBAAIW,GACF,OAAOt9G,KAAK48G,gBAAgB7M,+BAA+B/vG,KAAK28G,oBAClE,CACA,kCAAIc,GACF,OAAOz9G,KAAK28G,oBAAoBtM,mBAClC,CACA,8BAAImN,GACF,OAAOx9G,KAAK48G,gBAAgBvM,mBAC9B,CACA,yBAAI8N,GACF,OAAOn+G,KAAKmtG,WAAW7wE,iBAAiB,SAC1C,EAEF,MAAM8hF,GACJ,WAAAxpF,CAAY+mC,GACV37D,KAAKiC,KAAO,GACZjC,KAAKq+G,UAAY,CAAC,EAClBr+G,KAAK27D,KAAOA,CACd,CACA,GAAA76B,CAAIG,GACF,OAAOk8D,EAAWl8D,KAAajhC,KAAKq+G,SACtC,CACA,GAAAlkH,CAAI8mC,GACF,GAAIjhC,KAAK8gC,IAAIG,GAAW,CACtB,MAAMimE,EAAWlnG,KAAK8nE,KAAK7mC,GAE3B,OADAjhC,KAAKuyE,MAAMtxC,GACJimE,CACT,CACF,CACA,GAAA/C,CAAIljE,EAAUimE,GAGZ,OAFAlnG,KAAKgoE,MAAM/mC,EAAUimE,GACrBlnG,KAAKuyE,MAAMtxC,GACJimE,CACT,CACA,KAAAhoC,GACEl/D,KAAKq+G,UAAY,CAAC,CACpB,CACA,IAAAv2C,CAAK7mC,GACH,OAAOjhC,KAAKq+G,UAAUlhB,EAAWl8D,GACnC,CACA,KAAA+mC,CAAM/mC,EAAUimE,GACdlnG,KAAKq+G,UAAUlhB,EAAWl8D,IAAaimE,CACzC,CACA,KAAA30B,CAAMtxC,GACJ,MAAMpmC,EAAMsiG,EAAWl8D,GACjBjT,EAAQhuB,KAAKiC,KAAK6K,QAAQjS,GAC5BmzB,GAAS,GAAGhuB,KAAKiC,KAAK0zB,OAAO3H,EAAO,GACxChuB,KAAKiC,KAAKosC,QAAQxzC,GAClBmF,KAAKs0D,MACP,CACA,IAAAA,GACE,IAAK,MAAMz5D,KAAOmF,KAAKiC,KAAK0zB,OAAO31B,KAAK27D,aAC/B37D,KAAKq+G,UAAUxjH,EAE1B,EAEF,MAAMyjH,WAAiBxW,EACrB,WAAAlzE,GACEgmE,SAAS9+F,WACTkE,KAAKu+G,cAAgB,IAAIH,GAAc,IACvCp+G,KAAKm2G,qBAAuB,IAAIla,IAAIh7D,SAASM,MAC7CvhC,KAAKg2G,eAAgB,CACvB,CACA,UAAAhB,CAAW9N,GACT,IAAIpL,EAAYhgG,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,IAAmBA,UAAU,GAC3E+wG,IAAa/wG,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,KAAmBA,UAAU,GAC5E+6G,EAAQ/6G,UAAUtF,OAAS,EAAIsF,UAAU,QAAKvC,EAClD,MAAMovG,EAAW,IAAI2T,GAAat8G,KAAKknG,SAAUA,EAAUoV,GAAarT,cAAenN,EAAW+Q,GAMlG,OALKlE,EAASC,aAGF,OAAViO,QAA4B,IAAVA,GAA4BA,EAAM/C,gBAFpD9zG,KAAKg2G,eAAgB,EAIhBh2G,KAAK0oG,OAAOC,EACrB,CACA,WAAAwM,CAAYjO,EAAU2P,GACV,OAAVA,QAA4B,IAAVA,GAA4BA,EAAM/C,gBACpD,MAAMnL,EAAW,IAAIoT,GAAc/7G,KAAKknG,SAAUA,EAAU6U,GAAc9S,eAAe,GACzF,OAAOjpG,KAAK0oG,OAAOC,EACrB,CACA,kBAAA8Q,GACEz5G,KAAKu+G,cAAcr/C,OACrB,CACA,mBAAM61C,GACJ,IAAI7N,EAAWprG,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAKkE,KAAKknG,SACxF,GAAIA,EAAS2K,YAAa,CACxB7xG,KAAK2zD,SAAS6qD,wBACd,MAAMv9E,EAAWjhC,KAAKm2G,2BApgFnB,IAAIx+G,SAAQC,GAAW4B,YAAW,IAAM5B,KAAW,KAsgFtD,MAAM6mH,EAAiBvX,EAAS/kF,QAEhC,OADAniB,KAAKu+G,cAAcpa,IAAIljE,EAAUw9E,GAC1BA,CACT,CACF,CACA,4BAAApJ,CAA6Bp0E,GAC3B,OAAOjhC,KAAKu+G,cAAcpkH,IAAI8mC,EAChC,CACA,YAAIimE,GACF,OAAO0J,GAAaG,YAAY/wG,KAAKm3D,QACvC,EAEF,MAAMunD,GACJ,WAAA9pF,CAAY++B,GACV3zD,KAAKq0B,SAAW,wBAChBr0B,KAAK2zD,SAAWA,CAClB,CACA,iBAAI4qD,GACF,OAAOv+G,KAAK2zD,SAAS6f,UAAUt8B,KAAKqnE,aACtC,CACA,KAAAp+E,GACE,GAA4B,YAAxBnoC,SAASm0C,WACX,OAAOn0C,SAAS2lC,iBAAiB,oBAAoB,KACnD39B,KAAKqpG,0BAA0BrxG,SAASg4C,KAAK,IAG/ChwC,KAAKqpG,0BAA0BrxG,SAASg4C,KAE5C,CACA,yBAAAq5D,CAA0BlyC,GACxB,IAAK,MAAM4/B,KAAQ5/B,EAAQ76B,iBAAiBt8B,KAAKq0B,UAC/Cr0B,KAAK2+G,WAAW5nB,EAEpB,CACA,gBAAM4nB,CAAW5nB,GACf,MAAM91D,EAAW,IAAIg7D,IAAIlF,EAAKx1D,MAC9B,IAAIvhC,KAAKu+G,cAAcz9E,IAAIG,GAG3B,IACE,MAAMguB,QAAiBwM,MAAMx6B,EAAS7kC,WAAY,CAChDsyD,QAAS,CACP,eAAgB,OAChBwzC,OAAQ,eAGNhxC,QAAqBjC,EAASn7B,OAC9BozE,EAAW0J,GAAaC,eAAe3/C,GAC7ClxD,KAAKu+G,cAAcpa,IAAIljE,EAAUimE,EACnC,CAAE,MAAO7+D,GAAI,CACf,EA6TF,SAASu2E,GAAkC5yD,GACzCv1D,OAAO8qE,iBAAiBvV,EAAK6yD,GAC/B,CACA,MAAMA,GAAwC,CAC5CC,YAAa,CACX,GAAA3kH,GACE,OAAO6F,KAAK5D,UACd,IAuBJ,MAAM2iH,GAAgB,CACpB,KAAAnkE,GACE56C,KAAKg/G,eAAe1mG,SAAQ/gB,IAC1B,IAAIsV,EACJ,OAAkC,QAA1BA,EAAKtV,EAAE2oE,qBAAkC,IAAPrzD,OAAgB,EAASA,EAAG6tC,aAAa16C,KAAKi/G,gBAAiB1nH,EAAEsqC,YAAY,GAE3H,EACA,MAAA2Y,GACEx6C,KAAKk/G,gCACLl/G,KAAKg/G,eAAe1mG,SAAQ/gB,GAAKA,EAAEijD,OAAOx6C,KAAKi/G,kBACjD,EACA,MAAAtkE,GACE36C,KAAKg/G,eAAe1mG,SAAQ/gB,IAC1B,IAAIsV,EACJ,OAAkC,QAA1BA,EAAKtV,EAAE2oE,qBAAkC,IAAPrzD,OAAgB,EAASA,EAAG6tC,aAAa16C,KAAKi/G,gBAAiB1nH,EAAE,GAE/G,EACA,OAAAkjD,GACEz6C,KAAKk/G,gCACLl/G,KAAKg/G,eAAe1mG,SAAQ/gB,GAAKA,EAAEkjD,QAAQz6C,KAAKi/G,kBAClD,EACA,MAAA/1E,GACElpC,KAAKg/G,eAAe1mG,SAAQ/gB,GAAKA,EAAE2xC,UACrC,EACA,OAAA9jC,GACEpF,KAAKg/G,eAAe1mG,SAAQ/gB,GAAKA,EAAEsjD,YAAY76C,KAAKi/G,kBACtD,EACA,MAAA/hC,GACEl9E,KAAKg/G,eAAe1mG,SAAQ6mG,IAC1BA,EAAc9gF,UAAY,GAC1B8gF,EAAc3kE,OAAOx6C,KAAKi/G,gBAAgB,GAE9C,GAEIxI,GAAU,IA3XhB,MACE,WAAA7hF,GACE50B,KAAKwzE,UAAY,IAAI4lC,GAAUp5G,MAC/BA,KAAK2/F,QAAU,IAAI2Y,GAAQt4G,MAC3BA,KAAKo/G,UAAY,IAAIV,GAAU1+G,MAC/BA,KAAKk3C,KAAO,IAAIonE,GAASt+G,KAAMhI,SAASy+B,iBACxCz2B,KAAKizG,QAAU,IAAIuD,GAAex2G,MAClCA,KAAKq/G,aAAe,IAAIpF,GAAaj6G,MACrCA,KAAKs/G,cAAgB,IAAI7H,GACzBz3G,KAAKu/G,kBAAoB,IAAI/U,EAAkBxqG,KAAM1E,QACrD0E,KAAK+3G,mBAAqB,IAAIzQ,EAAmBtnG,KAAMhI,UACvDgI,KAAKw/G,eAAiB,IAAI/E,GAAez6G,MACzCA,KAAKy/G,eAAiB,IAAItE,GAAen7G,MACzCA,KAAK0/G,sBAAwB,IAAIxU,EAAsBlrG,KAAMhI,SAASy+B,iBACtEz2B,KAAK2/G,gBAAkB,IAAI7H,GAAgB93G,KAAMhI,SAASy+B,iBAC1Dz2B,KAAK4/G,sBAAwB,IAAI/E,GACjC76G,KAAK6/G,OAAQ,EACb7/G,KAAKyhC,SAAU,EACfzhC,KAAKu3G,iBAAmB,IACxBv3G,KAAKm2D,SAAU,EACfn2D,KAAK8/G,SAAW,IAClB,CACA,KAAA3/E,GACOngC,KAAKm2D,UACRn2D,KAAKq/G,aAAal/E,QAClBngC,KAAKs/G,cAAcn/E,QACnBngC,KAAK0/G,sBAAsBv/E,QAC3BngC,KAAKu/G,kBAAkBp/E,QACvBngC,KAAK+3G,mBAAmB53E,QACxBngC,KAAKw/G,eAAer/E,QACpBngC,KAAKy/G,eAAet/E,QACpBngC,KAAK2/G,gBAAgBx/E,QACrBngC,KAAK2/F,QAAQx/D,QACbngC,KAAKo/G,UAAUj/E,QACfngC,KAAKm2D,SAAU,EACfn2D,KAAKyhC,SAAU,EAEnB,CACA,OAAA0H,GACEnpC,KAAKyhC,SAAU,CACjB,CACA,IAAA6M,GACMtuC,KAAKm2D,UACPn2D,KAAKq/G,aAAa/wE,OAClBtuC,KAAKs/G,cAAchxE,OACnBtuC,KAAK0/G,sBAAsBpxE,OAC3BtuC,KAAKu/G,kBAAkBjxE,OACvBtuC,KAAK+3G,mBAAmBzpE,OACxBtuC,KAAKw/G,eAAelxE,OACpBtuC,KAAKy/G,eAAenxE,OACpBtuC,KAAK2/G,gBAAgBrxE,OACrBtuC,KAAK2/F,QAAQrxD,OACbtuC,KAAKm2D,SAAU,EAEnB,CACA,eAAA4pD,CAAgB9M,GACdjzG,KAAKizG,QAAUA,CACjB,CACA,KAAA4D,CAAM51E,GACJ,IAAIrL,EAAU95B,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM2xG,EAAe73E,EAAQuiE,MAAQngG,SAAS8jC,eAAelG,EAAQuiE,OAAS,KAC1EsV,aAAwB/S,GAC1B+S,EAAan1G,IAAM2oC,EAAS7kC,WAC5BqxG,EAAa5S,QAEb76F,KAAKwzE,UAAU6lC,aAAatd,EAAU96D,GAAWrL,EAErD,CACA,mBAAA+lF,CAAoBh5G,GAClB3C,KAAKy/G,eAAe9D,oBAAoBh5G,EAC1C,CACA,sBAAAk5G,CAAuBl5G,GACrB3C,KAAKy/G,eAAe5D,uBAAuBl5G,EAC7C,CACA,mBAAAq9G,CAAoB5mH,GAClB4G,KAAK4/G,sBAAsBlX,OAAO5F,EAAc5wD,KAAK94C,GACvD,CACA,UAAA6mH,GACEjgH,KAAKk3C,KAAKuiE,oBACZ,CACA,mBAAAyG,CAAoBn5D,GAClB/mD,KAAKu3G,iBAAmBxwD,CAC1B,CACA,WAAAo5D,CAAY1lH,GACVuF,KAAK8/G,SAAWrlH,CAClB,CACA,YAAIwmC,GACF,OAAOjhC,KAAK2/F,QAAQ1+D,QACtB,CACA,yBAAIuxE,GACF,OAAOxyG,KAAK2/F,QAAQ6S,qBACtB,CACA,gDAAAmG,CAAiD13E,EAAUuxE,GACrDxyG,KAAKyhC,QACPzhC,KAAKwzE,UAAUojC,WAAW31E,EAAUuxE,EAAuB,CACzD36C,OAAQ,UACRm6C,gBAAgB,IAGlBhyG,KAAKizG,QAAQiE,gBAAgB,CAC3BzN,OAAQ,kBAGd,CACA,qBAAAmR,CAAsBz9D,GACpBn9C,KAAK2/F,QAAQkZ,sBAAsB,CACjCzC,eAAgBj5D,GAEpB,CACA,4BAAAiuD,CAA6BrU,EAAM91D,GACjC,OAAOjhC,KAAKq4G,qBAAqBthB,IAASiG,EAAoB/7D,EAAUjhC,KAAKknG,SAASjK,aACxF,CACA,2BAAAyO,GAA+B,CAC/B,wBAAAX,CAAyBhU,EAAM91D,EAAUtoC,GACvC,OAAOqH,KAAKq4G,qBAAqBthB,IAASiG,EAAoB/7D,EAAUjhC,KAAKknG,SAASjK,eAAiBj9F,KAAKogH,yCAAyCrpB,EAAM91D,EAAUtoC,EACvK,CACA,sBAAAqyG,CAAuBjU,EAAM91D,GAC3B,MAAM42B,EAAS73D,KAAKqgH,iBAAiBtpB,GAC/Bqb,EAAwBrb,EAAKr8B,aAAa,qBAChD16D,KAAK62G,MAAM51E,EAASM,KAAM,CACxBs2B,SACAu6C,yBAEJ,CACA,gCAAAkH,CAAiCr4E,EAAU42B,GACzC,OAAO73D,KAAKgzG,6BAA6B/xE,EAAU42B,IAAW73D,KAAKsgH,kCAAkCr/E,EACvG,CACA,uBAAAy0E,CAAwBz0E,EAAUrL,GAChCgpF,GAAkC39E,GAClCjhC,KAAKizG,QAAQyC,wBAAwBz0E,EAAUrL,EACjD,CACA,YAAA29E,CAAasD,GACNA,EAAMzE,uBACTpT,EAAWhnG,SAASy+B,iBAEtBmoF,GAAkC/H,EAAM51E,UACnC41E,EAAMzD,QACTpzG,KAAKugH,uCAAuC1J,EAAM51E,SAAU41E,EAAMh/C,OAEtE,CACA,cAAA+7C,CAAeiD,GACbzX,EAAepnG,SAASy+B,iBACxBz2B,KAAKwgH,+BAA+B3J,EAAMP,mBAC5C,CACA,4BAAAtD,CAA6B/xE,EAAU42B,GACrC,OAAO73D,KAAKwzE,UAAUw/B,6BAA6B/xE,EAAU42B,EAC/D,CACA,+BAAAq+C,CAAgC4D,EAAQC,GACtC/5G,KAAKygH,+CAA+C3G,EAAQC,EAC9D,CACA,cAAAnS,CAAehS,EAAM8D,GACnB,MAAM7hC,EAASwkC,EAAUzG,EAAM8D,GAC/B,OAAO15F,KAAKo4G,wBAAwBxiB,EAAM8D,IAAcsD,EAAoBjB,EAAUlkC,GAAS73D,KAAKknG,SAASjK,aAC/G,CACA,aAAA4K,CAAcjS,EAAM8D,GAClB15F,KAAKwzE,UAAUgmC,WAAW5jB,EAAM8D,EAClC,CACA,qBAAA8gB,GACEx6G,KAAKk3C,KAAKi/D,qBAAuBn2G,KAAKihC,SACtCjhC,KAAKwgH,gCACP,CACA,UAAAjI,GACEv4G,KAAK2/F,QAAQoZ,kCACf,CACA,cAAAuB,GACEt6G,KAAK2/F,QAAQuZ,sCACf,CACA,yBAAA4C,CAA0B1iH,GACxB4G,KAAKggH,oBAAoB5mH,EAC3B,CACA,qBAAAolH,GACE,IAAI3xG,GACyC,QAAtCA,EAAK7M,KAAKwzE,UAAU+lC,oBAAiC,IAAP1sG,OAAgB,EAASA,EAAGumG,SAC/EpzG,KAAK0gH,wCAET,CACA,qBAAAxX,CAAsByX,EAAQ/qF,GAC5B,IAAIuhC,EAAUwpD,EAAOxpD,QACrB,MAAMx+D,EAAQqH,KAAK4gH,8BAA8BzpD,EAASvhC,GACpDugB,EAAmBx9C,EAAMw9C,iBAC7BuyD,EAAS/vG,EAAMi+C,OAAO8xD,OAIxB,OAHI1oG,KAAKk3C,KAAKyxD,UAAYD,IACxB1oG,KAAKk3C,KAAKyxD,SAASM,cAAgBP,IAE7BvyD,CACV,CACA,oBAAAizD,CAAqByX,EAAWC,GAC9B9gH,KAAKk3C,KAAKi/D,qBAAuBn2G,KAAK2/F,QAAQ1+D,SAC9CjhC,KAAK+gH,8BACP,CACA,yBAAA1X,CAA0BlyC,GACxBn3D,KAAKo/G,UAAU/V,0BAA0BlyC,EAC3C,CACA,eAAAuyC,CAAgBD,GACdzpG,KAAKizG,QAAQiE,gBAAgBzN,EAC/B,CACA,WAAAuX,CAAY7oB,GACVn4F,KAAKihH,gCAAgC9oB,EACvC,CACA,aAAA+oB,CAAc1f,EAAerJ,GAC3Bn4F,KAAKmhH,kCAAkC3f,EAAerJ,EACxD,CACA,wCAAAioB,CAAyCrpB,EAAM91D,EAAUmgF,GAEvD,OADcphH,KAAKqhH,6CAA6CtqB,EAAM91D,EAAUmgF,GAClEjrE,gBAChB,CACA,iCAAAmqE,CAAkCr/E,GAEhC,OADcjhC,KAAKshH,wCAAwCrgF,GAC7CkV,gBAChB,CACA,4CAAAkrE,CAA6CtqB,EAAM91D,EAAUtoC,GAC3D,OAAOy7C,EAAS,cAAe,CAC7Bj7C,OAAQ49F,EACRngD,OAAQ,CACNoV,IAAK/qB,EAASM,KACdmU,cAAe/8C,GAEjB89C,YAAY,GAEhB,CACA,uCAAA6qE,CAAwCrgF,GACtC,OAAOmT,EAAS,qBAAsB,CACpCwC,OAAQ,CACNoV,IAAK/qB,EAASM,MAEhBkV,YAAY,GAEhB,CACA,sCAAA8pE,CAAuCt/E,EAAU42B,GAC/C,OAAOzjB,EAAS,cAAe,CAC7BwC,OAAQ,CACNoV,IAAK/qB,EAASM,KACds2B,WAGN,CACA,sCAAA6oD,GACE,OAAOtsE,EAAS,qBAClB,CACA,6BAAAwsE,CAA8BW,EAAS3rF,GACrC,OAAOwe,EAAS,sBAAuB,CACrCwC,OAAQngD,OAAO46B,OAAO,CACpBkwF,WACC3rF,GACH6gB,YAAY,GAEhB,CACA,4BAAAsqE,GACE,OAAO3sE,EAAS,eAClB,CACA,8BAAAosE,GACE,IAAIgB,EAAS1lH,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAClF,OAAOs4C,EAAS,aAAc,CAC5BwC,OAAQ,CACNoV,IAAKhsD,KAAKihC,SAASM,KACnBigF,WAGN,CACA,8CAAAf,CAA+C3G,EAAQC,GACrDplB,cAAc,IAAI8sB,gBAAgB,aAAc,CAC9C3H,OAAQA,EAAO19G,WACf29G,OAAQA,EAAO39G,aAEnB,CACA,+BAAA6kH,CAAgC9oB,GAC9B,OAAO/jD,EAAS,mBAAoB,CAClCj7C,OAAQg/F,GAEZ,CACA,iCAAAgpB,CAAkC3f,EAAerJ,GAC/C,OAAO/jD,EAAS,qBAAsB,CACpCwC,OAAQ,CACN4qD,iBAEFroG,OAAQg/F,EACR1hD,YAAY,GAEhB,CACA,uBAAA2hE,CAAwBxiB,EAAM8D,GAC5B,GAAqB,OAAjB15F,KAAK8/G,SACP,OAAO,EACF,CACL,MAAM4B,GAAyBhoB,GAAY15F,KAAKq4G,qBAAqB3e,GACrE,MAAqB,SAAjB15F,KAAK8/G,SACA4B,GAAiE,MAAvC9rB,EAAK7uD,QAAQ,uBAEvC26E,GAA0B1hH,KAAKq4G,qBAAqBziB,EAE/D,CACF,CACA,oBAAAyiB,CAAqBlhD,GACnB,MAAM1a,EAAY0jD,EAAuBhpC,EAAS,gBAC5CwqD,EAAcxhB,EAAuBhpC,EAAS,eACpD,OAAIn3D,KAAK6/G,OAAS8B,GACZllE,GAC6C,SAAxCA,EAAU1oB,aAAa,gBAK5B0oB,GAC6C,QAAxCA,EAAU1oB,aAAa,aAKpC,CACA,gBAAAssF,CAAiBtpB,GACf,OAAO+I,EAAe/I,IAAS,SACjC,CACA,YAAImQ,GACF,OAAOlnG,KAAKk3C,KAAKgwD,QACnB,GAmEIxqE,GAAQ,IAvDd,MACE,WAAA9H,CAAY6hF,GACVz2G,KAAKy2G,QAAUA,CACjB,CACA,KAAAv3C,GACEl/D,KAAKy2G,QAAQwJ,YACf,CACA,iBAAA2B,GACE5hH,KAAK6hH,gBAAgB,GACvB,CACA,mBAAAC,GACE9hH,KAAK6hH,gBAAgB,WACvB,CACA,qBAAAE,GACE/hH,KAAK6hH,gBAAgB,aACvB,CACA,eAAAA,CAAgBtnH,IAxxFlB,SAAwBlB,EAAMmuC,GAC5B,IAAI2vB,EAAU+oC,EAAe7mG,GACxB89D,IACHA,EAAUn/D,SAASC,cAAc,QACjCk/D,EAAQ9+D,aAAa,OAAQgB,GAC7BrB,SAASyB,KAAKC,YAAYy9D,IAE5BA,EAAQ9+D,aAAa,UAAWmvC,EAElC,CAgxFIw6E,CAAe,sBAAuBznH,EACxC,GAqCsBk8G,IAClBwL,GAAcxL,GAAQjjC,UAC5B,SAASrzC,KACPs2E,GAAQt2E,OACV,CAIA,SAAS02E,GAAM51E,EAAUrL,GACvB6gF,GAAQI,MAAM51E,EAAUrL,EAC1B,CACA,SAAS+lF,GAAoBh5G,GAC3B8zG,GAAQkF,oBAAoBh5G,EAC9B,CACA,SAASk5G,GAAuBl5G,GAC9B8zG,GAAQoF,uBAAuBl5G,EACjC,CAiBA,IAAIu/G,GAAqBzrH,OAAO0rH,OAAO,CACrC7lD,UAAW,KACXkX,UAAWyuC,GACXxL,QAASA,GACT/5E,MAAOA,GACP4/E,aAAcA,GACd1L,aAAcA,GACdxD,cAAeA,EACfjtE,MAAOA,GACP4/E,gBArCF,SAAyB9M,GACvBwD,GAAQsJ,gBAAgB9M,EAC1B,EAoCE4D,MAAOA,GACP8E,oBAAqBA,GACrBE,uBAAwBA,GACxBmE,oBA7BF,SAA6B5mH,GAC3Bq9G,GAAQuJ,oBAAoB5mH,EAC9B,EA4BE6mH,WA3BF,WACE7kH,QAAQkG,KAAK,2JACbm1G,GAAQwJ,YACV,EAyBEC,oBAxBF,SAA6Bn5D,GAC3B0vD,GAAQyJ,oBAAoBn5D,EAC9B,EAuBEq7D,iBAtBF,SAA0B/e,GACxBD,EAAeC,cAAgBA,CACjC,EAqBE8c,YApBF,SAAqB1lH,GACnBg8G,GAAQ0J,YAAY1lH,EACtB,EAmBEskH,cAAeA,KAEjB,MAAMsD,WAA+B3pH,OAybrC,SAAS4pH,GAAoBvmF,GAC3B,GAAU,MAANA,EAAY,CACd,MAAMo7B,EAAUn/D,SAAS8jC,eAAeC,GACxC,GAAIo7B,aAAmBujC,EACrB,OAAOvjC,CAEX,CACF,CACA,SAASorD,GAAgBprD,EAASqrD,GAChC,GAAIrrD,EAAS,CACX,MAAM7+D,EAAM6+D,EAAQpjC,aAAa,OACjC,GAAW,MAAPz7B,GAA6B,MAAdkqH,IA5hHKxlE,EA4hHmCwlE,EA3hHtDzmB,EA2hHiDzjG,GA3hHjCipC,MAAQw6D,EAAU/+C,GAAOzb,MA4hH5C,MAAM,IAAI7oC,MAAM,6BAA6By+D,EAAQp7B,yDAKvD,GAHIo7B,EAAQjgC,gBAAkBl/B,WAC5Bm/D,EAAUn/D,SAASgrG,WAAW7rC,GAAS,IAErCA,aAAmBujC,EAGrB,OAFAvjC,EAAQ4jC,oBACR5jC,EAAQ6jC,uBACD7jC,CAEX,CAviHF,IAA4Bna,CAwiH5B,CACA,MAAMylE,WAAsBppB,YAC1B,0BAAa4P,CAAckE,SACnBA,EAAWuV,eACnB,CACA,uBAAM3nB,GACJ,UACQ/6F,KAAK0oG,QACb,CAAE,MAAOjwG,GACP2C,QAAQ3C,MAAMA,EAChB,CAAE,QACAuH,KAAKk1D,YACP,CACF,CACA,YAAMwzC,GACJ,IAAI77F,EACJ,OAAqC,QAA7BA,EAAK7M,KAAK8oG,qBAAkC,IAAPj8F,EAAgBA,EAAK7M,KAAK8oG,cAAgB,WACrF,MAAMnwG,EAAQqH,KAAK2iH,kBACf3iH,KAAK20F,cAAch8F,WACf0lG,UACA1lG,EAAMi+C,OAAO8xD,OAAO1oG,MAE7B,EANsF,EAOzF,CACA,UAAAk1D,GACE,IACEl1D,KAAKkpC,QACP,CAAE,MAAOr8B,GAAK,CAChB,CACA,6BAAAqyG,GACEl/G,KAAK4iH,kBAAkBtqG,SAAQze,GAAKA,EAAEqvC,UACxC,CACA,qBAAI05E,GACF,IAAI/1G,EACJ,MAAMg2G,EAAmB7iH,KAAKg/G,eAAe8D,SAAQvrH,GAAK,IAAIA,EAAEkvC,YAAWjhB,QAAO3rB,KAAOA,EAAEkiC,KACrFgnF,EAAiB,KAAsC,QAA/Bl2G,EAAK7M,KAAKi/G,uBAAoC,IAAPpyG,OAAgB,EAASA,EAAG45B,WAAa,IAAKjhB,QAAO3rB,KAAOA,EAAEkiC,KAAI9+B,KAAIpD,GAAKA,EAAEkiC,KAClJ,OAAO8mF,EAAiBr9F,QAAO3rB,GAAKkpH,EAAeC,SAASnpH,EAAEkiC,KAChE,CACA,iBAAI2mF,GACF,GAAI1iH,KAAK63D,OAAQ,CACf,MAAMorD,EAAiBlE,GAAc/+G,KAAK63D,QAC1C,GAAIorD,EACF,OAAOA,EAETjjH,KAAKu5F,MAAM,iBACb,CACAv5F,KAAKu5F,MAAM,8BACb,CACA,kBAAIylB,GACF,OAAIh/G,KAAK7G,OACA6G,KAAKkjH,mBACHljH,KAAK8mC,QACP9mC,KAAKmjH,2BAEZnjH,KAAKu5F,MAAM,yCAEf,CACA,mBAAI0lB,GACF,OAAOj/G,KAAKkjG,gBAAgB17D,QAAQmJ,WAAU,EAChD,CACA,mBAAIuyD,GACF,GAA+B,OAA3BljG,KAAKgwD,kBAA4B,CACnC,MAAM83B,EAAW9nF,KAAKk3B,cAAcj/B,cAAc,YAElD,OADA+H,KAAKtG,YAAYouF,GACVA,CACT,CAAO,GAAI9nF,KAAKgwD,6BAA6BozD,oBAC3C,OAAOpjH,KAAKgwD,kBAEdhwD,KAAKu5F,MAAM,mDACb,CACA,UAAI1hC,GACF,OAAO73D,KAAK+zB,aAAa,SAC3B,CACA,UAAI56B,GACF,OAAO6G,KAAK+zB,aAAa,SAC3B,CACA,WAAI+S,GACF,OAAO9mC,KAAK+zB,aAAa,UAC3B,CACA,KAAAwlE,CAAMngG,GACJ,MAAM,IAAIV,MAAM,GAAGsH,KAAKqjH,gBAAgBjqH,IAC1C,CACA,eAAIiqH,GACF,IAAIx2G,EAAImsD,EACR,OAAkG,QAA1FA,GAAiD,QAA1CnsD,EAAK7M,KAAKyvG,UAAUtqG,MAAM,kBAA+B,IAAP0H,EAAgBA,EAAK,IAAI,UAAuB,IAAPmsD,EAAgBA,EAAK,gBACjI,CACA,qBAAI2pD,GACF,OAAO,IAAInuB,YAAY,6BAA8B,CACnDh+C,SAAS,EACTC,YAAY,EACZG,OAAQ,CACN0sE,UAAWtjH,KACX0oG,OAAQ+Z,GAAcxZ,gBAG5B,CACA,sBAAIia,GACF,IAAIr2G,EACJ,MAAMsqD,EAAwC,QAA7BtqD,EAAK7M,KAAKk3B,qBAAkC,IAAPrqB,OAAgB,EAASA,EAAGivB,eAAe97B,KAAK7G,QACtG,OAAgB,OAAZg+D,EACK,CAACA,GAED,EAEX,CACA,yBAAIgsD,GACF,IAAIt2G,EACJ,MAAM4xB,EAAyC,QAA7B5xB,EAAK7M,KAAKk3B,qBAAkC,IAAPrqB,OAAgB,EAASA,EAAGyvB,iBAAiBt8B,KAAK8mC,SACzG,OAAwB,IAApBrI,EAASjoC,OACJ2F,MAAMzF,UAAU8E,MAAM5E,KAAK6nC,GAE3B,EAEX,EAEF,MAAM8kF,WAA4BlqB,YAChC,WAAAzkE,GACEgmE,SAAS9+F,WACTkE,KAAKwjH,aAAe,IACtB,CACA,iBAAAzoB,GACE/6F,KAAKwjH,aAAexjH,KAAK1H,IAAI6M,MAAM,aAAe,IAAIs+G,UAAUzjH,KAAK1H,KAAO,IAAIorH,YAAY1jH,KAAK1H,KACjGqjH,GAAoB37G,KAAKwjH,aAC3B,CACA,oBAAAxoB,GACMh7F,KAAKwjH,cACP3H,GAAuB77G,KAAKwjH,aAEhC,CACA,OAAIlrH,GACF,OAAO0H,KAAK+zB,aAAa,QAAU,EACrC,EAEF2mE,EAAaI,oBAplBb,MACE,WAAAlmE,CAAYuiC,GACVn3D,KAAK2jH,oBAAsBC,MAC3B5jH,KAAK6jH,oBAAsB,KAC3B7jH,KAAK8jH,oBAAsB,OAC3B9jH,KAAK+jH,WAAY,EACjB/jH,KAAKgkH,eAAgB,EACrBhkH,KAAKikH,kBAAoB,IAAIjvD,IAC7Bh1D,KAAK63D,OAAS,KACd73D,KAAKiyG,oBAAsBiS,IAEzB,MAAM/rB,EADQ+rB,EAAO/sD,QACCn5B,cAAc,IAAMh+B,KAAKm3D,QAAQp7B,IACnDo8D,GAASn4F,KAAKmkH,sBAChBhsB,EAAMisB,mBAAmBpkH,KAAKmkH,qBAAqB19E,iBAE9CzmC,KAAKmkH,oBAAoB,EAElCnkH,KAAKm3D,QAAUA,EACfn3D,KAAKk3C,KAAO,IAAI4yD,EAAU9pG,KAAMA,KAAKm3D,SACrCn3D,KAAKqkH,mBAAqB,IAAI/hB,EAAmBtiG,KAAMA,KAAKm3D,SAC5Dn3D,KAAK0/G,sBAAwB,IAAIxU,EAAsBlrG,KAAMA,KAAKm3D,SAClEn3D,KAAKmrG,gBAAkB,IAAInB,EAAgBhqG,KAAMA,KAAKm3D,SACtDn3D,KAAKwyG,sBAAwB3T,IAC7B7+F,KAAK+3G,mBAAqB,IAAIzQ,EAAmBtnG,KAAMA,KAAKm3D,QAC9D,CACA,OAAAlC,GACOj1D,KAAK+jH,YACR/jH,KAAK+jH,WAAY,EACb/jH,KAAKskH,cAAgBpqB,EAAkBuB,KACzCz7F,KAAKqkH,mBAAmBlkF,QAExBngC,KAAKukH,gBAEPvkH,KAAK0/G,sBAAsBv/E,QAC3BngC,KAAKmrG,gBAAgBhrE,QACrBngC,KAAK+3G,mBAAmB53E,QAE5B,CACA,UAAA+0B,GACMl1D,KAAK+jH,YACP/jH,KAAK+jH,WAAY,EACjB/jH,KAAKqkH,mBAAmB/1E,OACxBtuC,KAAK0/G,sBAAsBpxE,OAC3BtuC,KAAKmrG,gBAAgB78D,OACrBtuC,KAAK+3G,mBAAmBzpE,OAE5B,CACA,eAAAitD,GACMv7F,KAAKskH,cAAgBpqB,EAAkBwB,OACzC17F,KAAKukH,eAET,CACA,gBAAAjpB,GACMt7F,KAAKwkH,oBAAoB,SACzBxkH,KAAKm3D,QAAQkD,cACfr6D,KAAK+kD,UAAW,IAEd/kD,KAAKskH,cAAgBpqB,EAAkBwB,OAAS17F,KAAKgkH,gBACvDhkH,KAAKukH,gBAET,CACA,iBAAArpB,GACE,MAAM5iG,EAAM0H,KAAKm3D,QAAQ7+D,IAMzB,OALA0H,KAAKykH,2BAA2B,YAAY,KAC1CzkH,KAAKm3D,QAAQ36B,gBAAgB,WAAW,IAE1Cx8B,KAAKm3D,QAAQ7+D,IAAM,KACnB0H,KAAKm3D,QAAQ7+D,IAAMA,EACZ0H,KAAKm3D,QAAQ0jC,MACtB,CACA,eAAAQ,GACMr7F,KAAKwkH,oBAAoB,aAC7BxkH,KAAKukH,eACP,CACA,mBAAAnpB,GACMp7F,KAAKskH,cAAgBpqB,EAAkBuB,KACzCz7F,KAAKqkH,mBAAmBlkF,SAExBngC,KAAKqkH,mBAAmB/1E,OACxBtuC,KAAKukH,gBAET,CACA,mBAAMA,GACAvkH,KAAKyhC,SAAWzhC,KAAKy8E,WAAaz8E,KAAK+kD,UAAY/kD,KAAK0kH,YAC1D1kH,KAAKm3D,QAAQ0jC,OAAS76F,KAAK62G,MAAM9a,EAAU/7F,KAAK0kH,YAChD1kH,KAAKqkH,mBAAmB/1E,aAClBtuC,KAAKm3D,QAAQ0jC,OACnB76F,KAAKgkH,eAAgB,EAEzB,CACA,kBAAMnP,CAAarT,IACbA,EAAc9D,YAAc8D,EAAcnE,WAAamE,EAAc7D,UACvE39F,KAAK0kH,UAAYljB,EAAcvyC,SAASjD,KAE1C,IACE,MAAMlS,QAAa0nD,EAAc5D,aACjC,GAAI9jD,EAAM,CACR,MAAM9hD,EAAWsmG,EAAkBxkD,GACd82D,GAAaE,aAAa94G,GAC9B85G,kBACT9xG,KAAK2kH,kBAAkBnjB,EAAexpG,SAEtCgI,KAAK4kH,+BAA+BpjB,EAE9C,CACF,CAAE,QACAxhG,KAAK2jH,oBAAsB,MAC7B,CACF,CACA,yBAAAjhB,CAA0BvrC,GACxBn3D,KAAK6kH,kCAAkC1tD,EAASA,GAChDn3D,KAAKukH,eACP,CACA,4BAAAnZ,CAA6BrU,GAC3B,OAAO/2F,KAAK8kH,0BAA0B/tB,EACxC,CACA,2BAAA2U,CAA4B3U,EAAMihB,EAAWpiB,GAC3C,MAAMuC,EAAQn4F,KAAKk4G,iBAAiBnhB,GAChCoB,GAAOvC,EAAKv9F,aAAa,mBAAoB8/F,EAAMp8D,GACzD,CACA,wBAAAquE,CAAyBjzC,EAAS6gD,EAAWzN,GAC3C,OAAOvqG,KAAK8kH,0BAA0B3tD,EACxC,CACA,oBAAAkzC,CAAqBlzC,EAASl2B,GAC5BjhC,KAAK+kH,cAAc5tD,EAASl2B,EAC9B,CACA,cAAA2mE,CAAezwC,EAASuiC,GACtB,OAAOviC,EAAQpwB,QAAQ,gBAAkB/mC,KAAKm3D,SAAWn3D,KAAK8kH,0BAA0B3tD,EAASuiC,EACnG,CACA,aAAAmO,CAAc1wC,EAASuiC,GACjB15F,KAAK4lG,gBACP5lG,KAAK4lG,eAAet3D,OAEtBtuC,KAAK4lG,eAAiB,IAAIxC,EAAepjG,KAAMm3D,EAASuiC,GACxD,MAAMuK,EAAejkG,KAAK4lG,eAAe3B,aACzCjkG,KAAKihG,eAAegD,GACpBjkG,KAAK4lG,eAAezlE,OACtB,CACA,cAAA8gE,CAAe3nG,GACb,IAAIuT,EACJvT,EAAQo1D,QAAQ,eAAiB1uD,KAAK+7B,IACO,QAAxClvB,EAAK7M,KAAKglH,gCAA6C,IAAPn4G,OAAgB,EAASA,EAAG6tD,aAAa,uBAC5FphE,EAAQ6oG,mBAAmBW,EAAc12C,YAE7C,CACA,cAAA+0C,CAAesE,GACbzG,EAAWh/F,KAAKm3D,QAClB,CACA,gCAAAsqC,CAAiCgE,EAAUmQ,GACzC51G,KAAK8jH,qBACP,CACA,kCAAMpiB,CAA6BpoG,EAAS21D,SACpCjvD,KAAK60G,aAAa5lD,GACxBjvD,KAAK8jH,qBACP,CACA,+BAAMniB,CAA0BroG,EAAS21D,SACjCjvD,KAAK60G,aAAa5lD,GACxBjvD,KAAK8jH,qBACP,CACA,cAAAxiB,CAAehoG,EAASb,GACtB2C,QAAQ3C,MAAMA,GACduH,KAAK8jH,qBACP,CACA,eAAAviB,CAAgBkE,GACdrG,EAAep/F,KAAKm3D,QACtB,CACA,qBAAA0uC,CAAsBof,GACpB,IAAI1hB,EAAc0hB,EAAO1hB,YACzBvE,EAAWuE,EAAavjG,KAAKk4G,iBAAiB3U,GAChD,CACA,mCAAA4C,CAAoCP,EAAgB32C,GAClD,MAAMkpC,EAAQn4F,KAAKk4G,iBAAiBtS,EAAerC,YAAaqC,EAAelM,WAC/EvB,EAAMxkC,SAASkxD,kCAAkC1sB,EAAOyN,EAAerC,YAAaqC,EAAelM,WACnGvB,EAAMxkC,SAASkhD,aAAa5lD,GACvB22C,EAAe9D,QAClB2U,GAAQwJ,YAEZ,CACA,gCAAAna,CAAiCF,EAAgBpE,GAC/CxhG,KAAKm3D,QAAQxD,SAASkhD,aAAarT,GACnCiV,GAAQwJ,YACV,CACA,qBAAAha,CAAsBL,EAAgBntG,GACpC2C,QAAQ3C,MAAMA,EAChB,CACA,sBAAA4tG,CAAuB6e,GACrB,IAAI3hB,EAAc2hB,EAAO3hB,YACzBnE,EAAemE,EAAavjG,KAAKk4G,iBAAiB3U,GACpD,CACA,qBAAA2F,CAAsBic,EAAQvvF,GAC5B,IAAIwvF,EAAWD,EAAOhuD,QACtB,MAAMx+D,EAAQy7C,EAAS,4BAA6B,CAClDj7C,OAAQ6G,KAAKm3D,QACbvgB,OAAQngD,OAAO46B,OAAO,CACpB+zF,YACCxvF,GACH6gB,YAAY,IAERN,EAAmBx9C,EAAMw9C,iBAC7BuyD,EAAS/vG,EAAMi+C,OAAO8xD,OAIxB,OAHI1oG,KAAKk3C,KAAKyxD,UAAYD,IACxB1oG,KAAKk3C,KAAKyxD,SAASM,cAAgBP,IAE7BvyD,CACV,CACA,oBAAAizD,CAAqByX,EAAWC,GAAa,CAC7C,yBAAAzX,CAA0BlyC,GACxBs/C,GAAQpN,0BAA0BlyC,EACpC,CACA,eAAAuyC,GAAmB,CACnB,eAAAqE,CAAgBb,EAAgBmY,GAC9BrlH,KAAKmkH,qBAAuBjX,EAAev8D,WAAU,EACvD,CACA,uBAAMg0E,CAAkBnjB,EAAexpG,GACrC,MAAMstH,QAAwBtlH,KAAKulH,2BAA2BvtH,EAASg4C,MACvE,GAAIs1E,EAAiB,CACnB,MAAMpe,EAAW,IAAIR,EAAS4e,GACxB3c,EAAW,IAAIyE,EAAcptG,KAAMA,KAAKk3C,KAAKgwD,SAAUA,EAAUkG,EAAcnE,eAAe,GAAO,GACvGjpG,KAAKk3C,KAAK4xD,qBAAqB9oG,KAAKk3C,KAAK4xD,cAC7C9oG,KAAK8zG,sBACC9zG,KAAKk3C,KAAKwxD,OAAOC,GACvB3oG,KAAK+kD,UAAW,EAChB0xD,GAAQyK,cAAc1f,EAAexhG,KAAKm3D,SAC1Cs/C,GAAQuK,YAAYhhH,KAAKm3D,SACzBn3D,KAAK2jH,oBAAoBniB,EAC3B,MAAWxhG,KAAKwlH,mCAAmChkB,IACjDxhG,KAAKylH,+BAA+BjkB,EAExC,CACA,WAAMqV,CAAM7qD,GACV,IAAIn/C,EACJ,MAAMvT,EAAU,IAAI+mG,EAAargG,KAAMm6F,EAAYhgG,IAAK6xD,EAAK,IAAIs0C,gBAAmBtgG,KAAKm3D,SAGzF,OAFoC,QAAnCtqD,EAAK7M,KAAK6jH,2BAAwC,IAAPh3G,GAAyBA,EAAGi0F,SACxE9gG,KAAK6jH,oBAAsBvqH,EACpB,IAAI3B,SAAQC,IACjBoI,KAAK8jH,oBAAsB,KACzB9jH,KAAK8jH,oBAAsB,OAC3B9jH,KAAK6jH,oBAAsB,KAC3BjsH,GAAS,EAEX0B,EAAQynG,SAAS,GAErB,CACA,aAAAgkB,CAAc5tD,EAASnL,EAAK0tC,GAC1B,MAAMvB,EAAQn4F,KAAKk4G,iBAAiB/gD,EAASuiC,GAC7CvB,EAAMxkC,SAASkxD,kCAAkC1sB,EAAOhhC,EAASuiC,GACjE15F,KAAK0lH,6BAA6BvuD,GAAS,KACzCghC,EAAM7/F,IAAM0zD,CAAG,GAEnB,CACA,iCAAA64D,CAAkC1sB,EAAOhhC,EAASuiC,GAEhD,GADA15F,KAAK63D,OAASioC,EAAepG,EAAWviC,EAASghC,GAC7Cn4F,KAAK63D,OAAQ,CACf,MAAM8tD,EAAe/U,GAAaG,YAAY5Y,GAAOh2E,QAC/C8vF,EAAsB9Z,EAAMxkC,SAASs+C,oBAC3C9Z,EAAMxkC,SAASgwD,oBAAsBniB,IACnC,GAAIrJ,EAAM7/F,IAAK,CACb,MAQMs9B,EAAU,CACdq5B,SANe,CACfxB,WAJiB+zC,EAAc/zC,WAK/BiwC,WAJa8D,EAAc9D,WAK3BE,aAJmBzF,EAAMjhE,cAAcT,gBAAgBg5E,WAQvDwC,sBACApF,YAAY,EACZqF,eAAe,EACfM,sBAAuBxyG,KAAKwyG,sBAC5BtL,SAAUye,GAER3lH,KAAK63D,SAAQjiC,EAAQiiC,OAAS73D,KAAK63D,QACvC4+C,GAAQI,MAAM1e,EAAM7/F,IAAKs9B,EAC3B,EAEJ,CACF,CACA,aAAAk+E,GACE,GAAI9zG,KAAK63D,OAAQ,CACf,MAAM5vB,EAASy3D,EAA0B1/F,KAAK63D,QAC9C4+C,GAAQ9W,QAAQziB,OAAOj1C,EAAQ8zD,EAAU/7F,KAAKm3D,QAAQ7+D,KAAO,IAAK0H,KAAKwyG,sBACzE,CACF,CACA,oCAAMoS,CAA+BpjB,GACnCpmG,QAAQkG,KAAK,iBAAiBkgG,EAAc/zC,qCAAqCztD,KAAKm3D,QAAQp7B,0EACxF/7B,KAAK4lH,cAAcpkB,EAAcvyC,SACzC,CACA,kCAAAu2D,CAAmChkB,GACjC,IAAIppC,EAAQp4D,KACZA,KAAKm3D,QAAQ9+D,aAAa,WAAY,IACtC,MAAM42D,EAAWuyC,EAAcvyC,SASzBt2D,EAAQy7C,EAAS,sBAAuB,CAC5Cj7C,OAAQ6G,KAAKm3D,QACbvgB,OAAQ,CACNqY,WACA4nD,MAZU1qD,eAAgBH,GAC5B,IAAIp2B,EAAU95B,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EkwD,aAAe65D,SACjBztD,EAAMwtD,cAAc55D,GAEpByqD,GAAQI,MAAM7qD,EAAKp2B,EAEvB,GAOE6gB,YAAY,IAEd,OAAQ99C,EAAMw9C,gBAChB,CACA,8BAAAsvE,CAA+BjkB,GAC7BxhG,KAAKk3C,KAAK6yD,UACV/pG,KAAK8lH,uBAAuBtkB,EAC9B,CACA,sBAAAskB,CAAuBtkB,GACrB,MAAMpoG,EAAU,iBAAiBooG,EAAc/zC,6DAA6DztD,KAAKm3D,QAAQp7B,qGACzH,MAAM,IAAIsmF,GAAuBjpH,EACnC,CACA,mBAAMwsH,CAAc32D,GAClB,MAAM82D,EAAU,IAAI3oB,EAAcnuC,GAC5B2uC,QAAqBmoB,EAAQnoB,aAC7B38D,EAAW8kF,EAAQ9kF,SACvBy8D,EAAaqoB,EAAQroB,WACrBjwC,EAAas4D,EAAQt4D,WACvB,OAAOgpD,GAAQI,MAAM51E,EAAU,CAC7BguB,SAAU,CACRyuC,aACAjwC,aACAmwC,iBAGN,CACA,gBAAAsa,CAAiB/gD,EAASuiC,GACxB,IAAI7sF,EAEJ,OAA0C,QAAlCA,EAAKy1G,GADFvuF,EAAa,mBAAoB2lE,EAAWviC,IAAYn3D,KAAKm3D,QAAQpjC,aAAa,kBACpC,IAAPlnB,EAAgBA,EAAK7M,KAAKm3D,OAC9E,CACA,gCAAMouD,CAA2B9oE,GAC/B,IAAI0a,EACJ,MAAMp7B,EAAKiqF,IAAInrF,OAAO76B,KAAK+7B,IAC3B,IAEE,GADAo7B,EAAUorD,GAAgB9lE,EAAUze,cAAc,eAAejC,KAAO/7B,KAAK0kH,WACzEvtD,EACF,OAAOA,EAGT,GADAA,EAAUorD,GAAgB9lE,EAAUze,cAAc,6BAA6BjC,MAAQ/7B,KAAK0kH,WACxFvtD,EAEF,aADMA,EAAQ0jC,aACD76F,KAAKulH,2BAA2BpuD,EAEjD,CAAE,MAAO1+D,GAEP,OADA2C,QAAQ3C,MAAMA,GACP,IAAIiiG,CACb,CACA,OAAO,IACT,CACA,qBAAAurB,CAAsBrwB,EAAM8D,GAE1B,OAAOsD,EAAoBjB,EADZM,EAAUzG,EAAM8D,IACe15F,KAAKi9F,aACrD,CACA,yBAAA6nB,CAA0B3tD,EAASuiC,GACjC,MAAM39D,EAAKhI,EAAa,mBAAoB2lE,EAAWviC,IAAYn3D,KAAKm3D,QAAQpjC,aAAa,UAC7F,GAAIojC,aAAmB0iC,kBAAoB75F,KAAKimH,sBAAsB9uD,EAASuiC,GAC7E,OAAO,EAET,IAAK15F,KAAKyhC,SAAiB,QAAN1F,EACnB,OAAO,EAET,GAAIA,EAAI,CACN,MAAM0xE,EAAe6U,GAAoBvmF,GACzC,GAAI0xE,EACF,OAAQA,EAAapyE,QAEzB,CACA,QAAKo7E,GAAQ4B,qBAAqBlhD,MAG9BuiC,IAAc+c,GAAQ4B,qBAAqB3e,GAIjD,CACA,MAAI39D,GACF,OAAO/7B,KAAKm3D,QAAQp7B,EACtB,CACA,WAAI0F,GACF,OAAQzhC,KAAKm3D,QAAQ97B,QACvB,CACA,aAAIqpF,GACF,GAAI1kH,KAAKm3D,QAAQ7+D,IACf,OAAO0H,KAAKm3D,QAAQ7+D,GAExB,CACA,aAAIosH,CAAUA,GACZ1kH,KAAKykH,2BAA2B,OAAO,KACrCzkH,KAAKm3D,QAAQ7+D,IAAoB,OAAdosH,QAAoC,IAAdA,EAAuBA,EAAY,IAAI,GAEpF,CACA,gBAAIJ,GACF,OAAOtkH,KAAKm3D,QAAQqkC,OACtB,CACA,aAAIK,GACF,YAA+BtiG,IAAxByG,KAAK4lG,qBAA+DrsG,IAA/ByG,KAAK8jH,qBACnD,CACA,YAAI/+D,GACF,OAAO/kD,KAAKm3D,QAAQuD,aAAa,WACnC,CACA,YAAI3V,CAASxqD,GACXyF,KAAKykH,2BAA2B,YAAY,KACtClqH,EACFyF,KAAKm3D,QAAQ9+D,aAAa,WAAY,IAEtC2H,KAAKm3D,QAAQ36B,gBAAgB,WAC/B,GAEJ,CACA,YAAIigD,GACF,OAAOz8E,KAAKm3D,QAAQslB,UAAYz8E,KAAK+jH,SACvC,CACA,gBAAI9mB,GACF,IAAIpwF,EACJ,MAAMwnF,EAAOr0F,KAAKm3D,QAAQjgC,cAAc8G,cAAc,2BAEtD,OAAO+9D,EAD0E,QAAnElvF,EAAc,OAATwnF,QAA0B,IAATA,OAAkB,EAASA,EAAK7sD,eAA4B,IAAP36B,EAAgBA,EAAK,IAEhH,CACA,mBAAA23G,CAAoBjrD,GAClB,OAAOv5D,KAAKikH,kBAAkBnjF,IAAIy4B,EACpC,CACA,0BAAAkrD,CAA2BlrD,EAAev9D,GACxCgE,KAAKikH,kBAAkB3xG,IAAIinD,GAC3Bv9D,IACAgE,KAAKikH,kBAAkB3uD,OAAOiE,EAChC,CACA,4BAAAmsD,CAA6BvuD,EAASn7D,GACpCgE,KAAKglH,yBAA2B7tD,EAChCn7D,WACOgE,KAAKglH,wBACd,QA+JwCzrH,IAAtC2/F,eAAe/+F,IAAI,gBACrB++F,eAAegtB,OAAO,cAAexrB,QAEInhG,IAAvC2/F,eAAe/+F,IAAI,iBACrB++F,eAAegtB,OAAO,eAAgBzD,SAEUlpH,IAA9C2/F,eAAe/+F,IAAI,wBACrB++F,eAAegtB,OAAO,sBAAuB3C,IAE/C,MACE,IAAIpsD,EAAUn/D,SAASmuH,cACvB,GAAKhvD,IACDA,EAAQuD,aAAa,+BAEzB,IADAvD,EAAUA,EAAQ+I,cACX/I,GAAS,CACd,GAAIA,GAAWn/D,SAASg4C,KACtB,OAAO50C,QAAQkG,KAAKi9F,CAAQ;;;;;;;;;QASzBpnC,EAAQs4C,WAEbt4C,EAAUA,EAAQ+I,aACpB,CACD,EApBD,GAqBA5kE,OAAO4mH,MAAQA,GACf/hF,I,+BCn7HA,IAAIimF,EAAe,EAAQ,IAEvBC,EAAcD,EAAazsH,IAI/BtC,EAAOD,QAAUgvH,EAAaE,WAAa,SAAUlpF,GACnD,MAA0B,mBAAZA,GAA0BA,IAAaipF,CACvD,EAAI,SAAUjpF,GACZ,MAA0B,mBAAZA,CAChB,C,gCCVA,IAAImpF,EAAc,EAAQ,IAEtBC,EAAoBnkH,SAAS3L,UAC7BE,EAAO4vH,EAAkB5vH,KACzB6vH,EAAsBF,GAAeC,EAAkB1rH,KAAKA,KAAKlE,EAAMA,GAE3ES,EAAOD,QAAUmvH,EAAcE,EAAsB,SAAUtpH,GAC7D,OAAO,WACL,OAAOvG,EAAKiF,MAAMsB,EAAIrB,UACxB,CACF,C,+BCTA1E,EAAQsD,YAAa,EACrB,IAAIgsH,EAAa,CAAC,cAAe,WAAY,aAAc,gBAAiB,UAAW,OAAQ,SAAU,SACzG,SAASC,EAAUvtH,EAASw6B,GAC1B,IAAIgzF,EAAMhzF,GAAQA,EAAKgzF,IACrBhoB,OAAOrlG,EACPstH,OAAgBttH,EAChButH,OAASvtH,EACTwtH,OAAYxtH,EACVqtH,IACFhoB,EAAOgoB,EAAIzmF,MAAMy+D,KACjBioB,EAAgBD,EAAIlxF,IAAIkpE,KACxBkoB,EAASF,EAAIzmF,MAAM2mF,OACnBC,EAAYH,EAAIlxF,IAAIoxF,OACpB1tH,GAAW,MAAQwlG,EAAO,IAAMkoB,GAKlC,IAHA,IAAIpiG,EAAMhsB,MAAMhC,UAAUk+B,YAAYh+B,KAAKoJ,KAAM5G,GAGxCsnC,EAAM,EAAGA,EAAMgmF,EAAWlwH,OAAQkqC,IACzC1gC,KAAK0mH,EAAWhmF,IAAQhc,EAAIgiG,EAAWhmF,IAIrChoC,MAAMsuH,mBACRtuH,MAAMsuH,kBAAkBhnH,KAAM2mH,GAEhC,IACMC,IACF5mH,KAAKinH,WAAaroB,EAClB5+F,KAAK6mH,cAAgBA,EAIjBpwH,OAAOwD,gBACTxD,OAAOwD,eAAe+F,KAAM,SAAU,CACpCzF,MAAOusH,EACP5sH,YAAY,IAEdzD,OAAOwD,eAAe+F,KAAM,YAAa,CACvCzF,MAAOwsH,EACP7sH,YAAY,MAGd8F,KAAK8mH,OAASA,EACd9mH,KAAK+mH,UAAYA,GAGvB,CAAE,MAAOG,GAET,CACF,CACAP,EAAUjwH,UAAY,IAAIgC,MAC1BtB,EAAiB,QAAIuvH,EACrBtvH,EAAOD,QAAUA,EAAiB,O,mBCvDlC,kBAKM,cAAeY,SAASC,cAAc,MAC1C,SAAWi/C,GACT,aAEA,GAAM,YAAaA,EAAnB,CACA,IAAIiwE,EAAgB,YAClBC,EAAY,YACZC,EAAenwE,EAAK+gB,QAAQmvD,GAC5BE,EAAS7wH,OACT8wH,EAAUziG,OAAOsiG,GAAW9yD,MAAQ,WAClC,OAAOt0D,KAAKoF,QAAQ,aAAc,GACpC,EACAoiH,EAAarrH,MAAMirH,GAAWt6G,SAAW,SAAU2Y,GAGjD,IAFA,IAAInvB,EAAI,EACN2J,EAAMD,KAAKxJ,OACNF,EAAI2J,EAAK3J,IACd,GAAIA,KAAK0J,MAAQA,KAAK1J,KAAOmvB,EAC3B,OAAOnvB,EAGX,OAAQ,CACV,EAGAmxH,EAAQ,SAAUxuH,EAAMG,GACtB4G,KAAK3G,KAAOJ,EACZ+G,KAAK2zB,KAAOgmE,aAAa1gG,GACzB+G,KAAK5G,QAAUA,CACjB,EACAsuH,EAAwB,SAAUx4C,EAAWrqE,GAC3C,GAAc,KAAVA,EACF,MAAM,IAAI4iH,EAAM,aAAc,8CAEhC,GAAI,KAAK5hH,KAAKhB,GACZ,MAAM,IAAI4iH,EAAM,wBAAyB,wCAE3C,OAAOD,EAAW5wH,KAAKs4E,EAAWrqE,EACpC,EACA8iH,EAAY,SAAUjzF,GAKpB,IAJA,IAAIkzF,EAAiBL,EAAQ3wH,KAAK89B,EAAKX,aAAa,UAAY,IAC9DywC,EAAUojD,EAAiBA,EAAe35G,MAAM,OAAS,GACzD3X,EAAI,EACJ2J,EAAMukE,EAAQhuE,OACTF,EAAI2J,EAAK3J,IACd0J,KAAKlJ,KAAK0tE,EAAQluE,IAEpB0J,KAAK6nH,iBAAmB,WACtBnzF,EAAKr8B,aAAa,QAAS2H,KAAK5D,WAClC,CACF,EACA0rH,EAAiBH,EAAUP,GAAa,GACxCW,EAAkB,WAChB,OAAO,IAAIJ,EAAU3nH,KACvB,EAgEF,GA7DAynH,EAAML,GAAa1uH,MAAM0uH,GACzBU,EAAeriG,KAAO,SAAUnvB,GAC9B,OAAO0J,KAAK1J,IAAM,IACpB,EACAwxH,EAAepwF,SAAW,SAAU7yB,GAElC,OAA+C,IAAxC6iH,EAAsB1nH,KAD7B6E,GAAS,GAEX,EACAijH,EAAex1G,IAAM,WACnB,IAGEzN,EAHE0H,EAASzQ,UACXxF,EAAI,EACJgB,EAAIiV,EAAO/V,OAEXwxH,GAAU,EACZ,IAE8C,IAAxCN,EAAsB1nH,KAD1B6E,EAAQ0H,EAAOjW,GAAK,MAElB0J,KAAKlJ,KAAK+N,GACVmjH,GAAU,WAEH1xH,EAAIgB,GACX0wH,GACFhoH,KAAK6nH,kBAET,EACAC,EAAe5+E,OAAS,WACtB,IAGErkC,EAEAmpB,EALEzhB,EAASzQ,UACXxF,EAAI,EACJgB,EAAIiV,EAAO/V,OAEXwxH,GAAU,EAEZ,GAGE,IADAh6F,EAAQ05F,EAAsB1nH,KAD9B6E,EAAQ0H,EAAOjW,GAAK,KAEF,IAAX03B,GACLhuB,KAAK21B,OAAO3H,EAAO,GACnBg6F,GAAU,EACVh6F,EAAQ05F,EAAsB1nH,KAAM6E,WAE7BvO,EAAIgB,GACX0wH,GACFhoH,KAAK6nH,kBAET,EACAC,EAAe13E,OAAS,SAAUvrC,EAAOojH,GACvCpjH,GAAS,GACT,IAAIkW,EAAS/a,KAAK03B,SAAS7yB,GACzBojC,EAASltB,GAAmB,IAAVktG,GAAkB,UAAqB,IAAVA,GAAmB,MAIpE,OAHIhgF,GACFjoC,KAAKioC,GAAQpjC,IAED,IAAVojH,IAA4B,IAAVA,EACbA,GAECltG,CAEZ,EACA+sG,EAAe1rH,SAAW,WACxB,OAAO4D,KAAK+B,KAAK,IACnB,EACIulH,EAAOrtH,eAAgB,CACzB,IAAIiuH,EAAoB,CACtB/tH,IAAK4tH,EACL7tH,YAAY,EACZmzC,cAAc,GAEhB,IACEi6E,EAAOrtH,eAAeotH,EAAcF,EAAee,EACrD,CAAE,MAAOpgF,IAEY,aAAfA,EAAGhkC,SACLokH,EAAkBhuH,YAAa,EAC/BotH,EAAOrtH,eAAeotH,EAAcF,EAAee,GAEvD,CACF,MAAWZ,EAAOF,GAAWe,kBAC3Bd,EAAac,iBAAiBhB,EAAeY,EAjIf,CAmIjC,CAtID,CAsIG5hF,MAmBL,SAAW+Q,GACT,aAGA,GADAA,EAAK+kD,IAAM/kD,EAAK+kD,KAAO/kD,EAAKkxE,UACxBlxE,EAAKmxE,MAAQnxE,EAAK+kD,IACpB,IAEE,YADA,IAAIosB,IAEN,CAAE,MAAO9wH,GAAI,CAKf,IAAI+wH,EAAcpxE,EAAKoxE,aAAepxE,EAAKqxE,mBAAqBrxE,EAAKsxE,gBAAkB,SAAUtxE,GAC/F,IAAIuxE,EAAY,SAAUztH,GACtB,OAAOvE,OAAOC,UAAU0F,SAASxF,KAAKoE,GAAQmK,MAAM,sBAAsB,EAC5E,EACAujH,EAAkB,WAChB1oH,KAAK/J,KAAO,EACd,EACA0yH,EAAW,SAAc1yH,EAAMgD,EAAMwrG,GACnCzkG,KAAK/J,KAAOA,EACZ+J,KAAK27D,KAAO1lE,EAAKO,OACjBwJ,KAAK/G,KAAOA,EACZ+G,KAAKykG,SAAWA,CAClB,EACAmkB,EAAYF,EAAgBhyH,UAC5BmyH,EAAWF,EAASjyH,UACpBoyH,EAAiB5xE,EAAK4xE,eACtBC,EAAgB,SAAU9vH,GACxB+G,KAAK2zB,KAAO3zB,KAAKA,KAAK3G,KAAOJ,EAC/B,EACA+vH,EAAgB,8HAAqI/6G,MAAM,KAC3Jg7G,EAAeD,EAAcxyH,OAC7B0yH,EAAWhyE,EAAK+kD,KAAO/kD,EAAKkxE,WAAalxE,EACzCiyE,EAAyBD,EAASE,gBAClCC,EAAyBH,EAASI,gBAClCrtB,EAAMitB,EACNK,EAAOryE,EAAKqyE,KACZC,EAAOtyE,EAAKsyE,KACZC,EAAcvyE,EAAKuyE,YACnBC,EAAaxyE,EAAKwyE,WAClB9sB,EAAS,yCAEX,IADA+rB,EAASgB,KAAOd,EAASc,MAAO,EACzBV,KACLF,EAAcryH,UAAUsyH,EAAcC,IAAiBA,EAAe,EAyGxE,OAtGKC,EAASE,kBACZntB,EAAM/kD,EAAK+kD,IAAM,SAAU2tB,GACzB,IACEC,EADEC,EAAW9xH,SAAS+xH,gBAAgB,+BAAgC,KAWxE,OATAD,EAASvoF,KAAOqoF,EACV,WAAYE,IACwB,UAApCA,EAAS79D,SAASzjD,cACpBshH,EAASltB,OAAS,MAElBitB,EAAaD,EAAIzkH,MAAMy3F,GACvBktB,EAASltB,OAASitB,GAAcA,EAAW,KAGxCC,CACT,GAEF7tB,EAAImtB,gBAAkB,SAAUY,GAC9B,IACEC,EADEhxH,EAAO+wH,EAAK/wH,KAKhB,OAHa,OAATA,IACFA,EAAO,4BAEL+wH,aAAgBrB,GAClBsB,EAAkB,QAAUhxH,EACN,WAAlB+wH,EAAKvlB,SACAwlB,EAAkB,WAAaD,EAAK/zH,KAChB,QAAlB+zH,EAAKvlB,SACPwlB,EAAkB,IAAM3kB,mBAAmB0kB,EAAK/zH,MAErDszH,EACKU,EAAkB,WAAaV,EAAKS,EAAK/zH,MAEzCg0H,EAAkB,IAAM9/D,mBAAmB6/D,EAAK/zH,OAEhDkzH,EACFA,EAAuBvyH,KAAKsyH,EAAUc,QADxC,CAGT,EACA/tB,EAAIqtB,gBAAkB,SAAUY,GACK,UAA/BA,EAAWC,UAAU,EAAG,IAAkBd,GAC5CA,EAAuBzyH,KAAKsyH,EAAUgB,EAE1C,EACAtB,EAAUpuE,OAAS,SAAUvkD,GAC3B,IAAIm0H,EAAKpqH,KAAK/J,KAEd,GAAIyzH,IAAezzH,aAAgBwzH,GAAexzH,aAAgByzH,GAAa,CAK7E,IAJA,IAAIW,EAAM,GACRC,EAAM,IAAIZ,EAAWzzH,GACrBK,EAAI,EACJi0H,EAAUD,EAAI9zH,OACTF,EAAIi0H,EAASj0H,IAClB+zH,GAAOvlG,OAAOkW,aAAasvF,EAAIh0H,IAEjC8zH,EAAGtzH,KAAKuzH,EACV,MAAO,GAAwB,SAApB5B,EAAUxyH,IAAwC,SAApBwyH,EAAUxyH,GAAkB,CACnE,IAAI6yH,EAKF,MAAM,IAAIC,EAAc,oBAJxB,IAAIyB,EAAK,IAAI1B,EACbsB,EAAGtzH,KAAK0zH,EAAGC,mBAAmBx0H,GAKlC,MAAWA,aAAgB0yH,EACH,WAAlB1yH,EAAKwuG,UAAyB+kB,EAChCY,EAAGtzH,KAAK0yH,EAAKvzH,EAAKA,OACS,QAAlBA,EAAKwuG,SACd2lB,EAAGtzH,KAAKwuG,mBAAmBrvG,EAAKA,OACL,QAAlBA,EAAKwuG,UACd2lB,EAAGtzH,KAAKb,EAAKA,OAGK,kBAATA,IACTA,GAAQ,IAGVm0H,EAAGtzH,KAAK4zH,SAASvgE,mBAAmBl0D,KAExC,EACA2yH,EAAU+B,QAAU,SAAU1xH,GAI5B,OAHK6C,UAAUtF,SACbyC,EAAO,MAEF,IAAI0vH,EAAS3oH,KAAK/J,KAAK8L,KAAK,IAAK9I,EAAM,MAChD,EACA2vH,EAAUxsH,SAAW,WACnB,MAAO,sBACT,EACAysH,EAASrtH,MAAQ,SAAU2kC,EAAOzK,EAAKz8B,GACrC,IAAI4I,EAAO/F,UAAUtF,OAIrB,OAHIqL,EAAO,IACT5I,EAAO,MAEF,IAAI0vH,EAAS3oH,KAAK/J,KAAKuF,MAAM2kC,EAAOt+B,EAAO,EAAI6zB,EAAM11B,KAAK/J,KAAKO,QAASyC,EAAM+G,KAAKykG,SAC5F,EACAokB,EAASzsH,SAAW,WAClB,MAAO,eACT,EACAysH,EAAS97C,MAAQ,WACf/sE,KAAK27D,KAAO,SACL37D,KAAK/J,IACd,EACOyyH,CACT,CA1IuF,CA0IrFxxE,GACFA,EAAKmxE,KAAO,SAAUuC,EAAWh1F,GAC/B,IAAI38B,EAAO28B,GAAUA,EAAQ38B,MAAa,GACtC4xH,EAAU,IAAIvC,EAClB,GAAIsC,EACF,IAAK,IAAIt0H,EAAI,EAAG2J,EAAM2qH,EAAUp0H,OAAQF,EAAI2J,EAAK3J,IAC3CozH,YAAckB,EAAUt0H,aAAcozH,WACxCmB,EAAQrwE,OAAOowE,EAAUt0H,GAAGw0H,QAE5BD,EAAQrwE,OAAOowE,EAAUt0H,IAI/B,IAAI0zH,EAAOa,EAAQF,QAAQ1xH,GAI3B,OAHK+wH,EAAKxuH,OAASwuH,EAAKe,cACtBf,EAAKxuH,MAAQwuH,EAAKe,aAEbf,CACT,EACA,IAAIl3F,EAAiBr8B,OAAOq8B,gBAAkB,SAAU93B,GACtD,OAAOA,EAAOshE,SAChB,EACAplB,EAAKmxE,KAAK3xH,UAAYo8B,EAAe,IAAIokB,EAAKmxE,KAC/C,CA9KD,CA8KmB,qBAATliF,MAAwBA,MAA0B,qBAAX7qC,QAA0BA,QAAU0E,KAAKwnC,SAAWxnC,MACrG,SAAWkhC,EAAMxO,GACf,aAEkE,qBAAZmY,GAA2BA,GAAWA,EAAQmgF,UAAYngF,EAAQmgF,SAASC,UAC5F,kBAAX5zH,OAKvB,KAFD,aACE,OAAOq7B,CACR,gCAJDr7B,EAAOD,QAAUs7B,CAQpB,CAbD,CAaG1yB,EAAM,WACP,aAEA,SAASkrH,EAAazsF,EAAU7I,GAG9B,OAAO51B,KAAKu0B,KAAKkK,EAAU7I,EAC7B,CA29BA,IAGMu1F,EAi3CAr8C,EA8cAs8C,EAyGAC,EAsSAC,EA2hBAC,EA2EAC,EA4JAC,EA0mBAC,EA6GAC,EAglBAC,EAkrCN,OAt4MAV,EAAaW,WAAa,CAAC,EAE3B,SAAWvwH,GAGT,SAASwwH,EAASC,EAAW1yE,GAC3B,IAAI94C,EACF66G,EAAUj/G,MAAMzF,UAAU8E,MAAM5E,KAAKkF,UAAW,GAClDu9C,EAAOA,GAAQ,CAAC,EAChB,IAAK,IAAI/iD,EAAI,EAAGA,EAAI8kH,EAAQ5kH,OAAQF,IAAK,CACvC,IAAIqM,EAASy4G,EAAQ9kH,GACrB,GAAIqM,EACF,IAAKpC,KAAQoC,EACPA,EAAOhM,eAAe4J,IAAiC,qBAAjBoC,EAAOpC,KAA0BwrH,IAA2C,IAA9B1yE,EAAK1iD,eAAe4J,MAC1G84C,EAAK94C,GAAQoC,EAAOpC,GAI5B,CACA,OAAO84C,CACT,CAMA,IAAI2yE,GAAiC,EACrC,IACE,IAAIC,EAAaj0H,SAASC,cAAc,OACtCi0H,EAAWl0H,SAASu6C,eAAe,KACrC05E,EAAWvyH,YAAYwyH,GACvBF,EAAiCC,EAAWv0F,SAASw0F,EACvD,CAAE,MAAOC,GAAM,CACf,IAAIjiD,EAAO,CAGTkiD,KAA4B,gCAAtB54C,UAAU64C,SAAmE,aAAtB74C,UAAU64C,SAAyG,OAA/E,IAAI5pH,OAAO,sCAAsC2X,KAAKo5D,UAAU84C,WACjKC,OAAkD,OAA1C,YAAYnyG,KAAKo5D,UAAU84C,WAEnCE,KAAMh5C,UAAU84C,UAAU9jH,cAAcsE,QAAQ,YAAc,EAE9D2/G,MAAOnxH,EAAOk4E,UAAUk5C,SAASnmH,cAAcuG,QAAQ,QAAU,EAGjEsqC,QAAS,CACPu1E,UAAW,EACXC,IAAK,EACLC,MAAO,GACPC,OAAQ,GACRC,MAAO,GACPC,OAAQ,GACRC,EAAG,GAEHzlH,EAAG,GACH0lH,EAAG,IAMLC,cAAe,SAAUx0H,GACvB,SAAIuxE,EAAKuiD,OAAS9zH,EAAMm+C,UAAYozB,EAAKuiD,OAAS9zH,EAAMg+C,QAI1D,EAOAy2E,MAAO,SAAUz0H,EAAOsJ,GACtB,IAAIm1C,EAAU8yB,EAAKmjD,WAAW10H,GAG9B,OAAI,IAAUwD,MAAMF,QAAQgG,GACnBm1C,IAAYn1C,GAEhB,IAAMA,EAAK6K,QAAQsqC,EAI1B,EACAi2E,WAAY,SAAU10H,GACpB,IAAIy+C,EAAUz+C,EAAMs/C,MAMpB,OAHI,OAASb,IACXA,EAA6B,OAAnBz+C,EAAMw+C,SAAoBx+C,EAAMw+C,SAAWx+C,EAAMy+C,SAEtDA,CACT,EACAk2E,2BAA4B,CAE5B,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,aAAc,MAAO,KAAM,KAAM,KAE1E,UAAW,UAAW,QAAS,QAAS,SAAU,KAAM,KAAM,KAAM,WAAY,aAAc,SAAU,SAAU,OAAQ,SAAU,SAAU,OAAQ,MAAO,WAAY,SAAU,UAAW,QAAS,QAAS,QAAS,QAAS,QAAS,KAAM,KAAM,MACvPC,kBAAmB,CAAC,KAAM,MAAO,WAAY,KAAM,MAAO,QAAS,SAAU,OAC7EjwH,OAAQ,WAEN,IAAIuE,EAAO,EAAC,GAAMgR,OAAO1W,MAAMzF,UAAU8E,MAAM5E,KAAKkF,YACpD,OAAOgwH,EAASjwH,MAAMmE,KAAM6B,EAC9B,EACAma,SAAU,WAER,IAAIna,EAAO,EAAC,GAAOgR,OAAO1W,MAAMzF,UAAU8E,MAAM5E,KAAKkF,YACrD,OAAOgwH,EAASjwH,MAAMmE,KAAM6B,EAC9B,EAMA2rH,WAAY,SAAUx1H,EAAUy1H,EAAWlsF,EAAMpoC,GAC/C,IAAI+tB,EAASlvB,EAASC,cAAc,KASpC,OARAiyE,EAAKwjD,yBAAyBD,EAAU,GAAIA,EAAUA,EAAUj3H,OAAS,GAAI0wB,GAC7EA,EAAO7uB,aAAa,OAAQkpC,GACxBpoC,IACa,WAAXA,GACF+tB,EAAO7uB,aAAa,MAAO,uBAE7B6uB,EAAO7uB,aAAa,SAAUc,IAEzB+tB,CACT,EAUAymG,8BAA+B,SAAU31H,EAAUm/D,EAAShyD,GAO1D,IANA,IAAIyoH,EAAa51H,EAAS61H,iBAAiB12D,EAAS22D,WAAWC,SAAU,MAAM,GAC7EC,EAAe,GACfC,EAAmB,EACnBC,GAAe,EACfC,EAAc,KACdC,EAAU,KACqC,QAAzCD,EAAcP,EAAWS,aAC/B,KAAIF,EAAY96F,SAAW,GAEpB,GAA6B,IAAzB86F,EAAY96F,SAAgB,CAQrC,IAPK66F,GAAgB/oH,EAAMg7B,MAAQ8tF,EAAmBE,EAAYz3F,UAAUlgC,SAC1E03H,GAAe,EACfE,EAAUlkD,EAAKokD,uBAAuBH,EAAahpH,EAAMg7B,MAAO8tF,IAE9DC,GACFhkD,EAAKqkD,qBAAqBJ,EAAaC,EAASjpH,EAAMuwB,IAAKu4F,GAEzDC,GAAgBD,IAAqB9oH,EAAMuwB,IAC7C,MACK,GAAIw4F,GAAgBD,EAAmB9oH,EAAMuwB,IAAM,EACxD,MAAM,IAAIh9B,MAAM,uCAGdw1H,GACFF,EAAal3H,KAAKs3H,GAAWD,GAE/BF,GAAoBE,EAAYz3F,UAAUlgC,OAC1B,OAAZ43H,IACFH,GAAoBG,EAAQ13F,UAAUlgC,OAEtCo3H,EAAWS,YAEbD,EAAU,IACZ,KAAiD,QAAtCD,EAAY92D,QAAQ7uD,iBACxB0lH,GAAgB/oH,EAAMg7B,OAAS8tF,IAClCC,GAAe,GAEbA,GACFF,EAAal3H,KAAKq3H,IAIxB,OAAOH,CACT,EAOAM,uBAAwB,SAAUH,EAAaK,EAAiBP,GAC9D,OAAIO,IAAoBP,EACfE,EAAYM,UAAUD,EAAkBP,GAE1C,IACT,EAQAM,qBAAsB,SAAUJ,EAAaC,EAASM,EAAeT,GACnE,IAAIU,EAA8BC,EAClCD,EAA+BV,EAAmBE,EAAYz3F,UAAUlgC,QAAU43H,EAAUA,EAAQ13F,UAAUlgC,OAAS,GAAK,EAC5Ho4H,EAAgBF,EAAgBT,GAAoBG,EAAUD,EAAYz3F,UAAUlgC,OAAS,GACzFm4H,GAAgCD,GAAiBT,IAAqBU,GAAkD,IAAlBC,IACvGR,GAAWD,GAAaM,UAAUG,EAEvC,EA4BAC,qBAAsB,SAAU13D,GAC9B,GAAyB,IAArBA,EAAQ9jC,UAAuC,IAArB8jC,EAAQ9jC,SACpC,MAAO,GAET,IAAIy7F,EAAQ,GACVC,EAAoB7D,EAAa8D,KAAK1B,2BAA2BvrH,KAAK,KACxE,GAAyB,IAArBo1D,EAAQ9jC,UAAyE,IAAvD8jC,EAAQ76B,iBAAiByyF,GAAmBv4H,OACxE,MAAO,CAAC2gE,GAEV,IAAK,IAAI7gE,EAAI,EAAGA,EAAI6gE,EAAQ77B,WAAW9kC,OAAQF,IAAK,CAClD,IAAI24H,EAAQ93D,EAAQ77B,WAAWhlC,GAC/B,GAAuB,IAAnB24H,EAAM57F,SACRy7F,EAAMh4H,KAAKm4H,QACN,GAAuB,IAAnBA,EAAM57F,SAAgB,CAEF,IADT47F,EAAM3yF,iBAAiByyF,GACzBv4H,OAChBs4H,EAAMh4H,KAAKm4H,GAEXH,EAAQA,EAAMj8G,OAAOq4G,EAAa8D,KAAKH,qBAAqBI,GAEhE,CACF,CACA,OAAOH,CACT,EAQAI,gCAAiC,SAAyCC,EAAUC,EAAYl4F,GAC9F,IACEm3F,EADEgB,GAAa,EAEfC,EAAep4F,EAAcq4F,mBAAmBJ,EAAUrB,WAAW0B,UAAW,MAAM,GAKxF,IADAnB,EAAWiB,EAAajB,WACjBA,GAAU,CACf,GAAIA,IAAae,EACfC,GAAa,OACR,GAAIA,GACiB,IAAtBhB,EAASh7F,UAAkBg7F,EAAS33F,WAAa23F,EAAS33F,UAAU49B,OAAO99D,OAAS,EACtF,MAGJ63H,EAAWiB,EAAajB,UAC1B,CACA,OAAOA,CACT,EAGAoB,oBAAqB,SAAU77F,GAC7B,IAAKA,GAAQs2C,EAAKwlD,sBAAsB97F,GACtC,OAAO,EAGT,IADA,IAAI+7F,EAAkB/7F,EAAK+7F,iBACnBA,IAAoBzlD,EAAKwlD,sBAAsB97F,EAAKI,aAE1D27F,GADA/7F,EAAOA,EAAKI,YACW27F,gBAEzB,OAAOA,CACT,EACAC,aAAc,SAAsBxvF,EAAQ6uF,EAAOY,GACjD,IAAKzvF,IAAW6uF,EACd,OAAO,EAET,GAAI7uF,IAAW6uF,EACb,QAASY,EAGX,GAAwB,IAApBzvF,EAAO/M,SACT,OAAO,EAET,GAAI24F,GAAqD,IAAnBiD,EAAM57F,SAC1C,OAAO+M,EAAO1I,SAASu3F,GAGzB,IADA,IAAIr7F,EAAOq7F,EAAMj7F,WACD,OAATJ,GAAe,CACpB,GAAIA,IAASwM,EACX,OAAO,EAETxM,EAAOA,EAAKI,UACd,CACA,OAAO,CACT,EAEAg3C,UAAW,SAAmBtuE,GAC5B,SAAUA,GAAwB,IAAjBA,EAAI22B,SACvB,EAEAy8F,SAAU,SAAU9qH,EAAMknC,GACxB,IACE5X,EACAzyB,EACAkZ,EACA5iB,EAAU,KACVo5F,EAAW,EACXw+B,EAAQ,WACNx+B,EAAWv0F,KAAK0G,MAChBvL,EAAU,KACV4iB,EAAS/V,EAAKnJ,MAAMy4B,EAASzyB,GACxB1J,IACHm8B,EAAUzyB,EAAO,KAErB,EAIF,OAHKqqC,GAAiB,IAATA,IACXA,EAfsB,IAiBjB,WACL,IAAIxoC,EAAM1G,KAAK0G,MACb2nC,EAAYa,GAAQxoC,EAAM6tF,GAgB5B,OAfAj9D,EAAUt0B,KACV6B,EAAO/F,UACHuvC,GAAa,GAAKA,EAAYa,GAC5B/zC,IACFW,aAAaX,GACbA,EAAU,MAEZo5F,EAAW7tF,EACXqX,EAAS/V,EAAKnJ,MAAMy4B,EAASzyB,GACxB1J,IACHm8B,EAAUzyB,EAAO,OAET1J,IACVA,EAAUqB,WAAWu2H,EAAO1kF,IAEvBtwB,CACT,CACF,EACAi1G,WAAY,SAAUxgE,EAASygE,GAC7B,IAAKzgE,EACH,OAAO,EAET,EAAG,CACD,GAAyB,IAArBA,EAAQn8B,SAAgB,CAC1B,GAAI48F,EAAoBzgE,GACtB,OAAOA,EAGT,GAAI0a,EAAKwlD,sBAAsBlgE,GAC7B,OAAO,CAEX,CACAA,EAAUA,EAAQx7B,UACpB,OAASw7B,GACT,OAAO,CACT,EACA0gE,aAAc,SAAU7F,GAGtB,OAAOvlG,OAAOulG,GAAKjlH,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,SACtG,EAEA+qH,kBAAmB,SAAUt8F,EAAKimB,GAChC,IAAI9H,EACFo+E,EACAtzF,EACAsV,EACAxe,EACAy8F,EACAC,EACAlzH,GAAM,EACNmzH,EAAS,CAAC,cAAc,EAAOz2E,GASjC,IAAKoxE,EAAa8D,KAAKzC,QAAU14F,EAAI28F,sBAAsB,cACzD,IACE,OAAO38F,EAAI48F,YAAY50H,MAAMg4B,EAAK08F,EACpC,CAAE,MAAOG,GAAS,CAGpB,IADA1+E,EAAYne,EAAI88F,gBACFC,WAAY,CAOxB,GALAN,GADAF,EAAQp+E,EAAU6+E,WAAW,IACXC,wBAKd5mD,EAAKwlD,sBAAsBY,KAAeA,EAAUhwF,WACtD8vF,EAAMW,WAAWT,EAAU52H,YAAYm6B,EAAI0e,eAAe,WACrD,GAA2B,IAAvB+9E,EAAUj9F,UAAwC,IAAtB+8F,EAAMY,aAAqBZ,EAAMa,YAAcX,EAAU55F,UAAUlgC,QAAiC,IAAvB85H,EAAUj9F,UAAkBi9F,EAAUjyF,YAAc+xF,EAAMh0H,WAAY,CAGxL,MAAQ8tE,EAAKwlD,sBAAsBY,IAAcA,EAAUt8F,YAAyD,IAA3Cs8F,EAAUt8F,WAAWsH,WAAW9kC,SAAiB0zE,EAAKwlD,sBAAsBY,EAAUt8F,aAC7Js8F,EAAYA,EAAUt8F,WAExBo8F,EAAMW,WAAWT,EACnB,CAKA,IAJAF,EAAM5iB,kBACN1wE,EAAKjJ,EAAI57B,cAAc,QACpBomC,UAAYyb,EACf1H,EAAWve,EAAI4c,yBACR3T,EAAGwD,YACR1M,EAAOkJ,EAAGwD,WACV+vF,EAAWj+E,EAAS14C,YAAYk6B,GAElCw8F,EAAMc,WAAW9+E,GAGbi+E,KACFD,EAAQA,EAAMe,cACRC,cAAcf,GACpBD,EAAMiB,UAAS,GACfnG,EAAal5E,UAAUs/E,YAAYz9F,EAAKu8F,IAE1ChzH,GAAM,CACR,CAOA,OAHIy2B,EAAI48F,YAAYc,eAClB19F,EAAI48F,YAAYc,cAAchB,EAAQnzH,GAEjCA,CACT,EACAo0H,gBAAiB,SAAU39F,EAAKwjC,GAE9B,IAAIo6D,EAAiBvnD,EAAKwnD,qBAAqBxG,EAAal5E,UAAU2/E,kBAAkB99F,IAIxF,GAAgB,eAAZwjC,EAA0B,CAC5B,GAAIo6D,GACWt1H,MAAMzF,UAAU8E,MAAM5E,KAAK66H,EAAen2F,YAExC3/B,MAAK,SAAUi2H,GAC5B,OAAO1nD,EAAK2nD,iBAAiBD,EAC/B,IAIE,OAAO/9F,EAAI48F,YAAY,WAAW,EAAO,MAM7C,GAAIvmD,EAAKkiD,KACP,OAAOv4F,EAAI48F,YAAY,UAAU,EAAOp5D,EAE5C,CAgBA,GAZIo6D,GAAkBp6D,IAAYo6D,EAAeh9F,SAASjsB,gBACxD6uD,EAAU,KAKR6S,EAAKkiD,OACP/0D,EAAU,IAAMA,EAAU,KAKxBo6D,GAA4D,eAA1CA,EAAeh9F,SAASjsB,cAAgC,CAE5E,GAAI0hE,EAAKkiD,MAAoB,QAAZ/0D,EACf,OAAOxjC,EAAI48F,YAAY,WAAW,EAAOp5D,GAI3C,IAAK6S,EAAKsiD,MAAQtiD,EAAKqiD,SAAuB,MAAZl1D,EAQhC,OAPal7D,MAAMzF,UAAU8E,MAAM5E,KAAK66H,EAAen2F,YAExC3/B,MAAK,SAAUi2H,GAC5B,OAAQ1nD,EAAK2nD,iBAAiBD,EAChC,KACE/9F,EAAI48F,YAAY,eAAe,EAAOp5D,GAEjCxjC,EAAI48F,YAAY,WAAW,EAAOp5D,EAE7C,CACA,OAAOxjC,EAAI48F,YAAY,eAAe,EAAOp5D,EAC/C,EAWAy6D,eAAgB,SAAUh1F,EAAIi1F,GAC5B,IAAIz7H,EACF01D,EAAM+lE,IAAa,EACrB,GAAkC,MAA9Bj1F,EAAGrI,SAASjsB,cACds0B,EAAG3jC,OAAS,SACZ2jC,EAAGk1F,IAAM,2BAGT,IADAl1F,EAAKA,EAAGd,qBAAqB,KACxB1lC,EAAI,EAAGA,EAAIwmC,EAAGtmC,OAAQF,GAAK,GAC1B,IAAU01D,GAAOA,IAAQlvB,EAAGxmC,GAAGgjC,WAAWiI,KAAKhnC,QACjDuiC,EAAGxmC,GAAG6C,OAAS,SACf2jC,EAAGxmC,GAAG07H,IAAM,sBAIpB,EAKAC,kBAAmB,SAAUn1F,EAAIi1F,GAC/B,IAAIz7H,EACJ,GAAkC,MAA9BwmC,EAAGrI,SAASjsB,cACds0B,EAAGN,gBAAgB,UACnBM,EAAGN,gBAAgB,YAGnB,IADAM,EAAKA,EAAGd,qBAAqB,KACxB1lC,EAAI,EAAGA,EAAIwmC,EAAGtmC,OAAQF,GAAK,EAC1By7H,IAAcj1F,EAAGxmC,GAAGgjC,WAAWiI,KAAKhnC,QACtCuiC,EAAGxmC,GAAGkmC,gBAAgB,UACtBM,EAAGxmC,GAAGkmC,gBAAgB,OAI9B,EAMA01F,kBAAmB,SAAUp1F,EAAIq1F,GAC/B,IACE77H,EACAohB,EAFE8sD,EAAU2tD,EAAYlkH,MAAM,KAGhC,GAAkC,MAA9B6uB,EAAGrI,SAASjsB,cACd,IAAKkP,EAAI,EAAGA,EAAI8sD,EAAQhuE,OAAQkhB,GAAK,EACnColB,EAAGoyC,UAAU58D,IAAIkyD,EAAQ9sD,QAEtB,CACL,IAAI06G,EAAYt1F,EAAGd,qBAAqB,KACxC,GAAyB,IAArBo2F,EAAU57H,OAAc,CAC1B,IAAI67H,EAAenoD,EAAKooD,cAAcx1F,EAAI,KAC1CA,EAAKu1F,EAAe,CAACA,GAAgB,EACvC,MACEv1F,EAAKs1F,EAEP,IAAK97H,EAAI,EAAGA,EAAIwmC,EAAGtmC,OAAQF,GAAK,EAC9B,IAAKohB,EAAI,EAAGA,EAAI8sD,EAAQhuE,OAAQkhB,GAAK,EACnColB,EAAGxmC,GAAG44E,UAAU58D,IAAIkyD,EAAQ9sD,GAGlC,CACF,EACA66G,WAAY,SAAU3+F,GACpB,IAAKA,EACH,OAAO,EAET,GAAoC,OAAhCA,EAAKa,SAASjsB,cAChB,OAAO,EAIT,IAFA,IAAIwrB,EAAaJ,EAAKI,WACpBqjC,EAAUrjC,EAAWS,SAASjsB,cACb,OAAZ6uD,IAAqB6S,EAAK2nD,iBAAiB79F,IAA2B,QAAZqjC,GAAmB,CAClF,GAAgB,OAAZA,EACF,OAAO,EAGT,KADArjC,EAAaA,EAAWA,YAItB,OAAO,EAFPqjC,EAAUrjC,EAAWS,SAASjsB,aAIlC,CACA,OAAO,CACT,EACAgqH,aAAc,SAAUt7F,EAAeigC,GACrC,GAAuC,OAAnCA,EAAQ1iC,SAASjsB,cAArB,CAGA,IAAIogC,EAAOuuB,EAAQ+I,cAC+B,MAA9Ct3B,EAAKs3B,cAAczrC,SAASjsB,gBAE9B0hE,EAAK/Z,OAAOvnB,EAAKs3B,cAAehpC,GAIhCg0F,EAAal5E,UAAUygF,WAAWv7F,EAAeigC,EAAQ72B,WAAY62B,EAAQ72B,WAAW9J,YAAYhgC,QARtG,CAUF,EA+BAk8H,gBAAiB,SAAUvD,EAAUwD,EAAUC,GAM7C,IALA,IAAIC,EAAcF,EAChBG,EAAc,KACdC,GAAcH,EAGTC,IAAgB1D,GAAU,CAC/B,IAGE6D,EAHEC,EAAaJ,EAAY7+F,WAC3Bk/F,EAAYD,EAAWtiF,WAAU,GACjCy+E,EAAa2D,EAAaF,EAAcI,EAAW3yF,WAcrD,IAVIwyF,IACEC,EAEFG,EAAUx5H,YAAYo5H,GAGtBE,EAAaF,GAGjBA,EAAcI,EACP9D,GAAY,CACjB,IAAIxoF,EAAUwoF,EAAWvtF,YAErButF,IAAeyD,GACZzD,EAAW+D,gBAKd/D,EAAaA,EAAWz+E,WAAU,GAJlCy+E,EAAWp7F,WAAWC,YAAYm7F,GAOhCA,EAAW54F,aACbs8F,EAAYp5H,YAAY01H,GAE1BA,EAAa2D,EAAansF,EAAU,OAIpCwoF,EAAWp7F,WAAWC,YAAYm7F,IAC9BA,EAAW+D,iBAAmB/D,EAAW54F,cAC3Cs8F,EAAYp5H,YAAY01H,GAE1BA,EAAaxoF,EAEjB,CAGIosF,GACFF,EAAYp5H,YAAYs5H,GAE1BH,EAAcI,CAChB,CACA,OAAOH,CACT,EACApF,yBAA0B,SAAU0F,EAAWC,EAASlmB,GACtD,IAAKimB,IAAcC,EACjB,OAAO,EAET,IAAIlE,EAAWjlD,EAAKopD,eAAeF,EAAWC,GAC9C,IAAKlE,EACH,OAAO,EAET,GAAIkE,IAAYD,EAAW,CACzB,IAAIp2G,EAAOo2G,EAAUp/F,WACnB4S,EAAUwsF,EAAUvxF,YAQtB,OAPA7kB,EAAKiX,YAAYm/F,GACjBjmB,EAAWzzG,YAAY05H,GACnBxsF,EACF5pB,EAAK09B,aAAayyD,EAAYvmE,GAE9B5pB,EAAKtjB,YAAYyzG,GAEZA,EAAWgmB,eACpB,CAQA,IAJA,IACE7yF,EACAC,EACA8tF,EAHEkF,EAAe,GAIVj9H,EAAI,EAAGA,EAAI64H,EAAS7zF,WAAW9kC,OAAQF,IAE9C,GADA+3H,EAAWc,EAAS7zF,WAAWhlC,GAC1BgqC,EAIE,CACL,GAAI4pC,EAAK0lD,aAAavB,EAAUgF,GAAS,GAAO,CAC9C9yF,EAAY8tF,EACZ,KACF,CACEkF,EAAaz8H,KAAKu3H,EAEtB,MAVMnkD,EAAK0lD,aAAavB,EAAU+E,GAAW,KACzC9yF,EAAa+tF,GAWnB,IAAImF,EAAYjzF,EAAUsB,YACxBuQ,EAAW+8E,EAASj4F,cAAcuZ,yBAoCpC,OAjCInQ,IAAe8yF,GACjB9yF,EAAWtM,WAAWC,YAAYqM,GAClC8R,EAAS14C,YAAY4mC,IAErB8R,EAAS14C,YAAYwwE,EAAKwoD,gBAAgBpyF,EAAY8yF,IAIxDG,EAAaj7G,SAAQ,SAAU6+C,GAC7BA,EAAQnjC,WAAWC,YAAYkjC,GAC/B/kB,EAAS14C,YAAYy9D,EACvB,IAGI52B,IAAc8yF,GAChB9yF,EAAUvM,WAAWC,YAAYsM,GACjC6R,EAAS14C,YAAY6mC,IAErB6R,EAAS14C,YAAYwwE,EAAKwoD,gBAAgBnyF,EAAW8yF,GAAS,IAIhElmB,EAAWzzG,YAAY04C,GACnB7R,EAAUvM,aAAem7F,EAE3BA,EAASz0E,aAAayyD,EAAY5sE,GACzBizF,EAETrE,EAASz0E,aAAayyD,EAAYqmB,GAGlCrE,EAASz1H,YAAYyzG,GAEhBA,EAAWgmB,eACpB,EAEAM,YAAa,SAAUC,GAGrB,IAFA,IAAIC,EAAW,EACb//F,EAAO8/F,EACkB,OAApB9/F,EAAKI,YACVJ,EAAOA,EAAKI,WACZ2/F,IAEF,OAAOA,CACT,EACAL,eAAgB,SAAUM,EAASC,GAKjC,IAJA,IAAIC,EAAS5pD,EAAKupD,YAAYG,GAC5BG,EAAS7pD,EAAKupD,YAAYI,GAC1BG,EAAQJ,EACRK,EAAQJ,EACHC,IAAWC,GACZD,EAASC,GACXC,EAAQA,EAAMhgG,WACd8/F,GAAU,IAEVG,EAAQA,EAAMjgG,WACd+/F,GAAU,GAGd,KAAOC,IAAUC,GACfD,EAAQA,EAAMhgG,WACdigG,EAAQA,EAAMjgG,WAEhB,OAAOggG,CACT,EAGAE,4BAA6B,SAAUtgG,GAErC,IADA,IAAagT,GACLsjC,EAAK2nD,iBAAiBj+F,KAAUs2C,EAAKwlD,sBAAsB97F,IAAO,CAExE,IADAgT,EAAUhT,EACHgT,EAAUA,EAAQ+oF,iBAEvB,IAD+B,IAArB/oF,EAAQvT,SAAiBuT,EAAQlQ,UAAYkQ,EAAQpQ,aACnDhgC,OAAS,EACnB,OAAO,EAGXo9B,EAAOA,EAAKI,UACd,CACA,OAAO,CACT,EACA07F,sBAAuB,SAAUv4D,GAC/B,OAAOA,GAAWA,EAAQpjC,gBAAkBojC,EAAQpjC,aAAa,6BACnE,EACAogG,0BAA2B,SAAUh9D,GACnC,OAAO+S,EAAK8lD,WAAW74D,GAAS,SAAUvjC,GACxC,OAAOs2C,EAAKwlD,sBAAsB97F,EACpC,GACF,EACAi+F,iBAAkB,SAAU16D,GAC1B,OAAOA,GAAgC,IAArBA,EAAQ9jC,WAA+F,IAA7E62C,EAAKojD,2BAA2BxgH,QAAQqqD,EAAQ1iC,SAASjsB,cACvG,EAKA4rH,yBAA0B,SAAUxgG,GAClC,OAAOs2C,EAAK8lD,WAAWp8F,GAAM,SAAUA,GACrC,OAAOs2C,EAAK2nD,iBAAiBj+F,IAASs2C,EAAKwlD,sBAAsB97F,EACnE,GACF,EAKA89F,qBAAsB,SAAUv6D,GAC9B,IAAIk9D,IAAWnqD,EAAK2nD,iBAAiB16D,IAAWA,EAWhD,OAVA+S,EAAK8lD,WAAW74D,GAAS,SAAUr6B,GAIjC,OAHIotC,EAAK2nD,iBAAiB/0F,KACxBu3F,EAAWv3F,KAERu3F,IAAYnqD,EAAKwlD,sBAAsB5yF,MAC1Cu3F,EAAWv3F,GACJ,EAGX,IACOu3F,CACT,EACAC,2BAA4B,SAAUn9D,GACpC,KAAOA,GAAWA,EAAQ72B,YACxB62B,EAAUA,EAAQ72B,WAQpB,GAAuC,WAJvC62B,EAAU+S,EAAK8lD,WAAW74D,GAAS,SAAUr6B,GAC3C,OAAsE,IAA/DotC,EAAKqjD,kBAAkBzgH,QAAQgwB,EAAGrI,SAASjsB,cACpD,KAEYisB,SAASjsB,cAA2B,CAC9C,IAAI+rH,EAAYp9D,EAAQn5B,cAAc,UAClCu2F,IACFp9D,EAAUo9D,EAEd,CACA,OAAOp9D,CACT,EAEAq9D,iBAAkB,SAAUr9D,GAE1B,OADA+S,EAAK5oE,KAAK,uEACH4oE,EAAKuqD,kBAAkBt9D,EAChC,EACAs9D,kBAAmB,SAAUt9D,GAC3B,GAAyB,IAArBA,EAAQ9jC,SACV,OAAO8jC,EAET,IAAK,IAAI7gE,EAAI,EAAGA,EAAI6gE,EAAQ77B,WAAW9kC,OAAQF,IAAK,CAClD,IAAIo+H,EAAWxqD,EAAKuqD,kBAAkBt9D,EAAQ77B,WAAWhlC,IACzD,GAAiB,OAAbo+H,EACF,OAAOA,CAEX,CACA,OAAO,IACT,EACAC,qBAAsB,SAAU3oE,GAC9B,OAA4B,IAAxBA,EAAIl/C,QAAQ,OACP,UAAYk/C,EAEdA,CACT,EACA1qD,KAAM,gBACmB/H,IAAnB+B,EAAOF,SAAwD,oBAAxBE,EAAOF,QAAQkG,MACxDhG,EAAOF,QAAQkG,KAAKzF,MAAMP,EAAOF,QAASU,UAE9C,EACA84H,WAAY,SAAUC,EAASC,EAAS9iG,GAEtC,IAAIp4B,EAAIi7H,EAAU,8BAAgCC,EAAU,YACxD9iG,IACFp4B,GAAK,uBAAyBo4B,GAEhCk4C,EAAK5oE,KAAK1H,EACZ,EACAm7H,iBAAkB,SAAUF,EAASC,EAASjzH,EAAMmwB,GAElDk4C,EAAK0qD,WAAWC,EAASC,EAAS9iG,GACL,oBAAlBhyB,KAAK80H,IACd90H,KAAK80H,GAASj5H,MAAMmE,KAAM6B,EAE9B,EACAmzH,aAAc,SAAUl4F,EAAImR,GAC1BA,EAAM31B,SAAQ,SAAUqmB,GACtB7B,EAAGN,gBAAgBmC,EACrB,GACF,EACAs2F,YAAa,SAAUn4F,EAAIo4F,IACwB,IAA7CA,EAAKpoH,QAAQgwB,EAAGrI,SAASjsB,gBAC3Bs0B,EAAG9I,WAAWC,YAAY6I,EAE9B,EACAq4F,WAAY,SAAUr4F,EAAIo4F,IACyB,IAA7CA,EAAKpoH,QAAQgwB,EAAGrI,SAASjsB,gBAC3B0iH,EAAa8D,KAAK7+D,OAAOrzB,EAAI9kC,SAEjC,EAEAs6H,cAAe,SAAUx1F,EAAIqB,GAC3B,OAAO+rC,EAAK8lD,WAAWlzF,GAAI,SAAUq6B,GACnC,OAAOA,EAAQ1iC,SAASjsB,gBAAkB21B,EAAI31B,aAChD,GACF,EACA2nD,OAAQ,SAAUrzB,EAAIjJ,GAMpB,IALA,IAAIue,EAAWve,EAAI4c,yBACjB4B,EAAQl2C,MAAMzF,UAAU8E,MAAM5E,KAAKkmC,EAAGxB,YAI/BhlC,EAAI,EAAGA,EAAI+7C,EAAM77C,OAAQF,IAChC87C,EAAS14C,YAAY24C,EAAM/7C,IAEzB87C,EAAS9W,WAAW9kC,OACtBsmC,EAAG9I,WAAW8mB,aAAa1I,EAAUtV,GAErCA,EAAG9I,WAAWC,YAAY6I,EAE9B,EACAzF,KAAM,WACJ,SAAS+9F,IACP,OAAOlxH,KAAKwF,MAA4B,OAArB,EAAIxF,KAAKgyB,WAAqB95B,SAAS,IAAI+tH,UAAU,EAC1E,CACA,OAAOiL,IAAQA,IAAQ,IAAMA,IAAQ,IAAMA,IAAQ,IAAMA,IAAQ,IAAMA,IAAQA,IAAQA,GACzF,GAEFlK,EAAa8D,KAAO9kD,CACrB,CAv9BD,CAu9BG5uE,SAIG6vH,EAAY,SAAUv1F,GACxBs1F,EAAa8D,KAAK1xH,OAAO0C,KAAM41B,EACjC,GACUt4B,OAAS,SAAU+rE,GAyB3B,IACE4lD,EADE7uF,EAASpgC,KAQXivH,EADE5lD,GAAcA,EAAW1yE,eAAe,eAClC0yE,EAAWz0C,YAEX,WACN,OAAOwL,EAAOvkC,MAAMmE,KAAMlE,UAC5B,EAIFovH,EAAa8D,KAAK1xH,OAAO2xH,EAAO7uF,GAIhC,IAAIi1F,EAAY,WACdr1H,KAAK40B,YAAcq6F,CACrB,EASA,OARAoG,EAAU3+H,UAAY0pC,EAAO1pC,UAC7Bu4H,EAAMv4H,UAAY,IAAI2+H,EAClBhsD,GACF6hD,EAAa8D,KAAK1xH,OAAO2xH,EAAMv4H,UAAW2yE,GAKrC4lD,CACT,EACA9D,EAAUz0H,UAAY,CAQpB69B,KAAM,WAAa,EAMnBnQ,UAAM7qB,EAQNF,UAAME,EAYN+7H,gBAAY/7H,EAQZ0jF,aAAS1jF,EAiBTg8H,uBAAmBh8H,EASnBkjF,cAAUljF,EAYVi8H,sBAAkBj8H,EASlBk8H,eAAWl8H,EAWXm8H,iBAAan8H,EAYbo8H,4BAAwBp8H,EAexB,YAAUA,EAQV,cAAYA,EAOZq8H,kBAAmB,WACjB,OAAO51H,KAAKokB,KAAKqa,QACnB,EAMAo3F,YAAa,WACX,OAAO71H,KAAKokB,KAAK2X,EACnB,EAMA+5F,gBAAiB,SAAUhlF,GACzB,OAAO9wC,KAAKokB,KAAKwR,QAAQkb,EAC3B,GAYF,CAEA,aAEA,KAAM,MAAO,YAAa,WAAWx4B,SAAQ,SAAUy9G,GACrD5K,EAAUz0H,UAAUq/H,GAAU,WAC5B,OAAO/1H,KAAKokB,KAAK2xG,GAAQl6H,MAAMmE,KAAKokB,KAAMtoB,UAC5C,CACF,IACAovH,EAAaC,UAAYA,EAE3B,WAGE,SAAS6K,EAAyBpiG,GAChC,OAAIs3F,EAAa8D,KAAK6C,iBAAiBj+F,GAC9Bk6F,WAAWmI,cAEXnI,WAAWoI,WAEtB,CACA,IAAIC,EAAY,CACdC,4BAA6B,SAAUnG,EAAqBoG,GAC1D,IAEE7mE,EAFExd,EAAYqkF,EAAc1F,eAG9B,OAA6B,IAAzB3+E,EAAU4+E,aAIdphE,EADQxd,EAAU6+E,WAAW,GACbC,wBACT5F,EAAa8D,KAAKgB,WAAWxgE,EAASygE,GAC/C,EACAqG,oBAAqB,SAAUD,GAC7B,OAAOr2H,KAAKo2H,6BAA4B,SAAUt5F,GAChD,OAAOouF,EAAa8D,KAAKU,sBAAsB5yF,EACjD,GAAGu5F,EACL,EAGAE,gBAAiB,SAAUr1F,EAAMrN,GAC/B,IAAKqN,EACH,OAAO,KAET,IAAIs1F,EAAiB,KACnBxkF,EAAYne,EAAI88F,eAClB,GAAI3+E,EAAU4+E,WAAa,EAAG,CAC5B,IAEEzwF,EAFEiwF,EAAQp+E,EAAU6+E,WAAW,GAC/B4F,EAAoBrG,EAAMe,aAE5BsF,EAAkBlpB,mBAAmBrsE,GACrCu1F,EAAkBC,OAAOtG,EAAMuG,eAAgBvG,EAAMY,aAErDwF,EAAiB,CACfr2F,MAFFA,EAAQs2F,EAAkBr6H,WAAW5F,OAGnCk/B,IAAKyK,EAAQiwF,EAAMh0H,WAAW5F,QAM5BwJ,KAAK42H,yBAAyBxG,EAAOv8F,KACvC2iG,EAAeK,iBAAkB,GAKnC,IAAIC,EAAqB92H,KAAK+2H,sBAAsB71F,EAAMs1F,EAAgBpG,EAAM4G,aAAc5G,EAAMa,WAMpG,GALI6F,IACFN,EAAeM,mBAAqBA,GAIxB,IAAV32F,EAAa,CACf,IAAI82F,EAAmBj3H,KAAKk3H,sCAAsCrjG,EAAKqN,EAAMkvF,EAAMuG,eAAgBvG,EAAMY,cAC/E,IAAtBiG,IACFT,EAAeS,iBAAmBA,EAEtC,CACF,CACA,OAAOT,CACT,EAWAW,gBAAiB,SAAUX,EAAgBt1F,EAAMrN,EAAKujG,GACpD,GAAKZ,GAAmBt1F,EAAxB,CAGA,IAAIkvF,EAAQv8F,EAAIy5E,cAChB8iB,EAAMiH,SAASn2F,EAAM,GACrBkvF,EAAMiB,UAAS,GACf,IAOEiG,EAPE1jG,EAAOsN,EACTq2F,EAAY,GACZC,EAAY,EACZC,GAAa,EACbC,GAAW,EACXZ,EAAqB,EACrBxoF,GAAO,EAEPqpF,GAA+B,EAC/BC,EAAe,KAkBjB,KAHIR,GAA6BZ,EAAeK,iBAA8D,qBAApCL,EAAeS,oBACvFU,GAA+B,IAEzBrpF,GAAQ1a,GAEd,GAAIA,EAAKP,SAAW,EAClBO,EAAO2jG,EAAUhgG,UADnB,CAMA,GAAsB,IAAlB3D,EAAKP,UAAmBqkG,EA4BrB,CACL,GAAIlB,EAAeM,oBAAsBY,IACH,QAAhC9jG,EAAKa,SAASjsB,eAChBsuH,IAEEA,IAAuBN,EAAeM,oBAAoB,CAG5D,IADA,IAAIe,EAAW,EACRjkG,EAAKI,WAAWsH,WAAWu8F,KAAcjkG,GAC9CikG,IAEFzH,EAAMsG,OAAO9iG,EAAKI,WAAY6jG,EAAW,GACzCvpF,GAAO,CACT,CAEF,IAAKA,GAA0B,IAAlB1a,EAAKP,SAIhB,IADA,IAAI/8B,EAAIs9B,EAAK0H,WAAW9kC,OAAS,EAC1BF,GAAK,GACVihI,EAAUzgI,KAAK88B,EAAK0H,WAAWhlC,IAC/BA,GAAK,CAGX,MAnDEghI,EAAgBE,EAAY5jG,EAAKp9B,QAE5BihI,GAAcjB,EAAer2F,OAASq3F,GAAahB,EAAer2F,OAASm3F,IAG1EK,GAAgCnB,EAAer2F,MAAQm3F,GACzDlH,EAAMiH,SAASzjG,EAAM4iG,EAAer2F,MAAQq3F,GAC5CC,GAAa,GAObG,EAAehkG,GAIf6jG,GAAcjB,EAAe9gG,KAAO8hG,GAAahB,EAAe9gG,KAAO4hG,IACpEd,EAAeM,mBAIlBY,GAAW,GAHXtH,EAAMsG,OAAO9iG,EAAM4iG,EAAe9gG,IAAM8hG,GACxClpF,GAAO,IAKXkpF,EAAYF,EA0BThpF,IACH1a,EAAO2jG,EAAUhgG,MAzDnB,EAgEGkgG,GAAcG,IACjBxH,EAAMiH,SAASO,EAAcA,EAAaphI,QAC1C45H,EAAMsG,OAAOkB,EAAcA,EAAaphI,SAEK,qBAApCggI,EAAeS,mBACxB7G,EAAQpwH,KAAK83H,oCAAoCjkG,EAAKqN,EAAMs1F,EAAeS,iBAAkB7G,IAI3FgH,IACFhH,EAAQpwH,KAAK+3H,oCAAoCvB,EAAgBpG,IAEnEpwH,KAAKsxH,YAAYz9F,EAAKu8F,EAhHtB,CAiHF,EAEA2H,oCAAqC,SAAUvB,EAAgBpG,GAI7D,GAAIoG,EAAer2F,QAAUq2F,EAAe9gG,KAAyC,IAAlC06F,EAAMuG,eAAetjG,UAAkB+8F,EAAMY,cAAgBZ,EAAMuG,eAAejgG,UAAUlgC,QAAU00H,EAAa8D,KAAKgB,WAAWI,EAAMuG,gBAH1J,SAAU/iG,GAC1C,MAAuC,MAAhCA,EAAKa,SAASjsB,aACvB,IAC0O,CAGxO,IAFA,IAAIwvH,EAAW5H,EAAMuG,eACnBxI,EAAciC,EAAMuG,eAAe3iG,WACd,OAAhBm6F,GAA+D,MAAvCA,EAAY15F,SAASjsB,eAC9C2lH,EAAY7yF,WAAW6yF,EAAY7yF,WAAW9kC,OAAS,KAAOwhI,EAChE7J,EAAc,MAEd6J,EAAW7J,EACXA,EAAcA,EAAYn6F,YAG9B,GAAoB,OAAhBm6F,GAA+D,MAAvCA,EAAY15F,SAASjsB,cAAuB,CAEtE,IADA,IAAIyvH,EAAmB,KACd3hI,EAAI,EAAwB,OAArB2hI,GAA6B3hI,EAAI63H,EAAYn6F,WAAWsH,WAAW9kC,OAAQF,IACrF63H,EAAYn6F,WAAWsH,WAAWhlC,KAAO63H,IAC3C8J,EAAmB3hI,GAGvB85H,EAAMiH,SAASlJ,EAAYn6F,WAAYikG,EAAmB,GAC1D7H,EAAMiB,UAAS,EACjB,CACF,CACA,OAAOjB,CACT,EAGA0H,oCAAqC,SAAUjkG,EAAKqN,EAAMlT,EAAOoiG,GAC/D,IAEE8H,EACA9I,EAHExB,EAAa/5F,EAAIg6F,iBAAiB3sF,EAAM4sF,WAAWqK,aAAcnC,GAA0B,GAC7FW,EAAiBvG,EAAMuG,eAGvByB,EAAY,EAcd,IAbApqG,EAAQA,GAAS,EAOfkqG,EAD8B,IAA5BvB,EAAetjG,UAAkB63F,EAAa8D,KAAK6C,iBAAiB8E,EAAehH,iBACxEgH,EAAehH,gBAEfzE,EAAa8D,KAAKoF,yBAAyBuC,GAInD/I,EAAWS,YAChB,GAAKe,EAKE,CAIL,GAHAA,EAAaxB,EAAWO,cACxBiK,IAEkBpqG,EAChB,MAGF,GAAIohG,EAAW54F,YAAYhgC,OAAS,EAClC,KAEJ,MAdM0hI,IAAetK,EAAWO,cAC5BiB,EAAaxB,EAAWO,aAsB9B,OAPKiB,IACHA,EAAa8I,GAKf9H,EAAMiH,SAASnM,EAAa8D,KAAKsF,2BAA2BlF,GAAa,GAClEgB,CACT,EAMA8G,sCAAuC,SAAUrjG,EAAKqN,EAAMm3F,EAAiBC,GAE3E,GAAID,EAAgB7hG,YAAYhgC,OAAS,GAAK8hI,EAAe,EAC3D,OAAQ,EAIV,IAAI1kG,EAAOykG,EAIX,GAHsB,IAAlBzkG,EAAKP,WACPO,EAAOykG,EAAgB/8F,WAAWg9F,IAEhC1kG,EAAM,CAER,IAAKs3F,EAAa8D,KAAKkF,4BAA4BtgG,GACjD,OAAQ,EAEV,IAAI+7F,EAAkBzE,EAAa8D,KAAKS,oBAAoB77F,GAE5D,IAAK+7F,EACH,OAAQ,EAGL,GAAIA,EAAgBj5F,UACvB,OAAQ,CAEZ,CAOA,IAHA,IAAI6hG,EAAerN,EAAa8D,KAAKoF,yBAAyBiE,GAC5DzK,EAAa/5F,EAAIg6F,iBAAiB3sF,EAAM4sF,WAAWqK,aAAcnC,GAA0B,GAC3FwC,EAAmB,EACd5K,EAAWS,YAAY,CAC5B,IAAIoK,EAAsD,KAAvC7K,EAAWO,YAAY33F,YAI1C,IAHIiiG,GAAgBD,EAAmB,KACrCA,GAAoB,GAElB5K,EAAWO,cAAgBoK,EAC7B,OAAOC,EAEJC,IACHD,EAAmB,EAEvB,CACA,OAAOA,CACT,EAGA5B,yBAA0B,SAAUxG,EAAOv8F,GACzC,GAA0B,IAAtBu8F,EAAMY,aAAuD,IAAlCZ,EAAMuG,eAAetjG,SAClD,OAAO,EAET,GAAoD,QAAhD+8F,EAAMuG,eAAeliG,SAASjsB,cAChC,OAAO,EAET,IAAIk8E,EAAM0rC,EAAMuG,eAAe34F,cAAc,OAC7C,IAAK0mD,EACH,OAAO,EAGT,IADA,IAAIkpC,EAAa/5F,EAAIg6F,iBAAiBuC,EAAMuG,eAAgB7I,WAAWC,SAAU,MAAM,GAChFH,EAAWS,YAAY,CAC5B,IAAI12G,EAAOi2G,EAAWO,YAGtB,GAAIx2G,IAAS+sE,EACX,MAIF,GAAI/sE,EAAK+e,UACP,OAAO,CAEX,CACA,OAAO,CACT,EACAqgG,sBAAuB,SAAU71F,EAAMs1F,EAAgBQ,EAAc/F,GAGnE,GAAkB,IAAdA,GAA6C,IAA1B+F,EAAa3jG,SAClC,OAAO,EAKT,GAA4C,QAAxC2jG,EAAaviG,SAASjsB,gBAA4BwuH,EAAah5F,cAAc,OAC/E,OAAO,EAGT,IADA,IAAIqyF,EAAW2G,EAAa17F,WAAW21F,EAAY,GAC5CZ,EAAS8C,iBACd9C,EAAWA,EAAS9vF,UAUtB,IARA,IAME+2F,EANE1jG,EAAOsN,EACTq2F,EAAY,GACZC,EAAY,EACZC,GAAa,EACbC,GAAW,EACXppF,GAAO,EAEPoqF,EAAiB,GACXpqF,GAAQ1a,GAEd,GAAIA,EAAKP,SAAW,EAClBO,EAAO2jG,EAAUhgG,UADnB,CAIA,GAAsB,IAAlB3D,EAAKP,UAAmBqkG,GAc1B,GAHoC,QAAhC9jG,EAAKa,SAASjsB,eAChBkwH,IAEE9kG,IAASy8F,EACX/hF,GAAO,OACF,GAAsB,IAAlB1a,EAAKP,SAId,IADA,IAAI/8B,EAAIs9B,EAAK0H,WAAW9kC,OAAS,EAC1BF,GAAK,GACVihI,EAAUzgI,KAAK88B,EAAK0H,WAAWhlC,IAC/BA,GAAK,OArBToiI,EAAiB,EACjBpB,EAAgBE,EAAY5jG,EAAKp9B,QAC5BihI,GAAcjB,EAAer2F,OAASq3F,GAAahB,EAAer2F,OAASm3F,IAC9EG,GAAa,GAEXA,GAAcjB,EAAe9gG,KAAO8hG,GAAahB,EAAe9gG,KAAO4hG,IACzEI,GAAW,GAEbF,EAAYF,EAiBThpF,IACH1a,EAAO2jG,EAAUhgG,MA5BnB,CA+BF,OAAOmhG,CACT,EAGAC,yBAA0B,SAAU9kG,GAClC,IAAIsE,EAAMtE,EAAI88F,eAGd,IAAKx4F,GAAOA,EAAIygG,cAAgBzgG,EAAIy4F,WAClC,OAAO,EAIT,GAA8B,KAA1Bz4F,EAAI/7B,WAAWk4D,OACjB,OAAO,EAKT,IAAIukE,EAAgB74H,KAAK84H,yBAAyB3gG,EAAI04F,WAAW,IACjE,SAAIgI,KAC2C,QAAzCA,EAAcpkG,SAASjsB,eAAsD,IAA3BqwH,EAAcxlG,UAAkBwlG,EAAc76F,cAAc,QAKtH,EACA+6F,gCAAiC,SAAU1C,GAIzC,IAAI2C,EACFC,EAAWj5H,KAAKo2H,6BAA4B,SAAUt5F,GACpD,IAAIo8F,EAAKp8F,GAAMA,EAAG/I,aAAa,mBAI/B,MAHW,SAAPmlG,IACFF,GAAU,GAEW,UAAhBl8F,EAAGrI,UAA+B,UAAPykG,CACpC,GAAG7C,GACL,OAAQ2C,GAAWC,CACrB,EAGAE,iBAAkB,SAA0BtlG,GAC1C,IAAIv9B,EAGF2J,EACAw8C,EAHA3C,EAAO,GACP3hB,EAAMtE,EAAI88F,eAGZ,GAAIx4F,EAAIy4F,WAAY,CAElB,IADAn0E,EAAY5oB,EAAI57B,cAAc,OACzB3B,EAAI,EAAG2J,EAAMk4B,EAAIy4F,WAAYt6H,EAAI2J,EAAK3J,GAAK,EAC9CmmD,EAAU/iD,YAAYy+B,EAAI04F,WAAWv6H,GAAG8iI,iBAE1Ct/E,EAAO2C,EAAUpe,SACnB,CACA,OAAOyb,CACT,EAQAu/E,gBAAiB,SAAyBliE,EAASi5D,GACjD,IAAIkJ,EAAeC,EAUnB,OATKnJ,IACHA,EAAQ90H,OAAOq1H,eAAeE,WAAW,IAE3CyI,EAAgBlJ,EAAMe,aACtBoI,EAAiBnJ,EAAMe,aACvBmI,EAAc/rB,mBAAmBp2C,GACjCmiE,EAAc5C,OAAOtG,EAAM4G,aAAc5G,EAAMa,WAC/CsI,EAAehsB,mBAAmBp2C,GAClCoiE,EAAelC,SAASjH,EAAM4G,aAAc5G,EAAMa,WAC3C,CACL/uE,KAAMo3E,EAAcl9H,WAAW5F,OAC/BwmD,MAAOu8E,EAAen9H,WAAW5F,OAErC,EAEAgjI,uBAAwB,SAAUpJ,GAChC,IAAIgD,EAAYhD,EAAMuG,eACtB,OAAOvD,IAAchD,EAAM4G,cAAgB5D,EAAUD,iBAAmB/C,EAAMa,YAAcb,EAAMY,YAAc,CAClH,EACA8H,yBAA0B,SAAU1I,GAClC,OAAKA,EAKDpwH,KAAKw5H,uBAAuBpJ,IAA0E,IAAhEA,EAAMuG,eAAer7F,WAAW80F,EAAMY,aAAa39F,SACpF+8F,EAAMuG,eAAer7F,WAAW80F,EAAMY,aAIT,IAAlCZ,EAAMuG,eAAetjG,SAChB+8F,EAAMuG,eAAe3iG,WAIvBo8F,EAAMuG,eAdJ,IAeX,EACA8C,oBAAqB,SAAU5lG,GAC7B,IACEu8F,EACAtB,EACA4K,EAHE1nF,EAAYne,EAAI88F,eAIpB,IAAK3+E,EAAU4+E,YAAc5+E,EAAU4mF,cAAgB5mF,EAAU6+E,WAAW,GAAGC,wBAC7E,MAAO,GAGT,GAA+C,KAD/CV,EAAQp+E,EAAU6+E,WAAW,IACnBC,wBAAwBz9F,SAAgB,CAGhD,IAFAy7F,EAAQ,GACR4K,EAAWtJ,EAAMU,wBACV4I,EAAS1lG,YAAwD,IAA1C0lG,EAAS1lG,WAAWsH,WAAW9kC,QAC3Ds4H,EAAMh4H,KAAK4iI,EAAS1lG,YACpB0lG,EAAWA,EAAS1lG,WAEtB,OAAO86F,CACT,CACA,MAAO,GAAGtpG,OAAO5uB,KAAKw5H,EAAMU,wBAAwB90F,qBAAqB,MAAM,SAAUc,GACvF,MAAyC,oBAA3BkV,EAAU2nF,cAA8B3nF,EAAU2nF,aAAa78F,GAAI,EACnF,GACF,EACAi0F,WAAY,SAAUn9F,EAAMC,GAC1B,IAAIu8F,EAAQv8F,EAAIy5E,cAChB8iB,EAAM7iB,mBAAmB35E,GACzB5zB,KAAKsxH,YAAYz9F,EAAKu8F,EACxB,EACA3zF,OAAQ,SAAU5I,EAAKu/F,EAAWpC,EAAaqC,EAASpC,GACtD,IAAIb,EAAQv8F,EAAIy5E,cAQhB,OAPA8iB,EAAMiH,SAASjE,EAAWpC,GACtBqC,EACFjD,EAAMsG,OAAOrD,EAASpC,GAEtBb,EAAMiB,UAAS,GAEjBrxH,KAAKsxH,YAAYz9F,EAAKu8F,GACfA,CACT,EAOAwJ,eAAgB,SAAU/lG,EAAKgmG,GACzBA,EACFhmG,EAAI88F,eAAemJ,kBAEnBjmG,EAAI88F,eAAeoJ,eAEvB,EAQAtH,WAAY,SAAU5+F,EAAKD,EAAMpS,GAC/BxhB,KAAKy8B,OAAO5I,EAAKD,EAAMpS,EACzB,EACAw4G,kBAAmB,SAAU9iG,GAC3B,IAAI8a,EAAY9a,EAAcy5F,eAC9B,OAA6B,IAAzB3+E,EAAU4+E,WACL,KAEF5+E,EAAU6+E,WAAW,EAC9B,EACAS,YAAa,SAAUp6F,EAAek5F,GACpC,IAAIp+E,EAAY9a,EAAcy5F,eAC9B3+E,EAAUioF,kBACVjoF,EAAUkoF,SAAS9J,EACrB,EAGAuB,kBAAmB,SAAUz6F,GAC3B,IAAItD,EAAOsD,EAAcy5F,eAAewJ,WAExC,OADcvmG,GAA0B,IAAlBA,EAAKP,SAAiBO,EAAKI,WAAaJ,CAEhE,GAEFs3F,EAAal5E,UAAYmkF,CAC1B,CA1lBD,GA2lBA,WAGE,SAASiE,EAA+BvO,EAAY10D,GAClD,QAAK00D,GAGEA,EAAWlwH,MAAK,SAAU0+H,GAC/B,GAAgD,oBAArCA,EAAU1E,uBACnB,OAAO,EAET,IAAI2E,EAAoBD,EAAU1E,yBAClC,QAAK2E,IAGAn+H,MAAMF,QAAQq+H,KACjBA,EAAoB,CAACA,IAEhBA,EAAkB3+H,MAAK,SAAUmhC,GACtC,OAAOouF,EAAa8D,KAAKY,aAAa9yF,EAAIq6B,GAAS,EACrD,IACF,GACF,CACA,IAAIojE,EAAS,SAAUzuC,GACrB9rF,KAAKokB,KAAO0nE,EACZ9rF,KAAK41B,QAAU51B,KAAKokB,KAAKwR,QACzB51B,KAAK4zC,OAAS,GACd5zC,KAAKw6H,eAAiB,CAAC,EACvBx6H,KAAKy6H,aAAe,CAAC,EACrBz6H,KAAKu2D,UAAY,CAAC,CACpB,EACAgkE,EAAO7jI,UAAY,CACjBgkI,sCAAuCxP,EAAa8D,KAAK5C,OAASlB,EAAa8D,KAAKzC,OAGpFoO,eAAgB,SAAU7zF,EAASnuC,EAAOiiI,EAAUC,GAClD,IAAI7nE,EAAMhzD,KAAKokB,KAAKwR,QAAQygG,cAC1BxiG,EAAM7zB,KAAKokB,KAAKwR,QAAQsB,cAC1B4P,EAAUokF,EAAa8D,KAAKhkD,UAAUlkC,IAAY,CAACksB,EAAKn/B,GAAK/mB,QAAQg6B,IAAY,EAAI,CAACA,GAAWA,EACjG3qC,MAAMzF,UAAU4hB,QAAQ1hB,KAAKkwC,EAAS,SAAU3tC,GAC9CA,EAAOwkC,iBAAiBhlC,EAAOiiI,EAAUC,GACzC76H,KAAK4zC,OAAO98C,KAAK,CAACqC,EAAQR,EAAOiiI,EAAUC,GAC7C,EAAE//H,KAAKkF,MACT,EACA86H,eAAgB,SAAUh0F,EAASnuC,EAAOiiI,EAAUC,GAClD,IAAI7sG,EACFz2B,EACAy7D,EAAMhzD,KAAKokB,KAAKwR,QAAQygG,cACxBxiG,EAAM7zB,KAAKokB,KAAKwR,QAAQsB,cACtB4P,IACFA,EAAUokF,EAAa8D,KAAKhkD,UAAUlkC,IAAY,CAACksB,EAAKn/B,GAAK/mB,QAAQg6B,IAAY,EAAI,CAACA,GAAWA,EACjG3qC,MAAMzF,UAAU4hB,QAAQ1hB,KAAKkwC,EAAS,SAAU3tC,IAE/B,KADf60B,EAAQhuB,KAAK+6H,gBAAgB5hI,EAAQR,EAAOiiI,EAAUC,MAEpDtjI,EAAIyI,KAAK4zC,OAAOje,OAAO3H,EAAO,GAAG,IAC/B,GAAG+d,oBAAoBx0C,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAE3C,EAAEuD,KAAKkF,OAEX,EACA+6H,gBAAiB,SAAU5hI,EAAQR,EAAOiiI,EAAUC,GAClD,IAAIvkI,EAAGyE,EAAG0qB,EACV,IAAKnvB,EAAI,EAAGyE,EAAIiF,KAAK4zC,OAAOp9C,OAAQF,EAAIyE,EAAGzE,GAAQ,EAEjD,IADAmvB,EAAOzlB,KAAK4zC,OAAOt9C,IACV,KAAO6C,GAAUssB,EAAK,KAAO9sB,GAAS8sB,EAAK,KAAOm1G,GAAYn1G,EAAK,KAAOo1G,EACjF,OAAOvkI,EAGX,OAAQ,CACV,EACA0kI,mBAAoB,WAElB,IADA,IAAIzjI,EAAIyI,KAAK4zC,OAAOrc,MACbhgC,GACLA,EAAE,GAAGw0C,oBAAoBx0C,EAAE,GAAIA,EAAE,GAAIA,EAAE,IACvCA,EAAIyI,KAAK4zC,OAAOrc,KAEpB,EACA0jG,2BAA4B,SAAU9jE,GAIpC,IAHA,IAAI+jE,EAAWl7H,KAAK4zC,OAAOpuB,QAAO,SAAUjuB,GAC1C,OAAOA,GAAKA,EAAE,GAAGw8B,cAAgBx8B,EAAE,GAAGw8B,aAAa,yBAA2BojC,EAAQpjC,aAAa,sBACrG,IACSz9B,EAAI,EAAG2J,EAAMi7H,EAAS1kI,OAAQF,EAAI2J,EAAK3J,IAAK,CACnD,IAAIiB,EAAI2jI,EAAS5kI,GACjB0J,KAAK86H,eAAevjI,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAC1C,CACF,EAEA4jI,yBAA0B,SAAUhkE,GAC9Bn3D,KAAKu2D,UAAyB,gBAChCv2D,KAAKo7H,aAAajkE,EAAQpjC,aAAa,wBAA0BojC,EAAQ94B,WAEvEr+B,KAAKq7H,aACPr7H,KAAKq7H,YAAY/iH,SAAQ,SAAU/gB,GACjCyI,KAAK26H,eAAexjE,EAAS5/D,EAAQ,KAAGA,EAAW,QAAEuD,KAAKkF,MAC5D,GAAGA,KAEP,EACAs7H,kBAAmB,SAAU3iI,QACQY,IAA/ByG,KAAKw6H,eAAe7hI,WACfqH,KAAKw6H,eAAe7hI,EAE/B,EACA4iI,mBAAoB,SAAU5iI,GAC5BqH,KAAKw6H,eAAe7hI,IAAS,CAC/B,EAEA6iI,kBAAmB,SAAU7iI,EAAOiiI,GAClC56H,KAAKy7H,cAAc9iI,GACdqH,KAAKy6H,aAAa9hI,KACrBqH,KAAKy6H,aAAa9hI,GAAS,IAE7BqH,KAAKy6H,aAAa9hI,GAAO7B,KAAK8jI,EAChC,EACAc,kBAAmB,SAAU/iI,EAAOiiI,GAClC,IAAI5sG,EAAQhuB,KAAK27H,sBAAsBhjI,EAAOiiI,IAC/B,IAAX5sG,GACFhuB,KAAKy6H,aAAa9hI,GAAOg9B,OAAO3H,EAAO,EAG3C,EAEA2tG,sBAAuB,SAAUhjI,EAAOiiI,GACtC,OAAK56H,KAAKy6H,aAAa9hI,IAAWqH,KAAKy6H,aAAa9hI,GAAOnC,OAGpDwJ,KAAKy6H,aAAa9hI,GAAOmU,QAAQ8tH,IAF9B,CAGZ,EACAgB,sBAAuB,WACrB57H,KAAKy6H,aAAe,CAAC,CAEvB,EAEAoB,mBAAoB,SAAUxiI,EAAMpD,EAAM6lI,GACpC97H,KAAKy6H,aAAaphI,KAAU2G,KAAKw6H,eAAenhI,IAClD2G,KAAKy6H,aAAaphI,GAAMif,SAAQ,SAAUsiH,GACxCA,EAAS3kI,EAAM6lI,EACjB,GAEJ,EAGA7+C,QAAS,WACPj9E,KAAKg7H,qBACLh7H,KAAK47H,wBACL57H,KAAK+7H,oBACD/7H,KAAKokB,KAAKqa,UACZz+B,KAAKokB,KAAKqa,SAASnmB,SAAQ,SAAU6+C,GACnCA,EAAQ36B,gBAAgB,sBAC1B,GAEJ,EAIAw/F,oBAAqB,WACfh8H,KAAKi8H,sBAOTj8H,KAAKi8H,oBAAsB,SAAUC,GACnCl8H,KAAKm8H,0BAA0BD,EACjC,EAAEphI,KAAKkF,MAGPA,KAAKo8H,kBAGLp8H,KAAK41B,QAAQsB,cAAcu5F,YAAYl6D,UAAUz/D,KAAKkJ,KAAKi8H,qBAC7D,EAEAF,kBAAmB,WACjB,IAAIloG,EAAM7zB,KAAK41B,QAAQsB,cACvB,GAAKl3B,KAAKi8H,qBAAwBpoG,EAAI48F,YAAYl6D,UAAlD,CAKA,IAAIvoC,EAAQ6F,EAAI48F,YAAYl6D,UAAUzpD,QAAQ9M,KAAKi8H,sBACpC,IAAXjuG,GACF6F,EAAI48F,YAAYl6D,UAAU5gC,OAAO3H,EAAO,GAIrC6F,EAAI48F,YAAYl6D,UAAU//D,QAC7BwJ,KAAKq8H,mBAVP,CAYF,EAEAD,gBAAiB,WACf,IAAIvoG,EAAM7zB,KAAK41B,QAAQsB,cAGvB,IAAIrD,EAAI48F,YAAYl6D,UAApB,CAKA,IAAIg7D,EAAgB,SAAU1vH,EAAMkZ,GAC5B8Y,EAAI48F,YAAYl6D,WAClB1iC,EAAI48F,YAAYl6D,UAAUj+C,SAAQ,SAAUsiH,GAC1CA,EAAS,CACP0B,QAASz6H,EAAK,GACdtH,MAAOsH,EAAK,GACZA,KAAMA,EACNkZ,OAAQA,GAEZ,GAEJ,EAMAwhH,EAAU,WACR,IAAIxhH,EAAS8Y,EAAI48F,YAAY73E,KAAK/8C,MAAMmE,KAAMlE,WAC9C,IAAK+3B,EAAI48F,YAAYl6D,UACnB,OAAOx7C,EAET,IAAIlZ,EAAO1F,MAAMzF,UAAU8E,MAAM5E,KAAKkF,WAEtC,OADAy1H,EAAc1vH,EAAMkZ,GACbA,CACT,EAGFwhH,EAAQ3jF,KAAO/kB,EAAI48F,YAGnB8L,EAAQhmE,UAAY,GAGpBgmE,EAAQhL,cAAgBA,EAGxB19F,EAAI48F,YAAc8L,CAxClB,CAyCF,EAEAF,kBAAmB,WACjB,IAAIxoG,EAAM7zB,KAAK41B,QAAQsB,cAClBrD,EAAI48F,YAAY73E,OAKrB/kB,EAAI48F,YAAc58F,EAAI48F,YAAY73E,KACpC,EAEA6iF,cAAe,SAAUpiI,GACvB,IAAI2G,KAAKu2D,UAAUl9D,GAAnB,CAGA,OAAQA,GACN,IAAK,sBAEH2G,KAAK26H,eAAe36H,KAAK41B,QAAQsB,cAAc8Y,KAAM,YAAahwC,KAAKw8H,oBAAoB1hI,KAAKkF,OAAO,GACvGA,KAAK26H,eAAe36H,KAAK41B,QAAQsB,cAAc8Y,KAAM,QAAShwC,KAAKy8H,gBAAgB3hI,KAAKkF,OAAO,GAC/FA,KAAK26H,eAAe36H,KAAK41B,QAAQsB,cAAc8Y,KAAM,QAAShwC,KAAK08H,gBAAgB5hI,KAAKkF,OAAO,GAC/F,MACF,IAAK,OAIL,IAAK,QAEHA,KAAKy7H,cAAc,uBACnB,MACF,IAAK,gBAEHz7H,KAAKo7H,aAAe,CAAC,EACrBp7H,KAAKokB,KAAKqa,SAASnmB,SAAQ,SAAU6+C,GACnCn3D,KAAKo7H,aAAajkE,EAAQpjC,aAAa,wBAA0BojC,EAAQ94B,SAC3E,GAAGr+B,MAGCA,KAAK06H,sCACP16H,KAAK28H,oBAAoB,QAAS38H,KAAK48H,aAKpC58H,KAAK06H,uCACR16H,KAAKy7H,cAAc,oBACnBz7H,KAAK68H,qBAAsB,EAC3B78H,KAAK26H,eAAe3iI,SAAU,kBAAmBgI,KAAK88H,8BAA8BhiI,KAAKkF,OAEzFA,KAAKg8H,uBAEP,MACF,IAAK,gBAEHh8H,KAAK28H,oBAAoB,QAAS38H,KAAK+8H,aACvC,MACF,IAAK,eAEH/8H,KAAK28H,oBAAoB,OAAQ38H,KAAKg9H,YACtC,MACF,IAAK,mBAEHh9H,KAAK28H,oBAAoB,WAAY38H,KAAKi9H,gBAC1C,MACF,IAAK,gBAEHj9H,KAAK28H,oBAAoB,QAAS38H,KAAKk9H,aACvC,MACF,IAAK,kBAEHl9H,KAAK28H,oBAAoB,UAAW38H,KAAKm9H,eACzC,MACF,IAAK,uBAIL,IAAK,uBAIL,IAAK,qBAIL,IAAK,wBAEHn9H,KAAKy7H,cAAc,mBACnB,MACF,IAAK,oBAEHz7H,KAAK28H,oBAAoB,YAAa38H,KAAKo9H,iBAC3C,MACF,IAAK,eAEHp9H,KAAK28H,oBAAoB,WAAY38H,KAAKq9H,gBAC1Cr9H,KAAK28H,oBAAoB,YAAa38H,KAAKq9H,gBAC3C,MACF,IAAK,eAEHr9H,KAAK28H,oBAAoB,OAAQ38H,KAAKs9H,YACtC,MAGF,IAAK,gBAEHt9H,KAAK28H,oBAAoB,QAAS38H,KAAKu9H,aAG3Cv9H,KAAKu2D,UAAUl9D,IAAQ,CA9FvB,CA+FF,EACAsjI,oBAAqB,SAAUtjI,EAAMkxC,GAE9BvqC,KAAKq7H,cACRr7H,KAAKq7H,YAAc,IAErBr7H,KAAKokB,KAAKqa,SAASnmB,SAAQ,SAAU6+C,GACnCn3D,KAAK26H,eAAexjE,EAAS99D,EAAMkxC,EAAQzvC,KAAKkF,MAClD,GAAGA,MACHA,KAAKq7H,YAAYvkI,KAAK,CACpB,KAAQuC,EACR,QAAWkxC,GAEf,EACAizF,eAAgB,SAAUrmE,GACxB,IAAInpC,EAAQmpC,EAAQpjC,aAAa,uBAC7B/F,IACFhuB,KAAKi7H,2BAA2B9jE,GAC5Bn3D,KAAKo7H,qBACAp7H,KAAKo7H,aAAaptG,GAG/B,EACAm6E,aAAc,SAAUhxC,GACtBA,EAAQh2B,QACRnhC,KAAKy9H,YAAYtmE,EAAS,CACxBh+D,OAAQg+D,EACRl+D,KAAM,SAEV,EACAwkI,YAAa,SAAUtkI,EAAQukI,GAC7B,IACEC,EADEC,EAAW59H,KAAKokB,KAAKy5G,oBAKrBD,GAA8B,UAAlBF,EAASzkI,MAAoB+G,KAAK89H,sBAAwB5S,EAAa8D,KAAKY,aAAagO,EAAU59H,KAAK89H,qBAAqB,IAAS1D,EAA+Bp6H,KAAKokB,KAAKynG,WAAY7rH,KAAK89H,wBAC9MH,EAAUC,GAEPD,GACH39H,KAAKokB,KAAKqa,SAAS9iC,MAAK,SAAUw7D,GAOhC,OALKwmE,GAAWzS,EAAa8D,KAAKY,aAAaz4D,EAASh+D,GAAQ,KAC9DwkI,EAAUxmE,KAIHwmE,CACX,GAAG39H,MAIL,IAAI+9H,GAAiB7S,EAAa8D,KAAKY,aAAagO,EAAUzkI,GAAQ,KAAUihI,EAA+Bp6H,KAAKokB,KAAKynG,WAAY1yH,GACjIwkI,IAAYC,IAGVA,GAAYG,IAEdH,EAASphG,gBAAgB,uBACzBx8B,KAAK67H,mBAAmB,OAAQ6B,EAAUE,IAIxCD,IAEFA,EAAQtlI,aAAa,uBAAuB,GAC5C2H,KAAK67H,mBAAmB,QAAS6B,EAAUC,KAG3CI,GACF/9H,KAAK67H,mBAAmB,sBAAuB6B,EAEnD,EACAM,YAAa,SAAU7kI,EAAQukI,GAC7B,GAAK19H,KAAKo7H,aAAV,CAKA,IAAIptG,EAAQ70B,EAAO46B,aAAa,uBAC9B+lB,EAAO3gD,EAAOklC,UACZyb,IAAS95C,KAAKo7H,aAAaptG,IAE7BhuB,KAAK67H,mBAAmB,gBAAiB6B,EAAUvkI,GAErD6G,KAAKo7H,aAAaptG,GAAS8rB,CAT3B,CAUF,EACAgjF,8BAA+B,SAAUnkI,GAKvC,GAAIA,EAAMu8C,eAAiBv8C,EAAMu8C,cAAc9T,cAAe,CAC5D,IACE8T,EADE9T,EAAgBzoC,EAAMu8C,cAAc9T,cAIxCphC,KAAKokB,KAAKqa,SAAS9iC,MAAK,SAAUw7D,GAChC,QAAI+zD,EAAa8D,KAAKY,aAAaz4D,EAAS/1B,GAAe,KACzD8T,EAAgBiiB,GACT,EAGX,GAAGn3D,MAGCk1C,GACFl1C,KAAKg+H,YAAY9oF,EAAe,CAC9B/7C,OAAQioC,EACR8T,cAAeA,GAGrB,CACF,EACAinF,0BAA2B,WAIzB,IAAIhjI,EAAS6G,KAAKokB,KAAKy5G,oBACnB1kI,GACF6G,KAAKg+H,YAAY7kI,EAAQ,CACvBA,OAAQA,EACR+7C,cAAe/7C,GAGrB,EACAsjI,gBAAiB,SAAU9jI,GACzBqH,KAAKy9H,YAAY9kI,EAAMQ,OAAQR,EACjC,EACA+jI,gBAAiB,SAAU/jI,GACzBqH,KAAKy9H,YAAY9kI,EAAMQ,OAAQR,EACjC,EACA6jI,oBAAqB,SAAU7jI,GAC7BqH,KAAK89H,oBAAsBnlI,EAAMQ,MACnC,EACAyjI,YAAa,SAAUjkI,GACrBqH,KAAKg+H,YAAYrlI,EAAMu8C,cAAev8C,EACxC,EACAokI,YAAa,SAAUpkI,GACrBqH,KAAK67H,mBAAmB,gBAAiBljI,EAAOA,EAAMu8C,cACxD,EACA8nF,WAAY,SAAUrkI,GACpBqH,KAAK67H,mBAAmB,eAAgBljI,EAAOA,EAAMu8C,cACvD,EACA+nF,eAAgB,SAAUtkI,GAKxB,GAJAqH,KAAK67H,mBAAmB,mBAAoBljI,EAAOA,EAAMu8C,eAIrDl1C,KAAK68H,oBAAqB,CAC5B,IAAIa,EAAW,CACbvkI,OAAQR,EAAMQ,OACd+7C,cAAev8C,EAAMu8C,eAKvB17C,WAAW,WACTwG,KAAKg+H,YAAYN,EAASxoF,cAAewoF,EAC3C,EAAE5iI,KAAKkF,MAAO,EAChB,CACF,EACAk9H,YAAa,SAAUvkI,GACrBqH,KAAK67H,mBAAmB,gBAAiBljI,EAAOA,EAAMu8C,cACxD,EACAkoF,gBAAiB,SAAUzkI,GACzBqH,KAAK67H,mBAAmB,oBAAqBljI,EAAOA,EAAMu8C,cAC5D,EACAmoF,eAAgB,SAAU1kI,GACxBqH,KAAK67H,mBAAmB,eAAgBljI,EAAOA,EAAMu8C,cACvD,EACAooF,WAAY,SAAU3kI,GACpBqH,KAAK67H,mBAAmB,eAAgBljI,EAAOA,EAAMu8C,cACvD,EACAqoF,YAAa,SAAU5kI,GACrBqH,KAAK67H,mBAAmB,gBAAiBljI,EAAOA,EAAMu8C,cACxD,EACAioF,cAAe,SAAUxkI,GAEvB,OADAqH,KAAK67H,mBAAmB,kBAAmBljI,EAAOA,EAAMu8C,eACpDg2E,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQ21E,OACpD/sH,KAAK67H,mBAAmB,uBAAwBljI,EAAOA,EAAMu8C,eAElEg2E,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQy1E,QAAUl0H,EAAMg+C,SAAWu0E,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQ5vC,GACxIxH,KAAK67H,mBAAmB,uBAAwBljI,EAAOA,EAAMu8C,eAElEg2E,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQw1E,KACpD5sH,KAAK67H,mBAAmB,qBAAsBljI,EAAOA,EAAMu8C,eAEhEg2E,EAAa8D,KAAK5B,MAAMz0H,EAAO,CAACuyH,EAAa8D,KAAK53E,QAAQ41E,OAAQ9B,EAAa8D,KAAK53E,QAAQu1E,YACvF3sH,KAAK67H,mBAAmB,wBAAyBljI,EAAOA,EAAMu8C,oBADvE,CAGF,GAEFg2E,EAAaqP,OAASA,CACvB,CA9hBD,GAkiBMzrD,EAASo8C,EAAaC,UAAU7tH,OAAO,CAOzCu6D,YAAQt+D,EAMR0kI,UAAM1kI,EAaN2kI,cAAU3kI,EAkBV01C,WAAO11C,EAYP4kI,mBAAe5kI,EAIf6kI,oBAAgB7kI,EAKhB8kI,eAAW9kI,EAIX21E,eAAW31E,EAIX00C,WAAO10C,EAKPq7B,YAAa,SAAUgB,GACjBk5C,EAAOwvD,gBAAgB1oG,GACzBs1F,EAAaC,UAAUv0H,KAAKoJ,KAAMA,KAAKgc,SAAS4Z,IAEhDs1F,EAAaC,UAAUv0H,KAAKoJ,KAAM41B,EAEtC,EACArB,KAAM,WACJ22F,EAAaC,UAAUz0H,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAClDkE,KAAK+hC,OAAS/hC,KAAKu+H,eACnBv+H,KAAK2yC,GAAG3yC,KAAK+hC,OAAQ,QAAS/hC,KAAK+8H,YAAYjiI,KAAKkF,MACtD,EAQAw+H,UAAW,WACT,OAAOx+H,KAAK+hC,MACd,EACAs6D,UAAW,WACT,MAA8B,oBAAhBr8F,KAAK63D,OAAwB73D,KAAK63D,OAAO73D,KAAKokB,KAAKwR,SAAW51B,KAAK63D,MACnF,EACA4mE,QAAS,WACP,MAA4B,oBAAdz+H,KAAKi+H,KAAsBj+H,KAAKi+H,KAAKj+H,KAAKokB,KAAKwR,SAAW51B,KAAKi+H,IAC/E,EACAS,YAAa,WACX,MAAgC,oBAAlB1+H,KAAKk+H,SAA0Bl+H,KAAKk+H,SAASl+H,KAAKokB,KAAKwR,SAAW51B,KAAKk+H,QACvF,EACAK,aAAc,WACZ,IAAIx8F,EAAS/hC,KAAKhI,SAASC,cAAc,UACvCuvC,EAAUxnC,KAAKo+H,eACfO,EAAY3+H,KAAKy+H,UACjBG,EAAe5+H,KAAK81H,gBAAgB,gBAyBtC,OAvBA/zF,EAAOmtC,UAAU58D,IAAI,wBACrByvB,EAAOmtC,UAAU58D,IAAI,wBAA0BtS,KAAK3G,MAChD2G,KAAKkvE,WACPlvE,KAAKkvE,UAAU52D,SAAQ,SAAU8lB,GAC/B2D,EAAOmtC,UAAU58D,IAAI8rB,EACvB,IAIF2D,EAAO1pC,aAAa,cAAe2H,KAAKq8F,aACpCsiC,IACF58F,EAAO1pC,aAAa,QAASsmI,GAC7B58F,EAAO1pC,aAAa,aAAcsmI,IAEhC3+H,KAAKiuC,OACPx3C,OAAOwL,KAAKjC,KAAKiuC,OAAO31B,SAAQ,SAAUqmB,GACxCoD,EAAO1pC,aAAasmC,EAAM3+B,KAAKiuC,MAAMtP,GACvC,GAAG3+B,MAEgB,gBAAjB4+H,GAAkC5+H,KAAKq+H,YACzC72F,EAAUxnC,KAAKq+H,WAEjBt8F,EAAO1D,UAAYmJ,EACZzF,CACT,EACAg7F,YAAa,SAAUpkI,GACrBA,EAAM46C,iBACN56C,EAAM06C,kBACN,IAAIwkB,EAAS73D,KAAKq8F,YACdxkC,GACF73D,KAAK6+H,WAAWhnE,EAEpB,EACA4kB,SAAU,WACR,OAAOz8E,KAAK+hC,OAAOmtC,UAAUx3C,SAAS13B,KAAK81H,gBAAgB,qBAC7D,EACAJ,YAAa,WACX11H,KAAK+hC,OAAOmtC,UAAUhmC,OAAOlpC,KAAK81H,gBAAgB,6BAC3C91H,KAAK8+H,UACd,EACArJ,UAAW,WACTz1H,KAAK+hC,OAAOmtC,UAAU58D,IAAItS,KAAK81H,gBAAgB,6BACxC91H,KAAK8+H,UACd,EACAvJ,kBAAmB,WACjB,IAAIwJ,EAAa,KAIjB,OAHI/+H,KAAKm+H,gBACPY,EAAa/+H,KAAKokB,KAAKmxG,kBAAkBv1H,KAAKq8F,cAEzC0iC,CACT,EACAvJ,iBAAkB,SAAU5hG,GAC1B,IAEEorG,EACAC,EAHEC,GAAU,EACZhB,EAAWl+H,KAAK0+H,cAGlB,OAAwB,IAApB1+H,KAAK8+H,aAA4C,IAApB9+H,KAAK8+H,WAC7B9+H,KAAK8+H,YAEVZ,GAAYA,EAAS1nI,OAAS,IAChC0oI,GAA6D,IAAnDhB,EAASpxH,QAAQ8mB,EAAKa,SAASjsB,iBAEtC02H,GAAWl/H,KAAKivC,QACnB+vF,EAAYh/H,KAAKivC,MAAM10C,MAAM0T,MAAM,KACnCgxH,EAAgBj/H,KAAK1E,OAAOmgD,iBAAiB7nB,EAAM,MAAMuoB,iBAAiBn8C,KAAKivC,MAAM1uC,MACrFy+H,EAAU1mH,SAAQ,SAAU9X,GACrBR,KAAK8+H,cACRI,GAA0C,IAAhCD,EAAcnyH,QAAQtM,KAIG,oBAApBR,KAAKivC,MAAM1uC,QACxBP,KAAK8+H,WAAaI,EAGxB,GAAGl/H,OAEEk/H,EACT,IAEFpwD,EAAOwvD,gBAAkB,SAAUjlI,GACjC,MAAuB,kBAATA,GAAqB6xH,EAAaW,WAAW9pF,OAAOrrC,UAAUslB,SAASrlB,eAAe0C,EACtG,EACA6xH,EAAaW,WAAW9pF,OAAS+sC,EAQjCo8C,EAAaW,WAAW9pF,OAAOrrC,UAAUslB,SAAW,CAClD,KAAQ,CACN3iB,KAAM,OACNw+D,OAAQ,OACRomE,KAAM,OACNC,SAAU,CAAC,IAAK,UAChBjvF,MAAO,CACL1uC,KAAM,cACNhG,MAAO,YAET4jI,eAAe,EACfC,eAAgB,WAChBC,UAAW,8BAEb,OAAU,CACRhlI,KAAM,SACNw+D,OAAQ,SACRomE,KAAM,SACNC,SAAU,CAAC,IAAK,MAChBjvF,MAAO,CACL1uC,KAAM,aACNhG,MAAO,UAET4jI,eAAe,EACfC,eAAgB,kBAChBC,UAAW,gCAEb,UAAa,CACXhlI,KAAM,YACNw+D,OAAQ,YACRomE,KAAM,YACNC,SAAU,CAAC,KACXjvF,MAAO,CACL1uC,KAAM,kBACNhG,MAAO,aAET4jI,eAAe,EACfC,eAAgB,kBAChBC,UAAW,mCAEb,cAAiB,CACfhlI,KAAM,gBACNw+D,OAAQ,gBACRomE,KAAM,iBACNC,SAAU,CAAC,UACXjvF,MAAO,CACL1uC,KAAM,kBACNhG,MAAO,gBAET4jI,eAAe,EACfC,eAAgB,WAChBC,UAAW,uCAEb,YAAe,CACbhlI,KAAM,cACNw+D,OAAQ,cACRomE,KAAM,cACNC,SAAU,CAAC,OAIXE,eAAgB,uBAChBC,UAAW,qCAEb,UAAa,CACXhlI,KAAM,YACNw+D,OAAQ,YACRomE,KAAM,YACNC,SAAU,CAAC,OAIXE,eAAgB,uBAChBC,UAAW,mCAEb,MAAS,CACPhlI,KAAM,QACNw+D,OAAQ,QACRomE,KAAM,QACNC,SAAU,CAAC,OACXE,eAAgB,eAChBC,UAAW,mCAEb,KAAQ,CACNhlI,KAAM,OACNw+D,OAAQ,OACRomE,KAAM,gBACNC,SAAU,CAAC,SAAU,UACrBE,eAAgB,cAChBC,UAAW,8BAEb,YAAe,CACbhlI,KAAM,cACNw+D,OAAQ,oBACRomE,KAAM,eACNC,SAAU,CAAC,MACXC,eAAe,EACfC,eAAgB,YAChBC,UAAW,iCAEb,cAAiB,CACfhlI,KAAM,gBACNw+D,OAAQ,sBACRomE,KAAM,iBACNC,SAAU,CAAC,MACXC,eAAe,EACfC,eAAgB,gBAChBC,UAAW,iCAEb,OAAU,CACRhlI,KAAM,SACNw+D,OAAQ,SACRomE,KAAM,SACNC,SAAU,GACVE,eAAgB,gBAChBC,UAAW,gCAEb,QAAW,CACThlI,KAAM,UACNw+D,OAAQ,UACRomE,KAAM,UACNC,SAAU,GACVE,eAAgB,gBAChBC,UAAW,iCAEb,cAAiB,CACfhlI,KAAM,gBACNw+D,OAAQ,gBACRomE,KAAM,iBACNC,SAAU,GACVjvF,MAAO,CACL1uC,KAAM,aACNhG,MAAO,UAET6jI,eAAgB,WAChBC,UAAW,sCAEb,YAAe,CACbhlI,KAAM,cACNw+D,OAAQ,cACRomE,KAAM,eACNC,SAAU,GACVjvF,MAAO,CACL1uC,KAAM,aACNhG,MAAO,WAET6jI,eAAgB,WAChBC,UAAW,uCAEb,YAAe,CACbhlI,KAAM,cACNw+D,OAAQ,cACRomE,KAAM,eACNC,SAAU,GACVjvF,MAAO,CACL1uC,KAAM,aACNhG,MAAO,QAET6jI,eAAgB,WAChBC,UAAW,oCAEb,aAAgB,CACdhlI,KAAM,eACNw+D,OAAQ,eACRomE,KAAM,gBACNC,SAAU,GACVjvF,MAAO,CACL1uC,KAAM,aACNhG,MAAO,SAET6jI,eAAgB,WAChBC,UAAW,qCAIb,aAAgB,CACdhlI,KAAM,eACN4kI,KAAM,oBACNpmE,OAAQ,eACRumE,eAAgB,WAChBC,UAAW,gCAIb,MAAS,CACPhlI,KAAM,QACNw+D,OAAQ,oBACRomE,KAAM,aACNC,SAAU,CAAC,cACXE,eAAgB,iBAChBC,UAAW,qCAEb,IAAO,CACLhlI,KAAM,MACNw+D,OAAQ,aACRomE,KAAM,oBACNC,SAAU,CAAC,OACXE,eAAgB,cAChBC,UAAW,oCAEb,GAAM,CACJhlI,KAAM,KACNw+D,OAAQ,YACRomE,KAAM,kBACNC,SAAU,CAAC,MACXE,eAAgB,YAChBC,UAAW,wCAEb,GAAM,CACJhlI,KAAM,KACNw+D,OAAQ,YACRomE,KAAM,kBACNC,SAAU,CAAC,MACXE,eAAgB,YAChBC,UAAW,wCAEb,GAAM,CACJhlI,KAAM,KACNw+D,OAAQ,YACRomE,KAAM,oBACNC,SAAU,CAAC,MACXE,eAAgB,YAChBC,UAAW,wCAEb,GAAM,CACJhlI,KAAM,KACNw+D,OAAQ,YACRomE,KAAM,mBACNC,SAAU,CAAC,MACXE,eAAgB,YAChBC,UAAW,wCAEb,GAAM,CACJhlI,KAAM,KACNw+D,OAAQ,YACRomE,KAAM,mBACNC,SAAU,CAAC,MACXE,eAAgB,YAChBC,UAAW,wCAEb,GAAM,CACJhlI,KAAM,KACNw+D,OAAQ,YACRomE,KAAM,kBACNC,SAAU,CAAC,MACXE,eAAgB,YAChBC,UAAW,yCAUXjT,EAAgBF,EAAaW,WAAW9pF,OAAOzkC,OAAO,CACxDi3B,KAAM,WACJ22F,EAAaW,WAAW9pF,OAAOrrC,UAAU69B,KAAK14B,MAAMmE,KAAMlE,UAC5D,EAEAqjI,cAAe,WACfC,eAAgB,UAIhBC,YAAa,oCAObC,SAAS,EAQTC,QAAS,WAAa,EAMtBC,YAAa,WACX,QAAIx/H,KAAKs/H,SACAt/H,KAAKu/H,UAAUrwD,UAAUx3C,SAAS13B,KAAKq/H,YAGlD,EAMAI,SAAU,WACJz/H,KAAKs/H,SACPt/H,KAAKu/H,UAAUrwD,UAAU58D,IAAItS,KAAKq/H,YAEtC,EAMAK,SAAU,WACJ1/H,KAAKs/H,SACPt/H,KAAKu/H,UAAUrwD,UAAUhmC,OAAOlpC,KAAKq/H,YAEzC,EAaAM,0BAA2B,WACzB,IAAIC,EAAU5/H,KAAKokB,KAAKy7G,mBAAmB,WACvCD,GACFA,EAAQD,2BAEZ,EAOAG,0BAA2B,WACzB,IAAIF,EAAU5/H,KAAKokB,KAAKy7G,mBAAmB,WACvCD,GACFA,EAAQE,2BAEZ,EAOAC,mBAAoB,WAClB,IAAIH,EAAU5/H,KAAKokB,KAAKy7G,mBAAmB,WACvCD,GACFA,EAAQG,oBAEZ,IAEF7U,EAAaW,WAAWj2B,KAAOw1B,EAK3BC,EAAaH,EAAaW,WAAWj2B,KAAKt4F,OAAO,CAQnD0iI,kBAAmB,KAInBC,sBAAuB,SAIvBC,gBAAgB,EAIhBC,gBAAiB,uBAKjBC,gBAAgB,EAIhBC,mBAAoB,qBAEpBhnI,KAAM,SACNw+D,OAAQ,aACRomE,KAAM,OACNC,SAAU,CAAC,KACXE,eAAgB,WAChBC,UAAW,6BACX9pG,KAAM,WACJ22F,EAAaW,WAAWj2B,KAAKl/F,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WACxDkE,KAAKsgI,UAAU,kBAAmBtgI,KAAKm9H,cAAcriI,KAAKkF,MAC5D,EAGA+8H,YAAa,SAAUpkI,GACrBA,EAAM46C,iBACN56C,EAAM06C,kBACN,IAAI+8E,EAAQlF,EAAal5E,UAAUgoF,kBAAkBh6H,KAAKhI,UAC1D,MAAoD,MAAhDo4H,EAAMuG,eAAeliG,SAASjsB,eAAuE,MAA9C4nH,EAAM4G,aAAaviG,SAASjsB,eAAyB0iH,EAAa8D,KAAKsD,cAAcpH,EAAal5E,UAAU8mF,yBAAyB1I,GAAQ,KAC/LpwH,KAAK6+H,WAAW,WAEpB7+H,KAAKw/H,eACRx/H,KAAKy/H,YAEA,EACT,EAEAtC,cAAe,SAAUxkI,GACnBuyH,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQ61E,IAAM/B,EAAa8D,KAAK7B,cAAcx0H,KAAWA,EAAMs+C,UAClHj3C,KAAK+8H,YAAYpkI,EAErB,EAEA4mI,QAAS,WAIP,OAHKv/H,KAAK41F,OACR51F,KAAK41F,KAAO51F,KAAKugI,cAEZvgI,KAAK41F,IACd,EACA4qC,YAAa,WACX,IAAI14C,EAAW,CAAC,uEAAwE9nF,KAAKmgI,gBAAiB,MAiB9G,OAhBAr4C,EAAShxF,KAAK,kDAA4F,gBAAzCkJ,KAAK81H,gBAAgB,gBAAoC,8BAAgC91H,KAAKm/H,cAAe,QAC9Kr3C,EAAShxF,KAAK,mDAA6F,gBAAzCkJ,KAAK81H,gBAAgB,gBAAoC,8BAAgC91H,KAAKo/H,eAAgB,QAK5Kp/H,KAAKogI,gBAGPt4C,EAAShxF,KAAK,+CAAgD,oHAAsHkJ,KAAK61H,cAAgB,KAAM,yDAA2D71H,KAAK61H,cAAgB,KAAM71H,KAAKqgI,mBAAoB,WAAY,UAExUrgI,KAAKggI,mBAGPl4C,EAAShxF,KAAK,+CAAgD,sEAAuE,UAAWkJ,KAAKigI,sBAAuB,WAAY,UAEnLn4C,EAAS/lF,KAAK,GACvB,EAEAy9H,YAAa,WACX,OAAOtU,EAAaW,WAAWj2B,KAAKl/F,UAAU8oI,YAAY3jI,MAAMmE,KAClE,EACA0/H,SAAU,WACRxU,EAAaW,WAAWj2B,KAAKl/F,UAAUgpI,SAAS7jI,MAAMmE,MACtDA,KAAKygI,WAAWlmI,MAAQ,EAC1B,EACAklI,SAAU,SAAUh7E,GAClB,IAAIvoD,EAAQ8D,KAAKygI,WACfL,EAAiBpgI,KAAK0gI,0BACtBC,EAAiB3gI,KAAK4gI,0BA0BxB,GApBoB,kBALpBn8E,EAAOA,GAAQ,CACblqD,MAAO,OAKPkqD,EAAO,CACLlqD,MAAOkqD,IAGXzkD,KAAKokB,KAAKy8G,gBACV7gI,KAAK8/H,4BACL5U,EAAaW,WAAWj2B,KAAKl/F,UAAU+oI,SAAS5jI,MAAMmE,MACtDA,KAAK+/H,qBACL7jI,EAAM3B,MAAQkqD,EAAKlqD,MACnB2B,EAAMilC,QAIFi/F,IACFA,EAAe1+F,QAA0B,WAAhB+iB,EAAKtrD,QAK5BwnI,EAAgB,CAClB,IAAIzxD,EAAYzqB,EAAK0tE,YAAc1tE,EAAK0tE,YAAYlkH,MAAM,KAAO,GACjE0yH,EAAej/F,SAAyD,IAA/CwtC,EAAUpiE,QAAQ9M,KAAKggI,kBAClD,CACF,EAEA/iD,QAAS,WACP,IAAKj9E,KAAK41F,KACR,OAAO,EAEL51F,KAAK41F,KAAK5hE,YACZh0B,KAAK41F,KAAK5hE,WAAWC,YAAYj0B,KAAK41F,aAEjC51F,KAAK41F,IACd,EAGAkrC,YAAa,WAEX,IAAIV,EAAiBpgI,KAAK0gI,0BACxBC,EAAiB3gI,KAAK4gI,0BACtBn8E,EAAO,CACLlqD,MAAOyF,KAAKygI,WAAWlmI,MAAM+5D,QAYjC,OAVIt0D,KAAKkgI,iBACPz7E,EAAKlqD,MAAQyF,KAAK+gI,gBAAgBt8E,EAAKlqD,QAEzCkqD,EAAKtrD,OAAS,QACVinI,GAAkBA,EAAe1+F,UACnC+iB,EAAKtrD,OAAS,UAEZwnI,GAAkBA,EAAej/F,UACnC+iB,EAAK0tE,YAAcnyH,KAAKggI,mBAEnBv7E,CACT,EACAu8E,WAAY,WACV,IAAIv8E,EAAOzkD,KAAK8gI,cAChB9gI,KAAKihI,iBAAiBx8E,EACxB,EACAw8E,iBAAkB,SAAUx8E,GAC1BzkD,KAAKokB,KAAK88G,mBACVlhI,KAAK6+H,WAAW7+H,KAAK63D,OAAQpT,GAC7BzkD,KAAKokB,KAAK+8G,gBACZ,EACAC,iBAAkB,SAAU/W,GAC1B,OAAOA,IAAQgX,UAAUhX,GAAOiX,UAAUjX,GAAOA,CACnD,EACAkX,0BAA2B,SAAUlX,GACnC,OAAOA,IAAQ/kB,mBAAmB+kB,GAAOlgE,mBAAmBkgE,GAAOA,CACrE,EACAmX,mBAAoB,SAAUv3E,GAC5B,IAAIh8C,EAAQg8C,EAAMh8C,MAAM,KACtBpT,EAAMoT,EAAM,GACZzN,EAAMyN,EAAM,GACd,OAAOpT,QAAetB,IAARiH,EAAoB,GAAK,IAAMR,KAAKuhI,0BAA0B/gI,GAC9E,EACAihI,mBAAoB,SAAUC,GAC5B,OAAOA,EAAYzzH,MAAM,KAAKhR,IAAI+C,KAAKwhI,mBAAmB1mI,KAAKkF,OAAO+B,KAAK,IAC7E,EACAg/H,gBAAiB,SAAUxmI,GAKzB,IACEonI,EADmB,2CACQ97H,KAAKtL,GAChCqnI,EAAS,GAGTC,EAAWtnI,EAAM4K,MAAM,iCACvBmzF,EAAOupC,EAAS,GAChBC,EAAQD,EAAS,GACjBzvF,EAAWyvF,EAAS,GACtB,GALa,mCAKAh8H,KAAKtL,GAChB,MAAO,OAASA,EAElB,IAAKonI,EAAW,CACd,IAAIpzE,EAAO+pC,EAAKrqF,MAAM,KAAK,IAEvBsgD,EAAKppD,MAAM,eAA0B,cAATopD,KAC9BqzE,EAAS,UAEb,CACA,OAAOA,EAEP5hI,KAAKohI,iBAAiB9oC,SAEZ/+F,IAAVuoI,EAAsB,GAAK,IAAM9hI,KAAKyhI,mBAAmBK,UAG5CvoI,IAAb64C,EAAyB,GAAK,IAAMA,EACtC,EACA2vF,aAAc,WACZ/hI,KAAKokB,KAAK88G,mBACVlhI,KAAKokB,KAAK+8G,gBACZ,EAEAa,iBAAkB,SAAUpsC,GAC1B,IAAI7oB,EAAQ6oB,EAAK53D,cAAc,gCAC7BikG,EAAOrsC,EAAK53D,cAAc,+BAC1B9hC,EAAQ05F,EAAK53D,cAAc,gCAG7Bh+B,KAAK2yC,GAAGijD,EAAM,QAAS51F,KAAKkiI,gBAAgBpnI,KAAKkF,OAGjDA,KAAK2yC,GAAGz2C,EAAO,QAAS8D,KAAKmiI,mBAAmBrnI,KAAKkF,OAGrDA,KAAK2yC,GAAGo6B,EAAO,QAAS/sE,KAAKoiI,iBAAiBtnI,KAAKkF,OAGnDA,KAAK2yC,GAAGsvF,EAAM,QAASjiI,KAAKqiI,gBAAgBvnI,KAAKkF,OAAO,EAC1D,EACAugI,WAAY,WACV,IACE3qC,EADQ51F,KAAKhI,SACFC,cAAc,OAO3B,OAJA29F,EAAKx3D,UAAY,6BACjBw3D,EAAK75D,GAAK,qCAAuC/7B,KAAK61H,cACtDjgC,EAAKv3D,UAAYr+B,KAAKwgI,cACtBxgI,KAAKgiI,iBAAiBpsC,GACfA,CACT,EACA6qC,SAAU,WACR,OAAOzgI,KAAKu/H,UAAUvhG,cAAc,oCACtC,EACA0iG,wBAAyB,WACvB,OAAO1gI,KAAKu/H,UAAUvhG,cAAc,uCACtC,EACA4iG,wBAAyB,WACvB,OAAO5gI,KAAKu/H,UAAUvhG,cAAc,uCACtC,EACAmkG,mBAAoB,SAAUxpI,GAE5B,GAAIA,EAAMy+C,UAAY8zE,EAAa8D,KAAK53E,QAAQy1E,MAG9C,OAFAl0H,EAAM46C,sBACNvzC,KAAKghI,aAKHroI,EAAMy+C,UAAY8zE,EAAa8D,KAAK53E,QAAQ01E,SAC9Cn0H,EAAM46C,iBACNvzC,KAAK+hI,eAET,EACAG,gBAAiB,SAAUvpI,GAEzBA,EAAM06C,iBACR,EACAgvF,gBAAiB,SAAU1pI,GAEzBA,EAAM46C,iBACNvzC,KAAKghI,YACP,EACAoB,iBAAkB,SAAUzpI,GAE1BA,EAAM46C,iBACNvzC,KAAK+hI,cACP,IAEF7W,EAAaW,WAAW3kG,OAASmkG,EAK7BC,EAAgBJ,EAAaC,UAAU7tH,OAAO,CAChDjE,KAAM,iBAMNipI,UAAW,IAIXC,qBAAsB,IAItBC,0BAA0B,EAI1BC,kBAAkB,EAClBluG,KAAM,WACJv0B,KAAK0iI,cAAgB1iI,KAAK2iI,gBAC1B3iI,KAAK81H,gBAAgB,qBAAqBp8H,YAAYsG,KAAK0iI,eAC3D1iI,KAAK4iI,mBACP,EACAjN,uBAAwB,WACtB,OAAO31H,KAAK6iI,mBACd,EAEAA,kBAAmB,WACjB,OAAO7iI,KAAK0iI,aACd,EACAC,cAAe,WACb,IAAI7lG,EAAK98B,KAAKhI,SAASC,cAAc,OAKrC,OAJA6kC,EAAGf,GAAK,gCAAkC/7B,KAAK61H,cAC/C/4F,EAAGsB,UAAY,+BACftB,EAAGuB,UAAYr+B,KAAKwgI,cACpBxgI,KAAK2yC,GAAG7V,EAAI,QAAS98B,KAAK+8H,YAAYjiI,KAAKkF,OACpC88B,CACT,EACA0jG,YAAa,WACX,MAAO,kKACT,EACAvjD,QAAS,WACHj9E,KAAK0iI,gBACH1iI,KAAK0iI,cAAc1uG,YACrBh0B,KAAK0iI,cAAc1uG,WAAWC,YAAYj0B,KAAK0iI,sBAE1C1iI,KAAK0iI,cAEhB,EACAI,YAAa,WACP9iI,KAAK0iI,eACP1iI,KAAK0iI,cAAcxzD,UAAUhmC,OAAO,uCAEtClpC,KAAK+iI,aAAe,IACtB,EACAC,YAAa,SAAUC,GACrB,SAAIjjI,KAAK0iI,cAAcxzD,UAAUx3C,SAAS,yCAA0CurG,EAASlvG,aAAa,2BAGtG/zB,KAAKuiI,uBACPviI,KAAK0iI,cAAc1kG,cAAch+B,KAAKuiI,sBAAsB/rG,YAAcysG,EAAS3pG,WAAWiI,KAAKhnC,MACnGyF,KAAK0iI,cAAc1kG,cAAch+B,KAAKuiI,sBAAsBhhG,KAAO0hG,EAAS3pG,WAAWiI,KAAKhnC,OAE9FyF,KAAK0iI,cAAcxzD,UAAU58D,IAAI,6BACjCtS,KAAK0iI,cAAcxzD,UAAUhmC,OAAO,8BAC/BlpC,KAAK0iI,cAAcxzD,UAAUx3C,SAAS,wCACzC13B,KAAK0iI,cAAcxzD,UAAU58D,IAAI,uCAEnCtS,KAAK+iI,aAAeE,EACpBjjI,KAAKkjI,kBACLljI,KAAKmjI,wBACEnjI,KACT,EACAkjI,gBAAiB,SAAUH,GACzBA,EAAeA,GAAgB/iI,KAAK+iI,aACpC,IAQEK,EACAC,EACAC,EACAC,EACA7lG,EAZE8lG,EAAiBxjI,KAAK1E,OAAO0nF,WAC/BygD,EAAezjI,KAAK0iI,cAAcrkF,aAClC09B,EAAWgnD,EAAa/gF,wBACxB0hF,EAAW1jI,KAAK0jI,SAChBC,EAAU3jI,KAAK2jI,QACfC,EAAoB5jI,KAAK81H,gBAAgB,qBACzC+N,EAA4B,CAAC,WAAY,SAAS/2H,QAAQxR,OAAOmgD,iBAAiBmoF,GAAmBznF,iBAAiB,cAAgB,EACtI2nF,EAAmB,CAAC,EAMtBV,EAAkBpjI,KAAK0iI,cAAcrlF,YAAc,EACnD,IAAI0mF,EAAmB/jI,KAAKokB,KAAKy7G,mBAAmB,WAChDkE,IACFL,EAAWK,EAAiBL,SAC5BC,EAAUI,EAAiBJ,SAE7BN,EAAcK,EAAWN,EAGrBS,GACFN,EAA4BK,EAAkB5hF,wBAC9C,CAAC,MAAO,QAAQ1pC,SAAQ,SAAUzd,GAChCipI,EAAiBjpI,GAAOkhF,EAASlhF,GAAO0oI,EAA0B1oI,EACpE,IACAipI,EAAiB/nF,MAAQggC,EAAShgC,MAClC+nF,EAAiB5lF,OAAS69B,EAAS79B,OACnC69B,EAAW+nD,EACXN,EAAiBD,EAA0BxnF,MAG3Cre,EAAMkmG,EAAkB9gF,WAGxBplB,EAAM19B,KAAK1E,OAAO23D,YAEpBqwE,EAAiBvnD,EAAS75B,KAAO65B,EAAShgC,MAAQ,EAClDre,GAAO+lG,EAAe1nD,EAASr+C,IAAMq+C,EAAS79B,OAASylF,EAAU3jI,KAAK0iI,cAAcrkF,aACpFr+C,KAAK0iI,cAAczzF,MAAMvR,IAAMx5B,KAAK+c,MAAMyc,GAAO,KACjD19B,KAAK0iI,cAAczzF,MAAM+N,MAAQ,UAC7BsmF,EAAiBF,GACnBpjI,KAAK0iI,cAAczzF,MAAMiT,KAAOmhF,EAAcD,EAAkB,KAChEpjI,KAAK0iI,cAAczzF,MAAM+N,MAAQ,WACxBwmF,EAAiBF,EAAiBF,GAC3CpjI,KAAK0iI,cAAczzF,MAAMiT,KAAO,OAChCliD,KAAK0iI,cAAczzF,MAAM+N,MAAQ,IAEjCh9C,KAAK0iI,cAAczzF,MAAMiT,KAAOmhF,EAAcC,EAAiB,KAC/DtjI,KAAK0iI,cAAczzF,MAAM+N,MAAQ,UAErC,EACA4lF,kBAAmB,WACjB5iI,KAAKsgI,UAAU,oBAAqBtgI,KAAKgkI,wBAAwBlpI,KAAKkF,OACtEA,KAAKsgI,UAAU,oBAAqBtgI,KAAKikI,wBAAwBnpI,KAAKkF,MACxE,EACAikI,wBAAyB,WAGlBjkI,KAAKwiI,0BACRxiI,KAAK8iI,aAET,EACA/F,YAAa,SAAUpkI,GACrB,IAAIurI,EAAkBlkI,KAAKokB,KAAKy7G,mBAAmB,UACjDkD,EAAe/iI,KAAK+iI,aAClBmB,GAAmBnB,IACrBpqI,EAAM46C,iBACNvzC,KAAKokB,KAAK+/G,cAAcnkI,KAAK+iI,cAI7B/iI,KAAKokB,KAAK2iC,MAAM,WACd,GAAIg8E,EAAc,CAChB,IAAIt+E,EAAO,CACTlqD,MAAOwoI,EAAazpG,WAAWiI,KAAKhnC,MACpCpB,OAAQ4pI,EAAahvG,aAAa,UAClCo+F,YAAa4Q,EAAahvG,aAAa,UAEzCmwG,EAAgBzE,SAASh7E,GACzBs+E,EAAe,IACjB,CACF,EAAEjoI,KAAKkF,QAETA,KAAK8iI,aACP,EACAsB,qBAAsB,WACpBpkI,KAAKqkI,gBAAkB,KACvBrkI,KAAK+yC,IAAI/yC,KAAK+iI,aAAc,WAAY/iI,KAAKskI,8BAC7CtkI,KAAKskI,6BAA+B,IACtC,EACAN,wBAAyB,SAAUrrI,GACjC,IAAIQ,EAAS+xH,EAAa8D,KAAKsD,cAAc35H,EAAMQ,OAAQ,KAC3D,IAAI,IAAUA,EAAd,CAOA,IAAK6G,KAAKyiI,oBAAsB,mBAAmB58H,KAAK1M,EAAOs2G,YAAc,oBAAoB5pG,KAAK1M,EAAOs2G,YAC3G,OAAO,EAIT,IAAImwB,EAAU5/H,KAAKokB,KAAKy7G,mBAAmB,WAC3C,IAAK7/H,KAAKwiI,0BAA4B5C,GAAWA,EAAQJ,aAAeI,EAAQJ,cAC9E,OAAO,EAILx/H,KAAK+iI,cAAgB/iI,KAAK+iI,eAAiB5pI,GAC7C6G,KAAKukI,wBAEPvkI,KAAKqkI,gBAAkBlrI,EACvB6G,KAAKskI,6BAA+BtkI,KAAKokI,qBAAqBtpI,KAAKkF,MACnEA,KAAK2yC,GAAG3yC,KAAKqkI,gBAAiB,WAAYrkI,KAAKskI,8BAI/CtkI,KAAKokB,KAAK2iC,MAAM,WACV/mD,KAAKqkI,iBACPrkI,KAAKgjI,YAAYhjI,KAAKqkI,gBAE1B,EAAEvpI,KAAKkF,MA7BP,CA8BF,EACAwkI,uBAAwB,WACtBxkI,KAAKykI,UAAW,IAAIznI,MAAOwC,UAC3BQ,KAAK0kI,UAAW,CAClB,EACAC,sBAAuB,SAAUhsI,GAC1BA,EAAMy9C,eAAkB,iBAAiBvwC,KAAKlN,EAAMy9C,cAAchY,aACrEp+B,KAAK0kI,UAAW,EAEpB,EACAE,cAAe,WACb,GAAI5kI,KAAK0kI,SACP,OAAO,GAEE,IAAI1nI,MAAOwC,UAAYQ,KAAKykI,SAC5BzkI,KAAKsiI,WAEdtiI,KAAKukI,uBAET,EACAA,sBAAuB,WAErBtwD,cAAcj0E,KAAK6kI,eACf7kI,KAAK8kI,iCACP9kI,KAAK+yC,IAAI/yC,KAAK0iI,cAAe,YAAa1iI,KAAK8kI,gCAC/C9kI,KAAK+yC,IAAI/yC,KAAK0iI,cAAe,WAAY1iI,KAAK+kI,+BAC1C/kI,KAAK+iI,eACP/iI,KAAK+yC,IAAI/yC,KAAK+iI,aAAc,YAAa/iI,KAAK8kI,gCAC9C9kI,KAAK+yC,IAAI/yC,KAAK+iI,aAAc,WAAY/iI,KAAK+kI,iCAGjD/kI,KAAK8iI,cACL9iI,KAAK0kI,SAAW1kI,KAAK8kI,+BAAiC9kI,KAAK+kI,8BAAgC,IAC7F,EAEA5B,sBAAuB,WACrBnjI,KAAKykI,UAAW,IAAIznI,MAAOwC,UAC3BQ,KAAK0kI,UAAW,EAChB1kI,KAAK8kI,+BAAiC9kI,KAAKwkI,uBAAuB1pI,KAAKkF,MACvEA,KAAK+kI,8BAAgC/kI,KAAK2kI,sBAAsB7pI,KAAKkF,MACrEA,KAAK6kI,cAAgB1wD,YAAYn0E,KAAK4kI,cAAc9pI,KAAKkF,MAAO,KAChEA,KAAK2yC,GAAG3yC,KAAK0iI,cAAe,YAAa1iI,KAAK8kI,gCAC9C9kI,KAAK2yC,GAAG3yC,KAAK0iI,cAAe,WAAY1iI,KAAK+kI,+BAC7C/kI,KAAK2yC,GAAG3yC,KAAK+iI,aAAc,YAAa/iI,KAAK8kI,gCAC7C9kI,KAAK2yC,GAAG3yC,KAAK+iI,aAAc,WAAY/iI,KAAK+kI,8BAC9C,IAEF7Z,EAAaW,WAAW6W,cAAgBpX,EAE1C,WAGE,IAAI0Z,EAAkBC,EAAqBC,EAAkBC,EAAmBC,EAUhF,SAASC,EAAyBzxG,GAChC,OAAQs3F,EAAa8D,KAAKsD,cAAc1+F,EAAM,IAChD,CAXAoxG,EAAmB,CAAC,IAAK,KAAM,KAAM,KAAM,OAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAEvGE,EAAmB,sEADnBD,EAAsB,m2BACH,8GAIuBA,EAAsB,KAChEE,EAAoB,IAAI1iI,OAAO,KAAOwiI,EAAsB,KAAM,KAClEG,EAAc,IAAI3iI,OAAOyiI,EAAkB,MAI3C,IAAII,EAAWpa,EAAaC,UAAU7tH,OAAO,CAC3Ci3B,KAAM,WACJ22F,EAAaC,UAAUz0H,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAClDkE,KAAKulI,sBAAuB,EAC5BvlI,KAAKsgI,UAAU,mBAAoBtgI,KAAKwlI,WAAW1qI,KAAKkF,OACxDA,KAAKsgI,UAAU,eAAgBtgI,KAAKylI,OAAO3qI,KAAKkF,OAEhDA,KAAKhI,SAASy4H,YAAY,iBAAiB,GAAO,EACpD,EACAiV,eAAgB,WAEd,IADA,IAAIC,EAAkB,EACbrvI,EAAI,EAAGA,EAAI0J,KAAK1E,OAAOsqI,eAAepvI,OAAQF,IAAK,CAC1D,IAAIuvI,EAAS7lI,KAAK1E,OAAOsqI,eAAetvI,GACzB,OAAXuvI,QAA6DtsI,IAA1CssI,EAAOhG,mBAAmB,aAC/C8F,GAEJ,CACA,OAA2B,IAApBA,CACT,EACA1oD,QAAS,WAEHj9E,KAAKhI,SAASw4H,sBAAsB,kBAAoBxwH,KAAK0lI,kBAC/D1lI,KAAKhI,SAASy4H,YAAY,iBAAiB,GAAO,EAEtD,EACAgV,OAAQ,SAAUK,EAAWhK,GAC3B97H,KAAK+lI,eAAejK,EACtB,EACA0J,WAAY,SAAUQ,GAChBhmI,KAAKulI,sBAGLra,EAAa8D,KAAK5B,MAAM4Y,EAAe,CAAC9a,EAAa8D,KAAK53E,QAAQ21E,MAAO7B,EAAa8D,KAAK53E,QAAQy1E,UACrG/zH,aAAakH,KAAKimI,uBAElBjmI,KAAKimI,sBAAwBzsI,WAAW,WACtC,IACE,IAAI2+B,EAAMn4B,KAAKokB,KAAKmyG,kBAChBv2H,KAAK+lI,eAAeC,EAAc7sI,SAGpC6G,KAAKokB,KAAK+yG,gBAAgBh/F,GAAK,EAEnC,CAAE,MAAO5gC,GACH+D,OAAOF,SACTE,OAAOF,QAAQ3C,MAAM,4BAA6BlB,GAEpDyI,KAAKulI,sBAAuB,CAC9B,CACF,EAAEzqI,KAAKkF,MAAO,GAElB,EACA+lI,eAAgB,SAAUG,GAkBxB,IAAIC,EAAgBjb,EAAa8D,KAAKH,qBAAqBqX,GACzDE,GAAmB,EACQ,IAAzBD,EAAc3vI,SAChB2vI,EAAgB,CAACD,IAEnB,IAAK,IAAI5vI,EAAI,EAAGA,EAAI6vI,EAAc3vI,OAAQF,IACxC8vI,EAAmBpmI,KAAKqmI,4BAA4BF,EAAc7vI,KAAO8vI,EACzEA,EAAmBpmI,KAAKsmI,4BAA4BH,EAAc7vI,KAAO8vI,EAM3E,OAJApmI,KAAKokB,KAAKwvB,OAAOoqF,YAAYkI,EAAiB,CAC5C/sI,OAAQ+sI,EACRhxF,cAAegxF,IAEVE,CACT,EACAC,4BAA6B,SAAUlvE,GACrC,IAAKA,GAAgC,IAArBA,EAAQ9jC,SACtB,OAAO,EAIT,IAFA,IAAIkzG,EAAQpvE,EAAQ76B,iBAAiB,+BACnC8pG,GAAmB,EACZ9vI,EAAI,EAAGA,EAAIiwI,EAAM/vI,OAAQF,IAAK,CACrC,IAAIkgC,EAAc+vG,EAAMjwI,GAAGkgC,YAI3B,IAHoC,IAAhCA,EAAY1pB,QAAQ,SACtB0pB,EAAc00F,EAAa8D,KAAK2F,qBAAqBn+F,IAEnD+vG,EAAMjwI,GAAGy9B,aAAa,eAAiByC,GAAe6uG,EAAyBkB,EAAMjwI,IAAK,CAC5F8vI,GAAmB,EACnB,IAAII,EAAqBhwG,EAAYpxB,QAAQ,OAAQ,IACrD,GAAImhI,EAAMjwI,GAAGy9B,aAAa,eAAiByyG,EAAoB,CAC7D,IAAIC,EAAoBjwG,EAAYhgC,OAASgwI,EAAmBhwI,OAC9DmiE,EAAUuyD,EAAa8D,KAAK0D,gBAAgB6T,EAAMjwI,GAAI0J,KAAK0mI,mBAAmBH,EAAMjwI,GAAImwI,IAC1FF,EAAMjwI,GAAG09B,WAAW0mB,aAAaie,EAAS4tE,EAAMjwI,GAAGurC,YACrD,MAGEqpF,EAAa8D,KAAK7+D,OAAOo2E,EAAMjwI,GAAI0J,KAAKhI,SAE5C,CACF,CACA,OAAOouI,CACT,EACAM,mBAAoB,SAAUvvE,EAASwvE,GAKrC,IAJA,IAOIxY,EAAayY,EAAkBC,EAP/BjZ,EAAa5tH,KAAKhI,SAAS61H,iBAAiB12D,EAAS22D,WAAW0B,UAAW,MAAM,GACnFsX,GAAwB,EAGnBA,GACLA,EAAmD,OAA3BlZ,EAAWrtF,YAGrC,KAAOomG,EAAiB,GAAsB,OAAjBE,IAE3BD,GADAzY,EAAcP,EAAWO,aACMz3F,WACVlgC,OAASmwI,GAC5BE,EAAe1Y,EAAYM,UAAUmY,EAAiBpwI,OAASmwI,GAC/DA,EAAiB,IAEjBE,EAAejZ,EAAWiZ,eAC1BF,GAAkBC,EAAiBpwI,QAGvC,OAAOqwI,CACT,EACAP,4BAA6B,SAAUnvE,GAGrC,IAFA,IAAIn1C,EAAUhiB,KAAK+mI,iBAAiB5vE,GAE3B6vE,EAAa,EAAGA,EAAahlH,EAAQxrB,OAAQwwI,IAAc,CAClE,IAAIC,EAAoB/b,EAAa8D,KAAKrB,8BAA8B3tH,KAAKhI,SAAUm/D,EAASn1C,EAAQglH,IACpGhnI,KAAKknI,cAAcD,IAGvBjnI,KAAKmnI,eAAeF,EAAmBjlH,EAAQglH,GAAYzlG,KAC7D,CACA,OARgB,CASlB,EACA2lG,cAAe,SAAUzZ,GAEvB,IADA,IAAIyZ,GAAgB,EACX5wI,EAAI,EAAGA,EAAIm3H,EAAUj3H,SAA4B,IAAlB0wI,EAAyB5wI,IAE/D4wI,IAAkBhc,EAAa8D,KAAKgB,WAAWvC,EAAUn3H,IAAI,SAAUs9B,GACrE,MAAuC,MAAhCA,EAAKa,SAASjsB,eAAyBorB,EAAKG,cAAwD,SAAxCH,EAAKG,aAAa,iBACvF,IAEF,OAAOmzG,CACT,EACAH,iBAAkB,SAAUb,GAI1B,IAHA,IAAI1vG,EAAc0vG,EAAgB1vG,YAChCrxB,EAAQ,KACR6c,EAAU,GACuC,QAA3C7c,EAAQigI,EAAYhrH,KAAKoc,KAAwB,CACvD,IACE4wG,EAAWjiI,EAAM6oB,MAAQ7oB,EAAM,GAAG3O,QAET,IAAhB2O,EAAM6oB,QAA2E,IAA5Dg3G,EAAiBl4H,QAAQ0pB,EAAYrxB,EAAM6oB,MAAQ,OAAgBo5G,IAAa5wG,EAAYhgC,SAA+D,IAArDwuI,EAAiBl4H,QAAQ0pB,EAAY4wG,QAE1H,IAA3BjiI,EAAM,GAAG2H,QAAQ,MAAeq4H,EAAkBt/H,KAAKV,EAAM,GAAG8I,MAAM,KAAKspB,MAAMtpB,MAAM,KAAKhX,WAEhH+qB,EAAQlrB,KAAK,CACXyqC,KAAMp8B,EAAM,GACZg7B,MAAOh7B,EAAM6oB,MACb0H,IAAK0xG,GAGX,CACA,OAAOplH,CACT,EACAmlH,eAAgB,SAAU1Z,EAAWlsF,GACnCA,EAAO2pF,EAAa8D,KAAK2F,qBAAqBpzF,GAC9C,IAAIra,EAASgkG,EAAa8D,KAAKxB,WAAWxtH,KAAKhI,SAAUy1H,EAAWlsF,EAAMvhC,KAAK81H,gBAAgB,eAAiB,SAAW,MACzH/wC,EAAO/kF,KAAKhI,SAASC,cAAc,QAIrC,IAHA8sF,EAAK1sF,aAAa,iBAAkB,QACpC0sF,EAAK1sF,aAAa,YAAakpC,GAC/Bra,EAAOwzB,aAAaqqC,EAAM79D,EAAOoZ,YAC1BpZ,EAAOoU,WAAW9kC,OAAS,GAChCuuF,EAAKrrF,YAAYwtB,EAAOoU,WAAW,GAEvC,IAEF4vF,EAAaW,WAAWwb,SAAW/B,CACpC,CA9MD,GA+MA,WAGE,IAAIgC,EAAkB,yBACtB,SAASC,EAAgBpwE,GACvB,IAAI2kE,EAAW5Q,EAAa8D,KAAKmF,0BAA0Bh9D,GAC9Ch7D,MAAMzF,UAAU8E,MAAM5E,KAAKklI,EAAS57D,cAAc5jC,iBAAiB,IAAMgrG,IAC7EhvH,SAAQ,SAAUwkB,GACzBA,EAAGoyC,UAAUhmC,OAAOo+F,EACtB,GACF,CACA,IAAIE,EAAetc,EAAaC,UAAU7tH,OAAO,CAC/CjE,KAAM,eACNouI,aAAc,CAAC,SACflzG,KAAM,WACJ22F,EAAaC,UAAUz0H,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAClDkE,KAAKsgI,UAAU,eAAgBtgI,KAAK0nI,WAAW5sI,KAAKkF,OACpDA,KAAKsgI,UAAU,eAAgBtgI,KAAKs9H,WAAWxiI,KAAKkF,MACtD,EACA0nI,WAAY,SAAU/uI,GACpBA,EAAM46C,iBACN56C,EAAMgvI,aAAaC,WAAa,OAChC,IAAIzuI,EAASR,EAAMQ,OAAO+1E,UAAYv2E,EAAMQ,OAASR,EAAMQ,OAAO+mE,cAGlEqnE,EAAgBpuI,GACG,aAAfR,EAAMM,MACRE,EAAO+1E,UAAU58D,IAAIg1H,EAEzB,EACAhK,WAAY,SAAU3kI,GAEpBA,EAAM46C,iBACN56C,EAAM06C,kBAGNrzC,KAAKokB,KAAK+/G,cAAcxrI,EAAMQ,QAC9B,IAAI64C,EAAYhyC,KAAKokB,KAAKmyG,kBAC1BvkF,EAAU7R,MAAQ6R,EAAUtc,IAC5B11B,KAAKokB,KAAK+yG,gBAAgBnlF,GAGtBr5C,EAAMgvI,aAAaE,OACrB1rI,MAAMzF,UAAU8E,MAAM5E,KAAK+B,EAAMgvI,aAAaE,OAAOvvH,SAAQ,SAAUgqB,GACjEtiC,KAAK8nI,cAAcxlG,IACjBA,EAAKrpC,KAAKkM,MAAM,UAClBnF,KAAK+nI,gBAAgBzlG,EAG3B,GAAGtiC,MAILunI,EAAgB5uI,EAAMQ,OACxB,EACA2uI,cAAe,SAAUxlG,GACvB,OAAOtiC,KAAKynI,aAAa9rI,MAAK,SAAUqsI,GACtC,QAAS1lG,EAAKrpC,KAAKkM,MAAM6iI,EAC3B,GACF,EACAD,gBAAiB,SAAUzlG,GACzB,GAA0B,oBAAf2lG,WAAX,CAGA,IAAIC,EAAa,IAAID,WACrBC,EAAWC,cAAc7lG,GAGzB4lG,EAAWvqG,iBAAiB,OAAQ,SAAUpmC,GAC5C,IAAI6wI,EAAkBpoI,KAAKhI,SAASC,cAAc,OAClDmwI,EAAgB9vI,IAAMf,EAAE4B,OAAO4hB,OAC/BmwG,EAAa8D,KAAKmB,kBAAkBnwH,KAAKhI,SAAUowI,EAAgB34B,UACrE,EAAE30G,KAAKkF,MATP,CAUF,IAEFkrH,EAAaW,WAAWwc,aAAeb,CACxC,CA5ED,GAgFMjc,EAAmBL,EAAaC,UAAU7tH,OAAO,CACnDjE,KAAM,oBAYNivI,SAAU,CAAC,CACThM,QAAS,OACTzhI,IAAK,IACLw5F,MAAM,EACNp9F,OAAO,EACPsxI,KAAK,GACJ,CACDjM,QAAS,SACTzhI,IAAK,IACLw5F,MAAM,EACNp9F,OAAO,EACPsxI,KAAK,GACJ,CACDjM,QAAS,YACTzhI,IAAK,IACLw5F,MAAM,EACNp9F,OAAO,EACPsxI,KAAK,IAEPh0G,KAAM,WACJ22F,EAAaC,UAAUz0H,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAClDkE,KAAKsgI,UAAU,kBAAmBtgI,KAAKm9H,cAAcriI,KAAKkF,OAC1DA,KAAKiC,KAAO,CAAC,EACbjC,KAAKsoI,SAAShwH,SAAQ,SAAUgkH,GAC9B,IAAIllF,EAAUklF,EAAQzhI,IAAIo9B,WAAW,GAChCj4B,KAAKiC,KAAKm1C,KACbp3C,KAAKiC,KAAKm1C,GAAW,IAEvBp3C,KAAKiC,KAAKm1C,GAAStgD,KAAKwlI,EAC1B,GAAGt8H,KACL,EACAm9H,cAAe,SAAUxkI,GACvB,IAAIy+C,EAAU8zE,EAAa8D,KAAK3B,WAAW10H,GAC3C,GAAKqH,KAAKiC,KAAKm1C,GAAf,CAGA,IAAIoxF,EAAStd,EAAa8D,KAAK7B,cAAcx0H,GAC3C8vI,IAAY9vI,EAAMs+C,SAClByxF,IAAU/vI,EAAM49C,OAClBv2C,KAAKiC,KAAKm1C,GAAS9+B,SAAQ,SAAUriB,GAC/BA,EAAKo+F,OAASm0C,GAAUvyI,EAAKgB,QAAUwxI,GAAYxyI,EAAKsyI,MAAQG,QAASnvI,IAActD,EAAKsyI,MAE9F5vI,EAAM46C,iBACN56C,EAAM06C,kBAGsB,oBAAjBp9C,EAAKqmI,QACdrmI,EAAKqmI,QAAQzgI,MAAMmE,OAGZ,IAAU/J,EAAKqmI,SACtBt8H,KAAK6+H,WAAW5oI,EAAKqmI,SAG3B,GAAGt8H,KAnBH,CAoBF,IAEFkrH,EAAaW,WAAW8c,iBAAmBpd,EAKvCC,EAAeN,EAAaW,WAAWj2B,KAAKt4F,OAAO,CACrDjE,KAAM,WACNw+D,OAAQ,WACRomE,KAAM,mBACNG,eAAgB,SAEhBC,UAAW,6BACXuK,MAAO,CAAC,GAAI,QAAS,UAAW,mBAChCr0G,KAAM,WACJ22F,EAAaW,WAAWj2B,KAAKl/F,UAAU69B,KAAK14B,MAAMmE,KAAMlE,UAC1D,EAGAihI,YAAa,SAAUpkI,GAGrB,GAFAA,EAAM46C,iBACN56C,EAAM06C,mBACDrzC,KAAKw/H,cAAe,CAEvB,IAAIqJ,EAAW7oI,KAAKhI,SAAS8wI,kBAAkB,YAAc,GAC7D9oI,KAAKy/H,SAASoJ,EAChB,CACA,OAAO,CACT,EAEAtJ,QAAS,WAIP,OAHKv/H,KAAK41F,OACR51F,KAAK41F,KAAO51F,KAAKugI,cAEZvgI,KAAK41F,IACd,EAEA4pC,YAAa,WACX,MAAwC,UAAjCx/H,KAAKu/H,UAAUtwF,MAAMC,OAC9B,EACAwwF,SAAU,WACR1/H,KAAKu/H,UAAUtwF,MAAMC,QAAU,OAC/BlvC,KAAK+oI,YAAYxuI,MAAQ,EAC3B,EACAklI,SAAU,SAAUoJ,GAClB,IAAIpsG,EAASz8B,KAAK+oI,YAClB/oI,KAAKokB,KAAKy8G,gBACV7gI,KAAK8/H,4BACL9/H,KAAKu/H,UAAUtwF,MAAMC,QAAU,QAC/BlvC,KAAK+/H,qBACLtjG,EAAOliC,MAAQsuI,GAAY,GAC3BpsG,EAAO0E,OACT,EAEA87C,QAAS,WACP,IAAKj9E,KAAK41F,KACR,OAAO,EAEL51F,KAAK41F,KAAK5hE,YACZh0B,KAAK41F,KAAK5hE,WAAWC,YAAYj0B,KAAK41F,aAEjC51F,KAAK41F,IACd,EAGAorC,WAAY,WACVhhI,KAAKokB,KAAK88G,mBACVlhI,KAAKokB,KAAK+8G,gBACZ,EACAY,aAAc,WACZ/hI,KAAKokB,KAAK88G,mBACVlhI,KAAKgpI,gBACLhpI,KAAKokB,KAAK+8G,gBACZ,EAEAZ,WAAY,WACV,IAKEzvF,EALEjd,EAAM7zB,KAAKhI,SACb49F,EAAO/hE,EAAI57B,cAAc,OACzBwkC,EAAS5I,EAAI57B,cAAc,UAC3B80E,EAAQl5C,EAAI57B,cAAc,KAC1BgqI,EAAOpuG,EAAI57B,cAAc,KAI3B29F,EAAKx3D,UAAY,6BACjBw3D,EAAK75D,GAAK,uCAAyC/7B,KAAK61H,cAGxD71H,KAAK2yC,GAAGijD,EAAM,QAAS51F,KAAKkiI,gBAAgBpnI,KAAKkF,OAGjD,IAAK,IAAI1J,EAAI,EAAGA,EAAI0J,KAAK4oI,MAAMpyI,OAAQF,KACrCw6C,EAASjd,EAAI57B,cAAc,WACpBomC,UAAYr+B,KAAK4oI,MAAMtyI,GAC9Bw6C,EAAOv2C,MAAQyF,KAAK4oI,MAAMtyI,GAC1BmmC,EAAO/iC,YAAYo3C,GAyBrB,OAvBArU,EAAO2B,UAAY,+BACnBw3D,EAAKl8F,YAAY+iC,GAGjBz8B,KAAK2yC,GAAGlW,EAAQ,SAAUz8B,KAAKipI,iBAAiBnuI,KAAKkF,OAGrDiiI,EAAK5pI,aAAa,OAAQ,KAC1B4pI,EAAK7jG,UAAY,4BACjB6jG,EAAK5jG,UAAqD,gBAAzCr+B,KAAK81H,gBAAgB,gBAAoC,8BAAgC,WAC1GlgC,EAAKl8F,YAAYuoI,GAGjBjiI,KAAK2yC,GAAGsvF,EAAM,QAASjiI,KAAKqiI,gBAAgBvnI,KAAKkF,OAAO,GAGxD+sE,EAAM10E,aAAa,OAAQ,KAC3B00E,EAAM3uC,UAAY,6BAClB2uC,EAAM1uC,UAAqD,gBAAzCr+B,KAAK81H,gBAAgB,gBAAoC,8BAAgC,UAC3GlgC,EAAKl8F,YAAYqzE,GAGjB/sE,KAAK2yC,GAAGo6B,EAAO,QAAS/sE,KAAKoiI,iBAAiBtnI,KAAKkF,OAC5C41F,CACT,EACAmzC,UAAW,WACT,OAAO/oI,KAAKu/H,UAAUvhG,cAAc,sCACtC,EACAgrG,cAAe,WACb9d,EAAal5E,UAAUynF,oBAAoBz5H,KAAKhI,UAAUsgB,SAAQ,SAAUwkB,GACxC,SAA9BA,EAAGrI,SAASjsB,eAA4Bs0B,EAAG49B,aAAa,SAC1D59B,EAAGN,gBAAgB,OAEvB,GACF,EACAysG,iBAAkB,WAChB,IAAIC,EAAOlpI,KAAK+oI,YAAYxuI,MACf,KAAT2uI,EACFlpI,KAAKgpI,gBAELhpI,KAAK6+H,WAAW,WAAY,CAC1BtkI,MAAO2uI,GAGb,EACAhH,gBAAiB,SAAUvpI,GAEzBA,EAAM06C,iBACR,EACAgvF,gBAAiB,SAAU1pI,GAEzBA,EAAM46C,iBACNvzC,KAAKghI,YACP,EACAoB,iBAAkB,SAAUzpI,GAE1BA,EAAM46C,iBACNvzC,KAAK+hI,cACP,IAEF7W,EAAaW,WAAWgd,SAAWrd,EAK/BC,EAAeP,EAAaW,WAAWj2B,KAAKt4F,OAAO,CACrDjE,KAAM,WACNw+D,OAAQ,WACRomE,KAAM,8BACNG,eAAgB,SAEhBC,UAAW,oCACX9pG,KAAM,WACJ22F,EAAaW,WAAWj2B,KAAKl/F,UAAU69B,KAAK14B,MAAMmE,KAAMlE,UAC1D,EAGAihI,YAAa,SAAUpkI,GAGrB,GAFAA,EAAM46C,iBACN56C,EAAM06C,mBACDrzC,KAAKw/H,cAAe,CAEvB,IAAI2J,EAAWnpI,KAAKhI,SAAS8wI,kBAAkB,YAAc,GAC7D9oI,KAAKy/H,SAAS0J,EAChB,CACA,OAAO,CACT,EAEA5J,QAAS,WAIP,OAHKv/H,KAAK41F,OACR51F,KAAK41F,KAAO51F,KAAKugI,cAEZvgI,KAAK41F,IACd,EAEA4pC,YAAa,WACX,MAAwC,UAAjCx/H,KAAKu/H,UAAUtwF,MAAMC,OAC9B,EACAwwF,SAAU,WACR1/H,KAAKu/H,UAAUtwF,MAAMC,QAAU,OAC/BlvC,KAAKygI,WAAWlmI,MAAQ,EAC1B,EACAklI,SAAU,SAAU0J,GAClB,IAAIjtI,EAAQ8D,KAAKygI,WACjBzgI,KAAKokB,KAAKy8G,gBACV7gI,KAAK8/H,4BACL9/H,KAAKu/H,UAAUtwF,MAAMC,QAAU,QAC/BlvC,KAAK+/H,qBACL7jI,EAAM3B,MAAQ4uI,GAAY,GAC1BjtI,EAAMilC,OACR,EAEA87C,QAAS,WACP,IAAKj9E,KAAK41F,KACR,OAAO,EAEL51F,KAAK41F,KAAK5hE,YACZh0B,KAAK41F,KAAK5hE,WAAWC,YAAYj0B,KAAK41F,aAEjC51F,KAAK41F,IACd,EAGAorC,WAAY,WACVhhI,KAAKokB,KAAK88G,mBACVlhI,KAAKokB,KAAK+8G,gBACZ,EACAY,aAAc,WACZ/hI,KAAKokB,KAAK88G,mBACVlhI,KAAKopI,gBACLppI,KAAKokB,KAAK+8G,gBACZ,EAEAZ,WAAY,WACV,IAAI1sG,EAAM7zB,KAAKhI,SACb49F,EAAO/hE,EAAI57B,cAAc,OACzBiE,EAAQ23B,EAAI57B,cAAc,SAC1B80E,EAAQl5C,EAAI57B,cAAc,KAC1BgqI,EAAOpuG,EAAI57B,cAAc,KAoC3B,OAjCA29F,EAAKx3D,UAAY,6BACjBw3D,EAAK75D,GAAK,uCAAyC/7B,KAAK61H,cAGxD71H,KAAK2yC,GAAGijD,EAAM,QAAS51F,KAAKkiI,gBAAgBpnI,KAAKkF,OAGjD9D,EAAM7D,aAAa,OAAQ,SAC3B6D,EAAM7D,aAAa,MAAO,KAC1B6D,EAAM7D,aAAa,MAAO,KAC1B6D,EAAMkiC,UAAY,8BAClBw3D,EAAKl8F,YAAYwC,GAGjB8D,KAAK2yC,GAAGz2C,EAAO,SAAU8D,KAAKqpI,mBAAmBvuI,KAAKkF,OAGtDiiI,EAAK5pI,aAAa,OAAQ,KAC1B4pI,EAAK7jG,UAAY,4BACjB6jG,EAAK5jG,UAAqD,gBAAzCr+B,KAAK81H,gBAAgB,gBAAoC,8BAAgC,WAC1GlgC,EAAKl8F,YAAYuoI,GAGjBjiI,KAAK2yC,GAAGsvF,EAAM,QAASjiI,KAAKqiI,gBAAgBvnI,KAAKkF,OAAO,GAGxD+sE,EAAM10E,aAAa,OAAQ,KAC3B00E,EAAM3uC,UAAY,6BAClB2uC,EAAM1uC,UAAqD,gBAAzCr+B,KAAK81H,gBAAgB,gBAAoC,8BAAgC,UAC3GlgC,EAAKl8F,YAAYqzE,GAGjB/sE,KAAK2yC,GAAGo6B,EAAO,QAAS/sE,KAAKoiI,iBAAiBtnI,KAAKkF,OAC5C41F,CACT,EACA6qC,SAAU,WACR,OAAOzgI,KAAKu/H,UAAUvhG,cAAc,oCACtC,EACAorG,cAAe,WACble,EAAal5E,UAAUynF,oBAAoBz5H,KAAKhI,UAAUsgB,SAAQ,SAAUwkB,GACxC,SAA9BA,EAAGrI,SAASjsB,eAA4Bs0B,EAAG49B,aAAa,SAC1D59B,EAAGN,gBAAgB,OAEvB,GACF,EACA6sG,mBAAoB,WAClB,IAAI1tE,EAAO37D,KAAKygI,WAAWlmI,MACd,MAATohE,EACF37D,KAAKopI,gBAELppI,KAAK6+H,WAAW,WAAY,CAC1BtkI,MAAOohE,GAGb,EACAumE,gBAAiB,SAAUvpI,GAEzBA,EAAM06C,iBACR,EACAgvF,gBAAiB,SAAU1pI,GAEzBA,EAAM46C,iBACNvzC,KAAKghI,YACP,EACAoB,iBAAkB,SAAUzpI,GAE1BA,EAAM46C,iBACNvzC,KAAK+hI,cACP,IAEF7W,EAAaW,WAAWsd,SAAW1d,EAErC,WAIE,IAAI6d,EAAyB,gBAC3BC,EAAY,KACZC,EAAwB,KACxBC,EAAW,SAAU9wI,GACnBA,EAAM06C,iBACR,EAkDF,SAASq2F,EAAoB/wI,EAAOq6D,EAAKn/B,GACvC,IAAI8zG,EAAehvI,EAAMgxI,eAAiB32E,EAAI22E,eAAiB91G,EAAI8zG,aACjE1xI,EAAO,CAAC,EACV,IAAK0xI,EACH,OAAO1xI,EAIT,GAAI0xI,EAAa75F,QAAS,CACxB,IAAI87F,EAAajC,EAAa75F,QAAQ,QAClC87F,GAAcA,EAAWpzI,OAAS,IACpCP,EAAK,cAAgB2zI,EAEzB,CACA,GAAIjC,EAAa/0F,MACf,IAAK,IAAIt8C,EAAI,EAAGA,EAAIqxI,EAAa/0F,MAAMp8C,OAAQF,IAAK,CAClD,IAAI81D,EAAcu7E,EAAa/0F,MAAMt8C,GACrCL,EAAKm2D,GAAeu7E,EAAa75F,QAAQse,EAC3C,CAEF,OAAOn2D,CACT,CACA,IAAI4zI,EAAe3e,EAAaC,UAAU7tH,OAAO,CAM/CwsI,gBAAgB,EAIhBC,iBAAiB,EAMjBC,qBAAsB,GAMtBC,kBAAmB,GAKnBC,WAAY,CAAC,QAAS,QAAS,OAK/BC,UAAW,CAAC,QAMZhV,WAAY,GACZ5gG,KAAM,WACJ22F,EAAaC,UAAUz0H,UAAU69B,KAAK14B,MAAMmE,KAAMlE,YAC9CkE,KAAK8pI,gBAAkB9pI,KAAK+pI,mBAC9B/pI,KAAKsgI,UAAU,kBAAmBtgI,KAAKm9H,cAAcriI,KAAKkF,OAG1DA,KAAK41H,oBAAoBt9G,SAAQ,SAAU6+C,GACzCn3D,KAAK2yC,GAAGwkB,EAAS,QAASn3D,KAAKu9H,YAAYziI,KAAKkF,MAClD,GAAGA,MACHA,KAAKsgI,UAAU,aAActgI,KAAKoqI,iBAAiBtvI,KAAKkF,OAE5D,EACAoqI,iBAAkB,SAAUzxI,EAAOmjI,GACjC97H,KAAK2yC,GAAGmpF,EAAU,QAAS97H,KAAKu9H,YAAYziI,KAAKkF,MACnD,EACAi9E,QAAS,YAEHj9E,KAAK8pI,gBAAkB9pI,KAAK+pI,kBAC9B/pI,KAAKqqI,gBAET,EACA9M,YAAa,SAAU5kI,EAAOmjI,GAC5B,IAAInjI,EAAMw9C,iBAAV,CAGA,IAAIm0F,EAAmBZ,EAAoB/wI,EAAOqH,KAAK1E,OAAQ0E,KAAKhI,UAClEuyI,EAAaD,EAAiB,aAC9BE,EAAcF,EAAiB,cAC7BtqI,KAAK1E,OAAOquI,oBAAyCpwI,IAAxBZ,EAAMgxI,gBAAgCY,IAMrEA,EAAaC,IAEXD,GAAcC,KAChB7xI,EAAM46C,iBACNvzC,KAAKyqI,QAAQF,EAAYC,EAAa1O,GAdxC,CAgBF,EACA2O,QAAS,SAAUF,EAAYC,EAAa1O,GAC1C,IAAI4O,EAEFnyI,EADAuhD,EAAO,GAET,GAAI95C,KAAK+pI,iBAAmBQ,EAC1B,OAAOvqI,KAAK2qI,WAAWJ,GAEzB,GAAKC,EAAL,CAGA,GAAMxqI,KAAK81H,gBAAgB,kBAAoBgG,GAAYA,EAAS/nG,aAAa,uBAa/E+lB,EAAOoxE,EAAa8D,KAAKkB,aAAasa,QAVtC,IAFAE,EAAaF,EAAYv8H,MAAM,aAEhBzX,OAAS,EACtB,IAAK+B,EAAI,EAAGA,EAAImyI,EAAWl0I,OAAQ+B,GAAK,EAChB,KAAlBmyI,EAAWnyI,KACbuhD,GAAQ,MAAQoxE,EAAa8D,KAAKkB,aAAawa,EAAWnyI,IAAM,aAIpEuhD,EAAOoxE,EAAa8D,KAAKkB,aAAawa,EAAW,IAKrDxf,EAAa8D,KAAKmB,kBAAkBnwH,KAAKhI,SAAU8hD,EAhBnD,CAiBF,EACA8wF,oBAAqB,SAAUjyI,GAC7B,GAAIA,EAAMw9C,iBACRn2C,KAAKqqI,qBADP,CAIA,IAAIC,EAAmBZ,EAAoB/wI,EAAOqH,KAAK1E,OAAQ0E,KAAKhI,UAClEuyI,EAAaD,EAAiB,aAC9BE,EAAcF,EAAiB,cAC/BxO,EAAW0N,EAIb,IAAKxpI,KAAK+pI,iBAAmBQ,EAa3B,OAZA5xI,EAAM46C,iBACNvzC,KAAKqqI,iBACLrqI,KAAKyqI,QAAQF,EAAYC,EAAa1O,QAMtC97H,KAAKwzC,QAAQ,gBAAiB,CAC5B0B,cAAe4mF,EACf3iI,OAAQ2iI,GACPA,GAMLtiI,WAAW,WAELwG,KAAK+pI,kBAEPQ,EAAavqI,KAAK6qI,mBAIpB7qI,KAAKqqI,iBAGLrqI,KAAKyqI,QAAQF,EAAYC,EAAa1O,GAMtC97H,KAAKwzC,QAAQ,gBAAiB,CAC5B0B,cAAe4mF,EACf3iI,OAAQ2iI,GACPA,EACL,EAAEhhI,KAAKkF,MAAO,EA/Cd,CAgDF,EACAm9H,cAAe,SAAUxkI,EAAOmjI,GAExB5Q,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQ81E,IAAMhC,EAAa8D,KAAK7B,cAAcx0H,KAGrGA,EAAM26C,2BACNtzC,KAAKqqI,iBACLrqI,KAAK8qI,eAAehP,GACtB,EACAgP,eAAgB,SAAUhP,GACxB,IAAIiP,EACF3a,EAAQlF,EAAal5E,UAAUgoF,kBAAkBh6H,KAAKhI,UACtD0lC,EAAM19B,KAAK1E,OAAO23D,YACpBu2E,EAAwB1N,EACpB1L,KACF2a,EAAQ3a,EAAMnwE,kBAGJzpD,OACRknC,GAAOqtG,EAAM,GAAGrtG,SACwCnkC,IAA/C62H,EAAMuG,eAAe30E,sBAC9BtkB,GAAO0yF,EAAMuG,eAAe30E,wBAAwBtkB,IAEpDA,GAAO0yF,EAAMpuE,wBAAwBtkB,KAGzC6rG,EAAYnZ,EACZ,IAAI4a,EAAchrI,KAAKhI,SAASC,cAAc,OAC9C+yI,EAAYjvG,GAAK/7B,KAAKirI,WAAa,4BAA6BjuI,KAAK0G,MACrEsnI,EAAY3yI,aAAa,QAAS,mDAAqDqlC,EAAM,+DAC7FstG,EAAY3yI,aAAa,mBAAmB,GAC5C2yI,EAAY3sG,UAAYirG,EACxBtpI,KAAKhI,SAASg4C,KAAKt2C,YAAYsxI,GAG/BhrI,KAAK2yC,GAAGq4F,EAAa,QAASvB,GAC9BzpI,KAAK2yC,GAAGq4F,EAAa,UAAWvB,GAChCzpI,KAAK2yC,GAAGq4F,EAAa,WAAYvB,GACjCuB,EAAY7pG,QACZ+pF,EAAal5E,UAAU++E,WAAWia,EAAahrI,KAAKhI,UAC/CgI,KAAKkrI,mBACRlrI,KAAKkrI,iBAAmBlrI,KAAK4qI,oBAAoB9vI,KAAKkF,OAExDA,KAAK2yC,GAAGq4F,EAAa,QAAShrI,KAAKkrI,iBACrC,EACAb,eAAgB,WACV,OAASd,IACXre,EAAal5E,UAAUs/E,YAAYtxH,KAAKhI,SAAUuxI,GAClDA,EAAY,MAEV,OAASC,IACXA,EAAwB,MAE1B,IAAIwB,EAAchrI,KAAKmrI,cAClBH,GAGDA,IACFhrI,KAAK+yC,IAAIi4F,EAAa,QAASvB,GAC/BzpI,KAAK+yC,IAAIi4F,EAAa,UAAWvB,GACjCzpI,KAAK+yC,IAAIi4F,EAAa,WAAYvB,GAClCzpI,KAAK+yC,IAAIi4F,EAAa,QAAShrI,KAAKkrI,kBACpCF,EAAY9qE,cAAcjsC,YAAY+2G,GAE1C,EACAG,YAAa,WACX,OAAOnrI,KAAKhI,SAAS8jC,eAAe97B,KAAKirI,WAC3C,EACAJ,gBAAiB,WACf,IAAIG,EAAchrI,KAAKmrI,cACvB,IAAKH,EACH,OAAO,EAKT,GAAIA,EAAY1qG,YAA4C,gBAA9B0qG,EAAY1qG,WAAWvE,GACnD,OAAO,EAET,IAAIqvG,EAAeJ,EAAY3sG,UAI/B,SAAK+sG,GAAgBA,IAAiB9B,IAG/B8B,CACT,EACAT,WAAY,SAAU72G,GACpB,IAAIx9B,EACF+0I,EACA3mH,EACA4mH,EACAC,EAAY,cAAc1lI,KAAKiuB,GAC/B03G,EAAe,GAAG34H,OAAO7S,KAAKgqI,sBAAwB,GA5TnD,CAEP,CAAC,IAAIvnI,OAAO,oDAAqD,IAEjE,CAAC,IAAIA,OAAO,4CAA6C,IAEzD,CAAC,IAAIA,OAAO,UAAW,IAEvB,CAAC,IAAIA,OAAO,oCAAqC,IAAK,CAAC,IAAIA,OAAO,wBAAyB,IAE3F,CAAC,IAAIA,OAAO,oDAAqD,KAAM,CAAC,IAAIA,OAAO,2CAA4C,QAE/H,CAAC,IAAIA,OAAO,yGAA0G,2CAEtH,CAAC,IAAIA,OAAO,uCAAwC,sCAEpD,CAAC,IAAIA,OAAO,4CAA6C,oCAEzD,CAAC,IAAIA,OAAO,0BAA2B,UAEvC,CAAC,IAAIA,OAAO,oLAAuJ,iBAGnK,CAAC,IAAIA,OAAO,cAAe,QAAS,CAAC,IAAIA,OAAO,WAAY,MAE5D,CAAC,IAAIA,OAAO,mBAAoB,IAEhC,CAAC,IAAIA,OAAO,qDAAsD,OAiSkBzC,KAAKiqI,mBAAqB,IAC5G,IAAK3zI,EAAI,EAAGA,EAAIk1I,EAAah1I,OAAQF,GAAK,EACxCw9B,EAAOA,EAAK1uB,QAAQomI,EAAal1I,GAAG,GAAIk1I,EAAal1I,GAAG,IAE1D,IAAKi1I,EACH,OAAOvrI,KAAKyrI,UAAU33G,GAWxB,KAPApP,EAAM1kB,KAAKhI,SAASC,cAAc,QAG9BomC,UAAY,MAAQvK,EAAK7lB,MAAM,YAAYlM,KAAK,WAAa,OAGjEspI,EAAS3mH,EAAI4X,iBAAiB,cACzBhmC,EAAI,EAAGA,EAAI+0I,EAAO70I,OAAQF,GAAK,EAOlC,QANAg1I,EAASD,EAAO/0I,IAKT+nC,UAAYitG,EAAOjtG,UAAUj5B,QAAQ,OAAQ,KAC5CkmI,EAAO72G,SAASjsB,eACtB,IAAK,IACL,IAAK,MACHxI,KAAK0rI,mBAAmBJ,GACxB,MACF,IAAK,KACHtrI,KAAK2rI,gBAAgBL,GAI3BtrI,KAAKyrI,UAAU/mH,EAAI2Z,UACrB,EACAotG,UAAW,SAAU3xF,EAAMlkB,GACzBA,EAAUs1F,EAAa8D,KAAKhzG,SAAS,CAAC,EAAG4Z,EAAS,CAChDs0G,WAAYlqI,KAAKkqI,WACjBC,UAAWnqI,KAAKmqI,UAChBhV,WAAYn1H,KAAKm1H,aAEnB,IAAIkW,EACFC,EACAh1I,EACAs1I,EACAC,EAAa7rI,KAAKhI,SAASy4C,yBAM7B,IALAo7F,EAAWnyI,YAAYsG,KAAKhI,SAASC,cAAc,UACnD2zI,EAAeC,EAAW7tG,cAAc,SAC3BK,UAAYyb,EACzB95C,KAAK8rI,aAAaF,GAClBP,EAASO,EAAatvG,iBAAiB,KAClChmC,EAAI,EAAGA,EAAI+0I,EAAO70I,OAAQF,GAAK,EAE9B,OADJg1I,EAASD,EAAO/0I,IACGm+B,SAASjsB,eAAiBxI,KAAK81H,gBAAgB,gBAChE5K,EAAa8D,KAAK8C,eAAewZ,GAEnCpgB,EAAa8D,KAAKgG,aAAasW,EAAQ11G,EAAQs0G,YAC/Chf,EAAa8D,KAAKiG,YAAYqW,EAAQ11G,EAAQu0G,WAC9Cjf,EAAa8D,KAAKmG,WAAWmW,EAAQ11G,EAAQu/F,YAE/CjK,EAAa8D,KAAKmB,kBAAkBnwH,KAAKhI,SAAU4zI,EAAavtG,UAAUj5B,QAAQ,UAAW,KAC/F,EAEA2mI,cAAe,SAAUjvG,GACvB,OAAOA,IAAqC,MAA9BA,EAAGrI,SAASjsB,eAAuD,QAA9Bs0B,EAAGrI,SAASjsB,cACjE,EAEAkjI,mBAAoB,SAAU5uG,GACxB,QAAQj3B,KAAKi3B,EAAGtG,cAAgBsG,EAAG9I,YACrC8I,EAAG9I,WAAWC,YAAY6I,EAE9B,EAEA6uG,gBAAiB,SAAU7uG,GACrB98B,KAAK+rI,cAAcjvG,EAAGkvG,wBAExBhsI,KAAKisI,iBAAiBnvG,IACb98B,KAAK+rI,cAAcjvG,EAAG9I,aAAgB8I,EAAG9I,WAAWsM,aAAexD,GAAMA,EAAG9I,WAAWuM,YAAczD,EAGrGA,EAAG9I,YAAkD,IAApC8I,EAAG9I,WAAWk4G,mBAAyD,KAA9BpvG,EAAG9I,WAAWwC,aAEjFx2B,KAAKisI,iBAAiBnvG,GAHtB98B,KAAKisI,iBAAiBnvG,EAK1B,EAGAmvG,iBAAkB,SAAUnvG,GACtBA,GAAMA,EAAG9I,aACP8I,EAAG9I,WAAWA,YAAkD,IAApC8I,EAAG9I,WAAWk4G,kBAC5CpvG,EAAG9I,WAAWA,WAAWC,YAAY6I,EAAG9I,YAExC8I,EAAG9I,WAAWC,YAAY6I,GAGhC,EAEAgvG,aAAc,SAAUK,GACtB,IAAI71I,EACFwmC,EACAsvG,EACA7F,EAAQ4F,EAAY7vG,iBAAiB,iBACrC+vG,EAAQ,SAAUvvG,GAChB,OAAOA,GAAsB,UAAhBA,EAAGrI,UAA+D,UAAvCqI,EAAG/I,aAAa,kBAC1D,EACF,IAAKz9B,EAAI,EAAGA,EAAIiwI,EAAM/vI,OAAQF,GAAK,EACjCwmC,EAAKypG,EAAMjwI,GACX81I,EAAQpsI,KAAKhI,SAASC,cAAc6kC,EAAGoyC,UAAUx3C,SAAS,QAAU,IAAM,KACtEoF,EAAGoyC,UAAUx3C,SAAS,SAAWoF,EAAGoyC,UAAUx3C,SAAS,UAEzD00G,EAAM/tG,UAAY,MAAQvB,EAAGuB,UAAY,OAEzC+tG,EAAM/tG,UAAYvB,EAAGuB,UAEvBvB,EAAG9I,WAAW8mB,aAAasxF,EAAOtvG,GAGpC,IADAypG,EAAQ4F,EAAY7vG,iBAAiB,QAChChmC,EAAI,EAAGA,EAAIiwI,EAAM/vI,OAAQF,GAAK,EAAG,CAIpC,GAHAwmC,EAAKypG,EAAMjwI,GAGP40H,EAAa8D,KAAKgB,WAAWlzF,EAAIuvG,GACnC,OAAO,EAITnhB,EAAa8D,KAAK7+D,OAAOrzB,EAAI98B,KAAKhI,SACpC,CACF,IAEFkzH,EAAaW,WAAWygB,MAAQzC,CACjC,CAldD,GAsdMne,EAAcR,EAAaC,UAAU7tH,OAAO,CAC9CjE,KAAM,cAMNy6B,KAAM,iBAINy4G,aAAa,EACbh4G,KAAM,WACJ22F,EAAaC,UAAUz0H,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAClDkE,KAAKwsI,mBACLxsI,KAAKysI,qBACP,EACAD,iBAAkB,WAChBxsI,KAAK41H,oBAAoBt9G,QAAQtY,KAAK0sI,YAAa1sI,KACrD,EACAoqI,iBAAkB,SAAUzxI,EAAOmjI,GACjC97H,KAAK0sI,YAAY5Q,EACnB,EACA4Q,YAAa,SAAU5vG,GAChBA,EAAG/I,aAAa,qBACnB+I,EAAGzkC,aAAa,mBAAoB2H,KAAK8zB,MAE3C9zB,KAAK2sI,kBAAkB7vG,EACzB,EACAmgD,QAAS,WACPj9E,KAAK41H,oBAAoBt9G,QAAQtY,KAAKw9H,eAAgBx9H,KACxD,EACA4sI,oBAAqB,SAAUj0I,EAAOmjI,GACpC97H,KAAKw9H,eAAe1B,EACtB,EACA0B,eAAgB,SAAU1gG,GACpBA,EAAG/I,aAAa,sBAAwB/zB,KAAK8zB,MAC/CgJ,EAAGN,gBAAgB,mBAEvB,EACAqwG,gBAAiB,SAAU/vG,GACrBA,IAMEouF,EAAa8D,KAAKxC,MAAiC,IAAzB1vF,EAAGxB,WAAW9kC,QAC1CsmC,EAAGoyC,UAAU58D,IAAI,sCACjBwqB,EAAGoyC,UAAUhmC,OAAO,+BAEpBpM,EAAGoyC,UAAU58D,IAAI,6BACjBwqB,EAAGoyC,UAAUhmC,OAAO,uCAG1B,EACA4jG,gBAAiB,SAAUhwG,GACrBA,IACFA,EAAGoyC,UAAUhmC,OAAO,6BACpBpM,EAAGoyC,UAAUhmC,OAAO,sCAExB,EACAyjG,kBAAmB,SAAU7vG,EAAIiwG,GAE/B,GAAIjwG,EAAGkB,cAAc,mCAAkF,KAA7ClB,EAAGtG,YAAYpxB,QAAQ,aAAc,IAC7F,OAAOpF,KAAK8sI,gBAAgBhwG,GAEzBiwG,GACH/sI,KAAK6sI,gBAAgB/vG,EAEzB,EACA2vG,oBAAqB,WACfzsI,KAAKusI,aAEPvsI,KAAKsgI,UAAU,QAAStgI,KAAKgtI,YAAYlyI,KAAKkF,OAIhDA,KAAKsgI,UAAU,gBAAiBtgI,KAAK48H,YAAY9hI,KAAKkF,OAGtDA,KAAKsgI,UAAU,OAAQtgI,KAAKg9H,WAAWliI,KAAKkF,OAG5CA,KAAKsgI,UAAU,aAActgI,KAAKoqI,iBAAiBtvI,KAAKkF,OACxDA,KAAKsgI,UAAU,gBAAiBtgI,KAAK4sI,oBAAoB9xI,KAAKkF,MAChE,EACA48H,YAAa,SAAUjkI,EAAOw+D,GAG5B,IAAI41E,EAAW/sI,KAAKusI,aAAep1E,IAAYn3D,KAAKokB,KAAKy5G,oBAGzD79H,KAAK2sI,kBAAkBx1E,EAAS41E,EAClC,EACAC,YAAa,SAAUr0I,EAAOw+D,GAE5Bn3D,KAAK8sI,gBAAgB31E,EACvB,EACA6lE,WAAY,SAAUrkI,EAAOw+D,GAE3Bn3D,KAAK2sI,kBAAkBx1E,EACzB,IAEF+zD,EAAaW,WAAWtf,YAAcmf,EAKlCC,EAAUT,EAAaC,UAAU7tH,OAAO,CAC1CjE,KAAM,UAON4zI,MAAO,SAKPC,8BAA8B,EAI9B71F,QAAS,CAAC,OAAQ,SAAU,YAAa,SAAU,KAAM,KAAM,SAI/DqsF,SAAU,EAIVC,SAAU,GAIVwJ,iBAAkB,6BAIlBC,gBAAiB,4BAKjBC,2BAA2B,EAK3BC,QAAQ,EAMRC,QAAQ,EAIRC,gBAAiB,EAMjBC,wBAAwB,EAIxBC,kBAAmB,KACnBn5G,KAAM,WACJ22F,EAAaC,UAAUz0H,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAClDkE,KAAK2tI,uBACA3tI,KAAK0tI,kBAGR1tI,KAAK0tI,kBAAkBh0I,YAAYsG,KAAK4tI,qBAFxC5tI,KAAK81H,gBAAgB,qBAAqBp8H,YAAYsG,KAAK4tI,oBAI/D,EAEAC,iBAAkB,SAAUv2G,EAAUhD,GACpC,OAAOt0B,KAAKokB,KAAKynG,WAAWvzG,SAAQ,SAAUgkH,GAC5C,GAAIA,IAAYt8H,KAGhB,OAAOs3B,EAASz7B,MAAMy4B,GAAWt0B,KAAMlE,UACzC,GAAGkE,KACL,EAGA8tI,cAAe,WACb,IAAIlO,EAAU5/H,KAAKhI,SAASC,cAAc,OAmB1C,OAlBA2nI,EAAQ7jG,GAAK,yBAA2B/7B,KAAK61H,cAC7C+J,EAAQxhG,UAAY,wBAChBp+B,KAAKstI,OACP1N,EAAQxhG,WAAa,kBACZp+B,KAAK0tI,kBACd9N,EAAQxhG,WAAa,kCAErBwhG,EAAQxhG,WAAa,iCAEvBwhG,EAAQlmI,YAAYsG,KAAK+tI,wBAGzB/tI,KAAK6tI,kBAAiB,SAAUxT,GAC1BA,EAAUiF,SACZM,EAAQlmI,YAAY2gI,EAAUkF,UAElC,IACAv/H,KAAKysI,sBACE7M,CACT,EACAmO,qBAAsB,WACpB,IACEppD,EACAqpD,EACA32F,EACAgjF,EACA4T,EACAC,EANE/oD,EAAKnlF,KAAKhI,SAASC,cAAc,MAsCrC,OA/BAktF,EAAGppD,GAAK,gCAAkC/7B,KAAK61H,cAC/C1wC,EAAG/mD,UAAY,gCACf+mD,EAAGl2C,MAAMC,QAAU,QACnBlvC,KAAKq3C,QAAQ/+B,SAAQ,SAAUypB,GACP,kBAAXA,GACTksG,EAAalsG,EACbmsG,EAAa,OAEbD,EAAalsG,EAAO1oC,KACpB60I,EAAansG,IAKfs4F,EAAYr6H,KAAKokB,KAAK+pH,oBAAoBF,EAAYC,KACN,oBAAxB7T,EAAUmE,YAChCwP,EAAM3T,EAAUmE,UAAUx+H,KAAKokB,MAC/BugE,EAAK3kF,KAAKhI,SAASC,cAAc,MAC7BizH,EAAa8D,KAAKhkD,UAAUgjE,GAC9BrpD,EAAGjrF,YAAYs0I,GAEfrpD,EAAGtmD,UAAY2vG,EAEjB7oD,EAAGzrF,YAAYirF,GAEnB,GAAG3kF,OACHq3C,EAAU8tC,EAAG7oD,iBAAiB,WAClB9lC,OAAS,IACnB6gD,EAAQ,GAAG63B,UAAU58D,IAAItS,KAAKmtI,kBAC9B91F,EAAQA,EAAQ7gD,OAAS,GAAG04E,UAAU58D,IAAItS,KAAKotI,kBAE1CjoD,CACT,EACAlI,QAAS,WACHj9E,KAAK4/H,UACH5/H,KAAK4/H,QAAQ5rG,YACfh0B,KAAK4/H,QAAQ5rG,WAAWC,YAAYj0B,KAAK4/H,gBAEpC5/H,KAAK4/H,QAEhB,EAGAjK,uBAAwB,WACtB,OAAO31H,KAAK4tI,mBACd,EACAA,kBAAmB,WAIjB,OAHK5tI,KAAK4/H,UACR5/H,KAAK4/H,QAAU5/H,KAAK8tI,iBAEf9tI,KAAK4/H,OACd,EACAwO,yBAA0B,WACxB,OAAOpuI,KAAK4tI,oBAAoB5vG,cAAc,iCAChD,EAGA2vG,qBAAsB,WAIpB3tI,KAAKquI,yBAA2BnjB,EAAa8D,KAAKc,SAAS,WACrD9vH,KAAKokB,KAAKq4D,UACZz8E,KAAKsuI,wBAET,EAAExzI,KAAKkF,MACT,EACAysI,oBAAqB,WAEnBzsI,KAAKsgI,UAAU,OAAQtgI,KAAKg9H,WAAWliI,KAAKkF,OAC5CA,KAAKsgI,UAAU,QAAStgI,KAAKgtI,YAAYlyI,KAAKkF,OAG9CA,KAAKsgI,UAAU,gBAAiBtgI,KAAKuuI,oBAAoBzzI,KAAKkF,OAC9DA,KAAKsgI,UAAU,gBAAiBtgI,KAAKwuI,oBAAoB1zI,KAAKkF,OAG9DA,KAAK2yC,GAAG3yC,KAAKhI,SAASy+B,gBAAiB,UAAWz2B,KAAKyuI,sBAAsB3zI,KAAKkF,OAG9EA,KAAKstI,QAAUttI,KAAKutI,QAEtBvtI,KAAK2yC,GAAG3yC,KAAK1E,OAAQ,SAAU0E,KAAK0uI,mBAAmB5zI,KAAKkF,OAAO,GAIrEA,KAAK2yC,GAAG3yC,KAAK1E,OAAQ,SAAU0E,KAAK2uI,mBAAmB7zI,KAAKkF,MAC9D,EACA0uI,mBAAoB,WAClB1uI,KAAKsuI,wBACP,EACAK,mBAAoB,WAClB3uI,KAAKquI,0BACP,EACAI,sBAAuB,SAAU91I,GAE/B,GAAIA,GAASA,EAAMQ,QAAU+xH,EAAa8D,KAAKY,aAAa5vH,KAAK4tI,oBAAqBj1I,EAAMQ,QAC1F,OAAO,EAET6G,KAAKs1H,YACP,EACAiZ,oBAAqB,WAGnB/0I,WAAW,WACTwG,KAAKs1H,YACP,EAAEx6H,KAAKkF,MAAO,EAChB,EACAwuI,oBAAqB,WACnBxuI,KAAKs1H,YACP,EACA0H,WAAY,WAEVlkI,aAAakH,KAAK4uI,aAIlB91I,aAAakH,KAAK6uI,kBAGlB7uI,KAAK4uI,YAAcp1I,WAAW,WAC5BwG,KAAK8uI,aACP,EAAEh0I,KAAKkF,MAAO,EAChB,EACAgtI,YAAa,WACXhtI,KAAKs1H,YACP,EAGAkK,YAAa,WACX,OAAOx/H,KAAK4tI,oBAAoB1+D,UAAUx3C,SAAS,+BACrD,EACAq3G,YAAa,WACXj2I,aAAakH,KAAK4uI,aACb5uI,KAAKw/H,gBACRx/H,KAAK4tI,oBAAoB1+D,UAAU58D,IAAI,gCACvCtS,KAAKwzC,QAAQ,cAAe,CAAC,EAAGxzC,KAAKokB,KAAKy5G,qBAE9C,EACAiR,YAAa,WACP9uI,KAAKw/H,gBACPx/H,KAAK4tI,oBAAoB1+D,UAAUhmC,OAAO,gCAC1ClpC,KAAKwzC,QAAQ,cAAe,CAAC,EAAGxzC,KAAKokB,KAAKy5G,qBAE9C,EACAmR,iCAAkC,WAChC,MAAyD,UAAlDhvI,KAAKouI,2BAA2Bn/F,MAAMC,OAC/C,EACA4wF,0BAA2B,WACrB9/H,KAAKgvI,qCACPhvI,KAAKouI,2BAA2Bn/F,MAAMC,QAAU,OAEpD,EACAywF,0BAA2B,WACzB3/H,KAAKivI,qBACAjvI,KAAKgvI,qCACRhvI,KAAKouI,2BAA2Bn/F,MAAMC,QAAU,SAKlDlvC,KAAK6uI,iBAAmB7uI,KAAKokB,KAAK2iC,MAAM,WACtC/mD,KAAK+uI,aACP,EAAEj0I,KAAKkF,MACT,EACAivI,mBAAoB,WAElBjvI,KAAK6tI,kBAAiB,SAAUxT,GAC1BA,EAAUiF,SAAWjF,EAAUmF,eACjCnF,EAAUqF,UAEd,GACF,EAIAwP,8BAA+B,WAC7B,IAEEC,EAAqB,IAAI1sI,OAAO,KAAOyoH,EAAa8D,KAAK1B,2BAA2BvrH,KAAK,KAAO,UAAW,KAG3GqtI,EAFgBlkB,EAAal5E,UAAUmnF,iBAAiBn5H,KAAKhI,UAAUoN,QAHhD,4BAG4E,IAEhED,MAAMgqI,GAE3C,QAASC,GAAsBA,EAAmB54I,OAAS,CAC7D,EACA64I,gBAAiB,WACf,IACEC,EADctvI,KAAK1E,OAAOq1H,eACCE,WAAW,GAkBxC,GAAI7wH,KAAKqtI,2BAA6BiC,EAAe3Y,eAAejgG,WAAa44G,EAAete,cAAgBse,EAAe3Y,eAAejgG,UAAUlgC,OAAQ,CAC9J,IAAI+4I,EAAerkB,EAAa8D,KAAKE,gCAAgChE,EAAal5E,UAAUskF,oBAAoBt2H,KAAK1E,QAASg0I,EAAe3Y,eAAgB32H,KAAKhI,UAClK,GAAIu3I,EAAc,CAEhB,IADA,IAAI/tH,EAAS,EACqD,IAA3D+tH,EAAa74G,UAAUnyB,OAAOid,EAAQ,GAAG8yC,OAAO99D,QACrDgrB,GAAkB,EAEpB8tH,EAAiBpkB,EAAal5E,UAAUvV,OAAOz8B,KAAKhI,SAAUu3I,EAAc/tH,EAAQ8tH,EAAetY,aAAcsY,EAAere,UAClI,CACF,CACF,EACAqE,WAAY,WACV,IAAIt1H,KAAKokB,KAAKorH,wBAAd,CAMA,IAAKxvI,KAAKokB,KAAKy5G,qBAAuB3S,EAAal5E,UAAU+mF,gCAAgC/4H,KAAK1E,QAChG,OAAO0E,KAAK8uI,cAMd,IAAIW,EAAmBvkB,EAAal5E,UAAUskF,oBAAoBt2H,KAAK1E,QACvE,OAAKm0I,IAA4E,IAAxDzvI,KAAK41H,oBAAoB9oH,QAAQ2iI,IAA4BA,EAAiB17G,aAAa,wBAC3G/zB,KAAK8uI,cAMV9uI,KAAKytI,wBAA0BztI,KAAKstI,OAC/BttI,KAAK0vI,wBAITxkB,EAAal5E,UAAU2mF,yBAAyB34H,KAAKhI,YAAmD,IAAtCgI,KAAKktI,8BAA0CltI,KAAKkvI,gCAClHlvI,KAAK8uI,mBAEd9uI,KAAK0vI,sBA3BL,CA4BF,EAGAA,qBAAsB,WACpB1vI,KAAKqvI,kBACLrvI,KAAK2vI,yBACL3vI,KAAKwzC,QAAQ,kBAAmB,CAAC,EAAGxzC,KAAKokB,KAAKy5G,qBAC9C79H,KAAK2/H,4BACL3/H,KAAK+/H,oBACP,EACA4P,uBAAwB,WACtB3vI,KAAK6tI,kBAAiB,SAAUxT,GACI,oBAAvBA,EAAU59C,UAA4D,oBAA1B49C,EAAU3E,aAC/D2E,EAAU3E,aAEd,IACA11H,KAAK4vI,oBACP,EACAA,mBAAoB,WAClB,IAGE57G,EAHE67G,EAAoB,GACtB9Q,EAAa,KACbuQ,EAAiBpkB,EAAal5E,UAAUgoF,kBAAkBh6H,KAAKhI,UAE/D83I,EAAuB,SAAUzV,GACK,oBAAzBA,EAAU/E,WACnB+E,EAAU/E,WAAWthG,GACkB,oBAAvBqmG,EAAU59C,UAAiE,oBAA/B49C,EAAU7E,kBAAkE,oBAAxB6E,EAAU5E,YACrH4E,EAAU59C,YAAc49C,EAAU7E,iBAAiBxhG,IACtDqmG,EAAU5E,WAGhB,EACF,GAAK6Z,IAKLtvI,KAAK6tI,kBAAiB,SAAUxT,GAEa,oBAAhCA,EAAU9E,mBAIA,QAHnBwJ,EAAa1E,EAAU9E,qBAWzBsa,EAAkB/4I,KAAKujI,GAPf0E,GAA6C,oBAAxB1E,EAAU5E,WACjC4E,EAAU5E,WAOlB,IACAzhG,EAAak3F,EAAal5E,UAAU8mF,yBAAyBwW,GAGxDtvI,KAAK41H,oBAAoBj6H,MAAK,SAAUw7D,GAC3C,OAAO+zD,EAAa8D,KAAKY,aAAaz4D,EAASnjC,GAAY,EAC7D,KAKA,KAAOA,IACL67G,EAAkBv3H,QAAQw3H,IAGtB5kB,EAAa8D,KAAKU,sBAAsB17F,KAG5CA,EAAaA,EAAWA,UAE5B,EAGAs6G,uBAAwB,WAClBtuI,KAAKw/H,eACPx/H,KAAK+/H,oBAET,EACAA,mBAAoB,WAClB,IAAItjF,EAAYz8C,KAAKokB,KAAKy5G,oBACxB7rF,EAAYhyC,KAAK1E,OAAOq1H,eAG1B,IAAKl0E,EACH,OAAOz8C,MAELA,KAAKstI,QAAWt7F,EAAU4mF,cAC5B54H,KAAK+uI,cAGA/uI,KAAK0tI,oBACJ1tI,KAAKstI,OACPttI,KAAK+vI,sBAAsBtzF,GAE3Bz8C,KAAKgwI,gBAAgBh+F,IAGzBhyC,KAAKwzC,QAAQ,oBAAqB,CAAC,EAAGxzC,KAAKokB,KAAKy5G,qBAEpD,EACAkS,sBAAuB,SAAUtzF,GAE/Bz8C,KAAK4tI,oBAAoB3+F,MAAMiT,KAAO,IAGtC,IASE+tF,EATEntF,EAAY9iD,KAAKhI,SAASy+B,iBAAmBz2B,KAAKhI,SAASy+B,gBAAgBqsB,WAAa9iD,KAAKhI,SAASg4C,KAAK8S,UAC7GotF,EAAclwI,KAAK1E,OAAO0nF,WAC1BmtD,EAAiBnwI,KAAK4tI,oBACtBwC,EAAgB3zF,EAAUuF,wBAC1BquF,EAAeD,EAAc1yG,IAAMolB,EACnCwtF,EAAkBF,EAAcluF,KAAOkuF,EAAcr0F,MAAQ,EAC7Dw0F,EAAgBJ,EAAe9xF,aAC/BmyF,EAAeL,EAAe9yF,YAC9B+lF,EAAkBoN,EAAe,EAmBnC,OAjBIxwI,KAAKutI,OAEHzqF,EAAYutF,EAAe5zF,EAAU4B,aAAekyF,EAAgBvwI,KAAKwtI,iBAC3E2C,EAAelhG,MAAMvR,IAAM2yG,EAAe5zF,EAAU4B,aAAekyF,EAAgB,KACnFJ,EAAejhE,UAAUhmC,OAAO,iCAEvB4Z,EAAYutF,EAAeE,EAAgBvwI,KAAKwtI,iBACzD2C,EAAejhE,UAAU58D,IAAI,gCAC7B69H,EAAelhG,MAAMvR,IAAM19B,KAAKwtI,gBAAkB,OAGlD2C,EAAejhE,UAAUhmC,OAAO,gCAChCinG,EAAelhG,MAAMvR,IAAM2yG,EAAeE,EAAgB,MAG5DJ,EAAelhG,MAAMvR,IAAM2yG,EAAeE,EAAgB,KAEpDvwI,KAAKitI,OACX,IAAK,OACHgD,EAAaG,EAAcluF,KAC3B,MACF,IAAK,QACH+tF,EAAaG,EAAcpzF,MAAQwzF,EACnC,MACF,IAAK,SACHP,EAAaK,EAAkBlN,EAG/B6M,EAAa,EACfA,EAAa,EACJA,EAAaO,EAAeN,IACrCD,EAAaC,EAAchsI,KAAKuF,KAAK+mI,GAAgB,GAEvDL,EAAelhG,MAAMiT,KAAO+tF,EAAa,IAC3C,EACAD,gBAAiB,SAAUh+F,GAEzBhyC,KAAK4tI,oBAAoB3+F,MAAMiT,KAAO,IACtCliD,KAAK4tI,oBAAoB3+F,MAAM+N,MAAQ,UACvC,IAAIozE,EAAQp+E,EAAU6+E,WAAW,GAC/B90C,EAAWq0C,EAAMpuE,0BAGd+5B,GAAgC,IAApBA,EAAS79B,QAAmC,IAAnB69B,EAAShgC,OAAeq0E,EAAMuG,iBAAmBvG,EAAM4G,gBAG7Fj7C,EADoC,IAAlCq0C,EAAMuG,eAAetjG,UAAkB+8F,EAAMuG,eAAe34F,cAAc,OACjEoyF,EAAMuG,eAAe34F,cAAc,OAAOgkB,wBAE1CouE,EAAMuG,eAAe30E,yBAGpC,IAWEshF,EACAC,EAZEC,EAAiBxjI,KAAK1E,OAAO0nF,WAC/BmtD,EAAiBnwI,KAAK4tI,oBACtB2C,EAAgBJ,EAAe9xF,aAE/B+kF,EADe+M,EAAe9yF,YACG,EAEjCgmF,EAAcrjI,KAAK0jI,SAAWN,EAC9BQ,EAAoB5jI,KAAK81H,gBAAgB,qBACzC+N,EAA4B,CAAC,WAAY,SAAS/2H,QAAQxR,OAAOmgD,iBAAiBmoF,GAAmBznF,iBAAiB,cAAgB,EACtIs0F,EAAY,CAAC,EACb3M,EAAmB,CAAC,EAKlBD,GACFN,EAA4BK,EAAkB5hF,wBAC9C,CAAC,MAAO,QAAQ1pC,SAAQ,SAAUzd,GAChCipI,EAAiBjpI,GAAOkhF,EAASlhF,GAAO0oI,EAA0B1oI,EACpE,IACAipI,EAAiB/nF,MAAQggC,EAAShgC,MAClC+nF,EAAiB5lF,OAAS69B,EAAS79B,OACnC69B,EAAW+nD,EACXN,EAAiBD,EAA0BxnF,MAG3C00F,EAAU/yG,IAAMkmG,EAAkB9gF,WAGlC2tF,EAAU/yG,IAAM19B,KAAK1E,OAAO23D,YAE9BqwE,EAAiBvnD,EAAS75B,KAAO65B,EAAShgC,MAAQ,EAClD00F,EAAU/yG,KAAOq+C,EAASr+C,IAAM6yG,EAC5Bx0D,EAASr+C,IA5BI,IA6BfyyG,EAAejhE,UAAU58D,IAAI,6BAC7B69H,EAAejhE,UAAUhmC,OAAO,8BAChCunG,EAAU/yG,KA/BK,GA+BiBq+C,EAAS79B,OAASl+C,KAAK2jI,UAEvDwM,EAAejhE,UAAU58D,IAAI,8BAC7B69H,EAAejhE,UAAUhmC,OAAO,6BAChCunG,EAAU/yG,KAAO19B,KAAK2jI,SAEpBL,EAAiBF,GACnBqN,EAAUvuF,KAAOmhF,EAAcD,EAC/BqN,EAAUzzF,MAAQ,WACTwmF,EAAiBF,EAAiBF,GAC3CqN,EAAUvuF,KAAO,OACjBuuF,EAAUzzF,MAAQ,IAElByzF,EAAUvuF,KAAOmhF,EAAcC,EAC/BmN,EAAUzzF,MAAQ,WAEpB,CAAC,MAAO,OAAQ,SAAS1kC,SAAQ,SAAUzd,GACzCs1I,EAAelhG,MAAMp0C,GAAO41I,EAAU51I,IAAQyE,MAAMmxI,EAAU51I,IAAQ,GAAK,KAC7E,GACF,IAEFqwH,EAAaW,WAAW+T,QAAUjU,EAK9BC,EAAgBV,EAAaC,UAAU7tH,OAAO,CAChDi3B,KAAM,WACJ22F,EAAaC,UAAUz0H,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAClDkE,KAAKsgI,UAAU,eAAgBtgI,KAAK0nI,WAAW5sI,KAAKkF,OACpDA,KAAKsgI,UAAU,eAAgBtgI,KAAKs9H,WAAWxiI,KAAKkF,MACtD,EACA0nI,WAAY,SAAU/uI,GACpB,IAAIylC,EAAY,yBAChBzlC,EAAM46C,iBACN56C,EAAMgvI,aAAaC,WAAa,OACb,aAAfjvI,EAAMM,KACRN,EAAMQ,OAAO+1E,UAAU58D,IAAI8rB,GACH,cAAfzlC,EAAMM,MACfN,EAAMQ,OAAO+1E,UAAUhmC,OAAO9K,EAElC,EACAk/F,WAAY,SAAU3kI,GAGpBA,EAAM46C,iBACN56C,EAAM06C,kBAIF16C,EAAMgvI,aAAaE,OACb1rI,MAAMzF,UAAU8E,MAAM5E,KAAK+B,EAAMgvI,aAAaE,MAAO,GACvDlsI,KAAK,SAAU2mC,GAEjB,IAAI4lG,EAAYnsG,EADduG,EAAKrpC,KAAKkM,MAAM,YAElB+iI,EAAa,IAAID,YACNE,cAAc7lG,GACzBvG,EAAK,gBAAiB,IAAI/+B,KAC1BkuH,EAAa8D,KAAKmB,kBAAkBnwH,KAAKhI,SAAU,gDAAkD+jC,EAAK,QAC1GmsG,EAAWrvI,OAAS,WAClB,IAAI6rF,EAAM1kF,KAAKhI,SAAS8jC,eAAeC,GACnC2oD,IACFA,EAAIloD,gBAAgB,MACpBkoD,EAAIloD,gBAAgB,SACpBkoD,EAAIpsF,IAAM4vI,EAAWntH,OAEzB,EAAEjgB,KAAKkF,MAEX,EAAElF,KAAKkF,OAETrH,EAAMQ,OAAO+1E,UAAUhmC,OA3BP,yBA4BlB,IAEFgiF,EAAaW,WAAW6kB,cAAgB9kB,EAE1C,WAIE,SAAS+kB,EAAyBh4I,GAChC,IAAIi7B,EAAOs3F,EAAal5E,UAAU2/E,kBAAkB3xH,KAAK41B,QAAQsB,eAC/DV,EAAc5C,EAAK4C,YACnBo6G,EAAiB1lB,EAAal5E,UAAUqnF,gBAAgBzlG,SACbr6B,IAAzCi9B,EAAYo6G,EAAe1uF,KAAO,IAAoE,KAAhD1rB,EAAYo6G,EAAe1uF,KAAO,GAAGoS,aAAsD/6D,IAArCi9B,EAAYo6G,EAAe1uF,OAAmE,KAA5C1rB,EAAYo6G,EAAe1uF,MAAMoS,SACjM37D,EAAM46C,gBAEV,CACA,SAASs9F,EAA2Bl4I,EAAOw+D,GACzC,GAAIn3D,KAAK41B,QAAQk7G,eAAiB35E,EAAQpjC,aAAa,uBACrDp7B,EAAM46C,sBACD,GAAIvzC,KAAK41B,QAAQm7G,qBAAuB55E,EAAQpjC,aAAa,8BAA+B,CACjG,IAAIH,EAAOs3F,EAAal5E,UAAU2/E,kBAAkB3xH,KAAK41B,QAAQsB,gBAG7DtD,GAAoC,KAA5BA,EAAK4C,YAAY89B,QAAiD,OAAhC1gC,EAAKa,SAASjsB,eAA0BorB,EAAKo4G,wBAAiF,OAAvDp4G,EAAKo4G,uBAAuBv3G,SAASjsB,eAA6E,KAAnDorB,EAAKo4G,uBAAuBx1G,YAAY89B,SAC1N37D,EAAM46C,gBAEV,CACF,CACA,SAASy9F,EAAiBr4I,GAExB,IAAIi7B,EAAOs3F,EAAal5E,UAAU2/E,kBAAkB3xH,KAAK41B,QAAQsB,eAErD,SADJtD,GAAQA,EAAKa,SAASjsB,iBAE5B7P,EAAM46C,iBACN23E,EAAa8D,KAAKmB,kBAAkBnwH,KAAK41B,QAAQsB,cAAe,SAI9Dg0F,EAAa8D,KAAKuD,WAAW3+F,KAC/Bj7B,EAAM46C,iBAGF56C,EAAMs+C,SACRj3C,KAAK41B,QAAQsB,cAAcu5F,YAAY,WAAW,EAAO,MAEzDzwH,KAAK41B,QAAQsB,cAAcu5F,YAAY,UAAU,EAAO,MAG9D,CACA,SAASwgB,EAA0Bt4I,GACjC,IAAIJ,EACFq7B,EAAOs3F,EAAal5E,UAAU2/E,kBAAkB3xH,KAAK41B,QAAQsB,eAC7DmgC,EAAUzjC,EAAKa,SAASjsB,cACxByvF,EAAU,oBACVi5C,EAAW,OACThmB,EAAa8D,KAAK5B,MAAMz0H,EAAO,CAACuyH,EAAa8D,KAAK53E,QAAQu1E,UAAWzB,EAAa8D,KAAK53E,QAAQy1E,SAEnGj5F,EAAKo4G,wBAELkF,EAASrrI,KAAKwxD,IAEwC,IAAtD6zD,EAAal5E,UAAUqnF,gBAAgBzlG,GAAMsuB,KACvCgpE,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQu1E,YAAc10B,EAAQpyF,KAAK+tB,EAAKo4G,uBAAuB3tG,YAIlHzK,EAAKo4G,uBAAuBh4G,WAAWC,YAAYL,EAAKo4G,wBACxDrzI,EAAM46C,mBACIvzC,KAAK41B,QAAQm7G,qBAAuB7lB,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQy1E,UAGvGt0H,EAAIyH,KAAK41B,QAAQsB,cAAcj/B,cAAc,MAC3ComC,UAAY,OACdzK,EAAKo4G,uBAAuBh4G,WAAW0mB,aAAaniD,EAAGq7B,GACvDj7B,EAAM46C,kBAEC23E,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQ41E,SAEpEp5F,EAAKu9G,oBAAsBv9G,EAAKo4G,yBAE/BkF,EAASrrI,KAAKwxD,IAEf4gC,EAAQpyF,KAAK+tB,EAAKyK,YAElB6yG,EAASrrI,KAAK+tB,EAAKu9G,mBAAmB18G,SAASjsB,gBAO7C0iH,EAAal5E,UAAUygF,WAAWzyH,KAAK41B,QAAQsB,cAAetD,EAAKu9G,oBACnEv9G,EAAKo4G,uBAAuBh4G,WAAWC,YAAYL,GACnDj7B,EAAM46C,kBACG23E,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQu1E,YAA0B,OAAZt1D,GAElF4gC,EAAQpyF,KAAK+tB,EAAKyK,aAEjBzK,EAAKo4G,yBAELp4G,EAAKssC,cAAc8rE,wBAEpBp4G,EAAKu9G,oBAAyE,OAAnDv9G,EAAKu9G,mBAAmB18G,SAASjsB,gBAU1DjQ,EAAIyH,KAAK41B,QAAQsB,cAAcj/B,cAAc,MAC3ComC,UAAY,OACdzK,EAAKssC,cAAcA,cAAcxlB,aAAaniD,EAAGq7B,EAAKssC,eAGtDgrD,EAAal5E,UAAUygF,WAAWzyH,KAAK41B,QAAQsB,cAAe3+B,GAG9Dq7B,EAAKssC,cAAcjsC,YAAYL,GAC/Bj7B,EAAM46C,kBACG23E,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQu1E,aAAsE,IAAxDzB,EAAa8D,KAAKsD,cAAc1+F,EAAM,eAAiF,IAAtDs3F,EAAal5E,UAAUqnF,gBAAgBzlG,GAAMsuB,MAG9LvpD,EAAM46C,iBACN23E,EAAa8D,KAAKwC,gBAAgBxxH,KAAK41B,QAAQsB,cAAe,MACrDg0F,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQy1E,SAAkE,IAAxD3B,EAAa8D,KAAKsD,cAAc1+F,EAAM,eAAkF,IAAvDs3F,EAAal5E,UAAUqnF,gBAAgBzlG,GAAMopB,QAG1LzkD,EAAIyH,KAAK41B,QAAQsB,cAAcj/B,cAAc,MAC3ComC,UAAY,OACdzK,EAAKssC,cAAcxlB,aAAaniD,EAAGq7B,EAAKiO,aAGxCqpF,EAAal5E,UAAUygF,WAAWzyH,KAAK41B,QAAQsB,cAAe3+B,GAC9DI,EAAM46C,kBACG23E,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQu1E,YAAczB,EAAa8D,KAAKU,sBAAsB97F,EAAKssC,iBAAmBtsC,EAAKo4G,wBAA0Bp4G,EAAKu9G,oBAAsBl5C,EAAQpyF,KAAK+tB,EAAKyK,aAG5N1lC,EAAM46C,iBACN23E,EAAal5E,UAAUygF,WAAWzyH,KAAK41B,QAAQsB,cAAetD,EAAKiO,aACnEjO,EAAKssC,cAAcjsC,YAAYL,GAEnC,CACA,SAASspG,EAAYvkI,GACnB,IAAIi7B,EAAOs3F,EAAal5E,UAAU2/E,kBAAkB3xH,KAAK41B,QAAQsB,eAE5DtD,IAMDs3F,EAAa8D,KAAKU,sBAAsB97F,IAAkC,IAAzBA,EAAK6S,SAASjwC,SAAiB00H,EAAa8D,KAAK6C,iBAAiBj+F,IACrH5zB,KAAK41B,QAAQsB,cAAcu5F,YAAY,eAAe,EAAO,MAM3DvF,EAAa8D,KAAK5B,MAAMz0H,EAAOuyH,EAAa8D,KAAK53E,QAAQy1E,QAAW3B,EAAa8D,KAAKuD,WAAW3+F,IAAUs3F,EAAa8D,KAAK6C,iBAAiBj+F,KAGhI,MAFNA,EAAKa,SAASjsB,cAGtBxI,KAAK41B,QAAQsB,cAAcu5F,YAAY,UAAU,EAAO,MAC9C93H,EAAMs+C,UAAat+C,EAAMg+C,SACnC32C,KAAK41B,QAAQsB,cAAcu5F,YAAY,eAAe,EAAO,MAGnE,CACA,SAAS2gB,EAAoBz4I,EAAOmjI,GAClC,IAAIuV,EAAWvV,EAAS9nG,WAAWgK,cAAc,uCAAyC89F,EAAS/nG,aAAa,6BAA+B,MAC3Is9G,IACFA,EAAS92I,MAAQuhI,EAASz9F,UAAUi2B,OAExC,CAIA,SAASg9E,EAAat+E,GACfA,EAAI4yE,iBAIP5yE,EAAI4yE,eAAiB,CAAC,OAInB5lI,KAAK+7B,KACR/7B,KAAK+7B,GAAKi3B,EAAI4yE,eAAepvI,QAE/Bw8D,EAAI4yE,eAAe5lI,KAAK+7B,IAAM/7B,IAChC,CACA,SAASuxI,EAAkBv+E,GACpBA,EAAI4yE,gBAAmB5yE,EAAI4yE,eAAe5lI,KAAK+7B,MAWpDi3B,EAAI4yE,eAAe5lI,KAAK+7B,IAAM,KAChC,CACA,SAASy1G,EAAoBn9G,EAAUR,EAAK49G,GAC1C,IAAIhzG,EAAW,GAYf,GAXKpK,IACHA,EAAW,IAGW,kBAAbA,IACTA,EAAWR,EAAIyI,iBAAiBjI,IAG9B62F,EAAa8D,KAAKhkD,UAAU32C,KAC9BA,EAAW,CAACA,IAEVo9G,EAGF,IAAK,IAAIn7I,EAAI,EAAGA,EAAI+9B,EAAS79B,OAAQF,IAAK,CACxC,IAAIwmC,EAAKzI,EAAS/9B,IACd40H,EAAa8D,KAAKhkD,UAAUluC,IAAQA,EAAG/I,aAAa,+BAAkC+I,EAAG/I,aAAa,8BACxG0K,EAAS3nC,KAAKgmC,EAElB,MAGA2B,EAAWtiC,MAAMzF,UAAU8E,MAAMK,MAAMw4B,GAEzC,OAAOoK,CACT,CACA,SAASizG,EAAuBv6E,GAC9B,IAAIk6E,EAAWl6E,EAAQnjC,WAAWgK,cAAc,uCAAyCm5B,EAAQpjC,aAAa,6BAA+B,MACzIs9G,IAEFA,EAASniE,UAAUhmC,OAAO,wBAC1BmoG,EAAS70G,gBAAgB,8BAEvB26B,EAAQnjC,YACVmjC,EAAQnjC,WAAWC,YAAYkjC,EAEnC,CASA,SAASw6E,EAActX,EAAWhhI,EAAMyyF,GAmBtC,MAR8B,oBAH9BuuC,EAhBF,SAA8BA,EAAWr+G,GAMvC,OALAvlB,OAAOwL,KAAK+Z,GAAU1D,SAAQ,SAAU/X,QACdhH,IAApB8gI,EAAU95H,KACZ85H,EAAU95H,GAAQyb,EAASzb,GAE/B,IACO85H,CACT,CAScuX,CAAqBvX,EAPT,CACtB,OAAUvuC,EAASl2D,QAAQygG,cAC3B,SAAYvqC,EAASl2D,QAAQsB,cAC7B,KAAQ40D,KAOWv3D,MACnB8lG,EAAU9lG,OAIP8lG,EAAUhhI,OACbghI,EAAUhhI,KAAOA,GAEZghI,CACT,CACA,SAASwX,IAGP,OAAI7xI,KAAKy+B,SAASqzG,OAAM,SAAU36E,GAChC,QAASA,EAAQpjC,aAAa,uBAChC,MAGgC,IAAzB/zB,KAAK41B,QAAQgqG,OACtB,CACA,SAASmS,IAEP,QAAKF,EAAiBj7I,KAAKoJ,QAGW,IAA/BA,KAAK41B,QAAQ8sG,aACtB,CACA,SAASsP,IACP,OAAoC,IAA7BhyI,KAAK41B,QAAQ22E,WACtB,CACA,SAAS0lC,IACP,OAAiC,IAA1BjyI,KAAK41B,QAAQyxG,QACtB,CACA,SAAS6K,IACP,OAAsC,IAA/BlyI,KAAK41B,QAAQ86G,aACtB,CACA,SAASyB,IACP,OAAyC,IAAlCnyI,KAAK41B,QAAQ+yG,gBACtB,CACA,SAASyJ,IAIP,OAAQpyI,KAAK41B,QAAQi2F,WAA0B,aACjD,CACA,SAASwmB,EAAsBhB,GAQ7B,IAPA,IAAIhhG,EAAMrwC,KAAK41B,QAAQsB,cAAcj/B,cAAc,OACjDyL,EAAM1G,KAAK0G,MACX4uI,EAAW,iBAAmB5uI,EAC9B6uI,EAAOlB,EAAS/3G,WAIXt5B,KAAK41B,QAAQsB,cAAc4E,eAAew2G,IAC/C5uI,IACA4uI,EAAW,iBAAmB5uI,EAEhC2sC,EAAIjS,UAAYizG,EAASjzG,UACzBiS,EAAItU,GAAKu2G,EACTjiG,EAAIhS,UAAYgzG,EAAS92I,MACzB82I,EAASh5I,aAAa,4BAA6Bi6I,GAGnD,IAAK,IAAIh8I,EAAI,EAAGyE,EAAIw3I,EAAK/7I,OAAQF,EAAIyE,EAAGzE,IAEjC+5C,EAAIqqB,aAAa63E,EAAKj8I,GAAGm+B,WAC5B4b,EAAIh4C,aAAak6I,EAAKj8I,GAAGm+B,SAAU89G,EAAKj8I,GAAGiE,OAe/C,OATI82I,EAASz7C,MACX51F,KAAK2yC,GAAG0+F,EAASz7C,KAAM,QAAS,SAAUj9F,GACnCA,EAAMw9C,kBACTn2C,KAAKwyI,aAAaxyI,KAAK41B,QAAQsB,cAAc4E,eAAew2G,GAEhE,EAAEx3I,KAAKkF,OAETqxI,EAASniE,UAAU58D,IAAI,wBACvB++H,EAASr9G,WAAW0mB,aAAarK,EAAKghG,GAC/BhhG,CACT,CACA,SAASq8F,EAAYv1E,EAASs7E,GAC5B,IAAKt7E,EAAQpjC,aAAa,8BAA+B,CAChB,aAAnCojC,EAAQ1iC,SAASjsB,gBACnB2uD,EAAUk7E,EAAsBz7I,KAAKoJ,KAAMm3D,GAGtCn3D,KAAK0yI,8BACR1yI,KAAK0yI,4BAA8BtB,EAAoBt2I,KAAKkF,MAC5DA,KAAKsgI,UAAU,gBAAiBtgI,KAAK0yI,+BAGpC1yI,KAAK41B,QAAQ+8G,gBAAmBx7E,EAAQpjC,aAAa,0BACxDojC,EAAQ9+D,aAAa,mBAAmB,GACxC8+D,EAAQ9+D,aAAa,aAAc2H,KAAK41B,QAAQg9G,aAI7C5yI,KAAK6yI,qCACJ17E,EAAQpjC,aAAa,wBAA0BojC,EAAQpjC,aAAa,iCACtE/zB,KAAK6yI,mCAAqChC,EAA2B/1I,KAAKkF,MAC1EA,KAAKsgI,UAAU,uBAAwBtgI,KAAK6yI,qCAM3C7yI,KAAK41B,QAAQk7G,eAAkB35E,EAAQpjC,aAAa,wBACvD/zB,KAAK2yC,GAAGwkB,EAAS,QAAS+lE,EAAYpiI,KAAKkF,OAE7C,IAAI8yI,EAAY5nB,EAAa8D,KAAK33F,OAClC8/B,EAAQ9+D,aAAa,8BAA8B,GACnD8+D,EAAQ+X,UAAU58D,IAAI,yBACtB6kD,EAAQ9+D,aAAa,OAAQ,WAC7B8+D,EAAQ9+D,aAAa,kBAAkB,GACvC8+D,EAAQ9+D,aAAa,kCAAmCo6I,GAIxDt7E,EAAQ9+D,aAAa,sBAAuBy6I,GAC5CC,EAAeD,GAAa37E,EAAQ94B,UACpCr+B,KAAK4zC,OAAOunF,yBAAyBhkE,EACvC,CACA,OAAOA,CACT,CACA,SAAS67E,IAEPhzI,KAAKsgI,UAAU,qBAAsB0Q,EAAiBl2I,KAAKkF,OAG3DA,KAAKsgI,UAAU,wBAAyB2Q,EAA0Bn2I,KAAKkF,OACvEA,KAAKsgI,UAAU,uBAAwB2Q,EAA0Bn2I,KAAKkF,OAGlEA,KAAK41B,QAAQq9G,oBACfjzI,KAAKsgI,UAAU,uBAAwBqQ,EAAyB71I,KAAKkF,OAIlEA,KAAK6yI,qCAEJ7yI,KAAK41B,QAAQk7G,eAAiB9wI,KAAK41B,QAAQm7G,uBAC7C/wI,KAAK6yI,mCAAqChC,EAA2B/1I,KAAKkF,MAC1EA,KAAKsgI,UAAU,uBAAwBtgI,KAAK6yI,oCAGlD,CACA,SAASK,IAqBP,GApBAlzI,KAAK6rH,WAAa,GAGlBp1H,OAAOwL,KAAKjC,KAAK41B,QAAQi2F,YAAYvzG,SAAQ,SAAUjf,GAExC,YAATA,GAAsB2G,KAAK41B,QAAQi2F,WAAWxyH,IAChD2G,KAAK6rH,WAAW/0H,KAAK66I,EAAc3xI,KAAK41B,QAAQi2F,WAAWxyH,GAAOA,EAAM2G,MAE5E,GAAGA,MAYCoyI,EAA+Bx7I,KAAKoJ,MAAO,CAC7C,IAAIykD,EAAOzkD,KAAK41B,QAAQyyG,aACnB5jF,IACHA,EAAO,CAAC,EAIHytF,EAAuBt7I,KAAKoJ,QAC/BykD,EAAKgjF,aAAe,KAGxBznI,KAAKmuI,oBAAoB,eAAgB1pF,EAC3C,CAGA,IAAI0uF,EAAW,CACb7G,OAAO,EACP,iBAAkByF,EAAuBn7I,KAAKoJ,MAC9CqnI,SAAU4K,EAAkBr7I,KAAKoJ,MACjC2oI,iBAAkBwJ,EAA0Bv7I,KAAKoJ,MACjDusG,YAAaylC,EAAqBp7I,KAAKoJ,OAEzCvJ,OAAOwL,KAAKkxI,GAAU76H,SAAQ,SAAUjf,GAClC85I,EAAS95I,IACX2G,KAAKmuI,oBAAoB90I,EAE7B,GAAG2G,MAKH,IAAI+jI,EAAmB/jI,KAAK41B,QAAQi2F,WAAoB,QACxD,IAAKkY,GAAoB8N,EAAiBj7I,KAAKoJ,MAAO,CAEpD,IAAIozI,EAAiBloB,EAAa8D,KAAK1xH,OAAO,CAAC,EAAG0C,KAAK41B,QAAQgqG,QAAS,CACtEsN,6BAA8BltI,KAAK41B,QAAQs3G,+BAG7CnJ,EAAmB,IAAI7Y,EAAaW,WAAW+T,QAAQwT,EACzD,CAIIrP,GACF/jI,KAAK6rH,WAAW/0H,KAAK66I,EAAc5N,EAAkB,UAAW/jI,MAEpE,CACA,SAASqzI,EAAar3H,EAAU4Z,GAU9B,OAPIA,GAFuB,CAAC,CAAC,+BAAgC,yCAGtCtd,SAAQ,SAAUg7H,GACjC19G,EAAQj/B,eAAe28I,EAAK,UAA4B/5I,IAArBq8B,EAAQ09G,EAAK,KAClDpoB,EAAa8D,KAAK4F,WAAW0e,EAAK,GAAIA,EAAK,GAAI,SAEnD,IAEKpoB,EAAa8D,KAAKhzG,SAAS,CAAC,EAAG4Z,EAAS5Z,EACjD,CACA,SAASu3H,EAAmB17E,EAAQpT,GAElC,IAGEt/C,EACAquI,EAMF,GADAruI,EATmB,kBASEiV,KAAKy9C,GAExB,OAAOqzD,EAAa8D,KAAKwC,gBAAgBxxH,KAAK41B,QAAQsB,cAAe/xB,EAAM,IAE7E,GAAe,aAAX0yD,EAMF,OAJIpT,EAAKkX,MACPuvD,EAAa8D,KAAK4F,WAAW,oCAAqC,SAAU,SAE9E4e,EAAmB/uF,EAAKlqD,OAASkqD,EAAKkX,KAC/B37D,KAAK41B,QAAQsB,cAAcu5F,YAAY,YAAY,EAAO+iB,GAEnE,GAAe,aAAX37E,EAMF,OAJIpT,EAAKprD,MACP6xH,EAAa8D,KAAK4F,WAAW,oCAAqC,SAAU,SAE9E4e,EAAmB/uF,EAAKlqD,OAASkqD,EAAKprD,KAC/B2G,KAAK41B,QAAQsB,cAAcu5F,YAAY,YAAY,EAAO+iB,GAEnE,GAAe,eAAX37E,EACF,OAAO73D,KAAKwtH,WAAW/oE,GAEzB,GAAe,UAAXoT,EAAoB,CACtB,IAAIv/D,EAAM0H,KAAK41B,QAAQygG,cAAc1F,eAAev0H,WAAWk4D,OAC/D,OAAOt0D,KAAK41B,QAAQsB,cAAcu5F,YAAY,eAAe,EAAOn4H,EACtE,CACA,GAAe,SAAXu/D,EAAmB,CACrB,IAAI/d,EAAO95C,KAAK41B,QAAQygG,cAAc1F,eAAev0H,WAAWk4D,OAChE,OAAO42D,EAAa8D,KAAKmB,kBAAkBnwH,KAAK41B,QAAQsB,cAAe4iB,EACzE,CAIA,GA1CkB,uBA0CA1/B,KAAKy9C,GAAS,CAC9B,IAAI98C,EAAS/a,KAAK41B,QAAQsB,cAAcu5F,YAAY54D,GAAQ,EAAO,MACjE7jC,EAAak3F,EAAal5E,UAAU8mF,yBAAyB5N,EAAal5E,UAAUgoF,kBAAkBh6H,KAAK41B,QAAQsB,gBAIrH,OAHIlD,GACFy/G,EAA2B78I,KAAKoJ,KAAMkrH,EAAa8D,KAAK0C,qBAAqB19F,IAExEjZ,CACT,CAEA,OADAy4H,EAAmB/uF,GAAQA,EAAKlqD,MACzByF,KAAK41B,QAAQsB,cAAcu5F,YAAY54D,GAAQ,EAAO27E,EAC/D,CAMA,SAASC,EAA2BhiB,GAClC,GAAKA,EAAL,CAGA,IAAIiiB,EACFC,EAAYx3I,MAAMzF,UAAU8E,MAAM5E,KAAK66H,EAAen2F,YAAY9V,QAAO,SAAU2xC,GACjF,IAAIy8E,EAA2C,QAAnCz8E,EAAQ1iC,SAASjsB,cAI7B,OAHIorI,IAAUF,IACZA,EAAYv8E,EAAQloB,MAAMykG,WAErBE,CACT,IASED,EAAUn9I,SAEZwJ,KAAK6gI,gBACL8S,EAAUr7H,SAAQ,SAAU+3B,GAC1B,GAAIA,EAAIpB,MAAMykG,YAAcA,EAAW,CACrC,IAAInzG,EAAY8P,EAAI9P,UACpB,GAAIA,EAAW,CAEb2qF,EAAa8D,KAAK7+D,OAAO9f,EAAKrwC,KAAK41B,QAAQsB,eAC3C,IAAI+sD,EAAKjkF,KAAK41B,QAAQsB,cAAcj/B,cAAc,MAClDsoC,EAAUvM,WAAW0mB,aAAaupC,EAAI1jD,EAAUsB,YAClD,CACF,CACF,GAAG7hC,MACHyxH,EAAexiF,MAAMykG,UAAYA,EAEjC1zI,KAAKkhI,mBAjCP,CAmCF,CACA,IAAI6R,EAAiB,CAAC,EACtB7nB,EAAax0H,UAAY,CAEvB69B,KAAM,SAAUkK,EAAU7I,GAMxB,OALA51B,KAAK41B,QAAUy9G,EAAaz8I,KAAKoJ,KAAMA,KAAKgc,SAAU4Z,GACtD51B,KAAK6zI,aAAep1G,EACfz+B,KAAK41B,QAAQguG,oBAChB5jI,KAAK41B,QAAQguG,kBAAoB5jI,KAAK41B,QAAQsB,cAAc8Y,MAEvDhwC,KAAKu0C,OACd,EACAA,MAAO,WACDv0C,KAAKy8E,WAGT60D,EAAa16I,KAAKoJ,KAAMA,KAAK41B,QAAQygG,eACrCr2H,KAAK4zC,OAAS,IAAIs3E,EAAaqP,OAAOv6H,MACtCA,KAAKy+B,SAAW,GAChBz+B,KAAK8zI,YAAY9zI,KAAK6zI,cACO,IAAzB7zI,KAAKy+B,SAASjoC,SAGlBwJ,KAAKy8E,UAAW,EAGhBy2D,EAAet8I,KAAKoJ,MACpBgzI,EAAep8I,KAAKoJ,OACtB,EACAi9E,QAAS,WACFj9E,KAAKy8E,WAGVz8E,KAAKy8E,UAAW,EAChBz8E,KAAK6rH,WAAWvzG,SAAQ,SAAU+hH,GACC,oBAAtBA,EAAUp9C,SACnBo9C,EAAUp9C,SAEd,GAAGj9E,MACHA,KAAK4zC,OAAOqpC,UACZj9E,KAAKy+B,SAASnmB,SAAQ,SAAU6+C,GAE1Bn3D,KAAK41B,QAAQg9G,aACfz7E,EAAQ94B,UAAY84B,EAAQ94B,WAI9B84B,EAAQ36B,gBAAgB,mBACxB26B,EAAQ36B,gBAAgB,cACxB26B,EAAQ36B,gBAAgB,8BACxB26B,EAAQ+X,UAAUhmC,OAAO,yBACzBiuB,EAAQ36B,gBAAgB,QACxB26B,EAAQ36B,gBAAgB,kBACxB26B,EAAQ36B,gBAAgB,uBACxB26B,EAAQ36B,gBAAgB,mCAGpB26B,EAAQpjC,aAAa,8BACvB29G,EAAuBv6E,EAE3B,GAAGn3D,MACHA,KAAKy+B,SAAW,GAChBz+B,KAAK6yI,mCAAqC,KAC1C7yI,KAAK0yI,4BAA8B,KACnCnB,EAAkB36I,KAAKoJ,KAAMA,KAAK41B,QAAQygG,eAC5C,EACA1jF,GAAI,SAAUx5C,EAAQR,EAAOiiI,EAAUC,GAErC,OADA76H,KAAK4zC,OAAO+mF,eAAexhI,EAAQR,EAAOiiI,EAAUC,GAC7C76H,IACT,EACA+yC,IAAK,SAAU55C,EAAQR,EAAOiiI,EAAUC,GAEtC,OADA76H,KAAK4zC,OAAOknF,eAAe3hI,EAAQR,EAAOiiI,EAAUC,GAC7C76H,IACT,EACAsgI,UAAW,SAAU3nI,EAAOiiI,GAE1B,OADA56H,KAAK4zC,OAAO4nF,kBAAkB7iI,EAAOiiI,GAC9B56H,IACT,EACA+zI,YAAa,SAAUp7I,EAAOiiI,GAE5B,OADA56H,KAAK4zC,OAAO8nF,kBAAkB/iI,EAAOiiI,GAC9B56H,IACT,EACAwzC,QAAS,SAAUn6C,EAAMpD,EAAM6lI,GAE7B,OADA97H,KAAK4zC,OAAOioF,mBAAmBxiI,EAAMpD,EAAM6lI,GACpC97H,IACT,EACA+mD,MAAO,SAAU5pD,GACf,IAAIgpC,EAAOnmC,KACX,OAAOxG,YAAW,WACZ2sC,EAAKs2C,UACPt/E,GAEJ,GAAG6C,KAAK41B,QAAQmxB,MAClB,EACAqD,UAAW,WACT,IAAI9zD,EAEFkxC,EAAU,CAAC,EACXvnC,EAAMD,KAAKy+B,SAASjoC,OACtB,IAAKF,EAAI,EAAGA,EAAI2J,EAAK3J,GAAK,EAExBkxC,EADoC,KAAxBxnC,KAAKy+B,SAASnoC,GAAGylC,GAAY/7B,KAAKy+B,SAASnoC,GAAGylC,GAAK,WAAazlC,GACvD,CACnBiE,MAAOyF,KAAKy+B,SAASnoC,GAAG+nC,UAAUi2B,QAGtC,OAAO9sB,CACT,EACAq4F,mBAAoB,SAAUxmI,GAC5B,IAAIghI,EAUJ,OATIr6H,KAAK6rH,YAAc7rH,KAAK6rH,WAAWr1H,QACrCwJ,KAAK6rH,WAAWlwH,MAAK,SAAUq4I,GAC7B,OAAIA,EAAI36I,OAASA,IACfghI,EAAY2Z,GACL,EAGX,IAEK3Z,CACT,EAIA8T,oBAAqB,SAAU90I,EAAMorD,GACnC,IACEwvF,EADE5Z,EAAYr6H,KAAK6/H,mBAAmBxmI,GAExC,GAAIghI,EACF,OAAOA,EAET,OAAQhhI,GACN,IAAK,SACH46I,EAAS/oB,EAAa8D,KAAK1xH,OAAO,CAAC,EAAG0C,KAAK41B,QAAQ1O,OAAQu9B,GAC3D41E,EAAY,IAAInP,EAAaW,WAAW3kG,OAAO+sH,GAC/C,MACF,IAAK,iBACH5Z,EAAY,IAAInP,EAAaW,WAAW6W,cAAc1iI,KAAK41B,QAAQ8sG,eACnE,MACF,IAAK,WACHrI,EAAY,IAAInP,EAAaW,WAAWwb,SACxC,MACF,IAAK,eACHhN,EAAY,IAAInP,EAAaW,WAAWwc,aAAa5jF,GACrD,MACF,IAAK,WACH41E,EAAY,IAAInP,EAAaW,WAAWgd,SAAS7oI,KAAK41B,QAAQizG,UAC9D,MACF,IAAK,WACHxO,EAAY,IAAInP,EAAaW,WAAWsd,SAAS1kF,GACjD,MACF,IAAK,mBACH41E,EAAY,IAAInP,EAAaW,WAAW8c,iBAAiB3oI,KAAK41B,QAAQ+yG,kBACtE,MACF,IAAK,QACHtO,EAAY,IAAInP,EAAaW,WAAWygB,MAAMtsI,KAAK41B,QAAQ02G,OAC3D,MACF,IAAK,cACHjS,EAAY,IAAInP,EAAaW,WAAWtf,YAAYvsG,KAAK41B,QAAQ22E,aACjE,MACF,QAGM2e,EAAaW,WAAW9pF,OAAOu8F,gBAAgBjlI,KAC7CorD,GACFwvF,EAAS/oB,EAAa8D,KAAKhzG,SAAS,CAAC,EAAGyoC,EAAMymE,EAAaW,WAAW9pF,OAAOrrC,UAAUslB,SAAS3iB,IAChGghI,EAAY,IAAInP,EAAaW,WAAW9pF,OAAOkyG,IAE/C5Z,EAAY,IAAInP,EAAaW,WAAW9pF,OAAO1oC,IAOvD,OAHIghI,GACFr6H,KAAK6rH,WAAW/0H,KAAK66I,EAActX,EAAWhhI,EAAM2G,OAE/Cq6H,CACT,EACA6Z,qBAAsB,WACpBl0I,KAAKwvI,yBAA0B,CACjC,EACA2E,sBAAuB,WACrBn0I,KAAKwvI,yBAA0B,CACjC,EACArO,eAAgB,WACd,IAAIvB,EAAU5/H,KAAK6/H,mBAAmB,WAItC,OAHID,GACFA,EAAQtK,aAEHt1H,IACT,EAGAu1H,kBAAmB,SAAU19D,GAC3B,IACE1yD,EACA45H,EAAa,MAGf55H,EALiB,gBAKEiV,KAAKy9C,MAEtBA,EAAS1yD,EAAM,IAEjB,IACE45H,EAAa/+H,KAAK41B,QAAQsB,cAAcq+F,kBAAkB19D,EAC5D,CAAE,MAAOs0D,GACP4S,EAAa,IACf,CACA,OAAOA,CACT,EACAF,WAAY,SAAUhnE,EAAQpT,GAE5B,IACEt/C,EACA4V,EAuBF,OAlBA5V,EAPiB,gBAOEiV,KAAKy9C,KAGtB73D,KAAK6gI,gBAEL7gI,KAAKo0I,oBACLr5H,EAASw4H,EAAmB38I,KAAKoJ,KAAMmF,EAAM,GAAIs/C,GAEjDzkD,KAAKkhI,oBAELnmH,EAASw4H,EAAmB38I,KAAKoJ,KAAM63D,EAAQpT,GAIlC,wBAAXoT,GAA+C,sBAAXA,GACtCqzD,EAAa8D,KAAKwD,aAAaxyH,KAAK41B,QAAQsB,cAAel3B,KAAK84H,4BAElE94H,KAAKmhI,iBACEpmH,CACT,EACA+9G,yBAA0B,SAAU1I,GAIlC,YAHc72H,IAAV62H,IACFA,EAAQpwH,KAAK41B,QAAQygG,cAAc1F,eAAeE,WAAW,IAExD3F,EAAal5E,UAAU8mF,yBAAyB1I,EACzD,EACAgkB,kBAAmB,WACjB,IAAI1a,EAAWxO,EAAal5E,UAAUskF,oBAAoBt2H,KAAK41B,QAAQygG,eACvE,GAAIqD,EAAU,CAEZ,KAAoC,IAA7BA,EAASjzF,SAASjwC,QACvBkjI,EAAWA,EAASjzF,SAAS,GAE/BzmC,KAAKmkI,cAAczK,EACrB,CACF,EACAyK,cAAe,SAAUhtE,GACvB+zD,EAAal5E,UAAU++E,WAAW55D,EAASn3D,KAAK41B,QAAQsB,eACxD,IAAIm9G,EAAanpB,EAAal5E,UAAUskF,oBAAoBt2H,KAAK41B,QAAQygG,eACrEge,GACFr0I,KAAK4zC,OAAOu0D,aAAaksC,EAE7B,EACAxW,kBAAmB,WACjB,IAAIyW,EAUJ,OATAt0I,KAAKy+B,SAAS9iC,MAAK,SAAUw7D,GAO3B,OALKm9E,GAAWn9E,EAAQpjC,aAAa,yBACnCugH,EAAUn9E,KAIHm9E,CACX,GAAGt0I,MACIs0I,CACT,EAGA/d,gBAAiB,WACf,IAAIkZ,EAAmBvkB,EAAal5E,UAAUskF,oBAAoBt2H,KAAK41B,QAAQygG,eAC7Eke,EAAuBv0I,KAAKy+B,SAAS3xB,QAAQ2iI,GAC7CjZ,EAAiB,KAOnB,OANI+d,GAAwB,IAC1B/d,EAAiBtL,EAAal5E,UAAUukF,gBAAgBkZ,EAAkBzvI,KAAK41B,QAAQsB,gBAElE,OAAnBs/F,GAAoD,IAAzB+d,IAC7B/d,EAAe+d,qBAAuBA,GAEjC/d,CACT,EACAqK,cAAe,WACb7gI,KAAKw2H,eAAiBx2H,KAAKu2H,iBAC7B,EAGAY,gBAAiB,SAAUX,EAAgBY,GACzC,GAAKZ,EAAL,CAGA,IAAIge,EAAkBx0I,KAAKy+B,SAAS+3F,EAAe+d,sBAAwB,GAC3ErpB,EAAal5E,UAAUmlF,gBAAgBX,EAAgBge,EAAiBx0I,KAAK41B,QAAQsB,cAAekgG,EAFpG,CAGF,EACA8J,iBAAkB,WAChBlhI,KAAKm3H,gBAAgBn3H,KAAKw2H,eAC5B,EACAhJ,WAAY,SAAU/oE,GACpB,IAEEgwF,EAFEC,EAAgBxpB,EAAal5E,UAAUskF,oBAAoBt2H,KAAK41B,QAAQygG,eAC1Ese,EAAc,CAAC,EAIjB,IAA8C,IAA1C30I,KAAKy+B,SAAS3xB,QAAQ4nI,GAA1B,CAGA,IAOE,GANA10I,KAAK4zC,OAAO2nF,mBAAmB,iBAE3B92E,EAAKuH,KACPk/D,EAAa8D,KAAK4F,WAAW,6BAA8B,SAAU,UAEvE6f,EAAYhwF,EAAKuH,KAAOvH,EAAKlqD,QACZk6I,EAAUngF,OAAO99D,OAAS,EAAG,CAC5C,IAAIo+I,EAAmB50I,KAAK41B,QAAQygG,cAAc1F,eAClD,GAAIikB,EAAkB,CACpB,IAEEC,EACAC,EACAC,EACAtnB,EALEunB,EAAYJ,EAAiB/jB,WAAW,GAC1CC,EAA0BkkB,EAAUlkB,wBAsBtC,GAVwC,IAApCkkB,EAAUhe,aAAa3jG,UAAwD,IAAtC2hH,EAAUre,eAAetjG,UAA4C,IAA1B2hH,EAAUhkB,aAAqBgkB,EAAUre,eAAer2F,aAAe00G,EAAUhe,eACvKlG,EAA0BkkB,EAAUhe,cAEtC8d,EAA8B5pB,EAAa8D,KAAKoF,yBAAyB4gB,EAAUre,gBACnFoe,EAA4B7pB,EAAa8D,KAAKoF,yBAAyB4gB,EAAUhe,cAMxC,IAArClG,EAAwBz9F,UAAiE,IAA/Cy9F,EAAwBt6F,YAAYhgC,QAAgBs+I,IAAgCC,EAA2B,CAC3J,IAAI70E,EAAgB40E,GAA+BJ,EACjDtiG,EAAWpyC,KAAK41B,QAAQsB,cAAcuZ,yBAKxCzwC,KAAK6+H,WAAW,UAChBgW,EAAoB70I,KAAKu2H,kBACzBnkF,EAAS14C,YAAYwmE,EAAcvvB,WAAU,IACzC+jG,IAAkBx0E,EAWpBgrD,EAAal5E,UAAUvV,OAAOz8B,KAAK41B,QAAQsB,cAAegpC,EAAc5/B,WAAY,EAAG4/B,EAAc3/B,UAAgD,IAArC2/B,EAAc3/B,UAAUlN,SAAiB6sC,EAAc3/B,UAAU7J,UAAUlgC,OAAS0pE,EAAc3/B,UAAUjF,WAAW9kC,QAEvO00H,EAAal5E,UAAUvV,OAAOz8B,KAAK41B,QAAQsB,cAAegpC,EAAe,EAAGA,EAAeA,EAAc5kC,WAAW9kC,QAEtH,IAAIy+I,EAA4Bj1I,KAAKu2H,kBASZ,KARzB9I,EAAYvC,EAAa8D,KAAKrB,8BAA8B3tH,KAAK41B,QAAQsB,cAAekb,EAAU,CAChGjS,MAAO00G,EAAkB10G,MAAQ80G,EAA0B90G,MAC3DzK,IAAKm/G,EAAkBn/G,IAAMu/G,EAA0B90G,MACvDo0G,qBAAsBM,EAAkBN,wBAK5B/9I,UACZ47C,EAAWpyC,KAAK41B,QAAQsB,cAAcuZ,0BAC7B/2C,YAAYo3H,EAAwBngF,WAAU,IACvD88E,EAAY,CAACr7E,EAAS9R,WAAWA,WAAY8R,EAAS9R,WAAWC,YAInE2qF,EAAa8D,KAAKxB,WAAWxtH,KAAK41B,QAAQsB,cAAeu2F,EAAWgnB,EAAUngF,QAG9E,IAAI4gF,GAA2B9iG,EAAS9R,WAAWjC,UAAUl5B,MAAM,SAAW,CAAC,KAAK,GAAG3O,OAGvF00H,EAAa8D,KAAKmB,kBAAkBnwH,KAAK41B,QAAQsB,cAAekb,EAAS9R,WAAWjC,UAAUj5B,QAAQ,OAAQ,KAC9GyvI,EAAkB10G,OAAS+0G,EAC3BL,EAAkBn/G,KAAOw/G,EACzBl1I,KAAKm3H,gBAAgB0d,EACvB,MACE70I,KAAK41B,QAAQsB,cAAcu5F,YAAY,cAAc,EAAOgkB,GAE1Dz0I,KAAK41B,QAAQu/G,aAA+B,WAAhB1wF,EAAKtrD,OACnC+xH,EAAa8D,KAAK8C,eAAe5G,EAAal5E,UAAU2/E,kBAAkB3xH,KAAK41B,QAAQsB,eAAgBu9G,GAEvGvpB,EAAa8D,KAAKiD,kBAAkB/G,EAAal5E,UAAU2/E,kBAAkB3xH,KAAK41B,QAAQsB,eAAgBu9G,GAExGhwF,EAAK0tE,aACPjH,EAAa8D,KAAKkD,kBAAkBhH,EAAal5E,UAAU2/E,kBAAkB3xH,KAAK41B,QAAQsB,eAAgButB,EAAK0tE,YAEnH,CACF,CAEA,GAAInyH,KAAK41B,QAAQu/G,aAA+B,WAAhB1wF,EAAKtrD,QAAuBsrD,EAAK0tE,YAAa,EAC5EwiB,EAAc30I,KAAK41B,QAAQsB,cAAcu9D,YAAY,eACzC2gD,UAAU,SAAS,GAAM,EAAMp1I,KAAK41B,QAAQygG,eACxD,IAAK,IAAI//H,EAAI,EAAG2J,EAAMD,KAAKy+B,SAASjoC,OAAQF,EAAI2J,EAAK3J,GAAK,EACxD0J,KAAKy+B,SAASnoC,GAAGq+F,cAAcggD,EAEnC,CACF,CAAE,QACA30I,KAAK4zC,OAAO0nF,kBAAkB,gBAChC,CAEAt7H,KAAK4zC,OAAOioF,mBAAmB,gBAAiB8Y,EAAaD,EA9G7D,CA+GF,EACA/J,WAAY,SAAU72G,GACpB9zB,KAAK6/H,mBAAmB,SAAS8K,WAAW72G,EAC9C,EACA23G,UAAW,SAAU3xF,EAAMlkB,GACzB51B,KAAK6/H,mBAAmB,SAAS4L,UAAU3xF,EAAMlkB,EACnD,EACA00D,WAAY,SAAUxwC,EAAM9rB,GAE1B,GADAA,EAAQA,GAAS,EACbhuB,KAAKy+B,SAASzQ,GAAQ,CACxB,IAAI70B,EAAS6G,KAAKy+B,SAASzQ,GAC3B70B,EAAOklC,UAAYyb,EACnB95C,KAAKq1I,oBAAoBl8I,EAC3B,CACF,EACAm8I,WAAY,SAAUtnH,GAEpB,OADAA,EAAQA,GAAS,EACbhuB,KAAKy+B,SAASzQ,GACThuB,KAAKy+B,SAASzQ,GAAOqQ,UAAUi2B,OAEjC,IACT,EACA+gF,oBAAqB,SAAUvZ,GAC7BA,EAAWA,GAAY5Q,EAAal5E,UAAUskF,oBAAoBt2H,KAAK41B,QAAQygG,eAC/Er2H,KAAK4zC,OAAOoqF,YAAYlC,EAAU,CAChC3iI,OAAQ2iI,EACR5mF,cAAe4mF,GAEnB,EACA0W,aAAc,SAAUr7E,GAKtB,GAAIA,EAAJ,CACE,IAAInpC,EAAQhuB,KAAKy+B,SAAS3xB,QAAQqqD,IACnB,IAAXnpC,GACFhuB,KAAKsqF,WAAWyoD,EAAe57E,EAAQpjC,aAAa,wBAAyB/F,EAGjF,MACAhuB,KAAKy+B,SAASnmB,SAAQ,SAAUwkB,EAAI4D,GAClC1gC,KAAKsqF,WAAWyoD,EAAej2G,EAAG/I,aAAa,wBAAyB2M,EAC1E,GAAG1gC,KACL,EACA8zI,YAAa,SAAUz/G,GAErB,IAAIoK,EAAW+yG,EAAoBn9G,EAAUr0B,KAAK41B,QAAQsB,eAAe,GAGzE,GAAwB,IAApBuH,EAASjoC,OACX,OAAO,EAETioC,EAASnmB,SAAQ,SAAU6+C,GAEzBA,EAAUu1E,EAAY91I,KAAKoJ,KAAMm3D,EAASn3D,KAAK+7B,IAG/C/7B,KAAKy+B,SAAS3nC,KAAKqgE,GAGnBn3D,KAAKwzC,QAAQ,aAAc,CACzBr6C,OAAQg+D,EACRjiB,cAAeiiB,GACdA,EACL,GAAGn3D,KACL,EACAu1I,eAAgB,SAAUlhH,GAExB,IACEmhH,EADahE,EAAoBn9G,EAAUr0B,KAAK41B,QAAQsB,eACpCj6B,KAAI,SAAU6/B,GAEhC,OAAIA,EAAG/I,aAAa,8BAAgC+I,EAAG9I,WAC9C8I,EAAG9I,WAAWgK,cAAc,kCAAoClB,EAAG/I,aAAa,6BAA+B,MAE/G+I,CAEX,IACF98B,KAAKy+B,SAAWz+B,KAAKy+B,SAASjZ,QAAO,SAAU2xC,GAE7C,OAAmC,IAA/Bq+E,EAAS1oI,QAAQqqD,KACnBn3D,KAAK4zC,OAAO4pF,eAAermE,GACvBA,EAAQpjC,aAAa,8BACvB29G,EAAuBv6E,GAGzBn3D,KAAKwzC,QAAQ,gBAAiB,CAC5Br6C,OAAQg+D,EACRjiB,cAAeiiB,GACdA,IACI,EAGX,GAAGn3D,KACL,GAEFkrH,EAAauqB,qBAAuB,SAAUt+E,GAC5C,IAAInpC,EAAQmpC,EAAQpjC,aAAa,mCAC/Bi/B,EAAMmE,GAAWA,EAAQjgC,gBAAkBigC,EAAQjgC,cAAcuG,aAAe05B,EAAQjgC,cAAcuyB,cACxG,OAAIuJ,GAAOA,EAAI4yE,gBAAkB5yE,EAAI4yE,eAAe53G,GAC3CglC,EAAI4yE,eAAe53G,GAErB,IACT,CACD,CA1lCD,GA8lCEk9F,EAAax0H,UAAUslB,SAAW,CAChC05H,kBAAmB,8BACnB9W,cAAc,EACd73E,MAAO,EACP+pF,eAAe,EACfC,qBAAqB,EACrBkC,oBAAoB,EACpBN,gBAAgB,EAChBtL,UAAU,EACVzD,mBAAmB,EACnBvN,cAAe/6H,OACf47B,cAAel/B,SACfm9I,aAAa,EACbtpB,WAAY,CAAC,EACb+mB,YAAY,GAGhB1nB,EAAayqB,mBAAqB,SAAUC,GAC1C,IAAI3nI,EAAQ2nI,EAAQ3nI,MAAM,KACxB+jB,EAAU/jB,EAAM,GAAGA,MAAM,KACzB4nI,EAAa5nI,EAAMzX,OAAS,EAAIyX,EAAM,GAAK,GAC7C,MAAO,CACL6nI,MAAOzlI,SAAS2hB,EAAQ,GAAI,IAC5B+jH,MAAO1lI,SAAS2hB,EAAQ,GAAI,IAC5BgkH,SAAU3lI,SAAS2hB,EAAQ,GAAI,IAC/B6jH,WAAYA,EACZz5I,SAAU,WACR,MAAO,CAAC41B,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAAIjwB,KAAK,MAAQ8zI,EAAa,IAAMA,EAAa,GAC3F,EAEJ,EACA3qB,EAAal5F,QAAUk5F,EAAayqB,mBAAmB/+I,KAAKoJ,KAE/C,UAENkrH,CACT,CA/4MS,G,mDC1VT7zH,EAAOD,QAAU,SAAUgjB,GACzB,IACE,QAASA,GACX,CAAE,MAAO3hB,GACP,OAAO,CACT,CACF,C,+BCNA,IAAIw9I,EAAQ,EAAQ,IAGpB5+I,EAAOD,SAAW6+I,GAAM,WAEtB,OAA+E,IAAxEx/I,OAAOwD,eAAe,CAAC,EAAG,EAAG,CAAEE,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,G,+BCNA,IAAI+7I,EAAc,EAAQ,IACtBltH,EAAW,EAAQ,KAEnBryB,EAAiBu/I,EAAY,CAAC,EAAEv/I,gBAKpCU,EAAOD,QAAUX,OAAOw8B,QAAU,SAAgBykE,EAAI78F,GACpD,OAAOlE,EAAeqyB,EAAS0uE,GAAK78F,EACtC,C,iBCXA,IAAI0rE,EAGJA,EAAI,WACF,OAAOvmE,IACT,CAFI,GAGJ,IAEEumE,EAAIA,GAAK,IAAIlkE,SAAS,cAAb,EACX,CAAE,MAAO9K,GAEe,kBAAX+D,SAAqBirE,EAAIjrE,OACtC,CAMAjE,EAAOD,QAAUmvE,C,oCCjBjB,IAAI4vE,EAAa,EAAQ,GACrB/vB,EAAe,EAAQ,IAEvBC,EAAcD,EAAazsH,IAE/BtC,EAAOD,QAAUgvH,EAAaE,WAAa,SAAU5uB,GACnD,MAAoB,iBAANA,EAAwB,OAAPA,EAAcy+C,EAAWz+C,IAAOA,IAAO2uB,CACxE,EAAI,SAAU3uB,GACZ,MAAoB,iBAANA,EAAwB,OAAPA,EAAcy+C,EAAWz+C,EAC1D,C,mBCVA,QAaI,EAQD,WACD,IAAI0+C,EAAS,SACXC,EAAW,WACXC,EAAY,YAIVC,EAAqB,CAAC,iBAAkB,cAAe,eAAgB,YAAa,YAAa,2BAGjGC,EAAkB,CAAC,WAAY,iBAAkB,gBAAiB,SAAU,eAAgB,cAAe,WAAY,aAAc,qBAAsB,wBAAyB,iBAAkB,kBAAmB,gBAAiB,aAAc,mBAAoB,aAAc,WAAY,UACtSC,EAAsB,CAAC,iBAAkB,eAAgB,cAAe,gBAAiB,WAAY,QAGrGC,EAAmB,CAAC,WAAY,mBAAoB,YAAa,oBAAqB,gBAAiB,SAAU,cAAe,yBAMpI,SAASC,EAAa38I,EAAGzB,GACvB,IAAIiC,SAAWR,EAAEzB,GACjB,OAAOiC,GAAK67I,KAAe77I,GAAK47I,IAAUp8I,EAAEzB,KAAY,WAALiC,CACrD,CACA,SAASo8I,EAAa58I,EAAGzB,GACvB,eAAiByB,EAAEzB,IAAM69I,IAAUp8I,EAAEzB,GACvC,CACA,SAASs+I,EAAe78I,EAAGzB,GACzB,cAAcyB,EAAEzB,IAAM+9I,CACxB,CAGA,SAASQ,EAA2BC,GAClC,OAAO,SAAU/8I,EAAGi8C,GAElB,IADA,IAAI3/C,EAAI2/C,EAAMz/C,OACPF,KACL,IAAKygJ,EAAS/8I,EAAGi8C,EAAM3/C,IACrB,OAAO,EAGX,OAAO,CACT,CACF,CAGA,IAAI0gJ,EAAiBF,EAA2BH,GAC5CM,EAAiBH,EAA2BF,GAC5CM,EAAoBJ,EAA2BD,GACnD,SAASM,EAAY/mB,GACnB,OAAOA,GAAS4mB,EAAe5mB,EAAOsmB,IAAqBQ,EAAkB9mB,EAAOqmB,EACtF,CACA,SAASW,EAAQvjH,GACf,OAAO+iH,EAAa/iH,EAAK,QAAUA,EAAImc,KAAOnc,EAAImI,qBAAqB,QAAQ,EACjF,CACA,IA2DI1+B,EAkEA+5I,EAtHAtgJ,EAAU,CAAC,EACXugJ,SAAmBh8I,QAAUg7I,UAAoBt+I,UAAYs+I,EAC7DtnB,EAAO,CACT2nB,aAAcA,EACdC,aAAcA,EACdC,eAAgBA,EAChBG,eAAgBA,EAChBC,eAAgBA,EAChBC,kBAAmBA,EACnBC,YAAaA,EACbC,QAASA,EACT9+H,QAlBY,GAAGA,QAAU,SAAUpb,EAAK8H,GACxC9H,EAAIob,QAAQtT,EACd,EAAI,SAAU9H,EAAK8H,GACjB,IAAK,IAAI1O,EAAI,EAAG2J,EAAM/C,EAAI1G,OAAQF,EAAI2J,IAAO3J,EAC3C0O,EAAK9H,EAAI5G,GAAIA,EAEjB,GAcIihJ,EAAM,CACRvlH,QAAS,QACTyxE,aAAa,EACb6zC,UAAWA,EACXE,WAAW,EACXxoB,KAAMA,EACNyoB,SAAU,CAAC,EACX1gJ,QAASA,EACToK,OAAQ,CACNu2I,aAAa,EACbC,aAAa,EACbC,iBAAiB,EACjBC,sBAAuBC,qBAAuBxB,GAAmBwB,sBAGrE,SAASC,EAAWx2I,UACPnG,SAAWk7I,GAAaK,EAAav7I,QAAS,QACvDA,QAAQ48I,IAAIz2I,EAEhB,CACA,SAAS02I,EAAW12I,EAAK22I,GACnBZ,GAAaY,EACfC,MAAM52I,GAENw2I,EAAWx2I,EAEf,CACA,SAAS2mC,EAAKuhE,GACZ8tC,EAAI9zC,aAAc,EAClB8zC,EAAIC,WAAY,EAChBS,EAAW,uDAAyDxuC,EAAQ8tC,EAAIp2I,OAAOu2I,YACzF,CAEA,SAASp2I,EAAKC,GACZ02I,EAAW,kBAAoB12I,EAAKg2I,EAAIp2I,OAAOw2I,YACjD,CAHAJ,EAAIrvG,KAAOA,EAIXqvG,EAAIj2I,KAAOA,EAIP,CAAC,EAAE3K,gBACLq4H,EAAK1xH,OAASA,EAAS,SAAUZ,EAAKu5C,EAAOlgB,GAC3C,IAAI/7B,EAAGzB,EACP,IAAK,IAAIjC,KAAK2/C,EACRA,EAAMt/C,eAAeL,KACvB0D,EAAI0C,EAAIpG,GACRiC,EAAI09C,EAAM3/C,GACNy/B,GAAc,OAAN/7B,GAA0B,iBAALA,GAAuB,OAANzB,GAA0B,iBAALA,GACrE+E,EAAOtD,EAAGzB,GAAG,GAEfmE,EAAIpG,GAAKiC,GAOb,OAHI09C,EAAMt/C,eAAe,cACvB+F,EAAIN,SAAW65C,EAAM75C,UAEhBM,CACT,EACAsyH,EAAKzmF,cAAgB,SAAU6vG,EAAcp8H,GAC3C,IAAI4Z,EAAU,CAAC,EAKf,OAJAt4B,EAAOs4B,EAAS5Z,GACZo8H,GACF96I,EAAOs4B,EAASwiH,GAEXxiH,CACT,GAEAsS,EAAK,gCAIFovG,GACHpvG,EAAK,mCAIP,WACE,IAAI1kB,EACJ,GAAI8zH,EAAW,CACb,IAAIx6G,EAAK9kC,SAASC,cAAc,OAChC6kC,EAAGpjC,YAAY1B,SAASC,cAAc,SACtC,IAAIuD,EAAQ,GAAGA,MACf,IACkD,GAA5CA,EAAM5E,KAAKkmC,EAAGxB,WAAY,GAAG,GAAGjI,WAClC7P,EAAU,SAAU60H,GAClB,OAAO78I,EAAM5E,KAAKyhJ,EAAW,EAC/B,EAEJ,CAAE,MAAO9gJ,GAAI,CACf,CACKisB,IACHA,EAAU,SAAU60H,GAElB,IADA,IAAIn7I,EAAM,GACD5G,EAAI,EAAG2J,EAAMo4I,EAAU7hJ,OAAQF,EAAI2J,IAAO3J,EACjD4G,EAAI5G,GAAK+hJ,EAAU/hJ,GAErB,OAAO4G,CACT,GAEF8xH,EAAKxrG,QAAUA,CAChB,CAxBD,GA6BI8zH,IACEX,EAAa3+I,SAAU,oBACzBq/I,EAAc,SAAU36I,EAAKm4F,EAAW+lC,GACtCl+H,EAAIihC,iBAAiBk3D,EAAW+lC,GAAU,EAC5C,EACS+b,EAAa3+I,SAAU,eAChCq/I,EAAc,SAAU36I,EAAKm4F,EAAW+lC,GACtCl+H,EAAI47I,YAAY,KAAOzjD,EAAW+lC,EACpC,EAEA1yF,EAAK,0EAEP8mF,EAAKqoB,YAAcA,GAErB,IAAIkB,EAAgB,GACpB,SAASC,EAAa1wG,GACpB,OAAOA,EAAG1uC,SAAW0uC,EAAGu7E,aAAev+F,OAAOgjB,EAChD,CAGA,SAASvT,IACP,GAAK+iH,IAAaC,EAAI9zC,YAAtB,CAGA,IAAIg1C,EACAC,GAAqB,EACvBC,GAAsB,EAIpBhC,EAAa3+I,SAAU,iBACzBygJ,EAAYzgJ,SAASs1G,cACjB0pC,EAAeyB,EAAWjC,IAAoBU,EAAkBuB,EAAWlC,KAC7EmC,GAAqB,IAGzB,IAAI1oG,EAAOonG,EAAQp/I,UACnB,GAAKg4C,GAAuC,QAA/BA,EAAKvb,SAASjsB,cAU3B,GANIwnC,GAAQ2mG,EAAa3mG,EAAM,oBAEzBmnG,EADJsB,EAAYzoG,EAAK4oG,qBAEfD,GAAsB,GAGrBD,GAAuBC,EAA5B,CAWA,IAAIthJ,EACJ,IAAK,IAAIwhJ,KARTtB,EAAI9zC,aAAc,EAClB8zC,EAAIE,SAAW,CACbiB,mBAAoBA,EACpBC,oBAAqBA,GAKA5hJ,GAChBM,EAASN,EAAQ8hJ,cAAwB12E,GAC5C9qE,EAAOk9B,KAAKl9B,EAAQkgJ,GAKxB,IAAK,IAAIjhJ,EAAI,EAAG2J,EAAMs4I,EAAc/hJ,OAAQF,EAAI2J,IAAO3J,EACrD,IACEiiJ,EAAcjiJ,GAAGihJ,EACnB,CAAE,MAAOzvG,GAEPiwG,EADe,+DAAiES,EAAa1wG,GAE/F,CAtBF,MAFEI,EAAK,kDAVLA,EAAK,wBAfP,CAmDF,CACA,SAAS4wG,EAAkBlkB,EAAYj+B,EAAat/F,GAC9CA,IACFu9H,GAAc,cAAgBv9H,EAAOgC,MAEvCk+I,EAAIj2I,KAAK,eAAiBszH,EAAa,8BAAgCj+B,EAAc,YACvF,CACA,SAASoiD,EAA+B7rG,EAAO0nF,EAAYj+B,EAAat/F,GACtE61C,EAAM0nF,GAAc,WAElB,OADAkkB,EAAkBlkB,EAAYj+B,EAAat/F,GACpC61C,EAAMypD,GAAa96F,MAAMqxC,EAAO8hF,EAAKxrG,QAAQ1nB,WACtD,CACF,CACAkzH,EAAK8pB,kBAAoBA,EACzB9pB,EAAK+pB,+BAAiCA,EAGtCxB,EAAIhjH,KAAOA,EAGXgjH,EAAIyB,gBAAkB,SAAUpe,GAC1B2c,EAAI9zC,YACNm3B,EAAS2c,GAETgB,EAAczhJ,KAAK8jI,EAEvB,EACA,IAAIqe,EAAgB,GAIpB,SAASC,EAAKlmF,GACZA,EAAMA,GAAO13D,OACbi5B,IAGA,IAAK,IAAIj+B,EAAI,EAAG2J,EAAMg5I,EAAcziJ,OAAQF,EAAI2J,IAAO3J,EACrD2iJ,EAAc3iJ,GAAG08D,EAErB,CAKA,SAASmP,EAAO9oE,EAAM8/I,EAAcC,GAClCp5I,KAAK3G,KAAOA,EACZ2G,KAAKm5I,aAAeA,EACpBn5I,KAAKyjG,aAAc,EACnBzjG,KAAKw3I,WAAY,EACjBx3I,KAAKo5I,YAAcA,CACrB,CAkCA,SAASC,EAAahgJ,EAAM8/I,EAAcG,GACxC,IAAIC,EAAY,IAAIp3E,EAAO9oE,EAAM8/I,GAAc,SAAU9hJ,GACvD,IAAKA,EAAOosG,YAAa,CACvBpsG,EAAOosG,aAAc,EACrB,IACE61C,EAAS/B,EAAKlgJ,GACdA,EAAOmgJ,WAAY,CACrB,CAAE,MAAO1vG,GAEPiwG,EADmB,WAAa1+I,EAAO,qBAAuBm/I,EAAa1wG,IAEvEA,EAAG9lC,OACL+1I,EAAWjwG,EAAG9lC,MAElB,CACF,CACF,IAEA,OADAjL,EAAQsC,GAAQkgJ,EACTA,CACT,CA0BA,SAASC,IAAkB,CAG3B,SAASC,IAAsB,CAvG/BlC,EAAImC,gBAAkB,SAAU9e,GAC9Bqe,EAAcniJ,KAAK8jI,EACrB,EAUI0c,IACFC,EAAI2B,KAAO3B,EAAIoC,uBAAyBT,EACxCH,EAA+BxB,EAAK,yBAA0B,SAShEp1E,EAAOzrE,UAAY,CACjB69B,KAAM,WAEJ,IADA,IACkDqlH,EAAgBf,EAD9DgB,EAAsB75I,KAAKm5I,cAAgB,GACtC7iJ,EAAI,EAAG2J,EAAM45I,EAAoBrjJ,OAAoCF,EAAI2J,IAAO3J,EAAG,CAG1F,GAFAuiJ,EAAagB,EAAoBvjJ,KACjCsjJ,EAAiB7iJ,EAAQ8hJ,OACAe,aAA0Bz3E,GACjD,MAAM,IAAIzpE,MAAM,oBAAsBmgJ,EAAa,eAGrD,GADAe,EAAerlH,QACVqlH,EAAepC,UAClB,MAAM,IAAI9+I,MAAM,oBAAsBmgJ,EAAa,kBAEvD,CAGA74I,KAAKo5I,YAAYp5I,KACnB,EACAkoC,KAAM,SAAUuhE,GAGd,MAFAzpG,KAAKyjG,aAAc,EACnBzjG,KAAKw3I,WAAY,EACX,IAAI9+I,MAAM+wG,EAClB,EACAnoG,KAAM,SAAUC,GACdg2I,EAAIj2I,KAAK,UAAYtB,KAAK3G,KAAO,KAAOkI,EAC1C,EACAu3I,kBAAmB,SAAUlkB,EAAYj+B,GACvC4gD,EAAIj2I,KAAK,eAAiBszH,EAAa,cAAgB50H,KAAK3G,KAAO,8BAAgCs9F,EAAc,WACnH,EACAmjD,YAAa,SAAUv4I,GACrB,OAAO,IAAI7I,MAAM,kBAAoBsH,KAAK3G,KAAO,YAAckI,EACjE,GAqBFg2I,EAAI8B,aAAe,SAAUhgJ,GAE3B,IAAIigJ,EAAUH,EACU,GAApBr9I,UAAUtF,QACZ8iJ,EAAWx9I,UAAU,GACrBq9I,EAAe,KAEfG,EAAWx9I,UAAU,GACrBq9I,EAAer9I,UAAU,IAE3B,IAAIzE,EAASgiJ,EAAahgJ,EAAM8/I,EAAcG,GAG1C/B,EAAI9zC,aAAe8zC,EAAIC,WACzBngJ,EAAOk9B,MAEX,EACAgjH,EAAIwC,iBAAmB,SAAU1gJ,EAAM8/I,EAAcG,GACnDD,EAAahgJ,EAAM8/I,EAAcG,EACnC,EAOA/B,EAAIiC,eAAiBA,EACrBjC,EAAIyC,eAAiB,IAAIR,EAEzBjC,EAAI0C,mBAAqB,IAAIR,EAK7BlC,EAAIwC,iBAAiB,UAAW,IAAI,SAAUxC,EAAKlgJ,GACjD,IAAI6iJ,EAAQ,YACRlrB,EAAOuoB,EAAIvoB,KACXooB,EAAUpoB,EAAKooB,QAGdpoB,EAAKgoB,eAAeh/I,SAAU,CAAC,yBAA0B,gBAAiB,oBAC7EX,EAAO6wC,KAAK,2CAET8mF,EAAK2nB,aAAa3+I,SAAU,yBAC/BX,EAAO6wC,KAAK,gDAEd,IAAIpL,EAAK9kC,SAASC,cAAc,OAC3B+2H,EAAKgoB,eAAel6G,EAAI,CAAC,eAAgB,cAAe,eAAgB,IAC3EzlC,EAAO6wC,KAAK,qCAIT8mF,EAAK6nB,eAAe/5G,EAAI,cAC3BzlC,EAAO6wC,KAAK,yCAEd,IAAIwsF,EAAW18H,SAASu6C,eAAe,QAClCy8E,EAAKgoB,eAAetiB,EAAU,CAAC,YAAa,aAAc,aAAc,aAAc,eAA4G,IACrMr9H,EAAO6wC,KAAK,uCAQd,IAAIiyG,EAMJ,SAAUj9I,EAAKsD,GAEb,IADA,IAAIlK,EAAI4G,EAAI1G,OACLF,KACL,GAAI4G,EAAI5G,KAAOkK,EACb,OAAO,EAGX,OAAO,CACT,EAGA,SAAS45I,EAAgBxmH,GACvB,IAAIj5B,EACJ,cAAci5B,EAAKoD,cAAgBkjH,GAAsC,QAA5Bv/I,EAAKi5B,EAAKoD,eAAgC,gCAANr8B,CACnF,CACA,SAASulE,EAActsC,GACrB,IAAIwM,EAASxM,EAAKI,WAClB,OAA0B,GAAnBoM,EAAO/M,SAAgB+M,EAAS,IACzC,CACA,SAASi6G,EAAazmH,GAEpB,IADA,IAAIt9B,EAAI,EACDs9B,EAAOA,EAAK+7F,mBACfr5H,EAEJ,OAAOA,CACT,CACA,SAASgkJ,EAAc1mH,GACrB,OAAQA,EAAKP,UACX,KAAK,EACL,KAAK,GACH,OAAO,EACT,KAAK,EACL,KAAK,EACH,OAAOO,EAAKp9B,OACd,QACE,OAAOo9B,EAAK0H,WAAW9kC,OAE7B,CACA,SAAS+jJ,EAAkBvmB,EAAOC,GAChC,IACEl5H,EADEslE,EAAY,GAEhB,IAAKtlE,EAAIi5H,EAAOj5H,EAAGA,EAAIA,EAAEi5B,WACvBqsC,EAAUvpE,KAAKiE,GAEjB,IAAKA,EAAIk5H,EAAOl5H,EAAGA,EAAIA,EAAEi5B,WACvB,GAAImmH,EAAc95E,EAAWtlE,GAC3B,OAAOA,EAGX,OAAO,IACT,CACA,SAASy/I,EAAaC,EAAUC,EAAYC,GAE1C,IADA,IAAI5/I,EAAI4/I,EAAiBD,EAAaA,EAAW1mH,WAC1Cj5B,GAAG,CACR,GAAIA,IAAM0/I,EACR,OAAO,EAEP1/I,EAAIA,EAAEi5B,UAEV,CACA,OAAO,CACT,CACA,SAAS4mH,EAAiBH,EAAUC,GAClC,OAAOF,EAAaC,EAAUC,GAAY,EAC5C,CACA,SAASG,EAAqBjnH,EAAM6mH,EAAUE,GAG5C,IAFA,IAAIpiJ,EACFwC,EAAI4/I,EAAiB/mH,EAAOA,EAAKI,WAC5Bj5B,GAAG,CAER,IADAxC,EAAIwC,EAAEi5B,cACIymH,EACR,OAAO1/I,EAETA,EAAIxC,CACN,CACA,OAAO,IACT,CACA,SAASuiJ,EAAoBlnH,GAC3B,IAAIp5B,EAAIo5B,EAAKP,SACb,OAAY,GAAL74B,GAAe,GAALA,GAAe,GAALA,CAC7B,CAEA,SAASugJ,EAAoBnnH,GAC3B,IAAKA,EACH,OAAO,EAET,IAAIp5B,EAAIo5B,EAAKP,SACb,OAAY,GAAL74B,GAAe,GAALA,CACnB,CAEA,SAASygD,EAAYrnB,EAAMonH,GACzB,IAAI3sB,EAAW2sB,EAAcn5G,YAC3BzB,EAAS46G,EAAchnH,WAMzB,OALIq6F,EACFjuF,EAAOsa,aAAa9mB,EAAMy6F,GAE1BjuF,EAAO1mC,YAAYk6B,GAEdA,CACT,CAGA,SAASqnH,EAAcrnH,EAAM5F,EAAOktH,GAClC,IAAI9sB,EAAUx6F,EAAK+c,WAAU,GAM7B,GALAy9E,EAAQ+sB,WAAW,EAAGntH,GACtB4F,EAAKunH,WAAWntH,EAAO4F,EAAKp9B,OAASw3B,GACrCitB,EAAYmzE,EAASx6F,GAGjBsnH,EACF,IAAK,IAAW/9F,EAAP7mD,EAAI,EAAa6mD,EAAW+9F,EAAoB5kJ,MAEnD6mD,EAASvpB,MAAQA,GAAQupB,EAAS37B,OAASwM,GAC7CmvB,EAASvpB,KAAOw6F,EAChBjxE,EAAS37B,QAAUwM,GAGZmvB,EAASvpB,MAAQA,EAAKI,YAAcmpB,EAAS37B,OAAS64H,EAAazmH,MACxEupB,EAAS37B,OAIjB,OAAO4sG,CACT,CACA,SAASgtB,EAAYxnH,GACnB,GAAqB,GAAjBA,EAAKP,SACP,OAAOO,EACF,UAAWA,EAAKsD,eAAiBgjH,EACtC,OAAOtmH,EAAKsD,cACP,UAAWtD,EAAK57B,UAAYkiJ,EACjC,OAAOtmH,EAAK57B,SACP,GAAI47B,EAAKI,WACd,OAAOonH,EAAYxnH,EAAKI,YAExB,MAAM38B,EAAOyiJ,YAAY,0CAE7B,CACA,SAASuB,EAAUznH,GACjB,IAAIC,EAAMunH,EAAYxnH,GACtB,UAAWC,EAAI4J,aAAey8G,EAC5B,OAAOrmH,EAAI4J,YACN,UAAW5J,EAAI41B,cAAgBywF,EACpC,OAAOrmH,EAAI41B,aAEX,MAAMpyD,EAAOyiJ,YAAY,sCAE7B,CACA,SAASwB,EAAkBC,GACzB,UAAWA,EAASh0G,iBAAmB2yG,EACrC,OAAOqB,EAASh0G,gBACX,UAAWg0G,EAASllB,eAAiB6jB,EAC1C,OAAOqB,EAASllB,cAAcr+H,SAE9B,MAAMX,EAAOyiJ,YAAY,iEAE7B,CACA,SAAS0B,EAAgBD,GACvB,UAAWA,EAASllB,eAAiB6jB,EACnC,OAAOqB,EAASllB,cACX,UAAWklB,EAASh0G,iBAAmB2yG,EAC5C,OAAOqB,EAASh0G,gBAAgB9J,YAEhC,MAAMpmC,EAAOyiJ,YAAY,6DAE7B,CAGA,SAASxmH,EAAS52B,GAChB,OAAOA,GAAOsyH,EAAK2nB,aAAaj6I,EAAK,eAAiBsyH,EAAK4nB,aAAal6I,EAAK,WAC/E,CACA,SAAS++I,EAAmB/+I,EAAKrF,EAAQmgE,GACvC,IAAI3jC,EAcJ,GAbKn3B,EAKIsyH,EAAK6nB,eAAen6I,EAAK,YAChCm3B,EAAsB,GAAhBn3B,EAAI22B,UAA8C,UAA7B32B,EAAI26D,QAAQ7uD,cAA4B8yI,EAAkB5+I,GAAO0+I,EAAY1+I,GAIjG42B,EAAS52B,KAChBm3B,EAAMn3B,EAAI1E,UAVV67B,EAAM77B,UAYH67B,EACH,MAAMx8B,EAAOyiJ,YAAYtiF,EAAa,qDAExC,OAAO3jC,CACT,CACA,SAAS6nH,EAAiB9nH,GAExB,IADA,IAAIwM,EACGA,EAASxM,EAAKI,YACnBJ,EAAOwM,EAET,OAAOxM,CACT,CACA,SAAS+nH,EAAcC,EAAOC,EAASC,EAAOC,GAE5C,IAAIC,EAAO96G,EAAM+6G,EAAQC,EAAQnhJ,EACjC,GAAI6gJ,GAASE,EAEX,OAAOD,IAAYE,EAAU,EAAIF,EAAUE,GAAW,EAAI,EACrD,GAAIC,EAAQnB,EAAqBiB,EAAOF,GAAO,GAEpD,OAAOC,GAAWxB,EAAa2B,IAAU,EAAI,EACxC,GAAIA,EAAQnB,EAAqBe,EAAOE,GAAO,GAEpD,OAAOzB,EAAa2B,GAASD,GAAW,EAAI,EAG5C,KADA76G,EAAOq5G,EAAkBqB,EAAOE,IAE9B,MAAM,IAAIpjJ,MAAM,sDAMlB,IAFAujJ,EAASL,IAAU16G,EAAOA,EAAO25G,EAAqBe,EAAO16G,GAAM,OACnEg7G,EAASJ,IAAU56G,EAAOA,EAAO25G,EAAqBiB,EAAO56G,GAAM,IAGjE,MAAM7pC,EAAOyiJ,YAAY,mEAGzB,IADA/+I,EAAImmC,EAAKZ,WACFvlC,GAAG,CACR,GAAIA,IAAMkhJ,EACR,OAAQ,EACH,GAAIlhJ,IAAMmhJ,EACf,OAAO,EAETnhJ,EAAIA,EAAE8mC,WACR,CAGN,CAKA,IA6CIs6G,EA7CAC,GAAkB,EACtB,SAASC,EAAazoH,GAEpB,IAEE,OADIA,EAAKI,YACF,CACT,CAAE,MAAOz8B,GACP,OAAO,CACT,CACF,CAYA,SAAS+kJ,EAAY1oH,GACnB,IAAKA,EACH,MAAO,YAET,GAAIwoH,GAAmBC,EAAazoH,GAClC,MAAO,gBAET,GAAIknH,EAAoBlnH,GACtB,MAAO,IAAMA,EAAK39B,KAAO,IAE3B,GAAqB,GAAjB29B,EAAKP,SAAe,CACtB,IAAIkpH,EAAS3oH,EAAKmI,GAAK,QAAUnI,EAAKmI,GAAK,IAAM,GACjD,MAAO,IAAMnI,EAAKa,SAAW8nH,EAAS,WAAalC,EAAazmH,GAAQ,WAAaA,EAAK0H,WAAW9kC,OAAS,MAAQo9B,EAAKyK,WAAa,6BAA6B7iC,MAAM,EAAG,IAAM,GACtL,CACA,OAAOo4B,EAAKa,QACd,CACA,SAAS+nH,EAAyB5oH,GAGhC,IAFA,IACEq7F,EADE78E,EAAWgpG,EAAYxnH,GAAM6c,yBAE1Bw+E,EAAQr7F,EAAK0M,YAClB8R,EAAS14C,YAAYu1H,GAEvB,OAAO78E,CACT,CAaA,SAASqqG,EAAkB5oH,EAAKimB,EAAM4iG,GACpC,IAAI1sG,EAAOonG,EAAQvjH,GACfiJ,EAAKjJ,EAAI57B,cAAc,OAC3B6kC,EAAG4/G,gBAAkB,KAAOA,EACxB5iG,IACFhd,EAAGuB,UAAYyb,GAIjB,IAAI6iG,EAAiB3sG,EAAK1P,WAM1B,OALIq8G,EACF3sG,EAAK0K,aAAa5d,EAAI6/G,GAEtB3sG,EAAKt2C,YAAYojC,GAEZA,CACT,CACA,SAAS8/G,EAAWhpH,GAClB,OAAOA,EAAKI,WAAWC,YAAYL,EACrC,CACA,SAASipH,EAAa37G,GACpBlhC,KAAKkhC,KAAOA,EACZlhC,KAAK88I,MAAQ57G,CACf,CA2BA,SAAS67G,EAAe77G,GACtB,OAAO,IAAI27G,EAAa37G,EAC1B,CACA,SAAS87G,EAAYppH,EAAMpS,GACzBxhB,KAAK4zB,KAAOA,EACZ5zB,KAAKwhB,OAASA,CAChB,CAYA,SAASm4E,EAAasjD,GACpBj9I,KAAK2zB,KAAO3zB,KAAKi9I,GACjBj9I,KAAKi9I,SAAWA,EAChBj9I,KAAK5G,QAAU,iBAAmB4G,KAAKi9I,QACzC,EAvHA,WACE,IAAIngH,EAAK9kC,SAASC,cAAc,KAChC6kC,EAAGuB,UAAY,IACf,IAAIq2F,EAAW53F,EAAGwD,WAClBxD,EAAGuB,UAAY,SACf+9G,EAAkBC,EAAa3nB,GAC/B6iB,EAAIE,SAAS2E,gBAAkBA,CAChC,CAPD,UAoCW9gJ,OAAOmgD,kBAAoBy+F,EACpCiC,EAA2B,SAAUr/G,EAAIogH,GACvC,OAAO7B,EAAUv+G,GAAI2e,iBAAiB3e,EAAI,MAAMogH,EAClD,SACgBllJ,SAASy+B,gBAAgB0mH,cAAgBjD,EACzDiC,EAA2B,SAAUr/G,EAAIogH,GACvC,OAAOpgH,EAAGqgH,aAAergH,EAAGqgH,aAAaD,GAAY,EACvD,EAEA7lJ,EAAO6wC,KAAK,yDA0Bd20G,EAAanmJ,UAAY,CACvB0mJ,SAAU,KACVC,QAAS,WACP,QAASr9I,KAAK88I,KAChB,EACAnlI,KAAM,WACJ,IACIs3G,EAAOt3G,EADP5c,EAAIiF,KAAKo9I,SAAWp9I,KAAK88I,MAE7B,GAAI98I,KAAKo9I,SAEP,GADAnuB,EAAQl0H,EAAEulC,WAERtgC,KAAK88I,MAAQ7tB,MACR,CAEL,IADAt3G,EAAO,KACA5c,IAAMiF,KAAKkhC,QAAUvpB,EAAO5c,EAAE8mC,cACnC9mC,EAAIA,EAAEi5B,WAERh0B,KAAK88I,MAAQnlI,CACf,CAEF,OAAO3X,KAAKo9I,QACd,EACA7iG,OAAQ,WACNv6C,KAAKo9I,SAAWp9I,KAAK88I,MAAQ98I,KAAKkhC,KAAO,IAC3C,GASF87G,EAAYtmJ,UAAY,CACtB4mJ,OAAQ,SAAUhnI,GAChB,QAASA,GAAOtW,KAAK4zB,OAAStd,EAAIsd,MAAQ5zB,KAAKwhB,QAAUlL,EAAIkL,MAC/D,EACA8F,QAAS,WACP,MAAO,gBAAkBg1H,EAAYt8I,KAAK4zB,MAAQ,IAAM5zB,KAAKwhB,OAAS,IACxE,EACAplB,SAAU,WACR,OAAO4D,KAAKsnB,SACd,GAOFqyE,EAAajjG,UAAY,CACvB6mJ,eAAgB,EAChBC,sBAAuB,EACvBC,mBAAoB,EACpBC,4BAA6B,EAC7BC,cAAe,EACfC,kBAAmB,EACnBC,kBAAmB,GACnBC,sBAAuB,IAEzBnkD,EAAajjG,UAAU0F,SAAW,WAChC,OAAO4D,KAAK5G,OACd,EACAm+I,EAAIwG,IAAM,CACR5D,cAAeA,EACfC,gBAAiBA,EACjBl6E,cAAeA,EACfm6E,aAAcA,EACdC,cAAeA,EACfC,kBAAmBA,EACnBC,aAAcA,EACdI,iBAAkBA,EAClBC,qBAAsBA,EACtBC,oBAAqBA,EACrBC,oBAAqBA,EACrB9/F,YAAaA,EACbggG,cAAeA,EACfG,YAAaA,EACbC,UAAWA,EACXG,gBAAiBA,EACjBF,kBAAmBA,EACnBlE,QAASA,EACT9jH,SAAUA,EACVmoH,mBAAoBA,EACpBC,iBAAkBA,EAClBC,cAAeA,EACfU,aAAcA,EACdC,YAAaA,EACbH,yBAA0BA,EAC1BM,kBAAmBA,EACnBG,WAAYA,EACZJ,yBAA0BA,EAC1BO,eAAgBA,EAChBC,YAAaA,GAEfzF,EAAI59C,aAAeA,CACrB,IAKA49C,EAAIwC,iBAAiB,WAAY,CAAC,YAAY,SAAUxC,EAAKlgJ,GAC3D,IAAI0mJ,EAAMxG,EAAIwG,IACV/uB,EAAOuoB,EAAIvoB,KACXguB,EAAce,EAAIf,YAClBrjD,EAAe49C,EAAI59C,aACnBmhD,EAAsBiD,EAAIjD,oBAC1BT,EAAe0D,EAAI1D,aACnBO,EAAmBmD,EAAInD,iBACvBQ,EAAc2C,EAAI3C,YAClBO,EAAgBoC,EAAIpC,cACpBV,EAAgB8C,EAAI9C,cACpBJ,EAAuBkD,EAAIlD,qBAC3BP,EAAgByD,EAAIzD,cACpBH,EAAgB4D,EAAI5D,cACpBuB,EAAmBqC,EAAIrC,iBACvBU,EAAkB7E,EAAIE,SAAS2E,gBAC/BQ,EAAamB,EAAInB,WAMrB,SAASoB,EAA2BpqH,EAAMw8F,GACxC,OAAwB,GAAjBx8F,EAAKP,WAAkBunH,EAAiBhnH,EAAMw8F,EAAMuG,iBAAmBikB,EAAiBhnH,EAAMw8F,EAAM4G,cAC7G,CACA,SAASinB,EAAiB7tB,GACxB,OAAOA,EAAMp4H,UAAYojJ,EAAYhrB,EAAMuG,eAC7C,CACA,SAASunB,EAAa9tB,GACpB,OAAOsrB,EAAiBtrB,EAAMuG,eAChC,CACA,SAASwnB,EAAsBvqH,GAC7B,OAAO,IAAIopH,EAAYppH,EAAKI,WAAYqmH,EAAazmH,GACvD,CACA,SAASwqH,EAAqBxqH,GAC5B,OAAO,IAAIopH,EAAYppH,EAAKI,WAAYqmH,EAAazmH,GAAQ,EAC/D,CACA,SAASyqH,EAAqBzqH,EAAM74B,EAAGf,GACrC,IAAIskJ,EAAqC,IAAjB1qH,EAAKP,SAAiBO,EAAK0M,WAAa1M,EAYhE,OAXIknH,EAAoB//I,GAClBf,GAAKe,EAAEvE,OACTunJ,EAAI9iG,YAAYrnB,EAAM74B,GAEtBA,EAAEi5B,WAAW0mB,aAAa9mB,EAAW,GAAL55B,EAASe,EAAIkgJ,EAAclgJ,EAAGf,IAEvDA,GAAKe,EAAEugC,WAAW9kC,OAC3BuE,EAAErB,YAAYk6B,GAEd74B,EAAE2/C,aAAa9mB,EAAM74B,EAAEugC,WAAWthC,IAE7BskJ,CACT,CACA,SAASC,EAAgBC,EAAQC,EAAQC,GAGvC,GAFAC,EAAiBH,GACjBG,EAAiBF,GACbR,EAAiBQ,IAAWR,EAAiBO,GAC/C,MAAM,IAAI7kD,EAAa,sBAEzB,IAAIilD,EAAkBjD,EAAc6C,EAAO7nB,eAAgB6nB,EAAOxtB,YAAaytB,EAAOznB,aAAcynB,EAAOxtB,WACzG4tB,EAAgBlD,EAAc6C,EAAOxnB,aAAcwnB,EAAOvtB,UAAWwtB,EAAO9nB,eAAgB8nB,EAAOztB,aACrG,OAAO0tB,EAAyBE,GAAmB,GAAKC,GAAiB,EAAID,EAAkB,GAAKC,EAAgB,CACtH,CACA,SAASC,EAAaxnH,GAEpB,IADA,IAAIynH,EACKnrH,EAAwEorH,EAAlEC,EAAOhB,EAAiB3mH,EAAS84F,OAAO3/E,yBAAuC7c,EAAO0D,EAAS3f,QAAS,CAQrH,GAPAonI,EAAoBznH,EAAS4nH,6BAC7BtrH,EAAOA,EAAK+c,WAAWouG,GACnBA,IACFC,EAAc1nH,EAAS6nH,qBACvBvrH,EAAKl6B,YAAYolJ,EAAaE,IAC9BA,EAAYzkG,UAEO,IAAjB3mB,EAAKP,SAEP,MAAM,IAAIsmE,EAAa,yBAEzBslD,EAAKvlJ,YAAYk6B,EACnB,CACA,OAAOqrH,CACT,CACA,SAASG,EAAeC,EAAer6I,EAAMs6I,GAC3C,IAAI5nD,EAAI38F,EAIC64B,EAAM2rH,EAAf,IAHAD,EAAgBA,GAAiB,CAC/BhxG,MAAM,GAEyB1a,EAAOyrH,EAAc1nI,QACpD,GAAI0nI,EAAcH,6BAA8B,CAC9C,IAAmB,IAAfl6I,EAAK4uB,GAEP,YADA0rH,EAAchxG,MAAO,GAQrB,GAFA8wG,EADAG,EAAmBF,EAAcF,qBACAn6I,EAAMs6I,GACvCC,EAAiBhlG,SACb+kG,EAAchxG,KAChB,MAGN,MAIE,IADAopD,EAAKqmD,EAAIhB,eAAenpH,GACjB74B,EAAI28F,EAAG//E,QACZ,IAAgB,IAAZ3S,EAAKjK,GAEP,YADAukJ,EAAchxG,MAAO,EAM/B,CACA,SAASkxG,EAAcloH,GAErB,IADA,IAAI0nH,EACG1nH,EAAS3f,QACV2f,EAAS4nH,8BAEXM,EADAR,EAAc1nH,EAAS6nH,sBAEvBH,EAAYzkG,UAEZjjB,EAAS4R,QAGf,CACA,SAASu2G,EAAenoH,GACtB,IAAK,IAAI1D,EAAwEorH,EAAlEC,EAAOhB,EAAiB3mH,EAAS84F,OAAO3/E,yBAAuC7c,EAAO0D,EAAS3f,QAAS,CASrH,GARI2f,EAAS4nH,8BACXtrH,EAAOA,EAAK+c,WAAU,GACtBquG,EAAc1nH,EAAS6nH,qBACvBvrH,EAAKl6B,YAAY+lJ,EAAeT,IAChCA,EAAYzkG,UAEZjjB,EAAS4R,SAEU,IAAjBtV,EAAKP,SAEP,MAAM,IAAIsmE,EAAa,yBAEzBslD,EAAKvlJ,YAAYk6B,EACnB,CACA,OAAOqrH,CACT,CACA,SAASS,EAAgBtvB,EAAOuvB,EAAWn6H,GACzC,IACE5Z,EADEg0I,KAAqBD,IAAaA,EAAUnpJ,QAE5CqpJ,IAAiBr6H,EACjBo6H,IACFh0I,EAAQ,IAAInJ,OAAO,KAAOk9I,EAAU59I,KAAK,KAAO,OAElD,IAAIswC,EAAQ,GAoBZ,OAnBA+sG,EAAe,IAAIU,EAAc1vB,GAAO,IAAQ,SAAUx8F,GACxD,KAAIgsH,GAAoBh0I,EAAM/F,KAAK+tB,EAAKP,cAGpCwsH,GAAiBr6H,EAAOoO,IAA5B,CAKA,IAAImsH,EAAK3vB,EAAMuG,eACf,GAAI/iG,GAAQmsH,IAAMjF,EAAoBiF,IAAO3vB,EAAMY,aAAe+uB,EAAGvpJ,OAArE,CAGA,IAAIwpJ,EAAK5vB,EAAM4G,aACXpjG,GAAQosH,GAAMlF,EAAoBkF,IAA0B,GAAnB5vB,EAAMa,WAGnD5+E,EAAMv7C,KAAK88B,EALX,CANA,CAYF,IACOye,CACT,CACA,SAAS/qB,EAAQ8oG,GAEf,MAAO,KAD4B,oBAAjBA,EAAM6vB,QAAyB,QAAU7vB,EAAM6vB,WAC7C,IAAMlC,EAAIzB,YAAYlsB,EAAMuG,gBAAkB,IAAMvG,EAAMY,YAAc,KAAO+sB,EAAIzB,YAAYlsB,EAAM4G,cAAgB,IAAM5G,EAAMa,UAAY,IACnK,CAMA,SAAS6uB,EAAc1vB,EAAO8vB,GAG5B,GAFAlgJ,KAAKowH,MAAQA,EACbpwH,KAAKkgJ,gCAAkCA,GAClC9vB,EAAM+vB,UAAW,CACpBngJ,KAAK+/I,GAAK3vB,EAAMuG,eAChB32H,KAAKogJ,GAAKhwB,EAAMY,YAChBhxH,KAAKggJ,GAAK5vB,EAAM4G,aAChBh3H,KAAKqgJ,GAAKjwB,EAAMa,UAChB,IAAI/vF,EAAOkvF,EAAMU,wBACb9wH,KAAK+/I,KAAO//I,KAAKggJ,IAAMlF,EAAoB96I,KAAK+/I,KAClD//I,KAAKsgJ,2BAA4B,EACjCtgJ,KAAKugJ,OAASvgJ,KAAKwgJ,MAAQxgJ,KAAK88I,MAAQ98I,KAAK+/I,KAE7C//I,KAAKugJ,OAASvgJ,KAAK88I,MAAQ98I,KAAK+/I,KAAO7+G,GAAS45G,EAAoB96I,KAAK+/I,IAAoClF,EAAqB76I,KAAK+/I,GAAI7+G,GAAM,GAAlElhC,KAAK+/I,GAAGzkH,WAAWt7B,KAAKogJ,IACvGpgJ,KAAKwgJ,MAAQxgJ,KAAKggJ,KAAO9+G,GAAS45G,EAAoB96I,KAAKggJ,IAAwCnF,EAAqB76I,KAAKggJ,GAAI9+G,GAAM,GAAtElhC,KAAKggJ,GAAG1kH,WAAWt7B,KAAKqgJ,GAAK,GAElG,CACF,CACAP,EAAcppJ,UAAY,CACxB0mJ,SAAU,KACVN,MAAO,KACPyD,OAAQ,KACRC,MAAO,KACPF,2BAA2B,EAC3B59G,MAAO,WACL1iC,KAAKo9I,SAAW,KAChBp9I,KAAK88I,MAAQ98I,KAAKugJ,MACpB,EACAlD,QAAS,WACP,QAASr9I,KAAK88I,KAChB,EACAnlI,KAAM,WAEJ,IAAI63C,EAAUxvD,KAAKo9I,SAAWp9I,KAAK88I,MAcnC,OAbIttF,IACFxvD,KAAK88I,MAAQttF,IAAYxvD,KAAKwgJ,MAAQhxF,EAAQ3tB,YAAc,KAGxDi5G,EAAoBtrF,IAAYxvD,KAAKkgJ,kCACnC1wF,IAAYxvD,KAAKggJ,KAClBxwF,EAAUA,EAAQ7e,WAAU,IAAOwqG,WAAWn7I,KAAKqgJ,GAAI7wF,EAAQh5D,OAASwJ,KAAKqgJ,IAE5ErgJ,KAAKo9I,WAAap9I,KAAK+/I,KACxBvwF,EAAUA,EAAQ7e,WAAU,IAAOwqG,WAAW,EAAGn7I,KAAKogJ,MAItD5wF,CACT,EACAtmB,OAAQ,WACN,IACE/I,EACAzK,EAFE85B,EAAUxvD,KAAKo9I,UAGftC,EAAoBtrF,IAAaA,IAAYxvD,KAAK+/I,IAAMvwF,IAAYxvD,KAAKggJ,GAOvExwF,EAAQx7B,YACV4oH,EAAWptF,IAPbrvB,EAAQqvB,IAAYxvD,KAAK+/I,GAAK//I,KAAKogJ,GAAK,KACxC1qH,EAAM85B,IAAYxvD,KAAKggJ,GAAKhgJ,KAAKqgJ,GAAK7wF,EAAQh5D,SAE5Cg5D,EAAQ2rF,WAAWh7G,EAAOzK,EAAMyK,EAOtC,EAEA++G,2BAA4B,WAE1B,OAAOlB,EADOh+I,KAAKo9I,SACwBp9I,KAAKowH,MAClD,EACA+uB,mBAAoB,WAClB,IAAIsB,EACJ,GAAIzgJ,KAAKsgJ,2BACPG,EAAWzgJ,KAAKowH,MAAMe,cACbE,UAAS,OACb,CACLovB,EAAW,IAAIC,GAAMzC,EAAiBj+I,KAAKowH,QAC3C,IAAI5gE,EAAUxvD,KAAKo9I,SACfzmB,EAAiBnnE,EACnBwhE,EAAc,EACdgG,EAAexnE,EACfyhE,EAAYqpB,EAAc9qF,GACxBorF,EAAiBprF,EAASxvD,KAAK+/I,MACjCppB,EAAiB32H,KAAK+/I,GACtB/uB,EAAchxH,KAAKogJ,IAEjBxF,EAAiBprF,EAASxvD,KAAKggJ,MACjChpB,EAAeh3H,KAAKggJ,GACpB/uB,EAAYjxH,KAAKqgJ,IAEnBM,GAAiBF,EAAU9pB,EAAgB3F,EAAagG,EAAc/F,EACxE,CACA,OAAO,IAAI6uB,EAAcW,EAAUzgJ,KAAKkgJ,gCAC1C,EACA3lG,OAAQ,WACNv6C,KAAKowH,MAAQpwH,KAAKo9I,SAAWp9I,KAAK88I,MAAQ98I,KAAKugJ,OAASvgJ,KAAKwgJ,MAAQxgJ,KAAK+/I,GAAK//I,KAAKogJ,GAAKpgJ,KAAKggJ,GAAKhgJ,KAAKqgJ,GAAK,IAC/G,GAKF,IAAIO,EAAuB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAC1CC,EAAyB,CAAC,EAAG,EAAG,IAChCC,EAAoB,CAAC,EAAG,EAAG,GAAI,IAC/BC,EAAsB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC7CC,EAAoB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACxC,SAASC,EAAqBtB,GAC5B,OAAO,SAAU/rH,EAAM+mH,GAGrB,IAFA,IAAIngJ,EACFO,EAAI4/I,EAAiB/mH,EAAOA,EAAKI,WAC5Bj5B,GAAG,CAER,GADAP,EAAIO,EAAEs4B,SACF8mH,EAAcwF,EAAWnlJ,GAC3B,OAAOO,EAETA,EAAIA,EAAEi5B,UACR,CACA,OAAO,IACT,CACF,CACA,IAAIktH,EAAiCD,EAAqB,CAAC,EAAG,KAC1DE,EAAsBF,EAAqBH,GAC3CM,EAAmCH,EAAqB,CAAC,EAAG,GAAI,KAChEI,EAAqBJ,EAAqB,CAAC,IAC/C,SAASK,EAAsC1tH,EAAM2tH,GACnD,GAAIH,EAAiCxtH,EAAM2tH,GACzC,MAAM,IAAI5nD,EAAa,wBAE3B,CACA,SAAS6nD,EAAoB5tH,EAAM6tH,GACjC,IAAKtH,EAAcsH,EAAc7tH,EAAKP,UACpC,MAAM,IAAIsmE,EAAa,wBAE3B,CACA,SAAS+nD,EAAkB9tH,EAAMpS,GAC/B,GAAIA,EAAS,GAAKA,GAAUs5H,EAAoBlnH,GAAQA,EAAKp9B,OAASo9B,EAAK0H,WAAW9kC,QACpF,MAAM,IAAImjG,EAAa,iBAE3B,CACA,SAASgoD,EAA6B3tB,EAAOC,GAC3C,GAAIitB,EAA+BltB,GAAO,KAAUktB,EAA+BjtB,GAAO,GACxF,MAAM,IAAIt6B,EAAa,qBAE3B,CACA,SAASioD,EAAsBhuH,GAC7B,GAAIutH,EAAoBvtH,GAAM,GAC5B,MAAM,IAAI+lE,EAAa,8BAE3B,CACA,SAASkoD,EAAWjuH,EAAMqpH,GACxB,IAAKrpH,EACH,MAAM,IAAI+lE,EAAasjD,EAE3B,CACA,SAAS6E,EAAcluH,EAAMpS,GAC3B,OAAOA,IAAWs5H,EAAoBlnH,GAAQA,EAAKp9B,OAASo9B,EAAK0H,WAAW9kC,OAC9E,CACA,SAASurJ,EAAa3xB,GACpB,QAASA,EAAMuG,kBAAoBvG,EAAM4G,gBAAkBolB,IAAoB2B,EAAI1B,aAAajsB,EAAMuG,iBAAmBonB,EAAI1B,aAAajsB,EAAM4G,iBAAmB0kB,EAAiBtrB,EAAMuG,iBAAmB+kB,EAAiBtrB,EAAM4G,eAAiB8qB,EAAc1xB,EAAMuG,eAAgBvG,EAAMY,cAAgB8wB,EAAc1xB,EAAM4G,aAAc5G,EAAMa,UACzV,CACA,SAAS0tB,EAAiBvuB,GACxB,IAAK2xB,EAAa3xB,GAChB,MAAM,IAAI13H,MAAM,qFAAuF03H,EAAM9oG,UAAY,IAE7H,CAKA,IAAI06H,EAAUhqJ,SAASC,cAAc,SACjCgqJ,GAAsB,EAC1B,IACED,EAAQ3jH,UAAY,WACpB4jH,EAAqD,GAA/BD,EAAQ1hH,WAAWjN,QAC3C,CAAE,MAAO97B,IAET,CACAggJ,EAAIE,SAASwK,oBAAsBA,EACnC,IAAIC,EAA2BD,EAK/B,SAAUE,GAER,IAAIvuH,EAAO5zB,KAAK22H,eACZ9iG,EAAMunH,EAAYxnH,GAItB,IAAKA,EACH,MAAM,IAAI+lE,EAAa,qBAKzB,IAAI78D,EAAK,KAkCT,OA/BqB,GAAjBlJ,EAAKP,SACPyJ,EAAKlJ,EAGIknH,EAAoBlnH,KAC7BkJ,EAAKihH,EAAI79E,cAActsC,KASvBkJ,EAHS,OAAPA,GAA8B,QAAfA,EAAGrI,UAAsBspH,EAAI3D,gBAAgBgB,EAAYt+G,GAAIrG,kBAAoBsnH,EAAI3D,gBAAgBt9G,GAGjHjJ,EAAI57B,cAAc,QAElB6kC,EAAG6T,WAAU,IAOjBtS,UAAY8jH,EAQRpE,EAAIvB,yBAAyB1/G,EACtC,EAGA,SAAUqlH,GACR,IACIrlH,EADMmhH,EAAiBj+I,MACd/H,cAAc,QAE3B,OADA6kC,EAAGuB,UAAY8jH,EACRpE,EAAIvB,yBAAyB1/G,EACtC,EACA,SAASslH,GAAqBhyB,EAAO8qB,GACnCyD,EAAiBvuB,GACjB,IAAI2vB,EAAK3vB,EAAMuG,eACbypB,EAAKhwB,EAAMY,YACXgvB,EAAK5vB,EAAM4G,aACXqpB,EAAKjwB,EAAMa,UACToxB,EAAetC,IAAOC,EACtBlF,EAAoBkF,IAAOK,EAAK,GAAKA,EAAKL,EAAGxpJ,QAC/CykJ,EAAc+E,EAAIK,EAAInF,GAEpBJ,EAAoBiF,IAAOK,EAAK,GAAKA,EAAKL,EAAGvpJ,SAC/CupJ,EAAK9E,EAAc8E,EAAIK,EAAIlF,GACvBmH,GACFhC,GAAMD,EACNJ,EAAKD,GACIC,GAAMD,EAAG/rH,YAAcqsH,GAAMhG,EAAa0F,IACnDM,IAEFD,EAAK,GAEPhwB,EAAMkyB,eAAevC,EAAIK,EAAIJ,EAAIK,EACnC,CACA,SAASkC,GAAYnyB,GACnBuuB,EAAiBvuB,GACjB,IAAI3zE,EAAY2zE,EAAMU,wBAAwB98F,WAAW2c,WAAU,GAEnE,OADA8L,EAAU/iD,YAAY02H,EAAMgJ,iBACrB38E,EAAUpe,SACnB,CAIA,IAAImkH,GAAkB,CAAC,iBAAkB,cAAe,eAAgB,YAAa,YAAa,2BAC9FC,GAAM,EACRC,GAAM,EACNC,GAAM,EACNC,GAAM,EACJC,GAAM,EACRC,GAAM,EACNC,GAAQ,EACRC,GAAM,EA0TR,SAASC,GAAgCvmJ,GACvCA,EAAIwmJ,eAAiBT,GACrB/lJ,EAAIymJ,aAAeT,GACnBhmJ,EAAI0mJ,WAAaT,GACjBjmJ,EAAI2mJ,aAAeT,GACnBlmJ,EAAI4mJ,YAAcT,GAClBnmJ,EAAI6mJ,WAAaT,GACjBpmJ,EAAI8mJ,sBAAwBT,GAC5BrmJ,EAAI+mJ,YAAcT,EACpB,CACA,SAASU,GAAwB9uH,GAC/BquH,GAAgCruH,GAChCquH,GAAgCruH,EAAYl+B,UAC9C,CACA,SAASitJ,GAA0BC,EAASC,GAC1C,OAAO,WACLlF,EAAiB3+I,MACjB,IAMU+7E,EANNgkE,EAAK//I,KAAK22H,eACZypB,EAAKpgJ,KAAKgxH,YACV9vF,EAAOlhC,KAAK8wH,wBACVx5F,EAAW,IAAIwoH,EAAc9/I,MAAM,GAInC+/I,IAAO7+G,IAGT6+G,GADAhkE,EAAWqiE,EADJvD,EAAqBkF,EAAI7+G,GAAM,KAExBtN,KACdwsH,EAAKrkE,EAASv6D,QAIhB49H,EAAe9nH,EAAUsqH,GACzBtqH,EAASoL,QAGT,IAAIsT,EAAc4tG,EAAQtsH,GAK1B,OAJAA,EAASijB,SAGTspG,EAAgB7jJ,KAAM+/I,EAAIK,EAAIL,EAAIK,GAC3BpqG,CACT,CACF,CACA,SAAS8tG,GAAqBlvH,EAAaivH,GACzC,SAASE,EAA4Bz/H,EAAU0/H,GAC7C,OAAO,SAAUpwH,GACf4tH,EAAoB5tH,EAAMgtH,GAC1BY,EAAoB9F,EAAiB9nH,GAAOitH,GAC5C,IAAI9kE,GAAYz3D,EAAW65H,EAAwBC,GAAsBxqH,IACxEowH,EAAUC,EAAgBC,GAAalkJ,KAAM+7E,EAASnoD,KAAMmoD,EAASv6D,OACxE,CACF,CACA,SAASyiI,EAAc7zB,EAAOx8F,EAAMpS,GAClC,IAAIw+H,EAAK5vB,EAAM4G,aACbqpB,EAAKjwB,EAAMa,UACTr9F,IAASw8F,EAAMuG,gBAAkBn1G,IAAW4uG,EAAMY,cAGhD0qB,EAAiB9nH,IAAS8nH,EAAiBsE,IAA8C,GAAvCrE,EAAc/nH,EAAMpS,EAAQw+H,EAAIK,KACpFL,EAAKpsH,EACLysH,EAAK7+H,GAEPqiI,EAAgBzzB,EAAOx8F,EAAMpS,EAAQw+H,EAAIK,GAE7C,CACA,SAAS6D,EAAY9zB,EAAOx8F,EAAMpS,GAChC,IAAIu+H,EAAK3vB,EAAMuG,eACbypB,EAAKhwB,EAAMY,YACTp9F,IAASw8F,EAAM4G,cAAgBx1G,IAAW4uG,EAAMa,YAG9CyqB,EAAiB9nH,IAAS8nH,EAAiBqE,KAA+C,GAAxCpE,EAAc/nH,EAAMpS,EAAQu+H,EAAIK,KACpFL,EAAKnsH,EACLwsH,EAAK5+H,GAEPqiI,EAAgBzzB,EAAO2vB,EAAIK,EAAIxsH,EAAMpS,GAEzC,CAGA,IAAI2iI,EAAI,WAAa,EACrBA,EAAEztJ,UAAY6gJ,EAAIyC,eAClBplH,EAAYl+B,UAAY,IAAIytJ,EAC5Bn1B,EAAK1xH,OAAOs3B,EAAYl+B,UAAW,CACjC2gI,SAAU,SAAUzjG,EAAMpS,GACxB8/H,EAAsC1tH,GAAM,GAC5C8tH,EAAkB9tH,EAAMpS,GACxByiI,EAAcjkJ,KAAM4zB,EAAMpS,EAC5B,EACAk1G,OAAQ,SAAU9iG,EAAMpS,GACtB8/H,EAAsC1tH,GAAM,GAC5C8tH,EAAkB9tH,EAAMpS,GACxB0iI,EAAYlkJ,KAAM4zB,EAAMpS,EAC1B,EASA8gI,eAAgB,WACd,IAAIzgJ,EAAO/F,UACPikJ,EAAKl+I,EAAK,GACZu+I,EAAKv+I,EAAK,GACVm+I,EAAKD,EACLM,EAAKD,EACP,OAAQv+I,EAAKrL,QACX,KAAK,EACH6pJ,EAAKx+I,EAAK,GACV,MACF,KAAK,EACHm+I,EAAKn+I,EAAK,GACVw+I,EAAKx+I,EAAK,GAGdy/I,EAAsCvB,GAAI,GAC1C2B,EAAkB3B,EAAIK,GACtBkB,EAAsCtB,GAAI,GAC1C0B,EAAkB1B,EAAIK,GACtBwD,EAAgB7jJ,KAAM+/I,EAAIK,EAAIJ,EAAIK,EACpC,EACA+D,YAAa,SAAUxwH,EAAMpS,EAAQwiI,GACnChkJ,KAAK,OAASgkJ,EAAU,QAAU,QAAQpwH,EAAMpS,EAClD,EACA6iI,eAAgBN,GAA4B,GAAM,GAClD3yB,cAAe2yB,GAA4B,GAAO,GAClDO,aAAcP,GAA4B,GAAM,GAChDQ,YAAaR,GAA4B,GAAO,GAChD1yB,SAAU,SAAU2yB,GAClBrF,EAAiB3+I,MACbgkJ,EACFH,EAAgB7jJ,KAAMA,KAAK22H,eAAgB32H,KAAKgxH,YAAahxH,KAAK22H,eAAgB32H,KAAKgxH,aAEvF6yB,EAAgB7jJ,KAAMA,KAAKg3H,aAAch3H,KAAKixH,UAAWjxH,KAAKg3H,aAAch3H,KAAKixH,UAErF,EACA1jB,mBAAoB,SAAU35E,GAC5B0tH,EAAsC1tH,GAAM,GAC5CiwH,EAAgB7jJ,KAAM4zB,EAAM,EAAGA,EAAM0mH,EAAc1mH,GACrD,EACAm9F,WAAY,SAAUn9F,GACpB0tH,EAAsC1tH,GAAM,GAC5C4tH,EAAoB5tH,EAAMgtH,GAC1B,IAAIzgH,EAAQg+G,EAAsBvqH,GAChC8B,EAAM0oH,EAAqBxqH,GAC7BiwH,EAAgB7jJ,KAAMmgC,EAAMvM,KAAMuM,EAAM3e,OAAQkU,EAAI9B,KAAM8B,EAAIlU,OAChE,EACAmsF,gBAAiBg2C,GAA0BlE,EAAgBoE,GAC3Dr2C,eAAgBm2C,GAA0BnE,EAAeqE,GACzDW,oBAAqB,WACnB7F,EAAiB3+I,MACjB4hJ,EAAsB5hJ,KAAK22H,gBAC3BirB,EAAsB5hJ,KAAKg3H,cAI3B,IAAI1/F,EAAW,IAAIwoH,EAAc9/I,MAAM,GACnCykJ,EAAoBntH,EAASipH,QAAUvC,EAA2B1mH,EAASipH,OAAQvgJ,OAASs3B,EAASkpH,OAASxC,EAA2B1mH,EAASkpH,MAAOxgJ,MAE7J,OADAs3B,EAASijB,UACDkqG,CACV,EACAC,gBAAiB,WACftC,GAAqBpiJ,KACvB,EACA2kJ,mCAAoC,SAAUzJ,GAC5CkH,GAAqBpiJ,KAAMk7I,EAC7B,EACA0J,oBAAqB,WACnBjG,EAAiB3+I,MACjB,IAoCI4mC,EApCAm5G,EAAK//I,KAAK22H,eACZypB,EAAKpgJ,KAAKgxH,YACVgvB,EAAKhgJ,KAAKg3H,aACVqpB,EAAKrgJ,KAAKixH,UACR4zB,EAAe,SAAUjxH,GAC3B,IAAIgT,EAAUhT,EAAKiO,YACf+E,GAAWA,EAAQvT,UAAYO,EAAKP,WACtC2sH,EAAKpsH,EACLysH,EAAKzsH,EAAKp9B,OACVo9B,EAAKkxH,WAAWl+G,EAAQ3wC,MACxB2mJ,EAAWh2G,GAEf,EACIm+G,EAAgB,SAAUnxH,GAC5B,IAAIgT,EAAUhT,EAAK+7F,gBACnB,GAAI/oF,GAAWA,EAAQvT,UAAYO,EAAKP,SAAU,CAChD0sH,EAAKnsH,EACL,IAAIoxH,EAAapxH,EAAKp9B,OAItB,GAHA4pJ,EAAKx5G,EAAQpwC,OACbo9B,EAAKqxH,WAAW,EAAGr+G,EAAQ3wC,MAC3B2mJ,EAAWh2G,GACPm5G,GAAMC,EACRK,GAAMD,EACNJ,EAAKD,OACA,GAAIC,GAAMpsH,EAAKI,WAAY,CAChC,IAAIkM,EAAYm6G,EAAazmH,GACzBysH,GAAMngH,GACR8/G,EAAKpsH,EACLysH,EAAK2E,GACI3E,EAAKngH,GACdmgH,GAEJ,CACF,CACF,EACI6E,GAAiB,EAErB,GAAIpK,EAAoBkF,GAClBK,GAAML,EAAGxpJ,OACXquJ,EAAa7E,GACE,GAANK,IACTz5G,EAAUo5G,EAAGrwB,kBACE/oF,EAAQvT,UAAY2sH,EAAG3sH,WACpCgtH,EAAKz5G,EAAQpwC,OACTupJ,GAAMC,IACRkF,GAAiB,GAEnBt+G,EAAQk+G,WAAW9E,EAAG/pJ,MACtB2mJ,EAAWoD,GACXA,EAAKp5G,OAGJ,CACL,GAAIy5G,EAAK,EAAG,CACV,IAAIhtB,EAAU2sB,EAAG1kH,WAAW+kH,EAAK,GAC7BhtB,GAAWynB,EAAoBznB,IACjCwxB,EAAaxxB,EAEjB,CACA6xB,GAAkBllJ,KAAKmgJ,SACzB,CACA,GAAI+E,GACF,GAAIpK,EAAoBiF,GACZ,GAANK,EACF2E,EAAchF,GACLK,GAAML,EAAGvpJ,SAClBowC,EAAUm5G,EAAGl+G,cACE+E,EAAQvT,UAAY0sH,EAAG1sH,WAChC2sH,GAAMp5G,IACRo5G,EAAKD,EACLM,GAAMN,EAAGvpJ,QAEXupJ,EAAG+E,WAAWl+G,EAAQ3wC,MACtB2mJ,EAAWh2G,SAIf,GAAIw5G,EAAKL,EAAGzkH,WAAW9kC,OAAQ,CAC7B,IAAI48H,EAAY2sB,EAAGzkH,WAAW8kH,GAC1BhtB,GAAa0nB,EAAoB1nB,IACnC2xB,EAAc3xB,EAElB,OAGF2sB,EAAKC,EACLI,EAAKC,EAEPwD,EAAgB7jJ,KAAM+/I,EAAIK,EAAIJ,EAAIK,EACpC,EACA8E,gBAAiB,SAAUvxH,EAAMpS,GAC/B8/H,EAAsC1tH,GAAM,GAC5C8tH,EAAkB9tH,EAAMpS,GACxBxhB,KAAKsiJ,eAAe1uH,EAAMpS,EAC5B,EACA0+C,cAAe,WAGb,OAFAy+E,EAAiB3+I,MACAA,KAAK8wH,wBACFuwB,EAAmBrhJ,KAAK8wH,yBAAyB,GAAQ,IAC/E,IAEF4yB,GAAwB9uH,EAC1B,CAKA,SAASwwH,GAAiCh1B,GACxCA,EAAM+vB,UAAY/vB,EAAMuG,iBAAmBvG,EAAM4G,cAAgB5G,EAAMY,cAAgBZ,EAAMa,UAC7Fb,EAAMU,wBAA0BV,EAAM+vB,UAAY/vB,EAAMuG,eAAiBonB,EAAIxD,kBAAkBnqB,EAAMuG,eAAgBvG,EAAM4G,aAC7H,CACA,SAAS2pB,GAAiBvwB,EAAOuG,EAAgB3F,EAAagG,EAAc/F,GAC1Eb,EAAMuG,eAAiBA,EACvBvG,EAAMY,YAAcA,EACpBZ,EAAM4G,aAAeA,EACrB5G,EAAMa,UAAYA,EAClBb,EAAMp4H,SAAW+lJ,EAAI3C,YAAYzkB,GACjCyuB,GAAiCh1B,EACnC,CACA,SAASswB,GAAM7sH,GACb8sH,GAAiB3gJ,KAAM6zB,EAAK,EAAGA,EAAK,EACtC,CA9lBAm7F,EAAK1xH,OAAOi6I,EAAIyC,eAAgB,CAC9BqL,sBAAuB,SAAUC,EAAKl1B,GAGpC,IAAIwrB,EAAOC,EAASC,EAAOC,EAF3B4C,EAAiB3+I,MACjB2hJ,EAA6B3hJ,KAAK22H,eAAgBvG,EAAMuG,gBAExD,IAAI4uB,EAAUD,GAAO1C,IAAO0C,GAAO7C,GAAM,QAAU,MAC/C+C,EAAUF,GAAO5C,IAAO4C,GAAO7C,GAAM,QAAU,MAKnD,OAJA7G,EAAQ57I,KAAKulJ,EAAU,aACvB1J,EAAU77I,KAAKulJ,EAAU,UACzBzJ,EAAQ1rB,EAAMo1B,EAAU,aACxBzJ,EAAU3rB,EAAMo1B,EAAU,UACnB7J,EAAcC,EAAOC,EAASC,EAAOC,EAC9C,EACA7qB,WAAY,SAAUt9F,GAIpB,GAHA+qH,EAAiB3+I,MACjBwhJ,EAAoB5tH,EAAMmtH,GAC1Ba,EAAsB5hJ,KAAK22H,gBACvBikB,EAAiBhnH,EAAM5zB,KAAK22H,gBAC9B,MAAM,IAAIh9B,EAAa,yBAOzB,IAAI2kD,EAAoBD,EAAqBzqH,EAAM5zB,KAAK22H,eAAgB32H,KAAKgxH,aAC7EhxH,KAAKqkJ,eAAe/F,EACtB,EACAllB,cAAe,WAEb,IAAIj3G,EAAO88H,EACX,GAFAN,EAAiB3+I,MAEbA,KAAKmgJ,UACP,OAAOlC,EAAiBj+I,MAAMywC,yBAE9B,GAAIzwC,KAAK22H,iBAAmB32H,KAAKg3H,cAAgB8jB,EAAoB96I,KAAK22H,gBAKxE,OAJAx0G,EAAQniB,KAAK22H,eAAehmF,WAAU,IAChC16C,KAAOksB,EAAMlsB,KAAKuF,MAAMwE,KAAKgxH,YAAahxH,KAAKixH,YACrDguB,EAAOhB,EAAiBj+I,MAAMywC,0BACzB/2C,YAAYyoB,GACV88H,EAEP,IAAI3nH,EAAW,IAAIwoH,EAAc9/I,MAAM,GAIzC,OAHEmiB,EAAQ28H,EAAaxnH,GACrBA,EAASijB,SAEJp4B,CAEX,EACAqiI,oBAAqB,WACnB7F,EAAiB3+I,MACjB4hJ,EAAsB5hJ,KAAK22H,gBAC3BirB,EAAsB5hJ,KAAKg3H,cAI3B,IAAI1/F,EAAW,IAAIwoH,EAAc9/I,MAAM,GACnCykJ,EAAoBntH,EAASipH,QAAUvC,EAA2B1mH,EAASipH,OAAQvgJ,OAASs3B,EAASkpH,OAASxC,EAA2B1mH,EAASkpH,MAAOxgJ,MAE7J,OADAs3B,EAASijB,UACDkqG,CACV,EACAgB,iBAAkB,SAAU7xH,GAE1B,GADA4tH,EAAoB5tH,EAAMotH,IACrBhhJ,KAAKwkJ,sBACR,MAAM,IAAI7qD,EAAa,qBAIzB,IAAInyD,EAAUxnC,KAAK2tG,kBAGnB,GAAI/5E,EAAKu/F,gBACP,KAAOv/F,EAAK2M,WACV3M,EAAKK,YAAYL,EAAK2M,WAK1B89G,EAAqBzqH,EAAM5zB,KAAK22H,eAAgB32H,KAAKgxH,aACrDp9F,EAAKl6B,YAAY8tC,GACjBxnC,KAAK+wH,WAAWn9F,EAClB,EACAu9F,WAAY,WACVwtB,EAAiB3+I,MAIjB,IAHA,IAEEO,EAFE6vH,EAAQ,IAAIswB,GAAMzC,EAAiBj+I,OACnC1J,EAAIksJ,GAAgBhsJ,OAEjBF,KAEL85H,EADA7vH,EAAOiiJ,GAAgBlsJ,IACT0J,KAAKO,GAErB,OAAO6vH,CACT,EACAh0H,SAAU,WACRuiJ,EAAiB3+I,MACjB,IAAI+/I,EAAK//I,KAAK22H,eACd,GAAIopB,IAAO//I,KAAKg3H,cAAgB8jB,EAAoBiF,GAClD,OAAsB,GAAfA,EAAG1sH,UAAgC,GAAf0sH,EAAG1sH,SAAgB0sH,EAAG9pJ,KAAKuF,MAAMwE,KAAKgxH,YAAahxH,KAAKixH,WAAa,GAEhG,IAAIy0B,EAAY,GACdpuH,EAAW,IAAIwoH,EAAc9/I,MAAM,GAQrC,OAPAo/I,EAAe9nH,GAAU,SAAU1D,GAEZ,GAAjBA,EAAKP,UAAkC,GAAjBO,EAAKP,UAC7BqyH,EAAU5uJ,KAAK88B,EAAK39B,KAExB,IACAqhC,EAASijB,SACFmrG,EAAU3jJ,KAAK,GAE1B,EAIA4jJ,YAAa,SAAU/xH,GACrB+qH,EAAiB3+I,MACjB,IAAIogC,EAASxM,EAAKI,WACdkM,EAAYm6G,EAAazmH,GAC7B,IAAKwM,EACH,MAAM,IAAIu5D,EAAa,iBAEzB,IAAIilD,EAAkB5+I,KAAK4lJ,aAAaxlH,EAAQF,GAC9C2+G,EAAgB7+I,KAAK4lJ,aAAaxlH,EAAQF,EAAY,GACxD,OAAI0+G,EAAkB,EAEbC,EAAgB,EAAIkE,GAAQF,GAE5BhE,EAAgB,EAAIiE,GAAME,EAErC,EACA4C,aAAc,SAAUhyH,EAAMpS,GAI5B,OAHAm9H,EAAiB3+I,MACjB6hJ,EAAWjuH,EAAM,yBACjB+tH,EAA6B/tH,EAAM5zB,KAAK22H,gBACpCglB,EAAc/nH,EAAMpS,EAAQxhB,KAAK22H,eAAgB32H,KAAKgxH,aAAe,GAC/D,EACC2qB,EAAc/nH,EAAMpS,EAAQxhB,KAAKg3H,aAAch3H,KAAKixH,WAAa,EACnE,EAEF,CACT,EACAixB,yBAA0BA,EAC1B2D,OAAQ,WACN,OAAOtD,GAAYviJ,KACrB,EAGA8lJ,eAAgB,SAAUlyH,EAAM8qH,GAE9B,GADAC,EAAiB3+I,MACb07I,EAAiB9nH,IAASsqH,EAAal+I,MACzC,OAAO,EAET,IAAIogC,EAASxM,EAAKI,WAChBxS,EAAS64H,EAAazmH,GACxB,IAAKwM,EACH,OAAO,EAET,IAAIw+G,EAAkBjD,EAAcv7G,EAAQ5e,EAAQxhB,KAAKg3H,aAAch3H,KAAKixH,WAC1E4tB,EAAgBlD,EAAcv7G,EAAQ5e,EAAS,EAAGxhB,KAAK22H,eAAgB32H,KAAKgxH,aAC9E,OAAO0tB,EAAyBE,GAAmB,GAAKC,GAAiB,EAAID,EAAkB,GAAKC,EAAgB,CACtH,EACAkH,eAAgB,SAAUnyH,EAAMpS,GAI9B,OAHAm9H,EAAiB3+I,MACjB6hJ,EAAWjuH,EAAM,yBACjB+tH,EAA6B/tH,EAAM5zB,KAAK22H,gBACjCglB,EAAc/nH,EAAMpS,EAAQxhB,KAAK22H,eAAgB32H,KAAKgxH,cAAgB,GAAK2qB,EAAc/nH,EAAMpS,EAAQxhB,KAAKg3H,aAAch3H,KAAKixH,YAAc,CACtJ,EAIA+0B,gBAAiB,SAAU51B,GACzB,OAAOmuB,EAAgBv+I,KAAMowH,GAAO,EACtC,EAEA61B,yBAA0B,SAAU71B,GAClC,OAAOmuB,EAAgBv+I,KAAMowH,GAAO,EACtC,EACA81B,aAAc,SAAU91B,GACtB,GAAIpwH,KAAKgmJ,gBAAgB51B,GAAQ,CAC/B,IAAIwuB,EAAkBjD,EAAc37I,KAAK22H,eAAgB32H,KAAKgxH,YAAaZ,EAAMuG,eAAgBvG,EAAMY,aACrG6tB,EAAgBlD,EAAc37I,KAAKg3H,aAAch3H,KAAKixH,UAAWb,EAAM4G,aAAc5G,EAAMa,WACzFk1B,EAAoBnmJ,KAAKmxH,aAO7B,OANwB,GAApBytB,GACFuH,EAAkB9uB,SAASjH,EAAMuG,eAAgBvG,EAAMY,aAEpC,GAAjB6tB,GACFsH,EAAkBzvB,OAAOtG,EAAM4G,aAAc5G,EAAMa,WAE9Ck1B,CACT,CACA,OAAO,IACT,EACAC,MAAO,SAAUh2B,GACf,GAAIpwH,KAAKimJ,yBAAyB71B,GAAQ,CACxC,IAAIi2B,EAAarmJ,KAAKmxH,aAOtB,OANsG,GAAlGwqB,EAAcvrB,EAAMuG,eAAgBvG,EAAMY,YAAahxH,KAAK22H,eAAgB32H,KAAKgxH,cACnFq1B,EAAWhvB,SAASjH,EAAMuG,eAAgBvG,EAAMY,aAE2C,GAAzF2qB,EAAcvrB,EAAM4G,aAAc5G,EAAMa,UAAWjxH,KAAKg3H,aAAch3H,KAAKixH,YAC7Eo1B,EAAW3vB,OAAOtG,EAAM4G,aAAc5G,EAAMa,WAEvCo1B,CACT,CACE,MAAM,IAAI1sD,EAAa,0BAE3B,EACAggC,aAAc,SAAU/lG,EAAM0yH,GAC5B,OAAIA,EACKtmJ,KAAK8lJ,eAAelyH,GAAM,GAE1B5zB,KAAK2lJ,YAAY/xH,IAASovH,EAErC,EACAuD,qBAAsB,SAAU3yH,GAC9B,OAAO5zB,KAAK4lJ,aAAahyH,EAAM,IAAM,GAAK5zB,KAAK4lJ,aAAahyH,EAAM0mH,EAAc1mH,KAAU,CAC5F,EACA4yH,cAAe,SAAUp2B,GACvB,IAAI81B,EAAelmJ,KAAKkmJ,aAAa91B,GACrC,OAAwB,OAAjB81B,GAAyB91B,EAAMktB,OAAO4I,EAC/C,EACAO,iBAAkB,SAAU7yH,GAC1B,IAAI8yH,EAAY1mJ,KAAKmxH,aACrBu1B,EAAU31B,WAAWn9F,GACrB,IAAI65F,EAAYi5B,EAAUC,SAAS,CAAC,IACpC,GAAIl5B,EAAUj3H,OAAS,EAAG,CACxBkwJ,EAAUrvB,SAAS5J,EAAU,GAAI,GACjC,IAAImK,EAAenK,EAAUl2F,MAE7B,OADAmvH,EAAUhwB,OAAOkB,EAAcA,EAAaphI,QACrCwJ,KAAKwmJ,cAAcE,EAC5B,CACE,OAAO1mJ,KAAKumJ,qBAAqB3yH,EAErC,EACA+yH,SAAU,SAAUhH,EAAWn6H,GAE7B,OADAm5H,EAAiB3+I,MACV0/I,EAAgB1/I,KAAM2/I,EAAWn6H,EAC1C,EACA41H,YAAa,WACX,OAAO6C,EAAiBj+I,KAC1B,EACA4mJ,eAAgB,SAAUhzH,GACxB5zB,KAAKskJ,aAAa1wH,GAClB5zB,KAAKqxH,UAAS,EAChB,EACAw1B,cAAe,SAAUjzH,GACvB5zB,KAAKoxH,cAAcx9F,GACnB5zB,KAAKqxH,UAAS,EAChB,EACAy1B,YAAa,SAAUC,GACrB,IAAIlzH,EAAMoqH,EAAiBj+I,MACvBy2H,EAAoB8gB,EAAIjqC,YAAYz5E,GACxCkzH,EAAgBA,GAAiBhJ,EAAI3G,QAAQvjH,GAC7C4iG,EAAkBlpB,mBAAmBw5C,GACrC,IAAI32B,EAAQpwH,KAAKkmJ,aAAazvB,GAC1Bt2F,EAAQ,EACVzK,EAAM,EAMR,OALI06F,IACFqG,EAAkBC,OAAOtG,EAAMuG,eAAgBvG,EAAMY,aAErDt7F,GADAyK,EAAQs2F,EAAkBr6H,WAAW5F,QACvB45H,EAAMh0H,WAAW5F,QAE1B,CACL2pC,MAAOA,EACPzK,IAAKA,EACLqxH,cAAeA,EAEnB,EACAC,eAAgB,SAAUC,GACxB,IAAIF,EAAgBE,EAASF,cACzBvvB,EAAY,EAChBx3H,KAAKq3H,SAAS0vB,EAAe,GAC7B/mJ,KAAKqxH,UAAS,GAMd,IALA,IACEz9F,EAGE0jG,EAAehhI,EAAGglC,EAJlBi8F,EAAY,CAACwvB,GAEftvB,GAAa,EACbnpF,GAAO,GAEDA,IAAS1a,EAAO2jG,EAAUhgG,QAChC,GAAqB,GAAjB3D,EAAKP,SACPikG,EAAgBE,EAAY5jG,EAAKp9B,QAC5BihI,GAAcwvB,EAAS9mH,OAASq3F,GAAayvB,EAAS9mH,OAASm3F,IAClEt3H,KAAKq3H,SAASzjG,EAAMqzH,EAAS9mH,MAAQq3F,GACrCC,GAAa,GAEXA,GAAcwvB,EAASvxH,KAAO8hG,GAAayvB,EAASvxH,KAAO4hG,IAC7Dt3H,KAAK02H,OAAO9iG,EAAMqzH,EAASvxH,IAAM8hG,GACjClpF,GAAO,GAETkpF,EAAYF,OAIZ,IADAhhI,GADAglC,EAAa1H,EAAK0H,YACH9kC,OACRF,KACLihI,EAAUzgI,KAAKwkC,EAAWhlC,GAIlC,EACA2pJ,QAAS,WACP,MAAO,UACT,EACA3C,OAAQ,SAAUltB,GAChB,OAAOswB,GAAMwG,YAAYlnJ,KAAMowH,EACjC,EACAnxH,QAAS,WACP,OAAO8iJ,EAAa/hJ,KACtB,EACAsnB,QAAS,WACP,OAAOA,EAAQtnB,KACjB,EACAu6C,OAAQ,WAER,IAwSFupG,GAAqBpD,GAAOC,IAC5B3xB,EAAK1xH,OAAOojJ,GAAO,CACjB8B,gBAAiBA,GACjB1C,cAAeA,EACf4D,wBAAyBA,GACzBI,qBAAsBA,GACtBx8H,QAASA,EACTu+H,OAAQtD,GACRtE,iBAAkBA,EAClBiJ,YAAa,SAAUC,EAAIC,GACzB,OAAOD,EAAGxwB,iBAAmBywB,EAAGzwB,gBAAkBwwB,EAAGn2B,cAAgBo2B,EAAGp2B,aAAem2B,EAAGnwB,eAAiBowB,EAAGpwB,cAAgBmwB,EAAGl2B,YAAcm2B,EAAGn2B,SACpJ,IAEFsmB,EAAI8P,SAAW3G,EACjB,IAKAnJ,EAAIwC,iBAAiB,eAAgB,CAAC,aAAa,SAAUxC,EAAKlgJ,GAChE,IAAIiwJ,EAAcC,EACdxJ,EAAMxG,EAAIwG,IACV/uB,EAAOuoB,EAAIvoB,KACXguB,EAAce,EAAIf,YAClBqK,EAAW9P,EAAI8P,SACfjQ,EAAU2G,EAAI3G,QACdqE,EAAqBsC,EAAItC,mBACzBX,EAAsBiD,EAAIjD,oBAiO9B,GA7NIvD,EAAIE,SAASiB,oBAKf,WACE,IAAI8O,EAuBAzD,EAtBAvB,EAAkB6E,EAAS7E,gBAC/B,SAASiF,EAAsBr3B,GAG7B,IAFA,IACE7vH,EADEjK,EAAIksJ,EAAgBhsJ,OAEjBF,KAEL85H,EADA7vH,EAAOiiJ,EAAgBlsJ,IACT85H,EAAMs3B,YAAYnnJ,GAGlC6vH,EAAM+vB,UAAY/vB,EAAMuG,iBAAmBvG,EAAM4G,cAAgB5G,EAAMY,cAAgBZ,EAAMa,SAC/F,CACA,SAAS02B,EAAkBv3B,EAAOuG,EAAgB3F,EAAagG,EAAc/F,GAC3E,IAAI22B,EAAax3B,EAAMuG,iBAAmBA,GAAkBvG,EAAMY,aAAeA,EAC7E62B,EAAWz3B,EAAM4G,eAAiBA,GAAgB5G,EAAMa,WAAaA,EACrE62B,GAAwB13B,EAAMktB,OAAOltB,EAAMs3B,cAG3CE,GAAcC,GAAYC,KAC5B13B,EAAMsG,OAAOM,EAAc/F,GAC3Bb,EAAMiH,SAASV,EAAgB3F,GAEnC,CAEAs2B,EAAe,SAAUl3B,GACvB,IAAKA,EACH,MAAM/4H,EAAOyiJ,YAAY,yCAE3B95I,KAAK0nJ,YAAct3B,EACnBq3B,EAAsBznJ,KACxB,EACAqnJ,EAASvD,qBAAqBwD,EAAcK,IAC5CH,EAAaF,EAAa5wJ,WACfq6H,WAAa,SAAUn9F,GAChC5zB,KAAK0nJ,YAAY32B,WAAWn9F,GAC5B6zH,EAAsBznJ,KACxB,EACAwnJ,EAAWpuB,cAAgB,WACzB,OAAOp5H,KAAK0nJ,YAAYtuB,eAC1B,EAKAouB,EAAW/B,iBAAmB,SAAU7xH,GACtC5zB,KAAK0nJ,YAAYjC,iBAAiB7xH,GAClC6zH,EAAsBznJ,KACxB,EACAwnJ,EAAWn2B,SAAW,SAAU2yB,GAC9BhkJ,KAAK0nJ,YAAYr2B,SAAS2yB,GAC1ByD,EAAsBznJ,KACxB,EACAwnJ,EAAWr2B,WAAa,WACtB,OAAO,IAAIm2B,EAAatnJ,KAAK0nJ,YAAYv2B,aAC3C,EACAq2B,EAAW5uF,QAAU,WACnB6uF,EAAsBznJ,KACxB,EACAwnJ,EAAWprJ,SAAW,WACpB,OAAO4D,KAAK0nJ,YAAYtrJ,UAC1B,EAIA,IAAI2rJ,EAAe/vJ,SAASu6C,eAAe,QAC3C6kG,EAAQp/I,UAAU0B,YAAYquJ,GAC9B,IAAI33B,EAAQp4H,SAASs1G,cAOrB8iB,EAAMiH,SAAS0wB,EAAc,GAC7B33B,EAAMsG,OAAOqxB,EAAc,GAC3B,IACE33B,EAAMiH,SAAS0wB,EAAc,GAC7BP,EAAWnwB,SAAW,SAAUzjG,EAAMpS,GACpCxhB,KAAK0nJ,YAAYrwB,SAASzjG,EAAMpS,GAChCimI,EAAsBznJ,KACxB,EACAwnJ,EAAW9wB,OAAS,SAAU9iG,EAAMpS,GAClCxhB,KAAK0nJ,YAAYhxB,OAAO9iG,EAAMpS,GAC9BimI,EAAsBznJ,KACxB,EACA+jJ,EAA8B,SAAU1qJ,GACtC,OAAO,SAAUu6B,GACf5zB,KAAK0nJ,YAAYruJ,GAAMu6B,GACvB6zH,EAAsBznJ,KACxB,CACF,CACF,CAAE,MAAO8nC,GACP0/G,EAAWnwB,SAAW,SAAUzjG,EAAMpS,GACpC,IACExhB,KAAK0nJ,YAAYrwB,SAASzjG,EAAMpS,EAClC,CAAE,MAAOsmB,GACP9nC,KAAK0nJ,YAAYhxB,OAAO9iG,EAAMpS,GAC9BxhB,KAAK0nJ,YAAYrwB,SAASzjG,EAAMpS,EAClC,CACAimI,EAAsBznJ,KACxB,EACAwnJ,EAAW9wB,OAAS,SAAU9iG,EAAMpS,GAClC,IACExhB,KAAK0nJ,YAAYhxB,OAAO9iG,EAAMpS,EAChC,CAAE,MAAOsmB,GACP9nC,KAAK0nJ,YAAYrwB,SAASzjG,EAAMpS,GAChCxhB,KAAK0nJ,YAAYhxB,OAAO9iG,EAAMpS,EAChC,CACAimI,EAAsBznJ,KACxB,EACA+jJ,EAA8B,SAAU1qJ,EAAM2uJ,GAC5C,OAAO,SAAUp0H,GACf,IACE5zB,KAAK0nJ,YAAYruJ,GAAMu6B,EACzB,CAAE,MAAOkU,GACP9nC,KAAK0nJ,YAAYM,GAAcp0H,GAC/B5zB,KAAK0nJ,YAAYruJ,GAAMu6B,EACzB,CACA6zH,EAAsBznJ,KACxB,CACF,CACF,CACAwnJ,EAAWnD,eAAiBN,EAA4B,iBAAkB,gBAC1EyD,EAAWp2B,cAAgB2yB,EAA4B,gBAAiB,eACxEyD,EAAWlD,aAAeP,EAA4B,eAAgB,kBACtEyD,EAAWjD,YAAcR,EAA4B,cAAe,iBAMpEyD,EAAWj6C,mBAAqB,SAAU35E,GACxC5zB,KAAKsiJ,eAAe1uH,EAAM,EAAGmqH,EAAIzD,cAAc1mH,GACjD,EAOAw8F,EAAM7iB,mBAAmBw6C,GACzB33B,EAAMsG,OAAOqxB,EAAc,GAC3B,IAAIE,EAASjwJ,SAASs1G,cACtB26C,EAAO16C,mBAAmBw6C,GAC1BE,EAAOvxB,OAAOqxB,EAAc,GAC5BE,EAAO5wB,SAAS0wB,EAAc,IACkC,GAA5D33B,EAAMi1B,sBAAsBj1B,EAAM+yB,aAAc8E,IAA4E,GAA3D73B,EAAMi1B,sBAAsBj1B,EAAMizB,aAAc4E,GAGnHT,EAAWnC,sBAAwB,SAAUpsJ,EAAMm3H,GAOjD,OALIn3H,IADJm3H,EAAQA,EAAMs3B,aAAet3B,GACX+yB,aAChBlqJ,EAAOm3H,EAAMizB,aACJpqJ,GAAQm3H,EAAMizB,eACvBpqJ,EAAOm3H,EAAM+yB,cAERnjJ,KAAK0nJ,YAAYrC,sBAAsBpsJ,EAAMm3H,EACtD,EAEAo3B,EAAWnC,sBAAwB,SAAUpsJ,EAAMm3H,GACjD,OAAOpwH,KAAK0nJ,YAAYrC,sBAAsBpsJ,EAAMm3H,EAAMs3B,aAAet3B,EAC3E,EAOF,IAAItzF,EAAK9kC,SAASC,cAAc,OAChC6kC,EAAGuB,UAAY,MACf,IAAIq2F,EAAW53F,EAAGwD,WACd0P,EAAOonG,EAAQp/I,UACnBg4C,EAAKt2C,YAAYojC,GACjBszF,EAAMiH,SAAS3C,EAAU,GACzBtE,EAAMsG,OAAOhC,EAAU,GACvBtE,EAAM5iB,iBACe,MAAjBknB,EAASz+H,OAGXuxJ,EAAWh6C,eAAiB,WAC1BxtG,KAAK0nJ,YAAYl6C,iBACjBi6C,EAAsBznJ,KACxB,EACAwnJ,EAAW75C,gBAAkB,WAC3B,IAAIsxC,EAAOj/I,KAAK0nJ,YAAY/5C,kBAE5B,OADA85C,EAAsBznJ,MACfi/I,CACT,GAEFjvG,EAAK/b,YAAY6I,GACjBkT,EAAO,KAKHg/E,EAAK2nB,aAAavmB,EAAO,8BAC3Bo3B,EAAWtF,yBAA2B,SAAUC,GAC9C,OAAOniJ,KAAK0nJ,YAAYxF,yBAAyBC,EACnD,GAMF/K,EAAQp/I,UAAUi8B,YAAY8zH,GAC9BP,EAAWvH,QAAU,WACnB,MAAO,cACT,EACA1I,EAAI+P,aAAeA,EACnB/P,EAAI2Q,kBAAoB,SAAUr0H,GAEhC,OADAA,EAAM4nH,EAAmB5nH,EAAKx8B,EAAQ,sBAC3Bi2G,aACb,CACD,CAtND,GAwNEiqC,EAAIE,SAASkB,oBAAqB,CAYpC,IAAIwP,EAA+B,SAAUC,GAC3C,IAAIC,EAAWD,EAAUloF,gBACrBkwD,EAAQg4B,EAAUE,YACtBl4B,EAAMiB,UAAS,GACf,IAAIk3B,EAAUn4B,EAAMlwD,iBACpBkwD,EAAQg4B,EAAUE,aACZj3B,UAAS,GACf,IAAIm3B,EAAQp4B,EAAMlwD,gBACduoF,EAAoBF,GAAWC,EAAQD,EAAUxK,EAAIxD,kBAAkBgO,EAASC,GACpF,OAAOC,GAAqBJ,EAAWI,EAAoB1K,EAAIxD,kBAAkB8N,EAAUI,EAC7F,EACIC,EAAuB,SAAUN,GACnC,OAA8D,GAAvDA,EAAUO,iBAAiB,aAAcP,EAClD,EAMIQ,EAA+B,SAAUR,EAAWS,EAA4B7E,EAASprB,EAAakwB,GACxG,IAAIC,EAAeX,EAAUE,YAC7BS,EAAa13B,SAAS2yB,GACtB,IAAIgF,EAAmBD,EAAa7oF,gBAUpC,GANK69E,EAAInD,iBAAiBiO,EAA4BG,KACpDA,EAAmBH,IAKhBG,EAAiBC,YAAa,CACjC,IAAI3yI,EAAM,IAAI0mI,EAAYgM,EAAiBh1H,WAAY+pH,EAAI1D,aAAa2O,IACxE,MAAO,CACLE,iBAAkB5yI,EAClB6yI,SAAU,CACRjpH,UAAW5pB,EAAIkL,OACfwnI,iBAAkB1yI,EAAIsd,MAG5B,CACA,IAAIw1H,EAAcrL,EAAI3C,YAAY4N,GAAkB/wJ,cAAc,QAI9DmxJ,EAAYp1H,YACd+pH,EAAInB,WAAWwM,GAYjB,IAVA,IAAIC,EAEAxiB,EAAcxY,EAAU66B,EAAkBI,EAD5CC,EAAwBvF,EAAU,eAAiB,aAEjD7jH,EAAQ2oH,GAAaA,EAAUE,kBAAoBA,EAAmBF,EAAU5oH,UAAY,EAC5FspH,EAAiBR,EAAiB1tH,WAAW9kC,OAC7Ck/B,EAAM8zH,EAINtpH,EAAYxK,EAEVwK,GAAaspH,EACfR,EAAiBtvJ,YAAY0vJ,GAE7BJ,EAAiBtuG,aAAa0uG,EAAaJ,EAAiB1tH,WAAW4E,IAEzE6oH,EAAaU,kBAAkBL,GAEb,IADlBC,EAAaN,EAAaJ,iBAAiBY,EAAuBnB,KAC3CjoH,GAASzK,GARrB,CAUJ,IAAmB,GAAf2zH,EAAkB,CAC3B,GAAI3zH,GAAOyK,EAAQ,EAEjB,MAEAA,EAAQD,CAEZ,MACExK,EAAMA,GAAOyK,EAAQ,EAAIA,EAAQD,EAEnCA,EAAYh8B,KAAKwF,OAAOy2B,EAAQzK,GAAO,GACvCszH,EAAiB/0H,YAAYm1H,EAC/B,CAKA,GADAE,EAAeF,EAAYvnH,aACR,GAAfwnH,GAAoBC,GAAgBxO,EAAoBwO,GAAe,CAKzE,IAAI9nI,EACJ,GAFAunI,EAAaW,YAAY1F,EAAU,aAAe,WAAYoE,GAE1D,SAASviJ,KAAKyjJ,EAAarzJ,MAAO,CA2BpC,IAAI0zJ,EAAYZ,EAAaT,YACzBsB,EAAcD,EAAU71H,KAAK1uB,QAAQ,QAAS,MAAM5O,OAExD,IADAgrB,EAASmoI,EAAUE,UAAU,YAAaD,IACoC,IAAtEP,EAAaM,EAAUhB,iBAAiB,aAAcgB,KAC5DnoI,IACAmoI,EAAUE,UAAU,YAAa,EAErC,MACEroI,EAASunI,EAAaj1H,KAAKt9B,OAE7B0yJ,EAAmB,IAAIlM,EAAYsM,EAAc9nI,EACnD,MAGEqlH,GAAgBjO,IAAgBorB,IAAYoF,EAAYz5B,gBAGtDu5B,GAFF76B,GAAYuK,GAAeorB,IAAYoF,EAAYvnH,cACnCi5G,EAAoBzsB,GACf,IAAI2uB,EAAY3uB,EAAU,GACpCwY,GAAgBiU,EAAoBjU,GAC1B,IAAImW,EAAYnW,EAAcA,EAAa5wI,KAAKO,QAEhD,IAAIwmJ,EAAYgM,EAAkBjL,EAAI1D,aAAa+O,IAM1E,OADArL,EAAInB,WAAWwM,GACR,CACLF,iBAAkBA,EAClBC,SAAU,CACRjpH,UAAWA,EACX8oH,iBAAkBA,GAGxB,EAKIc,EAA0B,SAAUZ,EAAkBlF,GACxD,IAAIsF,EACFS,EAGEX,EACF9tH,EAHA0uH,EAAiBd,EAAiB1nI,OAChCqS,EAAMkqH,EAAI3C,YAAY8N,EAAiBt1H,MAGzCm1H,EAAe3R,EAAQvjH,GAAK+kH,kBAC1BqR,EAAiBnP,EAAoBoO,EAAiBt1H,MAkC1D,OAjCIq2H,EAEFF,GADAT,EAAeJ,EAAiBt1H,MACFI,YAG9Bs1H,EAAeU,GADf1uH,EAAa4tH,EAAiBt1H,KAAK0H,YACQ9kC,OAAS8kC,EAAW0uH,GAAkB,KACjFD,EAAiBb,EAAiBt1H,OAIpCw1H,EAAcv1H,EAAI57B,cAAc,SAIpBomC,UAAY,UAIpBirH,EACFS,EAAervG,aAAa0uG,EAAaE,GAEzCS,EAAerwJ,YAAY0vJ,GAE7BL,EAAaU,kBAAkBL,GAC/BL,EAAa13B,UAAU2yB,GAGvB+F,EAAe91H,YAAYm1H,GAGvBa,GACFlB,EAAa/E,EAAU,YAAc,WAAW,YAAagG,GAExDjB,CACT,GAOAxB,EAAmB,SAAUa,GAC3BpoJ,KAAKooJ,UAAYA,EACjBpoJ,KAAK44D,SACP,GACiBliE,UAAY,IAAI2wJ,EAASrvJ,UAC1CuvJ,EAAiB7wJ,UAAUkiE,QAAU,WACnC,IAAIz4B,EAAOzK,EAAKw0H,EAGZC,EAAwBhC,EAA6BnoJ,KAAKooJ,WAC1DM,EAAqB1oJ,KAAKooJ,WAC5B1yH,EAAMyK,EAAQyoH,EAA6B5oJ,KAAKooJ,UAAW+B,GAAuB,GAAM,GAAMjB,kBAG9F/oH,GADA+pH,EAAgBtB,EAA6B5oJ,KAAKooJ,UAAW+B,GAAuB,GAAM,IACpEjB,iBAKtBxzH,EAAMkzH,EAA6B5oJ,KAAKooJ,UAAW+B,GAAuB,GAAO,EAAOD,EAAcf,UAAUD,kBAElHlpJ,KAAKq3H,SAASl3F,EAAMvM,KAAMuM,EAAM3e,QAChCxhB,KAAK02H,OAAOhhG,EAAI9B,KAAM8B,EAAIlU,OAC5B,EACA+lI,EAAiB7wJ,UAAUupJ,QAAU,WACnC,MAAO,kBACT,EACAoH,EAAS3D,wBAAwB6D,GACjC,IAAI6C,EAAmB,SAAUh6B,GAC/B,GAAIA,EAAM+vB,UACR,OAAO2J,EAAwB,IAAI9M,EAAY5sB,EAAMuG,eAAgBvG,EAAMY,cAAc,GAEzF,IAAIq5B,EAAaP,EAAwB,IAAI9M,EAAY5sB,EAAMuG,eAAgBvG,EAAMY,cAAc,GAC/Fs5B,EAAWR,EAAwB,IAAI9M,EAAY5sB,EAAM4G,aAAc5G,EAAMa,YAAY,GACzFm3B,EAAYhR,EAAQiQ,EAASpJ,iBAAiB7tB,IAAQwoB,kBAG1D,OAFAwP,EAAUsB,YAAY,eAAgBW,GACtCjC,EAAUsB,YAAY,WAAYY,GAC3BlC,CAEX,EASA,GARAb,EAAiB6C,iBAAmBA,EACpC7C,EAAiB7wJ,UAAU6zJ,YAAc,WACvC,OAAOH,EAAiBpqJ,KAC1B,EACAu3I,EAAIgQ,iBAAmBA,GAIlBhQ,EAAIE,SAASiB,oBAAsBnB,EAAIp2I,OAAOy2I,gBAAiB,CAElE,IAAI4S,EAEFnoJ,SADS,eAAFikE,GAEqB,oBAAnBkkF,EAAU9J,QACnB8J,EAAU9J,MAAQ6G,GAEpBhQ,EAAI2Q,kBAAoB,SAAUr0H,GAEhC,OADAA,EAAM4nH,EAAmB5nH,EAAKx8B,EAAQ,qBAC/B+/I,EAAQvjH,GAAK+kH,iBACtB,EACArB,EAAI+P,aAAeC,CACrB,CACF,CACAhQ,EAAIjqC,YAAc,SAAUz5E,GAE1B,OADAA,EAAM4nH,EAAmB5nH,EAAKx8B,EAAQ,eAC/B,IAAIkgJ,EAAI+P,aAAa/P,EAAI2Q,kBAAkBr0H,GACpD,EACA0jH,EAAIkT,iBAAmB,SAAU52H,GAE/B,OADAA,EAAM4nH,EAAmB5nH,EAAKx8B,EAAQ,oBAC/B,IAAIgwJ,EAASxzH,EACtB,EACAm7F,EAAK+pB,+BAA+BxB,EAAK,oBAAqB,eAC9DvoB,EAAK+pB,+BAA+BxB,EAAK,yBAA0B,oBACnEA,EAAImC,iBAAgB,SAAU1mF,GAC5B,IAAIn/B,EAAMm/B,EAAIh7D,SACgB,oBAAnB67B,EAAIy5E,cACbz5E,EAAIy5E,YAAc,WAChB,OAAOiqC,EAAIjqC,YAAYz5E,EACzB,GAEFA,EAAMm/B,EAAM,IACd,GACF,IAMAukF,EAAIwC,iBAAiB,mBAAoB,CAAC,WAAY,iBAAiB,SAAUxC,EAAKlgJ,GACpFkgJ,EAAIp2I,OAAOupJ,sBAAuB,EAClC,IASIC,EACAC,EAVAC,EAAU,UACVC,EAAS,SACT/M,EAAMxG,EAAIwG,IACV/uB,EAAOuoB,EAAIvoB,KACX2nB,EAAe3nB,EAAK2nB,aACpB0Q,EAAW9P,EAAI8P,SACfC,EAAe/P,EAAI+P,aACnB3tD,EAAe49C,EAAI59C,aACnBqjD,EAAce,EAAIf,YAGlBvF,EAAWF,EAAIE,SACfsT,EAAU,UACV3P,EAAc2C,EAAI3C,YAClBhE,EAAU2G,EAAI3G,QACd8P,EAAcG,EAASH,YAI3B,SAAS8D,EAAoBjhI,GAC3B,MAAqB,iBAAPA,EAAkB,kBAAkBlkB,KAAKkkB,KAASA,CAClE,CACA,SAASsxH,EAAUroF,EAAKwE,GACtB,GAAKxE,EAEE,IAAI+qF,EAAIzqH,SAAS0/B,GACtB,OAAOA,EACF,GAAIA,aAAei4F,EACxB,OAAOj4F,EAAIA,IAEX,IAAIn/B,EAAMkqH,EAAItC,mBAAmBzoF,EAAK37D,EAAQmgE,GAC9C,OAAOumF,EAAI1C,UAAUxnH,EACvB,CARE,OAAOv4B,MASX,CACA,SAAS4vJ,EAAgBC,GACvB,OAAO9P,EAAU8P,EAAU,mBAAmBx6B,cAChD,CACA,SAASy6B,EAAgBD,GACvB,OAAO9P,EAAU8P,EAAU,mBAAmBnzJ,SAASg6C,SACzD,CACA,SAASq5G,EAAuBlzH,GAC9B,IAAImzH,GAAW,EAIf,OAHInzH,EAAIgiG,aACNmxB,EAAkG,GAAvFvN,EAAIpC,cAAcxjH,EAAIgiG,WAAYhiG,EAAIozH,aAAcpzH,EAAIqzH,UAAWrzH,EAAIszH,cAE7EH,CACT,CAIA,IAAII,EAA4B/U,EAAar7I,OAAQ,gBACnDqwJ,EAAyB38B,EAAK4nB,aAAa5+I,SAAU,aACvDy/I,EAASiU,0BAA4BA,EACrCjU,EAASkU,uBAAyBA,EAClC,IAAIC,EAAuBD,KAA4BD,GAA6BnU,EAAIp2I,OAAOy2I,iBAC/F,GAAIgU,EACFjB,EAAqBS,EACrB7T,EAAIsU,iBAAmB,SAAUV,GAC/B,IAAIt3H,EAAMwnH,EAAU8P,EAAU,oBAAoBnzJ,SAChD8zJ,EAAYj4H,EAAIme,UAGlB,MAAyB,QAAlB85G,EAAU7yJ,MAAkBmiJ,EAAY0Q,EAAUx+C,cAAcptC,kBAAoBrsC,CAC7F,MACK,KAAI63H,EAOT,OADAr0J,EAAO6wC,KAAK,kEACL,EANPyiH,EAAqBO,EACrB3T,EAAIsU,iBAAmB,WACrB,OAAO,CACT,CAIF,CACAtU,EAAIoT,mBAAqBA,EACzB,IAAIoB,EAAgBpB,IAGpB,IAAKoB,EAEH,OADA10J,EAAO6wC,KAAK,oDACL,EAET,IAAIuwG,EAAYlB,EAAI2Q,kBAAkBlwJ,UAClCg4C,EAAOonG,EAAQp/I,UAGfg0J,EAA6Bh9B,EAAKkoB,kBAAkB6U,EAAe,CAAC,aAAc,YAAa,eAAgB,gBACnHtU,EAASuU,2BAA6BA,EAGtC,IAAIC,EAAqBtV,EAAaoV,EAAe,UACrDtU,EAASwU,mBAAqBA,EAG9B,IAAIC,EAA+BvV,EAAaoV,EAAe,oBAC/DtU,EAASyU,6BAA+BA,EAGxC,IAAIC,SAAgCJ,EAAcn7B,YAAck6B,EAChErT,EAAS0U,uBAAyBA,EAClC,IAAIC,GAAkC,EAClCC,GAA0C,EAC1CC,EAA2BL,EAAqB,SAAUM,EAAiBn8B,GAC7E,IAAIv8F,EAAMwzH,EAASpJ,iBAAiB7tB,GAChCk6B,EAAW/S,EAAIjqC,YAAYz5E,GAC/By2H,EAASnF,gBAAgB/0B,EAAM4G,aAAc5G,EAAMa,WACnDs7B,EAAgBryB,SAASsyB,EAAelC,IACxCiC,EAAgBjvJ,OAAO8yH,EAAMuG,eAAgBvG,EAAMY,YACrD,EAAI,KACAhC,EAAKgoB,eAAe+U,EAAe,CAAC,WAAY,aAAc,4BAA8BA,EAAcn7B,YAAck6B,GAAUrT,EAASiB,oBAC7I,WAOE,IAAIvgH,EAAM78B,OAAOq1H,eACjB,GAAIx4F,EAAK,CAMP,IAJA,IAAIs0H,EAA8Bt0H,EAAIy4F,WAClC87B,EAA6BD,EAA8B,EAC3DE,EAA0B,GAC1BC,EAA4BvB,EAAuBlzH,GAC9C7hC,EAAI,EAAGA,EAAIm2J,IAA+Bn2J,EACjDq2J,EAAwBr2J,GAAK6hC,EAAI04F,WAAWv6H,GAI9C,IAAIu2J,EAAS9O,EAAItB,kBAAkBzkJ,SAAU,IAAI,GAC7C08H,EAAWm4B,EAAOnzJ,YAAY1B,SAASu6C,eAAe,iBAGtD40G,EAAKnvJ,SAASs1G,cASlB,GARA65C,EAAG9vB,SAAS3C,EAAU,GACtByyB,EAAG91B,UAAS,GACZl5F,EAAI8hG,kBACJ9hG,EAAI+hG,SAASitB,GACbkF,EAA4D,GAAlBl0H,EAAIy4F,WAC9Cz4F,EAAI8hG,mBAGCyyB,EAA4B,CAM/B,IAAII,EAAcxxJ,OAAOk4E,UAAUu5E,WAAW5nJ,MAAM,kBACpD,GAAI2nJ,GAAez8I,SAASy8I,EAAY,KAAO,GAC7CV,GAAkC,MAC7B,CACL,IAAIhF,EAAKD,EAAGh2B,aACZg2B,EAAG9vB,SAAS3C,EAAU,GACtB0yB,EAAG1wB,OAAOhC,EAAU,GACpB0yB,EAAG/vB,SAAS3C,EAAU,GACtBv8F,EAAI+hG,SAASitB,GACbhvH,EAAI+hG,SAASktB,GACbgF,EAAoD,GAAlBj0H,EAAIy4F,UACxC,CACF,CAKA,IAFAmtB,EAAInB,WAAWiQ,GACf10H,EAAI8hG,kBACC3jI,EAAI,EAAGA,EAAIm2J,IAA+Bn2J,EACpC,GAALA,GAAUs2J,EACRN,EACFA,EAAyBn0H,EAAKw0H,EAAwBr2J,KAEtDihJ,EAAIj2I,KAAK,yJACT62B,EAAI+hG,SAASyyB,EAAwBr2J,KAGvC6hC,EAAI+hG,SAASyyB,EAAwBr2J,GAG3C,CACD,CApED,GAsEFmhJ,EAAS2U,gCAAkCA,EAC3C3U,EAAS4U,wCAA0CA,EAGnD,IACEW,EA0IEC,EA3IAC,GAAyB,EAoB7B,SAASC,EAA8Bh1H,EAAKi4F,EAAOk7B,GACjD,IAAI8B,EAAe9B,EAAW,MAAQ,QACpC+B,EAAc/B,EAAW,QAAU,MACrCnzH,EAAIgiG,WAAa/J,EAAMg9B,EAAe,aACtCj1H,EAAIozH,aAAen7B,EAAMg9B,EAAe,UACxCj1H,EAAIqzH,UAAYp7B,EAAMi9B,EAAc,aACpCl1H,EAAIszH,YAAcr7B,EAAMi9B,EAAc,SACxC,CACA,SAASC,EAAwCn1H,GAC/C,IAAI2zH,EAAY3zH,EAAIo0H,gBACpBp0H,EAAIgiG,WAAa2xB,EAAU3xB,WAC3BhiG,EAAIozH,aAAeO,EAAUP,aAC7BpzH,EAAIqzH,UAAYM,EAAUN,UAC1BrzH,EAAIszH,YAAcK,EAAUL,WAC9B,CACA,SAAS8B,EAAqBp1H,GAC5BA,EAAIgiG,WAAahiG,EAAIqzH,UAAY,KACjCrzH,EAAIozH,aAAepzH,EAAIszH,YAAc,EACrCtzH,EAAIy4F,WAAa,EACjBz4F,EAAIygG,aAAc,EAClBzgG,EAAIq1H,QAAQh3J,OAAS,EACrBi3J,EAAWt1H,EACb,CACA,SAASs1H,EAAWt1H,GAClBA,EAAIl/B,KAAyB,GAAlBk/B,EAAIy4F,WAAkB,OAASg6B,EAAqBzyH,GAAO,QAAU,OAClF,CACA,SAASq0H,EAAep8B,GACtB,IAAIs3B,EAUJ,OATIt3B,aAAiBi3B,IACnBK,EAAcnQ,EAAI2Q,kBAAkB93B,EAAMgrB,gBAC9B1kB,OAAOtG,EAAM4G,aAAc5G,EAAMa,WAC7Cy2B,EAAYrwB,SAASjH,EAAMuG,eAAgBvG,EAAMY,cACxCZ,aAAiBk3B,EAC1BI,EAAct3B,EAAMs3B,YACXjQ,EAASiB,oBAAsBtoB,aAAiB2tB,EAAI1C,UAAUjrB,EAAMuG,gBAAgB+pB,QAC7FgH,EAAct3B,GAETs3B,CACT,CACA,SAASgG,EAA2BC,GAClC,IAAKA,EAAWn3J,QAAoC,GAA1Bm3J,EAAW,GAAGt6H,SACtC,OAAO,EAET,IAAK,IAAI/8B,EAAI,EAAG2J,EAAM0tJ,EAAWn3J,OAAQF,EAAI2J,IAAO3J,EAClD,IAAKynJ,EAAIvD,aAAamT,EAAW,GAAIA,EAAWr3J,IAC9C,OAAO,EAGX,OAAO,CACT,CACA,SAASs3J,EAA0Bx9B,GACjC,IAAI/9E,EAAQ+9E,EAAMu2B,WAClB,IAAK+G,EAA2Br7G,GAC9B,MAAMh7C,EAAOyiJ,YAAY,oCAAsC1pB,EAAM9oG,UAAY,wCAEnF,OAAO+qB,EAAM,EACf,CAGA,SAAS8kG,EAAY/mB,GACnB,QAASA,GAA8B,oBAAdA,EAAMt8F,IACjC,CACA,SAAS+5H,EAAoB11H,EAAKi4F,GAEhC,IAAI09B,EAAe,IAAIxG,EAAal3B,GACpCj4F,EAAIq1H,QAAU,CAACM,GACfX,EAA8Bh1H,EAAK21H,GAAc,GACjD31H,EAAIy4F,WAAa,EACjBz4F,EAAIygG,YAAck1B,EAAa3N,UAC/BsN,EAAWt1H,EACb,CACA,SAAS41H,EAAuB51H,GAG9B,GADAA,EAAIq1H,QAAQh3J,OAAS,EACQ,QAAzB2hC,EAAI61H,aAAa/0J,KACnBs0J,EAAqBp1H,OAChB,CACL,IAAI81H,EAAe91H,EAAI61H,aAAa1gD,cACpC,GAAI6pC,EAAY8W,GAIdJ,EAAoB11H,EAAK81H,OACpB,CACL91H,EAAIy4F,WAAaq9B,EAAaz3J,OAG9B,IAFA,IAAI45H,EACFv8F,EAAMunH,EAAY6S,EAAaxoI,KAAK,IAC7BnvB,EAAI,EAAGA,EAAI6hC,EAAIy4F,aAAct6H,GACpC85H,EAAQmnB,EAAIjqC,YAAYz5E,IAClBk9F,WAAWk9B,EAAaxoI,KAAKnvB,IACnC6hC,EAAIq1H,QAAQ12J,KAAKs5H,GAEnBj4F,EAAIygG,YAAgC,GAAlBzgG,EAAIy4F,YAAmBz4F,EAAIq1H,QAAQ,GAAGrN,UACxDgN,EAA8Bh1H,EAAKA,EAAIq1H,QAAQr1H,EAAIy4F,WAAa,IAAI,GACpE68B,EAAWt1H,EACb,CACF,CACF,CACA,SAAS+1H,EAA2B/1H,EAAKi4F,GAQvC,IAPA,IAAI69B,EAAe91H,EAAI61H,aAAa1gD,cAChC6gD,EAAeP,EAA0Bx9B,GAIzCv8F,EAAMunH,EAAY6S,EAAaxoI,KAAK,IACpC2oI,EAAkBhX,EAAQvjH,GAAKw6H,qBAC1B/3J,EAAI,EAAG2J,EAAMguJ,EAAaz3J,OAAQF,EAAI2J,IAAO3J,EACpD83J,EAAgB97I,IAAI27I,EAAaxoI,KAAKnvB,IAExC,IACE83J,EAAgB97I,IAAI67I,EACtB,CAAE,MAAOrmH,GACP,MAAMzwC,EAAOyiJ,YAAY,gHAC3B,CACAsU,EAAgB3xH,SAGhBsxH,EAAuB51H,EACzB,CA2BA,SAAS8yH,EAAiBj5G,EAAWg8G,EAAch7F,GACjDhzD,KAAKusJ,gBAAkBv6G,EACvBhyC,KAAKguJ,aAAeA,EACpBhuJ,KAAKwtJ,QAAU,GACfxtJ,KAAKgzD,IAAMA,EACXhzD,KAAK44D,SACP,CAEA,SAAS01F,EAAiBn2H,GACxBA,EAAI66B,IAAM76B,EAAIgiG,WAAahiG,EAAIqzH,UAAYrzH,EAAIq1H,QAAU,KACzDr1H,EAAIy4F,WAAaz4F,EAAIozH,aAAepzH,EAAIszH,YAAc,EACtDtzH,EAAIo2H,UAAW,EACfd,EAAWt1H,EACb,CAhLI6X,GAAQ2mG,EAAa3mG,EAAM,wBAC7Bg9G,EAAmBh9G,EAAKq+G,qBACpBr/B,EAAKkoB,kBAAkB8V,EAAkB,CAAC,OAAQ,UACpDE,GAAyB,IAG7BzV,EAASyV,uBAAyBA,EAIhCtC,EADEoB,EACqB,SAAU7zH,GAC/B,OAAOA,EAAIgiG,aAAehiG,EAAIqzH,WAAarzH,EAAIozH,eAAiBpzH,EAAIszH,WACtE,EAEuB,SAAUtzH,GAC/B,QAAOA,EAAIy4F,YAAaz4F,EAAI04F,WAAW14F,EAAIy4F,WAAa,GAAGuvB,SAC7D,EA0HExJ,EAAaoV,EAAe,cAI9BkB,EAAsB,SAAU90H,EAAKnK,GACnC,IACE,OAAOmK,EAAI04F,WAAW7iG,EACxB,CAAE,MAAO8Z,GACP,OAAO,IACT,CACF,EACSkkH,IACTiB,EAAsB,SAAU90H,GAC9B,IAAItE,EAAMunH,EAAYjjH,EAAIgiG,YACtB/J,EAAQmnB,EAAIjqC,YAAYz5E,GAQ5B,OAPAu8F,EAAMkyB,eAAenqH,EAAIgiG,WAAYhiG,EAAIozH,aAAcpzH,EAAIqzH,UAAWrzH,EAAIszH,aAItEr7B,EAAM+vB,YAAcngJ,KAAK44H,aAC3BxI,EAAMkyB,eAAenqH,EAAIqzH,UAAWrzH,EAAIszH,YAAatzH,EAAIgiG,WAAYhiG,EAAIozH,cAEpEn7B,CACT,GASF66B,EAAiBv0J,UAAY6gJ,EAAI0C,mBAOjC,IAAIuU,EAAwB,GAC5B,SAASC,EAAqBz7F,EAAK6E,GAIjC,IAHA,IACE/0B,EACA3K,EAFE7hC,EAAIk4J,EAAsBh4J,OAGvBF,KAGL,GADA6hC,GADA2K,EAAS0rH,EAAsBl4J,IAClB07C,UACC,aAAV6lB,EACFy2F,EAAiBn2H,QACZ,GAAI2K,EAAOkwB,KAAOA,EACvB,MAAc,UAAV6E,GACF22F,EAAsB74H,OAAOr/B,EAAG,IACzB,GAEA6hC,EAOb,MAHc,aAAV0/B,IACF22F,EAAsBh4J,OAAS,GAE1B,IACT,CACA,IAAIm6H,GAAe,SAAU39D,GAE3B,GAAIA,GAAOA,aAAei4F,EAExB,OADAj4F,EAAI4F,UACG5F,EAGT,IAAI76B,EAAMs2H,EADVz7F,EAAMqoF,EAAUroF,EAAK,uBAEjB84F,EAAYnB,EAAmB33F,GACjC07F,EAAS/C,EAAyBP,EAAgBp4F,GAAO,KAY3D,OAXI76B,GACFA,EAAIo0H,gBAAkBT,EACtB3zH,EAAI61H,aAAeU,EACnBv2H,EAAIygC,YAEJzgC,EAAM,IAAI8yH,EAAiBa,EAAW4C,EAAQ17F,GAC9Cw7F,EAAsB13J,KAAK,CACzBk8D,IAAKA,EACLhhB,UAAW7Z,KAGRA,CACT,EACAo/G,EAAI5mB,aAAeA,GACnB3B,EAAK+pB,+BAA+BxB,EAAK,qBAAsB,gBAC/D,IA8JIoX,GA9JAC,GAAW3D,EAAiBv0J,UAChC,SAASm4J,GAAuB12H,EAAK22H,GAInC,IAFA,IAEgBhyH,EAFZjJ,EAAMunH,EAAY0T,EAAO,GAAGn4B,gBAC5Bs3B,EAAe7W,EAAQvjH,GAAKw6H,qBACvB/3J,EAAI,EAAO2J,EAAM6uJ,EAAOt4J,OAAQF,EAAI2J,IAAO3J,EAAG,CACrDwmC,EAAK8wH,EAA0BkB,EAAOx4J,IACtC,IACE23J,EAAa37I,IAAIwqB,EACnB,CAAE,MAAOgL,GACP,MAAMzwC,EAAOyiJ,YAAY,yHAC3B,CACF,CACAmU,EAAaxxH,SAGbsxH,EAAuB51H,EACzB,CAGA,IAAKyzH,GAAwBI,GAA8Bh9B,EAAKgoB,eAAe+U,EAAe,CAAC,kBAAmB,aAAc,CAC9H6C,GAAS30B,gBAAkB,WACzBj6H,KAAKusJ,gBAAgBtyB,kBACrBszB,EAAqBvtJ,KACvB,EACA,IAAI+uJ,GAAmB,SAAU52H,EAAKi4F,GACpCk8B,EAAyBn0H,EAAIo0H,gBAAiBn8B,GAC9Cj4F,EAAIygC,SACN,EAEEg2F,GAAS10B,SADPiyB,EACkB,SAAU/7B,EAAO5rG,GACnC,GAAI0oI,GAA0BvB,GAA0B3rJ,KAAKguJ,aAAa/0J,MAAQ8xJ,EAChFmD,EAA2BluJ,KAAMowH,QAEjC,GAAI46B,EAAoBxmI,IAAcynI,EACpC8C,GAAiB/uJ,KAAMowH,OAClB,CACL,IAAI4+B,EACA5C,EACF4C,EAAqBhvJ,KAAK4wH,YAE1B5wH,KAAKi6H,kBACL+0B,EAAqB,GAKvB,IAAIC,EAAoBzC,EAAep8B,GAAOe,aAC9C,IACEnxH,KAAKusJ,gBAAgBryB,SAAS+0B,EAChC,CAAE,MAAOnnH,GAAK,CAId,GADA9nC,KAAK4wH,WAAa5wH,KAAKusJ,gBAAgB37B,WACnC5wH,KAAK4wH,YAAco+B,EAAqB,EAAG,CAK7C,GAAIzX,EAAIp2I,OAAOupJ,qBAAsB,CACnC,IAAIhD,EAAcuF,EAAoBjtJ,KAAKusJ,gBAAiBvsJ,KAAK4wH,WAAa,GAC1E82B,IAAgBR,EAAYQ,EAAat3B,KAE3CA,EAAQ,IAAIk3B,EAAaI,GAE7B,CACA1nJ,KAAKwtJ,QAAQxtJ,KAAK4wH,WAAa,GAAKR,EACpC+8B,EAA8BntJ,KAAMowH,EAAO8+B,GAAoBlvJ,KAAKusJ,kBACpEvsJ,KAAK44H,YAAcgyB,EAAqB5qJ,MACxCytJ,EAAWztJ,KACb,MAEEA,KAAK44D,SAET,CAEJ,EAEoB,SAAUw3D,EAAO5rG,GAC/BwmI,EAAoBxmI,IAAcynI,EACpC8C,GAAiB/uJ,KAAMowH,IAEvBpwH,KAAKusJ,gBAAgBryB,SAASsyB,EAAep8B,IAC7CpwH,KAAK44D,UAET,EAEFg2F,GAASO,UAAY,SAAUL,GAC7B,GAAI5B,GAA0BvB,GAA0BmD,EAAOt4J,OAAS,EACtEq4J,GAAuB7uJ,KAAM8uJ,OACxB,CACL9uJ,KAAKi6H,kBACL,IAAK,IAAI3jI,EAAI,EAAG2J,EAAM6uJ,EAAOt4J,OAAQF,EAAI2J,IAAO3J,EAC9C0J,KAAKk6H,SAAS40B,EAAOx4J,GAEzB,CACF,CACF,KAAO,MAAIqgJ,EAAaoV,EAAe,UAAYpV,EAAa8B,EAAW,WAAayU,GAA0BtB,GAmDhH,OADAv0J,EAAO6wC,KAAK,yDACL,EAlDP0mH,GAAS30B,gBAAkB,WAEzB,IAIE,GAHAj6H,KAAKguJ,aAAajwJ,QAGY,QAA1BiC,KAAKguJ,aAAa/0J,KAAgB,CAGpC,IAAI46B,EACJ,GAAI7zB,KAAKm6H,WACPtmG,EAAMunH,EAAYp7I,KAAKm6H,iBAClB,GAAIn6H,KAAKguJ,aAAa/0J,MAAQ8xJ,EAAS,CAC5C,IAAIkD,EAAejuJ,KAAKguJ,aAAa1gD,cACjC2gD,EAAaz3J,SACfq9B,EAAMunH,EAAY6S,EAAaxoI,KAAK,IAExC,CACIoO,IACcujH,EAAQvjH,GAAK+kH,kBACnBn8G,SACVz8B,KAAKguJ,aAAajwJ,QAEtB,CACF,CAAE,MAAO+pC,GAAK,CACdylH,EAAqBvtJ,KACvB,EACA4uJ,GAAS10B,SAAW,SAAU9J,GACxBpwH,KAAKguJ,aAAa/0J,MAAQ8xJ,EAC5BmD,EAA2BluJ,KAAMowH,IAEjCmnB,EAAIgQ,iBAAiB6C,iBAAiBh6B,GAAO3zF,SAC7Cz8B,KAAKwtJ,QAAQ,GAAKp9B,EAClBpwH,KAAK4wH,WAAa,EAClB5wH,KAAK44H,YAAc54H,KAAKwtJ,QAAQ,GAAGrN,UACnCgN,EAA8BntJ,KAAMowH,GAAO,GAC3Cq9B,EAAWztJ,MAEf,EACA4uJ,GAASO,UAAY,SAAUL,GAC7B9uJ,KAAKi6H,kBACL,IAAIrJ,EAAak+B,EAAOt4J,OACpBo6H,EAAa,EACfi+B,GAAuB7uJ,KAAM8uJ,GACpBl+B,GACT5wH,KAAKk6H,SAAS40B,EAAO,GAEzB,CAIF,CAUA,GATAF,GAAS/9B,WAAa,SAAU7iG,GAC9B,GAAIA,EAAQ,GAAKA,GAAShuB,KAAK4wH,WAC7B,MAAM,IAAIj3B,EAAa,kBAGvB,OAAO35F,KAAKwtJ,QAAQx/H,GAAOmjG,YAE/B,EAEIy6B,EACF+C,GAAmB,SAAUx2H,GAC3B,IAAIi4F,EACAmnB,EAAIsU,iBAAiB1zH,EAAI66B,KAC3Bo9D,EAAQj4F,EAAI61H,aAAa1gD,eAEzB8iB,EAAQgnB,EAAQj/G,EAAI66B,IAAIh7D,UAAU4gJ,mBAC5BvnB,UAAS,GAEbl5F,EAAI61H,aAAa/0J,MAAQ8xJ,EAC3BgD,EAAuB51H,GACdg/G,EAAY/mB,GACrBy9B,EAAoB11H,EAAKi4F,GAEzBm9B,EAAqBp1H,EAEzB,OACK,GAAIw+G,EAAaoV,EAAe,sBAAwBA,EAAcn7B,YAAck6B,EACzF6D,GAAmB,SAAUx2H,GAC3B,GAAI+0H,GAA0BvB,GAA0BxzH,EAAI61H,aAAa/0J,MAAQ8xJ,EAC/EgD,EAAuB51H,QAGvB,GADAA,EAAIq1H,QAAQh3J,OAAS2hC,EAAIy4F,WAAaz4F,EAAIo0H,gBAAgB37B,WACtDz4F,EAAIy4F,WAAY,CAClB,IAAK,IAAIt6H,EAAI,EAAG2J,EAAMk4B,EAAIy4F,WAAYt6H,EAAI2J,IAAO3J,EAC/C6hC,EAAIq1H,QAAQl3J,GAAK,IAAIihJ,EAAI+P,aAAanvH,EAAIo0H,gBAAgB17B,WAAWv6H,IAEvE62J,EAA8Bh1H,EAAKA,EAAIq1H,QAAQr1H,EAAIy4F,WAAa,GAAIs+B,GAAoB/2H,EAAIo0H,kBAC5Fp0H,EAAIygG,YAAcgyB,EAAqBzyH,GACvCs1H,EAAWt1H,EACb,MACEo1H,EAAqBp1H,EAG3B,MACK,KAAI6zH,UAAqCD,EAAcnzB,aAAeiyB,UAAkBpS,EAAU0H,WAAa0K,IAAWpT,EAASiB,mBAiBxI,OADArhJ,EAAO6wC,KAAK,mFACL,EAhBPymH,GAAmB,SAAUx2H,GAC3B,IAAIi4F,EACF07B,EAAY3zH,EAAIo0H,gBACdT,EAAU3xB,YACZ/J,EAAQ68B,EAAoBnB,EAAW,GACvC3zH,EAAIq1H,QAAU,CAACp9B,GACfj4F,EAAIy4F,WAAa,EACjB08B,EAAwCn1H,GACxCA,EAAIygG,YAAcgyB,EAAqBzyH,GACvCs1H,EAAWt1H,IAEXo1H,EAAqBp1H,EAEzB,CAIF,CACAy2H,GAASh2F,QAAU,SAAUw2F,GAC3B,IAAIC,EAAYD,EAAkBpvJ,KAAKwtJ,QAAQhyJ,MAAM,GAAK,KACtD8zJ,EAAgBtvJ,KAAKm6H,WACvBo1B,EAAkBvvJ,KAAKurJ,aAEzB,GADAoD,GAAiB3uJ,MACbovJ,EAAiB,CAEnB,IAAI94J,EAAI+4J,EAAU74J,OAClB,GAAIF,GAAK0J,KAAKwtJ,QAAQh3J,OACpB,OAAO,EAKT,GAAIwJ,KAAKm6H,YAAcm1B,GAAiBtvJ,KAAKurJ,cAAgBgE,EAC3D,OAAO,EAIT,KAAOj5J,KACL,IAAK4wJ,EAAYmI,EAAU/4J,GAAI0J,KAAKwtJ,QAAQl3J,IAC1C,OAAO,EAGX,OAAO,CACT,CACF,EAGA,IA+CI44J,GA/CAM,GAAsB,SAAUr3H,EAAKi4F,GACvC,IAAI0+B,EAAS32H,EAAIs3H,eACjBt3H,EAAI8hG,kBACJ,IAAK,IAAI3jI,EAAI,EAAG2J,EAAM6uJ,EAAOt4J,OAAQF,EAAI2J,IAAO3J,EACzC4wJ,EAAY92B,EAAO0+B,EAAOx4J,KAC7B6hC,EAAI+hG,SAAS40B,EAAOx4J,IAGnB6hC,EAAIy4F,YACP28B,EAAqBp1H,EAEzB,EA6DA,SAASu3H,GAAyBv3H,EAAKvE,GACrC,GAAIuE,EAAI66B,IAAIh7D,UAAYojJ,EAAYxnH,GAClC,MAAM,IAAI+lE,EAAa,qBAE3B,CACA,SAAS+nD,GAAkB9tH,EAAMpS,GAC/B,GAAIA,EAAS,GAAKA,GAAUu8H,EAAIjD,oBAAoBlnH,GAAQA,EAAKp9B,OAASo9B,EAAK0H,WAAW9kC,QACxF,MAAM,IAAImjG,EAAa,iBAE3B,CA2GA,SAASg2D,GAAuB3L,GAC9B,OAAO,SAAUpwH,EAAMpS,GACrB,IAAI4uG,EACApwH,KAAK4wH,YACPR,EAAQpwH,KAAK6wH,WAAW,IAClB,OAASmzB,EAAU,QAAU,QAAQpwH,EAAMpS,IAEjD4uG,EAAQmnB,EAAIjqC,YAAYttG,KAAKgzD,IAAIh7D,WAC3BsqJ,eAAe1uH,EAAMpS,GAE7BxhB,KAAK4vJ,eAAex/B,EAAOpwH,KAAK6vJ,aAClC,CACF,CAkFA,SAASvoI,GAAQ6Q,GACf,IAAI23H,EAAgB,GAChB5oI,EAAS,IAAI81H,EAAY7kH,EAAIgiG,WAAYhiG,EAAIozH,cAC7CpqH,EAAQ,IAAI67G,EAAY7kH,EAAIqzH,UAAWrzH,EAAIszH,aAC3CpyJ,EAA6B,mBAAf8+B,EAAI8nH,QAAwB9nH,EAAI8nH,UAAY,YAC9D,GAA6B,oBAAlB9nH,EAAIy4F,WACb,IAAK,IAAIt6H,EAAI,EAAG2J,EAAMk4B,EAAIy4F,WAAYt6H,EAAI2J,IAAO3J,EAC/Cw5J,EAAcx5J,GAAK+wJ,EAAS//H,QAAQ6Q,EAAI04F,WAAWv6H,IAGvD,MAAO,IAAM+C,EAAO,YAAcy2J,EAAc/tJ,KAAK,MAAQ,aAAemlB,EAAOI,UAAY,YAAc6Z,EAAM7Z,UAAY,GACjI,CAxREsnI,GAASmB,YADP7C,GAA0BvB,EACL,SAAUv7B,GAC/B,GAAIpwH,KAAKguJ,aAAa/0J,MAAQ8xJ,EAAS,CAUrC,IATA,IAAIkD,EAAejuJ,KAAKguJ,aAAa1gD,cACjC6gD,EAAeP,EAA0Bx9B,GAIzCv8F,EAAMunH,EAAY6S,EAAaxoI,KAAK,IACpC2oI,EAAkBhX,EAAQvjH,GAAKw6H,qBAEjC2B,GAAU,EACH15J,EAAI,EAAG2J,EAAMguJ,EAAaz3J,OAAQF,EAAI2J,IAAO3J,EAC/C23J,EAAaxoI,KAAKnvB,KACZ63J,GAAgB6B,EACzB5B,EAAgB97I,IAAI27I,EAAaxoI,KAAKnvB,IAEtC05J,GAAU,EAGd5B,EAAgB3xH,SAGhBsxH,EAAuB/tJ,KACzB,MACEwvJ,GAAoBxvJ,KAAMowH,EAE9B,EAEuB,SAAUA,GAC/Bo/B,GAAoBxvJ,KAAMowH,EAC5B,GAKGw7B,GAAwBI,GAA8BvU,EAASiB,oBAClEwW,GAAsB7D,EACtBuD,GAASiB,WAAa,WACpB,OAAOX,GAAoBlvJ,KAC7B,GAEAkvJ,GAAsBN,GAASiB,WAAa,WAC1C,OAAO,CACT,EAIFjB,GAASqB,YAAcrB,GAASiB,WAKhCjB,GAASxyJ,SAAW,WAElB,IADA,IAAI8zJ,EAAa,GACR55J,EAAI,EAAG2J,EAAMD,KAAK4wH,WAAYt6H,EAAI2J,IAAO3J,EAChD45J,EAAW55J,GAAK,GAAK0J,KAAKwtJ,QAAQl3J,GAEpC,OAAO45J,EAAWnuJ,KAAK,GACzB,EAaA6sJ,GAASv9B,SAAW,SAAUz9F,EAAMpS,GAClCkuI,GAAyB1vJ,KAAM4zB,GAC/B,IAAIw8F,EAAQmnB,EAAIjqC,YAAY15E,GAC5Bw8F,EAAM+0B,gBAAgBvxH,EAAMpS,GAC5BxhB,KAAK4vJ,eAAex/B,GACpBpwH,KAAK44H,aAAc,CACrB,EACAg2B,GAAS90B,gBAAkB,WACzB,IAAI95H,KAAK4wH,WAIP,MAAM,IAAIj3B,EAAa,qBAHvB,IAAIy2B,EAAQpwH,KAAKwtJ,QAAQ,GACzBxtJ,KAAKqxH,SAASjB,EAAMuG,eAAgBvG,EAAMY,YAI9C,EACA49B,GAAS70B,cAAgB,WACvB,IAAI/5H,KAAK4wH,WAIP,MAAM,IAAIj3B,EAAa,qBAHvB,IAAIy2B,EAAQpwH,KAAKwtJ,QAAQxtJ,KAAK4wH,WAAa,GAC3C5wH,KAAKqxH,SAASjB,EAAM4G,aAAc5G,EAAMa,UAI5C,EAIA29B,GAASuB,kBAAoB,SAAUv8H,GACrC87H,GAAyB1vJ,KAAM4zB,GAC/B,IAAIw8F,EAAQmnB,EAAIjqC,YAAY15E,GAC5Bw8F,EAAM7iB,mBAAmB35E,GACzB5zB,KAAK4vJ,eAAex/B,EACtB,EACI87B,EACF0C,GAASwB,iBAAmB,SAAUj2B,EAAYoxB,EAAcC,EAAWC,GACzEzrJ,KAAKusJ,gBAAgB6D,iBAAiBj2B,EAAYoxB,EAAcC,EAAWC,GAC3EzrJ,KAAK44D,SACP,EACSqzF,IACT2C,GAASwB,iBAAmB,SAAUj2B,EAAYoxB,EAAcC,EAAWC,GACzE/J,GAAkBvnB,EAAYoxB,GAC9B7J,GAAkB8J,EAAWC,GAC7BiE,GAAyB1vJ,KAAMm6H,GAC/Bu1B,GAAyB1vJ,KAAMwrJ,GAC/B,IAAIp7B,EAAQmnB,EAAIjqC,YAAY15E,MACxBq8H,GAAsF,GAAxElS,EAAIpC,cAAcxhB,EAAYoxB,EAAcC,EAAWC,GACrEwE,EACF7/B,EAAMkyB,eAAekJ,EAAWC,EAAatxB,EAAYoxB,GAEzDn7B,EAAMkyB,eAAenoB,EAAYoxB,EAAcC,EAAWC,GAE5DzrJ,KAAK4vJ,eAAex/B,EAAO6/B,EAC7B,GAEFrB,GAASyB,mBAAqB,WAE5B,GAAInD,GAA0BvB,GAA0B3rJ,KAAKguJ,aAAa/0J,MAAQ8xJ,EAAS,CAGzF,IAFA,IACI5zF,EADA82F,EAAejuJ,KAAKguJ,aAAa1gD,cAE9B2gD,EAAaz3J,QAClB2gE,EAAU82F,EAAaxoI,KAAK,GAC5BwoI,EAAa/kH,OAAOiuB,GACpB4mF,EAAInB,WAAWzlF,GAEjBn3D,KAAK44D,SACP,MAAO,GAAI54D,KAAK4wH,WAAY,CAC1B,IAAIk+B,EAAS9uJ,KAAKyvJ,eAClB,GAAIX,EAAOt4J,OAAQ,CACjBwJ,KAAKi6H,kBACL,IAAK,IAAI3jI,EAAI,EAAG2J,EAAM6uJ,EAAOt4J,OAAQF,EAAI2J,IAAO3J,EAC9Cw4J,EAAOx4J,GAAGk3G,iBAIZxtG,KAAKk6H,SAAS40B,EAAO7uJ,EAAM,GAC7B,CACF,CACF,EAGA2uJ,GAAS0B,UAAY,SAAUtrJ,EAAMgxC,GACnC,IAAK,IAAI1/C,EAAI,EAAG2J,EAAMD,KAAKwtJ,QAAQh3J,OAAQF,EAAI2J,IAAO3J,EACpD,GAAI0O,EAAKhF,KAAK6wH,WAAWv6H,IACvB,OAAO0/C,CAGb,EACA44G,GAASa,aAAe,WACtB,IAAIX,EAAS,GAIb,OAHA9uJ,KAAKswJ,WAAU,SAAUlgC,GACvB0+B,EAAOh4J,KAAKs5H,EACd,IACO0+B,CACT,EACAF,GAASgB,eAAiB,SAAUx/B,EAAO5rG,GACzCxkB,KAAKi6H,kBACLj6H,KAAKk6H,SAAS9J,EAAO5rG,EACvB,EACAoqI,GAAS2B,sBAAwB,SAAU/4F,EAAYpF,GACrD,IAAIx7B,EAAU,GAId,OAHA52B,KAAKswJ,WAAU,SAAUlgC,GACvBx5F,EAAQ9/B,KAAKs5H,EAAM54D,GAAY37D,MAAMu0H,EAAOh+D,GAAU,IACxD,IACOx7B,CACT,EAcAg4H,GAASv3B,SAAWs4B,IAAuB,GAC3Cf,GAASl4B,OAASi5B,IAAuB,GAGzCpY,EAAIyC,eAAev9G,OAAS,SAAUjY,GACpCmsG,GAAa3wH,KAAKo7I,eAAewU,eAAe5vJ,KAAMwkB,EACxD,EACAoqI,GAAS4B,gBAAkB,SAAUxrJ,GACnC,IAAI8pJ,EAAS,GACTxD,EAAWtrJ,KAAK6vJ,aACpB7vJ,KAAKswJ,WAAU,SAAUlgC,GACvBprH,EAAKorH,GACL0+B,EAAOh4J,KAAKs5H,EACd,IACApwH,KAAKi6H,kBACDqxB,GAA6B,GAAjBwD,EAAOt4J,OACrBwJ,KAAKk6H,SAAS40B,EAAO,GAAI,YAEzB9uJ,KAAKmvJ,UAAUL,EAEnB,EACAF,GAASj1B,aAAe,SAAU/lG,EAAM0yH,GACtC,OAAOtmJ,KAAKswJ,WAAU,SAAUlgC,GAC9B,OAAOA,EAAMuJ,aAAa/lG,EAAM0yH,EAClC,IAAG,KAAS,CACd,EACAsI,GAAS9H,YAAc,SAAUC,GAC/B,MAAO,CACLuE,SAAUtrJ,KAAK6vJ,aACfY,eAAgBzwJ,KAAKuwJ,sBAAsB,cAAe,CAACxJ,IAE/D,EACA6H,GAAS5H,eAAiB,SAAUC,GAElC,IADA,IACgByJ,EAAetgC,EAD3BugC,EAAY,GACPr6J,EAAI,EAAyBo6J,EAAgBzJ,EAASwJ,eAAen6J,OAC5E85H,EAAQmnB,EAAIjqC,YAAYttG,KAAKgzD,MACvBg0F,eAAe0J,GACrBC,EAAU75J,KAAKs5H,GAEb62B,EAASqE,SACXtrJ,KAAK4vJ,eAAee,EAAU,GAAI,YAElC3wJ,KAAKmvJ,UAAUwB,EAEnB,EACA/B,GAASgC,WAAa,WACpB,MAAO,CACLtF,SAAUtrJ,KAAK6vJ,aACff,OAAQ9uJ,KAAKuwJ,sBAAsB,cAEvC,EACA3B,GAASiC,cAAgB,SAAUF,GACjC3wJ,KAAKi6H,kBACL,IAAK,IAAW7J,EAAP95H,EAAI,EAAU85H,EAAQugC,EAAU7B,OAAOx4J,KAAMA,EACpD0J,KAAKk6H,SAAS9J,EAAOugC,EAAUrF,UAAiB,GAALh1J,EAE/C,EACAs4J,GAAS/I,OAAS,WAChB,IAAIiL,EAAa,GAIjB,OAHA9wJ,KAAKswJ,WAAU,SAAUlgC,GACvB0gC,EAAWh6J,KAAKuwJ,EAASxB,OAAOz1B,GAClC,IACO0gC,EAAW/uJ,KAAK,GACzB,EACI01I,EAASkB,sBACXiW,GAASmC,mBAAqB,WAC5B,IAAI54H,EACJ,GAAIA,EAAMn4B,KAAKguJ,aAAc,CAC3B,IAAI59B,EAAQj4F,EAAIm1E,cAChB,GAAI6pC,EAAY/mB,GACd,OAAOA,EAEP,MAAM/4H,EAAOyiJ,YAAY,uDAE7B,CAAO,GAAI95I,KAAK4wH,WAAa,EAC3B,OAAO2mB,EAAIgQ,iBAAiB6C,iBAAiBpqJ,KAAK6wH,WAAW,IAE7D,MAAMx5H,EAAOyiJ,YAAY,kDAE7B,GAcF8U,GAAS3O,QAAU,WACjB,MAAO,kBACT,EACA2O,GAAStnI,QAAU,WACjB,OAAOA,GAAQtnB,KACjB,EACA4uJ,GAASr0G,OAAS,WAChBk0G,EAAqBzuJ,KAAKgzD,IAAK,UAC/Bs7F,EAAiBtuJ,KACnB,EACAirJ,EAAiB+F,UAAY,WAC3BvC,EAAqB,KAAM,YAC7B,EACAxD,EAAiB3jI,QAAUA,GAC3B2jI,EAAiBD,oBAAsBA,EACvCzT,EAAIphB,UAAY80B,EAChB1T,EAAI0C,mBAAqB2U,GACzBrX,EAAImC,iBAAgB,SAAU1mF,GACG,oBAApBA,EAAI29D,eACb39D,EAAI29D,aAAe,WACjB,OAAOA,GAAa39D,EACtB,GAEFA,EAAM,IACR,GACF,IAKA,IAAIi+F,GAAW,EACXC,EAAc,SAAU35J,GACrB05J,IACHA,GAAW,GACN1Z,EAAI9zC,aAAe8zC,EAAIp2I,OAAO02I,gBACjCtjH,IAGN,EAcA,OAbI+iH,IAEyB,YAAvBt/I,SAASm0C,WACX+kH,KAEIva,EAAa3+I,SAAU,qBACzBA,SAAS2lC,iBAAiB,mBAAoBuzH,GAAa,GAI7D7Z,EAAY/7I,OAAQ,OAAQ41J,KAGzB3Z,CACT,OA75GkB,8D,gCCZlB,IAAItB,EAAQ,EAAQ,IAEpB5+I,EAAOD,SAAW6+I,GAAM,WAEtB,IAAIpwI,EAAO,WAA4B,EAAE/K,OAEzC,MAAsB,mBAAR+K,GAAsBA,EAAKlP,eAAe,YAC1D,G,+BCPA,IAAIw6J,EAAc,EAAQ,IACtBC,EAAiB,EAAQ,IACzBC,EAA0B,EAAQ,KAClCC,EAAW,EAAQ,IACnBC,EAAgB,EAAQ,IAExBC,EAAa9mH,UAEb+mH,EAAkBh7J,OAAOwD,eAEzBy3J,EAA4Bj7J,OAAO2qE,yBACnCuwF,EAAa,aACbC,EAAe,eACfC,EAAW,WAIfz6J,EAAQkvE,EAAI6qF,EAAcE,EAA0B,SAAwBS,EAAG7rF,EAAG8rF,GAIhF,GAHAT,EAASQ,GACT7rF,EAAIsrF,EAActrF,GAClBqrF,EAASS,GACQ,oBAAND,GAA0B,cAAN7rF,GAAqB,UAAW8rF,GAAcF,KAAYE,IAAeA,EAAWF,GAAW,CAC5H,IAAIriG,EAAUkiG,EAA0BI,EAAG7rF,GACvCzW,GAAWA,EAAQqiG,KACrBC,EAAE7rF,GAAK8rF,EAAWx3J,MAClBw3J,EAAa,CACX1kH,aAAcukH,KAAgBG,EAAaA,EAAWH,GAAgBpiG,EAAQoiG,GAC9E13J,WAAYy3J,KAAcI,EAAaA,EAAWJ,GAAcniG,EAAQmiG,GACxEh8G,UAAU,GAGhB,CAAE,OAAO87G,EAAgBK,EAAG7rF,EAAG8rF,EACjC,EAAIN,EAAkB,SAAwBK,EAAG7rF,EAAG8rF,GAIlD,GAHAT,EAASQ,GACT7rF,EAAIsrF,EAActrF,GAClBqrF,EAASS,GACLX,EAAgB,IAClB,OAAOK,EAAgBK,EAAG7rF,EAAG8rF,EAC/B,CAAE,MAAOt5J,GAAqB,CAC9B,GAAI,QAASs5J,GAAc,QAASA,EAAY,MAAM,IAAIP,EAAW,2BAErE,MADI,UAAWO,IAAYD,EAAE7rF,GAAK8rF,EAAWx3J,OACtCu3J,CACT,C,kBC3CA,WAKA,SAAWp/H,GACT,aAIE,EAAO,CAAC,MAAW,EAKpB,SAAU+hC,GAGXA,EAAEu9F,GAAKv9F,EAAEu9F,IAAM,CAAC,EACFv9F,EAAEu9F,GAAGhgI,QAAU,SAA7B,IAiBIigI,EAAa,EACbC,EAAuB/1J,MAAMzF,UAAUC,eACvCw7J,EAAch2J,MAAMzF,UAAU8E,MAClCi5D,EAAExa,WAAsBrB,EAYtB6b,EAAExa,UAXK,SAAUllB,GACf,IAAI6e,EAAQlf,EAAMp+B,EAClB,IAAKA,EAAI,EAAwB,OAApBo+B,EAAOK,EAAMz+B,IAAaA,KAErCs9C,EAAS6gB,EAAE5zC,MAAM6T,EAAM,YACTkf,EAAO1K,QACnBurB,EAAE//B,GAAMg1B,eAAe,UAG3B9Q,EAAK7jB,EACP,GAEF0/B,EAAE29F,OAAS,SAAU/4J,EAAM+qB,EAAM1tB,GAC/B,IAAI27J,EAAqBz9H,EAAa09H,EAIlCC,EAAmB,CAAC,EACpBx7H,EAAY19B,EAAK4U,MAAM,KAAK,GAE5BukJ,EAAWz7H,EAAY,KAD3B19B,EAAOA,EAAK4U,MAAM,KAAK,IAsGvB,OApGKvX,IACHA,EAAY0tB,EACZA,EAAOqwC,EAAEg+F,QAEPt2J,MAAMF,QAAQvF,KAChBA,EAAY+9D,EAAEn3D,OAAOzB,MAAM,KAAM,CAAC,CAAC,GAAGgX,OAAOnc,KAI/C+9D,EAAEj2B,KAAKjF,QAAQi5H,EAAShqJ,eAAiB,SAAUksB,GACjD,QAAS+/B,EAAEx+D,KAAKy+B,EAAM89H,EACxB,EACA/9F,EAAE19B,GAAa09B,EAAE19B,IAAc,CAAC,EAChCs7H,EAAsB59F,EAAE19B,GAAW19B,GACnCu7B,EAAc6/B,EAAE19B,GAAW19B,GAAQ,SAAUu8B,EAASuhC,GAEpD,IAAKn3D,OAASA,KAAK0yJ,cACjB,OAAO,IAAI99H,EAAYgB,EAASuhC,GAK9Br7D,UAAUtF,QACZwJ,KAAK0yJ,cAAc98H,EAASuhC,EAEhC,EAGA1C,EAAEn3D,OAAOs3B,EAAay9H,EAAqB,CACzCrgI,QAASt7B,EAAUs7B,QAGnB86C,OAAQrY,EAAEn3D,OAAO,CAAC,EAAG5G,GAGrBi8J,mBAAoB,MAEtBL,EAAgB,IAAIluI,GAKNwR,QAAU6+B,EAAE29F,OAAO90J,OAAO,CAAC,EAAGg1J,EAAc18H,SAC1D6+B,EAAEv/B,KAAKx+B,GAAW,SAAU6J,EAAMhG,GAKhCg4J,EAAiBhyJ,GAJI,oBAAVhG,EAIc,WACvB,SAASiiE,IACP,OAAOp4C,EAAK1tB,UAAU6J,GAAM1E,MAAMmE,KAAMlE,UAC1C,CACA,SAAS82J,EAAY/wJ,GACnB,OAAOuiB,EAAK1tB,UAAU6J,GAAM1E,MAAMmE,KAAM6B,EAC1C,CACA,OAAO,WACL,IAEIm0C,EAFA68G,EAAU7yJ,KAAKw8D,OACfs2F,EAAe9yJ,KAAK4yJ,YAOxB,OALA5yJ,KAAKw8D,OAASA,EACdx8D,KAAK4yJ,YAAcA,EACnB58G,EAAcz7C,EAAMsB,MAAMmE,KAAMlE,WAChCkE,KAAKw8D,OAASq2F,EACd7yJ,KAAK4yJ,YAAcE,EACZ98G,CACT,CACF,CAlByB,GAHEz7C,CAsB7B,IACAq6B,EAAYl+B,UAAY+9D,EAAE29F,OAAO90J,OAAOg1J,EAAe,CAIrDS,kBAAmBV,GAAsBC,EAAcS,mBAA4B15J,GAClFk5J,EAAkB,CACnB39H,YAAaA,EACbmC,UAAWA,EACXi8H,WAAY35J,EACZ45J,eAAgBT,IAOdH,GACF59F,EAAEv/B,KAAKm9H,EAAoBM,oBAAoB,SAAUr8J,EAAG24H,GAC1D,IAAIikC,EAAiBjkC,EAAMv4H,UAI3B+9D,EAAE29F,OAAOc,EAAen8H,UAAY,IAAMm8H,EAAeF,WAAYp+H,EAAaq6F,EAAMniD,OAC1F,WAIOulF,EAAoBM,oBAE3BvuI,EAAKuuI,mBAAmB77J,KAAK89B,GAE/B6/B,EAAE29F,OAAOe,OAAO95J,EAAMu7B,GACfA,CACT,EACA6/B,EAAE29F,OAAO90J,OAAS,SAAUnE,GAM1B,IALA,IAGI0B,EACAN,EAJA2B,EAAQi2J,EAAYv7J,KAAKkF,UAAW,GACpCs3J,EAAa,EACbC,EAAcn3J,EAAM1F,OAGjB48J,EAAaC,EAAaD,IAC/B,IAAKv4J,KAAOqB,EAAMk3J,GAChB74J,EAAQ2B,EAAMk3J,GAAYv4J,GACtBq3J,EAAqBt7J,KAAKsF,EAAMk3J,GAAav4J,SAAkBtB,IAAVgB,IAEnDk6D,EAAEz+B,cAAcz7B,GAClBpB,EAAO0B,GAAO45D,EAAEz+B,cAAc78B,EAAO0B,IAAQ45D,EAAE29F,OAAO90J,OAAO,CAAC,EAAGnE,EAAO0B,GAAMN,GAE9Ek6D,EAAE29F,OAAO90J,OAAO,CAAC,EAAG/C,GAIpBpB,EAAO0B,GAAON,GAKtB,OAAOpB,CACT,EACAs7D,EAAE29F,OAAOe,OAAS,SAAU95J,EAAM2B,GAChC,IAAIw3J,EAAWx3J,EAAOtE,UAAUu8J,gBAAkB55J,EAClDo7D,EAAEt3D,GAAG9D,GAAQ,SAAUu8B,GACrB,IAAI09H,EAAkC,kBAAZ19H,EACtB/zB,EAAOswJ,EAAYv7J,KAAKkF,UAAW,GACnCk6C,EAAch2C,KA4ClB,OA3CIszJ,EAGGtzJ,KAAKxJ,QAAsB,aAAZo/B,EAGlB51B,KAAKk1B,MAAK,WACR,IAAIq+H,EACAznE,EAAWr3B,EAAEx+D,KAAK+J,KAAMwyJ,GAC5B,MAAgB,aAAZ58H,GACFogB,EAAc81C,GACP,GAEJA,EAG4B,oBAAtBA,EAASl2D,IAAiD,MAAtBA,EAAQ5f,OAAO,GACrDy+C,EAAEh8D,MAAM,mBAAqBm9B,EAAU,SAAWv8B,EAAO,qBAElEk6J,EAAcznE,EAASl2D,GAAS/5B,MAAMiwF,EAAUjqF,MAC5BiqF,QAA4BvyF,IAAhBg6J,GAC9Bv9G,EAAcu9G,GAAeA,EAAY5+H,OAASqhB,EAAYlhB,UAAUy+H,EAAYp5J,OAASo5J,GACtF,QAFT,EANS9+F,EAAEh8D,MAAM,0BAA4BY,EAA5B,uDAAiGu8B,EAAU,IAU9H,IApBAogB,OAAcz8C,GAwBZsI,EAAKrL,SACPo/B,EAAU6+B,EAAE29F,OAAO90J,OAAOzB,MAAM,KAAM,CAAC+5B,GAAS/iB,OAAOhR,KAEzD7B,KAAKk1B,MAAK,WACR,IAAI42D,EAAWr3B,EAAEx+D,KAAK+J,KAAMwyJ,GACxB1mE,GACFA,EAASh7C,OAAOlb,GAAW,CAAC,GACxBk2D,EAAS0nE,OACX1nE,EAAS0nE,SAGX/+F,EAAEx+D,KAAK+J,KAAMwyJ,EAAU,IAAIx3J,EAAO46B,EAAS51B,MAE/C,KAEKg2C,CACT,CACF,EACAye,EAAEg+F,OAAS,WAAoC,EAC/Ch+F,EAAEg+F,OAAOE,mBAAqB,GAC9Bl+F,EAAEg+F,OAAO/7J,UAAY,CACnBs8J,WAAY,SACZD,kBAAmB,GACnBU,eAAgB,QAChB79H,QAAS,CACP4uC,QAAS,CAAC,EACVnpC,UAAU,EAEVzgC,OAAQ,MAEV83J,cAAe,SAAU98H,EAASuhC,GAChCA,EAAU1C,EAAE0C,GAAWn3D,KAAKyzJ,gBAAkBzzJ,MAAM,GACpDA,KAAKm3D,QAAU1C,EAAE0C,GACjBn3D,KAAK6+F,KAAOozD,IACZjyJ,KAAK0zJ,eAAiB,IAAM1zJ,KAAKgzJ,WAAahzJ,KAAK6+F,KACnD7+F,KAAK41D,SAAWnB,IAChBz0D,KAAK2zJ,UAAYl/F,IACjBz0D,KAAK4zJ,UAAYn/F,IACjBz0D,KAAK6zJ,qBAAuB,CAAC,EACzB18F,IAAYn3D,OACdy0D,EAAEx+D,KAAKkhE,EAASn3D,KAAKizJ,eAAgBjzJ,MACrCA,KAAK8zJ,KAAI,EAAM9zJ,KAAKm3D,QAAS,CAC3BjuB,OAAQ,SAAUvwC,GACZA,EAAMQ,SAAWg+D,GACnBn3D,KAAKi9E,SAET,IAEFj9E,KAAKhI,SAAWy8D,EAAE0C,EAAQloB,MAE1BkoB,EAAQjgC,cAERigC,EAAQn/D,UAAYm/D,GACpBn3D,KAAK1E,OAASm5D,EAAEz0D,KAAKhI,SAAS,GAAGylC,aAAez9B,KAAKhI,SAAS,GAAGyxD,eAEnEzpD,KAAK41B,QAAU6+B,EAAE29F,OAAO90J,OAAO,CAAC,EAAG0C,KAAK41B,QAAS51B,KAAK+zJ,oBAAqBn+H,GAC3E51B,KAAKg0J,UACDh0J,KAAK41B,QAAQyF,UACfr7B,KAAKi0J,mBAAmBj0J,KAAK41B,QAAQyF,UAEvCr7B,KAAKk0J,SAAS,SAAU,KAAMl0J,KAAKm0J,uBACnCn0J,KAAKwzJ,OACP,EACAO,kBAAmB,WACjB,MAAO,CAAC,CACV,EACAI,oBAAqB1/F,EAAEr+B,KACvB49H,QAASv/F,EAAEr+B,KACXo9H,MAAO/+F,EAAEr+B,KACT6mD,QAAS,WACP,IAAIn2D,EAAO9mB,KACXA,KAAKo0J,WACL3/F,EAAEv/B,KAAKl1B,KAAK6zJ,sBAAsB,SAAUh5J,EAAKN,GAC/CusB,EAAKutI,aAAa95J,EAAOM,EAC3B,IAIAmF,KAAKm3D,QAAQpkB,IAAI/yC,KAAK0zJ,gBAAgB3lH,WAAW/tC,KAAKizJ,gBACtDjzJ,KAAKoyJ,SAASr/G,IAAI/yC,KAAK0zJ,gBAAgBtsG,WAAW,iBAGlDpnD,KAAK41D,SAAS7iB,IAAI/yC,KAAK0zJ,eACzB,EACAU,SAAU3/F,EAAEr+B,KACZg8H,OAAQ,WACN,OAAOpyJ,KAAKm3D,OACd,EACArmB,OAAQ,SAAUj2C,EAAKN,GACrB,IACIwnB,EACAuyI,EACAh+J,EAHAs/B,EAAU/6B,EAId,GAAyB,IAArBiB,UAAUtF,OAEZ,OAAOi+D,EAAE29F,OAAO90J,OAAO,CAAC,EAAG0C,KAAK41B,SAElC,GAAmB,kBAAR/6B,EAKT,GAHA+6B,EAAU,CAAC,EACX7T,EAAQlnB,EAAIoT,MAAM,KAClBpT,EAAMknB,EAAM9qB,QACR8qB,EAAMvrB,OAAQ,CAEhB,IADA89J,EAAY1+H,EAAQ/6B,GAAO45D,EAAE29F,OAAO90J,OAAO,CAAC,EAAG0C,KAAK41B,QAAQ/6B,IACvDvE,EAAI,EAAGA,EAAIyrB,EAAMvrB,OAAS,EAAGF,IAChCg+J,EAAUvyI,EAAMzrB,IAAMg+J,EAAUvyI,EAAMzrB,KAAO,CAAC,EAC9Cg+J,EAAYA,EAAUvyI,EAAMzrB,IAG9B,GADAuE,EAAMknB,EAAMwV,MACa,IAArBz7B,UAAUtF,OACZ,YAA0B+C,IAAnB+6J,EAAUz5J,GAAqB,KAAOy5J,EAAUz5J,GAEzDy5J,EAAUz5J,GAAON,CACnB,KAAO,CACL,GAAyB,IAArBuB,UAAUtF,OACZ,YAA6B+C,IAAtByG,KAAK41B,QAAQ/6B,GAAqB,KAAOmF,KAAK41B,QAAQ/6B,GAE/D+6B,EAAQ/6B,GAAON,CACjB,CAGF,OADAyF,KAAKu0J,YAAY3+H,GACV51B,IACT,EACAu0J,YAAa,SAAU3+H,GACrB,IAAI/6B,EACJ,IAAKA,KAAO+6B,EACV51B,KAAKw0J,WAAW35J,EAAK+6B,EAAQ/6B,IAE/B,OAAOmF,IACT,EACAw0J,WAAY,SAAU35J,EAAKN,GAQzB,MAPY,YAARM,GACFmF,KAAKy0J,kBAAkBl6J,GAEzByF,KAAK41B,QAAQ/6B,GAAON,EACR,aAARM,GACFmF,KAAKi0J,mBAAmB15J,GAEnByF,IACT,EACAy0J,kBAAmB,SAAUl6J,GAC3B,IAAIm6J,EAAUj2H,EAAUk2H,EACxB,IAAKD,KAAYn6J,EACfo6J,EAAkB30J,KAAK6zJ,qBAAqBa,GACxCn6J,EAAMm6J,KAAc10J,KAAK41B,QAAQ4uC,QAAQkwF,IAAcC,GAAoBA,EAAgBn+J,SAQ/FioC,EAAWg2B,EAAEkgG,EAAgBx6J,OAC7B6F,KAAKq0J,aAAaM,EAAiBD,GAMnCj2H,EAASwpB,SAASjoD,KAAK40J,SAAS,CAC9Bz9F,QAAS14B,EACTx8B,KAAMyyJ,EACNlwF,QAASjqE,EACT+X,KAAK,KAGX,EACA2hJ,mBAAoB,SAAU15J,GAC5ByF,KAAK60J,aAAa70J,KAAKoyJ,SAAUpyJ,KAAKizJ,eAAiB,YAAa,OAAQ14J,GAGxEA,IACFyF,KAAKq0J,aAAar0J,KAAK2zJ,UAAW,KAAM,kBACxC3zJ,KAAKq0J,aAAar0J,KAAK4zJ,UAAW,KAAM,kBAE5C,EACAtqE,OAAQ,WACN,OAAOtpF,KAAKu0J,YAAY,CACtBl5H,UAAU,GAEd,EACA8N,QAAS,WACP,OAAOnpC,KAAKu0J,YAAY,CACtBl5H,UAAU,GAEd,EACAu5H,SAAU,SAAUh/H,GAClB,IAAIk/H,EAAO,GACPhuI,EAAO9mB,KAKX,SAAS+0J,IACP,IAAIC,EAAc,GAClBp/H,EAAQuhC,QAAQjiC,MAAK,SAAUmT,EAAG8uB,GAChB1C,EAAEx3D,IAAI6pB,EAAK+sI,sBAAsB,SAAUp1H,GACzD,OAAOA,CACT,IAAG9iC,MAAK,SAAU8iC,GAChB,OAAOA,EAASoH,GAAGsxB,EACrB,KAEE69F,EAAYl+J,KAAKqgE,EAErB,IACArwC,EAAKgtI,IAAIr/F,EAAEugG,GAAc,CACvB9rH,OAAQ,0BAEZ,CACA,SAAS+rH,EAAmBzwF,EAAS0wF,GACnC,IAAI1lG,EAASl5D,EACb,IAAKA,EAAI,EAAGA,EAAIkuE,EAAQhuE,OAAQF,IAC9Bk5D,EAAU1oC,EAAK+sI,qBAAqBrvF,EAAQluE,KAAOm+D,IAC/C7+B,EAAQtjB,KACVyiJ,IACAvlG,EAAUiF,EAAEA,EAAE51B,WAAW2wB,EAAQr1D,MAAM0Y,OAAO+iB,EAAQuhC,QAAQh9D,UAE9Dq1D,EAAUiF,EAAEjF,EAAQ7uB,IAAI/K,EAAQuhC,SAASh9D,OAE3C2sB,EAAK+sI,qBAAqBrvF,EAAQluE,IAAMk5D,EACxCslG,EAAKh+J,KAAK0tE,EAAQluE,IACd4+J,GAAet/H,EAAQ4uC,QAAQA,EAAQluE,KACzCw+J,EAAKh+J,KAAK8+B,EAAQ4uC,QAAQA,EAAQluE,IAGxC,CAOA,OA3CAs/B,EAAU6+B,EAAEn3D,OAAO,CACjB65D,QAASn3D,KAAKm3D,QACdqN,QAASxkE,KAAK41B,QAAQ4uC,SAAW,CAAC,GACjC5uC,IAkCS3zB,MACVgzJ,EAAmBr/H,EAAQ3zB,KAAKkD,MAAM,SAAW,IAAI,GAEnDywB,EAAQ+pB,OACVs1G,EAAmBr/H,EAAQ+pB,MAAMx6C,MAAM,SAAW,IAE7C2vJ,EAAK/yJ,KAAK,IACnB,EACAozJ,uBAAwB,SAAUx8J,GAChC,IAAImuB,EAAO9mB,KACXy0D,EAAEv/B,KAAKpO,EAAK+sI,sBAAsB,SAAUh5J,EAAKN,IACP,IAApCk6D,EAAE59B,QAAQl+B,EAAMQ,OAAQoB,KAC1BusB,EAAK+sI,qBAAqBh5J,GAAO45D,EAAEl6D,EAAMomC,IAAIhoC,EAAMQ,QAAQgB,OAE/D,IACA6F,KAAKo1J,KAAK3gG,EAAE97D,EAAMQ,QACpB,EACAk7J,aAAc,SAAUl9F,EAASl1D,EAAM09C,GACrC,OAAO3/C,KAAK60J,aAAa19F,EAASl1D,EAAM09C,GAAO,EACjD,EACA01G,UAAW,SAAUl+F,EAASl1D,EAAM09C,GAClC,OAAO3/C,KAAK60J,aAAa19F,EAASl1D,EAAM09C,GAAO,EACjD,EACAk1G,aAAc,SAAU19F,EAASl1D,EAAM09C,EAAOrtC,GAC5CA,EAAqB,mBAARA,EAAoBA,EAAMqtC,EACvC,IAAI1oD,EAA2B,kBAAZkgE,GAAoC,OAAZA,EACzCvhC,EAAU,CACR+pB,MAAO1oD,EAAQgL,EAAO09C,EACtB19C,KAAMhL,EAAQkgE,EAAUl1D,EACxBk1D,QAASlgE,EAAQ+I,KAAKm3D,QAAUA,EAChC7kD,IAAKA,GAGT,OADAsjB,EAAQuhC,QAAQ7O,YAAYtoD,KAAK40J,SAASh/H,GAAUtjB,GAC7CtS,IACT,EACA8zJ,IAAK,SAAUwB,EAAuBn+F,EAASrjB,GAC7C,IAAIyhH,EACAzpE,EAAW9rF,KAGsB,mBAA1Bs1J,IACTxhH,EAAWqjB,EACXA,EAAUm+F,EACVA,GAAwB,GAIrBxhH,GAKHqjB,EAAUo+F,EAAkB9gG,EAAE0C,GAC9Bn3D,KAAK41D,SAAW51D,KAAK41D,SAAStjD,IAAI6kD,KALlCrjB,EAAWqjB,EACXA,EAAUn3D,KAAKm3D,QACfo+F,EAAkBv1J,KAAKoyJ,UAKzB39F,EAAEv/B,KAAK4e,GAAU,SAAUn7C,EAAO4xC,GAChC,SAASirH,IAIP,GAAKF,IAAwD,IAA9BxpE,EAASl2D,QAAQyF,WAAqBo5B,EAAEz0D,MAAMyoD,SAAS,qBAGtF,OAA2B,kBAAZle,EAAuBuhD,EAASvhD,GAAWA,GAAS1uC,MAAMiwF,EAAUhwF,UACrF,CAGuB,kBAAZyuC,IACTirH,EAAan+H,KAAOkT,EAAQlT,KAAOkT,EAAQlT,MAAQm+H,EAAan+H,MAAQo9B,EAAEp9B,QAE5E,IAAIlyB,EAAQxM,EAAMwM,MAAM,sBACpB0vD,EAAY1vD,EAAM,GAAK2mF,EAAS4nE,eAChCr/H,EAAWlvB,EAAM,GACjBkvB,EACFkhI,EAAgB5iH,GAAGkiB,EAAWxgC,EAAUmhI,GAExCr+F,EAAQxkB,GAAGkiB,EAAW2gG,EAE1B,GACF,EACAJ,KAAM,SAAUj+F,EAAStC,GACvBA,GAAaA,GAAa,IAAI5mD,MAAM,KAAKlM,KAAK/B,KAAK0zJ,eAAiB,KAAO1zJ,KAAK0zJ,eAChFv8F,EAAQpkB,IAAI8hB,GAGZ70D,KAAK41D,SAAWnB,EAAEz0D,KAAK41D,SAASj1B,IAAIw2B,GAASh9D,OAC7C6F,KAAK4zJ,UAAYn/F,EAAEz0D,KAAK4zJ,UAAUjzH,IAAIw2B,GAASh9D,OAC/C6F,KAAK2zJ,UAAYl/F,EAAEz0D,KAAK2zJ,UAAUhzH,IAAIw2B,GAASh9D,MACjD,EACAs7J,OAAQ,SAAUlrH,EAASwc,GACzB,SAASyuG,IACP,OAA2B,kBAAZjrH,EAAuBuhD,EAASvhD,GAAWA,GAAS1uC,MAAMiwF,EAAUhwF,UACrF,CACA,IAAIgwF,EAAW9rF,KACf,OAAOxG,WAAWg8J,EAAczuG,GAAS,EAC3C,EACA2uG,WAAY,SAAUv+F,GACpBn3D,KAAK2zJ,UAAY3zJ,KAAK2zJ,UAAUrhJ,IAAI6kD,GACpCn3D,KAAK8zJ,IAAI38F,EAAS,CAChB3e,WAAY,SAAU7/C,GACpBqH,KAAKq1J,UAAU5gG,EAAE97D,EAAMu8C,eAAgB,KAAM,iBAC/C,EACAuD,WAAY,SAAU9/C,GACpBqH,KAAKq0J,aAAa5/F,EAAE97D,EAAMu8C,eAAgB,KAAM,iBAClD,GAEJ,EACAygH,WAAY,SAAUx+F,GACpBn3D,KAAK4zJ,UAAY5zJ,KAAK4zJ,UAAUthJ,IAAI6kD,GACpCn3D,KAAK8zJ,IAAI38F,EAAS,CAChBy+F,QAAS,SAAUj9J,GACjBqH,KAAKq1J,UAAU5gG,EAAE97D,EAAMu8C,eAAgB,KAAM,iBAC/C,EACA2gH,SAAU,SAAUl9J,GAClBqH,KAAKq0J,aAAa5/F,EAAE97D,EAAMu8C,eAAgB,KAAM,iBAClD,GAEJ,EACAg/G,SAAU,SAAUj7J,EAAMN,EAAO1C,GAC/B,IAAIsK,EAAMq4C,EACN58C,EAAWgE,KAAK41B,QAAQ38B,GAW5B,GAVAhD,EAAOA,GAAQ,CAAC,GAChB0C,EAAQ87D,EAAEhf,MAAM98C,IACVM,MAAQA,IAAS+G,KAAK+yJ,kBAAoB95J,EAAO+G,KAAK+yJ,kBAAoB95J,GAAMuP,cAItF7P,EAAMQ,OAAS6G,KAAKm3D,QAAQ,GAG5Bve,EAAOjgD,EAAM+8C,cAEX,IAAKn1C,KAAQq4C,EACLr4C,KAAQ5H,IACZA,EAAM4H,GAAQq4C,EAAKr4C,IAKzB,OADAP,KAAKm3D,QAAQ3jB,QAAQ76C,EAAO1C,KACC,oBAAb+F,IAAqF,IAA1DA,EAASH,MAAMmE,KAAKm3D,QAAQ,GAAI,CAACx+D,GAAOka,OAAO5c,KAAoB0C,EAAMu9C,qBACtH,GAEFue,EAAEv/B,KAAK,CACLgb,KAAM,SACNC,KAAM,YACL,SAAUlI,EAAQ6tH,GACnBrhG,EAAEg+F,OAAO/7J,UAAU,IAAMuxC,GAAU,SAAUkvB,EAASvhC,EAAS55B,GAM7D,IAAI+5J,EALmB,kBAAZngI,IACTA,EAAU,CACRogI,OAAQpgI,IAIZ,IAAIqgI,EAAcrgI,GAA+B,IAAZA,GAAuC,kBAAZA,EAAuBkgI,EAAgBlgI,EAAQogI,QAAUF,EAA7F7tH,EAEL,kBADvBrS,EAAUA,GAAW,CAAC,GAEpBA,EAAU,CACRzV,SAAUyV,IAES,IAAZA,IACTA,EAAU,CAAC,GAEbmgI,GAActhG,EAAEn+B,cAAcV,GAC9BA,EAAQmvB,SAAW/oD,EACf45B,EAAQmxB,OACVoQ,EAAQpQ,MAAMnxB,EAAQmxB,OAEpBgvG,GAActhG,EAAEyhG,SAAWzhG,EAAEyhG,QAAQF,OAAOC,GAC9C9+F,EAAQlvB,GAAQrS,GACPqgI,IAAehuH,GAAUkvB,EAAQ8+F,GAC1C9+F,EAAQ8+F,GAAYrgI,EAAQzV,SAAUyV,EAAQuqB,OAAQnkD,GAEtDm7D,EAAQtuB,OAAM,SAAUlxB,GACtB88C,EAAEz0D,MAAMioC,KACJjsC,GACFA,EAASpF,KAAKugE,EAAQ,IAExBx/C,GACF,GAEJ,CACF,IA9kBc,IAAUihC,EA+kBX6b,EAAE29F,QAmBf,WACE,IAAI+D,EACF7xJ,EAAMJ,KAAKI,IACXH,EAAMD,KAAKC,IACXiyJ,EAAc,oBACdC,EAAY,oBACZC,EAAU,wBACVC,EAAY,OACZC,EAAW,KACXC,EAAYhiG,EAAEt3D,GAAGggD,SACnB,SAASu5G,EAAWh5E,EAAS3hC,EAAOmC,GAClC,MAAO,CAACp+B,WAAW49D,EAAQ,KAAO84E,EAAS3wJ,KAAK63E,EAAQ,IAAM3hC,EAAQ,IAAM,GAAIj8B,WAAW49D,EAAQ,KAAO84E,EAAS3wJ,KAAK63E,EAAQ,IAAMx/B,EAAS,IAAM,GACvJ,CACA,SAASy4G,EAASx/F,EAASl8D,GACzB,OAAOoV,SAASokD,EAAEtlB,IAAIgoB,EAASl8D,GAAW,KAAO,CACnD,CACA,SAASq4B,EAAS52B,GAChB,OAAc,MAAPA,GAAeA,IAAQA,EAAIpB,MACpC,CACA,SAASs7J,EAAcliI,GACrB,IAAI8X,EAAM9X,EAAK,GACf,OAAqB,IAAjB8X,EAAInZ,SACC,CACL0oB,MAAOrnB,EAAKqnB,QACZmC,OAAQxpB,EAAKwpB,SACb18B,OAAQ,CACNkc,IAAK,EACLwkB,KAAM,IAIR5uB,EAASkZ,GACJ,CACLuP,MAAOrnB,EAAKqnB,QACZmC,OAAQxpB,EAAKwpB,SACb18B,OAAQ,CACNkc,IAAKhJ,EAAKouB,YACVZ,KAAMxtB,EAAKquB,eAIbvW,EAAI+G,eACC,CACLwI,MAAO,EACPmC,OAAQ,EACR18B,OAAQ,CACNkc,IAAK8O,EAAIwK,MACTkL,KAAM1V,EAAIuK,QAIT,CACLgF,MAAOrnB,EAAKmiI,aACZ34G,OAAQxpB,EAAKoiI,cACbt1I,OAAQkT,EAAKlT,SAEjB,CACAizC,EAAEtX,SAAW,CACXwmC,eAAgB,WACd,QAA6BpqF,IAAzB48J,EACF,OAAOA,EAET,IAAIY,EACFC,EACA3mH,EAAMokB,EAAE,6IACRwiG,EAAW5mH,EAAI5J,WAAW,GAS5B,OARAguB,EAAE,QAAQja,OAAOnK,GACjB0mH,EAAKE,EAAS55G,YACdhN,EAAIlB,IAAI,WAAY,UAEhB4nH,KADJC,EAAKC,EAAS55G,eAEZ25G,EAAK3mH,EAAI,GAAGuzC,aAEdvzC,EAAInH,SACGitH,EAAuBY,EAAKC,CACrC,EACAE,cAAe,SAAUC,GACvB,IAAI1xG,EAAY0xG,EAAO7jI,UAAY6jI,EAAOC,WAAa,GAAKD,EAAOhgG,QAAQhoB,IAAI,cAC7EuW,EAAYyxG,EAAO7jI,UAAY6jI,EAAOC,WAAa,GAAKD,EAAOhgG,QAAQhoB,IAAI,cAC3EkoH,EAA6B,WAAd5xG,GAAwC,SAAdA,GAAwB0xG,EAAOp7G,MAAQo7G,EAAOhgG,QAAQ,GAAGmgG,YAEpG,MAAO,CACLv7G,MAF6B,WAAd2J,GAAwC,SAAdA,GAAwByxG,EAAOj5G,OAASi5G,EAAOhgG,QAAQ,GAAGyqB,aAE7EntB,EAAEtX,SAASwmC,iBAAmB,EACpDzlC,OAAQm5G,EAAe5iG,EAAEtX,SAASwmC,iBAAmB,EAEzD,EACA4zE,cAAe,SAAUpgG,GACvB,IAAIqgG,EAAgB/iG,EAAE0C,GAAW77D,QAC/Bm8J,EAAenkI,EAASkkI,EAAc,IACtCJ,IAAeI,EAAc,IAAoC,IAA9BA,EAAc,GAAGnkI,SAEtD,MAAO,CACL8jC,QAASqgG,EACTlkI,SAAUmkI,EACVL,WAAYA,EACZ51I,QALai2I,IAAiBL,EAKV3iG,EAAE0C,GAAS31C,SAAW,CACxC0gC,KAAM,EACNxkB,IAAK,GAEPqlB,WAAYy0G,EAAcz0G,aAC1BD,UAAW00G,EAAc10G,YACzB/G,MAAOy7G,EAAcX,aACrB34G,OAAQs5G,EAAcV,cAE1B,GAEFriG,EAAEt3D,GAAGggD,SAAW,SAAUvnB,GACxB,IAAKA,IAAYA,EAAQ8hI,GACvB,OAAOjB,EAAU56J,MAAMmE,KAAMlE,WAK/B,IAAI67J,EACFC,EACAC,EACAC,EACAC,EACAC,EAEA7+J,EAA+B,kBARjCy8B,EAAU6+B,EAAEn3D,OAAO,CAAC,EAAGs4B,IAQG8hI,GAAkBjjG,EAAEz8D,UAAUwjC,KAAK5F,EAAQ8hI,IAAMjjG,EAAE7+B,EAAQ8hI,IACnFP,EAAS1iG,EAAEtX,SAASo6G,cAAc3hI,EAAQuhI,QAC1Cc,EAAaxjG,EAAEtX,SAAS+5G,cAAcC,GACtCe,GAAatiI,EAAQsiI,WAAa,QAAQjqJ,MAAM,KAChDyvE,EAAU,CAAC,EAmDb,OAlDAs6E,EAAapB,EAAcz9J,GACvBA,EAAO,GAAGo6C,iBAEZ3d,EAAQuiI,GAAK,YAEfP,EAAcI,EAAWj8G,MACzB87G,EAAeG,EAAW95G,OAC1B45G,EAAeE,EAAWx2I,OAG1Bu2I,EAAetjG,EAAEn3D,OAAO,CAAC,EAAGw6J,GAI5BrjG,EAAEv/B,KAAK,CAAC,KAAM,OAAO,WACnB,IACEkjI,EACAC,EAFE/hJ,GAAOsf,EAAQ51B,OAAS,IAAIiO,MAAM,KAGnB,IAAfqI,EAAI9f,SACN8f,EAAM8/I,EAAYvwJ,KAAKyQ,EAAI,IAAMA,EAAIzD,OAAO,CAAC,WAAawjJ,EAAUxwJ,KAAKyQ,EAAI,IAAM,CAAC,UAAUzD,OAAOyD,GAAO,CAAC,SAAU,WAEzHA,EAAI,GAAK8/I,EAAYvwJ,KAAKyQ,EAAI,IAAMA,EAAI,GAAK,SAC7CA,EAAI,GAAK+/I,EAAUxwJ,KAAKyQ,EAAI,IAAMA,EAAI,GAAK,SAG3C8hJ,EAAmB9B,EAAQl8I,KAAK9D,EAAI,IACpC+hJ,EAAiB/B,EAAQl8I,KAAK9D,EAAI,IAClConE,EAAQ19E,MAAQ,CAACo4J,EAAmBA,EAAiB,GAAK,EAAGC,EAAiBA,EAAe,GAAK,GAGlGziI,EAAQ51B,MAAQ,CAACu2J,EAAUn8I,KAAK9D,EAAI,IAAI,GAAIigJ,EAAUn8I,KAAK9D,EAAI,IAAI,GACrE,IAGyB,IAArB4hJ,EAAU1hK,SACZ0hK,EAAU,GAAKA,EAAU,IAEL,UAAlBtiI,EAAQuiI,GAAG,GACbJ,EAAa71G,MAAQ01G,EACM,WAAlBhiI,EAAQuiI,GAAG,KACpBJ,EAAa71G,MAAQ01G,EAAc,GAEf,WAAlBhiI,EAAQuiI,GAAG,GACbJ,EAAar6H,KAAOm6H,EACO,WAAlBjiI,EAAQuiI,GAAG,KACpBJ,EAAar6H,KAAOm6H,EAAe,GAErCF,EAAWjB,EAAWh5E,EAAQy6E,GAAIP,EAAaC,GAC/CE,EAAa71G,MAAQy1G,EAAS,GAC9BI,EAAar6H,KAAOi6H,EAAS,GACtB33J,KAAKk1B,MAAK,WACf,IAAIojI,EACFxlG,EACAp+B,EAAO+/B,EAAEz0D,MACTu4J,EAAY7jI,EAAKmiI,aACjB2B,EAAa9jI,EAAKoiI,cAClB/5G,EAAa45G,EAAS32J,KAAM,cAC5By4J,EAAY9B,EAAS32J,KAAM,aAC3B04J,EAAiBH,EAAYx7G,EAAa45G,EAAS32J,KAAM,eAAiBi4J,EAAWl8G,MACrF48G,EAAkBH,EAAaC,EAAY9B,EAAS32J,KAAM,gBAAkBi4J,EAAW/5G,OACvFf,EAAWsX,EAAEn3D,OAAO,CAAC,EAAGy6J,GACxBa,EAAWlC,EAAWh5E,EAAQm7E,GAAInkI,EAAKmiI,aAAcniI,EAAKoiI,eACtC,UAAlBlhI,EAAQijI,GAAG,GACb17G,EAAS+E,MAAQq2G,EACU,WAAlB3iI,EAAQijI,GAAG,KACpB17G,EAAS+E,MAAQq2G,EAAY,GAET,WAAlB3iI,EAAQijI,GAAG,GACb17G,EAASzf,KAAO86H,EACW,WAAlB5iI,EAAQijI,GAAG,KACpB17G,EAASzf,KAAO86H,EAAa,GAE/Br7G,EAAS+E,MAAQ02G,EAAS,GAC1Bz7G,EAASzf,KAAOk7H,EAAS,GACzBN,EAAoB,CAClBv7G,WAAYA,EACZ07G,UAAWA,GAEbhkG,EAAEv/B,KAAK,CAAC,OAAQ,QAAQ,SAAU5+B,EAAGyzB,GAC/B0qC,EAAEu9F,GAAG70G,SAAS+6G,EAAU5hK,KAC1Bm+D,EAAEu9F,GAAG70G,SAAS+6G,EAAU5hK,IAAIyzB,GAAKozB,EAAU,CACzCy6G,YAAaA,EACbC,aAAcA,EACdU,UAAWA,EACXC,WAAYA,EACZF,kBAAmBA,EACnBI,eAAgBA,EAChBC,gBAAiBA,EACjBn3I,OAAQ,CAACm2I,EAAS,GAAKiB,EAAS,GAAIjB,EAAS,GAAKiB,EAAS,IAC3DC,GAAIjjI,EAAQijI,GACZV,GAAIviI,EAAQuiI,GACZhB,OAAQA,EACRziI,KAAMA,GAGZ,IACIkB,EAAQk9B,QAEVA,EAAQ,SAAU7c,GAChB,IAAIiM,EAAO41G,EAAa51G,KAAO/E,EAAS+E,KACtClF,EAAQkF,EAAO01G,EAAcW,EAC7B76H,EAAMo6H,EAAap6H,IAAMyf,EAASzf,IAClCo7H,EAASp7H,EAAMm6H,EAAeW,EAC9BO,EAAW,CACT5/J,OAAQ,CACNg+D,QAASh+D,EACT+oD,KAAM41G,EAAa51G,KACnBxkB,IAAKo6H,EAAap6H,IAClBqe,MAAO67G,EACP15G,OAAQ25G,GAEV1gG,QAAS,CACPA,QAASziC,EACTwtB,KAAM/E,EAAS+E,KACfxkB,IAAKyf,EAASzf,IACdqe,MAAOw8G,EACPr6G,OAAQs6G,GAEVQ,WAAYh8G,EAAQ,EAAI,OAASkF,EAAO,EAAI,QAAU,SACtD+2G,SAAUH,EAAS,EAAI,MAAQp7H,EAAM,EAAI,SAAW,UAEpDk6H,EAAcW,GAAap0J,EAAI+9C,EAAOlF,GAAS46G,IACjDmB,EAASC,WAAa,UAEpBnB,EAAeW,GAAcr0J,EAAIu5B,EAAMo7H,GAAUjB,IACnDkB,EAASE,SAAW,UAElB30J,EAAIH,EAAI+9C,GAAO/9C,EAAI64C,IAAU14C,EAAIH,EAAIu5B,GAAMv5B,EAAI20J,IACjDC,EAASG,UAAY,aAErBH,EAASG,UAAY,WAEvBtjI,EAAQk9B,MAAMl8D,KAAKoJ,KAAMi2C,EAAO8iH,EAClC,GAEFrkI,EAAKlT,OAAOizC,EAAEn3D,OAAO6/C,EAAU,CAC7B2V,MAAOA,IAEX,GACF,EACA2B,EAAEu9F,GAAG70G,SAAW,CACdg8G,IAAK,CACHj3G,KAAM,SAAU/E,EAAUlnD,GACxB,IAMEmjK,EANEjC,EAASlhK,EAAKkhK,OAChBkC,EAAelC,EAAO7jI,SAAW6jI,EAAOp0G,WAAao0G,EAAO31I,OAAO0gC,KACnE20G,EAAaM,EAAOp7G,MACpBu9G,EAAmBn8G,EAAS+E,KAAOjsD,EAAKqiK,kBAAkBv7G,WAC1Dw8G,EAAWF,EAAeC,EAC1BE,EAAYF,EAAmBrjK,EAAKyiK,eAAiB7B,EAAawC,EAIhEpjK,EAAKyiK,eAAiB7B,EAEpB0C,EAAW,GAAKC,GAAa,GAC/BJ,EAAej8G,EAAS+E,KAAOq3G,EAAWtjK,EAAKyiK,eAAiB7B,EAAawC,EAC7El8G,EAAS+E,MAAQq3G,EAAWH,GAI5Bj8G,EAAS+E,KADAs3G,EAAY,GAAKD,GAAY,EACtBF,EAIZE,EAAWC,EACGH,EAAexC,EAAa5gK,EAAKyiK,eAEjCW,EAKXE,EAAW,EACpBp8G,EAAS+E,MAAQq3G,EAGRC,EAAY,EACrBr8G,EAAS+E,MAAQs3G,EAIjBr8G,EAAS+E,KAAO59C,EAAI64C,EAAS+E,KAAOo3G,EAAkBn8G,EAAS+E,KAEnE,EACAxkB,IAAK,SAAUyf,EAAUlnD,GACvB,IAMEwjK,EANEtC,EAASlhK,EAAKkhK,OAChBkC,EAAelC,EAAO7jI,SAAW6jI,EAAOr0G,UAAYq0G,EAAO31I,OAAOkc,IAClEo5H,EAAc7gK,EAAKkhK,OAAOj5G,OAC1Bw7G,EAAkBv8G,EAASzf,IAAMznC,EAAKqiK,kBAAkBG,UACxDkB,EAAUN,EAAeK,EACzBE,EAAaF,EAAkBzjK,EAAK0iK,gBAAkB7B,EAAcuC,EAIlEpjK,EAAK0iK,gBAAkB7B,EAErB6C,EAAU,GAAKC,GAAc,GAC/BH,EAAgBt8G,EAASzf,IAAMi8H,EAAU1jK,EAAK0iK,gBAAkB7B,EAAcuC,EAC9El8G,EAASzf,KAAOi8H,EAAUF,GAI1Bt8G,EAASzf,IADAk8H,EAAa,GAAKD,GAAW,EACvBN,EAIXM,EAAUC,EACGP,EAAevC,EAAc7gK,EAAK0iK,gBAElCU,EAKVM,EAAU,EACnBx8G,EAASzf,KAAOi8H,EAGPC,EAAa,EACtBz8G,EAASzf,KAAOk8H,EAIhBz8G,EAASzf,IAAMp5B,EAAI64C,EAASzf,IAAMg8H,EAAiBv8G,EAASzf,IAEhE,GAEFo+C,KAAM,CACJ55B,KAAM,SAAU/E,EAAUlnD,GACxB,IAUEmjK,EACAS,EAXE1C,EAASlhK,EAAKkhK,OAChBkC,EAAelC,EAAO31I,OAAO0gC,KAAOi1G,EAAOp0G,WAC3C8zG,EAAaM,EAAOp7G,MACpB+9G,EAAa3C,EAAO7jI,SAAW6jI,EAAOp0G,WAAao0G,EAAO31I,OAAO0gC,KACjEo3G,EAAmBn8G,EAAS+E,KAAOjsD,EAAKqiK,kBAAkBv7G,WAC1Dw8G,EAAWD,EAAmBQ,EAC9BN,EAAYF,EAAmBrjK,EAAKyiK,eAAiB7B,EAAaiD,EAClElB,EAA0B,SAAf3iK,EAAK4iK,GAAG,IAAiB5iK,EAAKsiK,UAA2B,UAAftiK,EAAK4iK,GAAG,GAAiB5iK,EAAKsiK,UAAY,EAC/FZ,EAA0B,SAAf1hK,EAAKkiK,GAAG,GAAgBliK,EAAK2hK,YAA6B,UAAf3hK,EAAKkiK,GAAG,IAAkBliK,EAAK2hK,YAAc,EACnGp2I,GAAU,EAAIvrB,EAAKurB,OAAO,GAGxB+3I,EAAW,IACbH,EAAej8G,EAAS+E,KAAO02G,EAAWjB,EAAWn2I,EAASvrB,EAAKyiK,eAAiB7B,EAAawC,GAC9E,GAAKD,EAAej1J,EAAIo1J,MACzCp8G,EAAS+E,MAAQ02G,EAAWjB,EAAWn2I,GAEhCg4I,EAAY,KACrBK,EAAc18G,EAAS+E,KAAOjsD,EAAKqiK,kBAAkBv7G,WAAa67G,EAAWjB,EAAWn2I,EAASs4I,GAC/E,GAAK31J,EAAI01J,GAAeL,KACxCr8G,EAAS+E,MAAQ02G,EAAWjB,EAAWn2I,EAG7C,EACAkc,IAAK,SAAUyf,EAAUlnD,GACvB,IAWE8jK,EACAN,EAZEtC,EAASlhK,EAAKkhK,OAChBkC,EAAelC,EAAO31I,OAAOkc,IAAMy5H,EAAOr0G,UAC1Cg0G,EAAcK,EAAOj5G,OACrB87G,EAAY7C,EAAO7jI,SAAW6jI,EAAOr0G,UAAYq0G,EAAO31I,OAAOkc,IAC/Dg8H,EAAkBv8G,EAASzf,IAAMznC,EAAKqiK,kBAAkBG,UACxDkB,EAAUD,EAAkBM,EAC5BJ,EAAaF,EAAkBzjK,EAAK0iK,gBAAkB7B,EAAckD,EAEpEpB,EADqB,QAAf3iK,EAAK4iK,GAAG,IACI5iK,EAAKuiK,WAA4B,WAAfviK,EAAK4iK,GAAG,GAAkB5iK,EAAKuiK,WAAa,EAChFb,EAA0B,QAAf1hK,EAAKkiK,GAAG,GAAeliK,EAAK4hK,aAA8B,WAAf5hK,EAAKkiK,GAAG,IAAmBliK,EAAK4hK,aAAe,EACrGr2I,GAAU,EAAIvrB,EAAKurB,OAAO,GAGxBm4I,EAAU,IACZF,EAAgBt8G,EAASzf,IAAMk7H,EAAWjB,EAAWn2I,EAASvrB,EAAK0iK,gBAAkB7B,EAAcuC,GAC/E,GAAKI,EAAgBt1J,EAAIw1J,MAC3Cx8G,EAASzf,KAAOk7H,EAAWjB,EAAWn2I,GAE/Bo4I,EAAa,KACtBG,EAAa58G,EAASzf,IAAMznC,EAAKqiK,kBAAkBG,UAAYG,EAAWjB,EAAWn2I,EAASw4I,GAC7E,GAAK71J,EAAI41J,GAAcH,KACtCz8G,EAASzf,KAAOk7H,EAAWjB,EAAWn2I,EAG5C,GAEFy4I,QAAS,CACP/3G,KAAM,WACJuS,EAAEu9F,GAAG70G,SAAS2+B,KAAK55B,KAAKrmD,MAAMmE,KAAMlE,WACpC24D,EAAEu9F,GAAG70G,SAASg8G,IAAIj3G,KAAKrmD,MAAMmE,KAAMlE,UACrC,EACA4hC,IAAK,WACH+2B,EAAEu9F,GAAG70G,SAAS2+B,KAAKp+C,IAAI7hC,MAAMmE,KAAMlE,WACnC24D,EAAEu9F,GAAG70G,SAASg8G,IAAIz7H,IAAI7hC,MAAMmE,KAAMlE,UACpC,GAGL,CAhaD,GAiae24D,EAAEu9F,GAAG70G,SAgBTsX,EAAEn3D,OAAOm3D,EAAEj2B,KAAKjF,QAAS,CAClCtjC,KAAMw+D,EAAEj2B,KAAKQ,aAAey1B,EAAEj2B,KAAKQ,cAAa,SAAUk7H,GACxD,OAAO,SAAUxlI,GACf,QAAS+/B,EAAEx+D,KAAKy+B,EAAMwlI,EACxB,CACF,IAEA,SAAUxlI,EAAMp+B,EAAG6O,GACjB,QAASsvD,EAAEx+D,KAAKy+B,EAAMvvB,EAAM,GAC9B,IAmBqBsvD,EAAEt3D,GAAGG,OAAO,CACjC68J,kBACMtlE,EAAY,kBAAmB78F,SAASC,cAAc,OAAS,cAAgB,YAC5E,WACL,OAAO+H,KAAK2yC,GAAGkiD,EAAY,wBAAwB,SAAUl8F,GAC3DA,EAAM46C,gBACR,GACF,GAEF6mH,gBAAiB,WACf,OAAOp6J,KAAK+yC,IAAI,uBAClB,IAvDF,IAqKEsnH,EAvGEjmI,EAASqgC,EAaT6lG,EAAY,6JACdtnI,EAAa,CAAC,EACd52B,EAAW42B,EAAW52B,SAEtBm+J,EAAc,0BAEdC,EAAgB,CAAC,CACfC,GAAI,sFACJ5sH,MAAO,SAAU6sH,GACf,MAAO,CAACA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAClE,GACC,CACDD,GAAI,8GACJ5sH,MAAO,SAAU6sH,GACf,MAAO,CAAiB,KAAhBA,EAAW,GAA2B,KAAhBA,EAAW,GAA2B,KAAhBA,EAAW,GAAWA,EAAW,GACvF,GACC,CAEDD,GAAI,yDACJ5sH,MAAO,SAAU6sH,GACf,MAAO,CAACrqJ,SAASqqJ,EAAW,GAAI,IAAKrqJ,SAASqqJ,EAAW,GAAI,IAAKrqJ,SAASqqJ,EAAW,GAAI,IAAKA,EAAW,IAAMrqJ,SAASqqJ,EAAW,GAAI,IAAM,KAAK7oI,QAAQ,GAAK,EAClK,GACC,CAED4oI,GAAI,6CACJ5sH,MAAO,SAAU6sH,GACf,MAAO,CAACrqJ,SAASqqJ,EAAW,GAAKA,EAAW,GAAI,IAAKrqJ,SAASqqJ,EAAW,GAAKA,EAAW,GAAI,IAAKrqJ,SAASqqJ,EAAW,GAAKA,EAAW,GAAI,IAAKA,EAAW,IAAMrqJ,SAASqqJ,EAAW,GAAKA,EAAW,GAAI,IAAM,KAAK7oI,QAAQ,GAAK,EAClO,GACC,CACD4oI,GAAI,4GACJE,MAAO,OACP9sH,MAAO,SAAU6sH,GACf,MAAO,CAACA,EAAW,GAAIA,EAAW,GAAK,IAAKA,EAAW,GAAK,IAAKA,EAAW,GAC9E,IAGFE,EAAQxmI,EAAOymI,MAAQ,SAAUD,EAAOE,EAAOC,EAAMC,GACnD,OAAO,IAAI5mI,EAAOymI,MAAM19J,GAAG0wC,MAAM+sH,EAAOE,EAAOC,EAAMC,EACvD,EACAC,EAAS,CACPC,KAAM,CACJjlH,MAAO,CACLklH,IAAK,CACHz6H,IAAK,EACLznC,KAAM,QAER6hK,MAAO,CACLp6H,IAAK,EACLznC,KAAM,QAER8hK,KAAM,CACJr6H,IAAK,EACLznC,KAAM,UAIZmiK,KAAM,CACJnlH,MAAO,CACLolH,IAAK,CACH36H,IAAK,EACLznC,KAAM,WAERqiK,WAAY,CACV56H,IAAK,EACLznC,KAAM,WAERsiK,UAAW,CACT76H,IAAK,EACLznC,KAAM,cAKduiK,EAAY,CACV,KAAQ,CACN9xJ,OAAO,EACPpF,IAAK,KAEP,QAAW,CACTA,IAAK,GAEP,QAAW,CACTkJ,IAAK,IACL9D,OAAO,IAGX0pB,EAAUwnI,EAAMxnI,QAAU,CAAC,EAE3BqoI,EAAcrnI,EAAO,OAAO,GAI5Bc,EAAOd,EAAOc,KA1HI,IACZ2/D,EA8IR,SAAS6mE,EAAQh/J,GACf,OAAW,MAAPA,EACKA,EAAM,GAEO,kBAARA,EAAmBs2B,EAAW52B,EAASxF,KAAK8F,KAAS,gBAAkBA,CACvF,CACA,SAASi/J,EAAMphK,EAAOgG,EAAMq7J,GAC1B,IAAI3iK,EAAOuiK,EAAUj7J,EAAKtH,OAAS,CAAC,EACpC,OAAa,MAATsB,EACKqhK,IAAer7J,EAAKs7J,IAAM,KAAOt7J,EAAKs7J,KAI/CthK,EAAQtB,EAAKyQ,QAAUnP,EAAQulB,WAAWvlB,GAItC+E,MAAM/E,GACDgG,EAAKs7J,IAEV5iK,EAAKuU,KAGCjT,EAAQtB,EAAKuU,KAAOvU,EAAKuU,IAI5BtJ,KAAKqL,IAAItW,EAAKqL,IAAKJ,KAAKI,IAAI,EAAG/J,IACxC,CACA,SAASuhK,EAAYh0J,GACnB,IAAIi0J,EAAOnB,IACTM,EAAOa,EAAKC,MAAQ,GAqBtB,OApBAl0J,EAASA,EAAOU,cAChB0sB,EAAKslI,GAAe,SAAU75J,EAAI20F,GAChC,IAAInjC,EACFhtD,EAAQmwF,EAAOmlE,GAAGrgJ,KAAKtS,GACvBmQ,EAAS9S,GAASmwF,EAAOznD,MAAM1oC,GAC/B82J,EAAY3mE,EAAOqlE,OAAS,OAC9B,GAAI1iJ,EASF,OARAk6C,EAAS4pG,EAAKE,GAAWhkJ,GAIzB8jJ,EAAKd,EAAOgB,GAAWv/H,OAASy1B,EAAO8oG,EAAOgB,GAAWv/H,OACzDw+H,EAAOa,EAAKC,MAAQ7pG,EAAO6pG,OAGpB,CAEX,IAGId,EAAK1kK,QAGa,YAAhB0kK,EAAKn5J,QACPqyB,EAAO92B,OAAO49J,EAAMb,EAAO6B,aAEtBH,GAIF1B,EAAOvyJ,EAChB,CAyMA,SAASq0J,EAAQ5jK,EAAG6jK,EAAGj1J,GAErB,OAAQ,GADRA,GAAKA,EAAI,GAAK,GACF,EACH5O,GAAK6jK,EAAI7jK,GAAK4O,EAAI,EAEnB,EAAJA,EAAQ,EACHi1J,EAED,EAAJj1J,EAAQ,EACH5O,GAAK6jK,EAAI7jK,IAAM,EAAI,EAAI4O,GAAK,EAE9B5O,CACT,CAtSAkjK,EAAYxsH,MAAMyN,QAAU,kCAC5BtpB,EAAQ8nI,KAAOO,EAAYxsH,MAAMotH,gBAAgBvvJ,QAAQ,SAAW,EAIpEooB,EAAK+lI,GAAQ,SAAUgB,EAAWtB,GAChCA,EAAMj+H,MAAQ,IAAMu/H,EACpBtB,EAAM1kH,MAAM+kH,MAAQ,CAClBt6H,IAAK,EACLznC,KAAM,UACN4iK,IAAK,EAET,IAGAznI,EAAOc,KAAK,uEAAuEjnB,MAAM,MAAM,SAAUtN,EAAItH,GAC3G25B,EAAW,WAAa35B,EAAO,KAAOA,EAAKmP,aAC7C,IAiEAoyJ,EAAMz9J,GAAKi3B,EAAO92B,OAAOs9J,EAAMlkK,UAAW,CACxCm3C,MAAO,SAAUstH,EAAKL,EAAOC,EAAMC,GACjC,QAAYzhK,IAAR4hK,EAEF,OADAn7J,KAAKg8J,MAAQ,CAAC,KAAM,KAAM,KAAM,MACzBh8J,MAELm7J,EAAIxmI,QAAUwmI,EAAI9nI,YACpB8nI,EAAM/mI,EAAO+mI,GAAKhsH,IAAI2rH,GACtBA,OAAQvhK,GAEV,IAAIwiK,EAAO/7J,KACT/G,EAAOyiK,EAAQP,GACfD,EAAOl7J,KAAKg8J,MAAQ,GAOtB,YAJcziK,IAAVuhK,IACFK,EAAM,CAACA,EAAKL,EAAOC,EAAMC,GACzB/hK,EAAO,SAEI,WAATA,EACK+G,KAAK6tC,MAAMiuH,EAAYX,IAAQd,EAAOjpH,UAElC,UAATn4C,GACFi8B,EAAK+lI,EAAOC,KAAKjlH,OAAO,SAAUvJ,EAAMnsC,GACtC26J,EAAK36J,EAAKmgC,KAAOi7H,EAAMR,EAAI56J,EAAKmgC,KAAMngC,EACxC,IACOP,MAEI,WAAT/G,GAEAi8B,EAAK+lI,EADHE,aAAeP,EACJ,SAAU0B,EAAY3B,GAC7BQ,EAAIR,EAAMj+H,SACZq/H,EAAKpB,EAAMj+H,OAASy+H,EAAIR,EAAMj+H,OAAOlhC,QAEzC,EAEa,SAAU8gK,EAAY3B,GACjC,IAAIj+H,EAAQi+H,EAAMj+H,MAClBxH,EAAKylI,EAAM1kH,OAAO,SAAUp7C,EAAK0F,GAE/B,IAAKw7J,EAAKr/H,IAAUi+H,EAAMt6J,GAAI,CAG5B,GAAY,UAARxF,GAA+B,MAAZsgK,EAAItgK,GACzB,OAEFkhK,EAAKr/H,GAASi+H,EAAMt6J,GAAG07J,EAAKC,MAC9B,CAIAD,EAAKr/H,GAAOn8B,EAAKmgC,KAAOi7H,EAAMR,EAAItgK,GAAM0F,GAAM,EAChD,IAGIw7J,EAAKr/H,IAAUtI,EAAOyC,QAAQ,KAAMklI,EAAKr/H,GAAOlhC,MAAM,EAAG,IAAM,IAE3C,MAAlBugK,EAAKr/H,GAAO,KACdq/H,EAAKr/H,GAAO,GAAK,GAEfi+H,EAAMr6J,OACRy7J,EAAKC,MAAQrB,EAAMr6J,KAAKy7J,EAAKr/H,KAGnC,GAEK18B,WAtCT,CAwCF,EACA6lC,GAAI,SAAUvH,GACZ,IAAIuH,EAAK+0H,EAAMt8H,GACbi+H,GAAO,EACPR,EAAO/7J,KAeT,OAdAk1B,EAAK+lI,GAAQ,SAAU5yH,EAAGsyH,GACxB,IAAI6B,EACFC,EAAU52H,EAAG80H,EAAMj+H,OAUrB,OATI+/H,IACFD,EAAaT,EAAKpB,EAAMj+H,QAAUi+H,EAAMt6J,IAAMs6J,EAAMt6J,GAAG07J,EAAKC,QAAU,GACtE9mI,EAAKylI,EAAM1kH,OAAO,SAAU5N,EAAG9nC,GAC7B,GAAyB,MAArBk8J,EAAQl8J,EAAKmgC,KAEf,OADA67H,EAAOE,EAAQl8J,EAAKmgC,OAAS87H,EAAWj8J,EAAKmgC,IAGjD,KAEK67H,CACT,IACOA,CACT,EACAG,OAAQ,WACN,IAAIC,EAAO,GACTZ,EAAO/7J,KAMT,OALAk1B,EAAK+lI,GAAQ,SAAUgB,EAAWtB,GAC5BoB,EAAKpB,EAAMj+H,QACbigI,EAAK7lK,KAAKmlK,EAEd,IACOU,EAAKplI,KACd,EACA8pD,WAAY,SAAU/hE,EAAOs9I,GAC3B,IAAIlnI,EAAMklI,EAAMt7I,GACd28I,EAAYvmI,EAAIgnI,SAChB/B,EAAQM,EAAOgB,GACfY,EAA8B,IAAjB78J,KAAKg7J,QAAgBJ,EAAM,eAAiB56J,KACzDmgC,EAAQ08H,EAAWlC,EAAMj+H,QAAUi+H,EAAMt6J,GAAGw8J,EAAWb,OACvDjhJ,EAASolB,EAAM3kC,QA2BjB,OA1BAk6B,EAAMA,EAAIilI,EAAMj+H,OAChBxH,EAAKylI,EAAM1kH,OAAO,SAAUvJ,EAAMnsC,GAChC,IAAIytB,EAAQztB,EAAKmgC,IACfo8H,EAAa38H,EAAMnS,GACnB+uI,EAAWrnI,EAAI1H,GACf/0B,EAAOuiK,EAAUj7J,EAAKtH,OAAS,CAAC,EAGjB,OAAb8jK,IAKe,OAAfD,EACF/hJ,EAAOiT,GAAS+uI,GAEZ9jK,EAAKuU,MACHuvJ,EAAWD,EAAa7jK,EAAKuU,IAAM,EACrCsvJ,GAAc7jK,EAAKuU,IACVsvJ,EAAaC,EAAW9jK,EAAKuU,IAAM,IAC5CsvJ,GAAc7jK,EAAKuU,MAGvBuN,EAAOiT,GAAS2tI,GAAOoB,EAAWD,GAAcF,EAAWE,EAAYv8J,IAE3E,IACOP,KAAKi8J,GAAWlhJ,EACzB,EACAiiJ,MAAO,SAAUC,GAEf,GAAsB,IAAlBj9J,KAAKg8J,MAAM,GACb,OAAOh8J,KAET,IAAIk9J,EAAMl9J,KAAKg8J,MAAMxgK,QACnBe,EAAI2gK,EAAI3lI,MACRylI,EAAQpC,EAAMqC,GAAQjB,MACxB,OAAOpB,EAAMxmI,EAAOn3B,IAAIigK,GAAK,SAAUt1H,EAAGtxC,GACxC,OAAQ,EAAIiG,GAAKygK,EAAM1mK,GAAKiG,EAAIqrC,CAClC,IACF,EACAu1H,aAAc,WACZ,IAAI51I,EAAS,QACX2zI,EAAO9mI,EAAOn3B,IAAI+C,KAAKg8J,OAAO,SAAUp0H,EAAGtxC,GACzC,OAAS,MAALsxC,EACKA,EAEFtxC,EAAI,EAAI,EAAI,CACrB,IAKF,OAJgB,IAAZ4kK,EAAK,KACPA,EAAK3jI,MACLhQ,EAAS,QAEJA,EAAS2zI,EAAKn5J,OAAS,GAChC,EACAq7J,aAAc,WACZ,IAAI71I,EAAS,QACX6zI,EAAOhnI,EAAOn3B,IAAI+C,KAAKo7J,QAAQ,SAAUxzH,EAAGtxC,GAS1C,OARS,MAALsxC,IACFA,EAAItxC,EAAI,EAAI,EAAI,GAIdA,GAAKA,EAAI,IACXsxC,EAAI1jC,KAAK+c,MAAU,IAAJ2mB,GAAW,KAErBA,CACT,IAKF,OAJgB,IAAZwzH,EAAK,KACPA,EAAK7jI,MACLhQ,EAAS,QAEJA,EAAS6zI,EAAKr5J,OAAS,GAChC,EACAs7J,YAAa,SAAUC,GACrB,IAAIpC,EAAOl7J,KAAKg8J,MAAMxgK,QACpBw/J,EAAQE,EAAK3jI,MAIf,OAHI+lI,GACFpC,EAAKpkK,QAAgB,IAARkkK,IAER,IAAM5mI,EAAOn3B,IAAIi+J,GAAM,SAAUtzH,GAGtC,OAAoB,KADpBA,GAAKA,GAAK,GAAGxrC,SAAS,KACb5F,OAAe,IAAMoxC,EAAIA,CACpC,IAAG7lC,KAAK,GACV,EACA3F,SAAU,WACR,OAAyB,IAAlB4D,KAAKg8J,MAAM,GAAW,cAAgBh8J,KAAKm9J,cACpD,IAEFvC,EAAMz9J,GAAG0wC,MAAMn3C,UAAYkkK,EAAMz9J,GAkBjC89J,EAAOG,KAAK/6J,GAAK,SAAU66J,GACzB,GAAe,MAAXA,EAAK,IAAyB,MAAXA,EAAK,IAAyB,MAAXA,EAAK,GAC7C,MAAO,CAAC,KAAM,KAAM,KAAMA,EAAK,IAEjC,IASE/zJ,EACA1L,EAVErB,EAAI8gK,EAAK,GAAK,IAChB30F,EAAI20F,EAAK,GAAK,IACd1+J,EAAI0+J,EAAK,GAAK,IACd3+J,EAAI2+J,EAAK,GACT52J,EAAMJ,KAAKI,IAAIlK,EAAGmsE,EAAG/pE,GACrB+S,EAAMrL,KAAKqL,IAAInV,EAAGmsE,EAAG/pE,GACrB0L,EAAO5D,EAAMiL,EACb+C,EAAMhO,EAAMiL,EACZjY,EAAU,GAANgb,EAsBN,OAlBEnL,EADEoI,IAAQjL,EACN,EACKlK,IAAMkK,EACX,IAAMiiE,EAAI/pE,GAAK0L,EAAO,IACjBq+D,IAAMjiE,EACX,IAAM9H,EAAIpC,GAAK8N,EAAO,IAEtB,IAAM9N,EAAImsE,GAAKr+D,EAAO,IAM1BzM,EADW,IAATyM,EACE,EACK5Q,GAAK,GACV4Q,EAAOoK,EAEPpK,GAAQ,EAAIoK,GAEX,CAACpO,KAAK+c,MAAM9Z,GAAK,IAAK1L,EAAGnE,EAAQ,MAALiF,EAAY,EAAIA,EACrD,EACA0+J,EAAOG,KAAK96J,KAAO,SAAU86J,GAC3B,GAAe,MAAXA,EAAK,IAAyB,MAAXA,EAAK,IAAyB,MAAXA,EAAK,GAC7C,MAAO,CAAC,KAAM,KAAM,KAAMA,EAAK,IAEjC,IAAIj0J,EAAIi0J,EAAK,GAAK,IAChB3/J,EAAI2/J,EAAK,GACT9jK,EAAI8jK,EAAK,GACT7+J,EAAI6+J,EAAK,GACTgB,EAAI9kK,GAAK,GAAMA,GAAK,EAAImE,GAAKnE,EAAImE,EAAInE,EAAImE,EACzClD,EAAI,EAAIjB,EAAI8kK,EACd,MAAO,CAACl4J,KAAK+c,MAAiC,IAA3Bk7I,EAAQ5jK,EAAG6jK,EAAGj1J,EAAI,EAAI,IAAWjD,KAAK+c,MAAyB,IAAnBk7I,EAAQ5jK,EAAG6jK,EAAGj1J,IAAWjD,KAAK+c,MAAiC,IAA3Bk7I,EAAQ5jK,EAAG6jK,EAAGj1J,EAAI,EAAI,IAAW5K,EACtI,EACA24B,EAAK+lI,GAAQ,SAAUgB,EAAWtB,GAChC,IAAI1kH,EAAQ0kH,EAAM1kH,MAChBvZ,EAAQi+H,EAAMj+H,MACdr8B,EAAKs6J,EAAMt6J,GACXC,EAAOq6J,EAAMr6J,KAGfs6J,EAAMz9J,GAAG8+J,GAAa,SAAU1hK,GAK9B,GAHI8F,IAAOL,KAAK08B,KACd18B,KAAK08B,GAASr8B,EAAGL,KAAKg8J,aAEVziK,IAAVgB,EACF,OAAOyF,KAAK08B,GAAOlhC,QAErB,IAAIsoB,EACF7qB,EAAOyiK,EAAQnhK,GACf2C,EAAe,UAATjE,GAA6B,WAATA,EAAoBsB,EAAQuB,UACtDumB,EAAQriB,KAAK08B,GAAOlhC,QAQtB,OAPA05B,EAAK+gB,GAAO,SAAUp7C,EAAK0F,GACzB,IAAIC,EAAMtD,EAAa,WAATjE,EAAoB4B,EAAM0F,EAAKmgC,KAClC,MAAPlgC,IACFA,EAAM6hB,EAAM9hB,EAAKmgC,MAEnBre,EAAM9hB,EAAKmgC,KAAOi7H,EAAMn7J,EAAKD,EAC/B,IACID,IACFwjB,EAAM82I,EAAMt6J,EAAK+hB,KACbqa,GAASra,EACNyB,GAEA82I,EAAMv4I,EAEjB,EAGA6S,EAAK+gB,GAAO,SAAUp7C,EAAK0F,GAErBq6J,EAAMz9J,GAAGtC,KAGb+/J,EAAMz9J,GAAGtC,GAAO,SAAUN,GACxB,IAAI8nB,EACFwkB,EACA1hC,EACAhI,EACAogK,EAAQ7B,EAAQnhK,GAQlB,OADAssC,GADAxkB,EAAQriB,KAJN7C,EADU,UAARtC,EACGmF,KAAKw9J,MAAQ,OAAS,OAEtBvB,MAGK17J,EAAKmgC,KACH,cAAV68H,EACK12H,GAEK,aAAV02H,IAEFA,EAAQ7B,EADRnhK,EAAQA,EAAM3D,KAAKoJ,KAAM6mC,KAGd,MAATtsC,GAAiBgG,EAAKxC,MACjBiC,MAEK,WAAVu9J,IACFp4J,EAAQo1J,EAAYngJ,KAAK7f,MAEvBA,EAAQssC,EAAM/mB,WAAW3a,EAAM,KAAoB,MAAbA,EAAM,GAAa,GAAK,IAGlEkd,EAAM9hB,EAAKmgC,KAAOnmC,EACXyF,KAAK7C,GAAIklB,IAClB,EACF,GACF,IAIAu4I,EAAMplH,KAAO,SAAUA,GACrB,IAAI55C,EAAQ45C,EAAKvnC,MAAM,KACvBinB,EAAKt5B,GAAO,SAAU+E,EAAI60C,GACxBphB,EAAOgsB,SAAS5K,GAAQ,CACtBlzC,IAAK,SAAUoyB,EAAMn6B,GACnB,IAAI43D,EACFU,EACAwpG,EAAkB,GACpB,GAAc,gBAAV9hK,IAA+C,WAAnBmhK,EAAQnhK,KAAwB43D,EAAS2pG,EAAYvhK,KAAU,CAE7F,GADAA,EAAQqgK,EAAMzoG,GAAU53D,IACnB64B,EAAQ8nI,MAA2B,IAAnB3gK,EAAMyhK,MAAM,GAAU,CAEzC,IADAnpG,EAAmB,oBAATrd,EAA6B9gB,EAAKV,WAAaU,GAC7B,KAApB2nI,GAA8C,gBAApBA,IAAsCxpG,GAAWA,EAAQ5jB,OACzF,IACEotH,EAAkBjoI,EAAO+a,IAAI0jB,EAAS,mBACtCA,EAAUA,EAAQ7+B,UACpB,CAAE,MAAOz8B,GAAI,CAEfgD,EAAQA,EAAMyiK,MAAMX,GAAuC,gBAApBA,EAAoCA,EAAkB,WAC/F,CACA9hK,EAAQA,EAAM4iK,cAChB,CACA,IACEzoI,EAAKua,MAAMuG,GAAQj7C,CACrB,CAAE,MAAOhD,GAGT,CACF,GAEF68B,EAAOyuB,GAAGD,KAAKpN,GAAQ,SAAUqN,GAC1BA,EAAG46G,YACN56G,EAAG1iB,MAAQy6H,EAAM/3G,EAAGnuB,KAAM8gB,GAC1BqN,EAAGntB,IAAMklI,EAAM/3G,EAAGntB,KAClBmtB,EAAG46G,WAAY,GAEjBrpI,EAAOgsB,SAAS5K,GAAMlzC,IAAIugD,EAAGnuB,KAAMmuB,EAAG1iB,MAAMkhD,WAAWx+B,EAAGntB,IAAKmtB,EAAGvsC,KACpE,CACF,GACF,EACAskJ,EAAMplH,KAAK8kH,GACXlmI,EAAOgsB,SAASs9G,YAAc,CAC5Bp7G,OAAQ,SAAU/nD,GAChB,IAAIgoD,EAAW,CAAC,EAIhB,OAHArtB,EAAK,CAAC,MAAO,QAAS,SAAU,SAAS,SAAUv0B,EAAIg9J,GACrDp7G,EAAS,SAAWo7G,EAAO,SAAWpjK,CACxC,IACOgoD,CACT,GAMF83G,EAASjmI,EAAOymI,MAAMpjJ,MAAQ,CAE5BmmJ,KAAM,UACNC,MAAO,UACP9C,KAAM,UACN+C,QAAS,UACTC,KAAM,UACNjD,MAAO,UACPkD,KAAM,UACNC,OAAQ,UACRC,KAAM,UACNC,MAAO,UACPC,OAAQ,UACRjD,IAAK,UACLkD,OAAQ,UACRC,KAAM,UACNC,MAAO,UACPC,OAAQ,UAERtC,YAAa,CAAC,KAAM,KAAM,KAAM,GAChC9qH,SAAU,WAoBZ,IAAIqtH,EAAY,cACdC,EAAiB,mBACjBC,EAAoB,sBACtBlqG,EAAEyhG,QAAU,CACVF,OAAQ,CAAC,GAMX,WACE,IAAI4I,EAAwB,CAAC,MAAO,SAAU,UAC5CC,EAAkB,CAChBx8G,OAAQ,EACRy8G,aAAc,EACdpB,YAAa,EACbqB,WAAY,EACZC,YAAa,EACbC,UAAW,EACXC,YAAa,EACb/8G,OAAQ,EACRC,QAAS,GAUb,SAASpV,EAAUllC,GACjB,OAAOA,EAAO1C,QAAQ,gBAAgB,SAAUzL,EAAKozC,GACnD,OAAOA,EAAOxmC,aAChB,GACF,CACA,SAAS44J,EAAiBzqI,GACxB,IAAI75B,EACFoF,EACAgvC,EAAQva,EAAKwC,cAAcuG,YAAc/I,EAAKwC,cAAcuG,YAAYge,iBAAiB/mB,EAAM,MAAQA,EAAKyoH,aAC5G19F,EAAS,CAAC,EACZ,GAAIxQ,GAASA,EAAMz4C,QAAUy4C,EAAM,IAAMA,EAAMA,EAAM,IAEnD,IADAhvC,EAAMgvC,EAAMz4C,OACLyJ,KAEqB,kBAAfgvC,EADXp0C,EAAMo0C,EAAMhvC,MAEVw/C,EAAOzS,EAAUnyC,IAAQo0C,EAAMp0C,SAMnC,IAAKA,KAAOo0C,EACgB,kBAAfA,EAAMp0C,KACf4kD,EAAO5kD,GAAOo0C,EAAMp0C,IAI1B,OAAO4kD,CACT,CACA,SAAS2/G,EAAgBC,EAAUC,GACjC,IACEjmK,EACAkB,EAFE2N,EAAO,CAAC,EAGZ,IAAK7O,KAAQimK,EACX/kK,EAAQ+kK,EAASjmK,GACbgmK,EAAShmK,KAAUkB,IAChBskK,EAAgBxlK,KACfo7D,EAAE5R,GAAGD,KAAKvpD,IAAUiG,MAAMwgB,WAAWvlB,MACvC2N,EAAK7O,GAAQkB,IAKrB,OAAO2N,CACT,CApDAusD,EAAEv/B,KAAK,CAAC,kBAAmB,mBAAoB,oBAAqB,mBAAmB,SAAUmT,EAAG9nC,GAClGk0D,EAAE5R,GAAGD,KAAKriD,GAAQ,SAAUsiD,IACX,SAAXA,EAAGntB,MAAmBmtB,EAAG08G,SAAsB,IAAX18G,EAAGvsC,MAAcusC,EAAG08G,WAC1DnrI,EAAO6a,MAAM4T,EAAGnuB,KAAMn0B,EAAMsiD,EAAGntB,KAC/BmtB,EAAG08G,SAAU,EAEjB,CACF,IAgDK9qG,EAAEt3D,GAAG8pC,UACRwtB,EAAEt3D,GAAG8pC,QAAU,SAAU5S,GACvB,OAAOr0B,KAAKsS,IAAgB,MAAZ+hB,EAAmBr0B,KAAKi1B,WAAaj1B,KAAKi1B,WAAWzP,OAAO6O,GAC9E,GAEFogC,EAAEyhG,QAAQsJ,aAAe,SAAUjlK,EAAO4lB,EAAUggC,EAAQnkD,GAC1D,IAAIhC,EAAIy6D,EAAE7O,MAAMzlC,EAAUggC,EAAQnkD,GAClC,OAAOgE,KAAK6oC,OAAM,WAChB,IAEE42H,EAFEptG,EAAWoC,EAAEz0D,MACf0/J,EAAYrtG,EAAS1zB,KAAK,UAAY,GAEtCghI,EAAgB3lK,EAAEysC,SAAW4rB,EAAS72B,KAAK,KAAKyL,UAAYorB,EAG9DstG,EAAgBA,EAAc1iK,KAAI,WAEhC,MAAO,CACL6/B,GAFO23B,EAAEz0D,MAGTmgC,MAAOg/H,EAAiBn/J,MAE5B,KAGAy/J,EAAmB,WACjBhrG,EAAEv/B,KAAK0pI,GAAuB,SAAUtoK,EAAGuhE,GACrCt9D,EAAMs9D,IACRxF,EAASwF,EAAS,SAASt9D,EAAMs9D,GAErC,GACF,KAIA8nG,EAAgBA,EAAc1iK,KAAI,WAGhC,OAFA+C,KAAK01B,IAAMypI,EAAiBn/J,KAAK88B,GAAG,IACpC98B,KAAKkI,KAAOk3J,EAAgBp/J,KAAKmgC,MAAOngC,KAAK01B,KACtC11B,IACT,IAGAqyD,EAAS1zB,KAAK,QAAS+gI,GAGvBC,EAAgBA,EAAc1iK,KAAI,WAChC,IAAI2iK,EAAY5/J,KACd6/J,EAAMprG,EAAEnrB,WACRmb,EAAOgQ,EAAEn3D,OAAO,CAAC,EAAGtD,EAAG,CACrB6uC,OAAO,EACPkc,SAAU,WACR86G,EAAIjoK,QAAQgoK,EACd,IAGJ,OADA5/J,KAAK88B,GAAGkpB,QAAQhmD,KAAKkI,KAAMu8C,GACpBo7G,EAAInoK,SACb,IAGA+8D,EAAEtpB,KAAKtvC,MAAM44D,EAAGkrG,EAAcxlK,OAAO0+B,MAAK,WAExC4mI,IAIAhrG,EAAEv/B,KAAKp5B,WAAW,WAChB,IAAIghC,EAAK98B,KAAK88B,GACd23B,EAAEv/B,KAAKl1B,KAAKkI,MAAM,SAAUrN,GAC1BiiC,EAAGqS,IAAIt0C,EAAK,GACd,GACF,IAIAb,EAAE+qD,SAASnuD,KAAKy7D,EAAS,GAC3B,GACF,GACF,EACAoC,EAAEt3D,GAAGG,OAAO,CACV2qD,SAAU,SAAUrP,GAClB,OAAO,SAAUsP,EAAYtC,EAAOzF,EAAQnkD,GAC1C,OAAO4pD,EAAQ6O,EAAEyhG,QAAQsJ,aAAa5oK,KAAKoJ,KAAM,CAC/CsS,IAAK41C,GACJtC,EAAOzF,EAAQnkD,GAAY48C,EAAK/8C,MAAMmE,KAAMlE,UACjD,CACF,CANU,CAMR24D,EAAEt3D,GAAG8qD,UACPI,YAAa,SAAUzP,GACrB,OAAO,SAAUsP,EAAYtC,EAAOzF,EAAQnkD,GAC1C,OAAOF,UAAUtF,OAAS,EAAIi+D,EAAEyhG,QAAQsJ,aAAa5oK,KAAKoJ,KAAM,CAC9DkpC,OAAQgf,GACPtC,EAAOzF,EAAQnkD,GAAY48C,EAAK/8C,MAAMmE,KAAMlE,UACjD,CACF,CANa,CAMX24D,EAAEt3D,GAAGkrD,aACPC,YAAa,SAAU1P,GACrB,OAAO,SAAUsP,EAAY+/D,EAAOriE,EAAOzF,EAAQnkD,GACjD,MAAqB,mBAAVisH,QAAiC1uH,IAAV0uH,EAC3BriE,EAII6O,EAAEyhG,QAAQsJ,aAAa5oK,KAAKoJ,KAAMioH,EAAQ,CAC/C31G,IAAK41C,GACH,CACFhf,OAAQgf,GACPtC,EAAOzF,EAAQnkD,GANX48C,EAAK/8C,MAAMmE,KAAMlE,WAUnB24D,EAAEyhG,QAAQsJ,aAAa5oK,KAAKoJ,KAAM,CACvCowC,OAAQ8X,GACP+/D,EAAOriE,EAAOzF,EAErB,CACF,CApBa,CAoBXsU,EAAEt3D,GAAGmrD,aACPw3G,YAAa,SAAU52H,EAAQ52B,EAAKszC,EAAOzF,EAAQnkD,GACjD,OAAOy4D,EAAEyhG,QAAQsJ,aAAa5oK,KAAKoJ,KAAM,CACvCsS,IAAKA,EACL42B,OAAQA,GACP0c,EAAOzF,EAAQnkD,EACpB,GAEH,CA3LD,GAiMA,WAmSE,SAAS+jK,EAAoB/J,EAAQpgI,EAASgwB,EAAO5pD,GA4CnD,OA1CIy4D,EAAEz+B,cAAcggI,KAClBpgI,EAAUogI,EACVA,EAASA,EAAOA,QAIlBA,EAAS,CACPA,OAAQA,GAIK,MAAXpgI,IACFA,EAAU,CAAC,GAIU,oBAAZA,IACT55B,EAAW45B,EACXgwB,EAAQ,KACRhwB,EAAU,CAAC,IAIU,kBAAZA,GAAwB6+B,EAAE5R,GAAGiD,OAAOlwB,MAC7C55B,EAAW4pD,EACXA,EAAQhwB,EACRA,EAAU,CAAC,GAIQ,oBAAVgwB,IACT5pD,EAAW4pD,EACXA,EAAQ,MAINhwB,GACF6+B,EAAEn3D,OAAO04J,EAAQpgI,GAEnBgwB,EAAQA,GAAShwB,EAAQzV,SACzB61I,EAAO71I,SAAWs0C,EAAE5R,GAAG9P,IAAM,EAAqB,kBAAV6S,EAAqBA,EAAQA,KAAS6O,EAAE5R,GAAGiD,OAAS2O,EAAE5R,GAAGiD,OAAOF,GAAS6O,EAAE5R,GAAGiD,OAAO1U,SAC7H4kH,EAAOjxG,SAAW/oD,GAAY45B,EAAQmvB,SAC/BixG,CACT,CACA,SAASgK,EAAwBlvH,GAE/B,QAAKA,GAA4B,kBAAXA,IAAuB2jB,EAAE5R,GAAGiD,OAAOhV,MAKnC,kBAAXA,IAAwB2jB,EAAEyhG,QAAQF,OAAOllH,KAK9B,oBAAXA,GAKW,kBAAXA,IAAwBA,EAAOklH,QAM5C,CA4KA,SAASiK,EAAU51C,EAAKlzD,GACtB,IAAI0/F,EAAa1/F,EAAQ0/F,aACvBC,EAAc3/F,EAAQ2/F,cAEtB7+I,EADY,wIACOmC,KAAKiwG,IAAQ,CAAC,GAAI,EAAGwsC,EAAYC,EAAa,GACnE,MAAO,CACLp5H,IAAK5d,WAAW7H,EAAO,KAAO,EAC9B+kC,MAAqB,SAAd/kC,EAAO,GAAgB4+I,EAAa/2I,WAAW7H,EAAO,IAC7D6gJ,OAAsB,SAAd7gJ,EAAO,GAAgB6+I,EAAch3I,WAAW7H,EAAO,IAC/DiqC,KAAMpiC,WAAW7H,EAAO,KAAO,EAEnC,CA9hBIw8C,EAAEj2B,MAAQi2B,EAAEj2B,KAAKjF,SAAWk7B,EAAEj2B,KAAKjF,QAAQ84B,WAC7CoC,EAAEj2B,KAAKjF,QAAQ84B,SAAW,SAAUzZ,GAClC,OAAO,SAAUlkB,GACf,QAAS+/B,EAAE//B,GAAMz+B,KAAK0oK,IAAsB/lH,EAAKlkB,EACnD,CACF,CAJ0B,CAIxB+/B,EAAEj2B,KAAKjF,QAAQ84B,YAEI,IAAnBoC,EAAEyrG,cACJzrG,EAAEn3D,OAAOm3D,EAAEyhG,QAAS,CAElBj0B,KAAM,SAAU9qE,EAAS70D,GAGvB,IAFA,IAAIhM,EAAI,EACNE,EAAS8L,EAAI9L,OACRF,EAAIE,EAAQF,IACF,OAAXgM,EAAIhM,IACN6gE,EAAQlhE,KAAKwoK,EAAYn8J,EAAIhM,GAAI6gE,EAAQ,GAAGloB,MAAM3sC,EAAIhM,IAG5D,EAEA6pK,QAAS,SAAUhpG,EAAS70D,GAI1B,IAHA,IAAI9B,EACFlK,EAAI,EACJE,EAAS8L,EAAI9L,OACRF,EAAIE,EAAQF,IACF,OAAXgM,EAAIhM,KACNkK,EAAM22D,EAAQlhE,KAAKwoK,EAAYn8J,EAAIhM,IACnC6gE,EAAQhoB,IAAI7sC,EAAIhM,GAAIkK,GAG1B,EACA4/J,QAAS,SAAUtjI,EAAIriC,GAIrB,MAHa,WAATA,IACFA,EAAOqiC,EAAG+I,GAAG,WAAa,OAAS,QAE9BprC,CACT,EAEA4lK,cAAe,SAAUlpG,GAEvB,GAAIA,EAAQ/2B,SAASyF,GAAG,uBACtB,OAAOsxB,EAAQ/2B,SAIjB,IAAI6V,EAAQ,CACR8F,MAAOob,EAAQ0/F,YAAW,GAC1B34G,OAAQiZ,EAAQ2/F,aAAY,GAC5B,MAAS3/F,EAAQhoB,IAAI,UAEvBotF,EAAU9nE,EAAE,eAAexM,SAAS,sBAAsB9Y,IAAI,CAC5Dg6F,SAAU,OACVm3B,WAAY,cACZj+G,OAAQ,OACRF,OAAQ,EACRC,QAAS,IAGXuZ,EAAO,CACL5f,MAAOob,EAAQpb,QACfmC,OAAQiZ,EAAQjZ,UAElB2N,EAAS7zD,SAASopC,cAKpB,IAEEyqB,EAAO9vB,EACT,CAAE,MAAOxkC,GACPs0D,EAAS7zD,SAASg4C,IACpB,CAwCA,OAvCAmnB,EAAQjlB,KAAKqqF,IAGTplE,EAAQ,KAAOtL,GAAU4I,EAAE/8B,SAASy/B,EAAQ,GAAItL,KAClD4I,EAAE5I,GAAQrY,QAAQ,SAKpB+oF,EAAUplE,EAAQ/2B,SAGc,WAA5B+2B,EAAQhoB,IAAI,aACdotF,EAAQptF,IAAI,CACVgO,SAAU,aAEZga,EAAQhoB,IAAI,CACVgO,SAAU,eAGZsX,EAAEn3D,OAAO24C,EAAO,CACdkH,SAAUga,EAAQhoB,IAAI,YACtBoS,OAAQ4V,EAAQhoB,IAAI,aAEtBslB,EAAEv/B,KAAK,CAAC,MAAO,OAAQ,SAAU,UAAU,SAAU5+B,EAAGggB,GACtD2/B,EAAM3/B,GAAO6gD,EAAQhoB,IAAI74B,GACrBhX,MAAM+Q,SAAS4lC,EAAM3/B,GAAM,OAC7B2/B,EAAM3/B,GAAO,OAEjB,IACA6gD,EAAQhoB,IAAI,CACVgO,SAAU,WACVzf,IAAK,EACLwkB,KAAM,EACNlF,MAAO,OACP87G,OAAQ,UAGZ3hG,EAAQhoB,IAAIwsB,GACL4gE,EAAQptF,IAAI8G,GAAO/F,MAC5B,EACAqwH,cAAe,SAAUppG,GACvB,IAAItL,EAAS7zD,SAASopC,cAStB,OARI+1B,EAAQ/2B,SAASyF,GAAG,yBACtBsxB,EAAQ/2B,SAASya,YAAYsc,IAGzBA,EAAQ,KAAOtL,GAAU4I,EAAE/8B,SAASy/B,EAAQ,GAAItL,KAClD4I,EAAE5I,GAAQrY,QAAQ,UAGf2jB,CACT,IAGJ1C,EAAEn3D,OAAOm3D,EAAEyhG,QAAS,CAClBlkI,QAAS,SACTk0F,OAAQ,SAAU7sH,EAAMoB,EAAMu7J,GAO5B,OANKA,IACHA,EAASv7J,EACTA,EAAO,UAETg6D,EAAEyhG,QAAQF,OAAO38J,GAAQ28J,EACzBvhG,EAAEyhG,QAAQF,OAAO38J,GAAMoB,KAAOA,EACvBu7J,CACT,EACAwK,iBAAkB,SAAUrpG,EAASzU,EAASl+B,GAC5C,GAAgB,IAAZk+B,EACF,MAAO,CACLxE,OAAQ,EACRnC,MAAO,EACP+6G,YAAa,EACbD,WAAY,GAGhB,IAAIppJ,EAAkB,eAAd+W,GAA8Bk+B,GAAW,KAAO,IAAM,EAC5Dh7C,EAAkB,aAAd8c,GAA4Bk+B,GAAW,KAAO,IAAM,EAC1D,MAAO,CACLxE,OAAQiZ,EAAQjZ,SAAWx2C,EAC3Bq0C,MAAOob,EAAQpb,QAAUtuC,EACzBqpJ,YAAa3/F,EAAQ2/F,cAAgBpvJ,EACrCmvJ,WAAY1/F,EAAQ0/F,aAAeppJ,EAEvC,EACAgzJ,UAAW,SAAUx8G,GACnB,MAAO,CACLlI,MAAOkI,EAAUy8G,KAAK1jH,MAAQiH,EAAUy8G,KAAKx+G,KAC7ChE,OAAQ+F,EAAUy8G,KAAK5H,OAAS70G,EAAUy8G,KAAKhjI,IAC/CwkB,KAAM+B,EAAUy8G,KAAKx+G,KACrBxkB,IAAKumB,EAAUy8G,KAAKhjI,IAExB,EAEA2Q,QAAS,SAAU8oB,EAASwpG,EAAanyH,GACvC,IAAI3F,EAAQsuB,EAAQtuB,QAChB83H,EAAc,GAChB93H,EAAMlT,OAAO95B,MAAMgtC,EAAO,CAAC,EAAG,GAAGh2B,OAAOg2B,EAAMlT,OAAOgrI,EAAanyH,KAEpE2oB,EAAQjpB,SACV,EACA0yH,UAAW,SAAUzpG,GACnBA,EAAQlhE,KAAKyoK,EAAgBvnG,EAAQ,GAAGloB,MAAMyN,QAChD,EACAmkH,aAAc,SAAU1pG,GACtBA,EAAQ,GAAGloB,MAAMyN,QAAUya,EAAQlhE,KAAKyoK,IAAmB,GAC3DvnG,EAAQppB,WAAW2wH,EACrB,EACAjkK,KAAM,SAAU08D,EAAS18D,GACvB,IAAIgpD,EAAS0T,EAAQtxB,GAAG,WAOxB,MANa,WAATprC,IACFA,EAAOgpD,EAAS,OAAS,SAEvBA,EAAkB,SAAThpD,EAA2B,SAATA,KAC7BA,EAAO,QAEFA,CACT,EAEAqmK,YAAa,SAAUlkE,EAAQzhD,GAC7B,IAAIzzC,EAAG+F,EACP,OAAQmvF,EAAO,IACb,IAAK,MACHl1F,EAAI,EACJ,MACF,IAAK,SACHA,EAAI,GACJ,MACF,IAAK,SACHA,EAAI,EACJ,MACF,QACEA,EAAIk1F,EAAO,GAAKzhD,EAAS+C,OAE7B,OAAQ0+C,EAAO,IACb,IAAK,OACHnvF,EAAI,EACJ,MACF,IAAK,SACHA,EAAI,GACJ,MACF,IAAK,QACHA,EAAI,EACJ,MACF,QACEA,EAAImvF,EAAO,GAAKzhD,EAASY,MAE7B,MAAO,CACLtuC,EAAGA,EACH/F,EAAGA,EAEP,EAEAq5J,kBAAmB,SAAU5pG,GAC3B,IAAIo1C,EACFy0D,EAAc7pG,EAAQhoB,IAAI,YAC1BgO,EAAWga,EAAQha,WAiCrB,OA3BAga,EAAQhoB,IAAI,CACVspH,UAAWthG,EAAQhoB,IAAI,aACvB8xH,aAAc9pG,EAAQhoB,IAAI,gBAC1B4N,WAAYoa,EAAQhoB,IAAI,cACxBq0C,YAAarsB,EAAQhoB,IAAI,iBACxB0nH,WAAW1/F,EAAQ0/F,cAAcC,YAAY3/F,EAAQ2/F,eACpD,qBAAqBjxJ,KAAKm7J,KAC5BA,EAAc,WACdz0D,EAAc93C,EAAE,IAAM0C,EAAQ,GAAG1iC,SAAW,KAAKwmB,YAAYkc,GAAShoB,IAAI,CAGxED,QAAS,iBAAiBrpC,KAAKsxD,EAAQhoB,IAAI,YAAc,eAAiB,QAC1E6P,WAAY,SAEZy5G,UAAWthG,EAAQhoB,IAAI,aACvB8xH,aAAc9pG,EAAQhoB,IAAI,gBAC1B4N,WAAYoa,EAAQhoB,IAAI,cACxBq0C,YAAarsB,EAAQhoB,IAAI,eACzB,MAASgoB,EAAQhoB,IAAI,WACpB0nH,WAAW1/F,EAAQ0/F,cAAcC,YAAY3/F,EAAQ2/F,eAAe7uG,SAAS,0BAChFkP,EAAQlhE,KAAKwoK,EAAY,cAAelyD,IAE1Cp1C,EAAQhoB,IAAI,CACVgO,SAAU6jH,EACV9+G,KAAM/E,EAAS+E,KACfxkB,IAAKyf,EAASzf,MAET6uE,CACT,EACA20D,kBAAmB,SAAU/pG,GAC3B,IAAIqyB,EAAUi1E,EAAY,cACxBlyD,EAAcp1C,EAAQlhE,KAAKuzF,GACzB+iB,IACFA,EAAYrjE,SACZiuB,EAAQppB,WAAWy7C,GAEvB,EAGA23E,QAAS,SAAUhqG,GACjB1C,EAAEyhG,QAAQ2K,aAAa1pG,GACvB1C,EAAEyhG,QAAQgL,kBAAkB/pG,EAC9B,EACAiqG,cAAe,SAAUjqG,EAASvuB,EAAMy4H,EAAQ9mK,GAQ9C,OAPAA,EAAQA,GAAS,CAAC,EAClBk6D,EAAEv/B,KAAK0T,GAAM,SAAUtyC,EAAGmX,GACxB,IAAIpF,EAAO8uD,EAAQmqG,QAAQ7zJ,GACvBpF,EAAK,GAAK,IACZ9N,EAAMkT,GAAKpF,EAAK,GAAKg5J,EAASh5J,EAAK,GAEvC,IACO9N,CACT,IA0EFk6D,EAAEt3D,GAAGG,OAAO,CACV04J,OAAQ,WAEN,IAAIn0J,EAAOk+J,EAAoBlkK,MAAMmE,KAAMlE,WACzCylK,EAAe9sG,EAAEyhG,QAAQF,OAAOn0J,EAAKm0J,QACrCwL,EAAcD,EAAa9mK,KAC3BouC,EAAQhnC,EAAKgnC,MACb44H,EAAY54H,GAAS,KACrBkc,EAAWljD,EAAKkjD,SAChBtqD,EAAOoH,EAAKpH,KACZinK,EAAQ,GACR/7G,EAAY,SAAUhuC,GACpB,IAAImlB,EAAK23B,EAAEz0D,MACT2hK,EAAiBltG,EAAEyhG,QAAQz7J,KAAKqiC,EAAIriC,IAAS+mK,EAG/C1kI,EAAG7mC,KAAK0oK,GAAmB,GAK3B+C,EAAM5qK,KAAK6qK,GAGPH,IAAmC,SAAnBG,GAA6BA,IAAmBH,GAAkC,SAAnBG,IACjF7kI,EAAGoT,OAEAsxH,GAAkC,SAAnBG,GAClBltG,EAAEyhG,QAAQ0K,UAAU9jI,GAEF,oBAATnlB,GACTA,GAEJ,EACF,GAAI88C,EAAE5R,GAAG9P,MAAQwuH,EAEf,OAAI9mK,EACKuF,KAAKvF,GAAMoH,EAAKse,SAAU4kC,GAE1B/kD,KAAKk1B,MAAK,WACX6vB,GACFA,EAASnuD,KAAKoJ,KAElB,IAGJ,SAASyiD,EAAI9qC,GACX,IAAI+c,EAAO+/B,EAAEz0D,MACb,SAAS4hK,IACPltI,EAAKqZ,WAAW4wH,GAChBlqG,EAAEyhG,QAAQiL,QAAQzsI,GACA,SAAd7yB,EAAKpH,MACPi6B,EAAKyb,OAEPtX,GACF,CACA,SAASA,IACiB,oBAAbksB,GACTA,EAASnuD,KAAK89B,EAAK,IAED,oBAAT/c,GACTA,GAEJ,CAIA9V,EAAKpH,KAAOinK,EAAMzqK,SACK,IAAnBw9D,EAAEyrG,cAA2BsB,EASb,SAAd3/J,EAAKpH,MAEPi6B,EAAKj6B,KACLo+B,KAEA0oI,EAAa3qK,KAAK89B,EAAK,GAAI7yB,EAAM+/J,IAb/BltI,EAAKmR,GAAG,WAAsB,SAATprC,EAA2B,SAATA,IAEzCi6B,EAAKj6B,KACLo+B,KAEA0oI,EAAa3qK,KAAK89B,EAAK,GAAI7yB,EAAMg3B,EAWvC,CAKA,OAAiB,IAAVgQ,EAAkB7oC,KAAKk1B,KAAKywB,GAAWzwB,KAAKutB,GAAOziD,KAAK6oC,MAAM44H,EAAW97G,GAAW9c,MAAM44H,EAAWh/G,EAC9G,EACAvS,KAAM,SAAU0I,GACd,OAAO,SAAU9H,GACf,GAAIkvH,EAAwBlvH,GAC1B,OAAO8H,EAAK/8C,MAAMmE,KAAMlE,WAExB,IAAI+F,EAAOk+J,EAAoBlkK,MAAMmE,KAAMlE,WAE3C,OADA+F,EAAKpH,KAAO,OACLuF,KAAKg2J,OAAOp/J,KAAKoJ,KAAM6B,EAElC,CACF,CAVM,CAUJ4yD,EAAEt3D,GAAG+yC,MACPC,KAAM,SAAUyI,GACd,OAAO,SAAU9H,GACf,GAAIkvH,EAAwBlvH,GAC1B,OAAO8H,EAAK/8C,MAAMmE,KAAMlE,WAExB,IAAI+F,EAAOk+J,EAAoBlkK,MAAMmE,KAAMlE,WAE3C,OADA+F,EAAKpH,KAAO,OACLuF,KAAKg2J,OAAOp/J,KAAKoJ,KAAM6B,EAElC,CACF,CAVM,CAUJ4yD,EAAEt3D,GAAGgzC,MACPC,OAAQ,SAAUwI,GAChB,OAAO,SAAU9H,GACf,GAAIkvH,EAAwBlvH,IAA6B,mBAAXA,EAC5C,OAAO8H,EAAK/8C,MAAMmE,KAAMlE,WAExB,IAAI+F,EAAOk+J,EAAoBlkK,MAAMmE,KAAMlE,WAE3C,OADA+F,EAAKpH,KAAO,SACLuF,KAAKg2J,OAAOp/J,KAAKoJ,KAAM6B,EAElC,CACF,CAVQ,CAUN4yD,EAAEt3D,GAAGizC,QACPkxH,QAAS,SAAUzmK,GACjB,IAAIo0C,EAAQjvC,KAAKmvC,IAAIt0C,GACnB2F,EAAM,GAMR,OALAi0D,EAAEv/B,KAAK,CAAC,KAAM,KAAM,IAAK,OAAO,SAAU5+B,EAAG+R,GACvC4mC,EAAMniC,QAAQzE,GAAQ,IACxB7H,EAAM,CAACsf,WAAWmvB,GAAQ5mC,GAE9B,IACO7H,CACT,EACAqhK,QAAS,SAAUC,GACjB,OAAIA,EACK9hK,KAAKmvC,IAAI,OAAQ,QAAU2yH,EAAQpkI,IAAM,MAAQokI,EAAQ9kH,MAAQ,MAAQ8kH,EAAQhJ,OAAS,MAAQgJ,EAAQ5/G,KAAO,OAEnH+9G,EAAUjgK,KAAKmvC,IAAI,QAASnvC,KACrC,EACA+hK,SAAU,SAAUnsI,EAASiD,GAC3B,IAAIs+B,EAAU1C,EAAEz0D,MACd7G,EAASs7D,EAAE7+B,EAAQv1B,IACnB2hK,EAAyC,UAA3B7oK,EAAOg2C,IAAI,YACzBa,EAAOykB,EAAE,QACTwtG,EAASD,EAAchyH,EAAK8S,YAAc,EAC1Co/G,EAAUF,EAAchyH,EAAK+S,aAAe,EAC5Co/G,EAAchpK,EAAOqoB,SACrByiC,EAAY,CACVvmB,IAAKykI,EAAYzkI,IAAMukI,EACvB//G,KAAMigH,EAAYjgH,KAAOggH,EACzBhkH,OAAQ/kD,EAAOo2F,cACfxzC,MAAO5iD,EAAO6pF,cAEhBo/E,EAAgBjrG,EAAQ31C,SACxBugJ,EAAWttG,EAAE,2CACfstG,EAAShnH,SAAS,QAAQkN,SAASryB,EAAQwI,WAAW+Q,IAAI,CACxDzR,IAAK0kI,EAAc1kI,IAAMukI,EACzB//G,KAAMkgH,EAAclgH,KAAOggH,EAC3BhkH,OAAQiZ,EAAQo4B,cAChBxzC,MAAOob,EAAQ6rB,aACf7lC,SAAU6kH,EAAc,QAAU,aACjCh8G,QAAQ/B,EAAWruB,EAAQzV,SAAUyV,EAAQuqB,QAAQ,WACtD4hH,EAAS74H,SACW,oBAATrQ,GACTA,GAEJ,GACF,IAcF47B,EAAE5R,GAAGD,KAAK89G,KAAO,SAAU79G,GACpBA,EAAGw/G,WACNx/G,EAAG1iB,MAAQs0B,EAAE5R,EAAGnuB,MAAMmtI,UACA,kBAAXh/G,EAAGntB,MACZmtB,EAAGntB,IAAMuqI,EAAUp9G,EAAGntB,IAAKmtB,EAAGnuB,OAEhCmuB,EAAGw/G,UAAW,GAEhB5tG,EAAE5R,EAAGnuB,MAAMmtI,QAAQ,CACjBnkI,IAAKmlB,EAAGvsC,KAAOusC,EAAGntB,IAAIgI,IAAMmlB,EAAG1iB,MAAMzC,KAAOmlB,EAAG1iB,MAAMzC,IACrDsf,MAAO6F,EAAGvsC,KAAOusC,EAAGntB,IAAIsnB,MAAQ6F,EAAG1iB,MAAM6c,OAAS6F,EAAG1iB,MAAM6c,MAC3D87G,OAAQj2G,EAAGvsC,KAAOusC,EAAGntB,IAAIojI,OAASj2G,EAAG1iB,MAAM24H,QAAUj2G,EAAG1iB,MAAM24H,OAC9D52G,KAAMW,EAAGvsC,KAAOusC,EAAGntB,IAAIwsB,KAAOW,EAAG1iB,MAAM+hB,MAAQW,EAAG1iB,MAAM+hB,MAE5D,CACD,CA/iBD,GAwjBMogH,EAAc,CAAC,EACnB7tG,EAAEv/B,KAAK,CAAC,OAAQ,QAAS,QAAS,QAAS,SAAS,SAAU5+B,EAAG+C,GAC/DipK,EAAYjpK,GAAQ,SAAUd,GAC5B,OAAO2L,KAAKG,IAAI9L,EAAGjC,EAAI,EACzB,CACF,IACAm+D,EAAEn3D,OAAOglK,EAAa,CACpBC,KAAM,SAAUhqK,GACd,OAAO,EAAI2L,KAAKg/C,IAAI3qD,EAAI2L,KAAKi/C,GAAK,EACpC,EACAq/G,KAAM,SAAUjqK,GACd,OAAO,EAAI2L,KAAKu+J,KAAK,EAAIlqK,EAAIA,EAC/B,EACAmqK,QAAS,SAAUnqK,GACjB,OAAa,IAANA,GAAiB,IAANA,EAAUA,GAAK2L,KAAKG,IAAI,EAAG,GAAK9L,EAAI,IAAM2L,KAAKy+J,KAAe,IAATpqK,EAAI,GAAU,KAAO2L,KAAKi/C,GAAK,GACxG,EACAy/G,KAAM,SAAUrqK,GACd,OAAOA,EAAIA,GAAK,EAAIA,EAAI,EAC1B,EACAsqK,OAAQ,SAAUtqK,GAGhB,IAFA,IAAIuqK,EACFC,EAAS,EACJxqK,IAAMuqK,EAAO5+J,KAAKG,IAAI,IAAK0+J,IAAW,GAAK,KAClD,OAAO,EAAI7+J,KAAKG,IAAI,EAAG,EAAI0+J,GAAU,OAAS7+J,KAAKG,KAAY,EAAPy+J,EAAW,GAAK,GAAKvqK,EAAG,EAClF,IAEFk8D,EAAEv/B,KAAKotI,GAAa,SAAUjpK,EAAM2pK,GAClCvuG,EAAEtU,OAAO,SAAW9mD,GAAQ2pK,EAC5BvuG,EAAEtU,OAAO,UAAY9mD,GAAQ,SAAUd,GACrC,OAAO,EAAIyqK,EAAO,EAAIzqK,EACxB,EACAk8D,EAAEtU,OAAO,YAAc9mD,GAAQ,SAAUd,GACvC,OAAOA,EAAI,GAAMyqK,EAAW,EAAJzqK,GAAS,EAAI,EAAIyqK,GAAY,EAALzqK,EAAS,GAAK,CAChE,CACF,IArCF,IAGM+pK,EAoCO7tG,EAAEyhG,QAiBUzhG,EAAEyhG,QAAQhwC,OAAO,QAAS,QAAQ,SAAUtwF,EAASiD,GAC5E,IAAI57B,EAAM,CACNgmK,GAAI,CAAC,SAAU,OACfhK,SAAU,CAAC,SAAU,OACrBiK,KAAM,CAAC,MAAO,UACdhhH,KAAM,CAAC,QAAS,QAChB82G,WAAY,CAAC,QAAS,QACtBh8G,MAAO,CAAC,OAAQ,UAElBma,EAAU1C,EAAEz0D,MACZwkB,EAAYoR,EAAQpR,WAAa,KACjC2b,EAAQg3B,EAAQ0qG,UAChB77G,EAAU,CACR06G,KAAMjsG,EAAEn3D,OAAO,CAAC,EAAG6iC,IAErBosE,EAAc93C,EAAEyhG,QAAQ6K,kBAAkB5pG,GAC5CnR,EAAQ06G,KAAKzjK,EAAIunB,GAAW,IAAMwhC,EAAQ06G,KAAKzjK,EAAIunB,GAAW,IACzC,SAAjBoR,EAAQn7B,OACV08D,EAAQ0qG,QAAQ77G,EAAQ06G,MACpBn0D,GACFA,EAAYp9D,IAAIslB,EAAEyhG,QAAQuK,UAAUz6G,IAEtCA,EAAQ06G,KAAOvgI,GAEbosE,GACFA,EAAYvmD,QAAQyO,EAAEyhG,QAAQuK,UAAUz6G,GAAUpwB,EAAQzV,SAAUyV,EAAQuqB,QAE9EgX,EAAQnR,QAAQA,EAAS,CACvBnd,OAAO,EACP1oB,SAAUyV,EAAQzV,SAClBggC,OAAQvqB,EAAQuqB,OAChB4E,SAAUlsB,GAEd,IAiB0B47B,EAAEyhG,QAAQhwC,OAAO,UAAU,SAAUtwF,EAASiD,GACtE,IAAIsqI,EACFC,EACAC,EACAlsG,EAAU1C,EAAEz0D,MAEZvF,EAAOm7B,EAAQn7B,KACf01C,EAAgB,SAAT11C,EACPy1C,EAAgB,SAATz1C,EACP+pB,EAAYoR,EAAQpR,WAAa,KACjCo4I,EAAWhnI,EAAQgnI,SACnB0G,EAAQ1tI,EAAQ0tI,OAAS,EAEzBC,EAAgB,EAARD,GAAapzH,GAAQC,EAAO,EAAI,GACxCyV,EAAQhwB,EAAQzV,SAAWojJ,EAC3BpjH,EAASvqB,EAAQuqB,OAEjB2zC,EAAoB,OAAdtvE,GAAoC,SAAdA,EAAuB,MAAQ,OAC3Dg/I,EAAuB,OAAdh/I,GAAoC,SAAdA,EAC/BluB,EAAI,EACJmtK,EAAWtsG,EAAQtuB,QAAQryC,OA2B7B,IA1BAi+D,EAAEyhG,QAAQ6K,kBAAkB5pG,GAC5BksG,EAAWlsG,EAAQhoB,IAAI2kD,GAGlB8oE,IACHA,EAAWzlG,EAAgB,QAAR28B,EAAgB,cAAgB,gBAAkB,GAEnE5jD,KACFkzH,EAAW,CACT/iH,QAAS,IAEFyzC,GAAOuvE,EAIhBlsG,EAAQhoB,IAAI,UAAW,GAAGA,IAAI2kD,EAAK0vE,EAAqB,GAAX5G,EAA0B,EAAXA,GAAc52G,QAAQo9G,EAAUx9G,EAAOzF,IAIjGhQ,IACFysH,GAAsB14J,KAAKG,IAAI,EAAGi/J,EAAQ,KAE5CF,EAAW,CAAC,GACHtvE,GAAOuvE,EAGT/sK,EAAIgtK,EAAOhtK,KAChB6sK,EAAS,CAAC,GACHrvE,IAAQ0vE,EAAS,KAAO,MAAQ5G,EACvCzlG,EAAQnR,QAAQm9G,EAAQv9G,EAAOzF,GAAQ6F,QAAQo9G,EAAUx9G,EAAOzF,GAChEy8G,EAAWzsH,EAAkB,EAAXysH,EAAeA,EAAW,EAI1CzsH,KACFgzH,EAAS,CACP9iH,QAAS,IAEJyzC,IAAQ0vE,EAAS,KAAO,MAAQ5G,EACvCzlG,EAAQnR,QAAQm9G,EAAQv9G,EAAOzF,IAEjCgX,EAAQtuB,MAAMhQ,GACd47B,EAAEyhG,QAAQ7nH,QAAQ8oB,EAASssG,EAAUF,EAAQ,EAC/C,IAiBwB9uG,EAAEyhG,QAAQhwC,OAAO,OAAQ,QAAQ,SAAUtwF,EAASiD,GAC1E,IAAIsH,EACF6lB,EAAU,CAAC,EACXmR,EAAU1C,EAAEz0D,MACZwkB,EAAYoR,EAAQpR,WAAa,WACjCk/I,EAAqB,SAAdl/I,EACPw0I,EAAa0K,GAAsB,eAAdl/I,EACrBy0I,EAAWyK,GAAsB,aAAdl/I,EACrB2b,EAAQg3B,EAAQ0qG,UAChB77G,EAAQ06G,KAAO,CACbhjI,IAAKu7H,GAAY94H,EAAM24H,OAAS34H,EAAMzC,KAAO,EAAIyC,EAAMzC,IACvDsf,MAAOg8G,GAAc74H,EAAM6c,MAAQ7c,EAAM+hB,MAAQ,EAAI/hB,EAAM6c,MAC3D87G,OAAQG,GAAY94H,EAAM24H,OAAS34H,EAAMzC,KAAO,EAAIyC,EAAM24H,OAC1D52G,KAAM82G,GAAc74H,EAAM6c,MAAQ7c,EAAM+hB,MAAQ,EAAI/hB,EAAM+hB,MAE5DuS,EAAEyhG,QAAQ6K,kBAAkB5pG,GACP,SAAjBvhC,EAAQn7B,OACV08D,EAAQ0qG,QAAQ77G,EAAQ06G,MACxB16G,EAAQ06G,KAAOvgI,GAEjBg3B,EAAQnR,QAAQA,EAAS,CACvBnd,OAAO,EACP1oB,SAAUyV,EAAQzV,SAClBggC,OAAQvqB,EAAQuqB,OAChB4E,SAAUlsB,GAEd,IAiBwB47B,EAAEyhG,QAAQhwC,OAAO,OAAQ,QAAQ,SAAUtwF,EAASiD,GAC1E,IAAI+jI,EACFzlG,EAAU1C,EAAEz0D,MAEZkwC,EAAgB,SADTta,EAAQn7B,KAEf+pB,EAAYoR,EAAQpR,WAAa,OACjCsvE,EAAoB,OAAdtvE,GAAoC,SAAdA,EAAuB,MAAQ,OAC3Dg/I,EAAuB,OAAdh/I,GAAoC,SAAdA,EAAuB,KAAO,KAC7Dm/I,EAA4B,OAAXH,EAAkB,KAAO,KAC1Cv/G,EAAY,CACV5D,QAAS,GAEboU,EAAEyhG,QAAQ6K,kBAAkB5pG,GAC5BylG,EAAWhnI,EAAQgnI,UAAYzlG,EAAgB,QAAR28B,EAAgB,cAAgB,eAAc,GAAQ,EAC7F7vC,EAAU6vC,GAAO0vE,EAAS5G,EACtB1sH,IACFinB,EAAQhoB,IAAI8U,GACZA,EAAU6vC,GAAO6vE,EAAiB/G,EAClC34G,EAAU5D,QAAU,GAItB8W,EAAQnR,QAAQ/B,EAAW,CACzBpb,OAAO,EACP1oB,SAAUyV,EAAQzV,SAClBggC,OAAQvqB,EAAQuqB,OAChB4E,SAAUlsB,GAEd,IAmB2B47B,EAAEyhG,QAAQhwC,OAAO,UAAW,QAAQ,SAAUtwF,EAASiD,GAChF,IAAIviC,EACFohB,EACAwqC,EACAxkB,EACAkmI,EACA/K,EACAgL,EAAOjuI,EAAQkuI,OAAS5/J,KAAK+c,MAAM/c,KAAKu+J,KAAK7sI,EAAQkuI,SAAW,EAChEC,EAAQF,EACR1sG,EAAU1C,EAAEz0D,MAEZkwC,EAAgB,SADTta,EAAQn7B,KAGf+mB,EAAS21C,EAAQjnB,OAAOf,IAAI,aAAc,UAAU3tB,SAEpDu6B,EAAQ73C,KAAKuF,KAAK0tD,EAAQ0/F,aAAekN,GACzC7lH,EAASh6C,KAAKuF,KAAK0tD,EAAQ2/F,cAAgB+M,GAC3CC,EAAS,GAGX,SAASE,IACPF,EAAOhtK,KAAKkJ,MACR8jK,EAAOttK,SAAWqtK,EAAOE,GAC3BE,GAEJ,CAGA,IAAK3tK,EAAI,EAAGA,EAAIutK,EAAMvtK,IAIpB,IAFAonC,EAAMlc,EAAOkc,IAAMpnC,EAAI4nD,EACvB26G,EAAKviK,GAAKutK,EAAO,GAAK,EACjBnsJ,EAAI,EAAGA,EAAIqsJ,EAAOrsJ,IAErBwqC,EAAO1gC,EAAO0gC,KAAOxqC,EAAIqkC,EACzB6nH,EAAKlsJ,GAAKqsJ,EAAQ,GAAK,EAIvB5sG,EAAQh1C,QAAQ44B,SAAS,QAAQ7I,KAAK,eAAe/C,IAAI,CACvDgO,SAAU,WACV6B,WAAY,UACZkD,MAAOxqC,EAAIqkC,EACXre,KAAMpnC,EAAI4nD,IAKX9d,SAAS6nB,SAAS,sBAAsB9Y,IAAI,CAC3CgO,SAAU,WACVj/C,SAAU,SACV69C,MAAOA,EACPmC,OAAQA,EACRgE,KAAMA,GAAQhS,EAAO0zH,EAAK7nH,EAAQ,GAClCre,IAAKA,GAAOwS,EAAO2oH,EAAK36G,EAAS,GACjCmC,QAASnQ,EAAO,EAAI,IACnB8V,QAAQ,CACT9D,KAAMA,GAAQhS,EAAO,EAAI0zH,EAAK7nH,GAC9Bre,IAAKA,GAAOwS,EAAO,EAAI2oH,EAAK36G,GAC5BmC,QAASnQ,EAAO,EAAI,GACnBta,EAAQzV,UAAY,IAAKyV,EAAQuqB,OAAQ6jH,GAGhD,SAASC,IACP9sG,EAAQhoB,IAAI,CACV6P,WAAY,YAEdyV,EAAEqvG,GAAQ56H,SACVrQ,GACF,CACF,IAiBwB47B,EAAEyhG,QAAQhwC,OAAO,OAAQ,UAAU,SAAUtwF,EAASiD,GAC5E,IAAIqX,EAAwB,SAAjBta,EAAQn7B,KACnBg6D,EAAEz0D,MAAMmvC,IAAI,UAAWe,EAAO,EAAI,GAAG8V,QAAQ,CAC3C3F,QAASnQ,EAAO,EAAI,GACnB,CACDrH,OAAO,EACP1oB,SAAUyV,EAAQzV,SAClBggC,OAAQvqB,EAAQuqB,OAChB4E,SAAUlsB,GAEd,IAiBwB47B,EAAEyhG,QAAQhwC,OAAO,OAAQ,QAAQ,SAAUtwF,EAASiD,GAE1E,IAAIs+B,EAAU1C,EAAEz0D,MACdvF,EAAOm7B,EAAQn7B,KACfy1C,EAAgB,SAATz1C,EACP01C,EAAgB,SAAT11C,EACPkhE,EAAO/lC,EAAQ+lC,MAAQ,GACvBjZ,EAAU,YAAYtoC,KAAKuhD,GAE3Bm4B,IADel+D,EAAQsuI,WACJ,CAAC,QAAS,UAAY,CAAC,SAAU,SACpD/jJ,EAAWyV,EAAQzV,SAAW,EAC9BosF,EAAc93C,EAAEyhG,QAAQ6K,kBAAkB5pG,GAC1Ch3B,EAAQg3B,EAAQ0qG,UAChBsC,EAAa,CACXzD,KAAMjsG,EAAEn3D,OAAO,CAAC,EAAG6iC,IAErBikI,EAAa,CACX1D,KAAMjsG,EAAEn3D,OAAO,CAAC,EAAG6iC,IAErBy8H,EAAW,CAACz8H,EAAM2zD,EAAI,IAAK3zD,EAAM2zD,EAAI,KACrC2vE,EAAWtsG,EAAQtuB,QAAQryC,OACzBksD,IACFiZ,EAAOtrD,SAASqyC,EAAQ,GAAI,IAAM,IAAMk6G,EAASzsH,EAAO,EAAI,IAE9Dg0H,EAAWzD,KAAK5sE,EAAI,IAAMn4B,EAC1ByoG,EAAW1D,KAAK5sE,EAAI,IAAMn4B,EAC1ByoG,EAAW1D,KAAK5sE,EAAI,IAAM,EACtB5jD,IACFinB,EAAQ0qG,QAAQuC,EAAW1D,MACvBn0D,GACFA,EAAYp9D,IAAIslB,EAAEyhG,QAAQuK,UAAU2D,IAEtCA,EAAW1D,KAAOvgI,GAIpBg3B,EAAQtuB,OAAM,SAAUlxB,GAClB40F,GACFA,EAAYvmD,QAAQyO,EAAEyhG,QAAQuK,UAAU0D,GAAahkJ,EAAUyV,EAAQuqB,QAAQ6F,QAAQyO,EAAEyhG,QAAQuK,UAAU2D,GAAajkJ,EAAUyV,EAAQuqB,QAE5IxoC,GACF,IAAGquC,QAAQm+G,EAAYhkJ,EAAUyV,EAAQuqB,QAAQ6F,QAAQo+G,EAAYjkJ,EAAUyV,EAAQuqB,QAAQtX,MAAMhQ,GACrG47B,EAAEyhG,QAAQ7nH,QAAQ8oB,EAASssG,EAAU,EACvC,IAiB6BhvG,EAAEyhG,QAAQhwC,OAAO,YAAa,QAAQ,SAAUtwF,EAASiD,GACpF,IAAIs+B,EAAU1C,EAAEz0D,MACdikD,EAAY,CACVo4G,gBAAiBllG,EAAQhoB,IAAI,oBAEZ,SAAjBvZ,EAAQn7B,OACVwpD,EAAU5D,QAAU,GAEtBoU,EAAEyhG,QAAQ0K,UAAUzpG,GACpBA,EAAQhoB,IAAI,CACVk1H,gBAAiB,OACjBhI,gBAAiBzmI,EAAQglI,OAAS,YACjC50G,QAAQ/B,EAAW,CACpBpb,OAAO,EACP1oB,SAAUyV,EAAQzV,SAClBggC,OAAQvqB,EAAQuqB,OAChB4E,SAAUlsB,GAEd,IAiBwB47B,EAAEyhG,QAAQhwC,OAAO,QAAQ,SAAUtwF,EAASiD,GAElE,IAAIyrI,EACFjD,EACArkJ,EACAm6C,EAAU1C,EAAEz0D,MAEZukK,EAAS,CAAC,YACVC,EAAS,CAAC,iBAAkB,oBAAqB,aAAc,iBAC/DC,EAAS,CAAC,kBAAmB,mBAAoB,cAAe,gBAEhEhqK,EAAOm7B,EAAQn7B,KACf0lK,EAAmB,WAAT1lK,EACV+0C,EAAQ5Z,EAAQ4Z,OAAS,OACzBotD,EAAShnE,EAAQgnE,QAAU,CAAC,SAAU,UACtCz/C,EAAWga,EAAQhoB,IAAI,YACvB74B,EAAM6gD,EAAQha,WACdhC,EAAWsZ,EAAEyhG,QAAQsK,iBAAiBrpG,GACtC72D,EAAOs1B,EAAQt1B,MAAQ66C,EACvB96C,EAAKu1B,EAAQv1B,IAAMo0D,EAAEyhG,QAAQsK,iBAAiBrpG,EAAS,GACzD1C,EAAEyhG,QAAQ6K,kBAAkB5pG,GACf,SAAT18D,IACFuiB,EAAO1c,EACPA,EAAOD,EACPA,EAAK2c,GAIPqkJ,EAAS,CACP/gK,KAAM,CACJoH,EAAGpH,EAAK49C,OAAS/C,EAAS+C,OAC1BzwC,EAAGnN,EAAKy7C,MAAQZ,EAASY,OAE3B17C,GAAI,CACFqH,EAAGrH,EAAG69C,OAAS/C,EAAS+C,OACxBzwC,EAAGpN,EAAG07C,MAAQZ,EAASY,QAKb,QAAVvM,GAA6B,SAAVA,IAEjB6xH,EAAO/gK,KAAKoH,IAAM25J,EAAOhhK,GAAGqH,IAC9BpH,EAAOm0D,EAAEyhG,QAAQkL,cAAcjqG,EAASqtG,EAAQnD,EAAO/gK,KAAKoH,EAAGpH,GAC/DD,EAAKo0D,EAAEyhG,QAAQkL,cAAcjqG,EAASqtG,EAAQnD,EAAOhhK,GAAGqH,EAAGrH,IAIzDghK,EAAO/gK,KAAKmN,IAAM4zJ,EAAOhhK,GAAGoN,IAC9BnN,EAAOm0D,EAAEyhG,QAAQkL,cAAcjqG,EAASstG,EAAQpD,EAAO/gK,KAAKmN,EAAGnN,GAC/DD,EAAKo0D,EAAEyhG,QAAQkL,cAAcjqG,EAASstG,EAAQpD,EAAOhhK,GAAGoN,EAAGpN,KAKjD,YAAVmvC,GAAiC,SAAVA,GAErB6xH,EAAO/gK,KAAKoH,IAAM25J,EAAOhhK,GAAGqH,IAC9BpH,EAAOm0D,EAAEyhG,QAAQkL,cAAcjqG,EAASotG,EAAQlD,EAAO/gK,KAAKoH,EAAGpH,GAC/DD,EAAKo0D,EAAEyhG,QAAQkL,cAAcjqG,EAASotG,EAAQlD,EAAOhhK,GAAGqH,EAAGrH,IAK3Du8F,IACF0nE,EAAW7vG,EAAEyhG,QAAQ4K,YAAYlkE,EAAQzhD,GACzC76C,EAAKo9B,KAAOyd,EAAS27G,YAAcx2J,EAAKw2J,aAAewN,EAAS58J,EAAI4O,EAAIonB,IACxEp9B,EAAK4hD,MAAQ/G,EAAS07G,WAAav2J,EAAKu2J,YAAcyN,EAAS72J,EAAI6I,EAAI4rC,KACvE7hD,EAAGq9B,KAAOyd,EAAS27G,YAAcz2J,EAAGy2J,aAAewN,EAAS58J,EAAI4O,EAAIonB,IACpEr9B,EAAG6hD,MAAQ/G,EAAS07G,WAAax2J,EAAGw2J,YAAcyN,EAAS72J,EAAI6I,EAAI4rC,aAE9D5hD,EAAKw2J,mBACLx2J,EAAKu2J,WACZ1/F,EAAQhoB,IAAI7uC,GAGE,YAAVkvC,GAAiC,SAAVA,IACzBg1H,EAASA,EAAO3xJ,OAAO,CAAC,YAAa,iBAAiBA,OAAO0xJ,GAC7DE,EAASA,EAAO5xJ,OAAO,CAAC,aAAc,gBAItCskD,EAAQ37B,KAAK,YAAYtG,MAAK,WAC5B,IAAI+5F,EAAQx6D,EAAEz0D,MACZ0kK,EAAgBjwG,EAAEyhG,QAAQsK,iBAAiBvxC,GAC3C01C,EAAY,CACVzmH,OAAQwmH,EAAcxmH,OAASmjH,EAAO/gK,KAAKoH,EAC3Cq0C,MAAO2oH,EAAc3oH,MAAQslH,EAAO/gK,KAAKmN,EACzCqpJ,YAAa4N,EAAc5N,YAAcuK,EAAO/gK,KAAKoH,EACrDmvJ,WAAY6N,EAAc7N,WAAawK,EAAO/gK,KAAKmN,GAErDm3J,EAAU,CACR1mH,OAAQwmH,EAAcxmH,OAASmjH,EAAOhhK,GAAGqH,EACzCq0C,MAAO2oH,EAAc3oH,MAAQslH,EAAOhhK,GAAGoN,EACvCqpJ,YAAa4N,EAAcxmH,OAASmjH,EAAOhhK,GAAGqH,EAC9CmvJ,WAAY6N,EAAc3oH,MAAQslH,EAAOhhK,GAAGoN,GAI5C4zJ,EAAO/gK,KAAKoH,IAAM25J,EAAOhhK,GAAGqH,IAC9Bi9J,EAAYlwG,EAAEyhG,QAAQkL,cAAcnyC,EAAOu1C,EAAQnD,EAAO/gK,KAAKoH,EAAGi9J,GAClEC,EAAUnwG,EAAEyhG,QAAQkL,cAAcnyC,EAAOu1C,EAAQnD,EAAOhhK,GAAGqH,EAAGk9J,IAI5DvD,EAAO/gK,KAAKmN,IAAM4zJ,EAAOhhK,GAAGoN,IAC9Bk3J,EAAYlwG,EAAEyhG,QAAQkL,cAAcnyC,EAAOw1C,EAAQpD,EAAO/gK,KAAKmN,EAAGk3J,GAClEC,EAAUnwG,EAAEyhG,QAAQkL,cAAcnyC,EAAOw1C,EAAQpD,EAAOhhK,GAAGoN,EAAGm3J,IAE5DzE,GACF1rG,EAAEyhG,QAAQ0K,UAAU3xC,GAItBA,EAAM9/E,IAAIw1H,GACV11C,EAAMjpE,QAAQ4+G,EAAShvI,EAAQzV,SAAUyV,EAAQuqB,QAAQ,WAEnDggH,GACF1rG,EAAEyhG,QAAQ2K,aAAa5xC,EAE3B,GACF,KAIF93D,EAAQnR,QAAQ3lD,EAAI,CAClBwoC,OAAO,EACP1oB,SAAUyV,EAAQzV,SAClBggC,OAAQvqB,EAAQuqB,OAChB4E,SAAU,WACR,IAAIvjC,EAAS21C,EAAQ31C,SACF,IAAfnhB,EAAGggD,SACL8W,EAAQhoB,IAAI,UAAW7uC,EAAK+/C,SAEzB8/G,IACHhpG,EAAQhoB,IAAI,WAAyB,WAAbgO,EAAwB,WAAaA,GAAU37B,OAAOA,GAI9EizC,EAAEyhG,QAAQ0K,UAAUzpG,IAEtBt+B,GACF,GAEJ,IAiByB47B,EAAEyhG,QAAQhwC,OAAO,SAAS,SAAUtwF,EAASiD,GAEpE,IAAIiE,EAAK23B,EAAEz0D,MACTvF,EAAOm7B,EAAQn7B,KACfioD,EAAUryC,SAASulB,EAAQ8sB,QAAS,MAA0C,IAAlCryC,SAASulB,EAAQ8sB,QAAS,KAAyB,WAATjoD,EAAJ,EAA4B,KAC9GoqK,EAAapwG,EAAEn3D,QAAO,EAAM,CAC1BgD,KAAMm0D,EAAEyhG,QAAQsK,iBAAiB1jI,GACjCz8B,GAAIo0D,EAAEyhG,QAAQsK,iBAAiB1jI,EAAI4lB,EAAS9sB,EAAQpR,WAAa,QACjEo4E,OAAQhnE,EAAQgnE,QAAU,CAAC,SAAU,WACpChnE,GAGDA,EAAQkvI,OACVD,EAAWvkK,KAAK+/C,QAAU,EAC1BwkH,EAAWxkK,GAAGggD,QAAU,GAE1BoU,EAAEyhG,QAAQF,OAAOr6F,KAAK/kE,KAAKoJ,KAAM6kK,EAAYhsI,EAC/C,IAiBwB47B,EAAEyhG,QAAQhwC,OAAO,OAAQ,QAAQ,SAAUtwF,EAASiD,GAC1E,IAAIgsI,EAAapwG,EAAEn3D,QAAO,EAAM,CAAC,EAAGs4B,EAAS,CAC3CkvI,MAAM,EACNpiH,QAASryC,SAASulB,EAAQ8sB,QAAS,KAAO,MAE5C+R,EAAEyhG,QAAQF,OAAOxmH,MAAM54C,KAAKoJ,KAAM6kK,EAAYhsI,EAChD,IAiB2B47B,EAAEyhG,QAAQhwC,OAAO,UAAW,QAAQ,SAAUtwF,EAASiD,GAChF,IAAIs+B,EAAU1C,EAAEz0D,MACdvF,EAAOm7B,EAAQn7B,KACfy1C,EAAgB,SAATz1C,EAEPsqK,EAAW70H,GADK,SAATz1C,EAGP8oK,EAA+B,GAAtB3tI,EAAQ0tI,OAAS,IAAUyB,EAAW,EAAI,GACnD5kJ,EAAWyV,EAAQzV,SAAWojJ,EAC9ByB,EAAY,EACZ1uK,EAAI,EACJmtK,EAAWtsG,EAAQtuB,QAAQryC,OAO7B,KANI05C,GAASinB,EAAQtxB,GAAG,cACtBsxB,EAAQhoB,IAAI,UAAW,GAAGe,OAC1B80H,EAAY,GAIP1uK,EAAIitK,EAAOjtK,IAChB6gE,EAAQnR,QAAQ,CACd3F,QAAS2kH,GACR7kJ,EAAUyV,EAAQuqB,QACrB6kH,EAAY,EAAIA,EAElB7tG,EAAQnR,QAAQ,CACd3F,QAAS2kH,GACR7kJ,EAAUyV,EAAQuqB,QACrBgX,EAAQtuB,MAAMhQ,GACd47B,EAAEyhG,QAAQ7nH,QAAQ8oB,EAASssG,EAAUF,EAAQ,EAC/C,IAiByB9uG,EAAEyhG,QAAQhwC,OAAO,SAAS,SAAUtwF,EAASiD,GACpE,IAAIviC,EAAI,EACN6gE,EAAU1C,EAAEz0D,MACZwkB,EAAYoR,EAAQpR,WAAa,OACjCo4I,EAAWhnI,EAAQgnI,UAAY,GAC/B0G,EAAQ1tI,EAAQ0tI,OAAS,EACzBC,EAAgB,EAARD,EAAY,EACpB19G,EAAQ1hD,KAAK+c,MAAM2U,EAAQzV,SAAWojJ,GACtCzvE,EAAoB,OAAdtvE,GAAoC,SAAdA,EAAuB,MAAQ,OAC3DygJ,EAA+B,OAAdzgJ,GAAoC,SAAdA,EACvCy/B,EAAY,CAAC,EACbkgH,EAAa,CAAC,EACdC,EAAa,CAAC,EACdX,EAAWtsG,EAAQtuB,QAAQryC,OAY7B,IAXAi+D,EAAEyhG,QAAQ6K,kBAAkB5pG,GAG5BlT,EAAU6vC,IAAQmxE,EAAiB,KAAO,MAAQrI,EAClDuH,EAAWrwE,IAAQmxE,EAAiB,KAAO,MAAmB,EAAXrI,EACnDwH,EAAWtwE,IAAQmxE,EAAiB,KAAO,MAAmB,EAAXrI,EAGnDzlG,EAAQnR,QAAQ/B,EAAW2B,EAAOhwB,EAAQuqB,QAGnC7pD,EAAIgtK,EAAOhtK,IAChB6gE,EAAQnR,QAAQm+G,EAAYv+G,EAAOhwB,EAAQuqB,QAAQ6F,QAAQo+G,EAAYx+G,EAAOhwB,EAAQuqB,QAExFgX,EAAQnR,QAAQm+G,EAAYv+G,EAAOhwB,EAAQuqB,QAAQ6F,QAAQ/B,EAAW2B,EAAQ,EAAGhwB,EAAQuqB,QAAQtX,MAAMhQ,GACvG47B,EAAEyhG,QAAQ7nH,QAAQ8oB,EAASssG,EAAUF,EAAQ,EAC/C,IAiByB9uG,EAAEyhG,QAAQhwC,OAAO,QAAS,QAAQ,SAAUtwF,EAASiD,GAC5E,IAAIqsI,EACFC,EACAhuG,EAAU1C,EAAEz0D,MACZ/C,EAAM,CACJgmK,GAAI,CAAC,SAAU,OACfC,KAAM,CAAC,MAAO,UACdhhH,KAAM,CAAC,QAAS,QAChBlF,MAAO,CAAC,OAAQ,UAElBviD,EAAOm7B,EAAQn7B,KACf+pB,EAAYoR,EAAQpR,WAAa,OACjCsvE,EAAoB,OAAdtvE,GAAoC,SAAdA,EAAuB,MAAQ,OAC3DygJ,EAA+B,OAAdzgJ,GAAoC,SAAdA,EACvCo4I,EAAWhnI,EAAQgnI,UAAYzlG,EAAgB,QAAR28B,EAAgB,cAAgB,eAAc,GACrF7vC,EAAY,CAAC,EACfwQ,EAAEyhG,QAAQ6K,kBAAkB5pG,GAC5B+tG,EAAY/tG,EAAQ0qG,UACpBsD,EAAWhuG,EAAQha,WAAW22C,GAG9B7vC,EAAU6vC,IAAQmxE,GAAkB,EAAI,GAAKrI,EAAWuI,EACxDlhH,EAAUy8G,KAAOvpG,EAAQ0qG,UACzB59G,EAAUy8G,KAAKzjK,EAAIunB,GAAW,IAAMy/B,EAAUy8G,KAAKzjK,EAAIunB,GAAW,IAGrD,SAAT/pB,IACF08D,EAAQ0qG,QAAQ59G,EAAUy8G,MAC1BvpG,EAAQhoB,IAAI2kD,EAAK7vC,EAAU6vC,IAC3B7vC,EAAUy8G,KAAOwE,EACjBjhH,EAAU6vC,GAAOqxE,GAInBhuG,EAAQnR,QAAQ/B,EAAW,CACzBpb,OAAO,EACP1oB,SAAUyV,EAAQzV,SAClBggC,OAAQvqB,EAAQuqB,OAChB4E,SAAUlsB,GAEd,KAkBuB,IAAnB47B,EAAEyrG,cACKzrG,EAAEyhG,QAAQhwC,OAAO,YAAY,SAAUtwF,EAASiD,GACvD47B,EAAEz0D,MAAM+hK,SAASnsI,EAASiD,EAC5B,IAyDF,SAASu3B,EAAQ+G,GAEf,IADA,IAAInY,EAAamY,EAAQhoB,IAAI,cACP,YAAf6P,GAELA,GADAmY,EAAUA,EAAQ/2B,UACG+O,IAAI,cAE3B,MAAsB,YAAf6P,CACT,CA7CAyV,EAAEu9F,GAAG4B,UAAY,SAAUz8F,EAASiuG,GAClC,IAAInoK,EACFooK,EACA3gF,EACA4gF,EACAC,EACA9wI,EAAW0iC,EAAQ1iC,SAASjsB,cAC9B,MAAI,SAAWisB,GAEb4wI,GADApoK,EAAMk6D,EAAQnjC,YACA36B,QACT89D,EAAQ51B,OAAS8jI,GAA0C,QAA/BpoK,EAAIw3B,SAASjsB,kBAG9Ck8E,EAAMjwB,EAAE,gBAAkB4wG,EAAU,OACzB7uK,OAAS,GAAKkuF,EAAI7+C,GAAG,eAE9B,0CAA0ChgC,KAAK4uB,IACjD6wI,GAAsBnuG,EAAQ97B,YAM5BkqI,EAAW9wG,EAAE0C,GAASpwB,QAAQ,YAAY,MAExCu+H,GAAsBC,EAASlqI,UAInCiqI,EADS,MAAQ7wI,GACI0iC,EAAQ51B,MAER6jI,EAEhBE,GAAsB7wG,EAAE0C,GAAStxB,GAAG,aAAeuqB,EAAQqE,EAAE0C,IACtE,EAYA1C,EAAEn3D,OAAOm3D,EAAEj2B,KAAKjF,QAAS,CACvBq6H,UAAW,SAAUz8F,GACnB,OAAO1C,EAAEu9F,GAAG4B,UAAUz8F,EAAwC,MAA/B1C,EAAE91B,KAAKw4B,EAAS,YACjD,IAEc1C,EAAEu9F,GAAG4B,UAKVn/F,EAAEt3D,GAAGqoK,MAAQ,WACtB,MAA+B,kBAAjBxlK,KAAK,GAAG41F,KAAoB51F,KAAK+mC,QAAQ,QAAU0tB,EAAEz0D,KAAK,GAAG41F,KAC7E,EAgBqBnhC,EAAEu9F,GAAGyT,eAAiB,CACzCC,kBAAmB,WACjB,IAAI9vE,EAAOnhC,EAAEz0D,MAGbxG,YAAW,WACT,IAAImsK,EAAY/vE,EAAK3/F,KAAK,2BAC1Bw+D,EAAEv/B,KAAKywI,GAAW,WAChB3lK,KAAK44D,SACP,GACF,GACF,EACAgtG,sBAAuB,WAErB,GADA5lK,KAAK41F,KAAO51F,KAAKm3D,QAAQquG,QACpBxlK,KAAK41F,KAAKp/F,OAAf,CAGA,IAAImvK,EAAY3lK,KAAK41F,KAAK3/F,KAAK,4BAA8B,GACxD0vK,EAAUnvK,QAEbwJ,KAAK41F,KAAKjjD,GAAG,sBAAuB3yC,KAAK0lK,mBAE3CC,EAAU7uK,KAAKkJ,MACfA,KAAK41F,KAAK3/F,KAAK,0BAA2B0vK,EAP1C,CAQF,EACAE,wBAAyB,WACvB,GAAK7lK,KAAK41F,KAAKp/F,OAAf,CAGA,IAAImvK,EAAY3lK,KAAK41F,KAAK3/F,KAAK,2BAC/B0vK,EAAUhwI,OAAO8+B,EAAE59B,QAAQ72B,KAAM2lK,GAAY,GACzCA,EAAUnvK,OACZwJ,KAAK41F,KAAK3/F,KAAK,0BAA2B0vK,GAE1C3lK,KAAK41F,KAAK7nD,WAAW,2BAA2BgF,IAAI,sBANtD,CAQF,GAmBG0hB,EAAEj2B,KAAKjF,UACVk7B,EAAEj2B,KAAKjF,QAAUk7B,EAAEj2B,KAAK,MAKrBi2B,EAAE51B,aACL41B,EAAE51B,WAAa41B,EAAEjvB,QAMnB,IAAKivB,EAAEv8B,eAAgB,CAGrB,IAAIL,EAAa,+CACbC,EAAa,SAAUC,EAAIC,GAC7B,OAAIA,EAES,OAAPD,EACK,SAIFA,EAAGv8B,MAAM,GAAI,GAAK,KAAOu8B,EAAGE,WAAWF,EAAGvhC,OAAS,GAAG4F,SAAS,IAAM,IAIvE,KAAO27B,CAChB,EACA08B,EAAEv8B,eAAiB,SAAUC,GAC3B,OAAQA,EAAM,IAAI/yB,QAAQyyB,EAAYC,EACxC,CACF,CAIK28B,EAAEt3D,GAAGm4B,MAASm/B,EAAEt3D,GAAGs4B,KACtBg/B,EAAEt3D,GAAGG,OAAO,CACVg4B,KAAM,WACJ,OAAOt1B,KAAKwlB,QAAO,SAAUlvB,GAC3B,OAAOA,EAAI,IAAM,CACnB,GACF,EACAm/B,IAAK,WACH,OAAOz1B,KAAKwlB,QAAO,SAAUlvB,GAC3B,OAAOA,EAAI,IAAM,CACnB,GACF,IAkBUm+D,EAAEu9F,GAAG56G,QAAU,CAC3Bu1E,UAAW,EACXm5C,MAAO,IACP94C,OAAQ,GACR+4C,KAAM,GACNC,IAAK,GACLn5C,MAAO,GACPC,OAAQ,GACRm5C,KAAM,GACNr+E,KAAM,GACNs+E,UAAW,GACXC,QAAS,GACTC,OAAQ,IACR1+E,MAAO,GACPqlC,MAAO,GACPH,IAAK,EACLy5C,GAAI,IAiBO5xG,EAAEt3D,GAAGmpK,OAAS,WACzB,IAAI7rB,EAAUpmH,EAAU0H,EAAIuqI,EAAQjmG,EACpC,OAAKrgE,KAAKxJ,OAKNwJ,KAAK,GAAGsmK,QAAUtmK,KAAK,GAAGsmK,OAAO9vK,OAC5BwJ,KAAK80B,UAAU90B,KAAK,GAAGsmK,SAMhCA,EAAStmK,KAAKo1B,GAAG,GAAG8R,QAAQ,UAG5BnL,EAAK/7B,KAAK2+B,KAAK,SAOb0hC,GAHAo6E,EAAWz6I,KAAKo1B,GAAG,GAAG8R,UAAU7R,QAGX/iB,IAAImoI,EAASjkJ,OAASikJ,EAAS30G,WAAa9lC,KAAK8lC,YAGtEzR,EAAW,cAAgBogC,EAAEv8B,eAAe6D,GAAM,KAClDuqI,EAASA,EAAOh0J,IAAI+tD,EAAU7kC,KAAKnH,GAAU4S,QAAQ5S,KAIhDr0B,KAAK80B,UAAUwxI,IA7BbtmK,KAAK80B,UAAU,GA8B1B,EAgBmB2/B,EAAEt3D,GAAGopK,aAAe,SAAUC,GAC/C,IAAIrpH,EAAWn9C,KAAKmvC,IAAI,YACtBs3H,EAAmC,aAAbtpH,EACtBupH,EAAgBF,EAAgB,uBAAyB,gBACzDD,EAAevmK,KAAKknC,UAAU1hB,QAAO,WACnC,IAAI4a,EAASq0B,EAAEz0D,MACf,QAAIymK,GAAkD,WAA3BrmI,EAAO+O,IAAI,cAG/Bu3H,EAAc7gK,KAAKu6B,EAAO+O,IAAI,YAAc/O,EAAO+O,IAAI,cAAgB/O,EAAO+O,IAAI,cAC3F,IAAG/Z,GAAG,GACR,MAAoB,UAAb+nB,GAAyBopH,EAAa/vK,OAAgD+vK,EAAvC9xG,EAAEz0D,KAAK,GAAGk3B,eAAiBl/B,SACnF,EAgBey8D,EAAEn3D,OAAOm3D,EAAEj2B,KAAKjF,QAAS,CACtCotI,SAAU,SAAUxvG,GAClB,IAAI31B,EAAWizB,EAAE91B,KAAKw4B,EAAS,YAC7BiuG,EAA0B,MAAZ5jI,EAChB,QAAS4jI,GAAe5jI,GAAY,IAAMizB,EAAEu9F,GAAG4B,UAAUz8F,EAASiuG,EACpE,IAiBa3wG,EAAEt3D,GAAGG,OAAO,CACzBg1I,UACMzzC,EAAO,EACJ,WACL,OAAO7+F,KAAKk1B,MAAK,WACVl1B,KAAK+7B,KACR/7B,KAAK+7B,GAAK,YAAa8iE,EAE3B,GACF,GAEF+nE,eAAgB,WACd,OAAO5mK,KAAKk1B,MAAK,WACX,cAAcrvB,KAAK7F,KAAK+7B,KAC1B04B,EAAEz0D,MAAMonD,WAAW,KAEvB,GACF,IAuBqBqN,EAAE29F,OAAO,eAAgB,CAC9CpgI,QAAS,SACT4D,QAAS,CACPi2B,OAAQ,EACR7F,QAAS,CAAC,EACVwe,QAAS,CACP,sBAAuB,gBACvB,gCAAiC,gBACjC,uBAAwB,oBAE1BqiG,aAAa,EACbluK,MAAO,QACPmpC,OAAQ,SAAUpN,GAChB,OAAOA,EAAK8G,KAAK,uBAAuBlpB,IAAIoiB,EAAK8G,KAAK,cAAclG,OACtE,EACAwxI,YAAa,OACbC,MAAO,CACLC,aAAc,uBACdllI,OAAQ,wBAGVmlI,SAAU,KACVC,eAAgB,MAElBC,UAAW,CACThpH,eAAgB,OAChBC,kBAAmB,OACnBgpH,WAAY,OACZC,cAAe,OACfnpH,OAAQ,QAEVopH,UAAW,CACTnpH,eAAgB,OAChBC,kBAAmB,OACnBgpH,WAAY,OACZC,cAAe,OACfnpH,OAAQ,QAEV81G,QAAS,WACP,IAAIp+H,EAAU51B,KAAK41B,QACnB51B,KAAKunK,SAAWvnK,KAAKwnK,SAAW/yG,IAChCz0D,KAAKq1J,UAAU,eAAgB,6BAC/Br1J,KAAKm3D,QAAQx4B,KAAK,OAAQ,WAGrB/I,EAAQixI,cAAmC,IAAnBjxI,EAAQi2B,QAAsC,MAAlBj2B,EAAQi2B,SAC/Dj2B,EAAQi2B,OAAS,GAEnB7rD,KAAKynK,iBAGD7xI,EAAQi2B,OAAS,IACnBj2B,EAAQi2B,QAAU7rD,KAAK0uD,QAAQl4D,QAEjCwJ,KAAK0nK,UACP,EACAvT,oBAAqB,WACnB,MAAO,CACLryH,OAAQ9hC,KAAK6rD,OACb87G,MAAQ3nK,KAAK6rD,OAAOr1D,OAAewJ,KAAK6rD,OAAOl0C,OAAlB88C,IAEjC,EACAmzG,aAAc,WACZ,IAAIC,EACFphI,EACAsgI,EAAQ/mK,KAAK41B,QAAQmxI,MACnBA,IACFc,EAAOpzG,EAAE,UACTz0D,KAAKq1J,UAAUwS,EAAM,2BAA4B,WAAad,EAAMjlI,QACpE+lI,EAAK7sH,UAAUh7C,KAAK0uD,SACpBjoB,EAAWzmC,KAAK6rD,OAAOplB,SAAS,6BAChCzmC,KAAKq0J,aAAa5tH,EAAUsgI,EAAMjlI,QAAQuzH,UAAU5uH,EAAU,KAAMsgI,EAAMC,cAAc3R,UAAUr1J,KAAK0uD,QAAS,sBAEpH,EACAo5G,cAAe,WACb9nK,KAAKq0J,aAAar0J,KAAK0uD,QAAS,sBAChC1uD,KAAK0uD,QAAQjoB,SAAS,6BAA6ByC,QACrD,EACAkrH,SAAU,WACR,IAAI1tH,EAGJ1mC,KAAKm3D,QAAQ/P,WAAW,QAGxBpnD,KAAK0uD,QAAQtH,WAAW,2DAA2Dw/G,iBACnF5mK,KAAK8nK,gBAGLphI,EAAW1mC,KAAK0uD,QAAQ/2C,OAAOw3B,IAAI,UAAW,IAAIiY,WAAW,oCAAoCw/G,iBAChE,YAA7B5mK,KAAK41B,QAAQkxI,aACfpgI,EAASyI,IAAI,SAAU,GAE3B,EACAqlH,WAAY,SAAU35J,EAAKN,GACb,WAARM,GAKQ,UAARA,IACEmF,KAAK41B,QAAQj9B,OACfqH,KAAKo1J,KAAKp1J,KAAK0uD,QAAS1uD,KAAK41B,QAAQj9B,OAEvCqH,KAAK+nK,aAAaxtK,IAEpByF,KAAKw8D,OAAO3hE,EAAKN,GAGL,gBAARM,GAA0BN,IAAiC,IAAxByF,KAAK41B,QAAQi2B,QAClD7rD,KAAKyvF,UAAU,GAEL,UAAR50F,IACFmF,KAAK8nK,gBACDvtK,GACFyF,KAAK4nK,iBAlBP5nK,KAAKyvF,UAAUl1F,EAqBnB,EACA05J,mBAAoB,SAAU15J,GAC5ByF,KAAKw8D,OAAOjiE,GACZyF,KAAKm3D,QAAQx4B,KAAK,gBAAiBpkC,GAKnCyF,KAAK60J,aAAa,KAAM,sBAAuBt6J,GAC/CyF,KAAK60J,aAAa70J,KAAK0uD,QAAQp8C,IAAItS,KAAK0uD,QAAQ/2C,QAAS,KAAM,sBAAuBpd,EACxF,EACAm6E,SAAU,SAAU/7E,GAClB,IAAIA,EAAM49C,SAAU59C,EAAMg+C,QAA1B,CAGA,IAAIS,EAAUqd,EAAEu9F,GAAG56G,QACjB5gD,EAASwJ,KAAK0uD,QAAQl4D,OACtBwxK,EAAehoK,KAAK0uD,QAAQ1gC,MAAMr1B,EAAMQ,QACxCwkI,GAAU,EACZ,OAAQhlI,EAAMy+C,SACZ,KAAKA,EAAQswC,MACb,KAAKtwC,EAAQ2uH,KACXpoC,EAAU39H,KAAK0uD,SAASs5G,EAAe,GAAKxxK,GAC5C,MACF,KAAK4gD,EAAQwwC,KACb,KAAKxwC,EAAQivH,GACX1oC,EAAU39H,KAAK0uD,SAASs5G,EAAe,EAAIxxK,GAAUA,GACrD,MACF,KAAK4gD,EAAQ21E,MACb,KAAK31E,EAAQy1E,MACX7sH,KAAKioK,cAActvK,GACnB,MACF,KAAKy+C,EAAQ6uH,KACXtoC,EAAU39H,KAAK0uD,QAAQ,GACvB,MACF,KAAKtX,EAAQ4uH,IACXroC,EAAU39H,KAAK0uD,QAAQl4D,EAAS,GAGhCmnI,IACFlpE,EAAE97D,EAAMQ,QAAQwlC,KAAK,YAAa,GAClC81B,EAAEkpE,GAASh/F,KAAK,WAAY,GAC5B81B,EAAEkpE,GAASnqF,QAAQ,SACnB76C,EAAM46C,iBA7BR,CA+BF,EACA20H,cAAe,SAAUvvK,GACnBA,EAAMy+C,UAAYqd,EAAEu9F,GAAG56G,QAAQivH,IAAM1tK,EAAMg+C,SAC7C8d,EAAE97D,EAAMu8C,eAAevO,OAAO6M,QAAQ,QAE1C,EACAolB,QAAS,WACP,IAAIhjC,EAAU51B,KAAK41B,QACnB51B,KAAKynK,kBAGkB,IAAnB7xI,EAAQi2B,SAA4C,IAAxBj2B,EAAQixI,cAAyB7mK,KAAK0uD,QAAQl4D,QAC5Eo/B,EAAQi2B,QAAS,EACjB7rD,KAAK6rD,OAAS4I,MAGc,IAAnB7+B,EAAQi2B,OACjB7rD,KAAKyvF,UAAU,GAGNzvF,KAAK6rD,OAAOr1D,SAAWi+D,EAAE/8B,SAAS13B,KAAKm3D,QAAQ,GAAIn3D,KAAK6rD,OAAO,IAEpE7rD,KAAK0uD,QAAQl4D,SAAWwJ,KAAK0uD,QAAQlzB,KAAK,sBAAsBhlC,QAClEo/B,EAAQi2B,QAAS,EACjB7rD,KAAK6rD,OAAS4I,KAIdz0D,KAAKyvF,UAAUvrF,KAAKI,IAAI,EAAGsxB,EAAQi2B,OAAS,IAM9Cj2B,EAAQi2B,OAAS7rD,KAAK0uD,QAAQ1gC,MAAMhuB,KAAK6rD,QAE3C7rD,KAAK8nK,gBACL9nK,KAAK0nK,UACP,EACAD,eAAgB,WACd,IAAIU,EAAcnoK,KAAK0uD,QACrB05G,EAAapoK,KAAKqoK,OACe,oBAAxBroK,KAAK41B,QAAQkM,OACtB9hC,KAAK0uD,QAAU1uD,KAAK41B,QAAQkM,OAAO9hC,KAAKm3D,SAExCn3D,KAAK0uD,QAAU1uD,KAAKm3D,QAAQ37B,KAAKx7B,KAAK41B,QAAQkM,QAEhD9hC,KAAKq1J,UAAUr1J,KAAK0uD,QAAS,oDAAqD,oBAClF1uD,KAAKqoK,OAASroK,KAAK0uD,QAAQ/2C,OAAO6N,OAAO,sCAAsC2qB,OAC/EnwC,KAAKq1J,UAAUr1J,KAAKqoK,OAAQ,uBAAwB,qCAGhDD,IACFpoK,KAAKo1J,KAAK+S,EAAYxnI,IAAI3gC,KAAK0uD,UAC/B1uD,KAAKo1J,KAAKgT,EAAWznI,IAAI3gC,KAAKqoK,SAElC,EACAX,SAAU,WACR,IAAIY,EACF1yI,EAAU51B,KAAK41B,QACfkxI,EAAclxI,EAAQkxI,YACtB1mI,EAASpgC,KAAKm3D,QAAQ/2B,SACxBpgC,KAAK6rD,OAAS7rD,KAAKuoK,YAAY3yI,EAAQi2B,QACvC7rD,KAAKq1J,UAAUr1J,KAAK6rD,OAAQ,6BAA8B,mBAAmBwoG,aAAar0J,KAAK6rD,OAAQ,iCACvG7rD,KAAKq1J,UAAUr1J,KAAK6rD,OAAOl0C,OAAQ,+BACnC3X,KAAK6rD,OAAOl0C,OAAOu4B,OACnBlwC,KAAK0uD,QAAQ/vB,KAAK,OAAQ,OAAOzJ,MAAK,WACpC,IAAI4M,EAAS2yB,EAAEz0D,MACbwoK,EAAW1mI,EAAOwwG,WAAW3zG,KAAK,MAClCgpI,EAAQ7lI,EAAOnqB,OACf8wJ,EAAUd,EAAMr1B,WAAW3zG,KAAK,MAClCmD,EAAOnD,KAAK,gBAAiB8pI,GAC7Bd,EAAMhpI,KAAK,kBAAmB6pI,EAChC,IAAG7wJ,OAAOgnB,KAAK,OAAQ,YACvB3+B,KAAK0uD,QAAQ/tB,IAAI3gC,KAAK6rD,QAAQltB,KAAK,CACjC,gBAAiB,QACjB,gBAAiB,QACjB6C,UAAW,IACV7pB,OAAOgnB,KAAK,CACb,cAAe,SACdwR,OAGEnwC,KAAK6rD,OAAOr1D,OAGfwJ,KAAK6rD,OAAOltB,KAAK,CACf,gBAAiB,OACjB,gBAAiB,OACjB6C,SAAU,IACT7pB,OAAOgnB,KAAK,CACb,cAAe,UAPjB3+B,KAAK0uD,QAAQt5B,GAAG,GAAGuJ,KAAK,WAAY,GAUtC3+B,KAAK4nK,eACL5nK,KAAK+nK,aAAanyI,EAAQj9B,OACN,SAAhBmuK,GACFwB,EAAYloI,EAAO8d,SACnBl+C,KAAKm3D,QAAQrxB,SAAS,YAAY5Q,MAAK,WACrC,IAAIR,EAAO+/B,EAAEz0D,MACXm9C,EAAWzoB,EAAKya,IAAI,YACL,aAAbgO,GAAwC,UAAbA,IAG/BmrH,GAAa5zI,EAAKoiI,aAAY,GAChC,IACA92J,KAAK0uD,QAAQx5B,MAAK,WAChBozI,GAAa7zG,EAAEz0D,MAAM82J,aAAY,EACnC,IACA92J,KAAK0uD,QAAQ/2C,OAAOud,MAAK,WACvBu/B,EAAEz0D,MAAMk+C,OAAOh6C,KAAKI,IAAI,EAAGgkK,EAAY7zG,EAAEz0D,MAAMuvF,cAAgB96B,EAAEz0D,MAAMk+C,UACzE,IAAG/O,IAAI,WAAY,SACM,SAAhB23H,IACTwB,EAAY,EACZtoK,KAAK0uD,QAAQ/2C,OAAOud,MAAK,WACvB,IAAIwzI,EAAYj0G,EAAEz0D,MAAM6lC,GAAG,YACtB6iI,GACHj0G,EAAEz0D,MAAMkwC,OAEVo4H,EAAYpkK,KAAKI,IAAIgkK,EAAW7zG,EAAEz0D,MAAMmvC,IAAI,SAAU,IAAI+O,UACrDwqH,GACHj0G,EAAEz0D,MAAMmwC,MAEZ,IAAG+N,OAAOoqH,GAEd,EACA74E,UAAW,SAAUzhE,GACnB,IAAI69B,EAAS7rD,KAAKuoK,YAAYv6I,GAAO,GAGjC69B,IAAW7rD,KAAK6rD,OAAO,KAK3BA,EAASA,GAAU7rD,KAAK6rD,OAAO,GAC/B7rD,KAAKioK,cAAc,CACjB9uK,OAAQ0yD,EACR3W,cAAe2W,EACftY,eAAgBkhB,EAAEr+B,OAEtB,EACAmyI,YAAa,SAAUl0I,GACrB,MAA2B,kBAAbA,EAAwBr0B,KAAK0uD,QAAQt5B,GAAGf,GAAYogC,GACpE,EACAszG,aAAc,SAAUpvK,GACtB,IAAIi7C,EAAS,CACX+0H,QAAS,YAEPhwK,GACF87D,EAAEv/B,KAAKv8B,EAAMsV,MAAM,MAAM,SAAU+f,EAAO6mC,GACxCjhB,EAAOihB,GAAa,eACtB,IAEF70D,KAAKo1J,KAAKp1J,KAAK0uD,QAAQp8C,IAAItS,KAAK0uD,QAAQ/2C,SACxC3X,KAAK8zJ,IAAI9zJ,KAAK0uD,QAAS9a,GACvB5zC,KAAK8zJ,IAAI9zJ,KAAK0uD,QAAQ/2C,OAAQ,CAC5BgxJ,QAAS,kBAEX3oK,KAAK01J,WAAW11J,KAAK0uD,SACrB1uD,KAAK21J,WAAW31J,KAAK0uD,QACvB,EACAu5G,cAAe,SAAUtvK,GACvB,IAAIiwK,EACFC,EACAjzI,EAAU51B,KAAK41B,QACfi2B,EAAS7rD,KAAK6rD,OACdi9G,EAAUr0G,EAAE97D,EAAMu8C,eAClB6zH,EAAkBD,EAAQ,KAAOj9G,EAAO,GACxCm9G,EAAaD,GAAmBnzI,EAAQixI,YACxCoC,EAASD,EAAav0G,IAAMq0G,EAAQnxJ,OACpCuxJ,EAASr9G,EAAOl0C,OAChBwxJ,EAAY,CACVC,UAAWv9G,EACXw9G,SAAUH,EACVI,UAAWN,EAAav0G,IAAMq0G,EAC9BS,SAAUN,GAEdtwK,EAAM46C,iBAGNw1H,IAAoBnzI,EAAQixI,cAE0B,IAAtD7mK,KAAKk0J,SAAS,iBAAkBv7J,EAAOwwK,KAGvCvzI,EAAQi2B,QAASm9G,GAAqBhpK,KAAK0uD,QAAQ1gC,MAAM86I,GAIzD9oK,KAAK6rD,OAASk9G,EAAkBt0G,IAAMq0G,EACtC9oK,KAAKwpK,QAAQL,GAIbnpK,KAAKq0J,aAAaxoG,EAAQ,6BAA8B,mBACpDj2B,EAAQmxI,QACV6B,EAAiB/8G,EAAOplB,SAAS,6BACjCzmC,KAAKq0J,aAAauU,EAAgB,KAAMhzI,EAAQmxI,MAAMC,cAAc3R,UAAUuT,EAAgB,KAAMhzI,EAAQmxI,MAAMjlI,SAE/GinI,IACH/oK,KAAKq0J,aAAayU,EAAS,iCAAiCzT,UAAUyT,EAAS,6BAA8B,mBACzGlzI,EAAQmxI,QACV8B,EAAkBC,EAAQriI,SAAS,6BACnCzmC,KAAKq0J,aAAawU,EAAiB,KAAMjzI,EAAQmxI,MAAMjlI,QAAQuzH,UAAUwT,EAAiB,KAAMjzI,EAAQmxI,MAAMC,eAEhHhnK,KAAKq1J,UAAUyT,EAAQnxJ,OAAQ,gCAEnC,EACA6xJ,QAAS,SAAUvzK,GACjB,IAAIgzK,EAAShzK,EAAKszK,SAChBL,EAASlpK,KAAKunK,SAAS/wK,OAASwJ,KAAKunK,SAAWtxK,EAAKozK,SAGvDrpK,KAAKunK,SAASj1J,IAAItS,KAAKwnK,UAAUl5H,MAAK,GAAM,GAC5CtuC,KAAKunK,SAAW0B,EAChBjpK,KAAKwnK,SAAW0B,EACZlpK,KAAK41B,QAAQowB,QACfhmD,KAAKypK,SAASR,EAAQC,EAAQjzK,IAE9BizK,EAAO/4H,OACP84H,EAAO/4H,OACPlwC,KAAK0pK,gBAAgBzzK,IAEvBizK,EAAOvqI,KAAK,CACV,cAAe,SAEjBuqI,EAAOviI,OAAOhI,KAAK,CACjB,gBAAiB,QACjB,gBAAiB,UAMfsqI,EAAOzyK,QAAU0yK,EAAO1yK,OAC1B0yK,EAAOviI,OAAOhI,KAAK,CACjB,UAAa,EACb,gBAAiB,UAEVsqI,EAAOzyK,QAChBwJ,KAAK0uD,QAAQlpC,QAAO,WAClB,OAAkD,IAA3CnV,SAASokD,EAAEz0D,MAAM2+B,KAAK,YAAa,GAC5C,IAAGA,KAAK,YAAa,GAEvBsqI,EAAOtqI,KAAK,cAAe,SAASgI,OAAOhI,KAAK,CAC9C,gBAAiB,OACjB,gBAAiB,OACjB6C,SAAU,GAEd,EACAioI,SAAU,SAAUR,EAAQC,EAAQjzK,GAClC,IAAI27B,EACFuuB,EACAhgC,EACA2G,EAAO9mB,KACP2pK,EAAS,EACTC,EAAYX,EAAO95H,IAAI,cACvB+zH,EAAO+F,EAAOzyK,UAAY0yK,EAAO1yK,QAAUyyK,EAAOj7I,QAAUk7I,EAAOl7I,SACnEg4B,EAAUhmD,KAAK41B,QAAQowB,SAAW,CAAC,EACnCpwB,EAAUstI,GAAQl9G,EAAQk9G,MAAQl9G,EAClCjB,EAAW,WACTj+B,EAAK4iJ,gBAAgBzzK,EACvB,EAWF,MAVuB,kBAAZ2/B,IACTzV,EAAWyV,GAEU,kBAAZA,IACTuqB,EAASvqB,GAIXuqB,EAASA,GAAUvqB,EAAQuqB,QAAU6F,EAAQ7F,OAC7ChgC,EAAWA,GAAYyV,EAAQzV,UAAY6lC,EAAQ7lC,SAC9C+oJ,EAAO1yK,OAGPyyK,EAAOzyK,QAGZo7B,EAAQq3I,EAAO/4H,OAAO4mH,cACtBoS,EAAOljH,QAAQhmD,KAAKmnK,UAAW,CAC7BhnJ,SAAUA,EACVggC,OAAQA,EACRyC,KAAM,SAAUl/C,EAAKm/C,GACnBA,EAAGn/C,IAAMQ,KAAK+c,MAAMvd,EACtB,SAEFulK,EAAO94H,OAAO6V,QAAQhmD,KAAKsnK,UAAW,CACpCnnJ,SAAUA,EACVggC,OAAQA,EACR4E,SAAUA,EACVnC,KAAM,SAAUl/C,EAAKm/C,GACnBA,EAAGn/C,IAAMQ,KAAK+c,MAAMvd,GACJ,WAAZm/C,EAAGtiD,KACa,gBAAdqpK,IACFD,GAAU9mH,EAAGn/C,KAEuB,YAA7BojB,EAAK8O,QAAQkxI,cACtBjkH,EAAGn/C,IAAMQ,KAAK+c,MAAM2Q,EAAQs3I,EAAOpS,cAAgB6S,GACnDA,EAAS,EAEb,KAxBOT,EAAOljH,QAAQhmD,KAAKmnK,UAAWhnJ,EAAUggC,EAAQ4E,GAHjDkkH,EAAOjjH,QAAQhmD,KAAKsnK,UAAWnnJ,EAAUggC,EAAQ4E,EA6B5D,EACA2kH,gBAAiB,SAAUzzK,GACzB,IAAIizK,EAASjzK,EAAKozK,SAChB1iI,EAAOuiI,EAAOviI,OAChB3mC,KAAKq0J,aAAa6U,EAAQ,+BAC1BlpK,KAAKq0J,aAAa1tH,EAAM,8BAA8B0uH,UAAU1uH,EAAM,iCAGlEuiI,EAAO1yK,SACT0yK,EAAO9oI,SAAS,GAAGhC,UAAY8qI,EAAO9oI,SAAS,GAAGhC,WAEpDp+B,KAAKk0J,SAAS,WAAY,KAAMj+J,EAClC,IAEsBw+D,EAAEu9F,GAAG3wH,kBAAoB,SAAUrpC,GACzD,IAAIopC,EAIJ,IACEA,EAAgBppC,EAASopC,aAC3B,CAAE,MAAO3oC,GACP2oC,EAAgBppC,EAASg4C,IAC3B,CAeA,OAVK5O,IACHA,EAAgBppC,EAASg4C,MAMtB5O,EAAc3M,WACjB2M,EAAgBppC,EAASg4C,MAEpB5O,CACT,EAoBkBqzB,EAAE29F,OAAO,UAAW,CACpCpgI,QAAS,SACTyhI,eAAgB,OAChB1sG,MAAO,IACPnxB,QAAS,CACPmxI,MAAO,CACL8C,QAAS,qBAEX1rF,MAAO,MACP2rF,MAAO,KACP3sH,SAAU,CACR07G,GAAI,WACJV,GAAI,aAEN4R,KAAM,OAEN7xH,KAAM,KACN/W,MAAO,KACP1E,OAAQ,MAEVu3H,QAAS,WACPh0J,KAAKgqK,WAAahqK,KAAKm3D,QAIvBn3D,KAAKiqK,cAAe,EACpBjqK,KAAKkqK,kBAAoB,CACvBz8J,EAAG,KACH/F,EAAG,MAEL1H,KAAKm3D,QAAQm7E,WAAW3zG,KAAK,CAC3BorI,KAAM/pK,KAAK41B,QAAQm0I,KACnBvoI,SAAU,IAEZxhC,KAAKq1J,UAAU,UAAW,+BAC1Br1J,KAAK8zJ,IAAI,CAGP,0BAA2B,SAAUn7J,GACnCA,EAAM46C,iBACNvzC,KAAKmqK,cAAcxxK,EACrB,EACA,sBAAuB,SAAUA,GAC/B,IAAIQ,EAASs7D,EAAE97D,EAAMQ,QACjB0yD,EAAS4I,EAAEA,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,MAC/CgI,KAAKiqK,cAAgB9wK,EAAOwnC,IAAI,sBAAsBnqC,SACzDwJ,KAAKy8B,OAAO9jC,GAGPA,EAAMs8C,yBACTj1C,KAAKiqK,cAAe,GAIlB9wK,EAAO2nC,IAAI,YAAYtqC,OACzBwJ,KAAKsiD,OAAO3pD,IACFqH,KAAKm3D,QAAQtxB,GAAG,WAAagmB,EAAO9kB,QAAQ,YAAYvwC,SAElEwJ,KAAKm3D,QAAQ3jB,QAAQ,QAAS,EAAC,IAI3BxzC,KAAK6rD,QAAqD,IAA3C7rD,KAAK6rD,OAAO3kB,QAAQ,YAAY1wC,QACjDsC,aAAakH,KAAKglD,QAI1B,EACA,2BAA4B,gBAC5B,0BAA2B,gBAC3BvM,WAAY,cACZ,sBAAuB,cACvBtX,MAAO,SAAUxoC,EAAOyxK,GAGtB,IAAI3kJ,EAAOzlB,KAAK6rD,QAAU7rD,KAAKqqK,aAAal1I,QACvCi1I,GACHpqK,KAAKmhC,MAAMxoC,EAAO8sB,EAEtB,EACAyyB,KAAM,SAAUv/C,GACdqH,KAAKy1J,QAAO,YACUhhG,EAAE/8B,SAAS13B,KAAKm3D,QAAQ,GAAI1C,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,MAEnFgI,KAAKsqK,YAAY3xK,EAErB,GACF,EACAgwK,QAAS,aAEX3oK,KAAK44D,UAGL54D,KAAK8zJ,IAAI9zJ,KAAKhI,SAAU,CACtB89C,MAAO,SAAUn9C,GACXqH,KAAKuqK,sBAAsB5xK,IAC7BqH,KAAKsqK,YAAY3xK,GAAO,GAI1BqH,KAAKiqK,cAAe,CACtB,GAEJ,EACAE,cAAe,SAAUxxK,GAIvB,IAAIqH,KAAKwqK,iBAKL7xK,EAAM2+C,UAAYt3C,KAAKkqK,kBAAkBz8J,GAAK9U,EAAM4+C,UAAYv3C,KAAKkqK,kBAAkBxiK,GAA3F,CAGA1H,KAAKkqK,kBAAoB,CACvBz8J,EAAG9U,EAAM2+C,QACT5vC,EAAG/O,EAAM4+C,SAEX,IAAIkzH,EAAeh2G,EAAE97D,EAAMQ,QAAQ4tC,QAAQ,iBACzC5tC,EAASs7D,EAAE97D,EAAMu8C,eAGfu1H,EAAa,KAAOtxK,EAAO,KAK3BA,EAAO0sC,GAAG,sBAMd7lC,KAAKq0J,aAAal7J,EAAO2sC,WAAWW,SAAS,oBAAqB,KAAM,mBACxEzmC,KAAKmhC,MAAMxoC,EAAOQ,IArBlB,CAsBF,EACAi7J,SAAU,WACR,IACEsW,EADU1qK,KAAKm3D,QAAQ37B,KAAK,iBAAiB4rB,WAAW,sBACvC3gB,SAAS,yBAAyBmgI,iBAAiBx/G,WAAW,+BAGjFpnD,KAAKm3D,QAAQ/P,WAAW,yBAAyB5rB,KAAK,YAAYyL,UAAUmgB,WAAW,yEAA8Ew/G,iBAAiB12H,OACtLw6H,EAASjkI,WAAWvR,MAAK,WACvB,IAAIR,EAAO+/B,EAAEz0D,MACT00B,EAAKz+B,KAAK,0BACZy+B,EAAKwU,QAET,GACF,EACAwrC,SAAU,SAAU/7E,GAClB,IAAIwM,EACFwhC,EACAgkI,EACA3nI,EACAuQ,GAAiB,EACnB,OAAQ56C,EAAMy+C,SACZ,KAAKqd,EAAEu9F,GAAG56G,QAAQ+uH,QAChBnmK,KAAK4qK,aAAajyK,GAClB,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ8uH,UAChBlmK,KAAK6qK,SAASlyK,GACd,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ6uH,KAChBjmK,KAAK8qK,MAAM,QAAS,QAASnyK,GAC7B,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ4uH,IAChBhmK,KAAK8qK,MAAM,OAAQ,OAAQnyK,GAC3B,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQivH,GAChBrmK,KAAKuxF,SAAS54F,GACd,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ2uH,KAChB/lK,KAAK2X,KAAKhf,GACV,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQwwC,KAChB5nF,KAAKqxH,SAAS14H,GACd,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQswC,MACZ1nF,KAAK6rD,SAAW7rD,KAAK6rD,OAAOhmB,GAAG,uBACjC7lC,KAAKsiD,OAAO3pD,GAEd,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQy1E,MAClB,KAAKp4D,EAAEu9F,GAAG56G,QAAQ21E,MAChB/sH,KAAKyvF,UAAU92F,GACf,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ01E,OAChB9sH,KAAKqxH,SAAS14H,GACd,MACF,QACE46C,GAAiB,EACjB5M,EAAO3mC,KAAKwqK,gBAAkB,GAC9BxnI,GAAO,EAGP2nI,EAAYhyK,EAAMy+C,SAAW,IAAMz+C,EAAMy+C,SAAW,KAAOz+C,EAAMy+C,QAAU,IAAIh7C,WAAa0oB,OAAOkW,aAAariC,EAAMy+C,SACtHt+C,aAAakH,KAAK+qK,aACdJ,IAAchkI,EAChB3D,GAAO,EAEP2nI,EAAYhkI,EAAOgkI,EAErBxlK,EAAQnF,KAAKgrK,iBAAiBL,IAC9BxlK,EAAQ69B,IAA6C,IAArC79B,EAAM6oB,MAAMhuB,KAAK6rD,OAAOl0C,QAAiB3X,KAAK6rD,OAAOzkB,QAAQ,iBAAmBjiC,GAIrF3O,SACTm0K,EAAY7lJ,OAAOkW,aAAariC,EAAMy+C,SACtCjyC,EAAQnF,KAAKgrK,iBAAiBL,IAE5BxlK,EAAM3O,QACRwJ,KAAKmhC,MAAMxoC,EAAOwM,GAClBnF,KAAKwqK,eAAiBG,EACtB3qK,KAAK+qK,YAAc/qK,KAAKy1J,QAAO,kBACtBz1J,KAAKwqK,cACd,GAAG,aAEIxqK,KAAKwqK,eAGdj3H,GACF56C,EAAM46C,gBAEV,EACAk8C,UAAW,SAAU92F,GACfqH,KAAK6rD,SAAW7rD,KAAK6rD,OAAOhmB,GAAG,wBAC7B7lC,KAAK6rD,OAAOplB,SAAS,0BAA0BjwC,OACjDwJ,KAAKsiD,OAAO3pD,GAEZqH,KAAKy8B,OAAO9jC,GAGlB,EACAigE,QAAS,WACP,IACEulB,EACA8sF,EACAC,EACAC,EACArkJ,EAAO9mB,KACP6nK,EAAO7nK,KAAK41B,QAAQmxI,MAAM8C,QAC1Ba,EAAW1qK,KAAKm3D,QAAQ37B,KAAKx7B,KAAK41B,QAAQk0I,OAC5C9pK,KAAK60J,aAAa,gBAAiB,OAAQ70J,KAAKm3D,QAAQ37B,KAAK,YAAYhlC,QAGzEy0K,EAAcP,EAASllJ,OAAO,kBAAkB2qB,OAAOxR,KAAK,CAC1DorI,KAAM/pK,KAAK41B,QAAQm0I,KACnB,cAAe,OACf,gBAAiB,UAChB70I,MAAK,WACN,IAAIk2I,EAAO32G,EAAEz0D,MACXylB,EAAO2lJ,EAAKzkI,OACZ0kI,EAAe52G,EAAE,UAAUx+D,KAAK,yBAAyB,GAC3D6wB,EAAKuuI,UAAUgW,EAAc,eAAgB,WAAaxD,GAC1DpiJ,EAAKkZ,KAAK,gBAAiB,QAAQ8b,QAAQ4wH,GAC3CD,EAAKzsI,KAAK,kBAAmBlZ,EAAKkZ,KAAK,MACzC,IACA3+B,KAAKq1J,UAAU4V,EAAa,UAAW,yCAEvC9sF,EADQusF,EAASp4J,IAAItS,KAAKm3D,SACZ37B,KAAKx7B,KAAK41B,QAAQuoD,QAG1Bx9C,IAAI,iBAAiBzL,MAAK,WAC9B,IAAIzP,EAAOgvC,EAAEz0D,MACT8mB,EAAKwkJ,WAAW7lJ,IAClBqB,EAAKuuI,UAAU5vI,EAAM,kBAAmB,oBAE5C,IAIA0lJ,GADAD,EAAW/sF,EAAMx9C,IAAI,oCACE8F,WAAW9F,IAAI,YAAY2xG,WAAW3zG,KAAK,CAChE6C,UAAW,EACXuoI,KAAM/pK,KAAKurK,cAEbvrK,KAAKq1J,UAAU6V,EAAU,gBAAgB7V,UAAU8V,EAAa,wBAGhEhtF,EAAM34D,OAAO,sBAAsBmZ,KAAK,gBAAiB,QAGrD3+B,KAAK6rD,SAAW4I,EAAE/8B,SAAS13B,KAAKm3D,QAAQ,GAAIn3D,KAAK6rD,OAAO,KAC1D7rD,KAAKk4C,MAET,EACAqzH,UAAW,WACT,MAAO,CACLH,KAAM,WACNI,QAAS,UACTxrK,KAAK41B,QAAQm0I,KACjB,EACAvV,WAAY,SAAU35J,EAAKN,GACzB,GAAY,UAARM,EAAiB,CACnB,IAAIksK,EAAQ/mK,KAAKm3D,QAAQ37B,KAAK,iBAC9Bx7B,KAAKq0J,aAAa0S,EAAO,KAAM/mK,KAAK41B,QAAQmxI,MAAM8C,SAASxU,UAAU0R,EAAO,KAAMxsK,EAAMsvK,QAC1F,CACA7pK,KAAKw8D,OAAO3hE,EAAKN,EACnB,EACA05J,mBAAoB,SAAU15J,GAC5ByF,KAAKw8D,OAAOjiE,GACZyF,KAAKm3D,QAAQx4B,KAAK,gBAAiB7Z,OAAOvqB,IAC1CyF,KAAK60J,aAAa,KAAM,sBAAuBt6J,EACjD,EACA4mC,MAAO,SAAUxoC,EAAO8sB,GACtB,IAAIgmJ,EAAQn3B,EAASo3B,EACrB1rK,KAAKk4C,KAAKv/C,EAAOA,GAAwB,UAAfA,EAAMM,MAChC+G,KAAK2rK,gBAAgBlmJ,GACrBzlB,KAAK6rD,OAASpmC,EAAK0P,QACnBm/G,EAAUt0I,KAAK6rD,OAAOplB,SAAS,yBAC/BzmC,KAAKq1J,UAAU/gB,EAAS,KAAM,mBAI1Bt0I,KAAK41B,QAAQm0I,MACf/pK,KAAKm3D,QAAQx4B,KAAK,wBAAyB21G,EAAQ31G,KAAK,OAI1D+sI,EAAe1rK,KAAK6rD,OAAOzrB,SAAS2G,QAAQ,iBAAiBN,SAAS,yBACtEzmC,KAAKq1J,UAAUqW,EAAc,KAAM,mBAC/B/yK,GAAwB,YAAfA,EAAMM,KACjB+G,KAAK+yF,SAEL/yF,KAAKglD,MAAQhlD,KAAKy1J,QAAO,WACvBz1J,KAAK+yF,QACP,GAAG/yF,KAAK+mD,QAEV0kH,EAAShmJ,EAAKghB,SAAS,aACZjwC,QAAUmC,GAAS,SAASkN,KAAKlN,EAAMM,OAChD+G,KAAK4rK,cAAcH,GAErBzrK,KAAKgqK,WAAavkJ,EAAK2a,SACvBpgC,KAAKk0J,SAAS,QAASv7J,EAAO,CAC5B8sB,KAAMA,GAEV,EACAkmJ,gBAAiB,SAAUlmJ,GACzB,IAAIw5I,EAAWmI,EAAY5lJ,EAAQqqJ,EAAQC,EAAeC,EACtD/rK,KAAKgsK,eACP/M,EAAYn/I,WAAW20C,EAAEtlB,IAAInvC,KAAKgqK,WAAW,GAAI,oBAAsB,EACvE5C,EAAatnJ,WAAW20C,EAAEtlB,IAAInvC,KAAKgqK,WAAW,GAAI,gBAAkB,EACpExoJ,EAASiE,EAAKjE,SAASkc,IAAM19B,KAAKgqK,WAAWxoJ,SAASkc,IAAMuhI,EAAYmI,EACxEyE,EAAS7rK,KAAKgqK,WAAWlnH,YACzBgpH,EAAgB9rK,KAAKgqK,WAAW9rH,SAChC6tH,EAAatmJ,EAAKqxI,cACdt1I,EAAS,EACXxhB,KAAKgqK,WAAWlnH,UAAU+oH,EAASrqJ,GAC1BA,EAASuqJ,EAAaD,GAC/B9rK,KAAKgqK,WAAWlnH,UAAU+oH,EAASrqJ,EAASsqJ,EAAgBC,GAGlE,EACA7zH,KAAM,SAAUv/C,EAAOszK,GAChBA,GACHnzK,aAAakH,KAAKglD,OAEfhlD,KAAK6rD,SAGV7rD,KAAKq0J,aAAar0J,KAAK6rD,OAAOplB,SAAS,yBAA0B,KAAM,mBACvEzmC,KAAKk0J,SAAS,OAAQv7J,EAAO,CAC3B8sB,KAAMzlB,KAAK6rD,SAEb7rD,KAAK6rD,OAAS,KAChB,EACA+/G,cAAe,SAAU/B,GACvB/wK,aAAakH,KAAKglD,OAIkB,SAAhC6kH,EAAQlrI,KAAK,iBAGjB3+B,KAAKglD,MAAQhlD,KAAKy1J,QAAO,WACvBz1J,KAAK+yF,SACL/yF,KAAKksK,MAAMrC,EACb,GAAG7pK,KAAK+mD,OACV,EACAmlH,MAAO,SAAUrC,GACf,IAAI1sH,EAAWsX,EAAEn3D,OAAO,CACtBo6J,GAAI13J,KAAK6rD,QACR7rD,KAAK41B,QAAQunB,UAChBrkD,aAAakH,KAAKglD,OAClBhlD,KAAKm3D,QAAQ37B,KAAK,YAAYmF,IAAIkpI,EAAQ3iI,QAAQ,aAAaiJ,OAAOxR,KAAK,cAAe,QAC1FkrI,EAAQ35H,OAAOkX,WAAW,eAAezoB,KAAK,gBAAiB,QAAQwe,SAASA,EAClF,EACAmtH,YAAa,SAAU3xK,EAAOgB,GAC5Bb,aAAakH,KAAKglD,OAClBhlD,KAAKglD,MAAQhlD,KAAKy1J,QAAO,WAEvB,IAAI0W,EAAcxyK,EAAMqG,KAAKm3D,QAAU1C,EAAE97D,GAASA,EAAMQ,QAAQ4tC,QAAQ/mC,KAAKm3D,QAAQ37B,KAAK,aAIrF2wI,EAAY31K,SACf21K,EAAcnsK,KAAKm3D,SAErBn3D,KAAK+yF,OAAOo5E,GACZnsK,KAAKk4C,KAAKv/C,GAGVqH,KAAKq0J,aAAa8X,EAAY3wI,KAAK,oBAAqB,KAAM,mBAC9Dx7B,KAAKgqK,WAAamC,CACpB,GAAGxyK,EAAM,EAAIqG,KAAK+mD,MACpB,EAGAgsC,OAAQ,SAAUq5E,GACXA,IACHA,EAAYpsK,KAAK6rD,OAAS7rD,KAAK6rD,OAAOzrB,SAAWpgC,KAAKm3D,SAExDi1G,EAAU5wI,KAAK,YAAY2U,OAAOxR,KAAK,cAAe,QAAQA,KAAK,gBAAiB,QACtF,EACA4rI,sBAAuB,SAAU5xK,GAC/B,OAAQ87D,EAAE97D,EAAMQ,QAAQ4tC,QAAQ,YAAYvwC,MAC9C,EACA80K,WAAY,SAAU7lJ,GAEpB,OAAQ,sBAAsB5f,KAAK4f,EAAKqO,OAC1C,EACAu9F,SAAU,SAAU14H,GAClB,IAAI0zK,EAAUrsK,KAAK6rD,QAAU7rD,KAAK6rD,OAAOzrB,SAAS2G,QAAQ,gBAAiB/mC,KAAKm3D,SAC5Ek1G,GAAWA,EAAQ71K,SACrBwJ,KAAK+yF,SACL/yF,KAAKmhC,MAAMxoC,EAAO0zK,GAEtB,EACA/pH,OAAQ,SAAU3pD,GAChB,IAAI0zK,EAAUrsK,KAAK6rD,QAAU7rD,KAAKqqK,WAAWrqK,KAAK6rD,OAAOplB,SAAS,aAAatR,QAC3Ek3I,GAAWA,EAAQ71K,SACrBwJ,KAAKksK,MAAMG,EAAQjsI,UAGnBpgC,KAAKy1J,QAAO,WACVz1J,KAAKmhC,MAAMxoC,EAAO0zK,EACpB,IAEJ,EACA10J,KAAM,SAAUhf,GACdqH,KAAK8qK,MAAM,OAAQ,QAASnyK,EAC9B,EACA44F,SAAU,SAAU54F,GAClBqH,KAAK8qK,MAAM,OAAQ,OAAQnyK,EAC7B,EACA2zK,YAAa,WACX,OAAOtsK,KAAK6rD,SAAW7rD,KAAK6rD,OAAO7kB,QAAQ,iBAAiBxwC,MAC9D,EACA+1K,WAAY,WACV,OAAOvsK,KAAK6rD,SAAW7rD,KAAK6rD,OAAOzkB,QAAQ,iBAAiB5wC,MAC9D,EACA6zK,WAAY,SAAUe,GACpB,OAAQA,GAAQprK,KAAKm3D,SAAS37B,KAAKx7B,KAAK41B,QAAQuoD,OAAO34D,OAAO,gBAChE,EACAslJ,MAAO,SAAUtmJ,EAAWgB,EAAQ7sB,GAClC,IAAIgf,EACA3X,KAAK6rD,SAELl0C,EADgB,UAAd6M,GAAuC,SAAdA,EACpBxkB,KAAK6rD,OAAqB,UAAdrnC,EAAwB,UAAY,WAAW,iBAAiB6Q,OAE5Er1B,KAAK6rD,OAAOrnC,EAAY,OAAO,iBAAiB2Q,SAGtDxd,GAASA,EAAKnhB,QAAWwJ,KAAK6rD,SACjCl0C,EAAO3X,KAAKqqK,WAAWrqK,KAAKgqK,YAAYxkJ,MAE1CxlB,KAAKmhC,MAAMxoC,EAAOgf,EACpB,EACAkzJ,SAAU,SAAUlyK,GAClB,IAAI8sB,EAAMrB,EAAM85B,EACXl+C,KAAK6rD,OAIN7rD,KAAKusK,eAGLvsK,KAAKgsK,cACP5nJ,EAAOpkB,KAAK6rD,OAAOrqC,SAASkc,IAC5BwgB,EAASl+C,KAAKm3D,QAAQo4B,cAGc,IAAhC96B,EAAEt3D,GAAGw3B,OAAO7nB,QAAQ,UACtBoxC,GAAUl+C,KAAKm3D,QAAQ,GAAG9Y,aAAer+C,KAAKm3D,QAAQ2/F,eAExD92J,KAAK6rD,OAAOzkB,QAAQ,iBAAiBlS,MAAK,WAExC,OADAzP,EAAOgvC,EAAEz0D,OACGwhB,SAASkc,IAAMtZ,EAAO85B,EAAS,CAC7C,IACAl+C,KAAKmhC,MAAMxoC,EAAO8sB,IAElBzlB,KAAKmhC,MAAMxoC,EAAOqH,KAAKqqK,WAAWrqK,KAAKgqK,YAAahqK,KAAK6rD,OAAmB,OAAV,aApBlE7rD,KAAK2X,KAAKhf,EAsBd,EACAiyK,aAAc,SAAUjyK,GACtB,IAAI8sB,EAAMrB,EAAM85B,EACXl+C,KAAK6rD,OAIN7rD,KAAKssK,gBAGLtsK,KAAKgsK,cACP5nJ,EAAOpkB,KAAK6rD,OAAOrqC,SAASkc,IAC5BwgB,EAASl+C,KAAKm3D,QAAQo4B,cAGc,IAAhC96B,EAAEt3D,GAAGw3B,OAAO7nB,QAAQ,UACtBoxC,GAAUl+C,KAAKm3D,QAAQ,GAAG9Y,aAAer+C,KAAKm3D,QAAQ2/F,eAExD92J,KAAK6rD,OAAO7kB,QAAQ,iBAAiB9R,MAAK,WAExC,OADAzP,EAAOgvC,EAAEz0D,OACGwhB,SAASkc,IAAMtZ,EAAO85B,EAAS,CAC7C,IACAl+C,KAAKmhC,MAAMxoC,EAAO8sB,IAElBzlB,KAAKmhC,MAAMxoC,EAAOqH,KAAKqqK,WAAWrqK,KAAKgqK,YAAY70I,UApBnDn1B,KAAK2X,KAAKhf,EAsBd,EACAqzK,WAAY,WACV,OAAOhsK,KAAKm3D,QAAQ2/F,cAAgB92J,KAAKm3D,QAAQ52D,KAAK,eACxD,EACAk8B,OAAQ,SAAU9jC,GAGhBqH,KAAK6rD,OAAS7rD,KAAK6rD,QAAU4I,EAAE97D,EAAMQ,QAAQ4tC,QAAQ,iBACrD,IAAIirH,EAAK,CACPvsI,KAAMzlB,KAAK6rD,QAER7rD,KAAK6rD,OAAO/qB,IAAI,YAAYtqC,QAC/BwJ,KAAKsqK,YAAY3xK,GAAO,GAE1BqH,KAAKk0J,SAAS,SAAUv7J,EAAOq5J,EACjC,EACAgZ,iBAAkB,SAAUL,GAC1B,IAAI6B,EAAmB7B,EAAUvlK,QAAQ,8BAA+B,QACtEwG,EAAQ,IAAInJ,OAAO,IAAM+pK,EAAkB,KAC7C,OAAOxsK,KAAKgqK,WAAWxuI,KAAKx7B,KAAK41B,QAAQuoD,OAGxC34D,OAAO,iBAAiBA,QAAO,WAC9B,OAAO5Z,EAAM/F,KAAKif,OAAOpuB,UAAU49D,KAAK19D,KAAK69D,EAAEz0D,MAAMymC,SAAS,yBAAyB3S,QACzF,GACF,IAvlCU,IACJ+qE,EA2mCRpqC,EAAE29F,OAAO,kBAAmB,CAC1BpgI,QAAS,SACTyhI,eAAgB,UAChB79H,QAAS,CACPmlB,SAAU,KACV0xH,WAAW,EACX1lH,MAAO,IACP2lH,UAAW,EACXvvH,SAAU,CACR07G,GAAI,WACJV,GAAI,cACJD,UAAW,QAEbv1J,OAAQ,KAERgqK,OAAQ,KACR5/F,MAAO,KACP5rC,MAAO,KACPwvB,KAAM,KACN1B,SAAU,KACV80C,OAAQ,KACRtnE,OAAQ,MAEVmwI,aAAc,EACdC,QAAS,EACTC,gBAAiB,KACjB9Y,QAAS,WAQP,IAAI+Y,EACFC,EACAC,EACAx4I,EAAWz0B,KAAKm3D,QAAQ,GAAG1iC,SAASjsB,cACpC0kK,EAA0B,aAAbz4I,EACb04I,EAAuB,UAAb14I,EAMZz0B,KAAKotK,YAAcF,IAAeC,GAAWntK,KAAKqtK,mBAAmBrtK,KAAKm3D,SAC1En3D,KAAKstK,YAActtK,KAAKm3D,QAAQ+1G,GAAcC,EAAU,MAAQ,QAChEntK,KAAKutK,WAAY,EACjBvtK,KAAKq1J,UAAU,yBACfr1J,KAAKm3D,QAAQx4B,KAAK,eAAgB,OAClC3+B,KAAK8zJ,IAAI9zJ,KAAKm3D,QAAS,CACrBwxG,QAAS,SAAUhwK,GACjB,GAAIqH,KAAKm3D,QAAQ52D,KAAK,YAIpB,OAHAwsK,GAAmB,EACnBE,GAAgB,OAChBD,GAAyB,GAG3BD,GAAmB,EACnBE,GAAgB,EAChBD,GAAyB,EACzB,IAAI51H,EAAUqd,EAAEu9F,GAAG56G,QACnB,OAAQz+C,EAAMy+C,SACZ,KAAKA,EAAQ+uH,QACX4G,GAAmB,EACnB/sK,KAAK8qK,MAAM,eAAgBnyK,GAC3B,MACF,KAAKy+C,EAAQ8uH,UACX6G,GAAmB,EACnB/sK,KAAK8qK,MAAM,WAAYnyK,GACvB,MACF,KAAKy+C,EAAQivH,GACX0G,GAAmB,EACnB/sK,KAAKwtK,UAAU,WAAY70K,GAC3B,MACF,KAAKy+C,EAAQ2uH,KACXgH,GAAmB,EACnB/sK,KAAKwtK,UAAU,OAAQ70K,GACvB,MACF,KAAKy+C,EAAQy1E,MAEP7sH,KAAKorK,KAAKv/G,SAGZkhH,GAAmB,EACnBp0K,EAAM46C,iBACNvzC,KAAKorK,KAAK3uI,OAAO9jC,IAEnB,MACF,KAAKy+C,EAAQw1E,IACP5sH,KAAKorK,KAAKv/G,QACZ7rD,KAAKorK,KAAK3uI,OAAO9jC,GAEnB,MACF,KAAKy+C,EAAQ01E,OACP9sH,KAAKorK,KAAKj0G,QAAQtxB,GAAG,cAClB7lC,KAAKotK,aACRptK,KAAK0gG,OAAO1gG,KAAKytK,MAEnBztK,KAAK+sE,MAAMp0E,GAKXA,EAAM46C,kBAER,MACF,QACEy5H,GAAyB,EAGzBhtK,KAAK0tK,eAAe/0K,GAG1B,EACAg1K,SAAU,SAAUh1K,GAClB,GAAIo0K,EAKF,OAJAA,GAAmB,OACd/sK,KAAKotK,cAAeptK,KAAKorK,KAAKj0G,QAAQtxB,GAAG,aAC5CltC,EAAM46C,kBAIV,IAAIy5H,EAAJ,CAKA,IAAI51H,EAAUqd,EAAEu9F,GAAG56G,QACnB,OAAQz+C,EAAMy+C,SACZ,KAAKA,EAAQ+uH,QACXnmK,KAAK8qK,MAAM,eAAgBnyK,GAC3B,MACF,KAAKy+C,EAAQ8uH,UACXlmK,KAAK8qK,MAAM,WAAYnyK,GACvB,MACF,KAAKy+C,EAAQivH,GACXrmK,KAAKwtK,UAAU,WAAY70K,GAC3B,MACF,KAAKy+C,EAAQ2uH,KACX/lK,KAAKwtK,UAAU,OAAQ70K,GAf3B,CAkBF,EACAuD,MAAO,SAAUvD,GACf,GAAIs0K,EAGF,OAFAA,GAAgB,OAChBt0K,EAAM46C,iBAGRvzC,KAAK0tK,eAAe/0K,EACtB,EACAwoC,MAAO,WACLnhC,KAAK4tK,aAAe,KACpB5tK,KAAKuxF,SAAWvxF,KAAK0gG,QACvB,EACAxoD,KAAM,SAAUv/C,GACdG,aAAakH,KAAK6tK,WAClB7tK,KAAK+sE,MAAMp0E,GACXqH,KAAK8tK,QAAQn1K,EACf,IAEFqH,KAAK+tK,cACL/tK,KAAKorK,KAAO32G,EAAE,QAAQ1Z,SAAS/6C,KAAKguK,aAAa5C,KAAK,CAEpDrB,KAAM,OACL55H,OAQFxR,KAAK,CACJ,aAAgB,OACfysI,KAAK,YACRprK,KAAKq1J,UAAUr1J,KAAKorK,KAAKj0G,QAAS,kBAAmB,YACrDn3D,KAAK8zJ,IAAI9zJ,KAAKorK,KAAKj0G,QAAS,CAC1B82G,UAAW,SAAUt1K,GAEnBA,EAAM46C,gBACR,EACA26H,UAAW,SAAUv1K,EAAOq5J,GAC1B,IAAIxrF,EAAO/gD,EAIX,GAAIzlB,KAAKutK,YACPvtK,KAAKutK,WAAY,EACb50K,EAAM+8C,eAAiB,SAAS7vC,KAAKlN,EAAM+8C,cAAcz8C,OAK3D,OAJA+G,KAAKorK,KAAKlzH,YACVl4C,KAAKhI,SAAS66C,IAAI,aAAa,WAC7B4hB,EAAE97D,EAAMQ,QAAQq6C,QAAQ76C,EAAM+8C,cAChC,IAIJjwB,EAAOusI,EAAGvsI,KAAKxvB,KAAK,yBAChB,IAAU+J,KAAKk0J,SAAS,QAASv7J,EAAO,CAC1C8sB,KAAMA,KAGF9sB,EAAM+8C,eAAiB,OAAO7vC,KAAKlN,EAAM+8C,cAAcz8C,OACzD+G,KAAK0gG,OAAOj7E,EAAKlrB,QAKrBisE,EAAQwrF,EAAGvsI,KAAKkZ,KAAK,eAAiBlZ,EAAKlrB,QAC9BuqB,OAAOpuB,UAAU49D,KAAK19D,KAAK4vE,GAAOhwE,SAC7CsC,aAAakH,KAAK8sK,iBAClB9sK,KAAK8sK,gBAAkB9sK,KAAKy1J,QAAO,WACjCz1J,KAAKmuK,WAAWr0H,KAAK2a,EAAE,SAAS3gC,KAAK0yC,GACvC,GAAG,KAEP,EACA4nG,WAAY,SAAUz1K,EAAOq5J,GAC3B,IAAIvsI,EAAOusI,EAAGvsI,KAAKxvB,KAAK,wBACtBs7F,EAAWvxF,KAAKuxF,SAGdvxF,KAAKm3D,QAAQ,KAAO1C,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,MAC3DgI,KAAKm3D,QAAQ3jB,QAAQ,SACrBxzC,KAAKuxF,SAAWA,EAKhBvxF,KAAKy1J,QAAO,WACVz1J,KAAKuxF,SAAWA,EAChBvxF,KAAK4tK,aAAenoJ,CACtB,MAEE,IAAUzlB,KAAKk0J,SAAS,SAAUv7J,EAAO,CAC3C8sB,KAAMA,KAENzlB,KAAK0gG,OAAOj7E,EAAKlrB,OAKnByF,KAAKytK,KAAOztK,KAAK0gG,SACjB1gG,KAAK+sE,MAAMp0E,GACXqH,KAAK4tK,aAAenoJ,CACtB,IAEFzlB,KAAKmuK,WAAa15G,EAAE,QAAS,CAC3Bs1G,KAAM,SACN,YAAa,YACb,gBAAiB,cAChBhvH,SAAS/6C,KAAKhI,SAAS,GAAGg4C,MAC7BhwC,KAAKq1J,UAAUr1J,KAAKmuK,WAAY,KAAM,+BAKtCnuK,KAAK8zJ,IAAI9zJ,KAAK1E,OAAQ,CACpBy6C,aAAc,WACZ/1C,KAAKm3D,QAAQ/P,WAAW,eAC1B,GAEJ,EACAgtG,SAAU,WACRt7J,aAAakH,KAAK6tK,WAClB7tK,KAAKm3D,QAAQ/P,WAAW,gBACxBpnD,KAAKorK,KAAKj0G,QAAQjuB,SAClBlpC,KAAKmuK,WAAWjlI,QAClB,EACAsrH,WAAY,SAAU35J,EAAKN,GACzByF,KAAKw8D,OAAO3hE,EAAKN,GACL,WAARM,GACFmF,KAAK+tK,cAEK,aAARlzK,GACFmF,KAAKorK,KAAKj0G,QAAQpc,SAAS/6C,KAAKguK,aAEtB,aAARnzK,GAAsBN,GAASyF,KAAKqwD,KACtCrwD,KAAKqwD,IAAIlC,OAEb,EACAkgH,uBAAwB,SAAU11K,GAChC,IAAI21K,EAActuK,KAAKorK,KAAKj0G,QAAQ,GACpC,OAAOx+D,EAAMQ,SAAW6G,KAAKm3D,QAAQ,IAAMx+D,EAAMQ,SAAWm1K,GAAe75G,EAAE/8B,SAAS42I,EAAa31K,EAAMQ,OAC3G,EACAo1K,qBAAsB,SAAU51K,GACzBqH,KAAKquK,uBAAuB11K,IAC/BqH,KAAK+sE,OAET,EACAihG,UAAW,WACT,IAAI72G,EAAUn3D,KAAK41B,QAAQmlB,SAU3B,OATIoc,IACFA,EAAUA,EAAQxiC,QAAUwiC,EAAQ9jC,SAAWohC,EAAE0C,GAAWn3D,KAAKhI,SAASwjC,KAAK27B,GAAS/hC,GAAG,IAExF+hC,GAAYA,EAAQ,KACvBA,EAAUn3D,KAAKm3D,QAAQpwB,QAAQ,sBAE5BowB,EAAQ3gE,SACX2gE,EAAUn3D,KAAKhI,SAAS,GAAGg4C,MAEtBmnB,CACT,EACA42G,YAAa,WACX,IAAIzoK,EACF0mD,EACAllC,EAAO9mB,KACL7D,MAAMF,QAAQ+D,KAAK41B,QAAQjzB,SAC7B2C,EAAQtF,KAAK41B,QAAQjzB,OACrB3C,KAAK2C,OAAS,SAAUrJ,EAAS21D,GAC/BA,EAASwF,EAAEu9F,GAAGwc,aAAahpJ,OAAOlgB,EAAOhM,EAAQm0K,MACnD,GACwC,kBAAxBztK,KAAK41B,QAAQjzB,QAC7BqpD,EAAMhsD,KAAK41B,QAAQjzB,OACnB3C,KAAK2C,OAAS,SAAUrJ,EAAS21D,GAC3BnoC,EAAKupC,KACPvpC,EAAKupC,IAAIlC,QAEXrnC,EAAKupC,IAAMoE,EAAE5H,KAAK,CAChBb,IAAKA,EACL/1D,KAAMqD,EACN4xD,SAAU,OACV0D,QAAS,SAAU34D,GACjBg5D,EAASh5D,EACX,EACAwC,MAAO,WACLw2D,EAAS,GACX,GAEJ,GAEAjvD,KAAK2C,OAAS3C,KAAK41B,QAAQjzB,MAE/B,EACA+qK,eAAgB,SAAU/0K,GACxBG,aAAakH,KAAK6tK,WAClB7tK,KAAK6tK,UAAY7tK,KAAKy1J,QAAO,WAE3B,IAAIgZ,EAAczuK,KAAKytK,OAASztK,KAAK0gG,SACnCguE,EAAc1uK,KAAKorK,KAAKj0G,QAAQtxB,GAAG,YACnC8oI,EAAch2K,EAAM49C,QAAU59C,EAAMg+C,SAAWh+C,EAAMm+C,SAAWn+C,EAAMs+C,SACnEw3H,KAAeA,GAAgBC,GAAgBC,KAClD3uK,KAAK4tK,aAAe,KACpB5tK,KAAK+jG,OAAO,KAAMprG,GAEtB,GAAGqH,KAAK41B,QAAQmxB,MAClB,EACAg9C,OAAQ,SAAUxpG,EAAO5B,GAKvB,OAJA4B,EAAiB,MAATA,EAAgBA,EAAQyF,KAAK0gG,SAGrC1gG,KAAKytK,KAAOztK,KAAK0gG,SACbnmG,EAAM/D,OAASwJ,KAAK41B,QAAQ82I,UACvB1sK,KAAK+sE,MAAMp0E,IAEmB,IAAnCqH,KAAKk0J,SAAS,SAAUv7J,GAGrBqH,KAAK4uK,QAAQr0K,QAHpB,CAIF,EACAq0K,QAAS,SAAUr0K,GACjByF,KAAK6sK,UACL7sK,KAAKq1J,UAAU,2BACfr1J,KAAK6uK,cAAe,EACpB7uK,KAAK2C,OAAO,CACV8qK,KAAMlzK,GACLyF,KAAK41G,YACV,EACAA,UAAW,WACT,IAAI5nF,IAAUhuB,KAAK4sK,aACnB,OAAO,SAAUplI,GACXxZ,IAAUhuB,KAAK4sK,cACjB5sK,KAAK8uK,WAAWtnI,GAElBxnC,KAAK6sK,UACA7sK,KAAK6sK,SACR7sK,KAAKq0J,aAAa,0BAEtB,EAAEv5J,KAAKkF,KACT,EACA8uK,WAAY,SAAUtnI,GAChBA,IACFA,EAAUxnC,KAAK+uK,WAAWvnI,IAE5BxnC,KAAKk0J,SAAS,WAAY,KAAM,CAC9B1sH,QAASA,KAENxnC,KAAK41B,QAAQyF,UAAYmM,GAAWA,EAAQhxC,SAAWwJ,KAAK6uK,cAC/D7uK,KAAKgvK,SAASxnI,GACdxnC,KAAKk0J,SAAS,SAGdl0J,KAAK+yF,QAET,EACAhmB,MAAO,SAAUp0E,GACfqH,KAAK6uK,cAAe,EACpB7uK,KAAK+yF,OAAOp6F,EACd,EACAo6F,OAAQ,SAAUp6F,GAEhBqH,KAAKo1J,KAAKp1J,KAAKhI,SAAU,aACrBgI,KAAKorK,KAAKj0G,QAAQtxB,GAAG,cACvB7lC,KAAKorK,KAAKj0G,QAAQhnB,OAClBnwC,KAAKorK,KAAKlzH,OACVl4C,KAAKutK,WAAY,EACjBvtK,KAAKk0J,SAAS,QAASv7J,GAE3B,EACAm1K,QAAS,SAAUn1K,GACbqH,KAAKuxF,WAAavxF,KAAK0gG,UACzB1gG,KAAKk0J,SAAS,SAAUv7J,EAAO,CAC7B8sB,KAAMzlB,KAAK4tK,cAGjB,EACAmB,WAAY,SAAU5wF,GAEpB,OAAIA,EAAM3nF,QAAU2nF,EAAM,GAAG3X,OAAS2X,EAAM,GAAG5jF,MACtC4jF,EAEF1pB,EAAEx3D,IAAIkhF,GAAO,SAAU14D,GAC5B,MAAoB,kBAATA,EACF,CACL+gD,MAAO/gD,EACPlrB,MAAOkrB,GAGJgvC,EAAEn3D,OAAO,CAAC,EAAGmoB,EAAM,CACxB+gD,MAAO/gD,EAAK+gD,OAAS/gD,EAAKlrB,MAC1BA,MAAOkrB,EAAKlrB,OAASkrB,EAAK+gD,OAE9B,GACF,EACAwoG,SAAU,SAAU7wF,GAClB,IAAIgH,EAAKnlF,KAAKorK,KAAKj0G,QAAQp5D,QAC3BiC,KAAKivK,YAAY9pF,EAAIhH,GACrBn+E,KAAKutK,WAAY,EACjBvtK,KAAKorK,KAAKxyG,UAGVusB,EAAGj1C,OACHlwC,KAAKkvK,cACL/pF,EAAGhoC,SAASsX,EAAEn3D,OAAO,CACnBo6J,GAAI13J,KAAKm3D,SACRn3D,KAAK41B,QAAQunB,WACZn9C,KAAK41B,QAAQ62I,WACfzsK,KAAKorK,KAAKzzJ,OAIZ3X,KAAK8zJ,IAAI9zJ,KAAKhI,SAAU,CACtBi2K,UAAW,wBAEf,EACAiB,YAAa,WACX,IAAI/pF,EAAKnlF,KAAKorK,KAAKj0G,QACnBguB,EAAG0xE,WAAW3yJ,KAAKI,IAGnB6gF,EAAGppC,MAAM,IAAI86G,aAAe,EAAG72J,KAAKm3D,QAAQ0/F,cAC9C,EACAoY,YAAa,SAAU9pF,EAAIhH,GACzB,IAAIr3D,EAAO9mB,KACXy0D,EAAEv/B,KAAKipD,GAAO,SAAUnwD,EAAOvI,GAC7BqB,EAAKqoJ,gBAAgBhqF,EAAI1/D,EAC3B,GACF,EACA0pJ,gBAAiB,SAAUhqF,EAAI1/D,GAC7B,OAAOzlB,KAAKovK,YAAYjqF,EAAI1/D,GAAMxvB,KAAK,uBAAwBwvB,EACjE,EACA2pJ,YAAa,SAAUjqF,EAAI1/D,GACzB,OAAOgvC,EAAE,QAAQja,OAAOia,EAAE,SAAS3gC,KAAKrO,EAAK+gD,QAAQzrB,SAASoqC,EAChE,EACA2lF,MAAO,SAAUtmJ,EAAW7rB,GAC1B,GAAKqH,KAAKorK,KAAKj0G,QAAQtxB,GAAG,YAI1B,OAAI7lC,KAAKorK,KAAKkB,eAAiB,YAAYzmK,KAAK2e,IAAcxkB,KAAKorK,KAAKmB,cAAgB,QAAQ1mK,KAAK2e,IAC9FxkB,KAAKotK,aACRptK,KAAK0gG,OAAO1gG,KAAKytK,WAEnBztK,KAAKorK,KAAKlzH,aAGZl4C,KAAKorK,KAAK5mJ,GAAW7rB,GAVnBqH,KAAK+jG,OAAO,KAAMprG,EAWtB,EACAy5J,OAAQ,WACN,OAAOpyJ,KAAKorK,KAAKj0G,OACnB,EACAupC,OAAQ,WACN,OAAO1gG,KAAKstK,YAAYzxK,MAAMmE,KAAKm3D,QAASr7D,UAC9C,EACA0xK,UAAW,SAAU6B,EAAU12K,GACxBqH,KAAKotK,cAAeptK,KAAKorK,KAAKj0G,QAAQtxB,GAAG,cAC5C7lC,KAAK8qK,MAAMuE,EAAU12K,GAGrBA,EAAM46C,iBAEV,EAKA85H,mBAAoB,SAAUl2G,GAC5B,IAAKA,EAAQ3gE,OACX,OAAO,EAET,IAAIslI,EAAW3kE,EAAQ52D,KAAK,mBAC5B,MAAiB,YAAbu7H,EACK97H,KAAKqtK,mBAAmBl2G,EAAQ/2B,UAErB,SAAb07F,CACT,IAEFrnE,EAAEn3D,OAAOm3D,EAAEu9F,GAAGwc,aAAc,CAC1Bc,YAAa,SAAU/0K,GACrB,OAAOA,EAAM6K,QAAQ,8BAA+B,OACtD,EACAogB,OAAQ,SAAUlgB,EAAOmoK,GACvB,IAAI3rJ,EAAU,IAAIrf,OAAOgyD,EAAEu9F,GAAGwc,aAAac,YAAY7B,GAAO,KAC9D,OAAOh5G,EAAEl/B,KAAKjwB,GAAO,SAAU/K,GAC7B,OAAOunB,EAAQjc,KAAKtL,EAAMisE,OAASjsE,EAAMA,OAASA,EACpD,GACF,IAMFk6D,EAAE29F,OAAO,kBAAmB39F,EAAEu9F,GAAGwc,aAAc,CAC7C54I,QAAS,CACP25I,SAAU,CACRC,UAAW,qBACX54I,QAAS,SAAU64I,GACjB,OAAOA,GAAUA,EAAS,EAAI,eAAiB,cAAgB,qDACjE,IAGJX,WAAY,SAAUtnI,GACpB,IAAIpuC,EACJ4G,KAAK4yJ,YAAY92J,WACbkE,KAAK41B,QAAQyF,UAAYr7B,KAAK6uK,eAIhCz1K,EADEouC,GAAWA,EAAQhxC,OACXwJ,KAAK41B,QAAQ25I,SAAS34I,QAAQ4Q,EAAQhxC,QAEtCwJ,KAAK41B,QAAQ25I,SAASC,UAElC12K,aAAakH,KAAK8sK,iBAClB9sK,KAAK8sK,gBAAkB9sK,KAAKy1J,QAAO,WACjCz1J,KAAKmuK,WAAWr0H,KAAK2a,EAAE,SAAS3gC,KAAK16B,GACvC,GAAG,KACL,IAEwBq7D,EAAEu9F,GAAGwc,aAA/B,IAoBIkB,EAA0B,0BACJj7G,EAAE29F,OAAO,kBAAmB,CACpDpgI,QAAS,SACTyhI,eAAgB,QAChB79H,QAAS,CACPpR,UAAW,aACX6W,SAAU,KACVs0I,aAAa,EACbxxF,MAAO,CACL,OAAU,uEACV,kBAAqB,yBACrB,cAAiB,8CACjB,WAAc,SACd,QAAW,sBAGf61E,QAAS,WACPh0J,KAAK4vK,UACP,EAEAA,SAAU,WACR5vK,KAAKm3D,QAAQx4B,KAAK,OAAQ,WAC1B3+B,KAAK44D,SACP,EACAw7F,SAAU,WACRp0J,KAAK6vK,iBAAiB,WACtB7vK,KAAK8vK,aAAa/hI,WAAW,wBAC7B/tC,KAAKm3D,QAAQ/P,WAAW,QACpBpnD,KAAK41B,QAAQuoD,MAAM4xF,mBACrB/vK,KAAKm3D,QAAQ37B,KAAKx7B,KAAK41B,QAAQuoD,MAAM4xF,mBAAmBv0I,KAAK,mCAAmCkL,WAAWypB,QAE/G,EACA6/G,aAAc,WACZ,IAAIlpJ,EAAO9mB,KACT8vK,EAAe,GAGjBr7G,EAAEv/B,KAAKl1B,KAAK41B,QAAQuoD,OAAO,SAAUi0E,EAAQ/9H,GAC3C,IAAIiyI,EACA1wI,EAAU,CAAC,EAGf,GAAKvB,EAGL,MAAe,sBAAX+9H,IACFkU,EAASx/I,EAAKqwC,QAAQ37B,KAAKnH,IACpBa,MAAK,WACV,IAAIiiC,EAAU1C,EAAEz0D,MACZm3D,EAAQ1wB,SAAS,mCAAmCjwC,QAGxD2gE,EAAQzwB,WAAWqpB,QAAQ,uDAC7B,IACAjpC,EAAKuuI,UAAUiR,EAAQ,KAAM,qDAC7BwJ,EAAeA,EAAaj9J,OAAOyzJ,EAAOnsK,cAKvCs6D,EAAEt3D,GAAGi1J,KAORx8H,EADE9O,EAAK,IAAMsrI,EAAS,WACZtrI,EAAK,IAAMsrI,EAAS,WAAW,UAE/B,CACR5tF,QAAS,CAAC,GAKd19C,EAAKqwC,QAAQ37B,KAAKnH,GAAUa,MAAK,WAC/B,IAAIiiC,EAAU1C,EAAEz0D,MACZ8rF,EAAW30B,EAAQi7F,GAAQ,YAI3B6d,EAAkBx7G,EAAE29F,OAAO90J,OAAO,CAAC,EAAGs4B,GAI1C,GAAe,WAAXw8H,IAAuBj7F,EAAQ/2B,OAAO,eAAe5pC,OAAzD,CAKKs1F,IACHA,EAAW30B,EAAQi7F,KAAUA,GAAQ,aAEnCtmE,IACFmkF,EAAgBzrG,QAAU19C,EAAKopJ,sBAAsBD,EAAgBzrG,QAASsnB,IAEhF30B,EAAQi7F,GAAQ6d,GAIhB,IAAIE,EAAgBh5G,EAAQi7F,GAAQ,UACpC39F,EAAEx+D,KAAKk6K,EAAc,GAAI,uBAAwBrkF,GAAsB30B,EAAQi7F,GAAQ,aACvF0d,EAAah5K,KAAKq5K,EAAc,GAfhC,CAgBF,KACF,IACAnwK,KAAK8vK,aAAer7G,EAAEA,EAAE51B,WAAWixI,IACnC9vK,KAAKq1J,UAAUr1J,KAAK8vK,aAAc,uBACpC,EACAD,iBAAkB,SAAU5nI,GAC1BjoC,KAAK8vK,aAAa56I,MAAK,WACrB,IACEj/B,EADYw+D,EAAEz0D,MACC/J,KAAK,wBAClBA,GAAQA,EAAKgyC,IACfhyC,EAAKgyC,IAET,GACF,EACAmoI,mBAAoB,SAAUj5G,EAASha,GACrC,IAAIjU,EAAS,8EACT52B,EAAMtS,KAAKqwK,oBAAoBlzH,EAAU,SAASqnB,QAAQgC,MAC9DxmE,KAAKq0J,aAAal9F,EAAS,KAAMjuB,GACjClpC,KAAKq1J,UAAUl+F,EAAS,KAAM7kD,EAChC,EACA+9J,oBAAqB,SAAUlzH,EAAUtiD,GACvC,IAAI2pB,EAAuC,aAA3BxkB,KAAK41B,QAAQpR,UACzBzJ,EAAS,CACXypD,QAAS,CAAC,GAQZ,OANAzpD,EAAOypD,QAAQ3pE,GAAO,CACpB,OAAU,GACV,MAAS,cAAgB2pB,EAAY,MAAQ,QAC7C,KAAQ,cAAgBA,EAAY,SAAW,SAC/C,KAAQ,iBACR24B,GACKpiC,CACT,EACAu1J,gBAAiB,SAAUnzH,GACzB,IAAIvnB,EAAU51B,KAAKqwK,oBAAoBlzH,EAAU,cAGjD,OAFAvnB,EAAQ4uC,QAAQ,iBAAmB,GACnC5uC,EAAQ4uC,QAAQ,mBAAqB,GAC9B5uC,CACT,EACA26I,eAAgB,SAAUpzH,GACxB,OAAOn9C,KAAKqwK,oBAAoBlzH,EAAU,YAC5C,EACAqzH,sBAAuB,SAAUrzH,GAC/B,OAAOn9C,KAAKqwK,oBAAoBlzH,EAAU,yBAC5C,EACAszH,mBAAoB,SAAUtzH,GAC5B,IAAI34B,EAAuC,aAA3BxkB,KAAK41B,QAAQpR,UAC7B,MAAO,CACLu3B,QAAOv3B,GAAY,OACnBggD,QAAS,CACPksG,OAAQ,CACN,4BAA6B,GAC7B,8BAA+B,IAEjCv7I,MAAO,CACL,4BAA6B,cAAgB3Q,EAAY,MAAQ,MACjE,8BAA+B,cAAgBA,EAAY,MAAQ,SAErE6Q,KAAM,CACJ,4BAA6B7Q,EAAY,GAAK,eAC9C,8BAA+B,cAAgBA,EAAY,SAAW,UAExEmsJ,KAAM,CACJ,4BAA6B,gBAC7B,8BAA+B,kBAEjCxzH,GAEN,EACA+yH,sBAAuB,SAAU1rG,EAASsnB,GACxC,IAAI/wE,EAAS,CAAC,EAMd,OALA05C,EAAEv/B,KAAKsvC,GAAS,SAAU3pE,GACxB,IAAI20D,EAAUs8B,EAASl2D,QAAQ4uC,QAAQ3pE,IAAQ,GAC/C20D,EAAU1qC,OAAOpuB,UAAU49D,KAAK19D,KAAK44D,EAAQpqD,QAAQsqK,EAAyB,KAC9E30J,EAAOlgB,IAAQ20D,EAAU,IAAMgV,EAAQ3pE,IAAMuK,QAAQ,OAAQ,IAC/D,IACO2V,CACT,EACAy5I,WAAY,SAAU35J,EAAKN,GACb,cAARM,GACFmF,KAAKq0J,aAAa,mBAAqBr0J,KAAK41B,QAAQpR,WAEtDxkB,KAAKw8D,OAAO3hE,EAAKN,GACL,aAARM,EAIJmF,KAAK44D,UAHH54D,KAAK6vK,iBAAiBt1K,EAAQ,UAAY,SAI9C,EACAq+D,QAAS,WACP,IAAInyB,EACF3f,EAAO9mB,KACTA,KAAKq1J,UAAU,mCAAqCr1J,KAAK41B,QAAQpR,WAClC,eAA3BxkB,KAAK41B,QAAQpR,WACfxkB,KAAKq1J,UAAU,KAAM,sBAEvBr1J,KAAKgwK,eACLvpI,EAAWzmC,KAAK8vK,aAGZ9vK,KAAK41B,QAAQ+5I,cACflpI,EAAWA,EAASjhB,OAAO,aAEzBihB,EAASjwC,SAGXi+D,EAAEv/B,KAAK,CAAC,QAAS,SAAS,SAAUlH,EAAOzzB,GACzC,IAAIuxF,EAAWrlD,EAASlsC,KAAStE,KAAK,wBACtC,GAAI61F,GAAYhlE,EAAK,IAAMglE,EAASknE,WAAa,WAAY,CAC3D,IAAIp9H,EAAU9O,EAAK,IAAMglE,EAASknE,WAAa,WAA+B,IAApBvsH,EAASjwC,OAAe,OAAS+D,GAC3Fq7B,EAAQ4uC,QAAU19C,EAAKopJ,sBAAsBt6I,EAAQ4uC,QAASsnB,GAC9DA,EAAS30B,QAAQ20B,EAASknE,YAAYp9H,EACxC,MACE9O,EAAKspJ,mBAAmB3pI,EAASlsC,KAAUA,EAE/C,IAGAyF,KAAK6vK,iBAAiB,WAE1B,IAsBFp7G,EAAE29F,OAAO,mBAAoB,CAAC39F,EAAEu9F,GAAGyT,eAAgB,CACjDzzI,QAAS,SACT4D,QAAS,CACPyF,SAAU,KACVmrC,MAAO,KACPqhG,MAAM,EACNrjG,QAAS,CACP,yBAA0B,gBAC1B,wBAAyB,kBAG7BuvF,kBAAmB,WACjB,IAAI14H,EAAUirI,EAAQsK,EAClBh7I,EAAU51B,KAAKw8D,UAAY,CAAC,EAiChC,OA5BAx8D,KAAK6wK,YACLvK,EAAStmK,KAAKm3D,QAAQmvG,SAGtBtmK,KAAKwmE,MAAQ/R,EAAE6xG,EAAOA,EAAO9vK,OAAS,IACjCwJ,KAAKwmE,MAAMhwE,QACdi+D,EAAEh8D,MAAM,2CAEVuH,KAAK8wK,cAAgB,IAOrBF,EAAgB5wK,KAAKwmE,MAAM9/B,WAAW/F,IAAI3gC,KAAKm3D,QAAQ,KACrC3gE,SAChBwJ,KAAK8wK,eAAiBF,EAAczuJ,QAAQ4tC,QAAQ,eAAe3vB,SAAS0Z,QAI1E95C,KAAK8wK,gBACPl7I,EAAQ4wC,MAAQxmE,KAAK8wK,eAGP,OADhBz1I,EAAWr7B,KAAKm3D,QAAQ,GAAG97B,YAEzBzF,EAAQyF,SAAWA,GAEdzF,CACT,EACAo+H,QAAS,WACP,IAAItyH,EAAU1hC,KAAKm3D,QAAQ,GAAGz1B,QAC9B1hC,KAAK4lK,wBACwB,MAAzB5lK,KAAK41B,QAAQyF,WACfr7B,KAAK41B,QAAQyF,SAAWr7B,KAAKm3D,QAAQ,GAAG97B,UAE1Cr7B,KAAKw0J,WAAW,WAAYx0J,KAAK41B,QAAQyF,UACzCr7B,KAAKq1J,UAAU,mBAAoB,+BACnCr1J,KAAKq1J,UAAUr1J,KAAKwmE,MAAO,yBAA0B,uBACnC,UAAdxmE,KAAK/G,MACP+G,KAAKq1J,UAAUr1J,KAAKwmE,MAAO,gCAEzBxmE,KAAK41B,QAAQ4wC,OAASxmE,KAAK41B,QAAQ4wC,QAAUxmE,KAAK8wK,cACpD9wK,KAAK+wK,eACI/wK,KAAK8wK,gBACd9wK,KAAK41B,QAAQ4wC,MAAQxmE,KAAK8wK,eAE5B9wK,KAAK4vK,WACDluI,GACF1hC,KAAKq1J,UAAUr1J,KAAKwmE,MAAO,2BAA4B,mBAEzDxmE,KAAK8zJ,IAAI,CACP6Y,OAAQ,iBACRxrI,MAAO,WACLnhC,KAAKq1J,UAAUr1J,KAAKwmE,MAAO,KAAM,iCACnC,EACAtuB,KAAM,WACJl4C,KAAKq0J,aAAar0J,KAAKwmE,MAAO,KAAM,iCACtC,GAEJ,EACAqqG,UAAW,WACT,IAAIp8I,EAAWz0B,KAAKm3D,QAAQ,GAAG1iC,SAASjsB,cACxCxI,KAAK/G,KAAO+G,KAAKm3D,QAAQ,GAAGl+D,KACX,UAAbw7B,GAAyB,iBAAiB5uB,KAAK7F,KAAK/G,OACtDw7D,EAAEh8D,MAAM,kDAAoDg8B,EAAW,qBAAuBz0B,KAAK/G,KAEvG,EAEA22K,SAAU,WACR5vK,KAAKgxK,YAAYhxK,KAAKm3D,QAAQ,GAAGz1B,QACnC,EACA0wH,OAAQ,WACN,OAAOpyJ,KAAKwmE,KACd,EACAyqG,eAAgB,WACd,IACI53K,EAAO2G,KAAKm3D,QAAQ,GAAG99D,KACvB63K,EAAe,eAAiBz8G,EAAEv8B,eAAe7+B,GAAQ,KAC7D,OAAKA,GAGD2G,KAAK41F,KAAKp/F,OACJi+D,EAAEz0D,KAAK41F,KAAK,GAAGn3D,UAAUjZ,OAAO0rJ,GAGhCz8G,EAAEy8G,GAAc1rJ,QAAO,WAC7B,OAAkC,IAA3BivC,EAAEz0D,MAAMwlK,QAAQhvK,MACzB,KAEWmqC,IAAI3gC,KAAKm3D,SAVb1C,EAAE,GAWb,EACA08G,eAAgB,WACd,IAAIzvI,EAAU1hC,KAAKm3D,QAAQ,GAAGz1B,QAC9B1hC,KAAK60J,aAAa70J,KAAKwmE,MAAO,2BAA4B,kBAAmB9kC,GACzE1hC,KAAK41B,QAAQiyI,MAAsB,aAAd7nK,KAAK/G,MAC5B+G,KAAK60J,aAAa70J,KAAK6nK,KAAM,KAAM,iCAAkCnmI,GAASmzH,aAAa70J,KAAK6nK,KAAM,KAAM,iBAAkBnmI,GAE9G,UAAd1hC,KAAK/G,MACP+G,KAAKixK,iBAAiB/7I,MAAK,WACzB,IAAI42D,EAAWr3B,EAAEz0D,MAAMoxK,cAAc,YACjCtlF,GACFA,EAASuoE,aAAavoE,EAAStlB,MAAO,2BAA4B,kBAEtE,GAEJ,EACA4tF,SAAU,WACRp0J,KAAK6lK,0BACD7lK,KAAK6nK,OACP7nK,KAAK6nK,KAAK3+H,SACVlpC,KAAKqxK,UAAUnoI,SAEnB,EACAsrH,WAAY,SAAU35J,EAAKN,GAEzB,GAAY,UAARM,GAAoBN,EAAxB,CAIA,GADAyF,KAAKw8D,OAAO3hE,EAAKN,GACL,aAARM,EAKF,OAJAmF,KAAK60J,aAAa70J,KAAKwmE,MAAO,KAAM,oBAAqBjsE,QACzDyF,KAAKm3D,QAAQ,GAAG97B,SAAW9gC,GAK7ByF,KAAK44D,SATL,CAUF,EACAo4G,YAAa,SAAUtvI,GACrB,IAAI4vI,EAAQ,8BACRtxK,KAAK41B,QAAQiyI,MACV7nK,KAAK6nK,OACR7nK,KAAK6nK,KAAOpzG,EAAE,UACdz0D,KAAKqxK,UAAY58G,EAAE,kBACnBz0D,KAAKq1J,UAAUr1J,KAAKqxK,UAAW,gCAEf,aAAdrxK,KAAK/G,MACPq4K,GAAS5vI,EAAU,iCAAmC,gBACtD1hC,KAAKq0J,aAAar0J,KAAK6nK,KAAM,KAAMnmI,EAAU,gBAAkB,kBAE/D4vI,GAAS,gBAEXtxK,KAAKq1J,UAAUr1J,KAAK6nK,KAAM,wBAAyByJ,GAC9C5vI,GACH1hC,KAAKq0J,aAAar0J,KAAK6nK,KAAM,KAAM,kCAErC7nK,KAAK6nK,KAAK7sH,UAAUh7C,KAAKwmE,OAAO5rB,MAAM56C,KAAKqxK,iBACpB93K,IAAdyG,KAAK6nK,OACd7nK,KAAK6nK,KAAK3+H,SACVlpC,KAAKqxK,UAAUnoI,gBACRlpC,KAAK6nK,KAEhB,EACAkJ,aAAc,WAEZ,IAAIrqI,EAAW1mC,KAAKwmE,MAAM9/B,WAAW/F,IAAI3gC,KAAKm3D,QAAQ,IAClDn3D,KAAK6nK,OACPnhI,EAAWA,EAAS/F,IAAI3gC,KAAK6nK,KAAK,KAEhC7nK,KAAKqxK,YACP3qI,EAAWA,EAAS/F,IAAI3gC,KAAKqxK,UAAU,KAEzC3qI,EAASwC,SACTlpC,KAAKwmE,MAAMhsB,OAAOx6C,KAAK41B,QAAQ4wC,MACjC,EACA5N,QAAS,WACP,IAAIl3B,EAAU1hC,KAAKm3D,QAAQ,GAAGz1B,QAC5BxE,EAAal9B,KAAKm3D,QAAQ,GAAG97B,SAC/Br7B,KAAKgxK,YAAYtvI,GACjB1hC,KAAK60J,aAAa70J,KAAKwmE,MAAO,2BAA4B,kBAAmB9kC,GAClD,OAAvB1hC,KAAK41B,QAAQ4wC,OACfxmE,KAAK+wK,eAEH7zI,IAAel9B,KAAK41B,QAAQyF,UAC9Br7B,KAAKu0J,YAAY,CACf,SAAYr3H,GAGlB,KAEyBu3B,EAAEu9F,GAAGof,cAoBhC38G,EAAE29F,OAAO,YAAa,CACpBpgI,QAAS,SACTyhI,eAAgB,WAChB79H,QAAS,CACP4uC,QAAS,CACP,YAAa,iBAEfnpC,SAAU,KACVwsI,KAAM,KACN0J,aAAc,YACd/qG,MAAO,KACPgrG,WAAW,GAEbzd,kBAAmB,WACjB,IAAI14H,EAGFzF,EAAU51B,KAAKw8D,UAAY,CAAC,EAU9B,OATAx8D,KAAKmtK,QAAUntK,KAAKm3D,QAAQtxB,GAAG,SAEf,OADhBxK,EAAWr7B,KAAKm3D,QAAQ,GAAG97B,YAEzBzF,EAAQyF,SAAWA,GAErBr7B,KAAK8wK,cAAgB9wK,KAAKmtK,QAAUntK,KAAKm3D,QAAQ32D,MAAQR,KAAKm3D,QAAQrd,OAClE95C,KAAK8wK,gBACPl7I,EAAQ4wC,MAAQxmE,KAAK8wK,eAEhBl7I,CACT,EACAo+H,QAAS,YACFh0J,KAAK8wC,OAAO0gI,WAAaxxK,KAAK41B,QAAQiyI,OACzC7nK,KAAK41B,QAAQ47I,WAAY,GAME,MAAzBxxK,KAAK41B,QAAQyF,WACfr7B,KAAK41B,QAAQyF,SAAWr7B,KAAKm3D,QAAQ,GAAG97B,WAAY,GAEtDr7B,KAAKyxK,WAAazxK,KAAKm3D,QAAQx4B,KAAK,SAGhC3+B,KAAK41B,QAAQ4wC,OAASxmE,KAAK41B,QAAQ4wC,QAAUxmE,KAAK8wK,gBAChD9wK,KAAKmtK,QACPntK,KAAKm3D,QAAQ32D,IAAIR,KAAK41B,QAAQ4wC,OAE9BxmE,KAAKm3D,QAAQrd,KAAK95C,KAAK41B,QAAQ4wC,QAGnCxmE,KAAKq1J,UAAU,YAAa,aAC5Br1J,KAAKw0J,WAAW,WAAYx0J,KAAK41B,QAAQyF,UACzCr7B,KAAK4vK,WACD5vK,KAAKm3D,QAAQtxB,GAAG,MAClB7lC,KAAK8zJ,IAAI,CACP,MAAS,SAAUn7J,GACbA,EAAMy+C,UAAYqd,EAAEu9F,GAAG56G,QAAQ21E,QACjCp0H,EAAM46C,iBAKFvzC,KAAKm3D,QAAQ,GAAGrhB,MAClB91C,KAAKm3D,QAAQ,GAAGrhB,QAEhB91C,KAAKm3D,QAAQ3jB,QAAQ,SAG3B,GAGN,EACAo8H,SAAU,WACH5vK,KAAKm3D,QAAQtxB,GAAG,WACnB7lC,KAAKm3D,QAAQx4B,KAAK,OAAQ,UAExB3+B,KAAK41B,QAAQiyI,OACf7nK,KAAKgxK,YAAY,OAAQhxK,KAAK41B,QAAQiyI,MACtC7nK,KAAK0xK,iBAET,EACAA,eAAgB,WACd1xK,KAAK+nF,MAAQ/nF,KAAKm3D,QAAQx4B,KAAK,SAC1B3+B,KAAK41B,QAAQ47I,WAAcxxK,KAAK+nF,OACnC/nF,KAAKm3D,QAAQx4B,KAAK,QAAS3+B,KAAK41B,QAAQ4wC,MAE5C,EACAwqG,YAAa,SAAUlgI,EAAQv2C,GAC7B,IAAIstK,EAAkB,iBAAX/2H,EACTqM,EAAW0qH,EAAO7nK,KAAK41B,QAAQ27I,aAAeh3K,EAC9Co3K,EAA4B,QAAbx0H,GAAmC,WAAbA,EAGlCn9C,KAAK6nK,KAMCA,GAET7nK,KAAKq0J,aAAar0J,KAAK6nK,KAAM,KAAM7nK,KAAK41B,QAAQiyI,OAPhD7nK,KAAK6nK,KAAOpzG,EAAE,UACdz0D,KAAKq1J,UAAUr1J,KAAK6nK,KAAM,iBAAkB,WACvC7nK,KAAK41B,QAAQ47I,WAChBxxK,KAAKq1J,UAAU,wBAQfwS,GACF7nK,KAAKq1J,UAAUr1J,KAAK6nK,KAAM,KAAMttK,GAElCyF,KAAK4xK,YAAYz0H,GAIbw0H,GACF3xK,KAAKq1J,UAAUr1J,KAAK6nK,KAAM,KAAM,wBAC5B7nK,KAAKqxK,WACPrxK,KAAKqxK,UAAUnoI,WAKZlpC,KAAKqxK,YACRrxK,KAAKqxK,UAAY58G,EAAE,kBACnBz0D,KAAKq1J,UAAUr1J,KAAKqxK,UAAW,yBAEjCrxK,KAAKq0J,aAAar0J,KAAK6nK,KAAM,KAAM,uBACnC7nK,KAAK6xK,iBAAiB10H,GAE1B,EACAi3G,SAAU,WACRp0J,KAAKm3D,QAAQ/P,WAAW,QACpBpnD,KAAK6nK,MACP7nK,KAAK6nK,KAAK3+H,SAERlpC,KAAKqxK,WACPrxK,KAAKqxK,UAAUnoI,SAEZlpC,KAAKyxK,UACRzxK,KAAKm3D,QAAQ/P,WAAW,QAE5B,EACAyqH,iBAAkB,SAAUN,GAC1BvxK,KAAK6nK,KAAK,kBAAkBhiK,KAAK0rK,GAAgB,SAAW,SAASvxK,KAAKqxK,UAC5E,EACAO,YAAa,SAAUL,GACrBvxK,KAAKm3D,QAAQ,kBAAkBtxD,KAAK0rK,GAAgB,SAAW,WAAWvxK,KAAK6nK,KACjF,EACAtT,YAAa,SAAU3+H,GACrB,IAAIk8I,OAAqCv4K,IAAtBq8B,EAAQ47I,UAA0BxxK,KAAK41B,QAAQ47I,UAAY57I,EAAQ47I,UACpFO,OAA2Bx4K,IAAjBq8B,EAAQiyI,KAAqB7nK,KAAK41B,QAAQiyI,KAAOjyI,EAAQiyI,KAChEiK,GAAiBC,IACpBn8I,EAAQ47I,WAAY,GAEtBxxK,KAAKw8D,OAAO5mC,EACd,EACA4+H,WAAY,SAAU35J,EAAKN,GACb,SAARM,IACEN,EACFyF,KAAKgxK,YAAYn2K,EAAKN,GACbyF,KAAK6nK,OACd7nK,KAAK6nK,KAAK3+H,SACNlpC,KAAKqxK,WACPrxK,KAAKqxK,UAAUnoI,WAIT,iBAARruC,GACFmF,KAAKgxK,YAAYn2K,EAAKN,GAIZ,cAARM,IACFmF,KAAK60J,aAAa,sBAAuB,MAAOt6J,GAChDyF,KAAK0xK,kBAEK,UAAR72K,IACEmF,KAAKmtK,QACPntK,KAAKm3D,QAAQ32D,IAAIjG,IAIjByF,KAAKm3D,QAAQrd,KAAKv/C,GACdyF,KAAK6nK,OACP7nK,KAAK4xK,YAAY5xK,KAAK41B,QAAQ27I,cAC9BvxK,KAAK6xK,iBAAiB7xK,KAAK41B,QAAQ27I,iBAIzCvxK,KAAKw8D,OAAO3hE,EAAKN,GACL,aAARM,IACFmF,KAAK60J,aAAa,KAAM,oBAAqBt6J,GAC7CyF,KAAKm3D,QAAQ,GAAG97B,SAAW9gC,EACvBA,GACFyF,KAAKm3D,QAAQ3jB,QAAQ,QAG3B,EACAolB,QAAS,WAGP,IAAI17B,EAAal9B,KAAKm3D,QAAQtxB,GAAG,iBAAmB7lC,KAAKm3D,QAAQ,GAAG97B,SAAWr7B,KAAKm3D,QAAQ1O,SAAS,sBACjGvrB,IAAel9B,KAAK41B,QAAQyF,UAC9Br7B,KAAKu0J,YAAY,CACfl5H,SAAU6B,IAGdl9B,KAAK0xK,gBACP,KAIqB,IAAnBj9G,EAAEyrG,eAEJzrG,EAAE29F,OAAO,YAAa39F,EAAEu9F,GAAGjwH,OAAQ,CACjCnM,QAAS,CACP9B,MAAM,EACNizI,MAAO,CACLv7H,QAAS,KACTwmI,UAAW,OAGfhe,QAAS,WACHh0J,KAAK41B,QAAQ47I,YAAcxxK,KAAK41B,QAAQ9B,OAC1C9zB,KAAK41B,QAAQ47I,UAAYxxK,KAAK41B,QAAQ9B,OAEnC9zB,KAAK41B,QAAQ47I,WAAaxxK,KAAK41B,QAAQ9B,OAC1C9zB,KAAK41B,QAAQ9B,KAAO9zB,KAAK41B,QAAQ47I,WAE9BxxK,KAAK41B,QAAQiyI,OAAS7nK,KAAK41B,QAAQmxI,MAAMv7H,UAAWxrC,KAAK41B,QAAQmxI,MAAMiL,UAOjEhyK,KAAK41B,QAAQiyI,OACtB7nK,KAAK41B,QAAQmxI,MAAMv7H,QAAUxrC,KAAK41B,QAAQiyI,MAPtC7nK,KAAK41B,QAAQmxI,MAAMv7H,QACrBxrC,KAAK41B,QAAQiyI,KAAO7nK,KAAK41B,QAAQmxI,MAAMv7H,SAEvCxrC,KAAK41B,QAAQiyI,KAAO7nK,KAAK41B,QAAQmxI,MAAMiL,UACvChyK,KAAK41B,QAAQ27I,aAAe,OAKhCvxK,KAAKw8D,QACP,EACAg4F,WAAY,SAAU35J,EAAKN,GACb,SAARM,GAIQ,cAARA,IACFmF,KAAK41B,QAAQ9B,KAAOv5B,GAEV,SAARM,IACFmF,KAAK41B,QAAQmxI,MAAMv7H,QAAUjxC,GAEnB,UAARM,IACEN,EAAMixC,SACRxrC,KAAKw8D,OAAO,OAAQjiE,EAAMixC,SAC1BxrC,KAAKw8D,OAAO,eAAgB,cACnBjiE,EAAMy3K,YACfhyK,KAAKw8D,OAAO,OAAQjiE,EAAMy3K,WAC1BhyK,KAAKw8D,OAAO,eAAgB,SAGhCx8D,KAAK4yJ,YAAY92J,YAlBfkE,KAAKw8D,OAAO,YAAajiE,EAmB7B,IAEFk6D,EAAEt3D,GAAG4kC,OAAS,SAAU6W,GACtB,OAAO,SAAUhjB,GACf,IAAI09H,EAAkC,kBAAZ19H,EACtB/zB,EAAO1F,MAAMzF,UAAU8E,MAAM5E,KAAKkF,UAAW,GAC7Ck6C,EAAch2C,KAsDlB,OArDIszJ,EAGGtzJ,KAAKxJ,QAAsB,aAAZo/B,EAGlB51B,KAAKk1B,MAAK,WACR,IAAIq+H,EACAt6J,EAAOw7D,EAAEz0D,MAAM2+B,KAAK,QACpBtlC,EAAgB,aAATJ,GAAgC,UAATA,EAAmB,SAAW,gBAC5D6yF,EAAWr3B,EAAEx+D,KAAK+J,KAAM,MAAQ3G,GACpC,MAAgB,aAAZu8B,GACFogB,EAAc81C,GACP,GAEJA,EAG4B,oBAAtBA,EAASl2D,IAAiD,MAAtBA,EAAQ5f,OAAO,GACrDy+C,EAAEh8D,MAAM,mBAAqBm9B,EAArB,iCAEjB29H,EAAcznE,EAASl2D,GAAS/5B,MAAMiwF,EAAUjqF,MAC5BiqF,QAA4BvyF,IAAhBg6J,GAC9Bv9G,EAAcu9G,GAAeA,EAAY5+H,OAASqhB,EAAYlhB,UAAUy+H,EAAYp5J,OAASo5J,GACtF,QAFT,EANS9+F,EAAEh8D,MAAM,oFAAgGm9B,EAAU,IAU7H,IAtBAogB,OAAcz8C,GA0BZsI,EAAKrL,SACPo/B,EAAU6+B,EAAE29F,OAAO90J,OAAOzB,MAAM,KAAM,CAAC+5B,GAAS/iB,OAAOhR,KAEzD7B,KAAKk1B,MAAK,WACR,IAAIj8B,EAAOw7D,EAAEz0D,MAAM2+B,KAAK,QACpBtlC,EAAgB,aAATJ,GAAgC,UAATA,EAAmB,SAAW,gBAC5D6yF,EAAWr3B,EAAEx+D,KAAK+J,KAAM,MAAQ3G,GACpC,GAAIyyF,EACFA,EAASh7C,OAAOlb,GAAW,CAAC,GACxBk2D,EAAS0nE,OACX1nE,EAAS0nE,YAEN,CACL,GAAa,WAATn6J,EAEF,YADAu/C,EAAKhiD,KAAK69D,EAAEz0D,MAAO41B,GAGrB6+B,EAAEz0D,MAAMoxK,cAAc38G,EAAEn3D,OAAO,CAC7BuqK,MAAM,GACLjyI,GACL,CACF,KAEKogB,CACT,CACF,CA5Dc,CA4DZye,EAAEt3D,GAAG4kC,QACP0yB,EAAEt3D,GAAG80K,UAAY,WAIf,OAHKx9G,EAAEu9F,GAAGkgB,cACRz9G,EAAEh8D,MAAM,+BAEW,WAAjBqD,UAAU,IAAoC,UAAjBA,UAAU,IAAkBA,UAAU,GAC9DkE,KAAKkyK,aAAar2K,MAAMmE,KAAM,CAAClE,UAAU,GAAI,eAAgBA,UAAU,KAE3D,WAAjBA,UAAU,IAAoC,UAAjBA,UAAU,GAClCkE,KAAKkyK,aAAar2K,MAAMmE,KAAM,CAAClE,UAAU,GAAI,kBAE1B,kBAAjBA,UAAU,IAAmBA,UAAU,GAAGqiF,QACnDriF,UAAU,GAAGqiF,MAAQ,CACnBp8C,OAAQjmC,UAAU,GAAGqiF,QAGlBn+E,KAAKkyK,aAAar2K,MAAMmE,KAAMlE,WACvC,GAEF,IA0BIq2K,EA1BgB19G,EAAEu9F,GAAGjwH,OA2BzB,SAASqwI,EAAqB19I,GAE5B,IADA,IAAIyoB,EAAU5iD,EACPm6B,EAAKl+B,QAAUk+B,EAAK,KAAO18B,UAAU,CAK1C,IAAiB,cADjBmlD,EAAWzoB,EAAKya,IAAI,cACwB,aAAbgO,GAAwC,UAAbA,KAKxD5iD,EAAQ8V,SAASqkB,EAAKya,IAAI,UAAW,KAChC7vC,MAAM/E,IAAoB,IAAVA,GACnB,OAAOA,EAGXm6B,EAAOA,EAAK0L,QACd,CACA,OAAO,CACT,CAOA,SAASiyI,IACPryK,KAAKsyK,SAAW,KAChBtyK,KAAKwtK,WAAY,EACjBxtK,KAAKuyK,gBAAkB,GACvBvyK,KAAKwyK,oBAAqB,EAC1BxyK,KAAKyyK,WAAY,EACjBzyK,KAAK0yK,WAAa,oBAClB1yK,KAAK2yK,aAAe,uBACpB3yK,KAAK4yK,aAAe,uBACpB5yK,KAAK6yK,cAAgB,wBACrB7yK,KAAK8yK,aAAe,uBACpB9yK,KAAK+yK,cAAgB,yBACrB/yK,KAAKgzK,mBAAqB,6BAC1BhzK,KAAKizK,cAAgB,4BACrBjzK,KAAKkzK,cAAgB,+BACrBlzK,KAAKmzK,SAAW,GAChBnzK,KAAKmzK,SAAS,IAAM,CAElBC,UAAW,OAEXC,SAAU,OAEVC,SAAU,OAEVC,YAAa,QAEbC,WAAY,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAE3HC,gBAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAE/FC,SAAU,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAE7EC,cAAe,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAE1DC,YAAa,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAElDC,WAAY,KAEZ55J,WAAY,WAEZ65J,SAAU,EAEVC,OAAO,EAEPC,oBAAoB,EAEpBC,WAAY,GAEZC,iBAAkB,eAElBC,gBAAiB,eAGnBn0K,KAAKo0K,UAAY,CAEfC,OAAQ,QAGRC,SAAU,SAEVC,YAAa,CAAC,EAEdC,YAAa,KAGbC,WAAY,GAEZC,WAAY,MAEZC,YAAa,GAEbC,iBAAiB,EAEjBC,kBAAkB,EAGlBC,wBAAwB,EAExBC,aAAa,EAEbC,aAAa,EAEbC,YAAY,EAEZC,UAAW,YAIXC,iBAAiB,EAEjBC,mBAAmB,EAEnBC,UAAU,EAEVC,cAAet1K,KAAKu1K,YAGpBC,gBAAiB,MAIjBC,QAAS,KAETC,QAAS,KAETv1J,SAAU,OAEVw1J,cAAe,KAIfC,WAAY,KAGZC,SAAU,KAEVC,kBAAmB,KAEnBC,QAAS,KAETC,mBAAoB,KAEpBC,eAAgB,EAEhBC,iBAAkB,EAElBC,WAAY,EAEZC,cAAe,GAEfC,SAAU,GAEVC,UAAW,GAEXC,gBAAgB,EAEhBC,iBAAiB,EAEjBC,UAAU,EAEVp7I,UAAU,GAGZo5B,EAAEn3D,OAAO0C,KAAKo0K,UAAWp0K,KAAKmzK,SAAS,KACvCnzK,KAAKmzK,SAASuD,GAAKjiH,EAAEn3D,QAAO,EAAM,CAAC,EAAG0C,KAAKmzK,SAAS,KACpDnzK,KAAKmzK,SAAS,SAAW1+G,EAAEn3D,QAAO,EAAM,CAAC,EAAG0C,KAAKmzK,SAASuD,IAC1D12K,KAAK22K,MAAQC,EAAqBniH,EAAE,YAAcz0D,KAAK0yK,WAAa,+FACtE,CA2zDA,SAASkE,EAAqBD,GAC5B,IAAItiJ,EAAW,iFACf,OAAOsiJ,EAAMhkI,GAAG,WAAYte,GAAU,WACpCogC,EAAEz0D,MAAMqoD,YAAY,mBACkC,IAAlDroD,KAAKo+B,UAAUtxB,QAAQ,uBACzB2nD,EAAEz0D,MAAMqoD,YAAY,6BAEgC,IAAlDroD,KAAKo+B,UAAUtxB,QAAQ,uBACzB2nD,EAAEz0D,MAAMqoD,YAAY,2BAExB,IAAG1V,GAAG,YAAate,EAAUwiJ,EAC/B,CACA,SAASA,IACFpiH,EAAEqiH,WAAWC,sBAAsB5E,EAAsB6E,OAAS7E,EAAsBwE,MAAMv2I,SAAS,GAAK+xI,EAAsBj2K,MAAM,MAC3Iu4D,EAAEz0D,MAAMknC,QAAQ,2BAA2B1L,KAAK,KAAK6sB,YAAY,kBACjEoM,EAAEz0D,MAAMioD,SAAS,mBACqC,IAAlDjoD,KAAKo+B,UAAUtxB,QAAQ,uBACzB2nD,EAAEz0D,MAAMioD,SAAS,6BAEmC,IAAlDjoD,KAAKo+B,UAAUtxB,QAAQ,uBACzB2nD,EAAEz0D,MAAMioD,SAAS,4BAGvB,CAGA,SAASgvH,EAAwB99K,EAAQ88C,GAEvC,IAAK,IAAI58C,KADTo7D,EAAEn3D,OAAOnE,EAAQ88C,GACAA,EACI,MAAfA,EAAM58C,KACRF,EAAOE,GAAQ48C,EAAM58C,IAGzB,OAAOF,CACT,CAjhEAs7D,EAAEn3D,OAAOm3D,EAAEu9F,GAAI,CACb8kB,WAAY,CACV9kJ,QAAS,YAmLbyiC,EAAEn3D,OAAO+0K,EAAW37K,UAAW,CAE7BwgL,gBAAiB,gBAEjBC,QAAS,EAETC,kBAAmB,WACjB,OAAOp3K,KAAK22K,KACd,EAKAU,YAAa,SAAU3qH,GAErB,OADAuqH,EAAwBj3K,KAAKo0K,UAAW1nH,GAAY,CAAC,GAC9C1sD,IACT,EAKAs3K,kBAAmB,SAAUn+K,EAAQuzD,GACnC,IAAIj4B,EAAUuiJ,EAAQjb,EAEtBib,EAAsB,SADtBviJ,EAAWt7B,EAAOs7B,SAASjsB,gBACiB,SAAbisB,EAC1Bt7B,EAAO4iC,KACV/7B,KAAK6+F,MAAQ,EACb1lG,EAAO4iC,GAAK,KAAO/7B,KAAK6+F,OAE1Bk9D,EAAO/7J,KAAKu3K,SAAS9iH,EAAEt7D,GAAS69K,IAC3BtqH,SAAW+H,EAAEn3D,OAAO,CAAC,EAAGovD,GAAY,CAAC,GACzB,UAAbj4B,EACFz0B,KAAKw3K,mBAAmBr+K,EAAQ4iK,GACvBib,GACTh3K,KAAKy3K,kBAAkBt+K,EAAQ4iK,EAEnC,EAEAwb,SAAU,SAAUp+K,EAAQ69K,GAE1B,MAAO,CACLj7I,GAFO5iC,EAAO,GAAG4iC,GAAG32B,QAAQ,qBAAsB,UAGlDlJ,MAAO/C,EAEPu+K,YAAa,EACbC,cAAe,EACfC,aAAc,EAEdC,UAAW,EACXC,SAAU,EAEVd,OAAQA,EAERL,MAAQK,EAERJ,EAAqBniH,EAAE,eAAiBz0D,KAAK2yK,aAAe,wFAF3C3yK,KAAK22K,MAI1B,EAEAa,mBAAoB,SAAUr+K,EAAQ4iK,GACpC,IAAI7/J,EAAQu4D,EAAEt7D,GACd4iK,EAAKvhH,OAASia,EAAE,IAChBsnG,EAAKvoH,QAAUihB,EAAE,IACbv4D,EAAMusD,SAASzoD,KAAKk3K,mBAGxBl3K,KAAK+3K,aAAa77K,EAAO6/J,GACzB7/J,EAAM+rD,SAASjoD,KAAKk3K,iBAAiBvkI,GAAG,UAAW3yC,KAAKg4K,YAAYrlI,GAAG,WAAY3yC,KAAKi4K,aAAatlI,GAAG,QAAS3yC,KAAKk4K,UACtHl4K,KAAKm4K,UAAUpc,GACftnG,EAAEx+D,KAAKkD,EAAQ,aAAc4iK,GAGzBA,EAAKrvG,SAASrxB,UAChBr7B,KAAKo4K,mBAAmBj/K,GAE5B,EAEA4+K,aAAc,SAAU77K,EAAO6/J,GAC7B,IAAIsY,EACFK,EACAC,EACAF,EAAaz0K,KAAKq4K,KAAKtc,EAAM,cAC7BgY,EAAQ/zK,KAAKq4K,KAAKtc,EAAM,SACtBA,EAAKvhH,QACPuhH,EAAKvhH,OAAOtR,SAEVurI,IACF1Y,EAAKvhH,OAASia,EAAE,UAAUxM,SAASjoD,KAAK4yK,cAAc9+I,KAAK2gJ,GAC3Dv4K,EAAM63K,EAAQ,SAAW,SAAShY,EAAKvhH,SAEzCt+C,EAAM62C,IAAI,QAAS/yC,KAAKs4K,iBACpBvc,EAAKvoH,SACPuoH,EAAKvoH,QAAQtK,SAGA,WADfmrI,EAASr0K,KAAKq4K,KAAKtc,EAAM,YACY,SAAXsY,GAExBn4K,EAAMy2C,GAAG,QAAS3yC,KAAKs4K,iBAEV,WAAXjE,GAAkC,SAAXA,IAEzBK,EAAa10K,KAAKq4K,KAAKtc,EAAM,cAC7B4Y,EAAc30K,KAAKq4K,KAAKtc,EAAM,eAC1B/7J,KAAKq4K,KAAKtc,EAAM,mBAClBA,EAAKvoH,QAAUihB,EAAE,SAASxM,SAASjoD,KAAK6yK,eAAel0I,KAAK,CAC1DrmC,IAAKq8K,EACLpsC,IAAKmsC,EACL3sF,MAAO2sF,KAGT3Y,EAAKvoH,QAAUihB,EAAE,0BAA0BxM,SAASjoD,KAAK6yK,eACrD8B,EACF5Y,EAAKvoH,QAAQsG,KAAK2a,EAAE,SAAS91B,KAAK,CAChCrmC,IAAKq8K,EACLpsC,IAAKmsC,EACL3sF,MAAO2sF,KAGT3Y,EAAKvoH,QAAQ1f,KAAK4gJ,IAGtBx4K,EAAM63K,EAAQ,SAAW,SAAShY,EAAKvoH,SACvCuoH,EAAKvoH,QAAQb,GAAG,SAAS,WASvB,OARI8hB,EAAEqiH,WAAWtE,oBAAsB/9G,EAAEqiH,WAAWyB,aAAer8K,EAAM,GACvEu4D,EAAEqiH,WAAW0B,kBACJ/jH,EAAEqiH,WAAWtE,oBAAsB/9G,EAAEqiH,WAAWyB,aAAer8K,EAAM,IAC9Eu4D,EAAEqiH,WAAW0B,kBACb/jH,EAAEqiH,WAAWwB,gBAAgBp8K,EAAM,KAEnCu4D,EAAEqiH,WAAWwB,gBAAgBp8K,EAAM,KAE9B,CACT,IAEJ,EAEAi8K,UAAW,SAAUpc,GACnB,GAAI/7J,KAAKq4K,KAAKtc,EAAM,cAAgBA,EAAKib,OAAQ,CAC/C,IAAIyB,EACFn0K,EACAo0K,EACApiL,EACA6T,EAAO,IAAInN,KAAK,KAAM,GAAQ,IAE9Bid,EAAaja,KAAKq4K,KAAKtc,EAAM,cAC3B9hJ,EAAW9U,MAAM,UACnBszK,EAAU,SAAUhhK,GAGlB,IAFAnT,EAAM,EACNo0K,EAAO,EACFpiL,EAAI,EAAGA,EAAImhB,EAAMjhB,OAAQF,IACxBmhB,EAAMnhB,GAAGE,OAAS8N,IACpBA,EAAMmT,EAAMnhB,GAAGE,OACfkiL,EAAOpiL,GAGX,OAAOoiL,CACT,EACAvuK,EAAKkF,SAASopK,EAAQz4K,KAAKq4K,KAAKtc,EAAM9hJ,EAAW9U,MAAM,MAAQ,aAAe,qBAC9EgF,EAAKwuK,QAAQF,EAAQz4K,KAAKq4K,KAAKtc,EAAM9hJ,EAAW9U,MAAM,MAAQ,WAAa,kBAAoB,GAAKgF,EAAKuK,WAE3GqnJ,EAAK7/J,MAAMyiC,KAAK,OAAQ3+B,KAAK44K,YAAY7c,EAAM5xJ,GAAM3T,OACvD,CACF,EAEAihL,kBAAmB,SAAUt+K,EAAQ4iK,GACnC,IAAI8c,EAAUpkH,EAAEt7D,GACZ0/K,EAAQpwH,SAASzoD,KAAKk3K,mBAG1B2B,EAAQ5wH,SAASjoD,KAAKk3K,iBAAiB18H,OAAOuhH,EAAK4a,OACnDliH,EAAEx+D,KAAKkD,EAAQ,aAAc4iK,GAC7B/7J,KAAK84K,SAAS/c,EAAM/7J,KAAK+4K,gBAAgBhd,IAAO,GAChD/7J,KAAKg5K,kBAAkBjd,GACvB/7J,KAAKi5K,iBAAiBld,GAGlBA,EAAKrvG,SAASrxB,UAChBr7B,KAAKo4K,mBAAmBj/K,GAK1B4iK,EAAK4a,MAAMxnI,IAAI,UAAW,SAC5B,EAWA+pI,kBAAmB,SAAUh9K,EAAOiO,EAAM0rK,EAAUnpH,EAAUp2C,GAC5D,IAAIylB,EACFo9I,EACAC,EACAC,EACAC,EACAvd,EAAO/7J,KAAKu5K,YAoCd,OAlCKxd,IACH/7J,KAAK6+F,MAAQ,EACb9iE,EAAK,KAAO/7B,KAAK6+F,KACjB7+F,KAAKw5K,aAAe/kH,EAAE,0BAA4B14B,EAAK,4DACvD/7B,KAAKw5K,aAAa7mI,GAAG,UAAW3yC,KAAKg4K,YACrCvjH,EAAE,QAAQja,OAAOx6C,KAAKw5K,eACtBzd,EAAO/7J,KAAKu5K,YAAcv5K,KAAKu3K,SAASv3K,KAAKw5K,cAAc,IACtD9sH,SAAW,CAAC,EACjB+H,EAAEx+D,KAAK+J,KAAKw5K,aAAa,GAAI,aAAczd,IAE7Ckb,EAAwBlb,EAAKrvG,SAAUA,GAAY,CAAC,GACpDviD,EAAOA,GAAQA,EAAKyqB,cAAgB53B,KAAOgD,KAAK44K,YAAY7c,EAAM5xJ,GAAQA,EAC1EnK,KAAKw5K,aAAah5K,IAAI2J,GACtBnK,KAAKy5K,KAAOnjK,EAAMA,EAAI9f,OAAS8f,EAAM,CAACA,EAAIygC,MAAOzgC,EAAI0gC,OAAS,KACzDh3C,KAAKy5K,OACRN,EAAenhL,SAASy+B,gBAAgBmtD,YACxCw1F,EAAgBphL,SAASy+B,gBAAgBorD,aACzCw3F,EAAUrhL,SAASy+B,gBAAgBssB,YAAc/qD,SAASg4C,KAAK+S,WAC/Du2H,EAAUthL,SAASy+B,gBAAgBqsB,WAAa9qD,SAASg4C,KAAK8S,UAC9D9iD,KAAKy5K,KAEL,CAACN,EAAe,EAAI,IAAME,EAASD,EAAgB,EAAI,IAAME,IAI/Dt5K,KAAKw5K,aAAarqI,IAAI,OAAQnvC,KAAKy5K,KAAK,GAAK,GAAK,MAAMtqI,IAAI,MAAOnvC,KAAKy5K,KAAK,GAAK,MAClF1d,EAAKrvG,SAASmpH,SAAWA,EACzB71K,KAAKyyK,WAAY,EACjBzyK,KAAK22K,MAAM1uH,SAASjoD,KAAK8yK,cACzB9yK,KAAKs4K,gBAAgBt4K,KAAKw5K,aAAa,IACnC/kH,EAAEilH,SACJjlH,EAAEilH,QAAQ15K,KAAK22K,OAEjBliH,EAAEx+D,KAAK+J,KAAKw5K,aAAa,GAAI,aAAczd,GACpC/7J,IACT,EAIA25K,mBAAoB,SAAUxgL,GAC5B,IAAIs7B,EACF4kD,EAAU5kB,EAAEt7D,GACZ4iK,EAAOtnG,EAAEx+D,KAAKkD,EAAQ,cACnBkgF,EAAQ5wB,SAASzoD,KAAKk3K,mBAG3BziJ,EAAWt7B,EAAOs7B,SAASjsB,cAC3BisD,EAAE1mB,WAAW50C,EAAQ,cACJ,UAAbs7B,GACFsnI,EAAKvhH,OAAOtR,SACZ6yH,EAAKvoH,QAAQtK,SACbmwC,EAAQhxB,YAAYroD,KAAKk3K,iBAAiBnkI,IAAI,QAAS/yC,KAAKs4K,iBAAiBvlI,IAAI,UAAW/yC,KAAKg4K,YAAYjlI,IAAI,WAAY/yC,KAAKi4K,aAAallI,IAAI,QAAS/yC,KAAKk4K,WAC3I,QAAbzjJ,GAAmC,SAAbA,GAC/B4kD,EAAQhxB,YAAYroD,KAAKk3K,iBAAiBn5K,QAExCo0K,IAA0BpW,IAC5BoW,EAAwB,KACxBnyK,KAAKsyK,SAAW,MAEpB,EAIAsH,kBAAmB,SAAUzgL,GAC3B,IAAIs7B,EACFuiJ,EACA39F,EAAU5kB,EAAEt7D,GACZ4iK,EAAOtnG,EAAEx+D,KAAKkD,EAAQ,cACnBkgF,EAAQ5wB,SAASzoD,KAAKk3K,mBAIV,WADjBziJ,EAAWt7B,EAAOs7B,SAASjsB,gBAEzBrP,EAAOkiC,UAAW,EAClB0gI,EAAKvoH,QAAQhuB,OAAO,UAAU0P,MAAK,WACjCl1B,KAAKq7B,UAAW,CAClB,IAAG3F,MAAMlQ,OAAO,OAAO2pB,IAAI,CACzBkR,QAAS,MACTw5H,OAAQ,MAEY,QAAbplJ,GAAmC,SAAbA,KAC/BuiJ,EAAS39F,EAAQ5yC,SAAS,IAAMzmC,KAAK2yK,eAC9BlsI,WAAW4hB,YAAY,qBAC9B2uH,EAAOx7I,KAAK,yDAAyDj7B,KAAK,YAAY,IAExFP,KAAKuyK,gBAAkB99G,EAAEx3D,IAAI+C,KAAKuyK,iBAElC,SAAUh4K,GACR,OAAOA,IAAUpB,EAAS,KAAOoB,CACnC,IACF,EAIA69K,mBAAoB,SAAUj/K,GAC5B,IAAIs7B,EACFuiJ,EACA39F,EAAU5kB,EAAEt7D,GACZ4iK,EAAOtnG,EAAEx+D,KAAKkD,EAAQ,cACnBkgF,EAAQ5wB,SAASzoD,KAAKk3K,mBAIV,WADjBziJ,EAAWt7B,EAAOs7B,SAASjsB,gBAEzBrP,EAAOkiC,UAAW,EAClB0gI,EAAKvoH,QAAQhuB,OAAO,UAAU0P,MAAK,WACjCl1B,KAAKq7B,UAAW,CAClB,IAAG3F,MAAMlQ,OAAO,OAAO2pB,IAAI,CACzBkR,QAAS,MACTw5H,OAAQ,aAEY,QAAbplJ,GAAmC,SAAbA,KAC/BuiJ,EAAS39F,EAAQ5yC,SAAS,IAAMzmC,KAAK2yK,eAC9BlsI,WAAWwhB,SAAS,qBAC3B+uH,EAAOx7I,KAAK,yDAAyDj7B,KAAK,YAAY,IAExFP,KAAKuyK,gBAAkB99G,EAAEx3D,IAAI+C,KAAKuyK,iBAElC,SAAUh4K,GACR,OAAOA,IAAUpB,EAAS,KAAOoB,CACnC,IACAyF,KAAKuyK,gBAAgBvyK,KAAKuyK,gBAAgB/7K,QAAU2C,EACtD,EAKA49K,sBAAuB,SAAU59K,GAC/B,IAAKA,EACH,OAAO,EAET,IAAK,IAAI7C,EAAI,EAAGA,EAAI0J,KAAKuyK,gBAAgB/7K,OAAQF,IAC/C,GAAI0J,KAAKuyK,gBAAgBj8K,KAAO6C,EAC9B,OAAO,EAGX,OAAO,CACT,EAMA2gL,SAAU,SAAU3gL,GAClB,IACE,OAAOs7D,EAAEx+D,KAAKkD,EAAQ,aACxB,CAAE,MAAOgC,GACP,KAAM,2CACR,CACF,EAUA4+K,kBAAmB,SAAU5gL,EAAQE,EAAMkB,GACzC,IAAImyD,EACFviD,EACAsrK,EACAC,EACA3Z,EAAO/7J,KAAK85K,SAAS3gL,GACvB,GAAyB,IAArB2C,UAAUtF,QAAgC,kBAAT6C,EACnC,MAAgB,aAATA,EAAsBo7D,EAAEn3D,OAAO,CAAC,EAAGm3D,EAAEqiH,WAAW1C,WAAarY,EAAgB,QAAT1iK,EAAiBo7D,EAAEn3D,OAAO,CAAC,EAAGy+J,EAAKrvG,UAAY1sD,KAAKq4K,KAAKtc,EAAM1iK,GAAQ,KAEpJqzD,EAAWrzD,GAAQ,CAAC,EACA,kBAATA,KACTqzD,EAAW,CAAC,GACHrzD,GAAQkB,GAEfwhK,IACE/7J,KAAKsyK,WAAavW,GACpB/7J,KAAKw4K,kBAEPruK,EAAOnK,KAAKg6K,mBAAmB7gL,GAAQ,GACvCs8K,EAAUz1K,KAAKi6K,eAAele,EAAM,OACpC2Z,EAAU11K,KAAKi6K,eAAele,EAAM,OACpCkb,EAAwBlb,EAAKrvG,SAAUA,GAGvB,OAAZ+oH,QAA4Cl8K,IAAxBmzD,EAASzyC,iBAAiD1gB,IAArBmzD,EAAS+oH,UACpE1Z,EAAKrvG,SAAS+oH,QAAUz1K,KAAK44K,YAAY7c,EAAM0Z,IAEjC,OAAZC,QAA4Cn8K,IAAxBmzD,EAASzyC,iBAAiD1gB,IAArBmzD,EAASgpH,UACpE3Z,EAAKrvG,SAASgpH,QAAU11K,KAAK44K,YAAY7c,EAAM2Z,IAE7C,aAAchpH,IACZA,EAASrxB,SACXr7B,KAAKo4K,mBAAmBj/K,GAExB6G,KAAK45K,kBAAkBzgL,IAG3B6G,KAAK+3K,aAAatjH,EAAEt7D,GAAS4iK,GAC7B/7J,KAAKm4K,UAAUpc,GACf/7J,KAAK84K,SAAS/c,EAAM5xJ,GACpBnK,KAAKi5K,iBAAiBld,GACtB/7J,KAAKg5K,kBAAkBjd,GAE3B,EAEAme,kBAAmB,SAAU/gL,EAAQE,EAAMkB,GACzCyF,KAAK+5K,kBAAkB5gL,EAAQE,EAAMkB,EACvC,EAIA4/K,mBAAoB,SAAUhhL,GAC5B,IAAI4iK,EAAO/7J,KAAK85K,SAAS3gL,GACrB4iK,GACF/7J,KAAKg5K,kBAAkBjd,EAE3B,EAKAqe,mBAAoB,SAAUjhL,EAAQgR,GACpC,IAAI4xJ,EAAO/7J,KAAK85K,SAAS3gL,GACrB4iK,IACF/7J,KAAK84K,SAAS/c,EAAM5xJ,GACpBnK,KAAKg5K,kBAAkBjd,GACvB/7J,KAAKi5K,iBAAiBld,GAE1B,EAMAie,mBAAoB,SAAU7gL,EAAQkhL,GACpC,IAAIte,EAAO/7J,KAAK85K,SAAS3gL,GAIzB,OAHI4iK,IAASA,EAAKib,QAChBh3K,KAAKs6K,kBAAkBve,EAAMse,GAExBte,EAAO/7J,KAAKu6K,SAASxe,GAAQ,IACtC,EAEAic,WAAY,SAAUr/K,GACpB,IAAIk9K,EACF2E,EACAriJ,EACA4jI,EAAOtnG,EAAEqiH,WAAWgD,SAASnhL,EAAMQ,QACnCshL,GAAU,EACV1G,EAAQhY,EAAK4a,MAAM9wI,GAAG,sBAExB,GADAk2H,EAAKyR,WAAY,EACb/4G,EAAEqiH,WAAWtE,mBACf,OAAQ75K,EAAMy+C,SACZ,KAAK,EACHqd,EAAEqiH,WAAW0B,kBACbiC,GAAU,EACV,MAEF,KAAK,GAcH,OAbAtiJ,EAAMs8B,EAAE,MAAQA,EAAEqiH,WAAW5D,cAAgB,SAAWz+G,EAAEqiH,WAAW7D,cAAgB,IAAKlX,EAAK4a,QACvF,IACNliH,EAAEqiH,WAAW4D,WAAW/hL,EAAMQ,OAAQ4iK,EAAK4b,cAAe5b,EAAK6b,aAAcz/I,EAAI,KAEnF09I,EAAWphH,EAAEqiH,WAAWuB,KAAKtc,EAAM,cAEjCye,EAAU/lH,EAAEqiH,WAAW8B,YAAY7c,GAGnC8Z,EAASh6K,MAAMkgK,EAAK7/J,MAAQ6/J,EAAK7/J,MAAM,GAAK,KAAM,CAACs+K,EAASze,KAE5DtnG,EAAEqiH,WAAW0B,mBAER,EAET,KAAK,GACH/jH,EAAEqiH,WAAW0B,kBACb,MAEF,KAAK,GACH/jH,EAAEqiH,WAAW6D,YAAYhiL,EAAMQ,OAAQR,EAAMg+C,SAAW8d,EAAEqiH,WAAWuB,KAAKtc,EAAM,kBAAoBtnG,EAAEqiH,WAAWuB,KAAKtc,EAAM,cAAe,KAC3I,MAEF,KAAK,GACHtnG,EAAEqiH,WAAW6D,YAAYhiL,EAAMQ,OAAQR,EAAMg+C,SAAW8d,EAAEqiH,WAAWuB,KAAKtc,EAAM,kBAAoBtnG,EAAEqiH,WAAWuB,KAAKtc,EAAM,cAAe,KAC3I,MAEF,KAAK,IACCpjK,EAAMg+C,SAAWh+C,EAAMm+C,UACzB2d,EAAEqiH,WAAW8D,WAAWjiL,EAAMQ,QAEhCshL,EAAU9hL,EAAMg+C,SAAWh+C,EAAMm+C,QACjC,MAEF,KAAK,IACCn+C,EAAMg+C,SAAWh+C,EAAMm+C,UACzB2d,EAAEqiH,WAAW+D,WAAWliL,EAAMQ,QAEhCshL,EAAU9hL,EAAMg+C,SAAWh+C,EAAMm+C,QACjC,MAEF,KAAK,IACCn+C,EAAMg+C,SAAWh+C,EAAMm+C,UACzB2d,EAAEqiH,WAAW6D,YAAYhiL,EAAMQ,OAAQ46K,EAAQ,GAAM,EAAG,KAE1D0G,EAAU9hL,EAAMg+C,SAAWh+C,EAAMm+C,QAG7Bn+C,EAAM+8C,cAAca,QACtBke,EAAEqiH,WAAW6D,YAAYhiL,EAAMQ,OAAQR,EAAMg+C,SAAW8d,EAAEqiH,WAAWuB,KAAKtc,EAAM,kBAAoBtnG,EAAEqiH,WAAWuB,KAAKtc,EAAM,cAAe,KAI7I,MACF,KAAK,IACCpjK,EAAMg+C,SAAWh+C,EAAMm+C,UACzB2d,EAAEqiH,WAAW6D,YAAYhiL,EAAMQ,QAAS,EAAG,KAE7CshL,EAAU9hL,EAAMg+C,SAAWh+C,EAAMm+C,QACjC,MAEF,KAAK,IACCn+C,EAAMg+C,SAAWh+C,EAAMm+C,UACzB2d,EAAEqiH,WAAW6D,YAAYhiL,EAAMQ,OAAQ46K,GAAS,EAAI,EAAI,KAE1D0G,EAAU9hL,EAAMg+C,SAAWh+C,EAAMm+C,QAG7Bn+C,EAAM+8C,cAAca,QACtBke,EAAEqiH,WAAW6D,YAAYhiL,EAAMQ,OAAQR,EAAMg+C,SAAW8d,EAAEqiH,WAAWuB,KAAKtc,EAAM,kBAAoBtnG,EAAEqiH,WAAWuB,KAAKtc,EAAM,cAAe,KAI7I,MACF,KAAK,IACCpjK,EAAMg+C,SAAWh+C,EAAMm+C,UACzB2d,EAAEqiH,WAAW6D,YAAYhiL,EAAMQ,OAAQ,EAAI,KAE7CshL,EAAU9hL,EAAMg+C,SAAWh+C,EAAMm+C,QACjC,MAEF,QACE2jI,GAAU,OAEa,KAAlB9hL,EAAMy+C,SAAkBz+C,EAAMg+C,QAEvC8d,EAAEqiH,WAAWwB,gBAAgBt4K,MAE7By6K,GAAU,EAERA,IACF9hL,EAAM46C,iBACN56C,EAAM06C,kBAEV,EAEA4kI,YAAa,SAAUt/K,GACrB,IAAImiL,EACFriF,EACAsjE,EAAOtnG,EAAEqiH,WAAWgD,SAASnhL,EAAMQ,QACrC,GAAIs7D,EAAEqiH,WAAWuB,KAAKtc,EAAM,kBAG1B,OAFA+e,EAAQrmH,EAAEqiH,WAAWiE,eAAetmH,EAAEqiH,WAAWuB,KAAKtc,EAAM,eAC5DtjE,EAAM3zE,OAAOkW,aAA+B,MAAlBriC,EAAMw+C,SAAmBx+C,EAAMy+C,QAAUz+C,EAAMw+C,UAClEx+C,EAAMg+C,SAAWh+C,EAAMm+C,SAAW2hD,EAAM,MAAQqiF,GAASA,EAAMhuK,QAAQ2rF,IAAQ,CAE1F,EAEAy/E,SAAU,SAAUv/K,GAClB,IACEojK,EAAOtnG,EAAEqiH,WAAWgD,SAASnhL,EAAMQ,QACrC,GAAI4iK,EAAK7/J,MAAMsE,QAAUu7J,EAAKif,QAC5B,IACSvmH,EAAEqiH,WAAWmE,UAAUxmH,EAAEqiH,WAAWuB,KAAKtc,EAAM,cAAeA,EAAK7/J,MAAQ6/J,EAAK7/J,MAAMsE,MAAQ,KAAMi0D,EAAEqiH,WAAWoE,iBAAiBnf,MAGvItnG,EAAEqiH,WAAWwD,kBAAkBve,GAC/BtnG,EAAEqiH,WAAWmC,iBAAiBld,GAC9BtnG,EAAEqiH,WAAWkC,kBAAkBjd,GAEnC,CAAE,MAAO5gK,GAAM,CAEjB,OAAO,CACT,EAMAm9K,gBAAiB,SAAUp8K,GAUzB,IAAI6/J,EAAM6Z,EAAYuF,EAAoBC,EAAS55J,EAAQ8yJ,EAAUn0J,GARhC,WADrCjkB,EAAQA,EAAM/C,QAAU+C,GACdu4B,SAASjsB,gBAEjBtM,EAAQu4D,EAAE,QAASv4D,EAAM83B,YAAY,IAEnCygC,EAAEqiH,WAAWC,sBAAsB76K,IAAUu4D,EAAEqiH,WAAWyB,aAAer8K,KAK7E6/J,EAAOtnG,EAAEqiH,WAAWgD,SAAS59K,GACzBu4D,EAAEqiH,WAAWxE,UAAY79G,EAAEqiH,WAAWxE,WAAavW,IACrDtnG,EAAEqiH,WAAWxE,SAASqE,MAAMroI,MAAK,GAAM,GACnCytH,GAAQtnG,EAAEqiH,WAAWtE,oBACvB/9G,EAAEqiH,WAAW0B,gBAAgB/jH,EAAEqiH,WAAWxE,SAASp2K,MAAM,MAKlC,KAD3Bi/K,GADAvF,EAAanhH,EAAEqiH,WAAWuB,KAAKtc,EAAM,eACH6Z,EAAW/5K,MAAMK,EAAO,CAACA,EAAO6/J,IAAS,CAAC,KAI5Ekb,EAAwBlb,EAAKrvG,SAAUyuH,GACvCpf,EAAKif,QAAU,KACfvmH,EAAEqiH,WAAWyB,WAAar8K,EAC1Bu4D,EAAEqiH,WAAWwD,kBAAkBve,GAC3BtnG,EAAEqiH,WAAWrE,YAEfv2K,EAAM3B,MAAQ,IAEXk6D,EAAEqiH,WAAW2C,OAEhBhlH,EAAEqiH,WAAW2C,KAAOhlH,EAAEqiH,WAAWuE,SAASn/K,GAC1Cu4D,EAAEqiH,WAAW2C,KAAK,IAAMv9K,EAAMmiD,cAGhC+8H,GAAU,EACV3mH,EAAEv4D,GAAOgrC,UAAUhS,MAAK,WAEtB,QADAkmJ,GAAuC,UAA5B3mH,EAAEz0D,MAAMmvC,IAAI,YAEzB,IACA3tB,EAAS,CACP0gC,KAAMuS,EAAEqiH,WAAW2C,KAAK,GACxB/7I,IAAK+2B,EAAEqiH,WAAW2C,KAAK,IAEzBhlH,EAAEqiH,WAAW2C,KAAO,KAGpB1d,EAAK4a,MAAM54K,QAGXg+J,EAAK4a,MAAMxnI,IAAI,CACbgO,SAAU,WACVjO,QAAS,QACTxR,IAAK,YAEP+2B,EAAEqiH,WAAWkC,kBAAkBjd,GAI/Bv6I,EAASizC,EAAEqiH,WAAWwE,aAAavf,EAAMv6I,EAAQ45J,GACjDrf,EAAK4a,MAAMxnI,IAAI,CACbgO,SAAUsX,EAAEqiH,WAAWrE,WAAah+G,EAAEilH,QAAU,SAAW0B,EAAU,QAAU,WAC/ElsI,QAAS,OACTgT,KAAM1gC,EAAO0gC,KAAO,KACpBxkB,IAAKlc,EAAOkc,IAAM,OAEfq+H,EAAKib,SACR1C,EAAW7/G,EAAEqiH,WAAWuB,KAAKtc,EAAM,YACnC57I,EAAWs0C,EAAEqiH,WAAWuB,KAAKtc,EAAM,YACnCA,EAAK4a,MAAMxnI,IAAI,UAAWijI,EAAqB39G,EAAEv4D,IAAU,GAC3Du4D,EAAEqiH,WAAWtE,oBAAqB,EAC9B/9G,EAAEyhG,SAAWzhG,EAAEyhG,QAAQF,OAAOse,GAChCvY,EAAK4a,MAAMzmI,KAAKokI,EAAU7/G,EAAEqiH,WAAWuB,KAAKtc,EAAM,eAAgB57I,GAElE47I,EAAK4a,MAAMrC,GAAY,QAAQA,EAAWn0J,EAAW,MAEnDs0C,EAAEqiH,WAAWyE,kBAAkBxf,IACjCA,EAAK7/J,MAAMs3C,QAAQ,SAErBihB,EAAEqiH,WAAWxE,SAAWvW,IAE5B,EAEAid,kBAAmB,SAAUjd,GAC3B/7J,KAAKm3K,QAAU,EACfhF,EAAwBpW,EACxBA,EAAK4a,MAAM54K,QAAQy8C,OAAOx6C,KAAKw7K,cAAczf,IAC7C/7J,KAAKy7K,gBAAgB1f,GACrB,IAAI2f,EACFC,EAAY37K,KAAK47K,mBAAmB7f,GACpC8f,EAAOF,EAAU,GACjB5/H,EAAQ,GACR+/H,EAAa/f,EAAK4a,MAAMn7I,KAAK,IAAMx7B,KAAKkzK,cAAgB,MACxD8C,EAAqBvhH,EAAEqiH,WAAWuB,KAAKtc,EAAM,sBAC3C+f,EAAWtlL,OAAS,GACtBqgL,EAA2Bh7K,MAAMigL,EAAW3hL,IAAI,IAElD4hK,EAAK4a,MAAMtuH,YAAY,qEAAqEtM,MAAM,IAC9F8/H,EAAO,GACT9f,EAAK4a,MAAM1uH,SAAS,uBAAyB4zH,GAAM1sI,IAAI,QAAS4M,EAAQ8/H,EAAO,MAEjF9f,EAAK4a,OAAwB,IAAjBgF,EAAU,IAA6B,IAAjBA,EAAU,GAAW,MAAQ,UAAY,SAAS,uBACpF5f,EAAK4a,OAAO32K,KAAKq4K,KAAKtc,EAAM,SAAW,MAAQ,UAAY,SAAS,qBAChEA,IAAStnG,EAAEqiH,WAAWxE,UAAY79G,EAAEqiH,WAAWtE,oBAAsB/9G,EAAEqiH,WAAWyE,kBAAkBxf,IACtGA,EAAK7/J,MAAMs3C,QAAQ,SAIjBuoH,EAAKggB,YACPL,EAAgB3f,EAAKggB,UACrBviL,YAAW,WAELkiL,IAAkB3f,EAAKggB,WAAahgB,EAAKggB,WAC3ChgB,EAAK4a,MAAMn7I,KAAK,6BAA6BrG,QAAQ0lB,YAAYkhH,EAAKggB,WAExEL,EAAgB3f,EAAKggB,UAAY,IACnC,GAAG,IAED/F,GACFA,EAAmBn6K,MAAMkgK,EAAK7/J,MAAQ6/J,EAAK7/J,MAAM,GAAK,KAAM,CAAC6/J,GAEjE,EAIAwf,kBAAmB,SAAUxf,GAC3B,OAAOA,EAAK7/J,OAAS6/J,EAAK7/J,MAAM2pC,GAAG,cAAgBk2H,EAAK7/J,MAAM2pC,GAAG,eAAiBk2H,EAAK7/J,MAAM2pC,GAAG,SAClG,EAEAy1I,aAAc,SAAUvf,EAAMv6I,EAAQ45J,GACpC,IAAIY,EAAUjgB,EAAK4a,MAAM9f,aACvBolB,EAAWlgB,EAAK4a,MAAM7f,cACtBolB,EAAangB,EAAK7/J,MAAQ6/J,EAAK7/J,MAAM26J,aAAe,EACpDslB,EAAcpgB,EAAK7/J,MAAQ6/J,EAAK7/J,MAAM46J,cAAgB,EACtDslB,EAAYpkL,SAASy+B,gBAAgBmtD,aAAew3F,EAAU,EAAI3mH,EAAEz8D,UAAU+qD,cAC9Es5H,EAAarkL,SAASy+B,gBAAgBorD,cAAgBu5F,EAAU,EAAI3mH,EAAEz8D,UAAU8qD,aAQlF,OAPAthC,EAAO0gC,MAAQliD,KAAKq4K,KAAKtc,EAAM,SAAWigB,EAAUE,EAAa,EACjE16J,EAAO0gC,MAAQk5H,GAAW55J,EAAO0gC,OAAS65G,EAAK7/J,MAAMslB,SAAS0gC,KAAOuS,EAAEz8D,UAAU+qD,aAAe,EAChGvhC,EAAOkc,KAAO09I,GAAW55J,EAAOkc,MAAQq+H,EAAK7/J,MAAMslB,SAASkc,IAAMy+I,EAAc1nH,EAAEz8D,UAAU8qD,YAAc,EAG1GthC,EAAO0gC,MAAQh+C,KAAKqL,IAAIiS,EAAO0gC,KAAM1gC,EAAO0gC,KAAO85H,EAAUI,GAAaA,EAAYJ,EAAU93K,KAAKC,IAAIqd,EAAO0gC,KAAO85H,EAAUI,GAAa,GAC9I56J,EAAOkc,KAAOx5B,KAAKqL,IAAIiS,EAAOkc,IAAKlc,EAAOkc,IAAMu+I,EAAWI,GAAcA,EAAaJ,EAAW/3K,KAAKC,IAAI83K,EAAWE,GAAe,GAC7H36J,CACT,EAEA65J,SAAU,SAAU3+K,GAIlB,IAHA,IAAIygD,EACF4+G,EAAO/7J,KAAK85K,SAASp9K,GACrBq3K,EAAQ/zK,KAAKq4K,KAAKtc,EAAM,SACnBr/J,IAAqB,WAAbA,EAAIzD,MAAsC,IAAjByD,EAAI22B,UAAkBohC,EAAEj2B,KAAKjF,QAAQkqB,OAAO/mD,KAClFA,EAAMA,EAAIq3K,EAAQ,kBAAoB,eAGxC,MAAO,EADP52H,EAAWsX,EAAE/3D,GAAK8kB,UACD0gC,KAAM/E,EAASzf,IAClC,EAIA86I,gBAAiB,SAAUt8K,GACzB,IAAIo4K,EACFn0J,EACAm8J,EACAvG,EACAha,EAAO/7J,KAAKsyK,UACTvW,GAAQ7/J,GAAS6/J,IAAStnG,EAAEx+D,KAAKiG,EAAO,eAGzC8D,KAAKwyK,qBACP8B,EAAWt0K,KAAKq4K,KAAKtc,EAAM,YAC3B57I,EAAWngB,KAAKq4K,KAAKtc,EAAM,YAC3BugB,EAAc,WACZ7nH,EAAEqiH,WAAWyF,YAAYxgB,EAC3B,EAGItnG,EAAEyhG,UAAYzhG,EAAEyhG,QAAQF,OAAOse,IAAa7/G,EAAEyhG,QAAQoe,IACxDvY,EAAK4a,MAAMxmI,KAAKmkI,EAAU7/G,EAAEqiH,WAAWuB,KAAKtc,EAAM,eAAgB57I,EAAUm8J,GAE5EvgB,EAAK4a,MAAmB,cAAbrC,EAA2B,UAAyB,WAAbA,EAAwB,UAAY,QAAQA,EAAWn0J,EAAW,KAAMm8J,GAEvHhI,GACHgI,IAEFt8K,KAAKwyK,oBAAqB,GAC1BuD,EAAU/1K,KAAKq4K,KAAKtc,EAAM,aAExBga,EAAQl6K,MAAMkgK,EAAK7/J,MAAQ6/J,EAAK7/J,MAAM,GAAK,KAAM,CAAC6/J,EAAK7/J,MAAQ6/J,EAAK7/J,MAAMsE,MAAQ,GAAIu7J,IAExF/7J,KAAKu4K,WAAa,KACdv4K,KAAKyyK,YACPzyK,KAAKw5K,aAAarqI,IAAI,CACpBgO,SAAU,WACV+E,KAAM,IACNxkB,IAAK,WAEH+2B,EAAEilH,UACJjlH,EAAE+nH,YACF/nH,EAAE,QAAQja,OAAOx6C,KAAK22K,SAG1B32K,KAAKyyK,WAAY,EAErB,EAEA8J,YAAa,SAAUxgB,GACrBA,EAAK4a,MAAMtuH,YAAYroD,KAAK8yK,cAAc//H,IAAI,0BAChD,EAEA0pI,oBAAqB,SAAU9jL,GAC7B,GAAK87D,EAAEqiH,WAAWxE,SAAlB,CAGA,IAAIj5F,EAAU5kB,EAAE97D,EAAMQ,QACpB4iK,EAAOtnG,EAAEqiH,WAAWgD,SAASzgG,EAAQ,KACnCA,EAAQ,GAAGt9C,KAAO04B,EAAEqiH,WAAWpE,YAAwE,IAA1Dr5F,EAAQnyC,QAAQ,IAAMutB,EAAEqiH,WAAWpE,YAAYl8K,QAAiB6iF,EAAQ5wB,SAASgM,EAAEqiH,WAAWI,kBAAqB79F,EAAQtyC,QAAQ,IAAM0tB,EAAEqiH,WAAWjE,eAAer8K,SAAUi+D,EAAEqiH,WAAWtE,oBAAwB/9G,EAAEqiH,WAAWrE,WAAah+G,EAAEilH,YAAYrgG,EAAQ5wB,SAASgM,EAAEqiH,WAAWI,kBAAoBziH,EAAEqiH,WAAWxE,WAAavW,IACvXtnG,EAAEqiH,WAAW0B,iBAJf,CAMF,EAEAmC,YAAa,SAAU5+I,EAAIva,EAAQiD,GACjC,IAAItrB,EAASs7D,EAAE14B,GACbggI,EAAO/7J,KAAK85K,SAAS3gL,EAAO,IAC1B6G,KAAK+2K,sBAAsB59K,EAAO,MAGtC6G,KAAK08K,gBAAgB3gB,EAAMv6I,EAAQiD,GACnCzkB,KAAKg5K,kBAAkBjd,GACzB,EAEA8e,WAAY,SAAU9+I,GACpB,IAAI5xB,EACFhR,EAASs7D,EAAE14B,GACXggI,EAAO/7J,KAAK85K,SAAS3gL,EAAO,IAC1B6G,KAAKq4K,KAAKtc,EAAM,gBAAkBA,EAAK4gB,YACzC5gB,EAAK2b,YAAc3b,EAAK4gB,WACxB5gB,EAAK8b,UAAY9b,EAAK4b,cAAgB5b,EAAK6gB,aAC3C7gB,EAAK+b,SAAW/b,EAAK6b,aAAe7b,EAAK8gB,cAEzC1yK,EAAO,IAAInN,KACX++J,EAAK2b,YAAcvtK,EAAKoS,UACxBw/I,EAAK8b,UAAY9b,EAAK4b,cAAgBxtK,EAAKmS,WAC3Cy/I,EAAK+b,SAAW/b,EAAK6b,aAAeztK,EAAKuG,eAE3C1Q,KAAK88K,cAAc/gB,GACnB/7J,KAAK26K,YAAYxhL,EACnB,EAEA4jL,iBAAkB,SAAUhhJ,EAAIU,EAAQhY,GACtC,IAAItrB,EAASs7D,EAAE14B,GACbggI,EAAO/7J,KAAK85K,SAAS3gL,EAAO,IAC9B4iK,EAAK,YAAyB,MAAXt3I,EAAiB,QAAU,SAAWs3I,EAAK,QAAqB,MAAXt3I,EAAiB,QAAU,SAAWpU,SAASosB,EAAO7G,QAAQ6G,EAAOmF,eAAernC,MAAO,IACnKyF,KAAK88K,cAAc/gB,GACnB/7J,KAAK26K,YAAYxhL,EACnB,EAEAuhL,WAAY,SAAU3+I,EAAI7xB,EAAOX,EAAM4nC,GACrC,IAAI4qH,EACF5iK,EAASs7D,EAAE14B,GACT04B,EAAEtjB,GAAIsX,SAASzoD,KAAKgzK,qBAAuBhzK,KAAK+2K,sBAAsB59K,EAAO,OAGjF4iK,EAAO/7J,KAAK85K,SAAS3gL,EAAO,KACvBu+K,YAAc3b,EAAK4gB,WAAatsK,SAASokD,EAAE,IAAKtjB,GAAIxS,KAAK,cAC9Do9H,EAAK4b,cAAgB5b,EAAK6gB,aAAe1yK,EACzC6xJ,EAAK6b,aAAe7b,EAAK8gB,YAActzK,EACvCvJ,KAAKg9K,YAAYjhJ,EAAI/7B,KAAK44K,YAAY7c,EAAMA,EAAK4gB,WAAY5gB,EAAK6gB,aAAc7gB,EAAK8gB,cACvF,EAEAjC,WAAY,SAAU7+I,GACpB,IAAI5iC,EAASs7D,EAAE14B,GACf/7B,KAAKg9K,YAAY7jL,EAAQ,GAC3B,EAEA6jL,YAAa,SAAUjhJ,EAAIy+I,GACzB,IAAI3E,EACF18K,EAASs7D,EAAE14B,GACXggI,EAAO/7J,KAAK85K,SAAS3gL,EAAO,IAC9BqhL,EAAqB,MAAXA,EAAkBA,EAAUx6K,KAAK44K,YAAY7c,GACnDA,EAAK7/J,OACP6/J,EAAK7/J,MAAMsE,IAAIg6K,GAEjBx6K,KAAKi5K,iBAAiBld,IACtB8Z,EAAW71K,KAAKq4K,KAAKtc,EAAM,aAEzB8Z,EAASh6K,MAAMkgK,EAAK7/J,MAAQ6/J,EAAK7/J,MAAM,GAAK,KAAM,CAACs+K,EAASze,IACnDA,EAAK7/J,OACd6/J,EAAK7/J,MAAMs3C,QAAQ,UAGjBuoH,EAAKib,OACPh3K,KAAKg5K,kBAAkBjd,IAEvB/7J,KAAKw4K,kBACLx4K,KAAKu4K,WAAaxc,EAAK7/J,MAAM,GACA,kBAAlB6/J,EAAK7/J,MAAM,IACpB6/J,EAAK7/J,MAAMs3C,QAAQ,SAGrBxzC,KAAKu4K,WAAa,KAEtB,EAEAU,iBAAkB,SAAUld,GAC1B,IAAIua,EACFnsK,EACAqwK,EACAnE,EAAWr2K,KAAKq4K,KAAKtc,EAAM,YACzBsa,IAEFC,EAAYt2K,KAAKq4K,KAAKtc,EAAM,cAAgB/7J,KAAKq4K,KAAKtc,EAAM,cAC5D5xJ,EAAOnK,KAAKu6K,SAASxe,GACrBye,EAAUx6K,KAAKi9K,WAAW3G,EAAWnsK,EAAMnK,KAAKk7K,iBAAiBnf,IACjEtnG,EAAEz8D,UAAUwjC,KAAK66I,GAAU71K,IAAIg6K,GAEnC,EAKA0C,WAAY,SAAU/yK,GACpB,IAAIyJ,EAAMzJ,EAAKuK,SACf,MAAO,CAACd,EAAM,GAAKA,EAAM,EAAG,GAC9B,EAKA2hK,YAAa,SAAUprK,GACrB,IAAI2b,EACFq3J,EAAY,IAAIngL,KAAKmN,EAAK3K,WAO5B,OAJA29K,EAAUxE,QAAQwE,EAAU5gK,UAAY,GAAK4gK,EAAUzoK,UAAY,IACnEoR,EAAOq3J,EAAU39K,UACjB29K,EAAU9tK,SAAS,GACnB8tK,EAAUxE,QAAQ,GACXz0K,KAAKwF,MAAMxF,KAAK+c,OAAO6E,EAAOq3J,GAAa,OAAY,GAAK,CACrE,EAcAlC,UAAW,SAAUx9K,EAAQlD,EAAOmyD,GAClC,GAAc,MAAVjvD,GAA2B,MAATlD,EACpB,KAAM,oBAGR,GAAc,MADdA,EAAyB,kBAAVA,EAAqBA,EAAM6B,WAAa7B,EAAQ,IAE7D,OAAO,KAET,IAAI6iL,EACFC,EACA19H,EAaAx1C,EAZAmzK,EAAS,EACTC,GAAuB7wH,EAAWA,EAAS8oH,gBAAkB,OAASx1K,KAAKo0K,UAAUoB,gBACrFA,EAAiD,kBAAxB+H,EAAmCA,GAAsB,IAAIvgL,MAAO0T,cAAgB,IAAML,SAASktK,EAAqB,IACjJ5J,GAAiBjnH,EAAWA,EAASinH,cAAgB,OAAS3zK,KAAKo0K,UAAUT,cAC7ED,GAAYhnH,EAAWA,EAASgnH,SAAW,OAAS1zK,KAAKo0K,UAAUV,SACnED,GAAmB/mH,EAAWA,EAAS+mH,gBAAkB,OAASzzK,KAAKo0K,UAAUX,gBACjFD,GAAc9mH,EAAWA,EAAS8mH,WAAa,OAASxzK,KAAKo0K,UAAUZ,WACvEjqK,GAAQ,EACRW,GAAS,EACT0J,GAAO,EACP1C,GAAO,EACPssK,GAAU,EAGVC,EAAY,SAAUt4K,GACpB,IAAI6c,EAAUo7J,EAAU,EAAI3/K,EAAOjH,QAAUiH,EAAOuY,OAAOonK,EAAU,KAAOj4K,EAI5E,OAHI6c,GACFo7J,IAEKp7J,CACT,EAEA07J,EAAY,SAAUv4K,GACpB,IAAIw4K,EAAYF,EAAUt4K,GACxBw2D,EAAiB,MAAVx2D,EAAgB,GAAe,MAAVA,EAAgB,GAAe,MAAVA,GAAiBw4K,EAAY,EAAc,MAAVx4K,EAAgB,EAAI,EAEtGy4K,EAAS,IAAIn7K,OAAO,SADA,MAAV0C,EAAgBw2D,EAAO,GACO,IAAMA,EAAO,KACrD9mC,EAAMt6B,EAAM4vH,UAAUmzD,GAAQn4K,MAAMy4K,GACtC,IAAK/oJ,EACH,KAAM,8BAAgCyoJ,EAGxC,OADAA,GAAUzoJ,EAAI,GAAGr+B,OACV6Z,SAASwkB,EAAI,GAAI,GAC1B,EAEAorH,EAAU,SAAU96I,EAAO04K,EAAYC,GACrC,IAAI9vJ,GAAS,EACXvW,EAAQg9C,EAAEx3D,IAAIwgL,EAAUt4K,GAAS24K,EAAYD,GAAY,SAAUj2I,EAAGhrC,GACpE,MAAO,CAAC,CAACA,EAAGgrC,GACd,IAAGv+B,MAAK,SAAU9M,EAAGC,GACnB,QAASD,EAAE,GAAG/F,OAASgG,EAAE,GAAGhG,OAC9B,IASF,GARAi+D,EAAEv/B,KAAKzd,GAAO,SAAUnhB,EAAGg9I,GACzB,IAAIj6I,EAAOi6I,EAAK,GAChB,GAAI/4I,EAAMgK,OAAO+4K,EAAQjkL,EAAK7C,QAAQgS,gBAAkBnP,EAAKmP,cAG3D,OAFAwlB,EAAQslH,EAAK,GACbgqC,GAAUjkL,EAAK7C,QACR,CAEX,KACe,IAAXw3B,EACF,OAAOA,EAAQ,EAEf,KAAM,4BAA8BsvJ,CAExC,EAEAS,EAAe,WACb,GAAIxjL,EAAMyb,OAAOsnK,KAAY7/K,EAAOuY,OAAOonK,GACzC,KAAM,kCAAoCE,EAE5CA,GACF,EACF,IAAKF,EAAU,EAAGA,EAAU3/K,EAAOjH,OAAQ4mL,IACzC,GAAII,EAC6B,MAA3B//K,EAAOuY,OAAOonK,IAAqBK,EAAU,KAG/CM,IAFAP,GAAU,OAKZ,OAAQ//K,EAAOuY,OAAOonK,IACpB,IAAK,IACHxpK,EAAM8pK,EAAU,KAChB,MACF,IAAK,IACHz9B,EAAQ,IAAK0zB,EAAeD,GAC5B,MACF,IAAK,IACHxiK,EAAMwsK,EAAU,KAChB,MACF,IAAK,IACHxzK,EAAQwzK,EAAU,KAClB,MACF,IAAK,IACHxzK,EAAQ+1I,EAAQ,IAAKwzB,EAAiBD,GACtC,MACF,IAAK,IACHjqK,EAAOm0K,EAAU,KACjB,MACF,IAAK,IAEHn0K,GADAY,EAAO,IAAInN,KAAK0gL,EAAU,OACdhtK,cACZxG,EAAQC,EAAKmS,WAAa,EAC1B1I,EAAMzJ,EAAKoS,UACX,MACF,IAAK,IAEHhT,GADAY,EAAO,IAAInN,MAAM0gL,EAAU,KAAO19K,KAAKg+K,cAAgB,MAC3CttK,cACZxG,EAAQC,EAAKmS,WAAa,EAC1B1I,EAAMzJ,EAAKoS,UACX,MACF,IAAK,IACCkhK,EAAU,KACZM,IAEAP,GAAU,EAEZ,MACF,QACEO,IAIR,GAAIT,EAAS/iL,EAAM/D,SACjBmpD,EAAQplD,EAAMgK,OAAO+4K,IAChB,OAAOz3K,KAAK85C,IACf,KAAM,4CAA8CA,EAQxD,IALc,IAAVp2C,EACFA,GAAO,IAAIvM,MAAO0T,cACTnH,EAAO,MAChBA,IAAQ,IAAIvM,MAAO0T,eAAgB,IAAI1T,MAAO0T,cAAgB,KAAOnH,GAAQisK,EAAkB,GAAK,MAElGtkK,GAAO,EAGT,IAFAhH,EAAQ,EACR0J,EAAM1C,IACH,CAED,GAAI0C,IADJypK,EAAMr9K,KAAKi+K,gBAAgB10K,EAAMW,EAAQ,IAEvC,MAEFA,IACA0J,GAAOypK,CACT,CAGF,IADAlzK,EAAOnK,KAAKk+K,sBAAsB,IAAIlhL,KAAKuM,EAAMW,EAAQ,EAAG0J,KACnDlD,gBAAkBnH,GAAQY,EAAKmS,WAAa,IAAMpS,GAASC,EAAKoS,YAAc3I,EACrF,KAAM,eAGR,OAAOzJ,CACT,EAEAg0K,KAAM,WAENC,OAAQ,aACR5gK,SAAU,WACV6gK,QAAS,WACTC,QAAS,aACTC,SAAU,WACVC,SAAU,YACV/gK,SAAU,YACVghK,IAAK,WAELC,MAAO,IACPC,UAAW,IACXC,IAAK,WAGLZ,aAA4G,IAA7F,OAAmB95K,KAAKwF,MAAM,OAAYxF,KAAKwF,MAAM,MAAcxF,KAAKwF,MAAM,QAAoB,GAAK,GAAK,IA6B3HuzK,WAAY,SAAUx/K,EAAQ0M,EAAMuiD,GAClC,IAAKviD,EACH,MAAO,GAET,IAAIizK,EACFzJ,GAAiBjnH,EAAWA,EAASinH,cAAgB,OAAS3zK,KAAKo0K,UAAUT,cAC7ED,GAAYhnH,EAAWA,EAASgnH,SAAW,OAAS1zK,KAAKo0K,UAAUV,SACnED,GAAmB/mH,EAAWA,EAAS+mH,gBAAkB,OAASzzK,KAAKo0K,UAAUX,gBACjFD,GAAc9mH,EAAWA,EAAS8mH,WAAa,OAASxzK,KAAKo0K,UAAUZ,WAEvEiK,EAAY,SAAUt4K,GACpB,IAAI6c,EAAUo7J,EAAU,EAAI3/K,EAAOjH,QAAUiH,EAAOuY,OAAOonK,EAAU,KAAOj4K,EAI5E,OAHI6c,GACFo7J,IAEKp7J,CACT,EAEA68J,EAAe,SAAU15K,EAAO5K,EAAO0F,GACrC,IAAI40B,EAAM,GAAKt6B,EACf,GAAIkjL,EAAUt4K,GACZ,KAAO0vB,EAAIr+B,OAASyJ,GAClB40B,EAAM,IAAMA,EAGhB,OAAOA,CACT,EAEAiqJ,EAAa,SAAU35K,EAAO5K,EAAOsjL,EAAYC,GAC/C,OAAOL,EAAUt4K,GAAS24K,EAAUvjL,GAASsjL,EAAWtjL,EAC1D,EACAoJ,EAAS,GACT65K,GAAU,EACZ,GAAIrzK,EACF,IAAKizK,EAAU,EAAGA,EAAU3/K,EAAOjH,OAAQ4mL,IACzC,GAAII,EAC6B,MAA3B//K,EAAOuY,OAAOonK,IAAqBK,EAAU,KAG/C95K,GAAUlG,EAAOuY,OAAOonK,GAFxBI,GAAU,OAKZ,OAAQ//K,EAAOuY,OAAOonK,IACpB,IAAK,IACHz5K,GAAUk7K,EAAa,IAAK10K,EAAKoS,UAAW,GAC5C,MACF,IAAK,IACH5Y,GAAUm7K,EAAW,IAAK30K,EAAKuK,SAAUi/J,EAAeD,GACxD,MACF,IAAK,IACH/vK,GAAUk7K,EAAa,IAAK36K,KAAK+c,OAAO,IAAIjkB,KAAKmN,EAAKuG,cAAevG,EAAKmS,WAAYnS,EAAKoS,WAAW/c,UAAY,IAAIxC,KAAKmN,EAAKuG,cAAe,EAAG,GAAGlR,WAAa,OAAW,GAC7K,MACF,IAAK,IACHmE,GAAUk7K,EAAa,IAAK10K,EAAKmS,WAAa,EAAG,GACjD,MACF,IAAK,IACH3Y,GAAUm7K,EAAW,IAAK30K,EAAKmS,WAAYm3J,EAAiBD,GAC5D,MACF,IAAK,IACH7vK,GAAU85K,EAAU,KAAOtzK,EAAKuG,eAAiBvG,EAAKuG,cAAgB,IAAM,GAAK,IAAM,IAAMvG,EAAKuG,cAAgB,IAClH,MACF,IAAK,IACH/M,GAAUwG,EAAK3K,UACf,MACF,IAAK,IACHmE,GAA2B,IAAjBwG,EAAK3K,UAAoBQ,KAAKg+K,aACxC,MACF,IAAK,IACCP,EAAU,KACZ95K,GAAU,IAEV65K,GAAU,EAEZ,MACF,QACE75K,GAAUlG,EAAOuY,OAAOonK,GAKlC,OAAOz5K,CACT,EAEAo3K,eAAgB,SAAUt9K,GACxB,IAAI2/K,EACFtC,EAAQ,GACR0C,GAAU,EAEVC,EAAY,SAAUt4K,GACpB,IAAI6c,EAAUo7J,EAAU,EAAI3/K,EAAOjH,QAAUiH,EAAOuY,OAAOonK,EAAU,KAAOj4K,EAI5E,OAHI6c,GACFo7J,IAEKp7J,CACT,EACF,IAAKo7J,EAAU,EAAGA,EAAU3/K,EAAOjH,OAAQ4mL,IACzC,GAAII,EAC6B,MAA3B//K,EAAOuY,OAAOonK,IAAqBK,EAAU,KAG/C3C,GAASr9K,EAAOuY,OAAOonK,GAFvBI,GAAU,OAKZ,OAAQ//K,EAAOuY,OAAOonK,IACpB,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACHtC,GAAS,aACT,MACF,IAAK,IACL,IAAK,IACH,OAAO,KAET,IAAK,IACC2C,EAAU,KACZ3C,GAAS,IAET0C,GAAU,EAEZ,MACF,QACE1C,GAASr9K,EAAOuY,OAAOonK,GAI/B,OAAOtC,CACT,EAEAzC,KAAM,SAAUtc,EAAM1iK,GACpB,YAA+BE,IAAxBwiK,EAAKrvG,SAASrzD,GAAsB0iK,EAAKrvG,SAASrzD,GAAQ2G,KAAKo0K,UAAU/6K,EAClF,EAEAihL,kBAAmB,SAAUve,EAAMse,GACjC,GAAIte,EAAK7/J,MAAMsE,QAAUu7J,EAAKif,QAA9B,CAGA,IAAI/gK,EAAaja,KAAKq4K,KAAKtc,EAAM,cAC/BnuI,EAAQmuI,EAAKif,QAAUjf,EAAK7/J,MAAQ6/J,EAAK7/J,MAAMsE,MAAQ,KACvDg0K,EAAcx0K,KAAK+4K,gBAAgBhd,GACnC5xJ,EAAOqqK,EACP9nH,EAAW1sD,KAAKk7K,iBAAiBnf,GACnC,IACE5xJ,EAAOnK,KAAKi7K,UAAUhhK,EAAY2T,EAAO8+B,IAAa8nH,CACxD,CAAE,MAAO77K,GACPi1B,EAAQysJ,EAAY,GAAKzsJ,CAC3B,CACAmuI,EAAK2b,YAAcvtK,EAAKoS,UACxBw/I,EAAK8b,UAAY9b,EAAK4b,cAAgBxtK,EAAKmS,WAC3Cy/I,EAAK+b,SAAW/b,EAAK6b,aAAeztK,EAAKuG,cACzCqrJ,EAAK4gB,WAAa/uJ,EAAQzjB,EAAKoS,UAAY,EAC3Cw/I,EAAK6gB,aAAehvJ,EAAQzjB,EAAKmS,WAAa,EAC9Cy/I,EAAK8gB,YAAcjvJ,EAAQzjB,EAAKuG,cAAgB,EAChD1Q,KAAK08K,gBAAgB3gB,EAjBrB,CAkBF,EAEAgd,gBAAiB,SAAUhd,GACzB,OAAO/7J,KAAK++K,gBAAgBhjB,EAAM/7J,KAAKg/K,eAAejjB,EAAM/7J,KAAKq4K,KAAKtc,EAAM,eAAgB,IAAI/+J,MAClG,EAEAgiL,eAAgB,SAAUjjB,EAAM5xJ,EAAMqqK,GACpC,IAAIyK,EAAgB,SAAUz9J,GAC1B,IAAIrX,EAAO,IAAInN,KAEf,OADAmN,EAAKwuK,QAAQxuK,EAAKoS,UAAYiF,GACvBrX,CACT,EACA+0K,EAAe,SAAU19J,GACvB,IACE,OAAOizC,EAAEqiH,WAAWmE,UAAUxmH,EAAEqiH,WAAWuB,KAAKtc,EAAM,cAAev6I,EAAQizC,EAAEqiH,WAAWoE,iBAAiBnf,GAC7G,CAAE,MAAOxkK,GAGT,CAOA,IANA,IAAI4S,GAAQqX,EAAOhZ,cAAcrD,MAAM,MAAQsvD,EAAEqiH,WAAWyD,SAASxe,GAAQ,OAAS,IAAI/+J,KACxFuM,EAAOY,EAAKuG,cACZxG,EAAQC,EAAKmS,WACb1I,EAAMzJ,EAAKoS,UACXgjB,EAAU,uCACVvd,EAAUud,EAAQnlB,KAAKoH,GAClBQ,GAAS,CACd,OAAQA,EAAQ,IAAM,KACpB,IAAK,IACL,IAAK,IACHpO,GAAOvD,SAAS2R,EAAQ,GAAI,IAC5B,MACF,IAAK,IACL,IAAK,IACHpO,GAAkC,EAA3BvD,SAAS2R,EAAQ,GAAI,IAC5B,MACF,IAAK,IACL,IAAK,IACH9X,GAASmG,SAAS2R,EAAQ,GAAI,IAC9BpO,EAAM1P,KAAKqL,IAAIqE,EAAK6gD,EAAEqiH,WAAWmH,gBAAgB10K,EAAMW,IACvD,MACF,IAAK,IACL,IAAK,IACHX,GAAQ8G,SAAS2R,EAAQ,GAAI,IAC7BpO,EAAM1P,KAAKqL,IAAIqE,EAAK6gD,EAAEqiH,WAAWmH,gBAAgB10K,EAAMW,IAG3D8X,EAAUud,EAAQnlB,KAAKoH,EACzB,CACA,OAAO,IAAIxkB,KAAKuM,EAAMW,EAAO0J,EAC/B,EACAurK,EAAkB,MAARh1K,GAAyB,KAATA,EAAcqqK,EAA8B,kBAATrqK,EAAoB+0K,EAAa/0K,GAAwB,kBAATA,EAAoB7K,MAAM6K,GAAQqqK,EAAcyK,EAAc90K,GAAQ,IAAInN,KAAKmN,EAAK3K,WAQnM,OAPA2/K,EAAUA,GAAkC,iBAAvBA,EAAQ/iL,WAAgCo4K,EAAc2K,KAEzEA,EAAQC,SAAS,GACjBD,EAAQE,WAAW,GACnBF,EAAQG,WAAW,GACnBH,EAAQI,gBAAgB,IAEnBv/K,KAAKk+K,sBAAsBiB,EACpC,EAQAjB,sBAAuB,SAAU/zK,GAC/B,OAAKA,GAGLA,EAAKi1K,SAASj1K,EAAKq1K,WAAa,GAAKr1K,EAAKq1K,WAAa,EAAI,GACpDr1K,GAHE,IAIX,EAEA2uK,SAAU,SAAU/c,EAAM5xJ,EAAMs1K,GAC9B,IAAIvgH,GAAS/0D,EACXu1K,EAAY3jB,EAAK4b,cACjBgI,EAAW5jB,EAAK6b,aAChBuH,EAAUn/K,KAAK++K,gBAAgBhjB,EAAM/7J,KAAKg/K,eAAejjB,EAAM5xJ,EAAM,IAAInN,OAC3E++J,EAAK2b,YAAc3b,EAAK4gB,WAAawC,EAAQ5iK,UAC7Cw/I,EAAK8b,UAAY9b,EAAK4b,cAAgB5b,EAAK6gB,aAAeuC,EAAQ7iK,WAClEy/I,EAAK+b,SAAW/b,EAAK6b,aAAe7b,EAAK8gB,YAAcsC,EAAQzuK,cAC1DgvK,IAAc3jB,EAAK4b,eAAiBgI,IAAa5jB,EAAK6b,cAAkB6H,GAC3Ez/K,KAAK88K,cAAc/gB,GAErB/7J,KAAK08K,gBAAgB3gB,GACjBA,EAAK7/J,OACP6/J,EAAK7/J,MAAMsE,IAAI0+D,EAAQ,GAAKl/D,KAAK44K,YAAY7c,GAEjD,EAEAwe,SAAU,SAAUxe,GAElB,OADiBA,EAAK8gB,aAAe9gB,EAAK7/J,OAA8B,KAArB6/J,EAAK7/J,MAAMsE,MAAe,KAAOR,KAAKk+K,sBAAsB,IAAIlhL,KAAK++J,EAAK8gB,YAAa9gB,EAAK6gB,aAAc7gB,EAAK4gB,YAEpK,EAIAlB,gBAAiB,SAAU1f,GACzB,IAAIoa,EAAan2K,KAAKq4K,KAAKtc,EAAM,cAC/BhgI,EAAK,IAAMggI,EAAKhgI,GAAG32B,QAAQ,QAAS,MACtC22J,EAAK4a,MAAMn7I,KAAK,kBAAkBv+B,KAAI,WACpC,IAAIstC,EAAU,CACZ5D,KAAM,WACJ8tB,EAAEqiH,WAAW6D,YAAY5+I,GAAKo6I,EAAY,IAC5C,EACAx+J,KAAM,WACJ88C,EAAEqiH,WAAW6D,YAAY5+I,GAAKo6I,EAAY,IAC5C,EACAhmI,KAAM,WACJskB,EAAEqiH,WAAW0B,iBACf,EACAoH,MAAO,WACLnrH,EAAEqiH,WAAW+D,WAAW9+I,EAC1B,EACA8jJ,UAAW,WAET,OADAprH,EAAEqiH,WAAW4D,WAAW3+I,GAAK/7B,KAAK+zB,aAAa,eAAgB/zB,KAAK+zB,aAAa,aAAc/zB,OACxF,CACT,EACA8/K,YAAa,WAEX,OADArrH,EAAEqiH,WAAWiG,iBAAiBhhJ,EAAI/7B,KAAM,MACjC,CACT,EACA+/K,WAAY,WAEV,OADAtrH,EAAEqiH,WAAWiG,iBAAiBhhJ,EAAI/7B,KAAM,MACjC,CACT,GAEFy0D,EAAEz0D,MAAM2yC,GAAG3yC,KAAK+zB,aAAa,cAAewW,EAAQvqC,KAAK+zB,aAAa,iBACxE,GACF,EAEAynJ,cAAe,SAAUzf,GACvB,IAAIikB,EACF3M,EACA1sI,EACA2sI,EACA37J,EACA47J,EACA0M,EACAC,EACAC,EACArM,EACAuB,EACA3B,EACAE,EACAJ,EACAC,EACAkC,EACAR,EACAC,EACAZ,EACA16H,EACA7oC,EACAmvK,EACAC,EACApvI,EACAqvI,EACAC,EACAC,EACAxvI,EACAp9B,EACAxJ,EACAq2K,EACAC,EACAC,EACAC,EACAC,EACArvI,EACAsvI,EACAC,EACAC,EACAC,EAAW,IAAIjkL,KACf4iL,EAAQ5/K,KAAKk+K,sBAAsB,IAAIlhL,KAAKikL,EAASvwK,cAAeuwK,EAAS3kK,WAAY2kK,EAAS1kK,YAElGw3J,EAAQ/zK,KAAKq4K,KAAKtc,EAAM,SACxBya,EAAkBx2K,KAAKq4K,KAAKtc,EAAM,mBAClC8Y,EAAmB70K,KAAKq4K,KAAKtc,EAAM,oBACnC+Y,EAAyB90K,KAAKq4K,KAAKtc,EAAM,0BACzC4f,EAAY37K,KAAK47K,mBAAmB7f,GACpCma,EAAmBl2K,KAAKq4K,KAAKtc,EAAM,oBACnCoa,EAAan2K,KAAKq4K,KAAKtc,EAAM,cAC7BmlB,EAAgC,IAAjBvF,EAAU,IAA6B,IAAjBA,EAAU,GAC/Cl/J,EAAczc,KAAKk+K,sBAAuBniB,EAAK4gB,WAAoC,IAAI3/K,KAAK++J,EAAK8gB,YAAa9gB,EAAK6gB,aAAc7gB,EAAK4gB,YAA1E,IAAI3/K,KAAK,KAAM,EAAG,IAC9Ey4K,EAAUz1K,KAAKi6K,eAAele,EAAM,OACpC2Z,EAAU11K,KAAKi6K,eAAele,EAAM,OACpC8b,GAAY9b,EAAK8b,UAAY3B,EAC7B4B,GAAW/b,EAAK+b,SAKlB,GAJID,GAAY,IACdA,IAAa,GACbC,MAEEpC,EAGF,IAFAsK,EAAUhgL,KAAKk+K,sBAAsB,IAAIlhL,KAAK04K,EAAQhlK,cAAeglK,EAAQp5J,WAAaq/J,EAAU,GAAKA,EAAU,GAAK,EAAGjG,EAAQn5J,YACnIyjK,EAAUvK,GAAWuK,EAAUvK,EAAUA,EAAUuK,EAC5ChgL,KAAKk+K,sBAAsB,IAAIlhL,KAAK86K,GAAUD,GAAW,IAAMmI,KACpEnI,GACgB,IACdA,GAAY,GACZC,MAyEN,IArEA/b,EAAK8b,UAAYA,GACjB9b,EAAK+b,SAAWA,GAChBzE,EAAWrzK,KAAKq4K,KAAKtc,EAAM,YAC3BsX,EAAYyB,EAAoC90K,KAAKi9K,WAAW5J,EAAUrzK,KAAKk+K,sBAAsB,IAAIlhL,KAAK86K,GAAUD,GAAY1B,EAAY,IAAKn2K,KAAKk7K,iBAAiBnf,IAAtIsX,EAEnC1sI,EADE3mC,KAAKmhL,gBAAgBplB,GAAO,EAAG+b,GAAUD,IACpCpjH,EAAE,OAAO91B,KAAK,CACnB,MAAS,mCACT,eAAgB,OAChB,aAAc,QACdopD,MAAOsrF,IACN74H,OAAOia,EAAE,UAAUxM,SAAS,oCAAsC8rH,EAAQ,IAAM,MAAMjgJ,KAAKu/I,IAAW,GAAG5jE,UACnGolE,EACF,GAEApgH,EAAE,OAAO91B,KAAK,CACnB,MAAS,qDACTopD,MAAOsrF,IACN74H,OAAOia,EAAE,UAAUxM,SAAS,oCAAsC8rH,EAAQ,IAAM,MAAMjgJ,KAAKu/I,IAAW,GAAG5jE,UAE9G6jE,EAAWtzK,KAAKq4K,KAAKtc,EAAM,YAC3BuX,EAAYwB,EAAoC90K,KAAKi9K,WAAW3J,EAAUtzK,KAAKk+K,sBAAsB,IAAIlhL,KAAK86K,GAAUD,GAAY1B,EAAY,IAAKn2K,KAAKk7K,iBAAiBnf,IAAtIuX,EAEnC37J,EADE3X,KAAKmhL,gBAAgBplB,EAAM,EAAI+b,GAAUD,IACpCpjH,EAAE,OAAO91B,KAAK,CACnB,MAAS,mCACT,eAAgB,OAChB,aAAc,QACdopD,MAAOurF,IACN94H,OAAOia,EAAE,UAAUxM,SAAS,oCAAsC8rH,EAAQ,IAAM,MAAMjgJ,KAAKw/I,IAAW,GAAG7jE,UACnGolE,EACF,GAEApgH,EAAE,OAAO91B,KAAK,CACnB,MAAS,qDACTopD,MAAOurF,IACN94H,OAAOia,EAAE,UAAU91B,KAAK,QAAS,oCAAsCo1I,EAAQ,IAAM,MAAMjgJ,KAAKw/I,IAAW,GAAG7jE,UAEnH8jE,EAAcvzK,KAAKq4K,KAAKtc,EAAM,eAC9BkkB,EAAWjgL,KAAKq4K,KAAKtc,EAAM,gBAAkBA,EAAK4gB,WAAalgK,EAAcmjK,EAC7ErM,EAAeuB,EAAuC90K,KAAKi9K,WAAW1J,EAAa0M,EAAUjgL,KAAKk7K,iBAAiBnf,IAA3EwX,EACxC2M,EAAW,GACNnkB,EAAKib,SACRkJ,EAAWzrH,EAAE,YAAY91B,KAAK,CAC5B1lC,KAAM,SACN,MAAS,yEACT,eAAgB,OAChB,aAAc,UACb66B,KAAK9zB,KAAKq4K,KAAKtc,EAAM,cAAc,GAAGtsD,WAE3C0wE,EAAc,GACV3J,IACF2J,EAAc1rH,EAAE,4DAA4Dja,OAAOu5H,EAAQmM,EAAW,IAAI1lI,OAAOx6C,KAAKohL,WAAWrlB,EAAMkkB,GAAYxrH,EAAE,YAAY91B,KAAK,CACpK1lC,KAAM,SACN,MAAS,6EACT,eAAgB,QAChB,aAAc,UACb66B,KAAKy/I,GAAe,IAAI/4H,OAAOu5H,EAAQ,GAAKmM,GAAU,GAAGzwE,WAE9DqkE,EAAWzjK,SAASrQ,KAAKq4K,KAAKtc,EAAM,YAAa,IACjD+X,EAAWx0K,MAAMw0K,GAAY,EAAIA,EACjCuB,EAAWr1K,KAAKq4K,KAAKtc,EAAM,YAC3B2X,EAAW1zK,KAAKq4K,KAAKtc,EAAM,YAC3B6X,EAAc5zK,KAAKq4K,KAAKtc,EAAM,eAC9ByX,EAAaxzK,KAAKq4K,KAAKtc,EAAM,cAC7B0X,EAAkBzzK,KAAKq4K,KAAKtc,EAAM,mBAClC4Z,EAAgB31K,KAAKq4K,KAAKtc,EAAM,iBAChCoZ,EAAkBn1K,KAAKq4K,KAAKtc,EAAM,mBAClCqZ,EAAoBp1K,KAAKq4K,KAAKtc,EAAM,qBACpCyY,EAAcx0K,KAAK+4K,gBAAgBhd,GACnCjiH,EAAO,GACFsmI,EAAM,EAAGA,EAAMzE,EAAU,GAAIyE,IAAO,CAGvC,IAFAC,EAAQ,GACRrgL,KAAKm3K,QAAU,EACVlmI,EAAM,EAAGA,EAAM0qI,EAAU,GAAI1qI,IAAO,CAIvC,GAHAqvI,EAAetgL,KAAKk+K,sBAAsB,IAAIlhL,KAAK86K,GAAUD,GAAW9b,EAAK2b,cAC7E6I,EAAc,iBACdC,EAAW,GACPU,EAAc,CAEhB,GADAV,GAAY,kCACR7E,EAAU,GAAK,EACjB,OAAQ1qI,GACN,KAAK,EACHuvI,GAAY,6BACZD,EAAc,eAAiBxM,EAAQ,QAAU,QACjD,MACF,KAAK4H,EAAU,GAAK,EAClB6E,GAAY,4BACZD,EAAc,eAAiBxM,EAAQ,OAAS,SAChD,MACF,QACEyM,GAAY,8BACZD,EAAc,GAIpBC,GAAY,IACd,CAKA,IAJAA,GAAY,uEAAyED,EAAc,MAAQ,WAAW16K,KAAK06K,IAAwB,IAARH,EAAYrM,EAAQp8J,EAAOgvB,EAAO,KAAO,YAAY9gC,KAAK06K,IAAwB,IAARH,EAAYrM,EAAQptI,EAAOhvB,EAAO,IAAM3X,KAAKqhL,yBAAyBtlB,EAAM8b,GAAWC,GAAUrC,EAASC,EAAS0K,EAAM,GAAKnvI,EAAM,EAAGuiI,EAAYC,GAA5V,0DAGZziI,EAAQqkI,EAAW,sCAAwCr1K,KAAKq4K,KAAKtc,EAAM,cAAgB,QAAU,GAChG9qJ,EAAM,EAAGA,EAAM,EAAGA,IAGrB+/B,GAAS,oBAAsB//B,EAAM6iK,EAAW,GAAK,GAAK,EAAI,kCAAoC,IAAzF,iBAAuHJ,EADhI9/J,GAAO3C,EAAM6iK,GAAY,GACuH,KAAOF,EAAYhgK,GAAO,eAY5K,IAVA4sK,GAAYxvI,EAAQ,uBACpB5mC,EAAcpK,KAAKi+K,gBAAgBnG,GAAUD,IACzCC,KAAa/b,EAAK6b,cAAgBC,KAAc9b,EAAK4b,gBACvD5b,EAAK2b,YAAcxzK,KAAKqL,IAAIwsJ,EAAK2b,YAAattK,IAEhDq2K,GAAYzgL,KAAKshL,oBAAoBxJ,GAAUD,IAAa/D,EAAW,GAAK,EAC5E4M,EAAUx8K,KAAKuF,MAAMg3K,EAAWr2K,GAAe,GAC/Cu2K,EAAUO,GAAelhL,KAAKm3K,QAAUuJ,EAAU1gL,KAAKm3K,QAAoBuJ,EAC3E1gL,KAAKm3K,QAAUwJ,EACfC,EAAY5gL,KAAKk+K,sBAAsB,IAAIlhL,KAAK86K,GAAUD,GAAW,EAAI4I,IACpEI,EAAO,EAAGA,EAAOF,EAASE,IAAQ,CAIrC,IAFAL,GAAY,OACZhvI,EAAS6jI,EAAgB,sCAAwCr1K,KAAKq4K,KAAKtc,EAAM,gBAAhB/7J,CAAiC4gL,GAAa,QAA3F,GACf3vK,EAAM,EAAGA,EAAM,EAAGA,IAErB6vK,EAAcnL,EAAgBA,EAAc95K,MAAMkgK,EAAK7/J,MAAQ6/J,EAAK7/J,MAAM,GAAK,KAAM,CAAC0kL,IAAc,EAAC,EAAM,IAE3GI,GADAD,EAAaH,EAAUtkK,aAAeu7J,MACRzC,IAAsB0L,EAAY,IAAMrL,GAAWmL,EAAYnL,GAAWC,GAAWkL,EAAYlL,EAC/HlkI,GAAS,gBAAkBvgC,EAAM6iK,EAAW,GAAK,GAAK,EAAI,0BAA4B,KAEtFiN,EAAa,6BAA+B,KAE5CH,EAAUphL,YAAc8gL,EAAa9gL,WAAaq4K,KAAc9b,EAAK4b,eAAiB5b,EAAKyR,WAE3FgH,EAAYh1K,YAAcohL,EAAUphL,WAAag1K,EAAYh1K,YAAc8gL,EAAa9gL,UAExF,IAAMQ,KAAKkzK,cAAgB,KAE3B8N,EAAe,IAAMhhL,KAAKgzK,mBAAqB,qBAAuB,KAEtE+N,IAAe5L,EAAkB,GAAK,IAAM2L,EAAY,IAExDF,EAAUphL,YAAcid,EAAYjd,UAAY,IAAMQ,KAAKizK,cAAgB,KAE3E2N,EAAUphL,YAAcogL,EAAMpgL,UAAY,uBAAyB,KAAO,KAExEuhL,IAAc5L,IAAoB2L,EAAY,GAAgE,GAA3D,WAAaA,EAAY,GAAG17K,QAAQ,KAAM,SAAW,MAE1G47K,EAAe,GAAK,4DAA8DJ,EAAUtkK,WAAa,gBAAkBskK,EAAUlwK,cAAgB,KAAO,KAE5JqwK,IAAe5L,EAAkB,SAEjC6L,EAAe,kCAAoCJ,EAAUrkK,UAAY,UAAY,8BAAgCqkK,EAAUphL,YAAcogL,EAAMpgL,UAAY,sBAAwB,KAAOohL,EAAUphL,YAAcid,EAAYjd,UAAY,mBAAqB,KAEnQuhL,EAAa,yBAA2B,IAExC,6BAA+BH,EAAUphL,YAAcid,EAAYjd,UAAY,OAAS,SAExF,gBAAkBohL,EAAUrkK,UAE5B,KAAOqkK,EAAUrkK,UAAY,QAAU,QACvCqkK,EAAUjI,QAAQiI,EAAUrkK,UAAY,GACxCqkK,EAAY5gL,KAAKk+K,sBAAsB0C,GAEzCJ,GAAYhvI,EAAQ,OACtB,GACAqmI,GACgB,KACdA,GAAY,EACZC,MAGFuI,GADAG,GAAY,oBAAsBU,EAAe,UAAYvF,EAAU,GAAK,GAAK1qI,IAAQ0qI,EAAU,GAAK,EAAI,8CAAgD,IAAM,GAEpK,CACA7hI,GAAQumI,CACV,CAGA,OAFAvmI,GAAQqmI,EACRpkB,EAAKyR,WAAY,EACV1zH,CACT,EAEAunI,yBAA0B,SAAUtlB,EAAM8b,EAAWC,EAAUrC,EAASC,EAAS1D,EAAWwB,EAAYC,GACtG,IAAI8N,EACFC,EACAt3K,EACAkW,EACAqhK,EACAC,EACAn4K,EACAo4K,EACA3M,EAAch1K,KAAKq4K,KAAKtc,EAAM,eAC9BkZ,EAAaj1K,KAAKq4K,KAAKtc,EAAM,cAC7BiY,EAAqBh0K,KAAKq4K,KAAKtc,EAAM,sBACrCmY,EAAmBl0K,KAAKq4K,KAAKtc,EAAM,oBACnCoY,EAAkBn0K,KAAKq4K,KAAKtc,EAAM,mBAClCjiH,EAAO,oCACP8nI,EAAY,GAGd,GAAI5P,IAAcgD,EAChB4M,GAAa,qCAAuCpO,EAAWqE,GAAa,cACvE,CAIL,IAHA0J,EAAY9L,GAAWA,EAAQ/kK,gBAAkBonK,EACjD0J,EAAY9L,GAAWA,EAAQhlK,gBAAkBonK,EACjD8J,GAAa,mDAAqD1N,EAAmB,oDAChFhqK,EAAQ,EAAGA,EAAQ,GAAIA,MACpBq3K,GAAar3K,GAASurK,EAAQn5J,eAAiBklK,GAAat3K,GAASwrK,EAAQp5J,cACjFslK,GAAa,kBAAoB13K,EAAQ,KAAOA,IAAU2tK,EAAY,uBAAyB,IAAM,IAAMpE,EAAgBvpK,GAAS,aAGxI03K,GAAa,WACf,CAMA,GALK5N,IACHl6H,GAAQ8nI,IAAa5P,GAAegD,GAAeC,EAAyB,GAAX,YAI9DlZ,EAAKggB,UAER,GADAhgB,EAAKggB,UAAY,GACb/J,IAAciD,EAChBn7H,GAAQ,oCAAsCg+H,EAAW,cACpD,CAaL,IAXA13J,EAAQpgB,KAAKq4K,KAAKtc,EAAM,aAAa9tJ,MAAM,KAC3CwzK,GAAW,IAAIzkL,MAAO0T,cACtBgxK,EAAgB,SAAUnnL,GACxB,IAAIgP,EAAOhP,EAAM4K,MAAM,YAAc2yK,EAAWznK,SAAS9V,EAAM4vH,UAAU,GAAI,IAAM5vH,EAAM4K,MAAM,WAAas8K,EAAWpxK,SAAS9V,EAAO,IAAM8V,SAAS9V,EAAO,IAC7J,OAAO+E,MAAMiK,GAAQk4K,EAAWl4K,CAClC,EACAA,EAAOm4K,EAActhK,EAAM,IAC3BuhK,EAAUz9K,KAAKI,IAAIiF,EAAMm4K,EAActhK,EAAM,IAAM,KACnD7W,EAAOksK,EAAUvxK,KAAKI,IAAIiF,EAAMksK,EAAQ/kK,eAAiBnH,EACzDo4K,EAAUjM,EAAUxxK,KAAKqL,IAAIoyK,EAASjM,EAAQhlK,eAAiBixK,EAC/D5lB,EAAKggB,WAAa,kDAAoD5H,EAAkB,mDACjF5qK,GAAQo4K,EAASp4K,IACtBwyJ,EAAKggB,WAAa,kBAAoBxyK,EAAO,KAAOA,IAASuuK,EAAW,uBAAyB,IAAM,IAAMvuK,EAAO,YAEtHwyJ,EAAKggB,WAAa,YAClBjiI,GAAQiiH,EAAKggB,UACbhgB,EAAKggB,UAAY,IACnB,CAOF,OALAjiI,GAAQ95C,KAAKq4K,KAAKtc,EAAM,cACpBiY,IACFl6H,KAASk4H,GAAegD,GAAeC,EAAyB,GAAX,UAAiB2M,GAExE9nI,GAAQ,QAEV,EAEA4iI,gBAAiB,SAAU3gB,EAAMv6I,EAAQiD,GACvC,IAAIlb,EAAOwyJ,EAAK6b,cAA2B,MAAXnzJ,EAAiBjD,EAAS,GACxDtX,EAAQ6xJ,EAAK4b,eAA4B,MAAXlzJ,EAAiBjD,EAAS,GACxD5N,EAAM1P,KAAKqL,IAAIwsJ,EAAK2b,YAAa13K,KAAKi+K,gBAAgB10K,EAAMW,KAAsB,MAAXua,EAAiBjD,EAAS,GACjGrX,EAAOnK,KAAK++K,gBAAgBhjB,EAAM/7J,KAAKk+K,sBAAsB,IAAIlhL,KAAKuM,EAAMW,EAAO0J,KACrFmoJ,EAAK2b,YAAcvtK,EAAKoS,UACxBw/I,EAAK8b,UAAY9b,EAAK4b,cAAgBxtK,EAAKmS,WAC3Cy/I,EAAK+b,SAAW/b,EAAK6b,aAAeztK,EAAKuG,cAC1B,MAAX+T,GAA6B,MAAXA,GACpBzkB,KAAK88K,cAAc/gB,EAEvB,EAEAgjB,gBAAiB,SAAUhjB,EAAM5xJ,GAC/B,IAAIsrK,EAAUz1K,KAAKi6K,eAAele,EAAM,OACtC2Z,EAAU11K,KAAKi6K,eAAele,EAAM,OACpCojB,EAAU1J,GAAWtrK,EAAOsrK,EAAUA,EAAUtrK,EAClD,OAAOurK,GAAWyJ,EAAUzJ,EAAUA,EAAUyJ,CAClD,EAEArC,cAAe,SAAU/gB,GACvB,IAAI8lB,EAAW7hL,KAAKq4K,KAAKtc,EAAM,qBAC3B8lB,GACFA,EAAShmL,MAAMkgK,EAAK7/J,MAAQ6/J,EAAK7/J,MAAM,GAAK,KAAM,CAAC6/J,EAAK6b,aAAc7b,EAAK4b,cAAgB,EAAG5b,GAElG,EAEA6f,mBAAoB,SAAU7f,GAC5B,IAAI4f,EAAY37K,KAAKq4K,KAAKtc,EAAM,kBAChC,OAAoB,MAAb4f,EAAoB,CAAC,EAAG,GAA0B,kBAAdA,EAAyB,CAAC,EAAGA,GAAaA,CACvF,EAEA1B,eAAgB,SAAUle,EAAM+lB,GAC9B,OAAO9hL,KAAKg/K,eAAejjB,EAAM/7J,KAAKq4K,KAAKtc,EAAM+lB,EAAS,QAAS,KACrE,EAEA7D,gBAAiB,SAAU10K,EAAMW,GAC/B,OAAO,GAAKlK,KAAKk+K,sBAAsB,IAAIlhL,KAAKuM,EAAMW,EAAO,KAAKqS,SACpE,EAEA+kK,oBAAqB,SAAU/3K,EAAMW,GACnC,OAAO,IAAIlN,KAAKuM,EAAMW,EAAO,GAAGwK,QAClC,EAEAysK,gBAAiB,SAAUplB,EAAMv6I,EAAQugK,EAASC,GAChD,IAAIrG,EAAY37K,KAAK47K,mBAAmB7f,GACtC5xJ,EAAOnK,KAAKk+K,sBAAsB,IAAIlhL,KAAK+kL,EAASC,GAAYxgK,EAAS,EAAIA,EAASm6J,EAAU,GAAKA,EAAU,IAAK,IAItH,OAHIn6J,EAAS,GACXrX,EAAKwuK,QAAQ34K,KAAKi+K,gBAAgB9zK,EAAKuG,cAAevG,EAAKmS,aAEtDtc,KAAKohL,WAAWrlB,EAAM5xJ,EAC/B,EAEAi3K,WAAY,SAAUrlB,EAAM5xJ,GAC1B,IAAI83K,EACFpF,EACApH,EAAUz1K,KAAKi6K,eAAele,EAAM,OACpC2Z,EAAU11K,KAAKi6K,eAAele,EAAM,OACpCmmB,EAAU,KACVC,EAAU,KACV/hK,EAAQpgB,KAAKq4K,KAAKtc,EAAM,aAa1B,OAZI37I,IACF6hK,EAAY7hK,EAAMnS,MAAM,KACxB4uK,GAAc,IAAI7/K,MAAO0T,cACzBwxK,EAAU7xK,SAAS4xK,EAAU,GAAI,IACjCE,EAAU9xK,SAAS4xK,EAAU,GAAI,IAC7BA,EAAU,GAAG98K,MAAM,aACrB+8K,GAAWrF,GAEToF,EAAU,GAAG98K,MAAM,aACrBg9K,GAAWtF,MAGNpH,GAAWtrK,EAAK3K,WAAai2K,EAAQj2K,cAAgBk2K,GAAWvrK,EAAK3K,WAAak2K,EAAQl2K,cAAgB0iL,GAAW/3K,EAAKuG,eAAiBwxK,MAAcC,GAAWh4K,EAAKuG,eAAiByxK,EACrM,EAEAjH,iBAAkB,SAAUnf,GAC1B,IAAIyZ,EAAkBx1K,KAAKq4K,KAAKtc,EAAM,mBAEtC,MAAO,CACLyZ,gBAFFA,EAA6C,kBAApBA,EAA+BA,GAAkB,IAAIx4K,MAAO0T,cAAgB,IAAML,SAASmlK,EAAiB,IAGnI7B,cAAe3zK,KAAKq4K,KAAKtc,EAAM,iBAC/B2X,SAAU1zK,KAAKq4K,KAAKtc,EAAM,YAC1B0X,gBAAiBzzK,KAAKq4K,KAAKtc,EAAM,mBACjCyX,WAAYxzK,KAAKq4K,KAAKtc,EAAM,cAEhC,EAEA6c,YAAa,SAAU7c,EAAMnoJ,EAAK1J,EAAOX,GAClCqK,IACHmoJ,EAAK4gB,WAAa5gB,EAAK2b,YACvB3b,EAAK6gB,aAAe7gB,EAAK4b,cACzB5b,EAAK8gB,YAAc9gB,EAAK6b,cAE1B,IAAIztK,EAAOyJ,EAAqB,kBAARA,EAAmBA,EAAM5T,KAAKk+K,sBAAsB,IAAIlhL,KAAKuM,EAAMW,EAAO0J,IAAQ5T,KAAKk+K,sBAAsB,IAAIlhL,KAAK++J,EAAK8gB,YAAa9gB,EAAK6gB,aAAc7gB,EAAK4gB,aACxL,OAAO38K,KAAKi9K,WAAWj9K,KAAKq4K,KAAKtc,EAAM,cAAe5xJ,EAAMnK,KAAKk7K,iBAAiBnf,GACpF,IAgDFtnG,EAAEt3D,GAAG25K,WAAa,SAAUlhJ,GAE1B,IAAK51B,KAAKxJ,OACR,OAAOwJ,KAIJy0D,EAAEqiH,WAAWrzE,cAChBhvC,EAAEz8D,UAAU26C,GAAG,YAAa8hB,EAAEqiH,WAAW2F,qBACzChoH,EAAEqiH,WAAWrzE,aAAc,GAImB,IAA5ChvC,EAAE,IAAMA,EAAEqiH,WAAWpE,YAAYl8K,QACnCi+D,EAAE,QAAQja,OAAOia,EAAEqiH,WAAWH,OAEhC,IAAIyL,EAAYjmL,MAAMzF,UAAU8E,MAAM5E,KAAKkF,UAAW,GACtD,MAAuB,kBAAZ85B,GAAqC,eAAZA,GAAwC,YAAZA,GAAqC,WAAZA,EAGzE,WAAZA,GAA6C,IAArB95B,UAAUtF,QAAwC,kBAAjBsF,UAAU,GAC9D24D,EAAEqiH,WAAW,IAAMlhJ,EAAU,cAAc/5B,MAAM44D,EAAEqiH,WAAY,CAAC92K,KAAK,IAAI6S,OAAOuvK,IAElFpiL,KAAKk1B,MAAK,WACQ,kBAAZU,EACT6+B,EAAEqiH,WAAW,IAAMlhJ,EAAU,cAAc/5B,MAAM44D,EAAEqiH,WAAY,CAAC92K,MAAM6S,OAAOuvK,IAE7E3tH,EAAEqiH,WAAWQ,kBAAkBt3K,KAAM41B,EAEzC,IAXS6+B,EAAEqiH,WAAW,IAAMlhJ,EAAU,cAAc/5B,MAAM44D,EAAEqiH,WAAY,CAAC92K,KAAK,IAAI6S,OAAOuvK,GAY3F,EACA3tH,EAAEqiH,WAAa,IAAIzE,EACnB59G,EAAEqiH,WAAWrzE,aAAc,EAC3BhvC,EAAEqiH,WAAWj4E,MAAO,IAAI7hG,MAAOwC,UAC/Bi1D,EAAEqiH,WAAW9kJ,QAAU,SACCyiC,EAAEqiH,WAGjBriH,EAAEu9F,GAAGqwB,KAAO,cAAcjoK,KAAKo5D,UAAU84C,UAAU9jH,eAH5D,IAmBIyhK,GAAe,EACnBx1G,EAAEz8D,UAAU26C,GAAG,WAAW,WACxBs3H,GAAe,CACjB,IACmBx1G,EAAE29F,OAAO,WAAY,CACtCpgI,QAAS,SACT4D,QAAS,CACPkrE,OAAQ,0CACR87D,SAAU,EACV71G,MAAO,GAETu7H,WAAY,WACV,IAAIx7J,EAAO9mB,KACXA,KAAKm3D,QAAQxkB,GAAG,aAAe3yC,KAAKgzJ,YAAY,SAAUr6J,GACxD,OAAOmuB,EAAKy7J,WAAW5pL,EACzB,IAAGg6C,GAAG,SAAW3yC,KAAKgzJ,YAAY,SAAUr6J,GAC1C,IAAI,IAAS87D,EAAEx+D,KAAK0C,EAAMQ,OAAQ2tB,EAAKksI,WAAa,sBAGlD,OAFAv+F,EAAE1mB,WAAWp1C,EAAMQ,OAAQ2tB,EAAKksI,WAAa,sBAC7Cr6J,EAAM26C,4BACC,CAEX,IACAtzC,KAAKm2D,SAAU,CACjB,EAGAqsH,cAAe,WACbxiL,KAAKm3D,QAAQpkB,IAAI,IAAM/yC,KAAKgzJ,YACxBhzJ,KAAKyiL,oBACPziL,KAAKhI,SAAS+6C,IAAI,aAAe/yC,KAAKgzJ,WAAYhzJ,KAAKyiL,oBAAoB1vI,IAAI,WAAa/yC,KAAKgzJ,WAAYhzJ,KAAK0iL,iBAEtH,EACAH,WAAY,SAAU5pL,GAEpB,IAAIsxK,EAAJ,CAGAjqK,KAAK2iL,aAAc,EAGf3iL,KAAK4iL,eACP5iL,KAAK6iL,SAASlqL,GAEhBqH,KAAK8iL,gBAAkBnqL,EACvB,IAAImuB,EAAO9mB,KACT+iL,EAA4B,IAAhBpqL,EAAMs/C,MAGlB+qI,IAA4C,kBAAxBhjL,KAAK41B,QAAQkrE,SAAuBnoG,EAAMQ,OAAOs7B,WAAWggC,EAAE97D,EAAMQ,QAAQ4tC,QAAQ/mC,KAAK41B,QAAQkrE,QAAQtqG,OAC/H,QAAKusL,IAAaC,GAAehjL,KAAKijL,cAActqL,MAGpDqH,KAAKkjL,eAAiBljL,KAAK41B,QAAQmxB,MAC9B/mD,KAAKkjL,gBACRljL,KAAKmjL,iBAAmB3pL,YAAW,WACjCstB,EAAKo8J,eAAgB,CACvB,GAAGljL,KAAK41B,QAAQmxB,QAEd/mD,KAAKojL,kBAAkBzqL,IAAUqH,KAAKqjL,eAAe1qL,KACvDqH,KAAK4iL,eAA4C,IAA5B5iL,KAAKsjL,YAAY3qL,IACjCqH,KAAK4iL,gBACRjqL,EAAM46C,kBACC,KAKP,IAASkhB,EAAEx+D,KAAK0C,EAAMQ,OAAQ6G,KAAKgzJ,WAAa,uBAClDv+F,EAAE1mB,WAAWp1C,EAAMQ,OAAQ6G,KAAKgzJ,WAAa,sBAI/ChzJ,KAAKyiL,mBAAqB,SAAU9pL,GAClC,OAAOmuB,EAAKy8J,WAAW5qL,EACzB,EACAqH,KAAK0iL,iBAAmB,SAAU/pL,GAChC,OAAOmuB,EAAK+7J,SAASlqL,EACvB,EACAqH,KAAKhI,SAAS26C,GAAG,aAAe3yC,KAAKgzJ,WAAYhzJ,KAAKyiL,oBAAoB9vI,GAAG,WAAa3yC,KAAKgzJ,WAAYhzJ,KAAK0iL,kBAChH/pL,EAAM46C,iBACN02H,GAAe,GACR,GA7CP,CA8CF,EACAsZ,WAAY,SAAU5qL,GAKpB,GAAIqH,KAAK2iL,YAAa,CAEpB,GAAIluH,EAAEu9F,GAAGqwB,MAAQrqL,SAASogD,cAAgBpgD,SAASogD,aAAe,KAAOz/C,EAAMopC,OAC7E,OAAO/hC,KAAK6iL,SAASlqL,GAGhB,IAAKA,EAAMs/C,MAIhB,GAAIt/C,EAAM+8C,cAAca,QAAU59C,EAAM+8C,cAAciB,SAAWh+C,EAAM+8C,cAAcoB,SAAWn+C,EAAM+8C,cAAcuB,SAClHj3C,KAAKwjL,oBAAqB,OACrB,IAAKxjL,KAAKwjL,mBACf,OAAOxjL,KAAK6iL,SAASlqL,EAG3B,CAIA,OAHIA,EAAMs/C,OAASt/C,EAAMopC,UACvB/hC,KAAK2iL,aAAc,GAEjB3iL,KAAK4iL,eACP5iL,KAAKyjL,WAAW9qL,GACTA,EAAM46C,mBAEXvzC,KAAKojL,kBAAkBzqL,IAAUqH,KAAKqjL,eAAe1qL,KACvDqH,KAAK4iL,eAAkE,IAAlD5iL,KAAKsjL,YAAYtjL,KAAK8iL,gBAAiBnqL,GACxDqH,KAAK4iL,cACP5iL,KAAKyjL,WAAW9qL,GAEhBqH,KAAK6iL,SAASlqL,KAGVqH,KAAK4iL,cACf,EACAC,SAAU,SAAUlqL,GAClBqH,KAAKhI,SAAS+6C,IAAI,aAAe/yC,KAAKgzJ,WAAYhzJ,KAAKyiL,oBAAoB1vI,IAAI,WAAa/yC,KAAKgzJ,WAAYhzJ,KAAK0iL,kBAC9G1iL,KAAK4iL,gBACP5iL,KAAK4iL,eAAgB,EACjBjqL,EAAMQ,SAAW6G,KAAK8iL,gBAAgB3pL,QACxCs7D,EAAEx+D,KAAK0C,EAAMQ,OAAQ6G,KAAKgzJ,WAAa,sBAAsB,GAE/DhzJ,KAAK0jL,WAAW/qL,IAEdqH,KAAKmjL,mBACPrqL,aAAakH,KAAKmjL,yBACXnjL,KAAKmjL,kBAEdnjL,KAAKwjL,oBAAqB,EAC1BvZ,GAAe,EACftxK,EAAM46C,gBACR,EACA6vI,kBAAmB,SAAUzqL,GAC3B,OAAOuL,KAAKI,IAAIJ,KAAKC,IAAInE,KAAK8iL,gBAAgB/rI,MAAQp+C,EAAMo+C,OAAQ7yC,KAAKC,IAAInE,KAAK8iL,gBAAgB9rI,MAAQr+C,EAAMq+C,SAAWh3C,KAAK41B,QAAQgnI,QAC1I,EACAymB,eAAgB,WAEd,OAAOrjL,KAAKkjL,aACd,EAEAI,YAAa,WAAyB,EACtCG,WAAY,WAAyB,EACrCC,WAAY,WAAyB,EACrCT,cAAe,WAEb,OAAO,CACT,IAIWxuH,EAAEu9F,GAAG2xB,OAAS,CACzBrxK,IAAK,SAAUjb,EAAQy5C,EAAQxuC,GAC7B,IAAIhM,EACFs2B,EAAQ6nC,EAAEu9F,GAAG36J,GAAQX,UACvB,IAAKJ,KAAKgM,EACRsqB,EAAMg3J,QAAQttL,GAAKs2B,EAAMg3J,QAAQttL,IAAM,GACvCs2B,EAAMg3J,QAAQttL,GAAGQ,KAAK,CAACg6C,EAAQxuC,EAAIhM,IAEvC,EACAM,KAAM,SAAUk1F,EAAUzyF,EAAMwI,EAAMgiL,GACpC,IAAIvtL,EACFgM,EAAMwpF,EAAS83F,QAAQvqL,GACzB,GAAKiJ,IAGAuhL,GAAuB/3F,EAAS30B,QAAQ,GAAGnjC,YAA0D,KAA5C83D,EAAS30B,QAAQ,GAAGnjC,WAAWX,UAG7F,IAAK/8B,EAAI,EAAGA,EAAIgM,EAAI9L,OAAQF,IACtBw1F,EAASl2D,QAAQtzB,EAAIhM,GAAG,KAC1BgM,EAAIhM,GAAG,GAAGuF,MAAMiwF,EAAS30B,QAASt1D,EAGxC,GAEa4yD,EAAEu9F,GAAG8xB,SAAW,SAAU3sH,GAGnCA,GAA8C,SAAnCA,EAAQ1iC,SAASjsB,eAC9BisD,EAAE0C,GAAS3jB,QAAQ,OAEvB,EAkBAihB,EAAE29F,OAAO,eAAgB39F,EAAEu9F,GAAG+xB,MAAO,CACnC/xJ,QAAS,SACT+gI,kBAAmB,OACnBn9H,QAAS,CACPouJ,YAAY,EACZjpI,SAAU,SACVkpI,MAAM,EACNC,mBAAmB,EACnBC,aAAa,EACbtK,OAAQ,OACRuK,UAAU,EACVC,MAAM,EACNnwI,QAAQ,EACR6hF,OAAQ,WACRuuD,WAAW,EACXjkI,SAAS,EACTkkI,kBAAkB,EAClBC,QAAQ,EACRC,eAAgB,IAChBtoJ,MAAO,UACP0vI,QAAQ,EACR6Y,kBAAmB,GACnBC,YAAa,GACbC,MAAM,EACNC,SAAU,OACVC,cAAe,GACf9iL,OAAO,EACPu/C,QAAQ,EAERwjI,KAAM,KACN5kJ,MAAO,KACPmO,KAAM,MAER0lH,QAAS,WACqB,aAAxBh0J,KAAK41B,QAAQmgG,QACf/1H,KAAKglL,uBAEHhlL,KAAK41B,QAAQouJ,YACfhkL,KAAKq1J,UAAU,gBAEjBr1J,KAAKilL,sBACLjlL,KAAKsiL,YACP,EACA9tB,WAAY,SAAU35J,EAAKN,GACzByF,KAAKw8D,OAAO3hE,EAAKN,GACL,WAARM,IACFmF,KAAKklL,yBACLllL,KAAKilL,sBAET,EACA7wB,SAAU,YACHp0J,KAAK+1H,QAAU/1H,KAAKm3D,SAAStxB,GAAG,0BACnC7lC,KAAKmlL,gBAAiB,GAGxBnlL,KAAKklL,yBACLllL,KAAKwiL,gBACP,EACAS,cAAe,SAAUtqL,GACvB,IAAIqB,EAAIgG,KAAK41B,QAGb,QAAI51B,KAAK+1H,QAAU/7H,EAAEqhC,UAAYo5B,EAAE97D,EAAMQ,QAAQ4tC,QAAQ,wBAAwBvwC,OAAS,KAK1FwJ,KAAKk0C,OAASl0C,KAAKolL,WAAWzsL,KACzBqH,KAAKk0C,SAGVl0C,KAAKqlL,mBAAmB1sL,GACxBqH,KAAKslL,cAA6B,IAAhBtrL,EAAEsqL,UAAqB,SAAWtqL,EAAEsqL,YAC/C,GACT,EACAgB,aAAc,SAAUjxJ,GACtBr0B,KAAKulL,aAAevlL,KAAKhI,SAASwjC,KAAKnH,GAAUp3B,KAAI,WACnD,IAAIuoL,EAAS/wH,EAAEz0D,MACf,OAAOy0D,EAAE,SAAStlB,IAAI,WAAY,YAAY4L,SAASyqI,EAAOplJ,UAAUy2H,WAAW2uB,EAAO3uB,cAAcC,YAAY0uB,EAAO1uB,eAAet1I,OAAOgkK,EAAOhkK,UAAU,EACpK,GACF,EACAikK,eAAgB,WACVzlL,KAAKulL,eACPvlL,KAAKulL,aAAar8I,gBACXlpC,KAAKulL,aAEhB,EACAF,mBAAoB,SAAU1sL,GAC5B,IAAIyoC,EAAgBqzB,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,IAC9Cy8D,EAAE97D,EAAMQ,QAKR4tC,QAAQ3F,GAAe5qC,QAKlCi+D,EAAEu9F,GAAG8xB,SAAS1iJ,EAChB,EACAkiJ,YAAa,SAAU3qL,GACrB,IAAIqB,EAAIgG,KAAK41B,QAgDb,OA7CA51B,KAAK+1H,OAAS/1H,KAAK0lL,cAAc/sL,GACjCqH,KAAKq1J,UAAUr1J,KAAK+1H,OAAQ,yBAG5B/1H,KAAK2lL,0BAGDlxH,EAAEu9F,GAAG4zB,YACPnxH,EAAEu9F,GAAG4zB,UAAUp2H,QAAUxvD,MAS3BA,KAAK6lL,gBAGL7lL,KAAKghK,YAAchhK,KAAK+1H,OAAO5mF,IAAI,YACnCnvC,KAAKumK,aAAevmK,KAAK+1H,OAAOwwC,cAAa,GAC7CvmK,KAAKmzD,aAAenzD,KAAK+1H,OAAO5iE,eAChCnzD,KAAK8lL,iBAAmB9lL,KAAK+1H,OAAO7uF,UAAU1hB,QAAO,WACnD,MAAmC,UAA5BivC,EAAEz0D,MAAMmvC,IAAI,WACrB,IAAG34C,OAAS,EAGZwJ,KAAK+lL,YAAc/lL,KAAKm3D,QAAQ31C,SAChCxhB,KAAKgmL,gBAAgBrtL,GAGrBqH,KAAKimL,iBAAmBjmL,KAAKm9C,SAAWn9C,KAAKkmL,kBAAkBvtL,GAAO,GACtEqH,KAAKmmL,cAAgBxtL,EAAMo+C,MAC3B/2C,KAAKomL,cAAgBztL,EAAMq+C,MAGvBh9C,EAAEoqL,UACJpkL,KAAKqmL,wBAAwBrsL,EAAEoqL,UAIjCpkL,KAAKsmL,mBAGiC,IAAlCtmL,KAAKk0J,SAAS,QAASv7J,IACzBqH,KAAK0vF,UACE,IAIT1vF,KAAK2lL,0BAGDlxH,EAAEu9F,GAAG4zB,YAAc5rL,EAAEusL,eACvB9xH,EAAEu9F,GAAG4zB,UAAUY,eAAexmL,KAAMrH,GAKtCqH,KAAKyjL,WAAW9qL,GAAO,GAInB87D,EAAEu9F,GAAG4zB,WACPnxH,EAAEu9F,GAAG4zB,UAAUa,UAAUzmL,KAAMrH,IAE1B,EACT,EACAqtL,gBAAiB,SAAUrtL,GACzBqH,KAAKwhB,OAAS,CACZkc,IAAK19B,KAAK+lL,YAAYroJ,IAAM19B,KAAK0mL,QAAQhpJ,IACzCwkB,KAAMliD,KAAK+lL,YAAY7jI,KAAOliD,KAAK0mL,QAAQxkI,KAC3C2pH,QAAQ,EACRzrI,OAAQpgC,KAAK2mL,mBACb1nJ,SAAUj/B,KAAK4mL,sBAEjB5mL,KAAKwhB,OAAOs0B,MAAQ,CAClBoM,KAAMvpD,EAAMo+C,MAAQ/2C,KAAKwhB,OAAO0gC,KAChCxkB,IAAK/kC,EAAMq+C,MAAQh3C,KAAKwhB,OAAOkc,IAEnC,EACA+lJ,WAAY,SAAU9qL,EAAOkuL,GAW3B,GATI7mL,KAAK8lL,mBACP9lL,KAAKwhB,OAAO4e,OAASpgC,KAAK2mL,oBAI5B3mL,KAAKm9C,SAAWn9C,KAAKkmL,kBAAkBvtL,GAAO,GAC9CqH,KAAK+lL,YAAc/lL,KAAK8mL,mBAAmB,aAGtCD,EAAe,CAClB,IAAI70B,EAAKhyJ,KAAK+mL,UACd,IAAyC,IAArC/mL,KAAKk0J,SAAS,OAAQv7J,EAAOq5J,GAE/B,OADAhyJ,KAAK6iL,SAAS,IAAIpuH,EAAEhf,MAAM,UAAW98C,KAC9B,EAETqH,KAAKm9C,SAAW60G,EAAG70G,QACrB,CAMA,OALAn9C,KAAK+1H,OAAO,GAAG9mF,MAAMiT,KAAOliD,KAAKm9C,SAAS+E,KAAO,KACjDliD,KAAK+1H,OAAO,GAAG9mF,MAAMvR,IAAM19B,KAAKm9C,SAASzf,IAAM,KAC3C+2B,EAAEu9F,GAAG4zB,WACPnxH,EAAEu9F,GAAG4zB,UAAUb,KAAK/kL,KAAMrH,IAErB,CACT,EACA+qL,WAAY,SAAU/qL,GAEpB,IAAImuB,EAAO9mB,KACTgnL,GAAU,EAqBZ,OApBIvyH,EAAEu9F,GAAG4zB,YAAc5lL,KAAK41B,QAAQ2wJ,gBAClCS,EAAUvyH,EAAEu9F,GAAG4zB,UAAUqB,KAAKjnL,KAAMrH,IAIlCqH,KAAKgnL,UACPA,EAAUhnL,KAAKgnL,QACfhnL,KAAKgnL,SAAU,GAEW,YAAxBhnL,KAAK41B,QAAQ4uJ,SAAyBwC,GAAmC,UAAxBhnL,KAAK41B,QAAQ4uJ,QAAsBwC,IAAmC,IAAxBhnL,KAAK41B,QAAQ4uJ,QAAkD,oBAAxBxkL,KAAK41B,QAAQ4uJ,QAAyBxkL,KAAK41B,QAAQ4uJ,OAAO5tL,KAAKoJ,KAAKm3D,QAAS6vH,GACrNvyH,EAAEz0D,KAAK+1H,QAAQ/vE,QAAQhmD,KAAKimL,iBAAkB51K,SAASrQ,KAAK41B,QAAQ6uJ,eAAgB,KAAK,YAClD,IAAjC39J,EAAKotI,SAAS,OAAQv7J,IACxBmuB,EAAK4oE,QAET,KAEqC,IAAjC1vF,KAAKk0J,SAAS,OAAQv7J,IACxBqH,KAAK0vF,UAGF,CACT,EACAmzF,SAAU,SAAUlqL,GAelB,OAdAqH,KAAKylL,iBAIDhxH,EAAEu9F,GAAG4zB,WACPnxH,EAAEu9F,GAAG4zB,UAAUsB,SAASlnL,KAAMrH,GAI5BqH,KAAKmnL,cAActhJ,GAAGltC,EAAMQ,SAG9B6G,KAAKm3D,QAAQ3jB,QAAQ,SAEhBihB,EAAEu9F,GAAG+xB,MAAMrtL,UAAUmsL,SAASjsL,KAAKoJ,KAAMrH,EAClD,EACAmoG,OAAQ,WAQN,OAPI9gG,KAAK+1H,OAAOlwF,GAAG,0BACjB7lC,KAAK6iL,SAAS,IAAIpuH,EAAEhf,MAAM,UAAW,CACnCt8C,OAAQ6G,KAAKm3D,QAAQ,MAGvBn3D,KAAK0vF,SAEA1vF,IACT,EACAolL,WAAY,SAAUzsL,GACpB,OAAOqH,KAAK41B,QAAQse,UAAWugB,EAAE97D,EAAMQ,QAAQ4tC,QAAQ/mC,KAAKm3D,QAAQ37B,KAAKx7B,KAAK41B,QAAQse,SAAS19C,MACjG,EACAyuL,oBAAqB,WACnBjlL,KAAKmnL,cAAgBnnL,KAAK41B,QAAQse,OAASl0C,KAAKm3D,QAAQ37B,KAAKx7B,KAAK41B,QAAQse,QAAUl0C,KAAKm3D,QACzFn3D,KAAKq1J,UAAUr1J,KAAKmnL,cAAe,sBACrC,EACAjC,uBAAwB,WACtBllL,KAAKq0J,aAAar0J,KAAKmnL,cAAe,sBACxC,EACAzB,cAAe,SAAU/sL,GACvB,IAAIqB,EAAIgG,KAAK41B,QACXwxJ,EAAuC,oBAAbptL,EAAE+7H,OAC5BA,EAASqxD,EAAmB3yH,EAAEz6D,EAAE+7H,OAAOl6H,MAAMmE,KAAKm3D,QAAQ,GAAI,CAACx+D,KAAwB,UAAbqB,EAAE+7H,OAAqB/1H,KAAKm3D,QAAQh1C,QAAQilC,WAAW,MAAQpnD,KAAKm3D,QAchJ,OAbK4+D,EAAO7uF,QAAQ,QAAQ1wC,QAC1Bu/H,EAAOh7E,SAAwB,WAAf/gD,EAAE+gD,SAAwB/6C,KAAKm3D,QAAQ,GAAGnjC,WAAah6B,EAAE+gD,UAMvEqsI,GAAoBrxD,EAAO,KAAO/1H,KAAKm3D,QAAQ,IACjDn3D,KAAKglL,uBAEHjvD,EAAO,KAAO/1H,KAAKm3D,QAAQ,IAAO,mBAAmBtxD,KAAKkwH,EAAO5mF,IAAI,cACvE4mF,EAAO5mF,IAAI,WAAY,YAElB4mF,CACT,EACAivD,qBAAsB,WACf,aAAan/K,KAAK7F,KAAKm3D,QAAQhoB,IAAI,eACtCnvC,KAAKm3D,QAAQ,GAAGloB,MAAMkO,SAAW,WAErC,EACAkpI,wBAAyB,SAAU3pL,GACd,kBAARA,IACTA,EAAMA,EAAIuR,MAAM,MAEd9R,MAAMF,QAAQS,KAChBA,EAAM,CACJwlD,MAAOxlD,EAAI,GACXghC,KAAMhhC,EAAI,IAAM,IAGhB,SAAUA,IACZsD,KAAKwhB,OAAOs0B,MAAMoM,KAAOxlD,EAAIwlD,KAAOliD,KAAK0mL,QAAQxkI,MAE/C,UAAWxlD,IACbsD,KAAKwhB,OAAOs0B,MAAMoM,KAAOliD,KAAKqnL,kBAAkBtrI,MAAQr/C,EAAIsgD,MAAQh9C,KAAK0mL,QAAQxkI,MAE/E,QAASxlD,IACXsD,KAAKwhB,OAAOs0B,MAAMpY,IAAMhhC,EAAIghC,IAAM19B,KAAK0mL,QAAQhpJ,KAE7C,WAAYhhC,IACdsD,KAAKwhB,OAAOs0B,MAAMpY,IAAM19B,KAAKqnL,kBAAkBnpI,OAASxhD,EAAIo8J,OAAS94J,KAAK0mL,QAAQhpJ,IAEtF,EACA4pJ,YAAa,SAAUnwH,GACrB,MAAO,eAAetxD,KAAKsxD,EAAQE,UAAYF,IAAYn3D,KAAKhI,SAAS,EAC3E,EACA2uL,iBAAkB,WAEhB,IAAIY,EAAKvnL,KAAKmzD,aAAa3xC,SACzBxpB,EAAWgI,KAAKhI,SAAS,GAmB3B,MAVyB,aAArBgI,KAAKghK,aAA8BhhK,KAAKumK,aAAa,KAAOvuK,GAAYy8D,EAAE/8B,SAAS13B,KAAKumK,aAAa,GAAIvmK,KAAKmzD,aAAa,MAC7Ho0H,EAAGrlI,MAAQliD,KAAKumK,aAAaxjH,aAC7BwkI,EAAG7pJ,KAAO19B,KAAKumK,aAAazjH,aAE1B9iD,KAAKsnL,YAAYtnL,KAAKmzD,aAAa,MACrCo0H,EAAK,CACH7pJ,IAAK,EACLwkB,KAAM,IAGH,CACLxkB,IAAK6pJ,EAAG7pJ,KAAOrtB,SAASrQ,KAAKmzD,aAAahkB,IAAI,kBAAmB,KAAO,GACxE+S,KAAMqlI,EAAGrlI,MAAQ7xC,SAASrQ,KAAKmzD,aAAahkB,IAAI,mBAAoB,KAAO,GAE/E,EACAy3I,mBAAoB,WAClB,GAAyB,aAArB5mL,KAAKghK,YACP,MAAO,CACLtjI,IAAK,EACLwkB,KAAM,GAGV,IAAI3pD,EAAIyH,KAAKm3D,QAAQha,WACnBqqI,EAAmBxnL,KAAKsnL,YAAYtnL,KAAKumK,aAAa,IACxD,MAAO,CACL7oI,IAAKnlC,EAAEmlC,KAAOrtB,SAASrQ,KAAK+1H,OAAO5mF,IAAI,OAAQ,KAAO,IAAOq4I,EAAmD,EAAhCxnL,KAAKumK,aAAazjH,aAClGZ,KAAM3pD,EAAE2pD,MAAQ7xC,SAASrQ,KAAK+1H,OAAO5mF,IAAI,QAAS,KAAO,IAAOq4I,EAAoD,EAAjCxnL,KAAKumK,aAAaxjH,cAEzG,EACA8iI,cAAe,WACb7lL,KAAK0mL,QAAU,CACbxkI,KAAM7xC,SAASrQ,KAAKm3D,QAAQhoB,IAAI,cAAe,KAAO,EACtDzR,IAAKrtB,SAASrQ,KAAKm3D,QAAQhoB,IAAI,aAAc,KAAO,EACpD6N,MAAO3sC,SAASrQ,KAAKm3D,QAAQhoB,IAAI,eAAgB,KAAO,EACxD2pH,OAAQzoJ,SAASrQ,KAAKm3D,QAAQhoB,IAAI,gBAAiB,KAAO,EAE9D,EACAw2I,wBAAyB,WACvB3lL,KAAKqnL,kBAAoB,CACvBtrI,MAAO/7C,KAAK+1H,OAAO8gC,aACnB34G,OAAQl+C,KAAK+1H,OAAO+gC,cAExB,EACAwvB,gBAAiB,WACf,IAAImB,EACF5tL,EACAq/H,EACAl/H,EAAIgG,KAAK41B,QACT59B,EAAWgI,KAAKhI,SAAS,GAC3BgI,KAAK0tI,kBAAoB,KACpB1zI,EAAEmqL,YAIe,WAAlBnqL,EAAEmqL,YAIgB,aAAlBnqL,EAAEmqL,YAIFnqL,EAAEmqL,YAAYvvJ,cAAgBz4B,OAIZ,WAAlBnC,EAAEmqL,cACJnqL,EAAEmqL,YAAcnkL,KAAK+1H,OAAO,GAAG/hG,aAGjCklG,GADAr/H,EAAI46D,EAAEz6D,EAAEmqL,cACD,MAIPsD,EAAmB,gBAAgB5hL,KAAKhM,EAAEs1C,IAAI,aAC9CnvC,KAAKmkL,YAAc,EAAE9zK,SAASxW,EAAEs1C,IAAI,mBAAoB,KAAO,IAAM9+B,SAASxW,EAAEs1C,IAAI,eAAgB,KAAO,IAAK9+B,SAASxW,EAAEs1C,IAAI,kBAAmB,KAAO,IAAM9+B,SAASxW,EAAEs1C,IAAI,cAAe,KAAO,IAAKs4I,EAAmBvjL,KAAKI,IAAI40H,EAAGo+B,YAAap+B,EAAG77E,aAAe67E,EAAG77E,cAAgBhtC,SAASxW,EAAEs1C,IAAI,oBAAqB,KAAO,IAAM9+B,SAASxW,EAAEs1C,IAAI,gBAAiB,KAAO,GAAKnvC,KAAKqnL,kBAAkBtrI,MAAQ/7C,KAAK0mL,QAAQxkI,KAAOliD,KAAK0mL,QAAQ1pI,OAAQyqI,EAAmBvjL,KAAKI,IAAI40H,EAAGt3C,aAAcs3C,EAAG76E,cAAgB66E,EAAG76E,eAAiBhuC,SAASxW,EAAEs1C,IAAI,qBAAsB,KAAO,IAAM9+B,SAASxW,EAAEs1C,IAAI,iBAAkB,KAAO,GAAKnvC,KAAKqnL,kBAAkBnpI,OAASl+C,KAAK0mL,QAAQhpJ,IAAM19B,KAAK0mL,QAAQ5tB,QAClrB94J,KAAK0tI,kBAAoB7zI,IAbvBmG,KAAKmkL,YAAcnqL,EAAEmqL,YAJrBnkL,KAAKmkL,YAAc,CAAC,EAAG,EAAG1vH,EAAEz8D,GAAU+jD,QAAU/7C,KAAKqnL,kBAAkBtrI,MAAQ/7C,KAAK0mL,QAAQxkI,MAAOuS,EAAEz8D,GAAUkmD,UAAYlmD,EAASg4C,KAAKhc,WAAW4tD,cAAgB5hF,KAAKqnL,kBAAkBnpI,OAASl+C,KAAK0mL,QAAQhpJ,KAJjN19B,KAAKmkL,YAAc,CAAC1vH,EAAEn5D,QAAQynD,aAAe/iD,KAAKwhB,OAAOyd,SAASijB,KAAOliD,KAAKwhB,OAAO4e,OAAO8hB,KAAMuS,EAAEn5D,QAAQwnD,YAAc9iD,KAAKwhB,OAAOyd,SAASvB,IAAM19B,KAAKwhB,OAAO4e,OAAO1C,IAAK+2B,EAAEn5D,QAAQynD,aAAe0R,EAAEn5D,QAAQygD,QAAU/7C,KAAKqnL,kBAAkBtrI,MAAQ/7C,KAAK0mL,QAAQxkI,KAAMuS,EAAEn5D,QAAQwnD,aAAe2R,EAAEn5D,QAAQ4iD,UAAYlmD,EAASg4C,KAAKhc,WAAW4tD,cAAgB5hF,KAAKqnL,kBAAkBnpI,OAASl+C,KAAK0mL,QAAQhpJ,KAJjZ19B,KAAKmkL,YAAc,IA0BvB,EACA2C,mBAAoB,SAAUhtL,EAAGwc,GAC1BA,IACHA,EAAMtW,KAAKm9C,UAEb,IAAI3vC,EAAY,aAAN1T,EAAmB,GAAK,EAChC0tL,EAAmBxnL,KAAKsnL,YAAYtnL,KAAKumK,aAAa,IACxD,MAAO,CACL7oI,IAEApnB,EAAIonB,IAEJ19B,KAAKwhB,OAAOyd,SAASvB,IAAMlwB,EAE3BxN,KAAKwhB,OAAO4e,OAAO1C,IAAMlwB,GAA4B,UAArBxN,KAAKghK,aAA2BhhK,KAAKwhB,OAAOqqJ,OAAOnuI,IAAM8pJ,EAAmB,EAAIxnL,KAAKwhB,OAAOqqJ,OAAOnuI,KAAOlwB,EAC1I00C,KAEA5rC,EAAI4rC,KAEJliD,KAAKwhB,OAAOyd,SAASijB,KAAO10C,EAE5BxN,KAAKwhB,OAAO4e,OAAO8hB,KAAO10C,GAA4B,UAArBxN,KAAKghK,aAA2BhhK,KAAKwhB,OAAOqqJ,OAAO3pH,KAAOslI,EAAmB,EAAIxnL,KAAKwhB,OAAOqqJ,OAAO3pH,MAAQ10C,EAEjJ,EACA04K,kBAAmB,SAAUvtL,EAAO+uL,GAClC,IAAIvD,EACFwD,EACAjqJ,EACAwkB,EACAloD,EAAIgG,KAAK41B,QACT4xJ,EAAmBxnL,KAAKsnL,YAAYtnL,KAAKumK,aAAa,IACtDxvH,EAAQp+C,EAAMo+C,MACdC,EAAQr+C,EAAMq+C,MAoDhB,OAjDKwwI,GAAqBxnL,KAAKwhB,OAAOqqJ,SACpC7rK,KAAKwhB,OAAOqqJ,OAAS,CACnBnuI,IAAK19B,KAAKumK,aAAazjH,YACvBZ,KAAMliD,KAAKumK,aAAaxjH,eAUxB2kI,IACE1nL,KAAKmkL,cACHnkL,KAAK0tI,mBACPi6C,EAAK3nL,KAAK0tI,kBAAkBlsH,SAC5B2iK,EAAc,CAACnkL,KAAKmkL,YAAY,GAAKwD,EAAGzlI,KAAMliD,KAAKmkL,YAAY,GAAKwD,EAAGjqJ,IAAK19B,KAAKmkL,YAAY,GAAKwD,EAAGzlI,KAAMliD,KAAKmkL,YAAY,GAAKwD,EAAGjqJ,MAEpIymJ,EAAcnkL,KAAKmkL,YAEjBxrL,EAAMo+C,MAAQ/2C,KAAKwhB,OAAOs0B,MAAMoM,KAAOiiI,EAAY,KACrDptI,EAAQotI,EAAY,GAAKnkL,KAAKwhB,OAAOs0B,MAAMoM,MAEzCvpD,EAAMq+C,MAAQh3C,KAAKwhB,OAAOs0B,MAAMpY,IAAMymJ,EAAY,KACpDntI,EAAQmtI,EAAY,GAAKnkL,KAAKwhB,OAAOs0B,MAAMpY,KAEzC/kC,EAAMo+C,MAAQ/2C,KAAKwhB,OAAOs0B,MAAMoM,KAAOiiI,EAAY,KACrDptI,EAAQotI,EAAY,GAAKnkL,KAAKwhB,OAAOs0B,MAAMoM,MAEzCvpD,EAAMq+C,MAAQh3C,KAAKwhB,OAAOs0B,MAAMpY,IAAMymJ,EAAY,KACpDntI,EAAQmtI,EAAY,GAAKnkL,KAAKwhB,OAAOs0B,MAAMpY,MAG3C1jC,EAAEqqL,OAGJ3mJ,EAAM1jC,EAAEqqL,KAAK,GAAKrkL,KAAKomL,cAAgBliL,KAAK+c,OAAO+1B,EAAQh3C,KAAKomL,eAAiBpsL,EAAEqqL,KAAK,IAAMrqL,EAAEqqL,KAAK,GAAKrkL,KAAKomL,cAC/GpvI,EAAQmtI,EAAczmJ,EAAM19B,KAAKwhB,OAAOs0B,MAAMpY,KAAOymJ,EAAY,IAAMzmJ,EAAM19B,KAAKwhB,OAAOs0B,MAAMpY,IAAMymJ,EAAY,GAAKzmJ,EAAMA,EAAM19B,KAAKwhB,OAAOs0B,MAAMpY,KAAOymJ,EAAY,GAAKzmJ,EAAM1jC,EAAEqqL,KAAK,GAAK3mJ,EAAM1jC,EAAEqqL,KAAK,GAAK3mJ,EAChNwkB,EAAOloD,EAAEqqL,KAAK,GAAKrkL,KAAKmmL,cAAgBjiL,KAAK+c,OAAO81B,EAAQ/2C,KAAKmmL,eAAiBnsL,EAAEqqL,KAAK,IAAMrqL,EAAEqqL,KAAK,GAAKrkL,KAAKmmL,cAChHpvI,EAAQotI,EAAcjiI,EAAOliD,KAAKwhB,OAAOs0B,MAAMoM,MAAQiiI,EAAY,IAAMjiI,EAAOliD,KAAKwhB,OAAOs0B,MAAMoM,KAAOiiI,EAAY,GAAKjiI,EAAOA,EAAOliD,KAAKwhB,OAAOs0B,MAAMoM,MAAQiiI,EAAY,GAAKjiI,EAAOloD,EAAEqqL,KAAK,GAAKniI,EAAOloD,EAAEqqL,KAAK,GAAKniI,GAE5M,MAAXloD,EAAEiqL,OACJltI,EAAQ/2C,KAAKmmL,eAEA,MAAXnsL,EAAEiqL,OACJjtI,EAAQh3C,KAAKomL,gBAGV,CACL1oJ,IAEAsZ,EAEAh3C,KAAKwhB,OAAOs0B,MAAMpY,IAElB19B,KAAKwhB,OAAOyd,SAASvB,IAErB19B,KAAKwhB,OAAO4e,OAAO1C,KAA4B,UAArB19B,KAAKghK,aAA2BhhK,KAAKwhB,OAAOqqJ,OAAOnuI,IAAM8pJ,EAAmB,EAAIxnL,KAAKwhB,OAAOqqJ,OAAOnuI,KAC7HwkB,KAEAnL,EAEA/2C,KAAKwhB,OAAOs0B,MAAMoM,KAElBliD,KAAKwhB,OAAOyd,SAASijB,KAErBliD,KAAKwhB,OAAO4e,OAAO8hB,MAA6B,UAArBliD,KAAKghK,aAA2BhhK,KAAKwhB,OAAOqqJ,OAAO3pH,KAAOslI,EAAmB,EAAIxnL,KAAKwhB,OAAOqqJ,OAAO3pH,MAEnI,EACAwtC,OAAQ,WACN1vF,KAAKq0J,aAAar0J,KAAK+1H,OAAQ,yBAC3B/1H,KAAK+1H,OAAO,KAAO/1H,KAAKm3D,QAAQ,IAAOn3D,KAAK4nL,qBAC9C5nL,KAAK+1H,OAAO7sF,SAEdlpC,KAAK+1H,OAAS,KACd/1H,KAAK4nL,qBAAsB,EACvB5nL,KAAKmlL,gBACPnlL,KAAKi9E,SAET,EAGAi3E,SAAU,SAAUj7J,EAAMN,EAAOq5J,GAS/B,OARAA,EAAKA,GAAMhyJ,KAAK+mL,UAChBtyH,EAAEu9F,GAAG2xB,OAAO/sL,KAAKoJ,KAAM/G,EAAM,CAACN,EAAOq5J,EAAIhyJ,OAAO,GAG5C,qBAAqB6F,KAAK5M,KAC5B+G,KAAK+lL,YAAc/lL,KAAK8mL,mBAAmB,YAC3C90B,EAAGxwI,OAASxhB,KAAK+lL,aAEZtxH,EAAEg+F,OAAO/7J,UAAUw9J,SAASt9J,KAAKoJ,KAAM/G,EAAMN,EAAOq5J,EAC7D,EACA4xB,QAAS,CAAC,EACVmD,QAAS,WACP,MAAO,CACLhxD,OAAQ/1H,KAAK+1H,OACb54E,SAAUn9C,KAAKm9C,SACf8oI,iBAAkBjmL,KAAKimL,iBACvBzkK,OAAQxhB,KAAK+lL,YAEjB,IAEFtxH,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,oBAAqB,CAChD6tB,MAAO,SAAUxnC,EAAOq5J,EAAI61B,GAC1B,IAAIC,EAAarzH,EAAEn3D,OAAO,CAAC,EAAG00J,EAAI,CAChCvsI,KAAMoiK,EAAU1wH,UAElB0wH,EAAUE,UAAY,GACtBtzH,EAAEozH,EAAUjyJ,QAAQsuJ,mBAAmBhvJ,MAAK,WAC1C,IAAI8yJ,EAAWvzH,EAAEz0D,MAAMgoL,SAAS,YAC5BA,IAAaA,EAASpyJ,QAAQyF,WAChCwsJ,EAAUE,UAAUjxL,KAAKkxL,GAKzBA,EAASzD,mBACTyD,EAAS9zB,SAAS,WAAYv7J,EAAOmvL,GAEzC,GACF,EACAx5I,KAAM,SAAU31C,EAAOq5J,EAAI61B,GACzB,IAAIC,EAAarzH,EAAEn3D,OAAO,CAAC,EAAG00J,EAAI,CAChCvsI,KAAMoiK,EAAU1wH,UAElB0wH,EAAUD,qBAAsB,EAChCnzH,EAAEv/B,KAAK2yJ,EAAUE,WAAW,WAC1B,IAAIC,EAAWhoL,KACXgoL,EAASC,QACXD,EAASC,OAAS,EAGlBJ,EAAUD,qBAAsB,EAChCI,EAASJ,qBAAsB,EAK/BI,EAASE,WAAa,CACpB/qI,SAAU6qI,EAASz7E,YAAYp9D,IAAI,YACnCzR,IAAKsqJ,EAASz7E,YAAYp9D,IAAI,OAC9B+S,KAAM8lI,EAASz7E,YAAYp9D,IAAI,SAEjC64I,EAAStE,WAAW/qL,GAIpBqvL,EAASpyJ,QAAQmgG,OAASiyD,EAASpyJ,QAAQuyJ,UAK3CH,EAASJ,qBAAsB,EAC/BI,EAAS9zB,SAAS,aAAcv7J,EAAOmvL,GAE3C,GACF,EACA/C,KAAM,SAAUpsL,EAAOq5J,EAAI61B,GACzBpzH,EAAEv/B,KAAK2yJ,EAAUE,WAAW,WAC1B,IAAIK,GAAwB,EAC1BJ,EAAWhoL,KAGbgoL,EAASjC,YAAc8B,EAAU9B,YACjCiC,EAASX,kBAAoBQ,EAAUR,kBACvCW,EAASxmK,OAAOs0B,MAAQ+xI,EAAUrmK,OAAOs0B,MACrCkyI,EAASK,gBAAgBL,EAASM,kBACpCF,GAAwB,EACxB3zH,EAAEv/B,KAAK2yJ,EAAUE,WAAW,WAQ1B,OANA/nL,KAAK+lL,YAAc8B,EAAU9B,YAC7B/lL,KAAKqnL,kBAAoBQ,EAAUR,kBACnCrnL,KAAKwhB,OAAOs0B,MAAQ+xI,EAAUrmK,OAAOs0B,MACjC91C,OAASgoL,GAAYhoL,KAAKqoL,gBAAgBroL,KAAKsoL,iBAAmB7zH,EAAE/8B,SAASswJ,EAAS7wH,QAAQ,GAAIn3D,KAAKm3D,QAAQ,MACjHixH,GAAwB,GAEnBA,CACT,KAEEA,GAGGJ,EAASC,SACZD,EAASC,OAAS,EAGlBJ,EAAUvvG,QAAU05E,EAAGj8B,OAAO31F,SAC9B4nJ,EAASO,YAAcv2B,EAAGj8B,OAAOh7E,SAASitI,EAAS7wH,SAASlhE,KAAK,oBAAoB,GAGrF+xL,EAASpyJ,QAAQuyJ,QAAUH,EAASpyJ,QAAQmgG,OAC5CiyD,EAASpyJ,QAAQmgG,OAAS,WACxB,OAAOi8B,EAAGj8B,OAAO,EACnB,EAIAp9H,EAAMQ,OAAS6uL,EAASO,YAAY,GACpCP,EAAS/E,cAActqL,GAAO,GAC9BqvL,EAAS1E,YAAY3qL,GAAO,GAAM,GAIlCqvL,EAASxmK,OAAOs0B,MAAMpY,IAAMmqJ,EAAUrmK,OAAOs0B,MAAMpY,IACnDsqJ,EAASxmK,OAAOs0B,MAAMoM,KAAO2lI,EAAUrmK,OAAOs0B,MAAMoM,KACpD8lI,EAASxmK,OAAO4e,OAAO8hB,MAAQ2lI,EAAUrmK,OAAO4e,OAAO8hB,KAAO8lI,EAASxmK,OAAO4e,OAAO8hB,KACrF8lI,EAASxmK,OAAO4e,OAAO1C,KAAOmqJ,EAAUrmK,OAAO4e,OAAO1C,IAAMsqJ,EAASxmK,OAAO4e,OAAO1C,IACnFmqJ,EAAU3zB,SAAS,aAAcv7J,GAIjCkvL,EAAUb,QAAUgB,EAAS7wH,QAI7B1C,EAAEv/B,KAAK2yJ,EAAUE,WAAW,WAC1B/nL,KAAKukL,kBACP,IAGAsD,EAAUU,YAAcV,EAAU1wH,QAClC6wH,EAASQ,YAAcX,GAErBG,EAASO,cACXP,EAASvE,WAAW9qL,GAKpBq5J,EAAG70G,SAAW6qI,EAAS7qI,WAMrB6qI,EAASC,SACXD,EAASC,OAAS,EAClBD,EAASJ,qBAAsB,EAI/BI,EAASpyJ,QAAQ6yJ,QAAUT,EAASpyJ,QAAQ4uJ,OAC5CwD,EAASpyJ,QAAQ4uJ,QAAS,EAC1BwD,EAAS9zB,SAAS,MAAOv7J,EAAOqvL,EAASjB,QAAQiB,IACjDA,EAAStE,WAAW/qL,GAAO,GAI3BqvL,EAASpyJ,QAAQ4uJ,OAASwD,EAASpyJ,QAAQ6yJ,QAC3CT,EAASpyJ,QAAQmgG,OAASiyD,EAASpyJ,QAAQuyJ,QACvCH,EAASz7E,aACXy7E,EAASz7E,YAAYrjE,SAKvB8oH,EAAGj8B,OAAOh7E,SAAS8sI,EAAUvvG,SAC7BuvG,EAAU7B,gBAAgBrtL,GAC1Bq5J,EAAG70G,SAAW0qI,EAAU3B,kBAAkBvtL,GAAO,GACjDkvL,EAAU3zB,SAAS,eAAgBv7J,GAGnCkvL,EAAUb,SAAU,EAIpBvyH,EAAEv/B,KAAK2yJ,EAAUE,WAAW,WAC1B/nL,KAAKukL,kBACP,IAGN,GACF,IAEF9vH,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,SAAU,CACrC6tB,MAAO,SAAUxnC,EAAOq5J,EAAIlmE,GAC1B,IAAItxF,EAAIi6D,EAAE,QACRz6D,EAAI8xF,EAASl2D,QACXp7B,EAAE20C,IAAI,YACRn1C,EAAE0uL,QAAUluL,EAAE20C,IAAI,WAEpB30C,EAAE20C,IAAI,SAAUn1C,EAAE6/K,OACpB,EACAvrI,KAAM,SAAU31C,EAAOq5J,EAAIlmE,GACzB,IAAI9xF,EAAI8xF,EAASl2D,QACb57B,EAAE0uL,SACJj0H,EAAE,QAAQtlB,IAAI,SAAUn1C,EAAE0uL,QAE9B,IAEFj0H,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,UAAW,CACtC6tB,MAAO,SAAUxnC,EAAOq5J,EAAIlmE,GAC1B,IAAItxF,EAAIi6D,EAAEu9F,EAAGj8B,QACX/7H,EAAI8xF,EAASl2D,QACXp7B,EAAE20C,IAAI,aACRn1C,EAAE2uL,SAAWnuL,EAAE20C,IAAI,YAErB30C,EAAE20C,IAAI,UAAWn1C,EAAEqmD,QACrB,EACA/R,KAAM,SAAU31C,EAAOq5J,EAAIlmE,GACzB,IAAI9xF,EAAI8xF,EAASl2D,QACb57B,EAAE2uL,UACJl0H,EAAEu9F,EAAGj8B,QAAQ5mF,IAAI,UAAWn1C,EAAE2uL,SAElC,IAEFl0H,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,SAAU,CACrC6tB,MAAO,SAAUxnC,EAAOq5J,EAAI17J,GACrBA,EAAEsyL,wBACLtyL,EAAEsyL,sBAAwBtyL,EAAEy/H,OAAOwwC,cAAa,IAE9CjwK,EAAEsyL,sBAAsB,KAAOtyL,EAAE0B,SAAS,IAA6C,SAAvC1B,EAAEsyL,sBAAsB,GAAGvxH,UAC7E/gE,EAAEuyL,eAAiBvyL,EAAEsyL,sBAAsBpnK,SAE/C,EACAujK,KAAM,SAAUpsL,EAAOq5J,EAAI17J,GACzB,IAAI0D,EAAI1D,EAAEs/B,QACR+8E,GAAW,EACX4zD,EAAejwK,EAAEsyL,sBAAsB,GACvC5wL,EAAW1B,EAAE0B,SAAS,GACpBuuK,IAAiBvuK,GAAqC,SAAzBuuK,EAAalvG,SACvCr9D,EAAEiqL,MAAmB,MAAXjqL,EAAEiqL,OACX3tL,EAAEuyL,eAAenrJ,IAAM6oI,EAAaloH,aAAe1lD,EAAMq+C,MAAQh9C,EAAE0qL,kBACrEne,EAAazjH,UAAY6vD,EAAW4zD,EAAazjH,UAAY9oD,EAAE2qL,YACtDhsL,EAAMq+C,MAAQ1gD,EAAEuyL,eAAenrJ,IAAM1jC,EAAE0qL,oBAChDne,EAAazjH,UAAY6vD,EAAW4zD,EAAazjH,UAAY9oD,EAAE2qL,cAG9D3qL,EAAEiqL,MAAmB,MAAXjqL,EAAEiqL,OACX3tL,EAAEuyL,eAAe3mI,KAAOqkH,EAAalpH,YAAc1kD,EAAMo+C,MAAQ/8C,EAAE0qL,kBACrEne,EAAaxjH,WAAa4vD,EAAW4zD,EAAaxjH,WAAa/oD,EAAE2qL,YACxDhsL,EAAMo+C,MAAQzgD,EAAEuyL,eAAe3mI,KAAOloD,EAAE0qL,oBACjDne,EAAaxjH,WAAa4vD,EAAW4zD,EAAaxjH,WAAa/oD,EAAE2qL,gBAIhE3qL,EAAEiqL,MAAmB,MAAXjqL,EAAEiqL,OACXtrL,EAAMq+C,MAAQyd,EAAEz8D,GAAU8qD,YAAc9oD,EAAE0qL,kBAC5C/xE,EAAWl+C,EAAEz8D,GAAU8qD,UAAU2R,EAAEz8D,GAAU8qD,YAAc9oD,EAAE2qL,aACpDlwH,EAAEn5D,QAAQ4iD,UAAYvlD,EAAMq+C,MAAQyd,EAAEz8D,GAAU8qD,aAAe9oD,EAAE0qL,oBAC1E/xE,EAAWl+C,EAAEz8D,GAAU8qD,UAAU2R,EAAEz8D,GAAU8qD,YAAc9oD,EAAE2qL,eAG5D3qL,EAAEiqL,MAAmB,MAAXjqL,EAAEiqL,OACXtrL,EAAMo+C,MAAQ0d,EAAEz8D,GAAU+qD,aAAe/oD,EAAE0qL,kBAC7C/xE,EAAWl+C,EAAEz8D,GAAU+qD,WAAW0R,EAAEz8D,GAAU+qD,aAAe/oD,EAAE2qL,aACtDlwH,EAAEn5D,QAAQygD,SAAWpjD,EAAMo+C,MAAQ0d,EAAEz8D,GAAU+qD,cAAgB/oD,EAAE0qL,oBAC1E/xE,EAAWl+C,EAAEz8D,GAAU+qD,WAAW0R,EAAEz8D,GAAU+qD,aAAe/oD,EAAE2qL,iBAIpD,IAAbhyE,GAAsBl+C,EAAEu9F,GAAG4zB,YAAc5rL,EAAEusL,eAC7C9xH,EAAEu9F,GAAG4zB,UAAUY,eAAelwL,EAAGqC,EAErC,IAEF87D,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,OAAQ,CACnC6tB,MAAO,SAAUxnC,EAAOq5J,EAAI17J,GAC1B,IAAI0D,EAAI1D,EAAEs/B,QACVt/B,EAAEwyL,aAAe,GACjBr0H,EAAEz6D,EAAE4qL,KAAKhwJ,cAAgB9P,OAAS9qB,EAAE4qL,KAAKzmG,OAAS,sBAAwBnkF,EAAE4qL,MAAM1vJ,MAAK,WACrF,IAAI6zJ,EAAKt0H,EAAEz0D,MACTgpL,EAAKD,EAAGvnK,SACNxhB,OAAS1J,EAAE6gE,QAAQ,IACrB7gE,EAAEwyL,aAAahyL,KAAK,CAClB2uB,KAAMzlB,KACN+7C,MAAOgtI,EAAGlyB,aACV34G,OAAQ6qI,EAAGjyB,cACXp5H,IAAKsrJ,EAAGtrJ,IACRwkB,KAAM8mI,EAAG9mI,MAGf,GACF,EACA6iI,KAAM,SAAUpsL,EAAOq5J,EAAI+J,GACzB,IAAIktB,EACFC,EACAC,EACAC,EACA9xL,EACA8C,EACAI,EACAgC,EACAlG,EACA6+B,EACAn7B,EAAI+hK,EAAKnmI,QACT97B,EAAIE,EAAE8qL,cACNuE,EAAKr3B,EAAGxwI,OAAO0gC,KACfonI,EAAKD,EAAKttB,EAAKsrB,kBAAkBtrI,MACjCwtI,EAAKv3B,EAAGxwI,OAAOkc,IACf8rJ,EAAKD,EAAKxtB,EAAKsrB,kBAAkBnpI,OACnC,IAAK5nD,EAAIylK,EAAK+sB,aAAatyL,OAAS,EAAGF,GAAK,EAAGA,IAE7C8D,GADA9C,EAAIykK,EAAK+sB,aAAaxyL,GAAG4rD,KAAO65G,EAAK2qB,QAAQxkI,MACrC65G,EAAK+sB,aAAaxyL,GAAGylD,MAE7Bv/C,GADAhC,EAAIuhK,EAAK+sB,aAAaxyL,GAAGonC,IAAMq+H,EAAK2qB,QAAQhpJ,KACpCq+H,EAAK+sB,aAAaxyL,GAAG4nD,OACzBorI,EAAKhyL,EAAIwC,GAAKuvL,EAAKjvL,EAAIN,GAAK0vL,EAAKhvL,EAAIV,GAAKyvL,EAAK/sL,EAAI1C,IAAM26D,EAAE/8B,SAASqkI,EAAK+sB,aAAaxyL,GAAGmvB,KAAKyR,cAAe6kI,EAAK+sB,aAAaxyL,GAAGmvB,OAChIs2I,EAAK+sB,aAAaxyL,GAAGmzL,UACnB1tB,EAAKnmI,QAAQgvJ,KAAKhvC,SACpBmmB,EAAKnmI,QAAQgvJ,KAAKhvC,QAAQh/I,KAAKmlK,EAAK5kG,QAASx+D,EAAO87D,EAAEn3D,OAAOy+J,EAAKgrB,UAAW,CAC3E2C,SAAU3tB,EAAK+sB,aAAaxyL,GAAGmvB,QAIrCs2I,EAAK+sB,aAAaxyL,GAAGmzL,UAAW,IAGf,UAAfzvL,EAAE6qL,WACJoE,EAAK/kL,KAAKC,IAAI3J,EAAIgvL,IAAO1vL,EACzBovL,EAAKhlL,KAAKC,IAAI3H,EAAI+sL,IAAOzvL,EACzBqvL,EAAKjlL,KAAKC,IAAI7M,EAAIgyL,IAAOxvL,EACzBsvL,EAAKllL,KAAKC,IAAI/J,EAAIivL,IAAOvvL,EACrBmvL,IACFj3B,EAAG70G,SAASzf,IAAMq+H,EAAK+qB,mBAAmB,WAAY,CACpDppJ,IAAKljC,EAAIuhK,EAAKsrB,kBAAkBnpI,OAChCgE,KAAM,IACLxkB,KAEDwrJ,IACFl3B,EAAG70G,SAASzf,IAAMq+H,EAAK+qB,mBAAmB,WAAY,CACpDppJ,IAAKlhC,EACL0lD,KAAM,IACLxkB,KAEDyrJ,IACFn3B,EAAG70G,SAAS+E,KAAO65G,EAAK+qB,mBAAmB,WAAY,CACrDppJ,IAAK,EACLwkB,KAAM5qD,EAAIykK,EAAKsrB,kBAAkBtrI,QAChCmG,MAEDknI,IACFp3B,EAAG70G,SAAS+E,KAAO65G,EAAK+qB,mBAAmB,WAAY,CACrDppJ,IAAK,EACLwkB,KAAM9nD,IACL8nD,OAGP/sB,EAAQ8zJ,GAAMC,GAAMC,GAAMC,EACP,UAAfpvL,EAAE6qL,WACJoE,EAAK/kL,KAAKC,IAAI3J,EAAI+uL,IAAOzvL,EACzBovL,EAAKhlL,KAAKC,IAAI3H,EAAIgtL,IAAO1vL,EACzBqvL,EAAKjlL,KAAKC,IAAI7M,EAAI+xL,IAAOvvL,EACzBsvL,EAAKllL,KAAKC,IAAI/J,EAAIkvL,IAAOxvL,EACrBmvL,IACFj3B,EAAG70G,SAASzf,IAAMq+H,EAAK+qB,mBAAmB,WAAY,CACpDppJ,IAAKljC,EACL0nD,KAAM,IACLxkB,KAEDwrJ,IACFl3B,EAAG70G,SAASzf,IAAMq+H,EAAK+qB,mBAAmB,WAAY,CACpDppJ,IAAKlhC,EAAIu/J,EAAKsrB,kBAAkBnpI,OAChCgE,KAAM,IACLxkB,KAEDyrJ,IACFn3B,EAAG70G,SAAS+E,KAAO65G,EAAK+qB,mBAAmB,WAAY,CACrDppJ,IAAK,EACLwkB,KAAM5qD,IACL4qD,MAEDknI,IACFp3B,EAAG70G,SAAS+E,KAAO65G,EAAK+qB,mBAAmB,WAAY,CACrDppJ,IAAK,EACLwkB,KAAM9nD,EAAI2hK,EAAKsrB,kBAAkBtrI,QAChCmG,QAGF65G,EAAK+sB,aAAaxyL,GAAGmzL,WAAaR,GAAMC,GAAMC,GAAMC,GAAMj0J,IACzD4mI,EAAKnmI,QAAQgvJ,KAAKA,MACpB7oB,EAAKnmI,QAAQgvJ,KAAKA,KAAKhuL,KAAKmlK,EAAK5kG,QAASx+D,EAAO87D,EAAEn3D,OAAOy+J,EAAKgrB,UAAW,CACxE2C,SAAU3tB,EAAK+sB,aAAaxyL,GAAGmvB,QAIrCs2I,EAAK+sB,aAAaxyL,GAAGmzL,SAAWR,GAAMC,GAAMC,GAAMC,GAAMj0J,EAE5D,IAEFs/B,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,QAAS,CACpC6tB,MAAO,SAAUxnC,EAAOq5J,EAAIlmE,GAC1B,IAAIv8E,EACFvV,EAAI8xF,EAASl2D,QACbyqJ,EAAQ5rH,EAAE99B,UAAU89B,EAAEz6D,EAAEgI,QAAQqH,MAAK,SAAU9M,EAAGC,GAChD,OAAQ6T,SAASokD,EAAEl4D,GAAG4yC,IAAI,UAAW,KAAO,IAAM9+B,SAASokD,EAAEj4D,GAAG2yC,IAAI,UAAW,KAAO,EACxF,IACGkxI,EAAM7pL,SAGX+Y,EAAMc,SAASokD,EAAE4rH,EAAM,IAAIlxI,IAAI,UAAW,KAAO,EACjDslB,EAAE4rH,GAAOnrJ,MAAK,SAAU5+B,GACtBm+D,EAAEz0D,MAAMmvC,IAAI,SAAU5/B,EAAMjZ,EAC9B,IACA0J,KAAKmvC,IAAI,SAAU5/B,EAAM8wK,EAAM7pL,QACjC,IAEFi+D,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,SAAU,CACrC6tB,MAAO,SAAUxnC,EAAOq5J,EAAIlmE,GAC1B,IAAItxF,EAAIi6D,EAAEu9F,EAAGj8B,QACX/7H,EAAI8xF,EAASl2D,QACXp7B,EAAE20C,IAAI,YACRn1C,EAAE2vL,QAAUnvL,EAAE20C,IAAI,WAEpB30C,EAAE20C,IAAI,SAAUn1C,EAAEunD,OACpB,EACAjT,KAAM,SAAU31C,EAAOq5J,EAAIlmE,GACzB,IAAI9xF,EAAI8xF,EAASl2D,QACb57B,EAAE2vL,SACJl1H,EAAEu9F,EAAGj8B,QAAQ5mF,IAAI,SAAUn1C,EAAE2vL,QAEjC,IAEqBl1H,EAAEu9F,GAAG61B,UAoB5BpzH,EAAE29F,OAAO,eAAgB39F,EAAEu9F,GAAG+xB,MAAO,CACnC/xJ,QAAS,SACT+gI,kBAAmB,SACnBn9H,QAAS,CACPg0J,YAAY,EACZ5jI,SAAS,EACT6jI,gBAAiB,OACjBC,cAAe,QACfvpI,aAAa,EACbwpI,UAAU,EACVvlH,QAAS,CACP,kBAAmB,yCAErB2/G,aAAa,EACb6F,OAAO,EACP3F,MAAM,EACN4F,QAAS,SACTl0D,QAAQ,EACRuyC,UAAW,KACXrsH,SAAU,KACViuI,UAAW,GACXluI,SAAU,GAEVuF,OAAQ,GAER4oI,OAAQ,KACRhqJ,MAAO,KACPmO,KAAM,MAER87I,KAAM,SAAU7vL,GACd,OAAOulB,WAAWvlB,IAAU,CAC9B,EACA8vL,UAAW,SAAU9vL,GACnB,OAAQ+E,MAAMwgB,WAAWvlB,GAC3B,EACAyxK,WAAY,SAAUlvI,EAAIvgC,GACxB,GAA8B,WAA1Bk4D,EAAE33B,GAAIqS,IAAI,YACZ,OAAO,EAET,IAAI08H,EAAStvK,GAAW,SAANA,EAAe,aAAe,YAC9CukC,GAAM,EACR,GAAIhE,EAAG+uI,GAAU,EACf,OAAO,EAMT,IACE/uI,EAAG+uI,GAAU,EACb/qI,EAAMhE,EAAG+uI,GAAU,EACnB/uI,EAAG+uI,GAAU,CACf,CAAE,MAAOt0K,GAIT,CACA,OAAOupC,CACT,EACAkzH,QAAS,WACP,IAAI0yB,EACF1sL,EAAIgG,KAAK41B,QACT9O,EAAO9mB,KACTA,KAAKq1J,UAAU,gBACf5gG,EAAEn3D,OAAO0C,KAAM,CACbsqL,eAAgBtwL,EAAEumD,YAClBA,YAAavmD,EAAEumD,YACfgqI,gBAAiBvqL,KAAKm3D,QACtBqzH,8BAA+B,GAC/BrC,QAASnuL,EAAE+7H,QAAU/7H,EAAEgwL,OAAShwL,EAAEgsD,QAAUhsD,EAAE+7H,QAAU,sBAAwB,OAI9E/1H,KAAKm3D,QAAQ,GAAG1iC,SAAStvB,MAAM,kDACjCnF,KAAKm3D,QAAQjlB,KAAKuiB,EAAE,kCAAkCtlB,IAAI,CACxDjxC,SAAU,SACVi/C,SAAUn9C,KAAKm3D,QAAQhoB,IAAI,YAC3B4M,MAAO/7C,KAAKm3D,QAAQ0/F,aACpB34G,OAAQl+C,KAAKm3D,QAAQ2/F,cACrBp5H,IAAK19B,KAAKm3D,QAAQhoB,IAAI,OACtB+S,KAAMliD,KAAKm3D,QAAQhoB,IAAI,WAEzBnvC,KAAKm3D,QAAUn3D,KAAKm3D,QAAQ/2B,SAASnqC,KAAK,eAAgB+J,KAAKm3D,QAAQszH,UAAU,aACjFzqL,KAAK0qL,kBAAmB,EACxBhE,EAAU,CACRjuB,UAAWz4J,KAAKuqL,gBAAgBp7I,IAAI,aACpCq0C,YAAaxjF,KAAKuqL,gBAAgBp7I,IAAI,eACtC8xH,aAAcjhK,KAAKuqL,gBAAgBp7I,IAAI,gBACvC4N,WAAY/8C,KAAKuqL,gBAAgBp7I,IAAI,eAEvCnvC,KAAKm3D,QAAQhoB,IAAIu3I,GACjB1mL,KAAKuqL,gBAAgBp7I,IAAI,SAAU,GAInCnvC,KAAK2qL,oBAAsB3qL,KAAKuqL,gBAAgBp7I,IAAI,UACpDnvC,KAAKuqL,gBAAgBp7I,IAAI,SAAU,QACnCnvC,KAAKwqL,8BAA8B1zL,KAAKkJ,KAAKuqL,gBAAgBp7I,IAAI,CAC/DgO,SAAU,SACVqE,KAAM,EACNtS,QAAS,WAKXlvC,KAAKuqL,gBAAgBp7I,IAAIu3I,GACzB1mL,KAAK4qL,yBAEP5qL,KAAK6qL,gBACD7wL,EAAE+vL,UACJt1H,EAAEz0D,KAAKm3D,SAASxkB,GAAG,cAAc,WAC3B34C,EAAEqhC,WAGNvU,EAAKutI,aAAa,yBAClBvtI,EAAKgkK,SAAS56I,OAChB,IAAGyC,GAAG,cAAc,WACd34C,EAAEqhC,UAGDvU,EAAKikK,WACRjkK,EAAKuuI,UAAU,yBACfvuI,EAAKgkK,SAAS36I,OAElB,IAEFnwC,KAAKsiL,YACP,EACAluB,SAAU,WACRp0J,KAAKwiL,gBACLxiL,KAAKgrL,cAAc9hJ,SACnB,IAAIqzF,EACF63B,EAAW,SAAU62B,GACnBx2H,EAAEw2H,GAAKl9I,WAAW,aAAaA,WAAW,gBAAgBgF,IAAI,aAChE,EAiBF,OAdI/yC,KAAK0qL,mBACPt2B,EAASp0J,KAAKm3D,SACdolE,EAAUv8H,KAAKm3D,QACfn3D,KAAKuqL,gBAAgBp7I,IAAI,CACvBgO,SAAUo/E,EAAQptF,IAAI,YACtB4M,MAAOwgF,EAAQs6B,aACf34G,OAAQq+E,EAAQu6B,cAChBp5H,IAAK6+F,EAAQptF,IAAI,OACjB+S,KAAMq6E,EAAQptF,IAAI,UACjB8L,YAAYshF,GACfA,EAAQrzF,UAEVlpC,KAAKuqL,gBAAgBp7I,IAAI,SAAUnvC,KAAK2qL,qBACxCv2B,EAASp0J,KAAKuqL,iBACPvqL,IACT,EACAw0J,WAAY,SAAU35J,EAAKN,GAEzB,OADAyF,KAAKw8D,OAAO3hE,EAAKN,GACTM,GACN,IAAK,UACHmF,KAAKkrL,iBACLlrL,KAAK6qL,gBACL,MACF,IAAK,cACH7qL,KAAKsqL,eAAiB/vL,EAK5B,EACAswL,cAAe,WACb,IACE32I,EACA59C,EACAyE,EACAowL,EACAlH,EALEjqL,EAAIgG,KAAK41B,QAMX9O,EAAO9mB,KAaT,GAZAA,KAAKiqL,QAAUjwL,EAAEiwL,UAAax1H,EAAE,uBAAwBz0D,KAAKm3D,SAAS3gE,OAAoB,CACxFuE,EAAG,kBACHxD,EAAG,kBACHkE,EAAG,kBACH6L,EAAG,kBACH8jL,GAAI,mBACJC,GAAI,mBACJC,GAAI,mBACJC,GAAI,oBARyE,UAU/EvrL,KAAK8qL,SAAWr2H,IAChBz0D,KAAKgrL,cAAgBv2H,IACjBz0D,KAAKiqL,QAAQr1J,cAAgB9P,OAM/B,IALqB,QAAjB9kB,KAAKiqL,UACPjqL,KAAKiqL,QAAU,uBAEjBlvL,EAAIiF,KAAKiqL,QAAQh8K,MAAM,KACvBjO,KAAKiqL,QAAU,CAAC,EACX3zL,EAAI,EAAGA,EAAIyE,EAAEvE,OAAQF,IAExB60L,EAAQ,iBADRj3I,EAASpvB,OAAOpuB,UAAU49D,KAAK19D,KAAKmE,EAAEzE,KAEtC2tL,EAAOxvH,EAAE,SACTz0D,KAAKq1J,UAAU4uB,EAAM,uBAAyBkH,GAC9ClH,EAAK90I,IAAI,CACPoS,OAAQvnD,EAAEunD,SAEZvhD,KAAKiqL,QAAQ/1I,GAAU,iBAAmBA,EACrCl0C,KAAKm3D,QAAQ1wB,SAASzmC,KAAKiqL,QAAQ/1I,IAAS19C,SAC/CwJ,KAAKm3D,QAAQ3c,OAAOypI,GACpBjkL,KAAKgrL,cAAgBhrL,KAAKgrL,cAAc14K,IAAI2xK,IAIlDjkL,KAAKwrL,YAAc,SAAUryL,GAC3B,IAAI7C,EAAG2tL,EAAMwH,EAAQC,EAErB,IAAKp1L,KADL6C,EAASA,GAAU6G,KAAKm3D,QACdn3D,KAAKiqL,QACTjqL,KAAKiqL,QAAQ3zL,GAAGs+B,cAAgB9P,OAClC9kB,KAAKiqL,QAAQ3zL,GAAK0J,KAAKm3D,QAAQ1wB,SAASzmC,KAAKiqL,QAAQ3zL,IAAI6+B,QAAQ+a,QACxDlwC,KAAKiqL,QAAQ3zL,GAAGq+B,QAAU30B,KAAKiqL,QAAQ3zL,GAAG+8B,YACnDrzB,KAAKiqL,QAAQ3zL,GAAKm+D,EAAEz0D,KAAKiqL,QAAQ3zL,IACjC0J,KAAK8zJ,IAAI9zJ,KAAKiqL,QAAQ3zL,GAAI,CACxB,UAAawwB,EAAKy7J,cAGlBviL,KAAK0qL,kBAAoB1qL,KAAKuqL,gBAAgB,GAAG91J,SAAStvB,MAAM,uCAClE8+K,EAAOxvH,EAAEz0D,KAAKiqL,QAAQ3zL,GAAI0J,KAAKm3D,SAC/Bu0H,EAAa,kBAAkB7lL,KAAKvP,GAAK2tL,EAAKntB,cAAgBmtB,EAAKptB,aACnE40B,EAAS,CAAC,UAAW,UAAU5lL,KAAKvP,GAAK,MAAQ,UAAUuP,KAAKvP,GAAK,SAAW,MAAMuP,KAAKvP,GAAK,QAAU,QAAQyL,KAAK,IACvH5I,EAAOg2C,IAAIs8I,EAAQC,GACnB1rL,KAAK4qL,yBAEP5qL,KAAK8qL,SAAW9qL,KAAK8qL,SAASx4K,IAAItS,KAAKiqL,QAAQ3zL,GAEnD,EAGA0J,KAAKwrL,YAAYxrL,KAAKm3D,SACtBn3D,KAAK8qL,SAAW9qL,KAAK8qL,SAASx4K,IAAItS,KAAKm3D,QAAQ37B,KAAK,yBACpDx7B,KAAK8qL,SAAS3wB,mBACdn6J,KAAK8qL,SAASn4I,GAAG,aAAa,WACvB7rB,EAAKikK,WACJ/qL,KAAKo+B,YACP6lJ,EAAOjkL,KAAKo+B,UAAUj5B,MAAM,wCAE9B2hB,EAAKm9J,KAAOA,GAAQA,EAAK,GAAKA,EAAK,GAAK,KAE5C,IACIjqL,EAAE+vL,WACJ/pL,KAAK8qL,SAAS36I,OACdnwC,KAAKq1J,UAAU,yBAEnB,EACA61B,eAAgB,WACdlrL,KAAKgrL,cAAc9hJ,QACrB,EACA+5I,cAAe,SAAUtqL,GACvB,IAAIrC,EACF49C,EACAy3I,GAAU,EACZ,IAAKr1L,KAAK0J,KAAKiqL,UACb/1I,EAASugB,EAAEz0D,KAAKiqL,QAAQ3zL,IAAI,MACbqC,EAAMQ,QAAUs7D,EAAE/8B,SAASwc,EAAQv7C,EAAMQ,WACtDwyL,GAAU,GAGd,OAAQ3rL,KAAK41B,QAAQyF,UAAYswJ,CACnC,EACArI,YAAa,SAAU3qL,GACrB,IAAIizL,EACFC,EACAhS,EACA7/K,EAAIgG,KAAK41B,QACTkH,EAAK98B,KAAKm3D,QA6CZ,OA5CAn3D,KAAK+qL,UAAW,EAChB/qL,KAAK8rL,eACLF,EAAU5rL,KAAKoqL,KAAKpqL,KAAK+1H,OAAO5mF,IAAI,SACpC08I,EAAS7rL,KAAKoqL,KAAKpqL,KAAK+1H,OAAO5mF,IAAI,QAC/Bn1C,EAAEmqL,cACJyH,GAAWn3H,EAAEz6D,EAAEmqL,aAAaphI,cAAgB,EAC5C8oI,GAAUp3H,EAAEz6D,EAAEmqL,aAAarhI,aAAe,GAE5C9iD,KAAKwhB,OAASxhB,KAAK+1H,OAAOv0G,SAC1BxhB,KAAKm9C,SAAW,CACd+E,KAAM0pI,EACNluJ,IAAKmuJ,GAEP7rL,KAAK27D,KAAO37D,KAAKmoL,QAAU,CACzBpsI,MAAO/7C,KAAK+1H,OAAOh6E,QACnBmC,OAAQl+C,KAAK+1H,OAAO73E,UAClB,CACFnC,MAAOjf,EAAGif,QACVmC,OAAQphB,EAAGohB,UAEbl+C,KAAK+rL,aAAe/rL,KAAKmoL,QAAU,CACjCpsI,MAAOjf,EAAG+5H,aACV34G,OAAQphB,EAAGg6H,eACT,CACF/6G,MAAOjf,EAAGif,QACVmC,OAAQphB,EAAGohB,UAEbl+C,KAAKgsL,SAAW,CACdjwI,MAAOjf,EAAG+5H,aAAe/5H,EAAGif,QAC5BmC,OAAQphB,EAAGg6H,cAAgBh6H,EAAGohB,UAEhCl+C,KAAKimL,iBAAmB,CACtB/jI,KAAM0pI,EACNluJ,IAAKmuJ,GAEP7rL,KAAKisL,sBAAwB,CAC3B/pI,KAAMvpD,EAAMo+C,MACZrZ,IAAK/kC,EAAMq+C,OAEbh3C,KAAKugD,YAAuC,kBAAlBvmD,EAAEumD,YAA2BvmD,EAAEumD,YAAcvgD,KAAK+rL,aAAahwI,MAAQ/7C,KAAK+rL,aAAa7tI,QAAU,EAC7H27H,EAASplH,EAAE,iBAAmBz0D,KAAKikL,MAAM90I,IAAI,UAC7CslB,EAAE,QAAQtlB,IAAI,SAAqB,SAAX0qI,EAAoB75K,KAAKikL,KAAO,UAAYpK,GACpE75K,KAAKq1J,UAAU,yBACfr1J,KAAKksL,WAAW,QAASvzL,IAClB,CACT,EACA8qL,WAAY,SAAU9qL,GACpB,IAAI1C,EACFggD,EACAk2I,EAAMnsL,KAAKisL,sBACX1vL,EAAIyD,KAAKikL,KACTmI,EAAKzzL,EAAMo+C,MAAQo1I,EAAIjqI,MAAQ,EAC/BmqI,EAAK1zL,EAAMq+C,MAAQm1I,EAAIzuJ,KAAO,EAC9B8V,EAAUxzC,KAAK8tK,QAAQvxK,GAEzB,OADAyD,KAAKssL,0BACA94I,IAGLv9C,EAAOu9C,EAAQ33C,MAAMmE,KAAM,CAACrH,EAAOyzL,EAAIC,IACvCrsL,KAAKusL,yBAAyB5zL,EAAMs+C,WAChCj3C,KAAKsqL,cAAgB3xL,EAAMs+C,YAC7BhhD,EAAO+J,KAAKwsL,aAAav2L,EAAM0C,IAEjC1C,EAAO+J,KAAKysL,aAAax2L,EAAM0C,GAC/BqH,KAAK0sL,aAAaz2L,GAClB+J,KAAKksL,WAAW,SAAUvzL,GAC1Bs9C,EAAQj2C,KAAK2sL,iBACR3sL,KAAKmoL,SAAWnoL,KAAKwqL,8BAA8Bh0L,QACtDwJ,KAAK4qL,wBAEFn2H,EAAEn+B,cAAc2f,KACnBj2C,KAAKssL,wBACLtsL,KAAKk0J,SAAS,SAAUv7J,EAAOqH,KAAKgyJ,MACpChyJ,KAAK2sL,kBAEA,EACT,EACAjJ,WAAY,SAAU/qL,GACpBqH,KAAK+qL,UAAW,EAChB,IAAI6B,EACFC,EACAC,EACAC,EACAtxL,EACAymD,EACAxkB,EACA1jC,EAAIgG,KAAK41B,QACT9O,EAAO9mB,KA8BT,OA7BIA,KAAKmoL,UAGP2E,GADAD,GADAD,EAAK5sL,KAAKwqL,+BACAh0L,QAAU,YAAYqP,KAAK+mL,EAAG,GAAGn4J,YACxBz0B,KAAKgsK,WAAW4gB,EAAG,GAAI,QAAU,EAAI9lK,EAAKklK,SAAS9tI,OACtE6uI,EAAWF,EAAO,EAAI/lK,EAAKklK,SAASjwI,MACpCtgD,EAAI,CACFsgD,MAAOj1B,EAAKivG,OAAOh6E,QAAUgxI,EAC7B7uI,OAAQp3B,EAAKivG,OAAO73E,SAAW4uI,GAEjC5qI,EAAOpiC,WAAWgH,EAAKqwC,QAAQhoB,IAAI,UAAYroB,EAAKq2B,SAAS+E,KAAOp7B,EAAKm/J,iBAAiB/jI,OAAS,KACnGxkB,EAAM5d,WAAWgH,EAAKqwC,QAAQhoB,IAAI,SAAWroB,EAAKq2B,SAASzf,IAAM5W,EAAKm/J,iBAAiBvoJ,MAAQ,KAC1F1jC,EAAEgsD,SACLhmD,KAAKm3D,QAAQhoB,IAAIslB,EAAEn3D,OAAO7B,EAAG,CAC3BiiC,IAAKA,EACLwkB,KAAMA,KAGVp7B,EAAKivG,OAAO73E,OAAOp3B,EAAK60C,KAAKzd,QAC7Bp3B,EAAKivG,OAAOh6E,MAAMj1B,EAAK60C,KAAK5f,OACxB/7C,KAAKmoL,UAAYnuL,EAAEgsD,SACrBhmD,KAAK4qL,yBAGTn2H,EAAE,QAAQtlB,IAAI,SAAU,QACxBnvC,KAAKq0J,aAAa,yBAClBr0J,KAAKksL,WAAW,OAAQvzL,GACpBqH,KAAKmoL,SACPnoL,KAAK+1H,OAAO7sF,UAEP,CACT,EACAojJ,sBAAuB,WACrBtsL,KAAKgtL,aAAe,CAClBtvJ,IAAK19B,KAAKm9C,SAASzf,IACnBwkB,KAAMliD,KAAKm9C,SAAS+E,MAEtBliD,KAAKitL,SAAW,CACdlxI,MAAO/7C,KAAK27D,KAAK5f,MACjBmC,OAAQl+C,KAAK27D,KAAKzd,OAEtB,EACAyuI,cAAe,WACb,IAAI12I,EAAQ,CAAC,EAcb,OAbIj2C,KAAKm9C,SAASzf,MAAQ19B,KAAKgtL,aAAatvJ,MAC1CuY,EAAMvY,IAAM19B,KAAKm9C,SAASzf,IAAM,MAE9B19B,KAAKm9C,SAAS+E,OAASliD,KAAKgtL,aAAa9qI,OAC3CjM,EAAMiM,KAAOliD,KAAKm9C,SAAS+E,KAAO,MAEhCliD,KAAK27D,KAAK5f,QAAU/7C,KAAKitL,SAASlxI,QACpC9F,EAAM8F,MAAQ/7C,KAAK27D,KAAK5f,MAAQ,MAE9B/7C,KAAK27D,KAAKzd,SAAWl+C,KAAKitL,SAAS/uI,SACrCjI,EAAMiI,OAASl+C,KAAK27D,KAAKzd,OAAS,MAEpCl+C,KAAK+1H,OAAO5mF,IAAI8G,GACTA,CACT,EACAs2I,yBAA0B,SAAUW,GAClC,IAAIC,EACFC,EACAC,EACAC,EACA9wL,EACAxC,EAAIgG,KAAK41B,QACXp5B,EAAI,CACFw/C,SAAUh8C,KAAKqqL,UAAUrwL,EAAEgiD,UAAYhiD,EAAEgiD,SAAW,EACpDC,SAAUj8C,KAAKqqL,UAAUrwL,EAAEiiD,UAAYjiD,EAAEiiD,SAAWsxI,IACpDrD,UAAWlqL,KAAKqqL,UAAUrwL,EAAEkwL,WAAalwL,EAAEkwL,UAAY,EACvD5hB,UAAWtoK,KAAKqqL,UAAUrwL,EAAEsuK,WAAatuK,EAAEsuK,UAAYilB,MAErDvtL,KAAKsqL,cAAgB4C,KACvBC,EAAY3wL,EAAE0tL,UAAYlqL,KAAKugD,YAC/B8sI,EAAa7wL,EAAEw/C,SAAWh8C,KAAKugD,YAC/B6sI,EAAY5wL,EAAE8rK,UAAYtoK,KAAKugD,YAC/B+sI,EAAa9wL,EAAEy/C,SAAWj8C,KAAKugD,YAC3B4sI,EAAY3wL,EAAEw/C,WAChBx/C,EAAEw/C,SAAWmxI,GAEXE,EAAa7wL,EAAE0tL,YACjB1tL,EAAE0tL,UAAYmD,GAEZD,EAAY5wL,EAAEy/C,WAChBz/C,EAAEy/C,SAAWmxI,GAEXE,EAAa9wL,EAAE8rK,YACjB9rK,EAAE8rK,UAAYglB,IAGlBttL,KAAKwtL,aAAehxL,CACtB,EACAkwL,aAAc,SAAUz2L,GACtB+J,KAAKwhB,OAASxhB,KAAK+1H,OAAOv0G,SACtBxhB,KAAKqqL,UAAUp0L,EAAKisD,QACtBliD,KAAKm9C,SAAS+E,KAAOjsD,EAAKisD,MAExBliD,KAAKqqL,UAAUp0L,EAAKynC,OACtB19B,KAAKm9C,SAASzf,IAAMznC,EAAKynC,KAEvB19B,KAAKqqL,UAAUp0L,EAAKioD,UACtBl+C,KAAK27D,KAAKzd,OAASjoD,EAAKioD,QAEtBl+C,KAAKqqL,UAAUp0L,EAAK8lD,SACtB/7C,KAAK27D,KAAK5f,MAAQ9lD,EAAK8lD,MAE3B,EACAywI,aAAc,SAAUv2L,GACtB,IAAIw3L,EAAOztL,KAAKm9C,SACduwI,EAAQ1tL,KAAK27D,KACbp/D,EAAIyD,KAAKikL,KAcX,OAbIjkL,KAAKqqL,UAAUp0L,EAAKioD,QACtBjoD,EAAK8lD,MAAQ9lD,EAAKioD,OAASl+C,KAAKugD,YACvBvgD,KAAKqqL,UAAUp0L,EAAK8lD,SAC7B9lD,EAAKioD,OAASjoD,EAAK8lD,MAAQ/7C,KAAKugD,aAExB,OAANhkD,IACFtG,EAAKisD,KAAOurI,EAAKvrI,MAAQwrI,EAAM3xI,MAAQ9lD,EAAK8lD,OAC5C9lD,EAAKynC,IAAM,MAEH,OAANnhC,IACFtG,EAAKynC,IAAM+vJ,EAAK/vJ,KAAOgwJ,EAAMxvI,OAASjoD,EAAKioD,QAC3CjoD,EAAKisD,KAAOurI,EAAKvrI,MAAQwrI,EAAM3xI,MAAQ9lD,EAAK8lD,QAEvC9lD,CACT,EACAw2L,aAAc,SAAUx2L,GACtB,IAAI+D,EAAIgG,KAAKwtL,aACXjxL,EAAIyD,KAAKikL,KACT0J,EAAS3tL,KAAKqqL,UAAUp0L,EAAK8lD,QAAU/hD,EAAEiiD,UAAYjiD,EAAEiiD,SAAWhmD,EAAK8lD,MACvE6xI,EAAS5tL,KAAKqqL,UAAUp0L,EAAKioD,SAAWlkD,EAAEsuK,WAAatuK,EAAEsuK,UAAYryK,EAAKioD,OAC1E2vI,EAAS7tL,KAAKqqL,UAAUp0L,EAAK8lD,QAAU/hD,EAAEgiD,UAAYhiD,EAAEgiD,SAAW/lD,EAAK8lD,MACvE+xI,EAAS9tL,KAAKqqL,UAAUp0L,EAAKioD,SAAWlkD,EAAEkwL,WAAalwL,EAAEkwL,UAAYj0L,EAAKioD,OAC1E6vI,EAAK/tL,KAAKimL,iBAAiB/jI,KAAOliD,KAAK+rL,aAAahwI,MACpDiyI,EAAKhuL,KAAKimL,iBAAiBvoJ,IAAM19B,KAAK+rL,aAAa7tI,OACnD+vI,EAAK,UAAUpoL,KAAKtJ,GACpBw7B,EAAK,UAAUlyB,KAAKtJ,GAgCtB,OA/BIsxL,IACF53L,EAAK8lD,MAAQ/hD,EAAEgiD,UAEb8xI,IACF73L,EAAKioD,OAASlkD,EAAEkwL,WAEdyD,IACF13L,EAAK8lD,MAAQ/hD,EAAEiiD,UAEb2xI,IACF33L,EAAKioD,OAASlkD,EAAEsuK,WAEdulB,GAAUI,IACZh4L,EAAKisD,KAAO6rI,EAAK/zL,EAAEgiD,UAEjB2xI,GAAUM,IACZh4L,EAAKisD,KAAO6rI,EAAK/zL,EAAEiiD,UAEjB6xI,GAAU/1J,IACZ9hC,EAAKynC,IAAMswJ,EAAKh0L,EAAEkwL,WAEhB0D,GAAU71J,IACZ9hC,EAAKynC,IAAMswJ,EAAKh0L,EAAEsuK,WAIfryK,EAAK8lD,OAAU9lD,EAAKioD,QAAWjoD,EAAKisD,OAAQjsD,EAAKynC,IAE1CznC,EAAK8lD,OAAU9lD,EAAKioD,QAAWjoD,EAAKynC,MAAOznC,EAAKisD,OAC1DjsD,EAAKisD,KAAO,MAFZjsD,EAAKynC,IAAM,KAINznC,CACT,EACAi4L,gCAAiC,SAAU/2H,GAKzC,IAJA,IAAI7gE,EAAI,EACN63L,EAAS,GACTC,EAAU,CAACj3H,EAAQhoB,IAAI,kBAAmBgoB,EAAQhoB,IAAI,oBAAqBgoB,EAAQhoB,IAAI,qBAAsBgoB,EAAQhoB,IAAI,oBACzHk/I,EAAW,CAACl3H,EAAQhoB,IAAI,cAAegoB,EAAQhoB,IAAI,gBAAiBgoB,EAAQhoB,IAAI,iBAAkBgoB,EAAQhoB,IAAI,gBACzG74C,EAAI,EAAGA,IACZ63L,EAAO73L,GAAKwpB,WAAWsuK,EAAQ93L,KAAO,EACtC63L,EAAO73L,IAAMwpB,WAAWuuK,EAAS/3L,KAAO,EAE1C,MAAO,CACL4nD,OAAQiwI,EAAO,GAAKA,EAAO,GAC3BpyI,MAAOoyI,EAAO,GAAKA,EAAO,GAE9B,EACAvD,sBAAuB,WACrB,GAAK5qL,KAAKwqL,8BAA8Bh0L,OAMxC,IAHA,IAAI83L,EACFh4L,EAAI,EACJ6gE,EAAUn3D,KAAK+1H,QAAU/1H,KAAKm3D,QACzB7gE,EAAI0J,KAAKwqL,8BAA8Bh0L,OAAQF,IACpDg4L,EAAOtuL,KAAKwqL,8BAA8Bl0L,GAIrC0J,KAAKuuL,kBACRvuL,KAAKuuL,gBAAkBvuL,KAAKkuL,gCAAgCI,IAE9DA,EAAKn/I,IAAI,CACP+O,OAAQiZ,EAAQjZ,SAAWl+C,KAAKuuL,gBAAgBrwI,QAAU,EAC1DnC,MAAOob,EAAQpb,QAAU/7C,KAAKuuL,gBAAgBxyI,OAAS,GAG7D,EACA+vI,aAAc,WACZ,IAAIhvJ,EAAK98B,KAAKm3D,QACZn9D,EAAIgG,KAAK41B,QACX51B,KAAKwuL,cAAgB1xJ,EAAGtb,SACpBxhB,KAAKmoL,SACPnoL,KAAK+1H,OAAS/1H,KAAK+1H,QAAUthE,EAAE,eAAetlB,IAAI,CAChDjxC,SAAU,WAEZ8B,KAAKq1J,UAAUr1J,KAAK+1H,OAAQ/1H,KAAKmoL,SACjCnoL,KAAK+1H,OAAO5mF,IAAI,CACd4M,MAAO/7C,KAAKm3D,QAAQ0/F,aACpB34G,OAAQl+C,KAAKm3D,QAAQ2/F,cACrB35G,SAAU,WACV+E,KAAMliD,KAAKwuL,cAActsI,KAAO,KAChCxkB,IAAK19B,KAAKwuL,cAAc9wJ,IAAM,KAC9B6jB,SAAUvnD,EAAEunD,SAGdvhD,KAAK+1H,OAAOh7E,SAAS,QAAQo/G,oBAE7Bn6J,KAAK+1H,OAAS/1H,KAAKm3D,OAEvB,EACA22G,QAAS,CACPv2K,EAAG,SAAUoB,EAAOyzL,GAClB,MAAO,CACLrwI,MAAO/7C,KAAK+rL,aAAahwI,MAAQqwI,EAErC,EACA9kL,EAAG,SAAU3O,EAAOyzL,GAClB,IAAIqC,EAAKzuL,KAAK+rL,aAEd,MAAO,CACL7pI,KAFKliD,KAAKimL,iBAED/jI,KAAOkqI,EAChBrwI,MAAO0yI,EAAG1yI,MAAQqwI,EAEtB,EACArxL,EAAG,SAAUpC,EAAOyzL,EAAIC,GACtB,IAAIoC,EAAKzuL,KAAK+rL,aAEd,MAAO,CACLruJ,IAFK19B,KAAKimL,iBAEFvoJ,IAAM2uJ,EACdnuI,OAAQuwI,EAAGvwI,OAASmuI,EAExB,EACA5wL,EAAG,SAAU9C,EAAOyzL,EAAIC,GACtB,MAAO,CACLnuI,OAAQl+C,KAAK+rL,aAAa7tI,OAASmuI,EAEvC,EACAjB,GAAI,SAAUzyL,EAAOyzL,EAAIC,GACvB,OAAO53H,EAAEn3D,OAAO0C,KAAK8tK,QAAQryK,EAAEI,MAAMmE,KAAMlE,WAAYkE,KAAK8tK,QAAQv2K,EAAEsE,MAAMmE,KAAM,CAACrH,EAAOyzL,EAAIC,IAChG,EACAhB,GAAI,SAAU1yL,EAAOyzL,EAAIC,GACvB,OAAO53H,EAAEn3D,OAAO0C,KAAK8tK,QAAQryK,EAAEI,MAAMmE,KAAMlE,WAAYkE,KAAK8tK,QAAQxmK,EAAEzL,MAAMmE,KAAM,CAACrH,EAAOyzL,EAAIC,IAChG,EACAf,GAAI,SAAU3yL,EAAOyzL,EAAIC,GACvB,OAAO53H,EAAEn3D,OAAO0C,KAAK8tK,QAAQ/yK,EAAEc,MAAMmE,KAAMlE,WAAYkE,KAAK8tK,QAAQv2K,EAAEsE,MAAMmE,KAAM,CAACrH,EAAOyzL,EAAIC,IAChG,EACAd,GAAI,SAAU5yL,EAAOyzL,EAAIC,GACvB,OAAO53H,EAAEn3D,OAAO0C,KAAK8tK,QAAQ/yK,EAAEc,MAAMmE,KAAMlE,WAAYkE,KAAK8tK,QAAQxmK,EAAEzL,MAAMmE,KAAM,CAACrH,EAAOyzL,EAAIC,IAChG,GAEFH,WAAY,SAAUnxL,EAAGpC,GACvB87D,EAAEu9F,GAAG2xB,OAAO/sL,KAAKoJ,KAAMjF,EAAG,CAACpC,EAAOqH,KAAKgyJ,OAC7B,WAANj3J,GACFiF,KAAKk0J,SAASn5J,EAAGpC,EAAOqH,KAAKgyJ,KAEjC,EACA4xB,QAAS,CAAC,EACV5xB,GAAI,WACF,MAAO,CACLu4B,gBAAiBvqL,KAAKuqL,gBACtBpzH,QAASn3D,KAAKm3D,QACd4+D,OAAQ/1H,KAAK+1H,OACb54E,SAAUn9C,KAAKm9C,SACfwe,KAAM37D,KAAK27D,KACXowH,aAAc/rL,KAAK+rL,aACnB9F,iBAAkBjmL,KAAKimL,iBAE3B,IAOFxxH,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,UAAW,CACtCg8B,KAAM,SAAU31C,GACd,IAAImuB,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YAC3BzwL,EAAI8sB,EAAK8O,QACTg3J,EAAK9lK,EAAK0jK,8BACVqC,EAAOD,EAAGp2L,QAAU,YAAYqP,KAAK+mL,EAAG,GAAGn4J,UAC3Cq4J,EAAWD,GAAQ/lK,EAAKklJ,WAAW4gB,EAAG,GAAI,QAAU,EAAI9lK,EAAKklK,SAAS9tI,OACtE6uI,EAAWF,EAAO,EAAI/lK,EAAKklK,SAASjwI,MACpC9M,EAAQ,CACN8M,MAAOj1B,EAAK60C,KAAK5f,MAAQgxI,EACzB7uI,OAAQp3B,EAAK60C,KAAKzd,OAAS4uI,GAE7B5qI,EAAOpiC,WAAWgH,EAAKqwC,QAAQhoB,IAAI,UAAYroB,EAAKq2B,SAAS+E,KAAOp7B,EAAKm/J,iBAAiB/jI,OAAS,KACnGxkB,EAAM5d,WAAWgH,EAAKqwC,QAAQhoB,IAAI,SAAWroB,EAAKq2B,SAASzf,IAAM5W,EAAKm/J,iBAAiBvoJ,MAAQ,KACjG5W,EAAKqwC,QAAQnR,QAAQyO,EAAEn3D,OAAO2xC,EAAOvR,GAAOwkB,EAAO,CACjDxkB,IAAKA,EACLwkB,KAAMA,GACJ,CAAC,GAAI,CACP/hC,SAAUnmB,EAAE6vL,gBACZ1pI,OAAQnmD,EAAE8vL,cACVlnI,KAAM,WACJ,IAAI3sD,EAAO,CACT8lD,MAAOj8B,WAAWgH,EAAKqwC,QAAQhoB,IAAI,UACnC+O,OAAQp+B,WAAWgH,EAAKqwC,QAAQhoB,IAAI,WACpCzR,IAAK5d,WAAWgH,EAAKqwC,QAAQhoB,IAAI,QACjC+S,KAAMpiC,WAAWgH,EAAKqwC,QAAQhoB,IAAI,UAEhCy9I,GAAMA,EAAGp2L,QACXi+D,EAAEm4H,EAAG,IAAIz9I,IAAI,CACX4M,MAAO9lD,EAAK8lD,MACZmC,OAAQjoD,EAAKioD,SAKjBp3B,EAAK4lK,aAAaz2L,GAClB6wB,EAAKolK,WAAW,SAAUvzL,EAC5B,GAEJ,IAEF87D,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,cAAe,CAC1C6tB,MAAO,WACL,IAAIg3B,EACF5+D,EACAovL,EACA5vJ,EACAk2J,EACAlyI,EACAmC,EACAp3B,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YACzBzwL,EAAI8sB,EAAK8O,QACTkH,EAAKhW,EAAKqwC,QACVu3H,EAAK10L,EAAEmqL,YACPjrD,EAAKw1D,aAAcj6H,EAAIi6H,EAAGv0L,IAAI,GAAK,SAAS0L,KAAK6oL,GAAM5xJ,EAAGsD,SAASjmC,IAAI,GAAKu0L,EACzEx1D,IAGLpyG,EAAKkiI,iBAAmBv0F,EAAEykE,GACtB,WAAWrzH,KAAK6oL,IAAOA,IAAO12L,UAChC8uB,EAAK6nK,gBAAkB,CACrBzsI,KAAM,EACNxkB,IAAK,GAEP5W,EAAK8nK,kBAAoB,CACvB1sI,KAAM,EACNxkB,IAAK,GAEP5W,EAAK+nK,WAAa,CAChB13H,QAAS1C,EAAEz8D,UACXkqD,KAAM,EACNxkB,IAAK,EACLqe,MAAO0Y,EAAEz8D,UAAU+jD,QACnBmC,OAAQuW,EAAEz8D,UAAUkmD,UAAYlmD,SAASg4C,KAAKhc,WAAW4tD,gBAG3DzqB,EAAU1C,EAAEykE,GACZ3gI,EAAI,GACJk8D,EAAE,CAAC,MAAO,QAAS,OAAQ,WAAWv/B,MAAK,SAAU5+B,EAAG+C,GACtDd,EAAEjC,GAAKwwB,EAAKsjK,KAAKjzH,EAAQhoB,IAAI,UAAY91C,GAC3C,IACAytB,EAAK6nK,gBAAkBx3H,EAAQ31C,SAC/BsF,EAAK8nK,kBAAoBz3H,EAAQha,WACjCr2B,EAAKgoK,cAAgB,CACnB5wI,OAAQiZ,EAAQo4B,cAAgBh3F,EAAE,GAClCwjD,MAAOob,EAAQ6rB,aAAezqF,EAAE,IAElCovL,EAAK7gK,EAAK6nK,gBACV52J,EAAKjR,EAAKgoK,cAAc5wI,OACxB+vI,EAAKnnK,EAAKgoK,cAAc/yI,MACxBA,EAAQj1B,EAAKklJ,WAAW9yC,EAAI,QAAUA,EAAGo+B,YAAc22B,EACvD/vI,EAASp3B,EAAKklJ,WAAW9yC,GAAMA,EAAGt3C,aAAe7pD,EACjDjR,EAAK+nK,WAAa,CAChB13H,QAAS+hE,EACTh3E,KAAMylI,EAAGzlI,KACTxkB,IAAKiqJ,EAAGjqJ,IACRqe,MAAOA,EACPmC,OAAQA,IAGd,EACAisI,OAAQ,SAAUxxL,GAChB,IAAIo2L,EACFC,EACAC,EACAC,EACApoK,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YACzBzwL,EAAI8sB,EAAK8O,QACT+xJ,EAAK7gK,EAAK6nK,gBACVQ,EAAKroK,EAAKq2B,SACViyI,EAAStoK,EAAKwjK,cAAgB3xL,EAAMs+C,SACpCo4I,EAAM,CACJ3xJ,IAAK,EACLwkB,KAAM,GAERg3E,EAAKpyG,EAAKkiI,iBACVsmC,GAAiB,EACfp2D,EAAG,KAAOlhI,UAAY,SAAS6N,KAAKqzH,EAAG/pF,IAAI,eAC7CkgJ,EAAM1H,GAEJwH,EAAGjtI,MAAQp7B,EAAKqhK,QAAUR,EAAGzlI,KAAO,KACtCp7B,EAAK60C,KAAK5f,MAAQj1B,EAAK60C,KAAK5f,OAASj1B,EAAKqhK,QAAUrhK,EAAKq2B,SAAS+E,KAAOylI,EAAGzlI,KAAOp7B,EAAKq2B,SAAS+E,KAAOmtI,EAAIntI,MACxGktI,IACFtoK,EAAK60C,KAAKzd,OAASp3B,EAAK60C,KAAK5f,MAAQj1B,EAAKy5B,YAC1C+uI,GAAiB,GAEnBxoK,EAAKq2B,SAAS+E,KAAOloD,EAAE+7H,OAAS4xD,EAAGzlI,KAAO,GAExCitI,EAAGzxJ,KAAO5W,EAAKqhK,QAAUR,EAAGjqJ,IAAM,KACpC5W,EAAK60C,KAAKzd,OAASp3B,EAAK60C,KAAKzd,QAAUp3B,EAAKqhK,QAAUrhK,EAAKq2B,SAASzf,IAAMiqJ,EAAGjqJ,IAAM5W,EAAKq2B,SAASzf,KAC7F0xJ,IACFtoK,EAAK60C,KAAK5f,MAAQj1B,EAAK60C,KAAKzd,OAASp3B,EAAKy5B,YAC1C+uI,GAAiB,GAEnBxoK,EAAKq2B,SAASzf,IAAM5W,EAAKqhK,QAAUR,EAAGjqJ,IAAM,GAE9CuxJ,EAAWnoK,EAAKkiI,iBAAiB7uJ,IAAI,KAAO2sB,EAAKqwC,QAAQ/2B,SAASjmC,IAAI,GACtE+0L,EAAmB,oBAAoBrpL,KAAKihB,EAAKkiI,iBAAiB75G,IAAI,aAClE8/I,GAAYC,GACdpoK,EAAKtF,OAAO0gC,KAAOp7B,EAAK+nK,WAAW3sI,KAAOp7B,EAAKq2B,SAAS+E,KACxDp7B,EAAKtF,OAAOkc,IAAM5W,EAAK+nK,WAAWnxJ,IAAM5W,EAAKq2B,SAASzf,MAEtD5W,EAAKtF,OAAO0gC,KAAOp7B,EAAKqwC,QAAQ31C,SAAS0gC,KACzCp7B,EAAKtF,OAAOkc,IAAM5W,EAAKqwC,QAAQ31C,SAASkc,KAE1CqxJ,EAAQ7qL,KAAKC,IAAI2iB,EAAKklK,SAASjwI,OAASj1B,EAAKqhK,QAAUrhK,EAAKtF,OAAO0gC,KAAOmtI,EAAIntI,KAAOp7B,EAAKtF,OAAO0gC,KAAOylI,EAAGzlI,OAC3G8sI,EAAQ9qL,KAAKC,IAAI2iB,EAAKklK,SAAS9tI,QAAUp3B,EAAKqhK,QAAUrhK,EAAKtF,OAAOkc,IAAM2xJ,EAAI3xJ,IAAM5W,EAAKtF,OAAOkc,IAAMiqJ,EAAGjqJ,MACrGqxJ,EAAQjoK,EAAK60C,KAAK5f,OAASj1B,EAAK+nK,WAAW9yI,QAC7Cj1B,EAAK60C,KAAK5f,MAAQj1B,EAAK+nK,WAAW9yI,MAAQgzI,EACtCK,IACFtoK,EAAK60C,KAAKzd,OAASp3B,EAAK60C,KAAK5f,MAAQj1B,EAAKy5B,YAC1C+uI,GAAiB,IAGjBN,EAAQloK,EAAK60C,KAAKzd,QAAUp3B,EAAK+nK,WAAW3wI,SAC9Cp3B,EAAK60C,KAAKzd,OAASp3B,EAAK+nK,WAAW3wI,OAAS8wI,EACxCI,IACFtoK,EAAK60C,KAAK5f,MAAQj1B,EAAK60C,KAAKzd,OAASp3B,EAAKy5B,YAC1C+uI,GAAiB,IAGhBA,IACHxoK,EAAKq2B,SAAS+E,KAAOp7B,EAAKkmK,aAAa9qI,KACvCp7B,EAAKq2B,SAASzf,IAAM5W,EAAKkmK,aAAatvJ,IACtC5W,EAAK60C,KAAK5f,MAAQj1B,EAAKmmK,SAASlxI,MAChCj1B,EAAK60C,KAAKzd,OAASp3B,EAAKmmK,SAAS/uI,OAErC,EACA5P,KAAM,WACJ,IAAIxnB,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YAC3BzwL,EAAI8sB,EAAK8O,QACT+xJ,EAAK7gK,EAAK6nK,gBACVU,EAAMvoK,EAAK8nK,kBACX11D,EAAKpyG,EAAKkiI,iBACVjzB,EAASthE,EAAE3tC,EAAKivG,QAChBw5D,EAAKx5D,EAAOv0G,SACZla,EAAIyuH,EAAO8gC,aAAe/vI,EAAKklK,SAASjwI,MACxC50C,EAAI4uH,EAAO+gC,cAAgBhwI,EAAKklK,SAAS9tI,OACvCp3B,EAAKqhK,UAAYnuL,EAAEgsD,SAAW,WAAWngD,KAAKqzH,EAAG/pF,IAAI,cACvDslB,EAAEz0D,MAAMmvC,IAAI,CACV+S,KAAMqtI,EAAGrtI,KAAOmtI,EAAIntI,KAAOylI,EAAGzlI,KAC9BnG,MAAOz0C,EACP42C,OAAQ/2C,IAGR2f,EAAKqhK,UAAYnuL,EAAEgsD,SAAW,SAASngD,KAAKqzH,EAAG/pF,IAAI,cACrDslB,EAAEz0D,MAAMmvC,IAAI,CACV+S,KAAMqtI,EAAGrtI,KAAOmtI,EAAIntI,KAAOylI,EAAGzlI,KAC9BnG,MAAOz0C,EACP42C,OAAQ/2C,GAGd,IAEFstD,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,aAAc,CACzC6tB,MAAO,WACL,IACEnmC,EADSy6D,EAAEz0D,MAAMyqL,UAAU,YAClB70J,QACX6+B,EAAEz6D,EAAE4vL,YAAY10J,MAAK,WACnB,IAAI4H,EAAK23B,EAAEz0D,MACX88B,EAAG7mC,KAAK,0BAA2B,CACjC8lD,MAAOj8B,WAAWgd,EAAGif,SACrBmC,OAAQp+B,WAAWgd,EAAGohB,UACtBgE,KAAMpiC,WAAWgd,EAAGqS,IAAI,SACxBzR,IAAK5d,WAAWgd,EAAGqS,IAAI,SAE3B,GACF,EACAg7I,OAAQ,SAAUxxL,EAAOq5J,GACvB,IAAIlrI,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YAC3BzwL,EAAI8sB,EAAK8O,QACT45J,EAAK1oK,EAAKilK,aACVllH,EAAK//C,EAAKm/J,iBACVrmI,EAAQ,CACN1B,OAAQp3B,EAAK60C,KAAKzd,OAASsxI,EAAGtxI,QAAU,EACxCnC,MAAOj1B,EAAK60C,KAAK5f,MAAQyzI,EAAGzzI,OAAS,EACrCre,IAAK5W,EAAKq2B,SAASzf,IAAMmpC,EAAGnpC,KAAO,EACnCwkB,KAAMp7B,EAAKq2B,SAAS+E,KAAO2kB,EAAG3kB,MAAQ,GAE1CuS,EAAEz6D,EAAE4vL,YAAY10J,MAAK,WACnB,IAAI4H,EAAK23B,EAAEz0D,MACTmgC,EAAQs0B,EAAEz0D,MAAM/J,KAAK,2BACrBg5C,EAAQ,CAAC,EACTE,EAAMrS,EAAGoK,QAAQ8qH,EAAGu4B,gBAAgB,IAAI/zL,OAAS,CAAC,QAAS,UAAY,CAAC,QAAS,SAAU,MAAO,QACpGi+D,EAAEv/B,KAAKia,GAAK,SAAU74C,EAAGiK,GACvB,IAAIkvL,GAAOtvJ,EAAM5/B,IAAS,IAAMq/C,EAAMr/C,IAAS,GAC3CkvL,GAAOA,GAAO,IAChBxgJ,EAAM1uC,GAAQkvL,GAAO,KAEzB,IACA3yJ,EAAGqS,IAAIF,EACT,GACF,EACAX,KAAM,WACJmmB,EAAEz0D,MAAM+tC,WAAW,0BACrB,IAEF0mB,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,QAAS,CACpC6tB,MAAO,WACL,IAAIrZ,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YAC3BgE,EAAK3nK,EAAK60C,KACZ70C,EAAKkjK,MAAQljK,EAAKyjK,gBAAgBpoK,QAClC2E,EAAKkjK,MAAM76I,IAAI,CACbkR,QAAS,IACTnR,QAAS,QACTiO,SAAU,WACVe,OAAQuwI,EAAGvwI,OACXnC,MAAO0yI,EAAG1yI,MACVoG,OAAQ,EACRD,KAAM,EACNxkB,IAAK,IAEP5W,EAAKuuI,UAAUvuI,EAAKkjK,MAAO,uBAIJ,IAAnBv1H,EAAEyrG,cAAwD,kBAAvBp5I,EAAK8O,QAAQo0J,OAElDljK,EAAKkjK,MAAM/hI,SAASjoD,KAAK41B,QAAQo0J,OAEnCljK,EAAKkjK,MAAMjvI,SAASj0B,EAAKivG,OAC3B,EACAo0D,OAAQ,WACN,IAAIrjK,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YACzB3jK,EAAKkjK,OACPljK,EAAKkjK,MAAM76I,IAAI,CACbgO,SAAU,WACVe,OAAQp3B,EAAK60C,KAAKzd,OAClBnC,MAAOj1B,EAAK60C,KAAK5f,OAGvB,EACAzN,KAAM,WACJ,IAAIxnB,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YACzB3jK,EAAKkjK,OAASljK,EAAKivG,QACrBjvG,EAAKivG,OAAO57H,IAAI,GAAG85B,YAAYnN,EAAKkjK,MAAM7vL,IAAI,GAElD,IAEFs6D,EAAEu9F,GAAG2xB,OAAOrxK,IAAI,YAAa,OAAQ,CACnC63K,OAAQ,WACN,IAAIoE,EACFznK,EAAO2tC,EAAEz0D,MAAMyqL,UAAU,YACzBzwL,EAAI8sB,EAAK8O,QACT64J,EAAK3nK,EAAK60C,KACV6zH,EAAK1oK,EAAKilK,aACVllH,EAAK//C,EAAKm/J,iBACV1pL,EAAIuqB,EAAKm9J,KACTI,EAAyB,kBAAXrqL,EAAEqqL,KAAoB,CAACrqL,EAAEqqL,KAAMrqL,EAAEqqL,MAAQrqL,EAAEqqL,KACzDqL,EAAQrL,EAAK,IAAM,EACnBsL,EAAQtL,EAAK,IAAM,EACnBuL,EAAK1rL,KAAK+c,OAAOwtK,EAAG1yI,MAAQyzI,EAAGzzI,OAAS2zI,GAASA,EACjDG,EAAK3rL,KAAK+c,OAAOwtK,EAAGvwI,OAASsxI,EAAGtxI,QAAUyxI,GAASA,EACnDG,EAAWN,EAAGzzI,MAAQ6zI,EACtBG,EAAYP,EAAGtxI,OAAS2xI,EACxBG,EAAah2L,EAAEiiD,UAAYjiD,EAAEiiD,SAAW6zI,EACxCG,EAAcj2L,EAAEsuK,WAAatuK,EAAEsuK,UAAYynB,EAC3CG,EAAal2L,EAAEgiD,UAAYhiD,EAAEgiD,SAAW8zI,EACxCK,EAAcn2L,EAAEkwL,WAAalwL,EAAEkwL,UAAY6F,EAC7C/1L,EAAEqqL,KAAOA,EACL6L,IACFJ,GAAYJ,GAEVS,IACFJ,GAAaJ,GAEXK,IACFF,GAAYJ,GAEVO,IACFF,GAAaJ,GAEX,aAAa9pL,KAAKtJ,IACpBuqB,EAAK60C,KAAK5f,MAAQ+zI,EAClBhpK,EAAK60C,KAAKzd,OAAS6xI,GACV,SAASlqL,KAAKtJ,IACvBuqB,EAAK60C,KAAK5f,MAAQ+zI,EAClBhpK,EAAK60C,KAAKzd,OAAS6xI,EACnBjpK,EAAKq2B,SAASzf,IAAMmpC,EAAGnpC,IAAMmyJ,GACpB,SAAShqL,KAAKtJ,IACvBuqB,EAAK60C,KAAK5f,MAAQ+zI,EAClBhpK,EAAK60C,KAAKzd,OAAS6xI,EACnBjpK,EAAKq2B,SAAS+E,KAAO2kB,EAAG3kB,KAAO0tI,KAE3BG,EAAYJ,GAAS,GAAKG,EAAWJ,GAAS,KAChDnB,EAAkBznK,EAAKonK,gCAAgCluL,OAErD+vL,EAAYJ,EAAQ,GACtB7oK,EAAK60C,KAAKzd,OAAS6xI,EACnBjpK,EAAKq2B,SAASzf,IAAMmpC,EAAGnpC,IAAMmyJ,IAE7BE,EAAYJ,EAAQpB,EAAgBrwI,OACpCp3B,EAAK60C,KAAKzd,OAAS6xI,EACnBjpK,EAAKq2B,SAASzf,IAAMmpC,EAAGnpC,IAAM8xJ,EAAGtxI,OAAS6xI,GAEvCD,EAAWJ,EAAQ,GACrB5oK,EAAK60C,KAAK5f,MAAQ+zI,EAClBhpK,EAAKq2B,SAAS+E,KAAO2kB,EAAG3kB,KAAO0tI,IAE/BE,EAAWJ,EAAQnB,EAAgBxyI,MACnCj1B,EAAK60C,KAAK5f,MAAQ+zI,EAClBhpK,EAAKq2B,SAAS+E,KAAO2kB,EAAG3kB,KAAOstI,EAAGzzI,MAAQ+zI,GAGhD,IAEqBr7H,EAAEu9F,GAAGy4B,UAoB5Bh2H,EAAE29F,OAAO,YAAa,CACpBpgI,QAAS,SACT4D,QAAS,CACPmlB,SAAU,OACVq1I,UAAU,EACV/4I,QAAS,GACTmtB,QAAS,CACP,YAAa,gBACb,qBAAsB,iBAExB6rH,eAAe,EACfjd,UAAW,QACXyU,WAAW,EACX13I,KAAM,KACN+N,OAAQ,OACRoqH,UAAW,KACXrsH,SAAU,KACViuI,UAAW,IACXluI,SAAU,IACVs0I,OAAO,EACPnzI,SAAU,CACR07G,GAAI,SACJV,GAAI,SACJT,GAAIp8J,OACJ48J,UAAW,MAEXplG,MAAO,SAAUx8C,GACf,IAAIi6K,EAAY97H,EAAEz0D,MAAMmvC,IAAI74B,GAAKkL,SAASkc,IACtC6yJ,EAAY,GACd97H,EAAEz0D,MAAMmvC,IAAI,MAAO74B,EAAIonB,IAAM6yJ,EAEjC,GAEF9F,WAAW,EACXv6I,KAAM,KACN63C,MAAO,KACPhsC,MAAO,IAEPy0I,YAAa,KACbzjH,MAAO,KACPg4G,KAAM,KACN0B,UAAW,KACXS,SAAU,KACV/lJ,MAAO,KACPwvB,KAAM,KACNw5H,OAAQ,KACRsG,YAAa,KACbC,WAAY,MAEdC,mBAAoB,CAClBt5I,SAAS,EACT6G,QAAQ,EACRoqH,WAAW,EACXrsH,UAAU,EACViuI,WAAW,EACXluI,UAAU,EACVD,OAAO,GAET60I,wBAAyB,CACvBtoB,WAAW,EACXrsH,UAAU,EACViuI,WAAW,EACXluI,UAAU,GAEZg4G,QAAS,WACPh0J,KAAK6wL,YAAc,CACjB3hJ,QAASlvC,KAAKm3D,QAAQ,GAAGloB,MAAMC,QAC/B6M,MAAO/7C,KAAKm3D,QAAQ,GAAGloB,MAAM8M,MAC7BmuI,UAAWlqL,KAAKm3D,QAAQ,GAAGloB,MAAMi7I,UACjC5hB,UAAWtoK,KAAKm3D,QAAQ,GAAGloB,MAAMq5H,UACjCpqH,OAAQl+C,KAAKm3D,QAAQ,GAAGloB,MAAMiP,QAEhCl+C,KAAKimL,iBAAmB,CACtB7lJ,OAAQpgC,KAAKm3D,QAAQ/2B,SACrBpS,MAAOhuB,KAAKm3D,QAAQ/2B,SAASqG,WAAWzY,MAAMhuB,KAAKm3D,UAErDn3D,KAAK8wL,cAAgB9wL,KAAKm3D,QAAQx4B,KAAK,SACb,MAAtB3+B,KAAK41B,QAAQmyD,OAAuC,MAAtB/nF,KAAK8wL,gBACrC9wL,KAAK41B,QAAQmyD,MAAQ/nF,KAAK8wL,eAIxB9wL,KAAK41B,QAAQyF,WACfr7B,KAAK41B,QAAQyF,UAAW,GAE1Br7B,KAAK+wL,iBACL/wL,KAAKm3D,QAAQjnB,OAAOkX,WAAW,SAASrM,SAAS/6C,KAAKgxL,UACtDhxL,KAAKq1J,UAAU,oBAAqB,qBACpCr1J,KAAKixL,kBACLjxL,KAAKkxL,oBACDlxL,KAAK41B,QAAQiyJ,WAAapzH,EAAEt3D,GAAG0qL,WACjC7nL,KAAKmxL,iBAEHnxL,KAAK41B,QAAQ60J,WAAah2H,EAAEt3D,GAAGstL,WACjCzqL,KAAKoxL,iBAEPpxL,KAAKqxL,SAAU,EACfrxL,KAAKsxL,aACP,EACA99B,MAAO,WACDxzJ,KAAK41B,QAAQw6J,UACfpwL,KAAK2wD,MAET,EACAq9G,UAAW,WACT,IAAI72G,EAAUn3D,KAAK41B,QAAQmlB,SAC3B,OAAIoc,IAAYA,EAAQxiC,QAAUwiC,EAAQ9jC,UACjCohC,EAAE0C,GAEJn3D,KAAKhI,SAASwjC,KAAK27B,GAAW,QAAQ/hC,GAAG,EAClD,EACAg/H,SAAU,WACR,IAAIz8I,EACFsuK,EAAmBjmL,KAAKimL,iBAC1BjmL,KAAKuxL,mBACLvxL,KAAKwxL,kBACLxxL,KAAKm3D,QAAQyvG,iBAAiBz3H,IAAInvC,KAAK6wL,aAGtCt2I,SACDv6C,KAAKgxL,SAAS9nJ,SACVlpC,KAAK8wL,eACP9wL,KAAKm3D,QAAQx4B,KAAK,QAAS3+B,KAAK8wL,gBAElCn5K,EAAOsuK,EAAiB7lJ,OAAOqG,WAAWrR,GAAG6wJ,EAAiBj4J,QAGrDx3B,QAAUmhB,EAAK,KAAO3X,KAAKm3D,QAAQ,GAC1Cx/C,EAAKgjC,OAAO36C,KAAKm3D,SAEjB8uH,EAAiB7lJ,OAAOoa,OAAOx6C,KAAKm3D,QAExC,EACAi7F,OAAQ,WACN,OAAOpyJ,KAAKgxL,QACd,EACA7nJ,QAASsrB,EAAEr+B,KACXkzD,OAAQ70B,EAAEr+B,KACV22C,MAAO,SAAUp0E,GACf,IAAImuB,EAAO9mB,KACNA,KAAKqxL,UAAmD,IAAxCrxL,KAAKk0J,SAAS,cAAev7J,KAGlDqH,KAAKqxL,SAAU,EACfrxL,KAAKyxL,gBAAkB,KACvBzxL,KAAKwxL,kBACLxxL,KAAKuxL,mBACAvxL,KAAKw7C,OAAOh2B,OAAO,cAAcguB,QAAQ,SAASh9C,QAIrDi+D,EAAEu9F,GAAG8xB,SAASrvH,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,KAErDgI,KAAK0xL,MAAM1xL,KAAKgxL,SAAUhxL,KAAK41B,QAAQua,MAAM,WAC3CrpB,EAAKotI,SAAS,QAASv7J,EACzB,IACF,EACAwgF,OAAQ,WACN,OAAOn5E,KAAKqxL,OACd,EACAM,UAAW,WACT3xL,KAAK4xL,YACP,EACAA,WAAY,SAAUj5L,EAAOy6G,GAC3B,IAAIy+E,GAAQ,EACVC,EAAW9xL,KAAKgxL,SAASlrJ,SAAS,qBAAqB7oC,KAAI,WACzD,OAAQw3D,EAAEz0D,MAAMmvC,IAAI,UACtB,IAAGh1C,MACH43L,EAAY7tL,KAAKI,IAAIzI,MAAM,KAAMi2L,GAQnC,OAPIC,IAAc/xL,KAAKgxL,SAAS7hJ,IAAI,aAClCnvC,KAAKgxL,SAAS7hJ,IAAI,UAAW4iJ,EAAY,GACzCF,GAAQ,GAENA,IAAUz+E,GACZpzG,KAAKk0J,SAAS,QAASv7J,GAElBk5L,CACT,EACAlhI,KAAM,WACJ,IAAI7pC,EAAO9mB,KACPA,KAAKqxL,QACHrxL,KAAK4xL,cACP5xL,KAAKgyL,kBAIThyL,KAAKqxL,SAAU,EACfrxL,KAAKw7C,OAASiZ,EAAEA,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,KACrDgI,KAAKiyL,QACLjyL,KAAKy2J,YACLz2J,KAAKkyL,iBACLlyL,KAAK4xL,WAAW,MAAM,GAKlB5xL,KAAKmyL,SACPnyL,KAAKmyL,QAAQhjJ,IAAI,UAAWnvC,KAAKgxL,SAAS7hJ,IAAI,WAAa,GAE7DnvC,KAAKoyL,MAAMpyL,KAAKgxL,SAAUhxL,KAAK41B,QAAQsa,MAAM,WAC3CppB,EAAKkrK,iBACLlrK,EAAKotI,SAAS,QAChB,IAKAl0J,KAAKqyL,mBACLryL,KAAKk0J,SAAS,QAChB,EACA89B,eAAgB,WAQd,IAAI1wJ,EAAWthC,KAAKyxL,gBACfnwJ,IACHA,EAAWthC,KAAKm3D,QAAQ37B,KAAK,gBAE1B8F,EAAS9qC,SACZ8qC,EAAWthC,KAAKm3D,QAAQ37B,KAAK,cAE1B8F,EAAS9qC,SACZ8qC,EAAWthC,KAAKsyL,mBAAmB92J,KAAK,cAErC8F,EAAS9qC,SACZ8qC,EAAWthC,KAAKuyL,sBAAsB/sK,OAAO,cAE1C8b,EAAS9qC,SACZ8qC,EAAWthC,KAAKgxL,UAElB1vJ,EAASlM,GAAG,GAAGoe,QAAQ,QACzB,EACAg/I,sBAAuB,WACrB,IAAIpxJ,EAAgBqzB,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,IAC5CgI,KAAKgxL,SAAS,KAAO5vJ,GAAiBqzB,EAAE/8B,SAAS13B,KAAKgxL,SAAS,GAAI5vJ,IAE9EphC,KAAKgyL,gBAET,EACAS,WAAY,SAAU95L,GACpBA,EAAM46C,iBACNvzC,KAAKwyL,wBAKLxyL,KAAKy1J,OAAOz1J,KAAKwyL,sBACnB,EACAzB,eAAgB,WACd/wL,KAAKgxL,SAAWv8H,EAAE,SAAStkB,OAAOxR,KAAK,CAErC6C,UAAW,EACXuoI,KAAM,WACLhvH,SAAS/6C,KAAKguK,aACjBhuK,KAAKq1J,UAAUr1J,KAAKgxL,SAAU,YAAa,wCAC3ChxL,KAAK8zJ,IAAI9zJ,KAAKgxL,SAAU,CACtBroB,QAAS,SAAUhwK,GACjB,GAAIqH,KAAK41B,QAAQy6J,gBAAkB13L,EAAMu9C,sBAAwBv9C,EAAMy+C,SAAWz+C,EAAMy+C,UAAYqd,EAAEu9F,GAAG56G,QAAQ01E,OAG/G,OAFAn0H,EAAM46C,sBACNvzC,KAAK+sE,MAAMp0E,GAKb,GAAIA,EAAMy+C,UAAYqd,EAAEu9F,GAAG56G,QAAQw1E,MAAOj0H,EAAMu9C,qBAAhD,CAGA,IAAIw8I,EAAY1yL,KAAKgxL,SAASx1J,KAAK,aACjCrG,EAAQu9J,EAAUv9J,QAClBE,EAAOq9J,EAAUr9J,OACd18B,EAAMQ,SAAWk8B,EAAK,IAAM18B,EAAMQ,SAAW6G,KAAKgxL,SAAS,IAAQr4L,EAAMs+C,SAKlEt+C,EAAMQ,SAAWg8B,EAAM,IAAMx8B,EAAMQ,SAAW6G,KAAKgxL,SAAS,KAAOr4L,EAAMs+C,WACnFj3C,KAAKy1J,QAAO,WACVpgI,EAAKme,QAAQ,QACf,IACA76C,EAAM46C,mBARNvzC,KAAKy1J,QAAO,WACVtgI,EAAMqe,QAAQ,QAChB,IACA76C,EAAM46C,iBARR,CAeF,EACA06H,UAAW,SAAUt1K,GACfqH,KAAK4xL,WAAWj5L,IAClBqH,KAAKgyL,gBAET,IAMGhyL,KAAKm3D,QAAQ37B,KAAK,sBAAsBhlC,QAC3CwJ,KAAKgxL,SAASryJ,KAAK,CACjB,mBAAoB3+B,KAAKm3D,QAAQm7E,WAAW3zG,KAAK,OAGvD,EACAsyJ,gBAAiB,WACf,IAAI0B,EACJ3yL,KAAK4yL,iBAAmBn+H,EAAE,SAC1Bz0D,KAAKq1J,UAAUr1J,KAAK4yL,iBAAkB,qBAAsB,uCAC5D5yL,KAAK8zJ,IAAI9zJ,KAAK4yL,iBAAkB,CAC9B3kB,UAAW,SAAUt1K,GAId87D,EAAE97D,EAAMQ,QAAQ4tC,QAAQ,8BAE3B/mC,KAAKgxL,SAASx9I,QAAQ,QAE1B,IAMFxzC,KAAKuyL,sBAAwB99H,EAAE,mCAAmC1yB,OAAO,CACvEykC,MAAO/R,EAAE,OAAO3gC,KAAK9zB,KAAK41B,QAAQw9I,WAAWt5H,OAC7C+tH,KAAM,qBACN2J,WAAW,IACVz2H,SAAS/6C,KAAK4yL,kBACjB5yL,KAAKq1J,UAAUr1J,KAAKuyL,sBAAuB,4BAC3CvyL,KAAK8zJ,IAAI9zJ,KAAKuyL,sBAAuB,CACnCz8I,MAAO,SAAUn9C,GACfA,EAAM46C,iBACNvzC,KAAK+sE,MAAMp0E,EACb,IAEFg6L,EAAgBl+H,EAAE,UAAU69E,WAAWt3F,UAAUh7C,KAAK4yL,kBACtD5yL,KAAKq1J,UAAUs9B,EAAe,mBAC9B3yL,KAAK6yL,OAAOF,GACZ3yL,KAAK4yL,iBAAiB53I,UAAUh7C,KAAKgxL,UACrChxL,KAAKgxL,SAASryJ,KAAK,CACjB,kBAAmBg0J,EAAch0J,KAAK,OAE1C,EACAk0J,OAAQ,SAAU9qG,GACZ/nF,KAAK41B,QAAQmyD,MACfA,EAAMj0D,KAAK9zB,KAAK41B,QAAQmyD,OAExBA,EAAMjuC,KAAK,SAEf,EACAo3I,kBAAmB,WACjBlxL,KAAKsyL,mBAAqB79H,EAAE,SAC5Bz0D,KAAKq1J,UAAUr1J,KAAKsyL,mBAAoB,uBAAwB,wCAChEtyL,KAAK8yL,YAAcr+H,EAAE,SAAS1Z,SAAS/6C,KAAKsyL,oBAC5CtyL,KAAKq1J,UAAUr1J,KAAK8yL,YAAa,uBACjC9yL,KAAK+yL,gBACP,EACAA,eAAgB,WACd,IAAIjsK,EAAO9mB,KACTq3C,EAAUr3C,KAAK41B,QAAQyhB,QAGzBr3C,KAAKsyL,mBAAmBppJ,SACxBlpC,KAAK8yL,YAAY/0L,QACb02D,EAAEn+B,cAAc+gB,IAAYl7C,MAAMF,QAAQo7C,KAAaA,EAAQ7gD,OACjEwJ,KAAKq0J,aAAar0J,KAAKgxL,SAAU,sBAGnCv8H,EAAEv/B,KAAKmiB,GAAS,SAAUh+C,EAAM48C,GAC9B,IAAIH,EAAOk9I,EACX/8I,EAAyB,oBAAVA,EAAuB,CACpCH,MAAOG,EACPniB,KAAMz6B,GACJ48C,EAGJA,EAAQwe,EAAEn3D,OAAO,CACfrE,KAAM,UACLg9C,GAGHH,EAAQG,EAAMH,MACdk9I,EAAgB,CACdnrB,KAAM5xH,EAAM4xH,KACZ0J,aAAct7H,EAAMs7H,aACpBC,UAAWv7H,EAAMu7H,UAEjBzK,MAAO9wH,EAAM8wH,MACbjzI,KAAMmiB,EAAMniB,aAEPmiB,EAAMH,aACNG,EAAM4xH,YACN5xH,EAAMs7H,oBACNt7H,EAAMu7H,iBAGNv7H,EAAM8wH,MACa,mBAAf9wH,EAAMniB,aACRmiB,EAAMniB,KAEf2gC,EAAE,oBAAqBxe,GAAOlU,OAAOixJ,GAAej4I,SAASj0B,EAAKgsK,aAAangJ,GAAG,SAAS,WACzFmD,EAAMj6C,MAAMirB,EAAKqwC,QAAQ,GAAIr7D,UAC/B,GACF,IACAkE,KAAKq1J,UAAUr1J,KAAKgxL,SAAU,qBAC9BhxL,KAAKsyL,mBAAmBv3I,SAAS/6C,KAAKgxL,UACxC,EACAG,eAAgB,WACd,IAAIrqK,EAAO9mB,KACT41B,EAAU51B,KAAK41B,QACjB,SAASq9J,EAAWjhC,GAClB,MAAO,CACL70G,SAAU60G,EAAG70G,SACb37B,OAAQwwI,EAAGxwI,OAEf,CACAxhB,KAAKgxL,SAASnJ,UAAU,CACtB/mF,OAAQ,gDACR5sD,OAAQ,sBACRiwI,YAAa,WACbhkJ,MAAO,SAAUxnC,EAAOq5J,GACtBlrI,EAAKuuI,UAAU5gG,EAAEz0D,MAAO,sBACxB8mB,EAAKw+J,eACLx+J,EAAKotI,SAAS,YAAav7J,EAAOs6L,EAAWjhC,GAC/C,EACA+yB,KAAM,SAAUpsL,EAAOq5J,GACrBlrI,EAAKotI,SAAS,OAAQv7J,EAAOs6L,EAAWjhC,GAC1C,EACA1jH,KAAM,SAAU31C,EAAOq5J,GACrB,IAAI9vG,EAAO8vG,EAAGxwI,OAAO0gC,KAAOp7B,EAAK9uB,SAAS+qD,aACxCrlB,EAAMs0H,EAAGxwI,OAAOkc,IAAM5W,EAAK9uB,SAAS8qD,YACtCltB,EAAQunB,SAAW,CACjB07G,GAAI,WACJV,GAAI,QAAUj2G,GAAQ,EAAI,IAAM,IAAMA,EAAlC,QAAwDxkB,GAAO,EAAI,IAAM,IAAMA,EACnFg6H,GAAI5wI,EAAKxrB,QAEXwrB,EAAKutI,aAAa5/F,EAAEz0D,MAAO,sBAC3B8mB,EAAK2+J,iBACL3+J,EAAKotI,SAAS,WAAYv7J,EAAOs6L,EAAWjhC,GAC9C,GAEJ,EACAo/B,eAAgB,WACd,IAAItqK,EAAO9mB,KACT41B,EAAU51B,KAAK41B,QACfq0J,EAAUr0J,EAAQ60J,UAGlBttI,EAAWn9C,KAAKgxL,SAAS7hJ,IAAI,YAC7B+jJ,EAAmC,kBAAZjJ,EAAuBA,EAAU,sBAC1D,SAASgJ,EAAWjhC,GAClB,MAAO,CACLi0B,iBAAkBj0B,EAAGi0B,iBACrB8F,aAAc/5B,EAAG+5B,aACjB5uI,SAAU60G,EAAG70G,SACbwe,KAAMq2F,EAAGr2F,KAEb,CACA37D,KAAKgxL,SAASvG,UAAU,CACtB3pF,OAAQ,qBACRqjF,YAAa,WACbyF,WAAY5pL,KAAKm3D,QACjBlb,SAAUrmB,EAAQqmB,SAClBqsH,UAAW1yI,EAAQ0yI,UACnBtsH,SAAUpmB,EAAQomB,SAClBkuI,UAAWlqL,KAAKmzL,aAChBlJ,QAASiJ,EACT/yJ,MAAO,SAAUxnC,EAAOq5J,GACtBlrI,EAAKuuI,UAAU5gG,EAAEz0D,MAAO,sBACxB8mB,EAAKw+J,eACLx+J,EAAKotI,SAAS,cAAev7J,EAAOs6L,EAAWjhC,GACjD,EACAm4B,OAAQ,SAAUxxL,EAAOq5J,GACvBlrI,EAAKotI,SAAS,SAAUv7J,EAAOs6L,EAAWjhC,GAC5C,EACA1jH,KAAM,SAAU31C,EAAOq5J,GACrB,IAAIxwI,EAASsF,EAAKkqK,SAASxvK,SACzB0gC,EAAO1gC,EAAO0gC,KAAOp7B,EAAK9uB,SAAS+qD,aACnCrlB,EAAMlc,EAAOkc,IAAM5W,EAAK9uB,SAAS8qD,YACnCltB,EAAQsoB,OAASp3B,EAAKkqK,SAAS9yI,SAC/BtoB,EAAQmmB,MAAQj1B,EAAKkqK,SAASj1I,QAC9BnmB,EAAQunB,SAAW,CACjB07G,GAAI,WACJV,GAAI,QAAUj2G,GAAQ,EAAI,IAAM,IAAMA,EAAlC,QAAwDxkB,GAAO,EAAI,IAAM,IAAMA,EACnFg6H,GAAI5wI,EAAKxrB,QAEXwrB,EAAKutI,aAAa5/F,EAAEz0D,MAAO,sBAC3B8mB,EAAK2+J,iBACL3+J,EAAKotI,SAAS,aAAcv7J,EAAOs6L,EAAWjhC,GAChD,IACC7iH,IAAI,WAAYgO,EACrB,EACAm0I,YAAa,WACXtxL,KAAK8zJ,IAAI9zJ,KAAKoyJ,SAAU,CACtBwD,QAAS,SAAUj9J,GACjBqH,KAAKqyL,mBACLryL,KAAKyxL,gBAAkBh9H,EAAE97D,EAAMQ,OACjC,GAEJ,EACAk5L,iBAAkB,WAChBryL,KAAKuxL,mBACLvxL,KAAKozL,qBAAqB/kJ,QAAQruC,KACpC,EACAuxL,iBAAkB,WAChB,IAAI5rB,EAAY3lK,KAAKozL,qBACnBC,EAAS5+H,EAAE59B,QAAQ72B,KAAM2lK,IACX,IAAZ0tB,GACF1tB,EAAUhwI,OAAO09J,EAAQ,EAE7B,EACAD,mBAAoB,WAClB,IAAIztB,EAAY3lK,KAAKhI,SAAS/B,KAAK,uBAKnC,OAJK0vK,IACHA,EAAY,GACZ3lK,KAAKhI,SAAS/B,KAAK,sBAAuB0vK,IAErCA,CACT,EACAwtB,WAAY,WACV,IAAIv9J,EAAU51B,KAAK41B,QACnB,MAA0B,SAAnBA,EAAQsoB,OAAoBtoB,EAAQs0J,UAAYhmL,KAAKqL,IAAIqmB,EAAQs0J,UAAWt0J,EAAQsoB,OAC7F,EACAu4G,UAAW,WAET,IAAIiS,EAAY1oK,KAAKgxL,SAASnrJ,GAAG,YAC5B6iI,GACH1oK,KAAKgxL,SAAS9gJ,OAEhBlwC,KAAKgxL,SAAS7zI,SAASn9C,KAAK41B,QAAQunB,UAC/BurH,GACH1oK,KAAKgxL,SAAS7gJ,MAElB,EACAokH,YAAa,SAAU3+H,GACrB,IAAI9O,EAAO9mB,KACTmqL,GAAS,EACTmJ,EAAmB,CAAC,EACtB7+H,EAAEv/B,KAAKU,GAAS,SAAU/6B,EAAKN,GAC7BusB,EAAK0tI,WAAW35J,EAAKN,GACjBM,KAAOisB,EAAK6pK,qBACdxG,GAAS,GAEPtvL,KAAOisB,EAAK8pK,0BACd0C,EAAiBz4L,GAAON,EAE5B,IACI4vL,IACFnqL,KAAKiyL,QACLjyL,KAAKy2J,aAEHz2J,KAAKgxL,SAASnrJ,GAAG,wBACnB7lC,KAAKgxL,SAASvG,UAAU,SAAU6I,EAEtC,EACA9+B,WAAY,SAAU35J,EAAKN,GACzB,IAAIg5L,EACFC,EACAxC,EAAWhxL,KAAKgxL,SACN,aAARn2L,IAGJmF,KAAKw8D,OAAO3hE,EAAKN,GACL,aAARM,GACFmF,KAAKgxL,SAASj2I,SAAS/6C,KAAKguK,aAElB,YAARnzK,GACFmF,KAAK+yL,iBAEK,cAARl4L,GACFmF,KAAKuyL,sBAAsBxwJ,OAAO,CAEhCykC,MAAO/R,EAAE,OAAO3gC,KAAK,GAAK9zB,KAAK41B,QAAQw9I,WAAWt5H,SAG1C,cAARj/C,KACF04L,EAAcvC,EAASnrJ,GAAG,0BACNtrC,GAClBy2L,EAASnJ,UAAU,YAEhB0L,GAAeh5L,GAClByF,KAAKmxL,kBAGG,aAARt2L,GACFmF,KAAKy2J,YAEK,cAAR57J,KAEF24L,EAAcxC,EAASnrJ,GAAG,0BACNtrC,GAClBy2L,EAASvG,UAAU,WAIjB+I,GAAgC,kBAAVj5L,GACxBy2L,EAASvG,UAAU,SAAU,UAAWlwL,GAIrCi5L,IAAyB,IAAVj5L,GAClByF,KAAKoxL,kBAGG,UAARv2L,GACFmF,KAAK6yL,OAAO7yL,KAAK4yL,iBAAiBp3J,KAAK,qBAE3C,EACAy2J,MAAO,WAGL,IAAIwB,EACFC,EACAC,EACA/9J,EAAU51B,KAAK41B,QAGjB51B,KAAKm3D,QAAQjnB,OAAOf,IAAI,CACtB4M,MAAO,OACPmuI,UAAW,EACX5hB,UAAW,OACXpqH,OAAQ,IAENtoB,EAAQomB,SAAWpmB,EAAQmmB,QAC7BnmB,EAAQmmB,MAAQnmB,EAAQomB,UAK1By3I,EAAmBzzL,KAAKgxL,SAAS7hJ,IAAI,CACnC+O,OAAQ,OACRnC,MAAOnmB,EAAQmmB,QACd+6G,cACH48B,EAAmBxvL,KAAKI,IAAI,EAAGsxB,EAAQs0J,UAAYuJ,GACnDE,EAAgD,kBAAtB/9J,EAAQ0yI,UAAyBpkK,KAAKI,IAAI,EAAGsxB,EAAQ0yI,UAAYmrB,GAAoB,OACxF,SAAnB79J,EAAQsoB,OACVl+C,KAAKm3D,QAAQhoB,IAAI,CACf+6I,UAAWwJ,EACXprB,UAAWqrB,EACXz1I,OAAQ,SAGVl+C,KAAKm3D,QAAQjZ,OAAOh6C,KAAKI,IAAI,EAAGsxB,EAAQsoB,OAASu1I,IAE/CzzL,KAAKgxL,SAASnrJ,GAAG,wBACnB7lC,KAAKgxL,SAASvG,UAAU,SAAU,YAAazqL,KAAKmzL,aAExD,EACA7N,aAAc,WACZtlL,KAAKulL,aAAevlL,KAAKhI,SAASwjC,KAAK,UAAUv+B,KAAI,WACnD,IAAIuoL,EAAS/wH,EAAEz0D,MACf,OAAOy0D,EAAE,SAAStlB,IAAI,CACpBgO,SAAU,WACVpB,MAAOypI,EAAO3uB,aACd34G,OAAQsnI,EAAO1uB,gBACd/7G,SAASyqI,EAAOplJ,UAAU5e,OAAOgkK,EAAOhkK,UAAU,EACvD,GACF,EACAikK,eAAgB,WACVzlL,KAAKulL,eACPvlL,KAAKulL,aAAar8I,gBACXlpC,KAAKulL,aAEhB,EACAqO,kBAAmB,SAAUj7L,GAC3B,QAAI87D,EAAE97D,EAAMQ,QAAQ4tC,QAAQ,cAAcvwC,UAMjCi+D,EAAE97D,EAAMQ,QAAQ4tC,QAAQ,kBAAkBvwC,MACrD,EACA07L,eAAgB,WACd,GAAKlyL,KAAK41B,QAAQ06J,MAAlB,CAGA,IAAIuD,EAAUp/H,EAAEt3D,GAAGw3B,OAAOw1F,UAAU,EAAG,GAInC2pE,GAAY,EAChB9zL,KAAKy1J,QAAO,WACVq+B,GAAY,CACd,IACK9zL,KAAKhI,SAAS/B,KAAK,uBAItB+J,KAAKhI,SAAS26C,GAAG,oBAAqB,SAAUh6C,GAC9C,IAAIm7L,EAAJ,CAGA,IAAIhoG,EAAW9rF,KAAKozL,qBAAqB,GACpCtnG,EAAS8nG,kBAAkBj7L,KAC9BA,EAAM46C,iBACNu4C,EAASkmG,iBAOO,SAAZ6B,GAAkC,SAAZA,GACxB/nG,EAAS2pE,OAAO3pE,EAAS0mG,uBAZ7B,CAeF,EAAE13L,KAAKkF,OAETA,KAAKmyL,QAAU19H,EAAE,SAAS1Z,SAAS/6C,KAAKguK,aACxChuK,KAAKq1J,UAAUr1J,KAAKmyL,QAAS,KAAM,8BACnCnyL,KAAK8zJ,IAAI9zJ,KAAKmyL,QAAS,CACrBlkB,UAAW,eAEbjuK,KAAKhI,SAAS/B,KAAK,sBAAuB+J,KAAKhI,SAAS/B,KAAK,uBAAyB,GAAK,EAtC3F,CAuCF,EACAu7L,gBAAiB,WACf,GAAKxxL,KAAK41B,QAAQ06J,OAGdtwL,KAAKmyL,QAAS,CAChB,IAAI4B,EAAW/zL,KAAKhI,SAAS/B,KAAK,sBAAwB,EACrD89L,EAIH/zL,KAAKhI,SAAS/B,KAAK,qBAAsB89L,IAHzC/zL,KAAKhI,SAAS+6C,IAAI,qBAClB/yC,KAAKhI,SAAS+1C,WAAW,uBAI3B/tC,KAAKmyL,QAAQjpJ,SACblpC,KAAKmyL,QAAU,IACjB,CACF,KAKqB,IAAnB19H,EAAEyrG,cAEJzrG,EAAE29F,OAAO,YAAa39F,EAAEu9F,GAAGgiC,OAAQ,CACjCp+J,QAAS,CACPq+J,YAAa,IAEflD,eAAgB,WACd/wL,KAAKw8D,SACLx8D,KAAKgxL,SAAS/oI,SAASjoD,KAAK41B,QAAQq+J,YACtC,EACAz/B,WAAY,SAAU35J,EAAKN,GACb,gBAARM,GACFmF,KAAKgxL,SAAS3oI,YAAYroD,KAAK41B,QAAQq+J,aAAahsI,SAAS1tD,GAE/DyF,KAAK4yJ,YAAY92J,UACnB,IAGgB24D,EAAEu9F,GAAGgiC,OAiBzBv/H,EAAE29F,OAAO,eAAgB,CACvBpgI,QAAS,SACT+gI,kBAAmB,OACnBn9H,QAAS,CACPu/D,OAAQ,IACR6uF,YAAY,EACZkQ,QAAQ,EACR/3J,MAAO,UACPg4J,UAAW,YAEXltB,SAAU,KACVmtB,WAAY,KACZnN,KAAM,KACN74J,IAAK,KACLimK,KAAM,MAERrgC,QAAS,WACP,IAAIsgC,EACFt6L,EAAIgG,KAAK41B,QACTu/D,EAASn7F,EAAEm7F,OACbn1F,KAAKu0L,QAAS,EACdv0L,KAAKw0L,OAAQ,EACbx0L,KAAKm1F,OAA2B,oBAAXA,EAAwBA,EAAS,SAAUr7F,GAC9D,OAAOA,EAAE+rC,GAAGsvD,EACd,EACAn1F,KAAKs0L,YAAc,WAEjB,IAAIx4L,UAAUtF,OAKZ,OAAO89L,IAA4BA,EAAc,CAC/Cv4I,MAAO/7C,KAAKm3D,QAAQ,GAAG9Z,YACvBa,OAAQl+C,KAAKm3D,QAAQ,GAAG9Y,eAL1Bi2I,EAAcx4L,UAAU,EAQ5B,EACAkE,KAAKy0L,cAAcz6L,EAAEmiC,OACjBniC,EAAEgqL,YACJhkL,KAAKq1J,UAAU,eAEnB,EACAo/B,cAAe,SAAUt4J,GAEvBs4B,EAAEu9F,GAAG4zB,UAAU8O,WAAWv4J,GAASs4B,EAAEu9F,GAAG4zB,UAAU8O,WAAWv4J,IAAU,GACvEs4B,EAAEu9F,GAAG4zB,UAAU8O,WAAWv4J,GAAOrlC,KAAKkJ,KACxC,EACA20L,QAAS,SAAU1N,GAEjB,IADA,IAAI3wL,EAAI,EACDA,EAAI2wL,EAAKzwL,OAAQF,IAClB2wL,EAAK3wL,KAAO0J,MACdinL,EAAKtxJ,OAAOr/B,EAAG,EAGrB,EACA89J,SAAU,WACR,IAAI6yB,EAAOxyH,EAAEu9F,GAAG4zB,UAAU8O,WAAW10L,KAAK41B,QAAQuG,OAClDn8B,KAAK20L,QAAQ1N,EACf,EACAzyB,WAAY,SAAU35J,EAAKN,GACzB,GAAY,WAARM,EACFmF,KAAKm1F,OAA0B,oBAAV56F,EAAuBA,EAAQ,SAAUT,GAC5D,OAAOA,EAAE+rC,GAAGtrC,EACd,OACK,GAAY,UAARM,EAAiB,CAC1B,IAAIosL,EAAOxyH,EAAEu9F,GAAG4zB,UAAU8O,WAAW10L,KAAK41B,QAAQuG,OAClDn8B,KAAK20L,QAAQ1N,GACbjnL,KAAKy0L,cAAcl6L,EACrB,CACAyF,KAAKw8D,OAAO3hE,EAAKN,EACnB,EACAk1F,UAAW,SAAU92F,GACnB,IAAIkvL,EAAYpzH,EAAEu9F,GAAG4zB,UAAUp2H,QAC/BxvD,KAAK40L,kBACD/M,GACF7nL,KAAKk0J,SAAS,WAAYv7J,EAAOqH,KAAKgyJ,GAAG61B,GAE7C,EACAgN,YAAa,SAAUl8L,GACrB,IAAIkvL,EAAYpzH,EAAEu9F,GAAG4zB,UAAUp2H,QAC/BxvD,KAAK80L,qBACDjN,GACF7nL,KAAKk0J,SAAS,aAAcv7J,EAAOqH,KAAKgyJ,GAAG61B,GAE/C,EACAkN,MAAO,SAAUp8L,GACf,IAAIkvL,EAAYpzH,EAAEu9F,GAAG4zB,UAAUp2H,QAG1Bq4H,IAAcA,EAAUU,aAAeV,EAAU1wH,SAAS,KAAOn3D,KAAKm3D,QAAQ,IAG/En3D,KAAKm1F,OAAOv+F,KAAKoJ,KAAKm3D,QAAQ,GAAI0wH,EAAUU,aAAeV,EAAU1wH,WACvEn3D,KAAKg1L,iBACLh1L,KAAKk0J,SAAS,OAAQv7J,EAAOqH,KAAKgyJ,GAAG61B,IAEzC,EACAoN,KAAM,SAAUt8L,GACd,IAAIkvL,EAAYpzH,EAAEu9F,GAAG4zB,UAAUp2H,QAG1Bq4H,IAAcA,EAAUU,aAAeV,EAAU1wH,SAAS,KAAOn3D,KAAKm3D,QAAQ,IAG/En3D,KAAKm1F,OAAOv+F,KAAKoJ,KAAKm3D,QAAQ,GAAI0wH,EAAUU,aAAeV,EAAU1wH,WACvEn3D,KAAKk1L,oBACLl1L,KAAKk0J,SAAS,MAAOv7J,EAAOqH,KAAKgyJ,GAAG61B,IAExC,EACAsN,MAAO,SAAUx8L,EAAOy8L,GACtB,IAAIvN,EAAYuN,GAAU3gI,EAAEu9F,GAAG4zB,UAAUp2H,QACvC6lI,GAAuB,EAGzB,SAAKxN,IAAcA,EAAUU,aAAeV,EAAU1wH,SAAS,KAAOn3D,KAAKm3D,QAAQ,MAGnFn3D,KAAKm3D,QAAQ37B,KAAK,uBAAuBmF,IAAI,0BAA0BzL,MAAK,WAC1E,IAAI6mI,EAAOtnG,EAAEz0D,MAAMs1L,UAAU,YAC7B,GAAIv5B,EAAKnmI,QAAQs+J,SAAWn4B,EAAKnmI,QAAQyF,UAAY0gI,EAAKnmI,QAAQuG,QAAU0rJ,EAAUjyJ,QAAQuG,OAAS4/H,EAAK5mE,OAAOv+F,KAAKmlK,EAAK5kG,QAAQ,GAAI0wH,EAAUU,aAAeV,EAAU1wH,UAAY1C,EAAEu9F,GAAGzvD,UAAUslF,EAAWpzH,EAAEn3D,OAAOy+J,EAAM,CAC/Nv6I,OAAQu6I,EAAK5kG,QAAQ31C,WACnBu6I,EAAKnmI,QAAQu+J,UAAWx7L,GAE1B,OADA08L,GAAuB,GAChB,CAEX,KACIA,MAGAr1L,KAAKm1F,OAAOv+F,KAAKoJ,KAAKm3D,QAAQ,GAAI0wH,EAAUU,aAAeV,EAAU1wH,WACvEn3D,KAAK80L,qBACL90L,KAAKk1L,oBACLl1L,KAAKk0J,SAAS,OAAQv7J,EAAOqH,KAAKgyJ,GAAG61B,IAC9B7nL,KAAKm3D,UAGhB,EACA66F,GAAI,SAAUn4J,GACZ,MAAO,CACLguL,UAAWhuL,EAAE0uL,aAAe1uL,EAAEs9D,QAC9B4+D,OAAQl8H,EAAEk8H,OACV54E,SAAUtjD,EAAEsjD,SACZ37B,OAAQ3nB,EAAEksL,YAEd,EAGAiP,eAAgB,WACdh1L,KAAKq1J,UAAU,qBACjB,EACA6/B,kBAAmB,WACjBl1L,KAAKq0J,aAAa,qBACpB,EACAugC,gBAAiB,WACf50L,KAAKq1J,UAAU,sBACjB,EACAy/B,mBAAoB,WAClB90L,KAAKq0J,aAAa,sBACpB,IAEF5/F,EAAEu9F,GAAGzvD,UAAY,WACf,SAASgzF,EAAW9nL,EAAGuuE,EAAWrgB,GAChC,OAAOluD,GAAKuuE,GAAavuE,EAAIuuE,EAAYrgB,CAC3C,CACA,OAAO,SAAUksH,EAAWyN,EAAWE,EAAe78L,GACpD,IAAK28L,EAAU9zK,OACb,OAAO,EAET,IAAI6nK,GAAMxB,EAAU9B,aAAe8B,EAAU1qI,SAASs4I,UAAUvzI,KAAO2lI,EAAUnB,QAAQxkI,KACvFqnI,GAAM1B,EAAU9B,aAAe8B,EAAU1qI,SAASs4I,UAAU/3J,IAAMmqJ,EAAUnB,QAAQhpJ,IACpF4rJ,EAAKD,EAAKxB,EAAUR,kBAAkBtrI,MACtCytI,EAAKD,EAAK1B,EAAUR,kBAAkBnpI,OACtC5mD,EAAIg+L,EAAU9zK,OAAO0gC,KACrB1nD,EAAI86L,EAAU9zK,OAAOkc,IACrBtjC,EAAI9C,EAAIg+L,EAAUhB,cAAcv4I,MAChCv/C,EAAIhC,EAAI86L,EAAUhB,cAAcp2I,OAClC,OAAQs3I,GACN,IAAK,MACH,OAAOl+L,GAAK+xL,GAAMC,GAAMlvL,GAAKI,GAAK+uL,GAAMC,GAAMhtL,EAChD,IAAK,YACH,OAAOlF,EAAI+xL,EAAKxB,EAAUR,kBAAkBtrI,MAAQ,GAEpDutI,EAAKzB,EAAUR,kBAAkBtrI,MAAQ,EAAI3hD,GAE7CI,EAAI+uL,EAAK1B,EAAUR,kBAAkBnpI,OAAS,GAE9CsrI,EAAK3B,EAAUR,kBAAkBnpI,OAAS,EAAI1hD,EAEhD,IAAK,UACH,OAAO+4L,EAAW58L,EAAMq+C,MAAOx8C,EAAG86L,EAAUhB,cAAcp2I,SAAWq3I,EAAW58L,EAAMo+C,MAAOz/C,EAAGg+L,EAAUhB,cAAcv4I,OAC1H,IAAK,QACH,OAAQwtI,GAAM/uL,GAAK+uL,GAAM/sL,GAEzBgtL,GAAMhvL,GAAKgvL,GAAMhtL,GAEjB+sL,EAAK/uL,GAAKgvL,EAAKhtL,KACT6sL,GAAM/xL,GAAK+xL,GAAMjvL,GAEvBkvL,GAAMhyL,GAAKgyL,GAAMlvL,GAEjBivL,EAAK/xL,GAAKgyL,EAAKlvL,GAGjB,QACE,OAAO,EAEb,CACF,CA/CiB,GAoDjBq6D,EAAEu9F,GAAG4zB,UAAY,CACfp2H,QAAS,KACTklI,WAAY,CACV,QAAW,IAEblO,eAAgB,SAAUhsL,EAAG7B,GAC3B,IAAIrC,EACFohB,EACA9d,EAAI66D,EAAEu9F,GAAG4zB,UAAU8O,WAAWl6L,EAAEo7B,QAAQuG,QAAU,GAClDljC,EAAON,EAAQA,EAAMM,KAAO,KAE5B2vC,GAAQpuC,EAAE+tL,aAAe/tL,EAAE28D,SAAS37B,KAAK,uBAAuByL,UAClEyuJ,EAAgB,IAAKp/L,EAAI,EAAGA,EAAIsD,EAAEpD,OAAQF,IAExC,KAAIsD,EAAEtD,GAAGs/B,QAAQyF,UAAY7gC,IAAMZ,EAAEtD,GAAG6+F,OAAOv+F,KAAKgD,EAAEtD,GAAG6gE,QAAQ,GAAI38D,EAAE+tL,aAAe/tL,EAAE28D,UAAxF,CAKA,IAAKz/C,EAAI,EAAGA,EAAIkxB,EAAKpyC,OAAQkhB,IAC3B,GAAIkxB,EAAKlxB,KAAO9d,EAAEtD,GAAG6gE,QAAQ,GAAI,CAC/Bv9D,EAAEtD,GAAGg+L,cAAcp2I,OAAS,EAC5B,SAASw3I,CACX,CAEF97L,EAAEtD,GAAG85D,QAA0C,SAAhCx2D,EAAEtD,GAAG6gE,QAAQhoB,IAAI,WAC3Bv1C,EAAEtD,GAAG85D,UAKG,cAATn3D,GACFW,EAAEtD,GAAGm5F,UAAU74F,KAAKgD,EAAEtD,GAAIqC,GAE5BiB,EAAEtD,GAAGkrB,OAAS5nB,EAAEtD,GAAG6gE,QAAQ31C,SAC3B5nB,EAAEtD,GAAGg+L,YAAY,CACfv4I,MAAOniD,EAAEtD,GAAG6gE,QAAQ,GAAG9Z,YACvBa,OAAQtkD,EAAEtD,GAAG6gE,QAAQ,GAAG9Y,eArB1B,CAwBJ,EACA4oI,KAAM,SAAUY,EAAWlvL,GACzB,IAAIquL,GAAU,EAgBd,OAbAvyH,EAAEv/B,MAAMu/B,EAAEu9F,GAAG4zB,UAAU8O,WAAW7M,EAAUjyJ,QAAQuG,QAAU,IAAI3gC,SAAS,WACpEwE,KAAK41B,WAGL51B,KAAK41B,QAAQyF,UAAYr7B,KAAKowD,SAAWqE,EAAEu9F,GAAGzvD,UAAUslF,EAAW7nL,KAAMA,KAAK41B,QAAQu+J,UAAWx7L,KACpGquL,EAAUhnL,KAAKm1L,MAAMv+L,KAAKoJ,KAAMrH,IAAUquL,IAEvChnL,KAAK41B,QAAQyF,UAAYr7B,KAAKowD,SAAWpwD,KAAKm1F,OAAOv+F,KAAKoJ,KAAKm3D,QAAQ,GAAI0wH,EAAUU,aAAeV,EAAU1wH,WACjHn3D,KAAKw0L,OAAQ,EACbx0L,KAAKu0L,QAAS,EACdv0L,KAAK60L,YAAYj+L,KAAKoJ,KAAMrH,IAEhC,IACOquL,CACT,EACAP,UAAW,SAAUoB,EAAWlvL,GAG9BkvL,EAAU1wH,QAAQhwB,aAAa,QAAQwL,GAAG,oBAAoB,WACvDk1I,EAAUjyJ,QAAQ2uJ,kBACrB9vH,EAAEu9F,GAAG4zB,UAAUY,eAAeqB,EAAWlvL,EAE7C,GACF,EACAosL,KAAM,SAAU8C,EAAWlvL,GAGrBkvL,EAAUjyJ,QAAQ2uJ,kBACpB9vH,EAAEu9F,GAAG4zB,UAAUY,eAAeqB,EAAWlvL,GAI3C87D,EAAEv/B,KAAKu/B,EAAEu9F,GAAG4zB,UAAU8O,WAAW7M,EAAUjyJ,QAAQuG,QAAU,IAAI,WAC/D,IAAIn8B,KAAK41B,QAAQyF,WAAYr7B,KAAK21L,aAAgB31L,KAAKowD,QAAvD,CAGA,IAAIwlI,EACFz5J,EACAiE,EACAy1J,EAAaphI,EAAEu9F,GAAGzvD,UAAUslF,EAAW7nL,KAAMA,KAAK41B,QAAQu+J,UAAWx7L,GACrEkB,GAAKg8L,GAAc71L,KAAKu0L,OAAS,QAAUsB,IAAe71L,KAAKu0L,OAAS,SAAW,KAChF16L,IAGDmG,KAAK41B,QAAQs+J,SAEf/3J,EAAQn8B,KAAK41B,QAAQuG,OACrBiE,EAASpgC,KAAKm3D,QAAQjwB,QAAQ,uBAAuB1hB,QAAO,WAC1D,OAAOivC,EAAEz0D,MAAMs1L,UAAU,YAAY1/J,QAAQuG,QAAUA,CACzD,KACW3lC,UACTo/L,EAAiBnhI,EAAEr0B,EAAO,IAAIk1J,UAAU,aACzBK,YAAoB,WAAN97L,IAK7B+7L,GAAwB,WAAN/7L,IACpB+7L,EAAerB,QAAS,EACxBqB,EAAepB,OAAQ,EACvBoB,EAAeX,KAAKr+L,KAAKg/L,EAAgBj9L,IAE3CqH,KAAKnG,IAAK,EACVmG,KAAW,UAANnG,EAAgB,SAAW,UAAW,EAC3CmG,KAAW,WAANnG,EAAiB,QAAU,QAAQjD,KAAKoJ,KAAMrH,GAG/Ci9L,GAAwB,UAAN/7L,IACpB+7L,EAAepB,OAAQ,EACvBoB,EAAerB,QAAS,EACxBqB,EAAeb,MAAMn+L,KAAKg/L,EAAgBj9L,IAnC5C,CAqCF,GACF,EACAuuL,SAAU,SAAUW,EAAWlvL,GAC7BkvL,EAAU1wH,QAAQhwB,aAAa,QAAQ4L,IAAI,oBAItC80I,EAAUjyJ,QAAQ2uJ,kBACrB9vH,EAAEu9F,GAAG4zB,UAAUY,eAAeqB,EAAWlvL,EAE7C,IAKqB,IAAnB87D,EAAEyrG,cAEJzrG,EAAE29F,OAAO,eAAgB39F,EAAEu9F,GAAGsjC,UAAW,CACvC1/J,QAAS,CACPkgK,YAAY,EACZz2D,aAAa,GAEfu1D,gBAAiB,WACf50L,KAAKw8D,SACDx8D,KAAK41B,QAAQypG,aACfr/H,KAAKm3D,QAAQlP,SAASjoD,KAAK41B,QAAQypG,YAEvC,EACAy1D,mBAAoB,WAClB90L,KAAKw8D,SACDx8D,KAAK41B,QAAQypG,aACfr/H,KAAKm3D,QAAQ9O,YAAYroD,KAAK41B,QAAQypG,YAE1C,EACA21D,eAAgB,WACdh1L,KAAKw8D,SACDx8D,KAAK41B,QAAQkgK,YACf91L,KAAKm3D,QAAQlP,SAASjoD,KAAK41B,QAAQkgK,WAEvC,EACAZ,kBAAmB,WACjBl1L,KAAKw8D,SACDx8D,KAAK41B,QAAQkgK,YACf91L,KAAKm3D,QAAQ9O,YAAYroD,KAAK41B,QAAQkgK,WAE1C,IAGmBrhI,EAAEu9F,GAAGsjC,UAsBH7gI,EAAE29F,OAAO,iBAAkB,CAClDpgI,QAAS,SACT4D,QAAS,CACP4uC,QAAS,CACP,iBAAkB,gBAClB,uBAAwB,iBACxB,0BAA2B,mBAE7BlgE,IAAK,IACL/J,MAAO,EACPoyK,OAAQ,KACR5nH,SAAU,MAEZx1C,IAAK,EACLykJ,QAAS,WAEPh0J,KAAK+1L,SAAW/1L,KAAK41B,QAAQr7B,MAAQyF,KAAKg2L,oBAC1Ch2L,KAAKm3D,QAAQx4B,KAAK,CAGhBorI,KAAM,cACN,gBAAiB/pK,KAAKuP,MAExBvP,KAAKq1J,UAAU,iBAAkB,+BACjCr1J,KAAKi2L,SAAWxhI,EAAE,SAAS1Z,SAAS/6C,KAAKm3D,SACzCn3D,KAAKq1J,UAAUr1J,KAAKi2L,SAAU,uBAAwB,oBACtDj2L,KAAKk2L,eACP,EACA9hC,SAAU,WACRp0J,KAAKm3D,QAAQ/P,WAAW,kDACxBpnD,KAAKi2L,SAAS/sJ,QAChB,EACA3uC,MAAO,SAAU47L,GACf,QAAiB58L,IAAb48L,EACF,OAAOn2L,KAAK41B,QAAQr7B,MAEtByF,KAAK41B,QAAQr7B,MAAQyF,KAAKg2L,kBAAkBG,GAC5Cn2L,KAAKk2L,eACP,EACAF,kBAAmB,SAAUG,GAU3B,YATiB58L,IAAb48L,IACFA,EAAWn2L,KAAK41B,QAAQr7B,OAE1ByF,KAAKo2L,eAA6B,IAAbD,EAGG,kBAAbA,IACTA,EAAW,IAENn2L,KAAKo2L,eAAwBlyL,KAAKqL,IAAIvP,KAAK41B,QAAQtxB,IAAKJ,KAAKI,IAAItE,KAAKuP,IAAK4mL,GACpF,EACA5hC,YAAa,SAAU3+H,GAErB,IAAIr7B,EAAQq7B,EAAQr7B,aACbq7B,EAAQr7B,MACfyF,KAAKw8D,OAAO5mC,GACZ51B,KAAK41B,QAAQr7B,MAAQyF,KAAKg2L,kBAAkBz7L,GAC5CyF,KAAKk2L,eACP,EACA1hC,WAAY,SAAU35J,EAAKN,GACb,QAARM,IAEFN,EAAQ2J,KAAKI,IAAItE,KAAKuP,IAAKhV,IAE7ByF,KAAKw8D,OAAO3hE,EAAKN,EACnB,EACA05J,mBAAoB,SAAU15J,GAC5ByF,KAAKw8D,OAAOjiE,GACZyF,KAAKm3D,QAAQx4B,KAAK,gBAAiBpkC,GACnCyF,KAAK60J,aAAa,KAAM,sBAAuBt6J,EACjD,EACA87L,YAAa,WACX,OAAOr2L,KAAKo2L,cAAgB,IAAM,KAAOp2L,KAAK41B,QAAQr7B,MAAQyF,KAAKuP,MAAQvP,KAAK41B,QAAQtxB,IAAMtE,KAAKuP,IACrG,EACA2mL,cAAe,WACb,IAAI37L,EAAQyF,KAAK41B,QAAQr7B,MACvB+7L,EAAat2L,KAAKq2L,cACpBr2L,KAAKi2L,SAAS7lJ,OAAOpwC,KAAKo2L,eAAiB77L,EAAQyF,KAAKuP,KAAKwsC,MAAMu6I,EAAWzkK,QAAQ,GAAK,KAC3F7xB,KAAK60J,aAAa70J,KAAKi2L,SAAU,0BAA2B,KAAM17L,IAAUyF,KAAK41B,QAAQtxB,KAAKuwJ,aAAa,+BAAgC,KAAM70J,KAAKo2L,eAClJp2L,KAAKo2L,eACPp2L,KAAKm3D,QAAQ/P,WAAW,iBACnBpnD,KAAKu2L,aACRv2L,KAAKu2L,WAAa9hI,EAAE,SAAS1Z,SAAS/6C,KAAKi2L,UAC3Cj2L,KAAKq1J,UAAUr1J,KAAKu2L,WAAY,6BAGlCv2L,KAAKm3D,QAAQx4B,KAAK,CAChB,gBAAiB3+B,KAAK41B,QAAQtxB,IAC9B,gBAAiB/J,IAEfyF,KAAKu2L,aACPv2L,KAAKu2L,WAAWrtJ,SAChBlpC,KAAKu2L,WAAa,OAGlBv2L,KAAK+1L,WAAax7L,IACpByF,KAAK+1L,SAAWx7L,EAChByF,KAAKk0J,SAAS,WAEZ35J,IAAUyF,KAAK41B,QAAQtxB,KACzBtE,KAAKk0J,SAAS,WAElB,IAmBsBz/F,EAAE29F,OAAO,gBAAiB39F,EAAEu9F,GAAG+xB,MAAO,CAC5D/xJ,QAAS,SACT4D,QAAS,CACPmlB,SAAU,OACVy7I,aAAa,EACb55B,SAAU,EACVp3I,OAAQ,IACR2uK,UAAW,QAEXxyJ,SAAU,KACV80J,UAAW,KACXt2J,MAAO,KACPmO,KAAM,KACNooJ,WAAY,KACZC,YAAa,MAEf3iC,QAAS,WACP,IAAIltI,EAAO9mB,KACXA,KAAKq1J,UAAU,iBACfr1J,KAAK42L,SAAU,EAGf52L,KAAK44D,QAAU,WACb9xC,EAAK+vK,WAAapiI,EAAE3tC,EAAKqwC,QAAQ,IAAI31C,SACrCsF,EAAKgwK,UAAYriI,EAAE3tC,EAAK8O,QAAQpQ,OAAQsB,EAAKqwC,QAAQ,IACrDrwC,EAAKuuI,UAAUvuI,EAAKgwK,UAAW,eAC/BhwK,EAAKgwK,UAAU5hK,MAAK,WAClB,IAAI68D,EAAQt9B,EAAEz0D,MACZ+2L,EAAiBhlG,EAAMvwE,SACvBlL,EAAM,CACJ4rC,KAAM60I,EAAe70I,KAAOp7B,EAAK+vK,WAAW30I,KAC5CxkB,IAAKq5J,EAAer5J,IAAM5W,EAAK+vK,WAAWn5J,KAE9C+2B,EAAEx+D,KAAK+J,KAAM,kBAAmB,CAC9Bm3D,QAASn3D,KACTwtE,SAAUukB,EACV7vC,KAAM5rC,EAAI4rC,KACVxkB,IAAKpnB,EAAIonB,IACTsf,MAAO1mC,EAAI4rC,KAAO6vC,EAAM8kE,aACxBiC,OAAQxiJ,EAAIonB,IAAMq0D,EAAM+kE,cACxBkgC,eAAe,EACfr1J,SAAUowD,EAAMtpC,SAAS,eACzBguI,UAAW1kG,EAAMtpC,SAAS,gBAC1BkuI,YAAa5kG,EAAMtpC,SAAS,mBAEhC,GACF,EACAzoD,KAAK44D,UACL54D,KAAKsiL,aACLtiL,KAAK+1H,OAASthE,EAAE,SAChBz0D,KAAKq1J,UAAUr1J,KAAK+1H,OAAQ,uBAC9B,EACAq+B,SAAU,WACRp0J,KAAK82L,UAAU/oJ,WAAW,mBAC1B/tC,KAAKwiL,eACP,EACAc,YAAa,SAAU3qL,GACrB,IAAImuB,EAAO9mB,KACT41B,EAAU51B,KAAK41B,QACjB51B,KAAKi3L,KAAO,CAACt+L,EAAMo+C,MAAOp+C,EAAMq+C,OAChCh3C,KAAK62L,WAAapiI,EAAEz0D,KAAKm3D,QAAQ,IAAI31C,SACjCxhB,KAAK41B,QAAQyF,WAGjBr7B,KAAK82L,UAAYriI,EAAE7+B,EAAQpQ,OAAQxlB,KAAKm3D,QAAQ,IAChDn3D,KAAKk0J,SAAS,QAASv7J,GACvB87D,EAAE7+B,EAAQmlB,UAAUP,OAAOx6C,KAAK+1H,QAGhC/1H,KAAK+1H,OAAO5mF,IAAI,CACd,KAAQx2C,EAAMo+C,MACd,IAAOp+C,EAAMq+C,MACb,MAAS,EACT,OAAU,IAERphB,EAAQ4gK,aACVx2L,KAAK44D,UAEP54D,KAAK82L,UAAUtxK,OAAO,gBAAgB0P,MAAK,WACzC,IAAIgiK,EAAWziI,EAAEx+D,KAAK+J,KAAM,mBAC5Bk3L,EAASF,eAAgB,EACpBr+L,EAAMm+C,SAAYn+C,EAAMg+C,UAC3B7vB,EAAKutI,aAAa6iC,EAAS1pH,SAAU,eACrC0pH,EAASv1J,UAAW,EACpB7a,EAAKuuI,UAAU6hC,EAAS1pH,SAAU,kBAClC0pH,EAASP,aAAc,EAGvB7vK,EAAKotI,SAAS,cAAev7J,EAAO,CAClCg+L,YAAaO,EAAS//H,UAG5B,IACA1C,EAAE97D,EAAMQ,QAAQ+tC,UAAUD,UAAU/R,MAAK,WACvC,IAAIiiK,EACFD,EAAWziI,EAAEx+D,KAAK+J,KAAM,mBAC1B,GAAIk3L,EAiBF,OAhBAC,GAAYx+L,EAAMm+C,UAAYn+C,EAAMg+C,UAAYugJ,EAAS1pH,SAAS/kB,SAAS,eAC3E3hC,EAAKutI,aAAa6iC,EAAS1pH,SAAU2pH,EAAW,iBAAmB,eAAe9hC,UAAU6hC,EAAS1pH,SAAU2pH,EAAW,eAAiB,kBAC3ID,EAASP,aAAeQ,EACxBD,EAAST,UAAYU,EACrBD,EAASv1J,SAAWw1J,EAGhBA,EACFrwK,EAAKotI,SAAS,YAAav7J,EAAO,CAChC89L,UAAWS,EAAS//H,UAGtBrwC,EAAKotI,SAAS,cAAev7J,EAAO,CAClCg+L,YAAaO,EAAS//H,WAGnB,CAEX,IACF,EACAssH,WAAY,SAAU9qL,GAEpB,GADAqH,KAAK42L,SAAU,GACX52L,KAAK41B,QAAQyF,SAAjB,CAGA,IAAI3W,EACFoC,EAAO9mB,KACP41B,EAAU51B,KAAK41B,QACfyzJ,EAAKrpL,KAAKi3L,KAAK,GACf1N,EAAKvpL,KAAKi3L,KAAK,GACf3N,EAAK3wL,EAAMo+C,MACXyyI,EAAK7wL,EAAMq+C,MA2Fb,OA1FIqyI,EAAKC,IACP5kK,EAAM4kK,EACNA,EAAKD,EACLA,EAAK3kK,GAEH6kK,EAAKC,IACP9kK,EAAM8kK,EACNA,EAAKD,EACLA,EAAK7kK,GAEP1kB,KAAK+1H,OAAO5mF,IAAI,CACd+S,KAAMmnI,EACN3rJ,IAAK6rJ,EACLxtI,MAAOutI,EAAKD,EACZnrI,OAAQsrI,EAAKD,IAEfvpL,KAAK82L,UAAU5hK,MAAK,WAClB,IAAIgiK,EAAWziI,EAAEx+D,KAAK+J,KAAM,mBAC1Bo3L,GAAM,EACN51K,EAAS,CAAC,EAGP01K,GAAYA,EAAS//H,UAAYrwC,EAAKqwC,QAAQ,KAGnD31C,EAAO0gC,KAAOg1I,EAASh1I,KAAOp7B,EAAK+vK,WAAW30I,KAC9C1gC,EAAOw7B,MAAQk6I,EAASl6I,MAAQl2B,EAAK+vK,WAAW30I,KAChD1gC,EAAOkc,IAAMw5J,EAASx5J,IAAM5W,EAAK+vK,WAAWn5J,IAC5Clc,EAAOs3I,OAASo+B,EAASp+B,OAAShyI,EAAK+vK,WAAWn5J,IACxB,UAAtB9H,EAAQu+J,UACViD,IAAQ51K,EAAO0gC,KAAOonI,GAAM9nK,EAAOw7B,MAAQqsI,GAAM7nK,EAAOkc,IAAM8rJ,GAAMhoK,EAAOs3I,OAASywB,GACrD,QAAtB3zJ,EAAQu+J,YACjBiD,EAAM51K,EAAO0gC,KAAOmnI,GAAM7nK,EAAOw7B,MAAQssI,GAAM9nK,EAAOkc,IAAM6rJ,GAAM/nK,EAAOs3I,OAAS0wB,GAEhF4N,GAEEF,EAASv1J,WACX7a,EAAKutI,aAAa6iC,EAAS1pH,SAAU,eACrC0pH,EAASv1J,UAAW,GAElBu1J,EAASP,cACX7vK,EAAKutI,aAAa6iC,EAAS1pH,SAAU,kBACrC0pH,EAASP,aAAc,GAEpBO,EAAST,YACZ3vK,EAAKuuI,UAAU6hC,EAAS1pH,SAAU,gBAClC0pH,EAAST,WAAY,EAGrB3vK,EAAKotI,SAAS,YAAav7J,EAAO,CAChC89L,UAAWS,EAAS//H,aAKpB+/H,EAAST,aACN99L,EAAMm+C,SAAWn+C,EAAMg+C,UAAYugJ,EAASF,eAC/ClwK,EAAKutI,aAAa6iC,EAAS1pH,SAAU,gBACrC0pH,EAAST,WAAY,EACrB3vK,EAAKuuI,UAAU6hC,EAAS1pH,SAAU,eAClC0pH,EAASv1J,UAAW,IAEpB7a,EAAKutI,aAAa6iC,EAAS1pH,SAAU,gBACrC0pH,EAAST,WAAY,EACjBS,EAASF,gBACXlwK,EAAKuuI,UAAU6hC,EAAS1pH,SAAU,kBAClC0pH,EAASP,aAAc,GAIzB7vK,EAAKotI,SAAS,cAAev7J,EAAO,CAClCg+L,YAAaO,EAAS//H,YAIxB+/H,EAASv1J,WACNhpC,EAAMm+C,SAAYn+C,EAAMg+C,SAAYugJ,EAASF,gBAChDlwK,EAAKutI,aAAa6iC,EAAS1pH,SAAU,eACrC0pH,EAASv1J,UAAW,EACpB7a,EAAKuuI,UAAU6hC,EAAS1pH,SAAU,kBAClC0pH,EAASP,aAAc,EAGvB7vK,EAAKotI,SAAS,cAAev7J,EAAO,CAClCg+L,YAAaO,EAAS//H,aAKhC,KACO,CAlGP,CAmGF,EACAusH,WAAY,SAAU/qL,GACpB,IAAImuB,EAAO9mB,KAuBX,OAtBAA,KAAK42L,SAAU,EACfniI,EAAE,kBAAmBz0D,KAAKm3D,QAAQ,IAAIjiC,MAAK,WACzC,IAAIgiK,EAAWziI,EAAEx+D,KAAK+J,KAAM,mBAC5B8mB,EAAKutI,aAAa6iC,EAAS1pH,SAAU,kBACrC0pH,EAASP,aAAc,EACvBO,EAASF,eAAgB,EACzBlwK,EAAKotI,SAAS,aAAcv7J,EAAO,CACjC+9L,WAAYQ,EAAS//H,SAEzB,IACA1C,EAAE,gBAAiBz0D,KAAKm3D,QAAQ,IAAIjiC,MAAK,WACvC,IAAIgiK,EAAWziI,EAAEx+D,KAAK+J,KAAM,mBAC5B8mB,EAAKutI,aAAa6iC,EAAS1pH,SAAU,gBAAgB6nF,UAAU6hC,EAAS1pH,SAAU,eAClF0pH,EAAST,WAAY,EACrBS,EAASv1J,UAAW,EACpBu1J,EAASF,eAAgB,EACzBlwK,EAAKotI,SAAS,WAAYv7J,EAAO,CAC/BgpC,SAAUu1J,EAAS//H,SAEvB,IACAn3D,KAAKk0J,SAAS,OAAQv7J,GACtBqH,KAAK+1H,OAAO7sF,UACL,CACT,IAuBsBurB,EAAE29F,OAAO,gBAAiB,CAAC39F,EAAEu9F,GAAGyT,eAAgB,CACtEzzI,QAAS,SACTyhI,eAAgB,WAChB79H,QAAS,CACPmlB,SAAU,KACVypB,QAAS,CACP,4BAA6B,gBAC7B,8BAA+B,iBAEjCnpC,SAAU,KACV0rI,MAAO,CACLhlI,OAAQ,wBAEVob,SAAU,CACR07G,GAAI,WACJV,GAAI,cACJD,UAAW,QAEbn8G,OAAO,EAEP4wH,OAAQ,KACR5/F,MAAO,KACP5rC,MAAO,KACPwvB,KAAM,KACNl0B,OAAQ,MAEVu3H,QAAS,WACP,IAAIqjC,EAAer3L,KAAKm3D,QAAQm7E,WAAW3zG,KAAK,MAChD3+B,KAAKq4F,IAAM,CACTlhC,QAASkgI,EACTt1J,OAAQs1J,EAAe,UACvBjsB,KAAMisB,EAAe,SAEvBr3L,KAAKs3L,cACLt3L,KAAKu3L,YACLv3L,KAAK4lK,wBACL5lK,KAAKw3L,WAAY,EACjBx3L,KAAKy3L,UAAYhjI,GACnB,EACA6iI,YAAa,WACX,IAAIzvB,EACF/gJ,EAAO9mB,KACPylB,EAAOzlB,KAAK03L,aAAa13L,KAAKm3D,QAAQ37B,KAAK,mBAAoBx7B,KAAKm3D,QAAQ,GAAGv1B,eAGjF5hC,KAAKsmK,OAAStmK,KAAKm3D,QAAQmvG,SAAS3nI,KAAK,MAAO3+B,KAAKq4F,IAAIt2D,QACzD/hC,KAAK8zJ,IAAI9zJ,KAAKsmK,OAAQ,CACpBxwH,MAAO,SAAUn9C,GACfqH,KAAK+hC,OAAOyR,QAAQ,SACpB76C,EAAM46C,gBACR,IAIFvzC,KAAKm3D,QAAQhnB,OAGbnwC,KAAK+hC,OAAS0yB,EAAE,SAAU,CACxBzM,SAAUhoD,KAAK41B,QAAQyF,UAAY,EAAI,EACvCU,GAAI/7B,KAAKq4F,IAAIt2D,OACbgoI,KAAM,WACN,gBAAiB,QACjB,oBAAqB,OACrB,YAAa/pK,KAAKq4F,IAAI+yE,KACtB,gBAAiB,OACjBrjF,MAAO/nF,KAAKm3D,QAAQx4B,KAAK,WACxBsc,YAAYj7C,KAAKm3D,SACpBn3D,KAAKq1J,UAAUr1J,KAAK+hC,OAAQ,mDAAoD,uBAChF8lI,EAAOpzG,EAAE,UAAU1Z,SAAS/6C,KAAK+hC,QACjC/hC,KAAKq1J,UAAUwS,EAAM,qBAAsB,WAAa7nK,KAAK41B,QAAQmxI,MAAMhlI,QAC3E/hC,KAAK23L,WAAa33L,KAAK43L,kBAAkBnyK,GAAMs1B,SAAS/6C,KAAK+hC,SAClC,IAAvB/hC,KAAK41B,QAAQmmB,OACf/7C,KAAK63L,gBAEP73L,KAAK8zJ,IAAI9zJ,KAAK+hC,OAAQ/hC,KAAK83L,eAC3B93L,KAAK+hC,OAAO8Q,IAAI,WAAW,WAGpB/rB,EAAK0wK,WACR1wK,EAAKixK,cAET,GACF,EACAR,UAAW,WACT,IAAIzwK,EAAO9mB,KAGXA,KAAKorK,KAAO32G,EAAE,OAAQ,CACpB,cAAe,OACf,kBAAmBz0D,KAAKq4F,IAAIt2D,OAC5BhG,GAAI/7B,KAAKq4F,IAAI+yE,OAIfprK,KAAKg4L,SAAWvjI,EAAE,SAASja,OAAOx6C,KAAKorK,MACvCprK,KAAKq1J,UAAUr1J,KAAKg4L,SAAU,qBAAsB,YACpDh4L,KAAKg4L,SAASj9I,SAAS/6C,KAAKguK,aAG5BhuK,KAAKi4L,aAAej4L,KAAKorK,KAAKA,KAAK,CACjC5mG,QAAS,CACP,UAAW,oBAEbulG,KAAM,UACNttI,OAAQ,SAAU9jC,EAAOq5J,GACvBr5J,EAAM46C,iBAKNzsB,EAAKoxK,gBACLpxK,EAAKqxK,QAAQnmC,EAAGvsI,KAAKxvB,KAAK,sBAAuB0C,EACnD,EACAwoC,MAAO,SAAUxoC,EAAOq5J,GACtB,IAAIvsI,EAAOusI,EAAGvsI,KAAKxvB,KAAK,sBAGD,MAAnB6wB,EAAKsxK,YAAsB3yK,EAAKuI,QAAUlH,EAAKsxK,aACjDtxK,EAAKotI,SAAS,QAASv7J,EAAO,CAC5B8sB,KAAMA,IAEHqB,EAAKqyD,QACRryD,EAAKqxK,QAAQ1yK,EAAM9sB,IAGvBmuB,EAAKsxK,WAAa3yK,EAAKuI,MACvBlH,EAAKib,OAAOpD,KAAK,wBAAyB7X,EAAK2wK,UAAUriK,GAAG3P,EAAKuI,OAAO2Q,KAAK,MAC/E,IACCysI,KAAK,YAGRprK,KAAKi4L,aAAa7iC,KAAKp1J,KAAKorK,KAAM,cAGlCprK,KAAKi4L,aAAa1tB,sBAAwB,WACxC,OAAO,CACT,EAGAvqK,KAAKi4L,aAAa3sB,WAAa,WAC7B,OAAO,CACT,CACF,EACA1yG,QAAS,WACP54D,KAAK+3L,eACL/3L,KAAK23L,WAAW98I,YAAY76C,KAAK23L,WAAa33L,KAAK43L,kBAEnD53L,KAAKq4L,mBAAmBpiM,KAAK,uBAAyB,CAAC,IAC5B,OAAvB+J,KAAK41B,QAAQmmB,OACf/7C,KAAK63L,eAET,EACAE,aAAc,WACZ,IAAItyK,EACFmQ,EAAU51B,KAAKm3D,QAAQ37B,KAAK,UAC9Bx7B,KAAKorK,KAAKrtK,QACViC,KAAKs4L,cAAc1iK,GACnB51B,KAAKivK,YAAYjvK,KAAKorK,KAAMprK,KAAKm+E,OACjCn+E,KAAKi4L,aAAar/H,UAClB54D,KAAKy3L,UAAYz3L,KAAKorK,KAAK5vI,KAAK,MAAMmF,IAAI,2BAA2BnF,KAAK,yBAC1Ex7B,KAAKw3L,WAAY,EACZ5hK,EAAQp/B,SAGbivB,EAAOzlB,KAAKq4L,mBAGZr4L,KAAKi4L,aAAa92J,MAAM,KAAM1b,GAC9BzlB,KAAKu4L,SAAS9yK,EAAKxvB,KAAK,uBAGxB+J,KAAKw0J,WAAW,WAAYx0J,KAAKm3D,QAAQ52D,KAAK,aAChD,EACAowD,KAAM,SAAUh4D,GACVqH,KAAK41B,QAAQyF,WAKZr7B,KAAKw3L,WAIRx3L,KAAKq0J,aAAar0J,KAAKorK,KAAK5vI,KAAK,oBAAqB,KAAM,mBAC5Dx7B,KAAKi4L,aAAa92J,MAAM,KAAMnhC,KAAKq4L,qBAJnCr4L,KAAK+3L,eAQF/3L,KAAKy3L,UAAUjhM,SAGpBwJ,KAAKm5E,QAAS,EACdn5E,KAAKw4L,cACLx4L,KAAKkvK,cACLlvK,KAAKy2J,YACLz2J,KAAK8zJ,IAAI9zJ,KAAKhI,SAAUgI,KAAKy4L,gBAC7Bz4L,KAAKk0J,SAAS,OAAQv7J,IACxB,EACA89J,UAAW,WACTz2J,KAAKg4L,SAAS76I,SAASsX,EAAEn3D,OAAO,CAC9Bo6J,GAAI13J,KAAK+hC,QACR/hC,KAAK41B,QAAQunB,UAClB,EACA4vB,MAAO,SAAUp0E,GACVqH,KAAKm5E,SAGVn5E,KAAKm5E,QAAS,EACdn5E,KAAKw4L,cACLx4L,KAAKowH,MAAQ,KACbpwH,KAAKo1J,KAAKp1J,KAAKhI,UACfgI,KAAKk0J,SAAS,QAASv7J,GACzB,EACAy5J,OAAQ,WACN,OAAOpyJ,KAAK+hC,MACd,EACA22J,WAAY,WACV,OAAO14L,KAAKorK,IACd,EACAwsB,kBAAmB,SAAUnyK,GAC3B,IAAIkyK,EAAaljI,EAAE,UAGnB,OAFAz0D,KAAK24L,SAAShB,EAAYlyK,EAAK+gD,OAC/BxmE,KAAKq1J,UAAUsiC,EAAY,sBACpBA,CACT,EACA1oB,YAAa,SAAU9pF,EAAIhH,GACzB,IAAIr3D,EAAO9mB,KACT44L,EAAkB,GACpBnkI,EAAEv/B,KAAKipD,GAAO,SAAUnwD,EAAOvI,GAC7B,IAAIk/D,EACAl/D,EAAKmsB,WAAagnJ,IACpBj0G,EAAKlwB,EAAE,OAAQ,CACb3gC,KAAMrO,EAAKmsB,WAEb9qB,EAAKuuI,UAAU1wE,EAAI,yBAA0B,mBAAqBl/D,EAAK0xC,QAAQ/2B,OAAO,YAAY7/B,KAAK,YAAc,qBAAuB,KAC5IokF,EAAG5pC,SAASoqC,GACZyzG,EAAkBnzK,EAAKmsB,UAEzB9qB,EAAKqoJ,gBAAgBhqF,EAAI1/D,EAC3B,GACF,EACA0pJ,gBAAiB,SAAUhqF,EAAI1/D,GAC7B,OAAOzlB,KAAKovK,YAAYjqF,EAAI1/D,GAAMxvB,KAAK,qBAAsBwvB,EAC/D,EACA2pJ,YAAa,SAAUjqF,EAAI1/D,GACzB,IAAIk/D,EAAKlwB,EAAE,QACT8nE,EAAU9nE,EAAE,QAAS,CACnBszB,MAAOtiE,EAAK0xC,QAAQx4B,KAAK,WAM7B,OAJIlZ,EAAK4V,UACPr7B,KAAKq1J,UAAU1wE,EAAI,KAAM,qBAE3B3kF,KAAK24L,SAASp8D,EAAS92G,EAAK+gD,OACrBme,EAAGnqC,OAAO+hF,GAASxhF,SAASoqC,EACrC,EACAwzG,SAAU,SAAUxhI,EAAS58D,GACvBA,EACF48D,EAAQrjC,KAAKv5B,GAEb48D,EAAQrd,KAAK,SAEjB,EACAgxH,MAAO,SAAUtmJ,EAAW7rB,GAC1B,IAAI8sB,EACF9N,EACA6N,EAAS,gBACPxlB,KAAKm5E,OACP1zD,EAAOzlB,KAAKy3L,UAAUriK,GAAGp1B,KAAKo4L,YAAYh4J,OAAO,OAEjD3a,EAAOzlB,KAAKy3L,UAAUriK,GAAGp1B,KAAKm3D,QAAQ,GAAGv1B,eAAexB,OAAO,MAC/D5a,GAAU,6BAGV7N,EADgB,UAAd6M,GAAuC,SAAdA,EACpBiB,EAAmB,UAAdjB,EAAwB,UAAY,WAAWgB,GAAQ4P,IAAI,GAEhE3P,EAAKjB,EAAY,OAAOgB,GAAQ4P,GAAG,IAEnC5+B,QACPwJ,KAAKi4L,aAAa92J,MAAMxoC,EAAOgf,EAEnC,EACA0gL,iBAAkB,WAChB,OAAOr4L,KAAKy3L,UAAUriK,GAAGp1B,KAAKm3D,QAAQ,GAAGv1B,eAAexB,OAAO,KACjE,EACAopI,QAAS,SAAU7wK,GACjBqH,KAAKA,KAAKm5E,OAAS,QAAU,QAAQxgF,EACvC,EACAu/L,cAAe,WACb,IAAIlmJ,EACChyC,KAAKowH,QAGN90H,OAAOq1H,eACT3+E,EAAY12C,OAAOq1H,gBACTsJ,kBACVjoF,EAAUkoF,SAASl6H,KAAKowH,QAIxBpwH,KAAKowH,MAAM3zF,SAMbz8B,KAAK+hC,OAAOyR,QAAQ,SACtB,EACAilJ,eAAgB,CACdxqB,UAAW,SAAUt1K,GACdqH,KAAKm5E,SAGL1kB,EAAE97D,EAAMQ,QAAQ4tC,QAAQ,yBAA2B0tB,EAAEv8B,eAAel4B,KAAKq4F,IAAIt2D,SAASvrC,QACzFwJ,KAAK+sE,MAAMp0E,GAEf,GAEFm/L,cAAe,CAEb7pB,UAAW,WACT,IAAIj8H,EACA12C,OAAOq1H,cACT3+E,EAAY12C,OAAOq1H,gBACLC,aACZ5wH,KAAKowH,MAAQp+E,EAAU6+E,WAAW,IAKpC7wH,KAAKowH,MAAQp4H,SAASg6C,UAAUs7D,aAEpC,EACAx3D,MAAO,SAAUn9C,GACfqH,KAAKk4L,gBACLl4L,KAAKwpK,QAAQ7wK,EACf,EACAgwK,QAAS,SAAUhwK,GACjB,IAAI46C,GAAiB,EACrB,OAAQ56C,EAAMy+C,SACZ,KAAKqd,EAAEu9F,GAAG56G,QAAQw1E,IAClB,KAAKn4D,EAAEu9F,GAAG56G,QAAQ01E,OAChB9sH,KAAK+sE,MAAMp0E,GACX46C,GAAiB,EACjB,MACF,KAAKkhB,EAAEu9F,GAAG56G,QAAQy1E,MACZ7sH,KAAKm5E,QACPn5E,KAAK64L,mBAAmBlgM,GAE1B,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQivH,GACZ1tK,EAAM49C,OACRv2C,KAAKwpK,QAAQ7wK,GAEbqH,KAAK8qK,MAAM,OAAQnyK,GAErB,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ2uH,KACZptK,EAAM49C,OACRv2C,KAAKwpK,QAAQ7wK,GAEbqH,KAAK8qK,MAAM,OAAQnyK,GAErB,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ21E,MACZ/sH,KAAKm5E,OACPn5E,KAAK64L,mBAAmBlgM,GAExBqH,KAAKwpK,QAAQ7wK,GAEf,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQwwC,KAChB5nF,KAAK8qK,MAAM,OAAQnyK,GACnB,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQswC,MAChB1nF,KAAK8qK,MAAM,OAAQnyK,GACnB,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ6uH,KAClB,KAAKxxG,EAAEu9F,GAAG56G,QAAQ+uH,QAChBnmK,KAAK8qK,MAAM,QAASnyK,GACpB,MACF,KAAK87D,EAAEu9F,GAAG56G,QAAQ4uH,IAClB,KAAKvxG,EAAEu9F,GAAG56G,QAAQ8uH,UAChBlmK,KAAK8qK,MAAM,OAAQnyK,GACnB,MACF,QACEqH,KAAKorK,KAAK53H,QAAQ76C,GAClB46C,GAAiB,EAEjBA,GACF56C,EAAM46C,gBAEV,GAEFslJ,mBAAoB,SAAUlgM,GAC5B,IAAI8sB,EAAOzlB,KAAKy3L,UAAUriK,GAAGp1B,KAAKo4L,YAAYh4J,OAAO,MAChD3a,EAAKgjC,SAAS,sBACjBzoD,KAAKm4L,QAAQ1yK,EAAKxvB,KAAK,sBAAuB0C,EAElD,EACAw/L,QAAS,SAAU1yK,EAAM9sB,GACvB,IAAImgM,EAAW94L,KAAKm3D,QAAQ,GAAGv1B,cAG/B5hC,KAAKm3D,QAAQ,GAAGv1B,cAAgBnc,EAAKuI,MACrChuB,KAAK23L,WAAW98I,YAAY76C,KAAK23L,WAAa33L,KAAK43L,kBAAkBnyK,IACrEzlB,KAAKu4L,SAAS9yK,GACdzlB,KAAKk0J,SAAS,SAAUv7J,EAAO,CAC7B8sB,KAAMA,IAEJA,EAAKuI,QAAU8qK,GACjB94L,KAAKk0J,SAAS,SAAUv7J,EAAO,CAC7B8sB,KAAMA,IAGVzlB,KAAK+sE,MAAMp0E,EACb,EACA4/L,SAAU,SAAU9yK,GAClB,IAAIsW,EAAK/7B,KAAKy3L,UAAUriK,GAAG3P,EAAKuI,OAAO2Q,KAAK,MAC5C3+B,KAAK+hC,OAAOpD,KAAK,CACf,kBAAmB5C,EACnB,wBAAyBA,IAE3B/7B,KAAKorK,KAAKzsI,KAAK,wBAAyB5C,EAC1C,EACAy4H,WAAY,SAAU35J,EAAKN,GACzB,GAAY,UAARM,EAAiB,CACnB,IAAIgtK,EAAO7nK,KAAK+hC,OAAOvG,KAAK,gBAC5Bx7B,KAAKq0J,aAAawT,EAAM,KAAM7nK,KAAK41B,QAAQmxI,MAAMhlI,QAAQszH,UAAUwS,EAAM,KAAMttK,EAAMwnC,OACvF,CACA/hC,KAAKw8D,OAAO3hE,EAAKN,GACL,aAARM,GACFmF,KAAKg4L,SAASj9I,SAAS/6C,KAAKguK,aAElB,UAARnzK,GACFmF,KAAK63L,eAET,EACA5jC,mBAAoB,SAAU15J,GAC5ByF,KAAKw8D,OAAOjiE,GACZyF,KAAKi4L,aAAannJ,OAAO,WAAYv2C,GACrCyF,KAAK+hC,OAAOpD,KAAK,gBAAiBpkC,GAClCyF,KAAK60J,aAAa70J,KAAK+hC,OAAQ,KAAM,oBAAqBxnC,GAC1DyF,KAAKm3D,QAAQ52D,KAAK,WAAYhG,GAC1BA,GACFyF,KAAK+hC,OAAOpD,KAAK,YAAa,GAC9B3+B,KAAK+sE,SAEL/sE,KAAK+hC,OAAOpD,KAAK,WAAY,EAEjC,EACAqvI,UAAW,WACT,IAAI72G,EAAUn3D,KAAK41B,QAAQmlB,SAU3B,OATIoc,IACFA,EAAUA,EAAQxiC,QAAUwiC,EAAQ9jC,SAAWohC,EAAE0C,GAAWn3D,KAAKhI,SAASwjC,KAAK27B,GAAS/hC,GAAG,IAExF+hC,GAAYA,EAAQ,KACvBA,EAAUn3D,KAAKm3D,QAAQpwB,QAAQ,sBAE5BowB,EAAQ3gE,SACX2gE,EAAUn3D,KAAKhI,SAAS,GAAGg4C,MAEtBmnB,CACT,EACAqhI,YAAa,WACXx4L,KAAK+hC,OAAOpD,KAAK,gBAAiB3+B,KAAKm5E,QAKvCn5E,KAAKq0J,aAAar0J,KAAK+hC,OAAQ,yBAA2B/hC,KAAKm5E,OAAS,SAAW,SAASk8E,UAAUr1J,KAAK+hC,OAAQ,yBAA2B/hC,KAAKm5E,OAAS,OAAS,WAAW07E,aAAa70J,KAAKg4L,SAAU,qBAAsB,KAAMh4L,KAAKm5E,QAC7On5E,KAAKorK,KAAKzsI,KAAK,eAAgB3+B,KAAKm5E,OACtC,EACA0+G,cAAe,WACb,IAAI97I,EAAQ/7C,KAAK41B,QAAQmmB,OAGX,IAAVA,GAMU,OAAVA,IACFA,EAAQ/7C,KAAKm3D,QAAQjnB,OAAO2mH,aAC5B72J,KAAKm3D,QAAQhnB,QAEfnwC,KAAK+hC,OAAO80H,WAAW96G,IATrB/7C,KAAK+hC,OAAOoN,IAAI,QAAS,GAU7B,EACA+/H,YAAa,WACXlvK,KAAKorK,KAAKvU,WAAW3yJ,KAAKI,IAAItE,KAAK+hC,OAAO80H,aAI1C72J,KAAKorK,KAAKrvH,MAAM,IAAI86G,aAAe,GACrC,EACA9C,kBAAmB,WACjB,IAAIn+H,EAAU51B,KAAKw8D,SAEnB,OADA5mC,EAAQyF,SAAWr7B,KAAKm3D,QAAQ52D,KAAK,YAC9Bq1B,CACT,EACA0iK,cAAe,SAAU1iK,GACvB,IAAI9O,EAAO9mB,KACT/J,EAAO,GACT2/B,EAAQV,MAAK,SAAUlH,EAAOvI,GACxBA,EAAKg+B,QAGTxtD,EAAKa,KAAKgwB,EAAK4wK,aAAajjI,EAAEhvC,GAAOuI,GACvC,IACAhuB,KAAKm+E,MAAQloF,CACf,EACAyhM,aAAc,SAAU5mJ,EAAQ9iB,GAC9B,IAAI4jB,EAAWd,EAAO1Q,OAAO,YAC7B,MAAO,CACL+2B,QAASrmB,EACT9iB,MAAOA,EACPzzB,MAAOu2C,EAAOtwC,MACdgmE,MAAO11B,EAAOhd,OACd8d,SAAUA,EAASjT,KAAK,UAAY,GACpCtD,SAAUuW,EAASrxC,KAAK,aAAeuwC,EAAOvwC,KAAK,YAEvD,EACA6zJ,SAAU,WACRp0J,KAAK6lK,0BACL7lK,KAAKg4L,SAAS9uJ,SACdlpC,KAAK+hC,OAAOmH,SACZlpC,KAAKm3D,QAAQjnB,OACblwC,KAAKm3D,QAAQyvG,iBACb5mK,KAAKsmK,OAAO3nI,KAAK,MAAO3+B,KAAKq4F,IAAIlhC,QACnC,KAqBkB1C,EAAE29F,OAAO,YAAa39F,EAAEu9F,GAAG+xB,MAAO,CACpD/xJ,QAAS,SACT+gI,kBAAmB,QACnBn9H,QAAS,CACPowB,SAAS,EACTwe,QAAS,CACP,YAAa,gBACb,mBAAoB,gBAGpB,kBAAmB,kCAErBo4F,SAAU,EACVt4J,IAAK,IACLiL,IAAK,EACLwpL,YAAa,aACb3oE,OAAO,EACPxtE,KAAM,EACNroD,MAAO,EACP0d,OAAQ,KAER00J,OAAQ,KACRt6F,MAAO,KACPlyC,MAAO,KACPmO,KAAM,MAIR0qJ,SAAU,EACVhlC,QAAS,WACPh0J,KAAKi5L,aAAc,EACnBj5L,KAAKk5L,eAAgB,EACrBl5L,KAAKm5L,aAAc,EACnBn5L,KAAKo5L,aAAe,KACpBp5L,KAAKq5L,qBACLr5L,KAAKsiL,aACLtiL,KAAKs5L,mBACLt5L,KAAKq1J,UAAU,uBAAyBr1J,KAAK+4L,YAAa,+BAC1D/4L,KAAK0nK,WACL1nK,KAAKm5L,aAAc,CACrB,EACAzxB,SAAU,WACR1nK,KAAKu5L,eACLv5L,KAAKw5L,iBACLx5L,KAAK+nK,eACL/nK,KAAKk2L,eACP,EACAsD,eAAgB,WACd,IAAIljM,EACFmjM,EACA7jK,EAAU51B,KAAK41B,QACf8jK,EAAkB15L,KAAKm3D,QAAQ37B,KAAK,qBACpC0Y,EAAS,6BACT+1I,EAAU,GAMZ,IALAwP,EAAc7jK,EAAQ3d,QAAU2d,EAAQ3d,OAAOzhB,QAAU,EACrDkjM,EAAgBljM,OAASijM,IAC3BC,EAAgBl+L,MAAMi+L,GAAavwJ,SACnCwwJ,EAAkBA,EAAgBl+L,MAAM,EAAGi+L,IAExCnjM,EAAIojM,EAAgBljM,OAAQF,EAAImjM,EAAanjM,IAChD2zL,EAAQnzL,KAAKo9C,GAEfl0C,KAAKiqL,QAAUyP,EAAgBpnL,IAAImiD,EAAEw1H,EAAQloL,KAAK,KAAKg5C,SAAS/6C,KAAKm3D,UACrEn3D,KAAKq1J,UAAUr1J,KAAKiqL,QAAS,mBAAoB,oBACjDjqL,KAAKk0C,OAASl0C,KAAKiqL,QAAQ70J,GAAG,GAC9Bp1B,KAAKiqL,QAAQ/0J,MAAK,SAAU5+B,GAC1Bm+D,EAAEz0D,MAAM/J,KAAK,yBAA0BK,GAAGqoC,KAAK,WAAY,EAC7D,GACF,EACA46J,aAAc,WACZ,IAAI3jK,EAAU51B,KAAK41B,QACfA,EAAQw6F,QACY,IAAlBx6F,EAAQw6F,QACLx6F,EAAQ3d,OAEF2d,EAAQ3d,OAAOzhB,QAAoC,IAA1Bo/B,EAAQ3d,OAAOzhB,OACjDo/B,EAAQ3d,OAAS,CAAC2d,EAAQ3d,OAAO,GAAI2d,EAAQ3d,OAAO,IAC3C9b,MAAMF,QAAQ25B,EAAQ3d,UAC/B2d,EAAQ3d,OAAS2d,EAAQ3d,OAAOzc,MAAM,IAJtCo6B,EAAQ3d,OAAS,CAACjY,KAAK25L,YAAa35L,KAAK25L,cAOxC35L,KAAKowH,OAAUpwH,KAAKowH,MAAM55H,QAI7BwJ,KAAKq0J,aAAar0J,KAAKowH,MAAO,2CAG9BpwH,KAAKowH,MAAMjhF,IAAI,CACb,KAAQ,GACR,OAAU,OARZnvC,KAAKowH,MAAQ37D,EAAE,SAAS1Z,SAAS/6C,KAAKm3D,SACtCn3D,KAAKq1J,UAAUr1J,KAAKowH,MAAO,oBAUP,QAAlBx6F,EAAQw6F,OAAqC,QAAlBx6F,EAAQw6F,OACrCpwH,KAAKq1J,UAAUr1J,KAAKowH,MAAO,mBAAqBx6F,EAAQw6F,SAGtDpwH,KAAKowH,OACPpwH,KAAKowH,MAAMlnF,SAEblpC,KAAKowH,MAAQ,KAEjB,EACA23C,aAAc,WACZ/nK,KAAKo1J,KAAKp1J,KAAKiqL,SACfjqL,KAAK8zJ,IAAI9zJ,KAAKiqL,QAASjqL,KAAK45L,eAC5B55L,KAAK01J,WAAW11J,KAAKiqL,SACrBjqL,KAAK21J,WAAW31J,KAAKiqL,QACvB,EACA71B,SAAU,WACRp0J,KAAKiqL,QAAQ/gJ,SACTlpC,KAAKowH,OACPpwH,KAAKowH,MAAMlnF,SAEblpC,KAAKwiL,eACP,EACAS,cAAe,SAAUtqL,GACvB,IAAIwkD,EACF08I,EACAj9B,EACAk9B,EACA9rK,EAEAxM,EACAu4K,EACAjzK,EAAO9mB,KACPhG,EAAIgG,KAAK41B,QACX,OAAI57B,EAAEqhC,WAGNr7B,KAAKg6L,YAAc,CACjBj+I,MAAO/7C,KAAKm3D,QAAQ0/F,aACpB34G,OAAQl+C,KAAKm3D,QAAQ2/F,eAEvB92J,KAAKwuL,cAAgBxuL,KAAKm3D,QAAQ31C,SAClC27B,EAAW,CACT1vC,EAAG9U,EAAMo+C,MACTrvC,EAAG/O,EAAMq+C,OAEX6iJ,EAAY75L,KAAKi6L,oBAAoB98I,GACrCy/G,EAAW58J,KAAKk6L,YAAcl6L,KAAK25L,YAAc,EACjD35L,KAAKiqL,QAAQ/0J,MAAK,SAAU5+B,GAC1B,IAAI6jM,EAAej2L,KAAKC,IAAI01L,EAAY/yK,EAAK7O,OAAO3hB,KAChDsmK,EAAWu9B,GAAgBv9B,IAAau9B,IAAiB7jM,IAAMwwB,EAAKszK,mBAAqBtzK,EAAK7O,OAAO3hB,KAAO0D,EAAEuV,QAChHqtJ,EAAWu9B,EACXL,EAAgBrlI,EAAEz0D,MAClBguB,EAAQ13B,EAEZ,KAEgB,IADN0J,KAAKq6L,OAAO1hM,EAAOq1B,KAI7BhuB,KAAKk5L,eAAgB,EACrBl5L,KAAKo5L,aAAeprK,EACpBhuB,KAAKq1J,UAAUykC,EAAe,KAAM,mBACpCA,EAActmJ,QAAQ,SACtBhyB,EAASs4K,EAAct4K,SACvBu4K,GAAmBtlI,EAAE97D,EAAMQ,QAAQ+tC,UAAUD,UAAUpB,GAAG,qBAC1D7lC,KAAKs6L,aAAeP,EAAkB,CACpC73I,KAAM,EACNxkB,IAAK,GACH,CACFwkB,KAAMvpD,EAAMo+C,MAAQv1B,EAAO0gC,KAAO43I,EAAc/9I,QAAU,EAC1Dre,IAAK/kC,EAAMq+C,MAAQx1B,EAAOkc,IAAMo8J,EAAc57I,SAAW,GAAK7tC,SAASypL,EAAc3qJ,IAAI,kBAAmB,KAAO,IAAM9+B,SAASypL,EAAc3qJ,IAAI,qBAAsB,KAAO,IAAM9+B,SAASypL,EAAc3qJ,IAAI,aAAc,KAAO,IAEpOnvC,KAAKiqL,QAAQxhI,SAAS,mBACzBzoD,KAAK8zE,OAAOn7E,EAAOq1B,EAAO6rK,GAE5B75L,KAAKm5L,aAAc,GACZ,GACT,EACA7V,YAAa,WACX,OAAO,CACT,EACAG,WAAY,SAAU9qL,GACpB,IAAIwkD,EAAW,CACX1vC,EAAG9U,EAAMo+C,MACTrvC,EAAG/O,EAAMq+C,OAEX6iJ,EAAY75L,KAAKi6L,oBAAoB98I,GAEvC,OADAn9C,KAAK8zE,OAAOn7E,EAAOqH,KAAKo5L,aAAcS,IAC/B,CACT,EACAnW,WAAY,SAAU/qL,GAQpB,OAPAqH,KAAKq0J,aAAar0J,KAAKiqL,QAAS,KAAM,mBACtCjqL,KAAKk5L,eAAgB,EACrBl5L,KAAKu6L,MAAM5hM,EAAOqH,KAAKo5L,cACvBp5L,KAAK8tK,QAAQn1K,EAAOqH,KAAKo5L,cACzBp5L,KAAKo5L,aAAe,KACpBp5L,KAAKs6L,aAAe,KACpBt6L,KAAKm5L,aAAc,GACZ,CACT,EACAE,mBAAoB,WAClBr5L,KAAK+4L,YAA2C,aAA7B/4L,KAAK41B,QAAQmjK,YAA6B,WAAa,YAC5E,EACAkB,oBAAqB,SAAU98I,GAC7B,IAAIq9I,EAAYC,EAAYC,EAAcC,EAAYC,EAoBtD,MAnByB,eAArB56L,KAAK+4L,aACPyB,EAAax6L,KAAKg6L,YAAYj+I,MAC9B0+I,EAAat9I,EAAS1vC,EAAIzN,KAAKwuL,cAActsI,MAAQliD,KAAKs6L,aAAet6L,KAAKs6L,aAAap4I,KAAO,KAElGs4I,EAAax6L,KAAKg6L,YAAY97I,OAC9Bu8I,EAAat9I,EAASz1C,EAAI1H,KAAKwuL,cAAc9wJ,KAAO19B,KAAKs6L,aAAet6L,KAAKs6L,aAAa58J,IAAM,KAElGg9J,EAAeD,EAAaD,GACT,IACjBE,EAAe,GAEbA,EAAe,IACjBA,EAAe,GAEQ,aAArB16L,KAAK+4L,cACP2B,EAAe,EAAIA,GAErBC,EAAa36L,KAAKk6L,YAAcl6L,KAAK25L,YACrCiB,EAAa56L,KAAK25L,YAAce,EAAeC,EACxC36L,KAAK66L,gBAAgBD,EAC9B,EACA7T,QAAS,SAAU/4J,EAAOzzB,EAAO0d,GAC/B,IAAI6iL,EAAS,CACX5mJ,OAAQl0C,KAAKiqL,QAAQj8J,GACrB+sK,YAAa/sK,EACbzzB,WAAiBhB,IAAVgB,EAAsBA,EAAQyF,KAAKzF,SAM5C,OAJIyF,KAAKg7L,uBACPF,EAAOvgM,WAAkBhB,IAAVgB,EAAsBA,EAAQyF,KAAKiY,OAAO+V,GACzD8sK,EAAO7iL,OAASA,GAAUjY,KAAKiY,UAE1B6iL,CACT,EACAE,mBAAoB,WAClB,OAAOh7L,KAAK41B,QAAQ3d,QAAUjY,KAAK41B,QAAQ3d,OAAOzhB,MACpD,EACA6jM,OAAQ,SAAU1hM,EAAOq1B,GACvB,OAAOhuB,KAAKk0J,SAAS,QAASv7J,EAAOqH,KAAK+mL,QAAQ/4J,GACpD,EACA8lD,OAAQ,SAAUn7E,EAAOq1B,EAAOitK,GAC9B,IACEC,EACAxrJ,EAAe1vC,KAAKzF,QACpB4gM,EAAYn7L,KAAKiY,SACfjY,KAAKg7L,uBACPE,EAAWl7L,KAAKiY,OAAO+V,EAAQ,EAAI,GACnC0hB,EAAe1vC,KAAKiY,OAAO+V,GACQ,IAA/BhuB,KAAK41B,QAAQ3d,OAAOzhB,SAAuC,IAAvBwJ,KAAK41B,QAAQw6F,QACnD6qE,EAAmB,IAAVjtK,EAAc9pB,KAAKqL,IAAI2rL,EAAUD,GAAU/2L,KAAKI,IAAI42L,EAAUD,IAEzEE,EAAUntK,GAASitK,GAEjBA,IAAWvrJ,IAMC,IAHN1vC,KAAKk0J,SAAS,QAASv7J,EAAOqH,KAAK+mL,QAAQ/4J,EAAOitK,EAAQE,MAMhEn7L,KAAKg7L,qBACPh7L,KAAKiY,OAAO+V,EAAOitK,GAEnBj7L,KAAKzF,MAAM0gM,GAEf,EACAV,MAAO,SAAU5hM,EAAOq1B,GACtBhuB,KAAKk0J,SAAS,OAAQv7J,EAAOqH,KAAK+mL,QAAQ/4J,GAC5C,EACA8/I,QAAS,SAAUn1K,EAAOq1B,GACnBhuB,KAAKi5L,aAAgBj5L,KAAKk5L,gBAE7Bl5L,KAAKo6L,kBAAoBpsK,EACzBhuB,KAAKk0J,SAAS,SAAUv7J,EAAOqH,KAAK+mL,QAAQ/4J,IAEhD,EACAzzB,MAAO,SAAU47L,GACf,OAAIr6L,UAAUtF,QACZwJ,KAAK41B,QAAQr7B,MAAQyF,KAAK66L,gBAAgB1E,GAC1Cn2L,KAAKk2L,qBACLl2L,KAAK8tK,QAAQ,KAAM,IAGd9tK,KAAK0gG,QACd,EACAzoF,OAAQ,SAAU+V,EAAOmoK,GACvB,IAAIiF,EAAMD,EAAW7kM,EACrB,GAAIwF,UAAUtF,OAAS,EAIrB,OAHAwJ,KAAK41B,QAAQ3d,OAAO+V,GAAShuB,KAAK66L,gBAAgB1E,GAClDn2L,KAAKk2L,qBACLl2L,KAAK8tK,QAAQ,KAAM9/I,GAGrB,IAAIlyB,UAAUtF,OAiBZ,OAAOwJ,KAAKq7L,UAhBZ,IAAIl/L,MAAMF,QAAQH,UAAU,IAS1B,OAAIkE,KAAKg7L,qBACAh7L,KAAKq7L,QAAQrtK,GAEbhuB,KAAKzF,QATd,IAFA6gM,EAAOp7L,KAAK41B,QAAQ3d,OACpBkjL,EAAYr/L,UAAU,GACjBxF,EAAI,EAAGA,EAAI8kM,EAAK5kM,OAAQF,GAAK,EAChC8kM,EAAK9kM,GAAK0J,KAAK66L,gBAAgBM,EAAU7kM,IACzC0J,KAAK8tK,QAAQ,KAAMx3K,GAErB0J,KAAKk2L,eAWX,EACA1hC,WAAY,SAAU35J,EAAKN,GACzB,IAAIjE,EACFglM,EAAa,EAcf,OAbY,UAARzgM,IAA0C,IAAvBmF,KAAK41B,QAAQw6F,QACpB,QAAV71H,GACFyF,KAAK41B,QAAQr7B,MAAQyF,KAAKq7L,QAAQ,GAClCr7L,KAAK41B,QAAQ3d,OAAS,MACH,QAAV1d,IACTyF,KAAK41B,QAAQr7B,MAAQyF,KAAKq7L,QAAQr7L,KAAK41B,QAAQ3d,OAAOzhB,OAAS,GAC/DwJ,KAAK41B,QAAQ3d,OAAS,OAGtB9b,MAAMF,QAAQ+D,KAAK41B,QAAQ3d,UAC7BqjL,EAAat7L,KAAK41B,QAAQ3d,OAAOzhB,QAEnCwJ,KAAKw8D,OAAO3hE,EAAKN,GACTM,GACN,IAAK,cACHmF,KAAKq5L,qBACLr5L,KAAKq0J,aAAa,2CAA2CgB,UAAU,aAAer1J,KAAK+4L,aAC3F/4L,KAAKk2L,gBACDl2L,KAAK41B,QAAQw6F,OACfpwH,KAAKu7L,cAAchhM,GAIrByF,KAAKiqL,QAAQ96I,IAAc,eAAV50C,EAAyB,SAAW,OAAQ,IAC7D,MACF,IAAK,QACHyF,KAAKm5L,aAAc,EACnBn5L,KAAKk2L,gBACLl2L,KAAK8tK,QAAQ,KAAM,GACnB9tK,KAAKm5L,aAAc,EACnB,MACF,IAAK,SAKH,IAJAn5L,KAAKm5L,aAAc,EACnBn5L,KAAKk2L,gBAGA5/L,EAAIglM,EAAa,EAAGhlM,GAAK,EAAGA,IAC/B0J,KAAK8tK,QAAQ,KAAMx3K,GAErB0J,KAAKm5L,aAAc,EACnB,MACF,IAAK,OACL,IAAK,MACL,IAAK,MACHn5L,KAAKm5L,aAAc,EACnBn5L,KAAKs5L,mBACLt5L,KAAKk2L,gBACLl2L,KAAKm5L,aAAc,EACnB,MACF,IAAK,QACHn5L,KAAKm5L,aAAc,EACnBn5L,KAAK0nK,WACL1nK,KAAKm5L,aAAc,EAGzB,EACAllC,mBAAoB,SAAU15J,GAC5ByF,KAAKw8D,OAAOjiE,GACZyF,KAAK60J,aAAa,KAAM,sBAAuBt6J,EACjD,EAGAmmG,OAAQ,WACN,IAAIlgG,EAAMR,KAAK41B,QAAQr7B,MAEvB,OADAiG,EAAMR,KAAK66L,gBAAgBr6L,EAE7B,EAIA66L,QAAS,SAAUrtK,GACjB,IAAIxtB,EAAK46L,EAAM9kM,EACf,GAAIwF,UAAUtF,OAGZ,OAFAgK,EAAMR,KAAK41B,QAAQ3d,OAAO+V,GAC1BxtB,EAAMR,KAAK66L,gBAAgBr6L,GAEtB,GAAIR,KAAKg7L,qBAAsB,CAIpC,IADAI,EAAOp7L,KAAK41B,QAAQ3d,OAAOzc,QACtBlF,EAAI,EAAGA,EAAI8kM,EAAK5kM,OAAQF,GAAK,EAChC8kM,EAAK9kM,GAAK0J,KAAK66L,gBAAgBO,EAAK9kM,IAEtC,OAAO8kM,CACT,CACE,MAAO,EAEX,EAEAP,gBAAiB,SAAUr6L,GACzB,GAAIA,GAAOR,KAAK25L,YACd,OAAO35L,KAAK25L,YAEd,GAAIn5L,GAAOR,KAAKk6L,YACd,OAAOl6L,KAAKk6L,YAEd,IAAIt3I,EAAO5iD,KAAK41B,QAAQgtB,KAAO,EAAI5iD,KAAK41B,QAAQgtB,KAAO,EACrD44I,GAAch7L,EAAMR,KAAK25L,aAAe/2I,EACxC64I,EAAaj7L,EAAMg7L,EAOrB,OAN2B,EAAvBt3L,KAAKC,IAAIq3L,IAAmB54I,IAC9B64I,GAAcD,EAAa,EAAI54I,GAAQA,GAKlC9iC,WAAW27K,EAAW5pK,QAAQ,GACvC,EACAynK,iBAAkB,WAChB,IAAIh1L,EAAMtE,KAAK41B,QAAQtxB,IACrBiL,EAAMvP,KAAK25L,YACX/2I,EAAO5iD,KAAK41B,QAAQgtB,MAEtBt+C,EADaJ,KAAK+c,OAAO3c,EAAMiL,GAAOqzC,GAAQA,EAC7BrzC,GACPvP,KAAK41B,QAAQtxB,MAErBA,GAAOs+C,GAET5iD,KAAKsE,IAAMwb,WAAWxb,EAAIutB,QAAQ7xB,KAAK07L,cACzC,EACAA,WAAY,WACV,IAAIC,EAAY37L,KAAK47L,aAAa57L,KAAK41B,QAAQgtB,MAI/C,OAHyB,OAArB5iD,KAAK41B,QAAQrmB,MACfosL,EAAYz3L,KAAKI,IAAIq3L,EAAW37L,KAAK47L,aAAa57L,KAAK41B,QAAQrmB,OAE1DosL,CACT,EACAC,aAAc,SAAU/mK,GACtB,IAAIw1F,EAAMx1F,EAAIz4B,WACZy/L,EAAUxxE,EAAIv9G,QAAQ,KACxB,OAAoB,IAAb+uL,EAAiB,EAAIxxE,EAAI7zH,OAASqlM,EAAU,CACrD,EACAlC,UAAW,WACT,OAAO35L,KAAK41B,QAAQrmB,GACtB,EACA2qL,UAAW,WACT,OAAOl6L,KAAKsE,GACd,EACAi3L,cAAe,SAAUxC,GACH,aAAhBA,GACF/4L,KAAKowH,MAAMjhF,IAAI,CACb,MAAS,GACT,KAAQ,KAGQ,eAAhB4pJ,GACF/4L,KAAKowH,MAAMjhF,IAAI,CACb,OAAU,GACV,OAAU,IAGhB,EACA+mJ,cAAe,WACb,IAAI4F,EACFC,EACAxhM,EACAyhM,EACAC,EACAC,EAASl8L,KAAK41B,QAAQw6F,MACtBp2H,EAAIgG,KAAK41B,QACT9O,EAAO9mB,KACPgmD,GAAWhmD,KAAKm5L,aAAcn/L,EAAEgsD,QAChCm2I,EAAO,CAAC,EACNn8L,KAAKg7L,qBACPh7L,KAAKiqL,QAAQ/0J,MAAK,SAAU5+B,GAC1BylM,GAAcj1K,EAAK7O,OAAO3hB,GAAKwwB,EAAK6yK,cAAgB7yK,EAAKozK,YAAcpzK,EAAK6yK,aAAe,IAC3FwC,EAA0B,eAArBr1K,EAAKiyK,YAA+B,OAAS,UAAYgD,EAAa,IAC3EtnI,EAAEz0D,MAAMsuC,KAAK,EAAG,GAAG0X,EAAU,UAAY,OAAOm2I,EAAMniM,EAAEgsD,UAC7B,IAAvBl/B,EAAK8O,QAAQw6F,QACU,eAArBtpG,EAAKiyK,aACG,IAANziM,GACFwwB,EAAKspG,MAAM9hF,KAAK,EAAG,GAAG0X,EAAU,UAAY,OAAO,CACjD9D,KAAM65I,EAAa,KAClB/hM,EAAEgsD,SAEG,IAAN1vD,GACFwwB,EAAKspG,MAAMpqE,EAAU,UAAY,OAAO,CACtCjK,MAAOggJ,EAAaD,EAAiB,KACpC,CACDjzJ,OAAO,EACP1oB,SAAUnmB,EAAEgsD,YAIN,IAAN1vD,GACFwwB,EAAKspG,MAAM9hF,KAAK,EAAG,GAAG0X,EAAU,UAAY,OAAO,CACjD8yG,OAAQijC,EAAa,KACpB/hM,EAAEgsD,SAEG,IAAN1vD,GACFwwB,EAAKspG,MAAMpqE,EAAU,UAAY,OAAO,CACtC9H,OAAQ69I,EAAaD,EAAiB,KACrC,CACDjzJ,OAAO,EACP1oB,SAAUnmB,EAAEgsD,YAKpB81I,EAAiBC,CACnB,KAEAxhM,EAAQyF,KAAKzF,QACbyhM,EAAWh8L,KAAK25L,YAChBsC,EAAWj8L,KAAKk6L,YAChB6B,EAAaE,IAAaD,GAAYzhM,EAAQyhM,IAAaC,EAAWD,GAAY,IAAM,EACxFG,EAA0B,eAArBn8L,KAAK+4L,YAA+B,OAAS,UAAYgD,EAAa,IAC3E/7L,KAAKk0C,OAAO5F,KAAK,EAAG,GAAG0X,EAAU,UAAY,OAAOm2I,EAAMniM,EAAEgsD,SAC7C,QAAXk2I,GAAyC,eAArBl8L,KAAK+4L,aAC3B/4L,KAAKowH,MAAM9hF,KAAK,EAAG,GAAG0X,EAAU,UAAY,OAAO,CACjDjK,MAAOggJ,EAAa,KACnB/hM,EAAEgsD,SAEQ,QAAXk2I,GAAyC,eAArBl8L,KAAK+4L,aAC3B/4L,KAAKowH,MAAM9hF,KAAK,EAAG,GAAG0X,EAAU,UAAY,OAAO,CACjDjK,MAAO,IAAMggJ,EAAa,KACzB/hM,EAAEgsD,SAEQ,QAAXk2I,GAAyC,aAArBl8L,KAAK+4L,aAC3B/4L,KAAKowH,MAAM9hF,KAAK,EAAG,GAAG0X,EAAU,UAAY,OAAO,CACjD9H,OAAQ69I,EAAa,KACpB/hM,EAAEgsD,SAEQ,QAAXk2I,GAAyC,aAArBl8L,KAAK+4L,aAC3B/4L,KAAKowH,MAAM9hF,KAAK,EAAG,GAAG0X,EAAU,UAAY,OAAO,CACjD9H,OAAQ,IAAM69I,EAAa,KAC1B/hM,EAAEgsD,SAGX,EACA4zI,cAAe,CACbjxB,QAAS,SAAUhwK,GACjB,IACEyjM,EACAnB,EACAr4I,EACA50B,EAAQymC,EAAE97D,EAAMQ,QAAQlD,KAAK,0BAC/B,OAAQ0C,EAAMy+C,SACZ,KAAKqd,EAAEu9F,GAAG56G,QAAQ6uH,KAClB,KAAKxxG,EAAEu9F,GAAG56G,QAAQ4uH,IAClB,KAAKvxG,EAAEu9F,GAAG56G,QAAQ+uH,QAClB,KAAK1xG,EAAEu9F,GAAG56G,QAAQ8uH,UAClB,KAAKzxG,EAAEu9F,GAAG56G,QAAQivH,GAClB,KAAK5xG,EAAEu9F,GAAG56G,QAAQswC,MAClB,KAAKjzB,EAAEu9F,GAAG56G,QAAQ2uH,KAClB,KAAKtxG,EAAEu9F,GAAG56G,QAAQwwC,KAEhB,GADAjvF,EAAM46C,kBACDvzC,KAAKi5L,cACRj5L,KAAKi5L,aAAc,EACnBj5L,KAAKq1J,UAAU5gG,EAAE97D,EAAMQ,QAAS,KAAM,oBAEtB,IADN6G,KAAKq6L,OAAO1hM,EAAOq1B,IAE3B,OAWR,OANA40B,EAAO5iD,KAAK41B,QAAQgtB,KAElBw5I,EAASnB,EADPj7L,KAAKg7L,qBACWh7L,KAAKiY,OAAO+V,GAEZhuB,KAAKzF,QAEjB5B,EAAMy+C,SACZ,KAAKqd,EAAEu9F,GAAG56G,QAAQ6uH,KAChBg1B,EAASj7L,KAAK25L,YACd,MACF,KAAKllI,EAAEu9F,GAAG56G,QAAQ4uH,IAChBi1B,EAASj7L,KAAKk6L,YACd,MACF,KAAKzlI,EAAEu9F,GAAG56G,QAAQ+uH,QAChB80B,EAASj7L,KAAK66L,gBAAgBuB,GAAUp8L,KAAKk6L,YAAcl6L,KAAK25L,aAAe35L,KAAKg5L,UACpF,MACF,KAAKvkI,EAAEu9F,GAAG56G,QAAQ8uH,UAChB+0B,EAASj7L,KAAK66L,gBAAgBuB,GAAUp8L,KAAKk6L,YAAcl6L,KAAK25L,aAAe35L,KAAKg5L,UACpF,MACF,KAAKvkI,EAAEu9F,GAAG56G,QAAQivH,GAClB,KAAK5xG,EAAEu9F,GAAG56G,QAAQswC,MAChB,GAAI00G,IAAWp8L,KAAKk6L,YAClB,OAEFe,EAASj7L,KAAK66L,gBAAgBuB,EAASx5I,GACvC,MACF,KAAK6R,EAAEu9F,GAAG56G,QAAQ2uH,KAClB,KAAKtxG,EAAEu9F,GAAG56G,QAAQwwC,KAChB,GAAIw0G,IAAWp8L,KAAK25L,YAClB,OAEFsB,EAASj7L,KAAK66L,gBAAgBuB,EAASx5I,GAG3C5iD,KAAK8zE,OAAOn7E,EAAOq1B,EAAOitK,EAC5B,EACAoB,MAAO,SAAU1jM,GACf,IAAIq1B,EAAQymC,EAAE97D,EAAMQ,QAAQlD,KAAK,0BAC7B+J,KAAKi5L,cACPj5L,KAAKi5L,aAAc,EACnBj5L,KAAKu6L,MAAM5hM,EAAOq1B,GAClBhuB,KAAK8tK,QAAQn1K,EAAOq1B,GACpBhuB,KAAKq0J,aAAa5/F,EAAE97D,EAAMQ,QAAS,KAAM,mBAE7C,KAoBkBs7D,EAAE29F,OAAO,cAAe39F,EAAEu9F,GAAG+xB,MAAO,CACxD/xJ,QAAS,SACT+gI,kBAAmB,OACnBzsH,OAAO,EACP1Q,QAAS,CACPmlB,SAAU,SACVkpI,MAAM,EACNqY,aAAa,EACbnY,aAAa,EACbtK,OAAQ,OACRuK,UAAU,EACVmY,aAAa,EACbC,sBAAsB,EACtBC,iBAAiB,EACjBpY,MAAM,EACNnwI,QAAQ,EACR6hF,OAAQ,WACR53C,MAAO,MACP99B,SAAS,EACTksD,aAAa,EACbi4E,QAAQ,EACR3Y,QAAQ,EACR6Y,kBAAmB,GACnBC,YAAa,GACbxoJ,MAAO,UACPg4J,UAAW,YACX5yI,OAAQ,IAER0lH,SAAU,KACVy1B,WAAY,KACZ/vB,OAAQ,KACRynB,WAAY,KACZhmK,IAAK,KACLimK,KAAM,KACNjzF,QAAS,KACTl4D,OAAQ,KACR7/B,KAAM,KACN82B,MAAO,KACPmO,KAAM,KACN4uC,OAAQ,MAEVy/G,YAAa,SAAUlvL,EAAGuuE,EAAWrgB,GACnC,OAAOluD,GAAKuuE,GAAavuE,EAAIuuE,EAAYrgB,CAC3C,EACAihI,YAAa,SAAUn3K,GACrB,MAAO,aAAa5f,KAAK4f,EAAK0pB,IAAI,WAAa,oBAAoBtpC,KAAK4f,EAAK0pB,IAAI,WACnF,EACA6kH,QAAS,WACPh0J,KAAKsoL,eAAiB,CAAC,EACvBtoL,KAAKq1J,UAAU,eAGfr1J,KAAK44D,UAGL54D,KAAKwhB,OAASxhB,KAAKm3D,QAAQ31C,SAG3BxhB,KAAKsiL,aACLtiL,KAAKilL,sBAGLjlL,KAAKsmC,OAAQ,CACf,EACAkuH,WAAY,SAAU35J,EAAKN,GACzByF,KAAKw8D,OAAO3hE,EAAKN,GACL,WAARM,GACFmF,KAAKilL,qBAET,EACAA,oBAAqB,WACnB,IAAIn+J,EAAO9mB,KACXA,KAAKq0J,aAAar0J,KAAKm3D,QAAQ37B,KAAK,uBAAwB,sBAC5Di5B,EAAEv/B,KAAKl1B,KAAKm+E,OAAO,WACjBr3D,EAAKuuI,UAAUr1J,KAAK8rF,SAASl2D,QAAQse,OAASl0C,KAAKylB,KAAK+V,KAAKx7B,KAAK8rF,SAASl2D,QAAQse,QAAUl0C,KAAKylB,KAAM,qBAC1G,GACF,EACA2uI,SAAU,WACRp0J,KAAKwiL,gBACL,IAAK,IAAIlsL,EAAI0J,KAAKm+E,MAAM3nF,OAAS,EAAGF,GAAK,EAAGA,IAC1C0J,KAAKm+E,MAAM7nF,GAAGmvB,KAAKsoB,WAAW/tC,KAAKgzJ,WAAa,SAElD,OAAOhzJ,IACT,EACAijL,cAAe,SAAUtqL,EAAOkkM,GAC9B,IAAItU,EAAc,KAChBuU,GAAc,EACdh2K,EAAO9mB,KACT,OAAIA,KAAK+8L,aAGL/8L,KAAK41B,QAAQyF,UAAkC,WAAtBr7B,KAAK41B,QAAQ38B,OAK1C+G,KAAKg9L,cAAcrkM,GAGnB87D,EAAE97D,EAAMQ,QAAQ+tC,UAAUhS,MAAK,WAC7B,GAAIu/B,EAAEx+D,KAAK+J,KAAM8mB,EAAKksI,WAAa,WAAalsI,EAE9C,OADAyhK,EAAc9zH,EAAEz0D,OACT,CAEX,IACIy0D,EAAEx+D,KAAK0C,EAAMQ,OAAQ2tB,EAAKksI,WAAa,WAAalsI,IACtDyhK,EAAc9zH,EAAE97D,EAAMQ,WAEnBovL,MAGDvoL,KAAK41B,QAAQse,SAAW2oJ,IAC1BpoI,EAAEz0D,KAAK41B,QAAQse,OAAQq0I,GAAa/sJ,KAAK,KAAKyL,UAAU/R,MAAK,WACvDl1B,OAASrH,EAAMQ,SACjB2jM,GAAc,EAElB,KACKA,MAIP98L,KAAKuoL,YAAcA,EACnBvoL,KAAKi9L,4BACE,KACT,EACA3Z,YAAa,SAAU3qL,EAAOkkM,EAAgBK,GAC5C,IAAI5mM,EACF05C,EACAh2C,EAAIgG,KAAK41B,QAuHX,GAtHA51B,KAAKm9L,iBAAmBn9L,KAIxBA,KAAKukL,mBAGLvkL,KAAK+6C,SAAW0Z,EAAiB,WAAfz6D,EAAE+gD,SAAwB/gD,EAAE+gD,SAAW/6C,KAAKuoL,YAAYnoJ,UAG1EpgC,KAAK+1H,OAAS/1H,KAAK0lL,cAAc/sL,GAGjCqH,KAAK2lL,0BAQL3lL,KAAK6lL,gBAGL7lL,KAAKwhB,OAASxhB,KAAKuoL,YAAY/mK,SAC/BxhB,KAAKwhB,OAAS,CACZkc,IAAK19B,KAAKwhB,OAAOkc,IAAM19B,KAAK0mL,QAAQhpJ,IACpCwkB,KAAMliD,KAAKwhB,OAAO0gC,KAAOliD,KAAK0mL,QAAQxkI,MAExCuS,EAAEn3D,OAAO0C,KAAKwhB,OAAQ,CACpBs0B,MAAO,CAELoM,KAAMvpD,EAAMo+C,MAAQ/2C,KAAKwhB,OAAO0gC,KAChCxkB,IAAK/kC,EAAMq+C,MAAQh3C,KAAKwhB,OAAOkc,KAIjCuB,SAAUj/B,KAAK4mL,uBAMjB5mL,KAAK+1H,OAAO5mF,IAAI,WAAY,YAC5BnvC,KAAKghK,YAAchhK,KAAK+1H,OAAO5mF,IAAI,YAG/Bn1C,EAAEoqL,UACJpkL,KAAKqmL,wBAAwBrsL,EAAEoqL,UAIjCpkL,KAAKo9L,YAAc,CACjBz2J,KAAM3mC,KAAKuoL,YAAY5hJ,OAAO,GAC9BvG,OAAQpgC,KAAKuoL,YAAYnoJ,SAAS,IAKhCpgC,KAAK+1H,OAAO,KAAO/1H,KAAKuoL,YAAY,IACtCvoL,KAAKuoL,YAAYp4I,OAInBnwC,KAAKq9L,qBAGLr9L,KAAKumK,aAAevmK,KAAKusG,YAAYg6D,eACrC9xG,EAAEn3D,OAAO0C,KAAKwhB,OAAQ,CACpB4e,OAAQpgC,KAAK2mL,qBAIX3sL,EAAEmqL,aACJnkL,KAAKsmL,kBAEHtsL,EAAE6/K,QAAuB,SAAb7/K,EAAE6/K,SAEhB7pI,EAAOhwC,KAAKhI,SAASwjC,KAAK,QAG1Bx7B,KAAKs9L,aAAettJ,EAAKb,IAAI,UAC7Ba,EAAKb,IAAI,SAAUn1C,EAAE6/K,QACrB75K,KAAKu9L,iBAAmB9oI,EAAE,qBAAuBz6D,EAAE6/K,OAAS,0BAA0B9+H,SAAS/K,IAM7Fh2C,EAAEunD,SAEAvhD,KAAK+1H,OAAO5mF,IAAI,YAClBnvC,KAAKw9L,cAAgBx9L,KAAK+1H,OAAO5mF,IAAI,WAEvCnvC,KAAK+1H,OAAO5mF,IAAI,SAAUn1C,EAAEunD,SAE1BvnD,EAAEqmD,UAEArgD,KAAK+1H,OAAO5mF,IAAI,aAClBnvC,KAAKy9L,eAAiBz9L,KAAK+1H,OAAO5mF,IAAI,YAExCnvC,KAAK+1H,OAAO5mF,IAAI,UAAWn1C,EAAEqmD,UAI3BrgD,KAAKumK,aAAa,KAAOvmK,KAAKhI,SAAS,IAAuC,SAAjCgI,KAAKumK,aAAa,GAAGlvG,UACpEr3D,KAAK6oL,eAAiB7oL,KAAKumK,aAAa/kJ,UAI1CxhB,KAAKk0J,SAAS,QAASv7J,EAAOqH,KAAK+mL,WAG9B/mL,KAAK09L,4BACR19L,KAAK2lL,2BAIFuX,EACH,IAAK5mM,EAAI0J,KAAK29L,WAAWnnM,OAAS,EAAGF,GAAK,EAAGA,IAC3C0J,KAAK29L,WAAWrnM,GAAG49J,SAAS,WAAYv7J,EAAOqH,KAAK+mL,QAAQ/mL,OA4BhE,OAvBIy0D,EAAEu9F,GAAG4zB,YACPnxH,EAAEu9F,GAAG4zB,UAAUp2H,QAAUxvD,MAEvBy0D,EAAEu9F,GAAG4zB,YAAc5rL,EAAEusL,eACvB9xH,EAAEu9F,GAAG4zB,UAAUY,eAAexmL,KAAMrH,GAEtCqH,KAAK49L,UAAW,EAChB59L,KAAKq1J,UAAUr1J,KAAK+1H,OAAQ,sBAGvB/1H,KAAK+1H,OAAO31F,SAASyF,GAAG7lC,KAAK+6C,YAChC/6C,KAAK+1H,OAAOx7E,SAASQ,SAAS/6C,KAAK+6C,UAGnC/6C,KAAKwhB,OAAO4e,OAASpgC,KAAK2mL,oBAI5B3mL,KAAKm9C,SAAWn9C,KAAKimL,iBAAmBjmL,KAAKkmL,kBAAkBvtL,GAC/DqH,KAAKmmL,cAAgBxtL,EAAMo+C,MAC3B/2C,KAAKomL,cAAgBztL,EAAMq+C,MAC3Bh3C,KAAK69L,gBAAkB79L,KAAK+lL,YAAc/lL,KAAK8mL,mBAAmB,YAClE9mL,KAAKyjL,WAAW9qL,IACT,CACT,EACAmlM,QAAS,SAAUnlM,GACjB,IAAIqB,EAAIgG,KAAK41B,QACX+8E,GAAW,EAwBb,OAvBI3yG,KAAKumK,aAAa,KAAOvmK,KAAKhI,SAAS,IAAuC,SAAjCgI,KAAKumK,aAAa,GAAGlvG,SAChEr3D,KAAK6oL,eAAenrJ,IAAM19B,KAAKumK,aAAa,GAAGloH,aAAe1lD,EAAMq+C,MAAQh9C,EAAE0qL,kBAChF1kL,KAAKumK,aAAa,GAAGzjH,UAAY6vD,EAAW3yG,KAAKumK,aAAa,GAAGzjH,UAAY9oD,EAAE2qL,YACtEhsL,EAAMq+C,MAAQh3C,KAAK6oL,eAAenrJ,IAAM1jC,EAAE0qL,oBACnD1kL,KAAKumK,aAAa,GAAGzjH,UAAY6vD,EAAW3yG,KAAKumK,aAAa,GAAGzjH,UAAY9oD,EAAE2qL,aAE7E3kL,KAAK6oL,eAAe3mI,KAAOliD,KAAKumK,aAAa,GAAGlpH,YAAc1kD,EAAMo+C,MAAQ/8C,EAAE0qL,kBAChF1kL,KAAKumK,aAAa,GAAGxjH,WAAa4vD,EAAW3yG,KAAKumK,aAAa,GAAGxjH,WAAa/oD,EAAE2qL,YACxEhsL,EAAMo+C,MAAQ/2C,KAAK6oL,eAAe3mI,KAAOloD,EAAE0qL,oBACpD1kL,KAAKumK,aAAa,GAAGxjH,WAAa4vD,EAAW3yG,KAAKumK,aAAa,GAAGxjH,WAAa/oD,EAAE2qL,eAG/EhsL,EAAMq+C,MAAQh3C,KAAKhI,SAAS8qD,YAAc9oD,EAAE0qL,kBAC9C/xE,EAAW3yG,KAAKhI,SAAS8qD,UAAU9iD,KAAKhI,SAAS8qD,YAAc9oD,EAAE2qL,aACxD3kL,KAAK1E,OAAO4iD,UAAYvlD,EAAMq+C,MAAQh3C,KAAKhI,SAAS8qD,aAAe9oD,EAAE0qL,oBAC9E/xE,EAAW3yG,KAAKhI,SAAS8qD,UAAU9iD,KAAKhI,SAAS8qD,YAAc9oD,EAAE2qL,cAE/DhsL,EAAMo+C,MAAQ/2C,KAAKhI,SAAS+qD,aAAe/oD,EAAE0qL,kBAC/C/xE,EAAW3yG,KAAKhI,SAAS+qD,WAAW/iD,KAAKhI,SAAS+qD,aAAe/oD,EAAE2qL,aAC1D3kL,KAAK1E,OAAOygD,SAAWpjD,EAAMo+C,MAAQ/2C,KAAKhI,SAAS+qD,cAAgB/oD,EAAE0qL,oBAC9E/xE,EAAW3yG,KAAKhI,SAAS+qD,WAAW/iD,KAAKhI,SAAS+qD,aAAe/oD,EAAE2qL,eAGhEhyE,CACT,EACA8wE,WAAY,SAAU9qL,GACpB,IAAIrC,EACFmvB,EACAs4K,EACA73C,EACAlsJ,EAAIgG,KAAK41B,QA8BX,IA3BA51B,KAAKm9C,SAAWn9C,KAAKkmL,kBAAkBvtL,GACvCqH,KAAK+lL,YAAc/lL,KAAK8mL,mBAAmB,YAGtC9mL,KAAK41B,QAAQquJ,MAA8B,MAAtBjkL,KAAK41B,QAAQquJ,OACrCjkL,KAAK+1H,OAAO,GAAG9mF,MAAMiT,KAAOliD,KAAKm9C,SAAS+E,KAAO,MAE9CliD,KAAK41B,QAAQquJ,MAA8B,MAAtBjkL,KAAK41B,QAAQquJ,OACrCjkL,KAAK+1H,OAAO,GAAG9mF,MAAMvR,IAAM19B,KAAKm9C,SAASzf,IAAM,MAI7C1jC,EAAE6xK,SACwB,IAAxB7rK,KAAK89L,QAAQnlM,KAEfqH,KAAKg+L,uBAAsB,GACvBvpI,EAAEu9F,GAAG4zB,YAAc5rL,EAAEusL,eACvB9xH,EAAEu9F,GAAG4zB,UAAUY,eAAexmL,KAAMrH,IAI1CqH,KAAKi+L,cAAgB,CACnBhlC,SAAUj5J,KAAKk+L,4BACfllC,WAAYh5J,KAAKm+L,+BAId7nM,EAAI0J,KAAKm+E,MAAM3nF,OAAS,EAAGF,GAAK,EAAGA,IAKtC,GAFAynM,GADAt4K,EAAOzlB,KAAKm+E,MAAM7nF,IACCmvB,KAAK,IACxBygI,EAAelmJ,KAAKo+L,uBAAuB34K,KAYvCA,EAAKqmE,WAAa9rF,KAAKm9L,kBAOvBY,IAAgB/9L,KAAKuoL,YAAY,IAAMvoL,KAAKusG,YAA6B,IAAjB25C,EAAqB,OAAS,UAAU,KAAO63C,IAAgBtpI,EAAE/8B,SAAS13B,KAAKusG,YAAY,GAAIwxF,KAAuC,iBAAtB/9L,KAAK41B,QAAQ38B,OAA2Bw7D,EAAE/8B,SAAS13B,KAAKm3D,QAAQ,GAAI4mI,IAAsB,CAEpQ,GADA/9L,KAAKwkB,UAA6B,IAAjB0hI,EAAqB,OAAS,KAChB,YAA3BlmJ,KAAK41B,QAAQu+J,YAA2Bn0L,KAAKq+L,qBAAqB54K,GAGpE,MAFAzlB,KAAKs+L,WAAW3lM,EAAO8sB,GAIzBzlB,KAAKk0J,SAAS,SAAUv7J,EAAOqH,KAAK+mL,WACpC,KACF,CAcF,OAVA/mL,KAAKu+L,mBAAmB5lM,GAGpB87D,EAAEu9F,GAAG4zB,WACPnxH,EAAEu9F,GAAG4zB,UAAUb,KAAK/kL,KAAMrH,GAI5BqH,KAAKk0J,SAAS,OAAQv7J,EAAOqH,KAAK+mL,WAClC/mL,KAAK69L,gBAAkB79L,KAAK+lL,aACrB,CACT,EACArC,WAAY,SAAU/qL,EAAOkuL,GAC3B,GAAKluL,EAAL,CAQA,GAHI87D,EAAEu9F,GAAG4zB,YAAc5lL,KAAK41B,QAAQ2wJ,eAClC9xH,EAAEu9F,GAAG4zB,UAAUqB,KAAKjnL,KAAMrH,GAExBqH,KAAK41B,QAAQ4uJ,OAAQ,CACvB,IAAI19J,EAAO9mB,KACT6mC,EAAM7mC,KAAKusG,YAAY/qF,SACvByiK,EAAOjkL,KAAK41B,QAAQquJ,KACpBhgI,EAAY,CAAC,EACVggI,GAAiB,MAATA,IACXhgI,EAAU/B,KAAOrb,EAAIqb,KAAOliD,KAAKwhB,OAAO4e,OAAO8hB,KAAOliD,KAAK0mL,QAAQxkI,MAAQliD,KAAKmzD,aAAa,KAAOnzD,KAAKhI,SAAS,GAAGg4C,KAAO,EAAIhwC,KAAKmzD,aAAa,GAAGpQ,aAElJkhI,GAAiB,MAATA,IACXhgI,EAAUvmB,IAAMmJ,EAAInJ,IAAM19B,KAAKwhB,OAAO4e,OAAO1C,IAAM19B,KAAK0mL,QAAQhpJ,KAAO19B,KAAKmzD,aAAa,KAAOnzD,KAAKhI,SAAS,GAAGg4C,KAAO,EAAIhwC,KAAKmzD,aAAa,GAAGrQ,YAEnJ9iD,KAAK+8L,WAAY,EACjBtoI,EAAEz0D,KAAK+1H,QAAQ/vE,QAAQ/B,EAAW5zC,SAASrQ,KAAK41B,QAAQ4uJ,OAAQ,KAAO,KAAK,WAC1E19J,EAAK4oE,OAAO/2F,EACd,GACF,MACEqH,KAAK0vF,OAAO/2F,EAAOkuL,GAErB,OAAO,CAxBP,CAyBF,EACA/lF,OAAQ,WACN,GAAI9gG,KAAK49L,SAAU,CACjB59L,KAAK6iL,SAAS,IAAIpuH,EAAEhf,MAAM,UAAW,CACnCt8C,OAAQ,QAEkB,aAAxB6G,KAAK41B,QAAQmgG,QACf/1H,KAAKuoL,YAAYp5I,IAAInvC,KAAKkoL,YAC1BloL,KAAKq0J,aAAar0J,KAAKuoL,YAAa,uBAEpCvoL,KAAKuoL,YAAYr4I,OAInB,IAAK,IAAI55C,EAAI0J,KAAK29L,WAAWnnM,OAAS,EAAGF,GAAK,EAAGA,IAC/C0J,KAAK29L,WAAWrnM,GAAG49J,SAAS,aAAc,KAAMl0J,KAAK+mL,QAAQ/mL,OACzDA,KAAK29L,WAAWrnM,GAAGgyL,eAAe+L,OACpCr0L,KAAK29L,WAAWrnM,GAAG49J,SAAS,MAAO,KAAMl0J,KAAK+mL,QAAQ/mL,OACtDA,KAAK29L,WAAWrnM,GAAGgyL,eAAe+L,KAAO,EAG/C,CAsBA,OArBIr0L,KAAKusG,cAGHvsG,KAAKusG,YAAY,GAAGv4E,YACtBh0B,KAAKusG,YAAY,GAAGv4E,WAAWC,YAAYj0B,KAAKusG,YAAY,IAElC,aAAxBvsG,KAAK41B,QAAQmgG,QAAyB/1H,KAAK+1H,QAAU/1H,KAAK+1H,OAAO,GAAG/hG,YACtEh0B,KAAK+1H,OAAO7sF,SAEdurB,EAAEn3D,OAAO0C,KAAM,CACb+1H,OAAQ,KACR6nE,UAAU,EACVb,WAAW,EACXyB,aAAc,OAEZx+L,KAAKo9L,YAAYz2J,KACnB8tB,EAAEz0D,KAAKo9L,YAAYz2J,MAAMiU,MAAM56C,KAAKuoL,aAEpC9zH,EAAEz0D,KAAKo9L,YAAYh9J,QAAQqa,QAAQz6C,KAAKuoL,cAGrCvoL,IACT,EACAoqD,UAAW,SAAUpwD,GACnB,IAAImkF,EAAQn+E,KAAKy+L,kBAAkBzkM,GAAKA,EAAE+pH,WACxCsG,EAAM,GAWR,OAVArwH,EAAIA,GAAK,CAAC,EACVy6D,EAAE0pB,GAAOjpD,MAAK,WACZ,IAAI93B,GAAOq3D,EAAEz6D,EAAEyrB,MAAQzlB,MAAM2+B,KAAK3kC,EAAEwhE,WAAa,OAAS,IAAIr2D,MAAMnL,EAAE0kM,YAAc,kBAChFthM,GACFitH,EAAIvzH,MAAMkD,EAAEa,KAAOuC,EAAI,GAAK,MAAQ,KAAOpD,EAAEa,KAAOb,EAAE0kM,WAAathM,EAAI,GAAKA,EAAI,IAEpF,KACKitH,EAAI7zH,QAAUwD,EAAEa,KACnBwvH,EAAIvzH,KAAKkD,EAAEa,IAAM,KAEZwvH,EAAItoH,KAAK,IAClB,EACAyhB,QAAS,SAAUxpB,GACjB,IAAImkF,EAAQn+E,KAAKy+L,kBAAkBzkM,GAAKA,EAAE+pH,WACxCjgG,EAAM,GAKR,OAJA9pB,EAAIA,GAAK,CAAC,EACVmkF,EAAMjpD,MAAK,WACTpR,EAAIhtB,KAAK29D,EAAEz6D,EAAEyrB,MAAQzlB,MAAM2+B,KAAK3kC,EAAEwhE,WAAa,OAAS,GAC1D,IACO13C,CACT,EAEAukK,gBAAiB,SAAU5iK,GACzB,IAAI4jK,EAAKrpL,KAAK+lL,YAAY7jI,KACxBonI,EAAKD,EAAKrpL,KAAKqnL,kBAAkBtrI,MACjCwtI,EAAKvpL,KAAK+lL,YAAYroJ,IACtB8rJ,EAAKD,EAAKvpL,KAAKqnL,kBAAkBnpI,OACjC5mD,EAAImuB,EAAKy8B,KACT9nD,EAAI9C,EAAImuB,EAAKs2B,MACbvhD,EAAIirB,EAAKiY,IACTlhC,EAAIhC,EAAIirB,EAAKy4B,OACbygJ,EAAU3+L,KAAKwhB,OAAOs0B,MAAMpY,IAC5BkhK,EAAU5+L,KAAKwhB,OAAOs0B,MAAMoM,KAC5B28I,EAA4C,MAAtB7+L,KAAK41B,QAAQquJ,MAAgBsF,EAAKoV,EAAUnkM,GAAK+uL,EAAKoV,EAAUniM,EACtFsiM,EAA2C,MAAtB9+L,KAAK41B,QAAQquJ,MAAgBoF,EAAKuV,EAAUtnM,GAAK+xL,EAAKuV,EAAUxkM,EACrF2kM,EAAgBF,GAAuBC,EACzC,MAA+B,YAA3B9+L,KAAK41B,QAAQu+J,WAA2Bn0L,KAAK41B,QAAQopK,2BAAwD,YAA3Bh/L,KAAK41B,QAAQu+J,WAA2Bn0L,KAAKqnL,kBAAkBrnL,KAAKi/L,SAAW,QAAU,UAAYx5K,EAAKzlB,KAAKi/L,SAAW,QAAU,UACjNF,EAEAznM,EAAI+xL,EAAKrpL,KAAKqnL,kBAAkBtrI,MAAQ,GAE/CutI,EAAKtpL,KAAKqnL,kBAAkBtrI,MAAQ,EAAI3hD,GAExCI,EAAI+uL,EAAKvpL,KAAKqnL,kBAAkBnpI,OAAS,GAEzCsrI,EAAKxpL,KAAKqnL,kBAAkBnpI,OAAS,EAAI1hD,CAE7C,EAEA4hM,uBAAwB,SAAU34K,GAChC,IAAIy5K,EACFC,EACAN,EAA4C,MAAtB7+L,KAAK41B,QAAQquJ,MAAgBjkL,KAAK28L,YAAY38L,KAAK+lL,YAAYroJ,IAAM19B,KAAKwhB,OAAOs0B,MAAMpY,IAAKjY,EAAKiY,IAAKjY,EAAKy4B,QACjI4gJ,EAA2C,MAAtB9+L,KAAK41B,QAAQquJ,MAAgBjkL,KAAK28L,YAAY38L,KAAK+lL,YAAY7jI,KAAOliD,KAAKwhB,OAAOs0B,MAAMoM,KAAMz8B,EAAKy8B,KAAMz8B,EAAKs2B,OAErI,SADkB8iJ,IAAuBC,KAIzCI,EAAoBl/L,KAAKi+L,cAAchlC,SACvCkmC,EAAsBn/L,KAAKi+L,cAAcjlC,WAClCh5J,KAAKi/L,SAAmC,UAAxBE,GAAyD,SAAtBD,EAA+B,EAAI,EAAIA,IAA4C,SAAtBA,EAA+B,EAAI,GAC5J,EACAb,qBAAsB,SAAU54K,GAC9B,IAAI25K,EAAmBp/L,KAAK28L,YAAY38L,KAAK+lL,YAAYroJ,IAAM19B,KAAKwhB,OAAOs0B,MAAMpY,IAAKjY,EAAKiY,IAAMjY,EAAKy4B,OAAS,EAAGz4B,EAAKy4B,QACrHmhJ,EAAkBr/L,KAAK28L,YAAY38L,KAAK+lL,YAAY7jI,KAAOliD,KAAKwhB,OAAOs0B,MAAMoM,KAAMz8B,EAAKy8B,KAAOz8B,EAAKs2B,MAAQ,EAAGt2B,EAAKs2B,OACpHmjJ,EAAoBl/L,KAAKi+L,cAAchlC,SACvCkmC,EAAsBn/L,KAAKi+L,cAAcjlC,WAC3C,OAAIh5J,KAAKi/L,UAAYE,EACY,UAAxBA,GAAmCE,GAA2C,SAAxBF,IAAmCE,EAEzFH,IAA4C,SAAtBA,GAAgCE,GAA0C,OAAtBF,IAA+BE,EAEpH,EACAlB,0BAA2B,WACzB,IAAIt+I,EAAQ5/C,KAAK+lL,YAAYroJ,IAAM19B,KAAK69L,gBAAgBngK,IACxD,OAAiB,IAAVkiB,IAAgBA,EAAQ,EAAI,OAAS,KAC9C,EACAu+I,4BAA6B,WAC3B,IAAIv+I,EAAQ5/C,KAAK+lL,YAAY7jI,KAAOliD,KAAK69L,gBAAgB37I,KACzD,OAAiB,IAAVtC,IAAgBA,EAAQ,EAAI,QAAU,OAC/C,EACAgZ,QAAS,SAAUjgE,GAIjB,OAHAqH,KAAKg9L,cAAcrkM,GACnBqH,KAAKilL,sBACLjlL,KAAKukL,mBACEvkL,IACT,EACAs/L,aAAc,WACZ,IAAI1pK,EAAU51B,KAAK41B,QACnB,OAAOA,EAAQ0mK,YAAY1nK,cAAgB9P,OAAS,CAAC8Q,EAAQ0mK,aAAe1mK,EAAQ0mK,WACtF,EACAmC,kBAAmB,SAAU16E,GAC3B,IAAIztH,EACFohB,EACAmvB,EACAk1H,EACA59E,EAAQ,GACRwR,EAAU,GACV2sG,EAAct8L,KAAKs/L,eACrB,GAAIhD,GAAev4E,EACjB,IAAKztH,EAAIgmM,EAAY9lM,OAAS,EAAGF,GAAK,EAAGA,IAEvC,IAAKohB,GADLmvB,EAAM4tB,EAAE6nI,EAAYhmM,GAAI0J,KAAKhI,SAAS,KACzBxB,OAAS,EAAGkhB,GAAK,EAAGA,KAC/BqkJ,EAAOtnG,EAAEx+D,KAAK4wC,EAAInvB,GAAI1X,KAAKizJ,kBACf8I,IAAS/7J,OAAS+7J,EAAKnmI,QAAQyF,UACzCs0D,EAAQ74F,KAAK,CAA+B,oBAAvBilK,EAAKnmI,QAAQuoD,MAAuB49E,EAAKnmI,QAAQuoD,MAAMvnF,KAAKmlK,EAAK5kG,SAAW1C,EAAEsnG,EAAKnmI,QAAQuoD,MAAO49E,EAAK5kG,SAASx2B,IAAI,uBAAuBA,IAAI,4BAA6Bo7H,IASzM,SAASwjC,IACPphH,EAAMrnF,KAAKkJ,KACb,CACA,IAPA2vF,EAAQ74F,KAAK,CAA+B,oBAAvBkJ,KAAK41B,QAAQuoD,MAAuBn+E,KAAK41B,QAAQuoD,MAAMvnF,KAAKoJ,KAAKm3D,QAAS,KAAM,CACnGvhC,QAAS51B,KAAK41B,QACdnQ,KAAMzlB,KAAKuoL,cACR9zH,EAAEz0D,KAAK41B,QAAQuoD,MAAOn+E,KAAKm3D,SAASx2B,IAAI,uBAAuBA,IAAI,4BAA6B3gC,OAIhG1J,EAAIq5F,EAAQn5F,OAAS,EAAGF,GAAK,EAAGA,IACnCq5F,EAAQr5F,GAAG,GAAG4+B,KAAKqqK,GAErB,OAAO9qI,EAAE0pB,EACX,EACA8+G,yBAA0B,WACxB,IAAIr0J,EAAO5oC,KAAKuoL,YAAY/sJ,KAAK,SAAWx7B,KAAKgzJ,WAAa,UAC9DhzJ,KAAKm+E,MAAQ1pB,EAAEl/B,KAAKv1B,KAAKm+E,OAAO,SAAU14D,GACxC,IAAK,IAAI/N,EAAI,EAAGA,EAAIkxB,EAAKpyC,OAAQkhB,IAC/B,GAAIkxB,EAAKlxB,KAAO+N,EAAKA,KAAK,GACxB,OAAO,EAGX,OAAO,CACT,GACF,EACAu3K,cAAe,SAAUrkM,GACvBqH,KAAKm+E,MAAQ,GACbn+E,KAAK29L,WAAa,CAAC39L,MACnB,IAAI1J,EACFohB,EACAmvB,EACAk1H,EACAyjC,EACAC,EACAh6K,EACAi6K,EACAvhH,EAAQn+E,KAAKm+E,MACbwR,EAAU,CAAC,CAA+B,oBAAvB3vF,KAAK41B,QAAQuoD,MAAuBn+E,KAAK41B,QAAQuoD,MAAMvnF,KAAKoJ,KAAKm3D,QAAQ,GAAIx+D,EAAO,CACrG8sB,KAAMzlB,KAAKuoL,cACR9zH,EAAEz0D,KAAK41B,QAAQuoD,MAAOn+E,KAAKm3D,SAAUn3D,OAC1Cs8L,EAAct8L,KAAKs/L,eAGrB,GAAIhD,GAAet8L,KAAKsmC,MACtB,IAAKhwC,EAAIgmM,EAAY9lM,OAAS,EAAGF,GAAK,EAAGA,IAEvC,IAAKohB,GADLmvB,EAAM4tB,EAAE6nI,EAAYhmM,GAAI0J,KAAKhI,SAAS,KACzBxB,OAAS,EAAGkhB,GAAK,EAAGA,KAC/BqkJ,EAAOtnG,EAAEx+D,KAAK4wC,EAAInvB,GAAI1X,KAAKizJ,kBACf8I,IAAS/7J,OAAS+7J,EAAKnmI,QAAQyF,WACzCs0D,EAAQ74F,KAAK,CAA+B,oBAAvBilK,EAAKnmI,QAAQuoD,MAAuB49E,EAAKnmI,QAAQuoD,MAAMvnF,KAAKmlK,EAAK5kG,QAAQ,GAAIx+D,EAAO,CACvG8sB,KAAMzlB,KAAKuoL,cACR9zH,EAAEsnG,EAAKnmI,QAAQuoD,MAAO49E,EAAK5kG,SAAU4kG,IAC1C/7J,KAAK29L,WAAW7mM,KAAKilK,IAK7B,IAAKzlK,EAAIq5F,EAAQn5F,OAAS,EAAGF,GAAK,EAAGA,IAGnC,IAFAkpM,EAAa7vG,EAAQr5F,GAAG,GAEnBohB,EAAI,EAAGgoL,GADZD,EAAW9vG,EAAQr5F,GAAG,IACeE,OAAQkhB,EAAIgoL,EAAehoL,KAC9D+N,EAAOgvC,EAAEgrI,EAAS/nL,KAGbzhB,KAAK+J,KAAKgzJ,WAAa,QAASwsC,GACrCrhH,EAAMrnF,KAAK,CACT2uB,KAAMA,EACNqmE,SAAU0zG,EACVzjJ,MAAO,EACPmC,OAAQ,EACRgE,KAAM,EACNxkB,IAAK,GAIb,EACAsgK,sBAAuB,SAAUl3I,GAC/B,IAAIxwD,EAAGmvB,EAAMjrB,EAAGjC,EAChB,IAAKjC,EAAI0J,KAAKm+E,MAAM3nF,OAAS,EAAGF,GAAK,EAAGA,IACtCmvB,EAAOzlB,KAAKm+E,MAAM7nF,GAGd0J,KAAKm9L,kBAAoB13K,EAAKqmE,WAAa9rF,KAAKm9L,kBAAoB13K,EAAKA,KAAK,KAAOzlB,KAAKuoL,YAAY,KAG1G/tL,EAAIwF,KAAK41B,QAAQ+pK,iBAAmBlrI,EAAEz0D,KAAK41B,QAAQ+pK,iBAAkBl6K,EAAKA,MAAQA,EAAKA,KAClFqhC,IACHrhC,EAAKs2B,MAAQvhD,EAAEq8J,aACfpxI,EAAKy4B,OAAS1jD,EAAEs8J,eAElBv+J,EAAIiC,EAAEgnB,SACNiE,EAAKy8B,KAAO3pD,EAAE2pD,KACdz8B,EAAKiY,IAAMnlC,EAAEmlC,IAEjB,EACA6mJ,iBAAkB,SAAUz9H,GAU1B,IAAIxwD,EAAGiC,EACP,GATAyH,KAAKi/L,WAAWj/L,KAAKm+E,MAAM3nF,SAA+B,MAAtBwJ,KAAK41B,QAAQquJ,MAAgBjkL,KAAK48L,YAAY58L,KAAKm+E,MAAM,GAAG14D,OAI5FzlB,KAAKmzD,cAAgBnzD,KAAK+1H,SAC5B/1H,KAAKwhB,OAAO4e,OAASpgC,KAAK2mL,oBAE5B3mL,KAAKg+L,sBAAsBl3I,GAEvB9mD,KAAK41B,QAAQw/J,QAAUp1L,KAAK41B,QAAQw/J,OAAOwK,kBAC7C5/L,KAAK41B,QAAQw/J,OAAOwK,kBAAkBhpM,KAAKoJ,WAE3C,IAAK1J,EAAI0J,KAAK29L,WAAWnnM,OAAS,EAAGF,GAAK,EAAGA,IAC3CiC,EAAIyH,KAAK29L,WAAWrnM,GAAG6gE,QAAQ31C,SAC/BxhB,KAAK29L,WAAWrnM,GAAGgyL,eAAepmI,KAAO3pD,EAAE2pD,KAC3CliD,KAAK29L,WAAWrnM,GAAGgyL,eAAe5qJ,IAAMnlC,EAAEmlC,IAC1C19B,KAAK29L,WAAWrnM,GAAGgyL,eAAevsI,MAAQ/7C,KAAK29L,WAAWrnM,GAAG6gE,QAAQ0/F,aACrE72J,KAAK29L,WAAWrnM,GAAGgyL,eAAepqI,OAASl+C,KAAK29L,WAAWrnM,GAAG6gE,QAAQ2/F,cAG1E,OAAO92J,IACT,EACAq9L,mBAAoB,SAAUv2K,GAE5B,IAAIsX,EACF3J,EACAz6B,GAHF8sB,EAAOA,GAAQ9mB,MAGJ41B,QACN57B,EAAEuyG,aAAevyG,EAAEuyG,YAAY33E,cAAgB9P,SAClDsZ,EAAYpkC,EAAEuyG,YACd93E,EAAW3N,EAAKyhK,YAAY,GAAG9zJ,SAASjsB,cACxCxO,EAAEuyG,YAAc,CACdp1C,QAAS,WACP,IAAIA,EAAU1C,EAAE,IAAMhgC,EAAW,IAAK3N,EAAK9uB,SAAS,IAYpD,OAXA8uB,EAAKuuI,UAAUl+F,EAAS,0BAA2B/4B,GAAatX,EAAKyhK,YAAY,GAAGnqJ,WAAWi2H,aAAal9F,EAAS,sBACpG,UAAb1iC,EACF3N,EAAK+4K,qBAAqB/4K,EAAKyhK,YAAY/sJ,KAAK,MAAMpG,GAAG,GAAIq/B,EAAE,OAAQ3tC,EAAK9uB,SAAS,IAAI+iD,SAASoc,IAC5E,OAAb1iC,EACT3N,EAAK+4K,qBAAqB/4K,EAAKyhK,YAAapxH,GACtB,QAAb1iC,GACT0iC,EAAQx4B,KAAK,MAAO7X,EAAKyhK,YAAY5pJ,KAAK,QAEvCP,GACH+4B,EAAQhoB,IAAI,aAAc,UAErBgoB,CACT,EACA+lB,OAAQ,SAAUzgC,EAAWlkD,GAKvB6lC,IAAcpkC,EAAEwiM,uBAWfjkM,EAAE2lD,YAAYlkD,EAAEwiM,sBAAsC,UAAb/nK,GAAqC,OAAbA,IACpEl8B,EAAE2lD,OAAOp3B,EAAKyhK,YAAYh5F,cAAgBl/E,SAASyW,EAAKyhK,YAAYp5I,IAAI,eAAiB,EAAG,IAAM9+B,SAASyW,EAAKyhK,YAAYp5I,IAAI,kBAAoB,EAAG,KAEpJ52C,EAAEwjD,SACLxjD,EAAEwjD,MAAMj1B,EAAKyhK,YAAYvlG,aAAe3yE,SAASyW,EAAKyhK,YAAYp5I,IAAI,gBAAkB,EAAG,IAAM9+B,SAASyW,EAAKyhK,YAAYp5I,IAAI,iBAAmB,EAAG,KAEzJ,IAKJroB,EAAKylF,YAAc93C,EAAEz6D,EAAEuyG,YAAYp1C,QAAQvgE,KAAKkwB,EAAKqwC,QAASrwC,EAAKyhK,cAGnEzhK,EAAKyhK,YAAY3tI,MAAM9zB,EAAKylF,aAG5BvyG,EAAEuyG,YAAYrvB,OAAOp2D,EAAMA,EAAKylF,YAClC,EACAszF,qBAAsB,SAAUC,EAAUC,GACxC,IAAIj5K,EAAO9mB,KACX8/L,EAASr5J,WAAWvR,MAAK,WACvBu/B,EAAE,kBAAmB3tC,EAAK9uB,SAAS,IAAI2mC,KAAK,UAAW81B,EAAEz0D,MAAM2+B,KAAK,YAAc,GAAGoc,SAASglJ,EAChG,GACF,EACAxB,mBAAoB,SAAU5lM,GAC5B,IAAIrC,EACFohB,EACAsoL,EACAC,EACAC,EACAC,EACAt5J,EACAu5J,EACAnB,EACAhb,EACAoc,EAAqB,KACrBC,EAAiB,KAGnB,IAAKhqM,EAAI0J,KAAK29L,WAAWnnM,OAAS,EAAGF,GAAK,EAAGA,IAE3C,IAAIm+D,EAAE/8B,SAAS13B,KAAKuoL,YAAY,GAAIvoL,KAAK29L,WAAWrnM,GAAG6gE,QAAQ,IAG/D,GAAIn3D,KAAKqoL,gBAAgBroL,KAAK29L,WAAWrnM,GAAGgyL,gBAAiB,CAE3D,GAAI+X,GAAsB5rI,EAAE/8B,SAAS13B,KAAK29L,WAAWrnM,GAAG6gE,QAAQ,GAAIkpI,EAAmBlpI,QAAQ,IAC7F,SAEFkpI,EAAqBrgM,KAAK29L,WAAWrnM,GACrCgqM,EAAiBhqM,CACnB,MAEM0J,KAAK29L,WAAWrnM,GAAGgyL,eAAe+L,OACpCr0L,KAAK29L,WAAWrnM,GAAG49J,SAAS,MAAOv7J,EAAOqH,KAAK+mL,QAAQ/mL,OACvDA,KAAK29L,WAAWrnM,GAAGgyL,eAAe+L,KAAO,GAM/C,GAAKgM,EAKL,GAA+B,IAA3BrgM,KAAK29L,WAAWnnM,OACbwJ,KAAK29L,WAAW2C,GAAgBhY,eAAe+L,OAClDr0L,KAAK29L,WAAW2C,GAAgBpsC,SAAS,OAAQv7J,EAAOqH,KAAK+mL,QAAQ/mL,OACrEA,KAAK29L,WAAW2C,GAAgBhY,eAAe+L,KAAO,OAEnD,CASL,IANA2L,EAAO,IACPC,EAAwB,KAExBC,GADAjB,EAAWoB,EAAmBpB,UAAYj/L,KAAK48L,YAAY58L,KAAKuoL,cACvC,OAAS,MAClC4X,EAAelB,EAAW,QAAU,SACpChb,EAAOgb,EAAW,QAAU,QACvBvnL,EAAI1X,KAAKm+E,MAAM3nF,OAAS,EAAGkhB,GAAK,EAAGA,IACjC+8C,EAAE/8B,SAAS13B,KAAK29L,WAAW2C,GAAgBnpI,QAAQ,GAAIn3D,KAAKm+E,MAAMzmE,GAAG+N,KAAK,KAG3EzlB,KAAKm+E,MAAMzmE,GAAG+N,KAAK,KAAOzlB,KAAKuoL,YAAY,KAG/C1hJ,EAAM7mC,KAAKm+E,MAAMzmE,GAAG+N,KAAKjE,SAAS0+K,GAClCE,GAAa,EACTznM,EAAMsrL,GAAQp9I,EAAM7mC,KAAKm+E,MAAMzmE,GAAGyoL,GAAgB,IACpDC,GAAa,GAEXl8L,KAAKC,IAAIxL,EAAMsrL,GAAQp9I,GAAOm5J,IAChCA,EAAO97L,KAAKC,IAAIxL,EAAMsrL,GAAQp9I,GAC9Bo5J,EAAwBjgM,KAAKm+E,MAAMzmE,GACnC1X,KAAKwkB,UAAY47K,EAAa,KAAO,SAKzC,IAAKH,IAA0BjgM,KAAK41B,QAAQ2mK,YAC1C,OAEF,GAAIv8L,KAAKm9L,mBAAqBn9L,KAAK29L,WAAW2C,GAK5C,YAJKtgM,KAAKm9L,iBAAiB7U,eAAe+L,OACxCr0L,KAAK29L,WAAW2C,GAAgBpsC,SAAS,OAAQv7J,EAAOqH,KAAK+mL,WAC7D/mL,KAAKm9L,iBAAiB7U,eAAe+L,KAAO,IAI5C4L,EACFjgM,KAAKs+L,WAAW3lM,EAAOsnM,EAAuB,MAAM,GAEpDjgM,KAAKs+L,WAAW3lM,EAAO,KAAMqH,KAAK29L,WAAW2C,GAAgBnpI,SAAS,GAExEn3D,KAAKk0J,SAAS,SAAUv7J,EAAOqH,KAAK+mL,WACpC/mL,KAAK29L,WAAW2C,GAAgBpsC,SAAS,SAAUv7J,EAAOqH,KAAK+mL,QAAQ/mL,OACvEA,KAAKm9L,iBAAmBn9L,KAAK29L,WAAW2C,GAGxCtgM,KAAK41B,QAAQ22E,YAAYrvB,OAAOl9E,KAAKm9L,iBAAkBn9L,KAAKusG,aAG5DvsG,KAAKumK,aAAevmK,KAAKusG,YAAYg6D,eAGjCvmK,KAAKumK,aAAa,KAAOvmK,KAAKhI,SAAS,IAAuC,SAAjCgI,KAAKumK,aAAa,GAAGlvG,UACpEr3D,KAAK6oL,eAAiB7oL,KAAKumK,aAAa/kJ,UAE1CxhB,KAAK29L,WAAW2C,GAAgBpsC,SAAS,OAAQv7J,EAAOqH,KAAK+mL,QAAQ/mL,OACrEA,KAAK29L,WAAW2C,GAAgBhY,eAAe+L,KAAO,CACxD,CACF,EACA3O,cAAe,SAAU/sL,GACvB,IAAIqB,EAAIgG,KAAK41B,QACXmgG,EAA6B,oBAAb/7H,EAAE+7H,OAAwBthE,EAAEz6D,EAAE+7H,OAAOl6H,MAAMmE,KAAKm3D,QAAQ,GAAI,CAACx+D,EAAOqH,KAAKuoL,eAA8B,UAAbvuL,EAAE+7H,OAAqB/1H,KAAKuoL,YAAYpmK,QAAUniB,KAAKuoL,YAqBnK,OAlBKxyD,EAAO7uF,QAAQ,QAAQ1wC,QAC1BwJ,KAAK+6C,SAAS,GAAGrhD,YAAYq8H,EAAO,IAElCA,EAAO,KAAO/1H,KAAKuoL,YAAY,KACjCvoL,KAAKkoL,WAAa,CAChBnsI,MAAO/7C,KAAKuoL,YAAY,GAAGt5I,MAAM8M,MACjCmC,OAAQl+C,KAAKuoL,YAAY,GAAGt5I,MAAMiP,OAClCf,SAAUn9C,KAAKuoL,YAAYp5I,IAAI,YAC/BzR,IAAK19B,KAAKuoL,YAAYp5I,IAAI,OAC1B+S,KAAMliD,KAAKuoL,YAAYp5I,IAAI,UAG1B4mF,EAAO,GAAG9mF,MAAM8M,QAAS/hD,EAAEyiM,iBAC9B1mE,EAAOh6E,MAAM/7C,KAAKuoL,YAAYxsI,SAE3Bg6E,EAAO,GAAG9mF,MAAMiP,SAAUlkD,EAAEyiM,iBAC/B1mE,EAAO73E,OAAOl+C,KAAKuoL,YAAYrqI,UAE1B63E,CACT,EACAswD,wBAAyB,SAAU3pL,GACd,kBAARA,IACTA,EAAMA,EAAIuR,MAAM,MAEd9R,MAAMF,QAAQS,KAChBA,EAAM,CACJwlD,MAAOxlD,EAAI,GACXghC,KAAMhhC,EAAI,IAAM,IAGhB,SAAUA,IACZsD,KAAKwhB,OAAOs0B,MAAMoM,KAAOxlD,EAAIwlD,KAAOliD,KAAK0mL,QAAQxkI,MAE/C,UAAWxlD,IACbsD,KAAKwhB,OAAOs0B,MAAMoM,KAAOliD,KAAKqnL,kBAAkBtrI,MAAQr/C,EAAIsgD,MAAQh9C,KAAK0mL,QAAQxkI,MAE/E,QAASxlD,IACXsD,KAAKwhB,OAAOs0B,MAAMpY,IAAMhhC,EAAIghC,IAAM19B,KAAK0mL,QAAQhpJ,KAE7C,WAAYhhC,IACdsD,KAAKwhB,OAAOs0B,MAAMpY,IAAM19B,KAAKqnL,kBAAkBnpI,OAASxhD,EAAIo8J,OAAS94J,KAAK0mL,QAAQhpJ,IAEtF,EACAipJ,iBAAkB,WAEhB3mL,KAAKmzD,aAAenzD,KAAK+1H,OAAO5iE,eAChC,IAAIo0H,EAAKvnL,KAAKmzD,aAAa3xC,SAsB3B,MAbyB,aAArBxhB,KAAKghK,aAA8BhhK,KAAKumK,aAAa,KAAOvmK,KAAKhI,SAAS,IAAMy8D,EAAE/8B,SAAS13B,KAAKumK,aAAa,GAAIvmK,KAAKmzD,aAAa,MACrIo0H,EAAGrlI,MAAQliD,KAAKumK,aAAaxjH,aAC7BwkI,EAAG7pJ,KAAO19B,KAAKumK,aAAazjH,cAK1B9iD,KAAKmzD,aAAa,KAAOnzD,KAAKhI,SAAS,GAAGg4C,MAAQhwC,KAAKmzD,aAAa,GAAGkE,SAA0D,SAA/Cr3D,KAAKmzD,aAAa,GAAGkE,QAAQ7uD,eAA4BisD,EAAEu9F,GAAGqwB,MAClJkF,EAAK,CACH7pJ,IAAK,EACLwkB,KAAM,IAGH,CACLxkB,IAAK6pJ,EAAG7pJ,KAAOrtB,SAASrQ,KAAKmzD,aAAahkB,IAAI,kBAAmB,KAAO,GACxE+S,KAAMqlI,EAAGrlI,MAAQ7xC,SAASrQ,KAAKmzD,aAAahkB,IAAI,mBAAoB,KAAO,GAE/E,EACAy3I,mBAAoB,WAClB,GAAyB,aAArB5mL,KAAKghK,YAA4B,CACnC,IAAIzoK,EAAIyH,KAAKuoL,YAAYprI,WACzB,MAAO,CACLzf,IAAKnlC,EAAEmlC,KAAOrtB,SAASrQ,KAAK+1H,OAAO5mF,IAAI,OAAQ,KAAO,GAAKnvC,KAAKumK,aAAazjH,YAC7EZ,KAAM3pD,EAAE2pD,MAAQ7xC,SAASrQ,KAAK+1H,OAAO5mF,IAAI,QAAS,KAAO,GAAKnvC,KAAKumK,aAAaxjH,aAEpF,CACE,MAAO,CACLrlB,IAAK,EACLwkB,KAAM,EAGZ,EACA2jI,cAAe,WACb7lL,KAAK0mL,QAAU,CACbxkI,KAAM7xC,SAASrQ,KAAKuoL,YAAYp5I,IAAI,cAAe,KAAO,EAC1DzR,IAAKrtB,SAASrQ,KAAKuoL,YAAYp5I,IAAI,aAAc,KAAO,EAE5D,EACAw2I,wBAAyB,WACvB3lL,KAAKqnL,kBAAoB,CACvBtrI,MAAO/7C,KAAK+1H,OAAO8gC,aACnB34G,OAAQl+C,KAAK+1H,OAAO+gC,cAExB,EACAwvB,gBAAiB,WACf,IAAIptD,EACFyuD,EACA0M,EACAr6L,EAAIgG,KAAK41B,QACW,WAAlB57B,EAAEmqL,cACJnqL,EAAEmqL,YAAcnkL,KAAK+1H,OAAO,GAAG/hG,YAEX,aAAlBh6B,EAAEmqL,aAAgD,WAAlBnqL,EAAEmqL,cACpCnkL,KAAKmkL,YAAc,CAAC,EAAInkL,KAAKwhB,OAAOyd,SAASijB,KAAOliD,KAAKwhB,OAAO4e,OAAO8hB,KAAM,EAAIliD,KAAKwhB,OAAOyd,SAASvB,IAAM19B,KAAKwhB,OAAO4e,OAAO1C,IAAuB,aAAlB1jC,EAAEmqL,YAA6BnkL,KAAKhI,SAAS+jD,QAAU/7C,KAAK1E,OAAOygD,QAAU/7C,KAAKqnL,kBAAkBtrI,MAAQ/7C,KAAK0mL,QAAQxkI,MAAyB,aAAlBloD,EAAEmqL,YAA6BnkL,KAAKhI,SAASkmD,UAAYlmD,SAASg4C,KAAKhc,WAAW4tD,aAAe5hF,KAAK1E,OAAO4iD,UAAYl+C,KAAKhI,SAAS,GAAGg4C,KAAKhc,WAAW4tD,cAAgB5hF,KAAKqnL,kBAAkBnpI,OAASl+C,KAAK0mL,QAAQhpJ,MAExd,6BAA6B73B,KAAK7L,EAAEmqL,eACvCjrD,EAAKzkE,EAAEz6D,EAAEmqL,aAAa,GACtBwD,EAAKlzH,EAAEz6D,EAAEmqL,aAAa3iK,SACtB6yK,EAAiC,WAA1B5/H,EAAEykE,GAAI/pF,IAAI,YACjBnvC,KAAKmkL,YAAc,CAACwD,EAAGzlI,MAAQ7xC,SAASokD,EAAEykE,GAAI/pF,IAAI,mBAAoB,KAAO,IAAM9+B,SAASokD,EAAEykE,GAAI/pF,IAAI,eAAgB,KAAO,GAAKnvC,KAAK0mL,QAAQxkI,KAAMylI,EAAGjqJ,KAAOrtB,SAASokD,EAAEykE,GAAI/pF,IAAI,kBAAmB,KAAO,IAAM9+B,SAASokD,EAAEykE,GAAI/pF,IAAI,cAAe,KAAO,GAAKnvC,KAAK0mL,QAAQhpJ,IAAKiqJ,EAAGzlI,MAAQmyI,EAAOnwL,KAAKI,IAAI40H,EAAGo+B,YAAap+B,EAAG77E,aAAe67E,EAAG77E,cAAgBhtC,SAASokD,EAAEykE,GAAI/pF,IAAI,mBAAoB,KAAO,IAAM9+B,SAASokD,EAAEykE,GAAI/pF,IAAI,gBAAiB,KAAO,GAAKnvC,KAAKqnL,kBAAkBtrI,MAAQ/7C,KAAK0mL,QAAQxkI,KAAMylI,EAAGjqJ,KAAO22J,EAAOnwL,KAAKI,IAAI40H,EAAGt3C,aAAcs3C,EAAG76E,cAAgB66E,EAAG76E,eAAiBhuC,SAASokD,EAAEykE,GAAI/pF,IAAI,kBAAmB,KAAO,IAAM9+B,SAASokD,EAAEykE,GAAI/pF,IAAI,iBAAkB,KAAO,GAAKnvC,KAAKqnL,kBAAkBnpI,OAASl+C,KAAK0mL,QAAQhpJ,KAE/tB,EACAopJ,mBAAoB,SAAUhtL,EAAGwc,GAC1BA,IACHA,EAAMtW,KAAKm9C,UAEb,IAAI3vC,EAAY,aAAN1T,EAAmB,GAAK,EAChC+xK,EAA8B,aAArB7rK,KAAKghK,aAAgChhK,KAAKumK,aAAa,KAAOvmK,KAAKhI,SAAS,IAAMy8D,EAAE/8B,SAAS13B,KAAKumK,aAAa,GAAIvmK,KAAKmzD,aAAa,IAA2BnzD,KAAKumK,aAAzBvmK,KAAKmzD,aAC1Jq0H,EAAmB,eAAe3hL,KAAKgmK,EAAO,GAAGx0G,SACnD,MAAO,CACL35B,IAEApnB,EAAIonB,IAEJ19B,KAAKwhB,OAAOyd,SAASvB,IAAMlwB,EAE3BxN,KAAKwhB,OAAO4e,OAAO1C,IAAMlwB,GAA4B,UAArBxN,KAAKghK,aAA2BhhK,KAAKumK,aAAazjH,YAAc0kI,EAAmB,EAAI3b,EAAO/oH,aAAet1C,EAC7I00C,KAEA5rC,EAAI4rC,KAEJliD,KAAKwhB,OAAOyd,SAASijB,KAAO10C,EAE5BxN,KAAKwhB,OAAO4e,OAAO8hB,KAAO10C,GAA4B,UAArBxN,KAAKghK,aAA2BhhK,KAAKumK,aAAaxjH,aAAeykI,EAAmB,EAAI3b,EAAO9oH,cAAgBv1C,EAEpJ,EACA04K,kBAAmB,SAAUvtL,GAC3B,IAAI+kC,EACFwkB,EACAloD,EAAIgG,KAAK41B,QACTmhB,EAAQp+C,EAAMo+C,MACdC,EAAQr+C,EAAMq+C,MACd60H,EAA8B,aAArB7rK,KAAKghK,aAAgChhK,KAAKumK,aAAa,KAAOvmK,KAAKhI,SAAS,IAAMy8D,EAAE/8B,SAAS13B,KAAKumK,aAAa,GAAIvmK,KAAKmzD,aAAa,IAA2BnzD,KAAKumK,aAAzBvmK,KAAKmzD,aAC1Jq0H,EAAmB,eAAe3hL,KAAKgmK,EAAO,GAAGx0G,SAuCnD,MAjCyB,aAArBr3D,KAAKghK,aAAgChhK,KAAKumK,aAAa,KAAOvmK,KAAKhI,SAAS,IAAMgI,KAAKumK,aAAa,KAAOvmK,KAAKmzD,aAAa,KAC/HnzD,KAAKwhB,OAAOyd,SAAWj/B,KAAK4mL,sBAQ1B5mL,KAAKimL,mBAGHjmL,KAAKmkL,cACHxrL,EAAMo+C,MAAQ/2C,KAAKwhB,OAAOs0B,MAAMoM,KAAOliD,KAAKmkL,YAAY,KAC1DptI,EAAQ/2C,KAAKmkL,YAAY,GAAKnkL,KAAKwhB,OAAOs0B,MAAMoM,MAE9CvpD,EAAMq+C,MAAQh3C,KAAKwhB,OAAOs0B,MAAMpY,IAAM19B,KAAKmkL,YAAY,KACzDntI,EAAQh3C,KAAKmkL,YAAY,GAAKnkL,KAAKwhB,OAAOs0B,MAAMpY,KAE9C/kC,EAAMo+C,MAAQ/2C,KAAKwhB,OAAOs0B,MAAMoM,KAAOliD,KAAKmkL,YAAY,KAC1DptI,EAAQ/2C,KAAKmkL,YAAY,GAAKnkL,KAAKwhB,OAAOs0B,MAAMoM,MAE9CvpD,EAAMq+C,MAAQh3C,KAAKwhB,OAAOs0B,MAAMpY,IAAM19B,KAAKmkL,YAAY,KACzDntI,EAAQh3C,KAAKmkL,YAAY,GAAKnkL,KAAKwhB,OAAOs0B,MAAMpY,MAGhD1jC,EAAEqqL,OACJ3mJ,EAAM19B,KAAKomL,cAAgBliL,KAAK+c,OAAO+1B,EAAQh3C,KAAKomL,eAAiBpsL,EAAEqqL,KAAK,IAAMrqL,EAAEqqL,KAAK,GACzFrtI,EAAQh3C,KAAKmkL,YAAczmJ,EAAM19B,KAAKwhB,OAAOs0B,MAAMpY,KAAO19B,KAAKmkL,YAAY,IAAMzmJ,EAAM19B,KAAKwhB,OAAOs0B,MAAMpY,KAAO19B,KAAKmkL,YAAY,GAAKzmJ,EAAMA,EAAM19B,KAAKwhB,OAAOs0B,MAAMpY,KAAO19B,KAAKmkL,YAAY,GAAKzmJ,EAAM1jC,EAAEqqL,KAAK,GAAK3mJ,EAAM1jC,EAAEqqL,KAAK,GAAK3mJ,EACrOwkB,EAAOliD,KAAKmmL,cAAgBjiL,KAAK+c,OAAO81B,EAAQ/2C,KAAKmmL,eAAiBnsL,EAAEqqL,KAAK,IAAMrqL,EAAEqqL,KAAK,GAC1FttI,EAAQ/2C,KAAKmkL,YAAcjiI,EAAOliD,KAAKwhB,OAAOs0B,MAAMoM,MAAQliD,KAAKmkL,YAAY,IAAMjiI,EAAOliD,KAAKwhB,OAAOs0B,MAAMoM,MAAQliD,KAAKmkL,YAAY,GAAKjiI,EAAOA,EAAOliD,KAAKwhB,OAAOs0B,MAAMoM,MAAQliD,KAAKmkL,YAAY,GAAKjiI,EAAOloD,EAAEqqL,KAAK,GAAKniI,EAAOloD,EAAEqqL,KAAK,GAAKniI,IAG3O,CACLxkB,IAEAsZ,EAEAh3C,KAAKwhB,OAAOs0B,MAAMpY,IAElB19B,KAAKwhB,OAAOyd,SAASvB,IAErB19B,KAAKwhB,OAAO4e,OAAO1C,KAA4B,UAArB19B,KAAKghK,aAA2BhhK,KAAKumK,aAAazjH,YAAc0kI,EAAmB,EAAI3b,EAAO/oH,aACxHZ,KAEAnL,EAEA/2C,KAAKwhB,OAAOs0B,MAAMoM,KAElBliD,KAAKwhB,OAAOyd,SAASijB,KAErBliD,KAAKwhB,OAAO4e,OAAO8hB,MAA6B,UAArBliD,KAAKghK,aAA2BhhK,KAAKumK,aAAaxjH,aAAeykI,EAAmB,EAAI3b,EAAO9oH,cAE9H,EACAu7I,WAAY,SAAU3lM,EAAOrC,EAAGiG,EAAGgkM,GAC7BhkM,EACFA,EAAE,GAAG7C,YAAYsG,KAAKusG,YAAY,IAElCj2G,EAAEmvB,KAAK,GAAGuO,WAAW0mB,aAAa16C,KAAKusG,YAAY,GAAuB,SAAnBvsG,KAAKwkB,UAAuBluB,EAAEmvB,KAAK,GAAKnvB,EAAEmvB,KAAK,GAAGoc,aAS3G7hC,KAAKwgM,QAAUxgM,KAAKwgM,UAAYxgM,KAAKwgM,QAAU,EAC/C,IAAIA,EAAUxgM,KAAKwgM,QACnBxgM,KAAKy1J,QAAO,WACN+qC,IAAYxgM,KAAKwgM,SAEnBxgM,KAAKukL,kBAAkBgc,EAE3B,GACF,EACA7wG,OAAQ,SAAU/2F,EAAOkuL,GACvB7mL,KAAK+8L,WAAY,EAIjB,IAAIzmM,EACFmqM,EAAkB,GASpB,IAJKzgM,KAAKw+L,cAAgBx+L,KAAKuoL,YAAYnoJ,SAAS5pC,QAClDwJ,KAAKusG,YAAY5xD,OAAO36C,KAAKuoL,aAE/BvoL,KAAKw+L,aAAe,KAChBx+L,KAAK+1H,OAAO,KAAO/1H,KAAKuoL,YAAY,GAAI,CAC1C,IAAKjyL,KAAK0J,KAAKkoL,WACc,SAAvBloL,KAAKkoL,WAAW5xL,IAAwC,WAAvB0J,KAAKkoL,WAAW5xL,KACnD0J,KAAKkoL,WAAW5xL,GAAK,IAGzB0J,KAAKuoL,YAAYp5I,IAAInvC,KAAKkoL,YAC1BloL,KAAKq0J,aAAar0J,KAAKuoL,YAAa,qBACtC,MACEvoL,KAAKuoL,YAAYr4I,OAmCnB,SAASwwJ,EAAWznM,EAAM6yF,EAAUrvC,GAClC,OAAO,SAAU9jD,GACf8jD,EAAUy3G,SAASj7J,EAAMN,EAAOmzF,EAASi7F,QAAQj7F,GACnD,CACF,CACA,IAtCI9rF,KAAKwoL,cAAgB3B,GACvB4Z,EAAgB3pM,MAAK,SAAU6B,GAC7BqH,KAAKk0J,SAAS,UAAWv7J,EAAOqH,KAAK+mL,QAAQ/mL,KAAKwoL,aACpD,KAEGxoL,KAAKwoL,aAAexoL,KAAKo9L,YAAYz2J,OAAS3mC,KAAKuoL,YAAY5hJ,OAAOhG,IAAI,uBAAuB,IAAM3gC,KAAKo9L,YAAYh9J,SAAWpgC,KAAKuoL,YAAYnoJ,SAAS,IAAQymJ,GAExK4Z,EAAgB3pM,MAAK,SAAU6B,GAC7BqH,KAAKk0J,SAAS,SAAUv7J,EAAOqH,KAAK+mL,UACtC,IAKE/mL,OAASA,KAAKm9L,mBACXtW,IACH4Z,EAAgB3pM,MAAK,SAAU6B,GAC7BqH,KAAKk0J,SAAS,SAAUv7J,EAAOqH,KAAK+mL,UACtC,IACA0Z,EAAgB3pM,KAAK,SAAU+C,GAC7B,OAAO,SAAUlB,GACfkB,EAAEq6J,SAAS,UAAWv7J,EAAOqH,KAAK+mL,QAAQ/mL,MAC5C,CACF,EAAEpJ,KAAKoJ,KAAMA,KAAKm9L,mBAClBsD,EAAgB3pM,KAAK,SAAU+C,GAC7B,OAAO,SAAUlB,GACfkB,EAAEq6J,SAAS,SAAUv7J,EAAOqH,KAAK+mL,QAAQ/mL,MAC3C,CACF,EAAEpJ,KAAKoJ,KAAMA,KAAKm9L,qBAUjB7mM,EAAI0J,KAAK29L,WAAWnnM,OAAS,EAAGF,GAAK,EAAGA,IACtCuwL,GACH4Z,EAAgB3pM,KAAK4pM,EAAW,aAAc1gM,KAAMA,KAAK29L,WAAWrnM,KAElE0J,KAAK29L,WAAWrnM,GAAGgyL,eAAe+L,OACpCoM,EAAgB3pM,KAAK4pM,EAAW,MAAO1gM,KAAMA,KAAK29L,WAAWrnM,KAC7D0J,KAAK29L,WAAWrnM,GAAGgyL,eAAe+L,KAAO,GA6B7C,GAxBIr0L,KAAKs9L,eACPt9L,KAAKhI,SAASwjC,KAAK,QAAQ2T,IAAI,SAAUnvC,KAAKs9L,cAC9Ct9L,KAAKu9L,iBAAiBr0J,UAEpBlpC,KAAKy9L,gBACPz9L,KAAK+1H,OAAO5mF,IAAI,UAAWnvC,KAAKy9L,gBAE9Bz9L,KAAKw9L,eACPx9L,KAAK+1H,OAAO5mF,IAAI,SAAiC,SAAvBnvC,KAAKw9L,cAA2B,GAAKx9L,KAAKw9L,eAEtEx9L,KAAK49L,UAAW,EACX/W,GACH7mL,KAAKk0J,SAAS,aAAcv7J,EAAOqH,KAAK+mL,WAK1C/mL,KAAKusG,YAAY,GAAGv4E,WAAWC,YAAYj0B,KAAKusG,YAAY,IACvDvsG,KAAK4nL,sBACJ5nL,KAAK+1H,OAAO,KAAO/1H,KAAKuoL,YAAY,IACtCvoL,KAAK+1H,OAAO7sF,SAEdlpC,KAAK+1H,OAAS,OAEX8wD,EAAe,CAClB,IAAKvwL,EAAI,EAAGA,EAAImqM,EAAgBjqM,OAAQF,IAEtCmqM,EAAgBnqM,GAAGM,KAAKoJ,KAAMrH,GAEhCqH,KAAKk0J,SAAS,OAAQv7J,EAAOqH,KAAK+mL,UACpC,CAEA,OADA/mL,KAAKwoL,aAAc,GACXxoL,KAAK4nL,mBACf,EACA1zB,SAAU,YACmD,IAAvDz/F,EAAEg+F,OAAO/7J,UAAUw9J,SAASr4J,MAAMmE,KAAMlE,YAC1CkE,KAAK8gG,QAET,EACAimF,QAAS,SAAU4Z,GACjB,IAAI5kC,EAAO4kC,GAAS3gM,KACpB,MAAO,CACL+1H,OAAQgmC,EAAKhmC,OACbxpB,YAAawvD,EAAKxvD,aAAe93C,EAAE,IACnCtX,SAAU4+G,EAAK5+G,SACf8oI,iBAAkBlqB,EAAKkqB,iBACvBzkK,OAAQu6I,EAAKgqB,YACbtgK,KAAMs2I,EAAKwsB,YACXqY,OAAQD,EAAQA,EAAMxpI,QAAU,KAEpC,IAqBF,SAAS0pI,EAAgB1jM,GACvB,OAAO,WACL,IAAIo0F,EAAWvxF,KAAKm3D,QAAQ32D,MAC5BrD,EAAGtB,MAAMmE,KAAMlE,WACfkE,KAAK0nK,WACDn2E,IAAavxF,KAAKm3D,QAAQ32D,OAC5BR,KAAKk0J,SAAS,SAElB,CACF,CACAz/F,EAAE29F,OAAO,aAAc,CACrBpgI,QAAS,SACTyhI,eAAgB,UAChBV,kBAAmB,OACnBn9H,QAAS,CACP4uC,QAAS,CACP,aAAc,gBACd,kBAAmB,eACnB,gBAAiB,gBAEnBs8H,QAAS,KACT/5B,MAAO,CACL7D,KAAM,uBACND,GAAI,wBAEN89B,aAAa,EACbz8L,IAAK,KACLiL,IAAK,KACLyxL,aAAc,KACdC,KAAM,GACNr+I,KAAM,EACN+pH,OAAQ,KACRu0B,KAAM,KACN/gK,MAAO,KACPmO,KAAM,MAER0lH,QAAS,WAEPh0J,KAAKw0J,WAAW,MAAOx0J,KAAK41B,QAAQtxB,KACpCtE,KAAKw0J,WAAW,MAAOx0J,KAAK41B,QAAQrmB,KACpCvP,KAAKw0J,WAAW,OAAQx0J,KAAK41B,QAAQgtB,MAIhB,KAAjB5iD,KAAKzF,SAEPyF,KAAK0gG,OAAO1gG,KAAKm3D,QAAQ32D,OAAO,GAElCR,KAAKmhM,QACLnhM,KAAK8zJ,IAAI9zJ,KAAKohM,SACdphM,KAAK0nK,WAKL1nK,KAAK8zJ,IAAI9zJ,KAAK1E,OAAQ,CACpBy6C,aAAc,WACZ/1C,KAAKm3D,QAAQ/P,WAAW,eAC1B,GAEJ,EACA2sG,kBAAmB,WACjB,IAAIn+H,EAAU51B,KAAKw8D,SACfrF,EAAUn3D,KAAKm3D,QAOnB,OANA1C,EAAEv/B,KAAK,CAAC,MAAO,MAAO,SAAS,SAAU5+B,EAAGw6C,GAC1C,IAAIv2C,EAAQ48D,EAAQx4B,KAAKmS,GACZ,MAATv2C,GAAiBA,EAAM/D,SACzBo/B,EAAQkb,GAAUv2C,EAEtB,IACOq7B,CACT,EACAwrK,QAAS,CACPz4B,QAAS,SAAUhwK,GACbqH,KAAKq6L,OAAO1hM,IAAUqH,KAAK00E,SAAS/7E,IACtCA,EAAM46C,gBAEV,EACA8oJ,MAAO,QACPl7J,MAAO,WACLnhC,KAAKuxF,SAAWvxF,KAAKm3D,QAAQ32D,KAC/B,EACA03C,KAAM,SAAUv/C,GACVqH,KAAKqhM,kBACArhM,KAAKqhM,YAGdrhM,KAAKu6L,QACLv6L,KAAK0nK,WACD1nK,KAAKuxF,WAAavxF,KAAKm3D,QAAQ32D,OACjCR,KAAKk0J,SAAS,SAAUv7J,GAE5B,EACA2oM,WAAY,SAAU3oM,EAAOinD,GAC3B,IAAIxe,EAAgBqzB,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,IAEzD,GADegI,KAAKm3D,QAAQ,KAAO/1B,GACjBwe,EAAlB,CAGA,IAAK5/C,KAAKuhM,WAAavhM,KAAKq6L,OAAO1hM,GACjC,OAAO,EAETqH,KAAKwhM,OAAO5hJ,EAAQ,EAAI,GAAK,GAAK5/C,KAAK41B,QAAQgtB,KAAMjqD,GACrDG,aAAakH,KAAKyhM,iBAClBzhM,KAAKyhM,gBAAkBzhM,KAAKy1J,QAAO,WAC7Bz1J,KAAKuhM,UACPvhM,KAAKu6L,MAAM5hM,EAEf,GAAG,KACHA,EAAM46C,gBAXN,CAYF,EACA,+BAAgC,SAAU56C,GACxC,IAAI44F,EAQJ,SAASmwG,IACQ1hM,KAAKm3D,QAAQ,KAAO1C,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,MAEtEgI,KAAKm3D,QAAQ3jB,QAAQ,SACrBxzC,KAAKuxF,SAAWA,EAKhBvxF,KAAKy1J,QAAO,WACVz1J,KAAKuxF,SAAWA,CAClB,IAEJ,CAdAA,EAAWvxF,KAAKm3D,QAAQ,KAAO1C,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,IAAMgI,KAAKuxF,SAAWvxF,KAAKm3D,QAAQ32D,MAiBvG7H,EAAM46C,iBACNmuJ,EAAW9qM,KAAKoJ,MAMhBA,KAAKqhM,YAAa,EAClBrhM,KAAKy1J,QAAO,kBACHz1J,KAAKqhM,WACZK,EAAW9qM,KAAKoJ,KAClB,KAC2B,IAAvBA,KAAKq6L,OAAO1hM,IAGhBqH,KAAK2hM,QAAQ,KAAMltI,EAAE97D,EAAMu8C,eAAeuT,SAAS,iBAAmB,GAAK,EAAG9vD,EAChF,EACA,6BAA8B,QAC9B,gCAAiC,SAAUA,GAEzC,GAAK87D,EAAE97D,EAAMu8C,eAAeuT,SAAS,mBAGrC,OAA2B,IAAvBzoD,KAAKq6L,OAAO1hM,SAGhBqH,KAAK2hM,QAAQ,KAAMltI,EAAE97D,EAAMu8C,eAAeuT,SAAS,iBAAmB,GAAK,EAAG9vD,EAChF,EAIA,gCAAiC,SAGnCi3K,SAAU,WACR5vK,KAAK4hM,UAAY5hM,KAAKm3D,QAAQx4B,KAAK,eAAgB,OAAOuT,KAAK,UAAU9R,SAGxEoa,OAAO,iBACV,EACA2mJ,MAAO,WACLnhM,KAAK4vK,WACL5vK,KAAKq1J,UAAUr1J,KAAK4hM,UAAW,aAAc,+BAC7C5hM,KAAKq1J,UAAU,oBACfr1J,KAAKm3D,QAAQx4B,KAAK,OAAQ,cAG1B3+B,KAAKq3C,QAAUr3C,KAAK4hM,UAAUn7J,SAAS,KAAK9H,KAAK,YAAa,GAAGA,KAAK,eAAe,GAAMoD,OAAO,CAChGyiC,QAAS,CACP,YAAa,MAKjBxkE,KAAKq0J,aAAar0J,KAAKq3C,QAAS,iBAChCr3C,KAAKq1J,UAAUr1J,KAAKq3C,QAAQliB,QAAS,mCACrCn1B,KAAKq1J,UAAUr1J,KAAKq3C,QAAQhiB,OAAQ,qCACpCr1B,KAAKq3C,QAAQliB,QAAQ4M,OAAO,CAC1B,KAAQ/hC,KAAK41B,QAAQmxI,MAAM9D,GAC3B,WAAa,IAEfjjK,KAAKq3C,QAAQhiB,OAAO0M,OAAO,CACzB,KAAQ/hC,KAAK41B,QAAQmxI,MAAM7D,KAC3B,WAAa,IAKXljK,KAAKq3C,QAAQ6G,SAAWh6C,KAAKuF,KAA+B,GAA1BzJ,KAAK4hM,UAAU1jJ,WAAmBl+C,KAAK4hM,UAAU1jJ,SAAW,GAChGl+C,KAAK4hM,UAAU1jJ,OAAOl+C,KAAK4hM,UAAU1jJ,SAEzC,EACAw2B,SAAU,SAAU/7E,GAClB,IAAIi9B,EAAU51B,KAAK41B,QACjBwhB,EAAUqd,EAAEu9F,GAAG56G,QACjB,OAAQz+C,EAAMy+C,SACZ,KAAKA,EAAQivH,GAEX,OADArmK,KAAK2hM,QAAQ,KAAM,EAAGhpM,IACf,EACT,KAAKy+C,EAAQ2uH,KAEX,OADA/lK,KAAK2hM,QAAQ,MAAO,EAAGhpM,IAChB,EACT,KAAKy+C,EAAQ+uH,QAEX,OADAnmK,KAAK2hM,QAAQ,KAAM/rK,EAAQqrK,KAAMtoM,IAC1B,EACT,KAAKy+C,EAAQ8uH,UAEX,OADAlmK,KAAK2hM,QAAQ,MAAO/rK,EAAQqrK,KAAMtoM,IAC3B,EAEX,OAAO,CACT,EACA0hM,OAAQ,SAAU1hM,GAChB,SAAKqH,KAAKuhM,WAA8C,IAAlCvhM,KAAKk0J,SAAS,QAASv7J,MAGxCqH,KAAKwgM,UACRxgM,KAAKwgM,QAAU,GAEjBxgM,KAAKuhM,UAAW,GACT,EACT,EACAI,QAAS,SAAUrrM,EAAGurM,EAAOlpM,GAC3BrC,EAAIA,GAAK,IACTwC,aAAakH,KAAKglD,OAClBhlD,KAAKglD,MAAQhlD,KAAKy1J,QAAO,WACvBz1J,KAAK2hM,QAAQ,GAAIE,EAAOlpM,EAC1B,GAAGrC,GACH0J,KAAKwhM,MAAMK,EAAQ7hM,KAAK41B,QAAQgtB,KAAMjqD,EACxC,EACA6oM,MAAO,SAAU5+I,EAAMjqD,GACrB,IAAI4B,EAAQyF,KAAKzF,SAAW,EACvByF,KAAKwgM,UACRxgM,KAAKwgM,QAAU,GAEjBjmM,EAAQyF,KAAK8hM,aAAavnM,EAAQqoD,EAAO5iD,KAAK+hM,WAAW/hM,KAAKwgM,UACzDxgM,KAAKuhM,WAEH,IAFevhM,KAAKk0J,SAAS,OAAQv7J,EAAO,CACjD4B,MAAOA,MAEPyF,KAAK0gG,OAAOnmG,GACZyF,KAAKwgM,UAET,EACAuB,WAAY,SAAUzrM,GACpB,IAAIyqM,EAAc/gM,KAAK41B,QAAQmrK,YAC/B,OAAIA,EAC4B,oBAAhBA,EAA6BA,EAAYzqM,GAAK4N,KAAKwF,MAAMpT,EAAIA,EAAIA,EAAI,IAAQA,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAEnH,CACT,EACAolM,WAAY,WACV,IAAIC,EAAY37L,KAAK47L,aAAa57L,KAAK41B,QAAQgtB,MAI/C,OAHyB,OAArB5iD,KAAK41B,QAAQrmB,MACfosL,EAAYz3L,KAAKI,IAAIq3L,EAAW37L,KAAK47L,aAAa57L,KAAK41B,QAAQrmB,OAE1DosL,CACT,EACAC,aAAc,SAAU/mK,GACtB,IAAIw1F,EAAMx1F,EAAIz4B,WACZy/L,EAAUxxE,EAAIv9G,QAAQ,KACxB,OAAoB,IAAb+uL,EAAiB,EAAIxxE,EAAI7zH,OAASqlM,EAAU,CACrD,EACAiG,aAAc,SAAUvnM,GACtB,IAAI6pB,EACF49K,EACApsK,EAAU51B,KAAK41B,QAiBjB,OAZAosK,EAAWznM,GADX6pB,EAAuB,OAAhBwR,EAAQrmB,IAAeqmB,EAAQrmB,IAAM,GAO5ChV,EAAQ6pB,GAHR49K,EAAW99L,KAAK+c,MAAM+gL,EAAWpsK,EAAQgtB,MAAQhtB,EAAQgtB,MAMzDroD,EAAQulB,WAAWvlB,EAAMs3B,QAAQ7xB,KAAK07L,eAGlB,OAAhB9lK,EAAQtxB,KAAgB/J,EAAQq7B,EAAQtxB,IACnCsxB,EAAQtxB,IAEG,OAAhBsxB,EAAQrmB,KAAgBhV,EAAQq7B,EAAQrmB,IACnCqmB,EAAQrmB,IAEVhV,CACT,EACAggM,MAAO,SAAU5hM,GACVqH,KAAKuhM,WAGVzoM,aAAakH,KAAKglD,OAClBlsD,aAAakH,KAAKyhM,iBAClBzhM,KAAKwgM,QAAU,EACfxgM,KAAKuhM,UAAW,EAChBvhM,KAAKk0J,SAAS,OAAQv7J,GACxB,EACA67J,WAAY,SAAU35J,EAAKN,GACzB,IAAI0nM,EAAW9sK,EAAOE,EACtB,GAAY,YAARx6B,GAA6B,iBAARA,EAIvB,OAHAonM,EAAYjiM,KAAKkiM,OAAOliM,KAAKm3D,QAAQ32D,OACrCR,KAAK41B,QAAQ/6B,GAAON,OACpByF,KAAKm3D,QAAQ32D,IAAIR,KAAKmiM,QAAQF,IAGpB,QAARpnM,GAAyB,QAARA,GAAyB,SAARA,GACf,kBAAVN,IACTA,EAAQyF,KAAKkiM,OAAO3nM,IAGZ,UAARM,IACFs6B,EAAQn1B,KAAKq3C,QAAQliB,QAAQqG,KAAK,YAClCx7B,KAAKq0J,aAAal/H,EAAO,KAAMn1B,KAAK41B,QAAQmxI,MAAM9D,IAClDjjK,KAAKq1J,UAAUlgI,EAAO,KAAM56B,EAAM0oK,IAClC5tI,EAAOr1B,KAAKq3C,QAAQhiB,OAAOmG,KAAK,YAChCx7B,KAAKq0J,aAAah/H,EAAM,KAAMr1B,KAAK41B,QAAQmxI,MAAM7D,MACjDljK,KAAKq1J,UAAUhgI,EAAM,KAAM96B,EAAM2oK,OAEnCljK,KAAKw8D,OAAO3hE,EAAKN,EACnB,EACA05J,mBAAoB,SAAU15J,GAC5ByF,KAAKw8D,OAAOjiE,GACZyF,KAAK60J,aAAa70J,KAAK4hM,UAAW,KAAM,sBAAuBrnM,GAC/DyF,KAAKm3D,QAAQ52D,KAAK,aAAchG,GAChCyF,KAAKq3C,QAAQtV,OAAOxnC,EAAQ,UAAY,SAC1C,EACAg6J,YAAassC,GAAgB,SAAUjrK,GACrC51B,KAAKw8D,OAAO5mC,EACd,IACAssK,OAAQ,SAAU1hM,GAIhB,MAHmB,kBAARA,GAA4B,KAARA,IAC7BA,EAAMlF,OAAO8mM,WAAapiM,KAAK41B,QAAQorK,aAAeoB,UAAUtiL,WAAWtf,EAAK,GAAIR,KAAK41B,QAAQkrK,UAAYtgM,GAEhG,KAARA,GAAclB,MAAMkB,GAAO,KAAOA,CAC3C,EACA2hM,QAAS,SAAU5nM,GACjB,MAAc,KAAVA,EACK,GAEFe,OAAO8mM,WAAapiM,KAAK41B,QAAQorK,aAAeoB,UAAU3kM,OAAOlD,EAAOyF,KAAK41B,QAAQorK,aAAchhM,KAAK41B,QAAQkrK,SAAWvmM,CACpI,EACAmtK,SAAU,WACR1nK,KAAKm3D,QAAQx4B,KAAK,CAChB,gBAAiB3+B,KAAK41B,QAAQrmB,IAC9B,gBAAiBvP,KAAK41B,QAAQtxB,IAE9B,gBAAiBtE,KAAKkiM,OAAOliM,KAAKm3D,QAAQ32D,QAE9C,EACAvB,QAAS,WACP,IAAI1E,EAAQyF,KAAKzF,QAGjB,OAAc,OAAVA,GAKGA,IAAUyF,KAAK8hM,aAAavnM,EACrC,EAEAmmG,OAAQ,SAAUnmG,EAAO8nM,GACvB,IAAIlwI,EACU,KAAV53D,GAEa,QADf43D,EAASnyD,KAAKkiM,OAAO3nM,MAEd8nM,IACHlwI,EAASnyD,KAAK8hM,aAAa3vI,IAE7B53D,EAAQyF,KAAKmiM,QAAQhwI,IAGzBnyD,KAAKm3D,QAAQ32D,IAAIjG,GACjByF,KAAK0nK,UACP,EACAtT,SAAU,WACRp0J,KAAKm3D,QAAQ52D,KAAK,YAAY,GAAO6mD,WAAW,+DAChDpnD,KAAK4hM,UAAU/mJ,YAAY76C,KAAKm3D,QAClC,EACAmrI,OAAQzB,GAAgB,SAAUgB,GAChC7hM,KAAKuiM,QAAQV,EACf,IACAU,QAAS,SAAUV,GACb7hM,KAAKq6L,WACPr6L,KAAKwhM,OAAOK,GAAS,GAAK7hM,KAAK41B,QAAQgtB,MACvC5iD,KAAKu6L,QAET,EACAiI,SAAU3B,GAAgB,SAAUgB,GAClC7hM,KAAKyiM,UAAUZ,EACjB,IACAY,UAAW,SAAUZ,GACf7hM,KAAKq6L,WACPr6L,KAAKwhM,OAAOK,GAAS,IAAM7hM,KAAK41B,QAAQgtB,MACxC5iD,KAAKu6L,QAET,EACAmI,OAAQ7B,GAAgB,SAAU8B,GAChC3iM,KAAKuiM,SAASI,GAAS,GAAK3iM,KAAK41B,QAAQqrK,KAC3C,IACA2B,SAAU/B,GAAgB,SAAU8B,GAClC3iM,KAAKyiM,WAAWE,GAAS,GAAK3iM,KAAK41B,QAAQqrK,KAC7C,IACA1mM,MAAO,SAAU0gM,GACf,IAAKn/L,UAAUtF,OACb,OAAOwJ,KAAKkiM,OAAOliM,KAAKm3D,QAAQ32D,OAElCqgM,EAAgB7gM,KAAK0gG,QAAQ9pG,KAAKoJ,KAAMi7L,EAC1C,EACA7oC,OAAQ,WACN,OAAOpyJ,KAAK4hM,SACd,KAKqB,IAAnBntI,EAAEyrG,cAEJzrG,EAAE29F,OAAO,aAAc39F,EAAEu9F,GAAG6wC,QAAS,CACnCjzB,SAAU,WACR5vK,KAAK4hM,UAAY5hM,KAAKm3D,QAAQx4B,KAAK,eAAgB,OAAOuT,KAAKlyC,KAAK8iM,kBAAkB1iK,SAGrFoa,OAAOx6C,KAAK+iM,cACf,EACAD,eAAgB,WACd,MAAO,QACT,EACAC,YAAa,WACX,MAAO,gBACT,IAGiBtuI,EAAEu9F,GAAG6wC,QAoB1BpuI,EAAE29F,OAAO,UAAW,CAClBpgI,QAAS,SACT+0B,MAAO,IACPnxB,QAAS,CACPi2B,OAAQ,KACR2Y,QAAS,CACP,UAAW,gBACX,cAAe,gBACf,gBAAiB,mBACjB,cAAe,iBAEjBqiG,aAAa,EACbluK,MAAO,QACPmuK,YAAa,UACb32H,KAAM,KACND,KAAM,KAEN+2H,SAAU,KACVC,eAAgB,KAChB87B,WAAY,KACZptJ,KAAM,MAERqtJ,SAAU,WACR,IAAI14I,EAAQ,OACZ,OAAO,SAAUrjC,GACf,IAAI6qG,EAAWmxE,EACfnxE,EAAY7qG,EAAOqa,KAAKn8B,QAAQmlD,EAAO,IACvC24I,EAAcjiK,SAASM,KAAKn8B,QAAQmlD,EAAO,IAG3C,IACEwnE,EAAYzsB,mBAAmBysB,EACjC,CAAE,MAAOt5H,GAAQ,CACjB,IACEyqM,EAAc59F,mBAAmB49F,EACnC,CAAE,MAAOzqM,GAAQ,CACjB,OAAOyuB,EAAO8Z,KAAKxqC,OAAS,GAAKu7H,IAAcmxE,CACjD,CACF,CAhBU,GAiBVlvC,QAAS,WACP,IAAIltI,EAAO9mB,KACT41B,EAAU51B,KAAK41B,QACjB51B,KAAKmjM,SAAU,EACfnjM,KAAKq1J,UAAU,UAAW,+BAC1Br1J,KAAK60J,aAAa,sBAAuB,KAAMj/H,EAAQixI,aACvD7mK,KAAKojM,eACLxtK,EAAQi2B,OAAS7rD,KAAKqjM,iBAIlBlnM,MAAMF,QAAQ25B,EAAQyF,YACxBzF,EAAQyF,SAAWo5B,EAAE51B,WAAWjJ,EAAQyF,SAASxoB,OAAO4hD,EAAEx3D,IAAI+C,KAAKsjM,KAAK99K,OAAO,uBAAuB,SAAUm/D,GAC9G,OAAO79D,EAAKw8K,KAAKt1K,MAAM22D,EACzB,MAAKt7E,SAIqB,IAAxBrJ,KAAK41B,QAAQi2B,QAAoB7rD,KAAKujM,QAAQ/sM,OAChDwJ,KAAK6rD,OAAS7rD,KAAKuoK,YAAY3yI,EAAQi2B,QAEvC7rD,KAAK6rD,OAAS4I,IAEhBz0D,KAAK0nK,WACD1nK,KAAK6rD,OAAOr1D,QACdwJ,KAAK41C,KAAKhgB,EAAQi2B,OAEtB,EACAw3I,eAAgB,WACd,IAAIx3I,EAAS7rD,KAAK41B,QAAQi2B,OACxBg7G,EAAc7mK,KAAK41B,QAAQixI,YAC3B28B,EAAeviK,SAASD,KAAKmpF,UAAU,GAmCzC,OAlCe,OAAXt+D,IAEE23I,GACFxjM,KAAKsjM,KAAKpuK,MAAK,SAAU5+B,EAAGmtM,GAC1B,GAAIhvI,EAAEgvI,GAAK9kK,KAAK,mBAAqB6kK,EAEnC,OADA33I,EAASv1D,GACF,CAEX,IAIa,OAAXu1D,IACFA,EAAS7rD,KAAKsjM,KAAKt1K,MAAMhuB,KAAKsjM,KAAK99K,OAAO,qBAI7B,OAAXqmC,IAA+B,IAAZA,IACrBA,IAAS7rD,KAAKsjM,KAAK9sM,QAAS,KAKjB,IAAXq1D,IAEc,KADhBA,EAAS7rD,KAAKsjM,KAAKt1K,MAAMhuB,KAAKsjM,KAAKluK,GAAGy2B,OAEpCA,GAASg7G,GAAsB,IAK9BA,IAA0B,IAAXh7G,GAAoB7rD,KAAKujM,QAAQ/sM,SACnDq1D,EAAS,GAEJA,CACT,EACAsoG,oBAAqB,WACnB,MAAO,CACLsvC,IAAKzjM,KAAK6rD,OACV87G,MAAQ3nK,KAAK6rD,OAAOr1D,OAAewJ,KAAK0jM,gBAAgB1jM,KAAK6rD,QAAhC4I,IAEjC,EACAkvI,YAAa,SAAUhrM,GACrB,IAAIirM,EAAanvI,EAAEA,EAAEu9F,GAAG3wH,kBAAkBrhC,KAAKhI,SAAS,KAAK+uC,QAAQ,MACnEnF,EAAgB5hC,KAAKsjM,KAAKt1K,MAAM41K,GAChCC,GAAe,EACjB,IAAI7jM,KAAK8jM,eAAenrM,GAAxB,CAGA,OAAQA,EAAMy+C,SACZ,KAAKqd,EAAEu9F,GAAG56G,QAAQswC,MAClB,KAAKjzB,EAAEu9F,GAAG56G,QAAQ2uH,KAChBnkI,IACA,MACF,KAAK6yB,EAAEu9F,GAAG56G,QAAQivH,GAClB,KAAK5xG,EAAEu9F,GAAG56G,QAAQwwC,KAChBi8G,GAAe,EACfjiK,IACA,MACF,KAAK6yB,EAAEu9F,GAAG56G,QAAQ4uH,IAChBpkI,EAAgB5hC,KAAKujM,QAAQ/sM,OAAS,EACtC,MACF,KAAKi+D,EAAEu9F,GAAG56G,QAAQ6uH,KAChBrkI,EAAgB,EAChB,MACF,KAAK6yB,EAAEu9F,GAAG56G,QAAQ21E,MAKhB,OAHAp0H,EAAM46C,iBACNz6C,aAAakH,KAAK+jM,iBAClB/jM,KAAKyvF,UAAU7tD,GAEjB,KAAK6yB,EAAEu9F,GAAG56G,QAAQy1E,MAOhB,OALAl0H,EAAM46C,iBACNz6C,aAAakH,KAAK+jM,iBAGlB/jM,KAAKyvF,UAAU7tD,IAAkB5hC,KAAK41B,QAAQi2B,QAAiBjqB,GAEjE,QACE,OAIJjpC,EAAM46C,iBACNz6C,aAAakH,KAAK+jM,YAClBniK,EAAgB5hC,KAAKgkM,cAAcpiK,EAAeiiK,GAG7ClrM,EAAMg+C,SAAYh+C,EAAMm+C,UAI3B8sJ,EAAWjlK,KAAK,gBAAiB,SACjC3+B,KAAKsjM,KAAKluK,GAAGwM,GAAejD,KAAK,gBAAiB,QAClD3+B,KAAK+jM,WAAa/jM,KAAKy1J,QAAO,WAC5Bz1J,KAAK8wC,OAAO,SAAUlP,EACxB,GAAG5hC,KAAK+mD,OAjDV,CAmDF,EACAk9I,cAAe,SAAUtrM,GACnBqH,KAAK8jM,eAAenrM,IAKpBA,EAAMg+C,SAAWh+C,EAAMy+C,UAAYqd,EAAEu9F,GAAG56G,QAAQivH,KAClD1tK,EAAM46C,iBACNvzC,KAAK6rD,OAAOrY,QAAQ,SAExB,EAEAswJ,eAAgB,SAAUnrM,GACxB,OAAIA,EAAM49C,QAAU59C,EAAMy+C,UAAYqd,EAAEu9F,GAAG56G,QAAQ+uH,SACjDnmK,KAAKyvF,UAAUzvF,KAAKgkM,cAAchkM,KAAK41B,QAAQi2B,OAAS,GAAG,KACpD,GAELlzD,EAAM49C,QAAU59C,EAAMy+C,UAAYqd,EAAEu9F,GAAG56G,QAAQ8uH,WACjDlmK,KAAKyvF,UAAUzvF,KAAKgkM,cAAchkM,KAAK41B,QAAQi2B,OAAS,GAAG,KACpD,QAFT,CAIF,EACAq4I,aAAc,SAAUl2K,EAAO61K,GAC7B,IAAIM,EAAenkM,KAAKsjM,KAAK9sM,OAAS,EACtC,SAAS4tM,IAOP,OANIp2K,EAAQm2K,IACVn2K,EAAQ,GAENA,EAAQ,IACVA,EAAQm2K,GAEHn2K,CACT,CACA,MAA0D,IAAnDymC,EAAE59B,QAAQutK,IAAapkM,KAAK41B,QAAQyF,WACzCrN,EAAQ61K,EAAe71K,EAAQ,EAAIA,EAAQ,EAE7C,OAAOA,CACT,EACAg2K,cAAe,SAAUh2K,EAAO61K,GAG9B,OAFA71K,EAAQhuB,KAAKkkM,aAAal2K,EAAO61K,GACjC7jM,KAAKsjM,KAAKluK,GAAGpH,GAAOwlB,QAAQ,SACrBxlB,CACT,EACAwmI,WAAY,SAAU35J,EAAKN,GACb,WAARM,GAKJmF,KAAKw8D,OAAO3hE,EAAKN,GACL,gBAARM,IACFmF,KAAK60J,aAAa,sBAAuB,KAAMt6J,GAG1CA,IAAiC,IAAxByF,KAAK41B,QAAQi2B,QACzB7rD,KAAKyvF,UAAU,IAGP,UAAR50F,GACFmF,KAAK+nK,aAAaxtK,GAER,gBAARM,GACFmF,KAAKqkM,kBAAkB9pM,IAhBvByF,KAAKyvF,UAAUl1F,EAkBnB,EACA+pM,kBAAmB,SAAUtjK,GAC3B,OAAOA,EAAOA,EAAK57B,QAAQ,sCAAuC,QAAU,EAC9E,EACAwzD,QAAS,WACP,IAAIhjC,EAAU51B,KAAK41B,QACjB2uK,EAAMvkM,KAAKwkM,QAAQ/9J,SAAS,iBAI9B7Q,EAAQyF,SAAWo5B,EAAEx3D,IAAIsnM,EAAI/+K,OAAO,uBAAuB,SAAUi+K,GACnE,OAAOc,EAAIv2K,MAAMy1K,EACnB,IACAzjM,KAAKojM,gBAGkB,IAAnBxtK,EAAQi2B,QAAqB7rD,KAAKujM,QAAQ/sM,OAKnCwJ,KAAK6rD,OAAOr1D,SAAWi+D,EAAE/8B,SAAS13B,KAAKwkM,QAAQ,GAAIxkM,KAAK6rD,OAAO,IAEpE7rD,KAAKsjM,KAAK9sM,SAAWo/B,EAAQyF,SAAS7kC,QACxCo/B,EAAQi2B,QAAS,EACjB7rD,KAAK6rD,OAAS4I,KAIdz0D,KAAKyvF,UAAUzvF,KAAKkkM,aAAahgM,KAAKI,IAAI,EAAGsxB,EAAQi2B,OAAS,IAAI,IAMpEj2B,EAAQi2B,OAAS7rD,KAAKsjM,KAAKt1K,MAAMhuB,KAAK6rD,SAlBtCj2B,EAAQi2B,QAAS,EACjB7rD,KAAK6rD,OAAS4I,KAmBhBz0D,KAAK0nK,UACP,EACAA,SAAU,WACR1nK,KAAKi0J,mBAAmBj0J,KAAK41B,QAAQyF,UACrCr7B,KAAK+nK,aAAa/nK,KAAK41B,QAAQj9B,OAC/BqH,KAAKqkM,kBAAkBrkM,KAAK41B,QAAQkxI,aACpC9mK,KAAKsjM,KAAK3iK,IAAI3gC,KAAK6rD,QAAQltB,KAAK,CAC9B,gBAAiB,QACjB,gBAAiB,QACjB6C,UAAW,IAEbxhC,KAAKqoK,OAAO1nI,IAAI3gC,KAAK0jM,gBAAgB1jM,KAAK6rD,SAAS1b,OAAOxR,KAAK,CAC7D,cAAe,SAIZ3+B,KAAK6rD,OAAOr1D,QAGfwJ,KAAK6rD,OAAOltB,KAAK,CACf,gBAAiB,OACjB,gBAAiB,OACjB6C,SAAU,IAEZxhC,KAAKq1J,UAAUr1J,KAAK6rD,OAAQ,iBAAkB,mBAC9C7rD,KAAK0jM,gBAAgB1jM,KAAK6rD,QAAQ3b,OAAOvR,KAAK,CAC5C,cAAe,WATjB3+B,KAAKsjM,KAAKluK,GAAG,GAAGuJ,KAAK,WAAY,EAYrC,EACAykK,aAAc,WACZ,IAAIt8K,EAAO9mB,KACTykM,EAAWzkM,KAAKsjM,KAChBoB,EAAc1kM,KAAKujM,QACnBn7B,EAAapoK,KAAKqoK,OACpBroK,KAAKwkM,QAAUxkM,KAAK2kM,WAAWhmK,KAAK,OAAQ,WAC5C3+B,KAAKq1J,UAAUr1J,KAAKwkM,QAAS,cAAe,uDAG5CxkM,KAAKwkM,QAAQ7xJ,GAAG,YAAc3yC,KAAK0zJ,eAAgB,QAAQ,SAAU/6J,GAC/D87D,EAAEz0D,MAAM6lC,GAAG,uBACbltC,EAAM46C,gBAEV,IAQCZ,GAAG,QAAU3yC,KAAK0zJ,eAAgB,mBAAmB,WAChDj/F,EAAEz0D,MAAM+mC,QAAQ,MAAMlB,GAAG,uBAC3B7lC,KAAKk4C,MAET,IACAl4C,KAAKsjM,KAAOtjM,KAAKwkM,QAAQhpK,KAAK,qBAAqBmD,KAAK,CACtDorI,KAAM,MACNvoI,UAAW,IAEbxhC,KAAKq1J,UAAUr1J,KAAKsjM,KAAM,cAAe,oBACzCtjM,KAAKujM,QAAUvjM,KAAKsjM,KAAKrmM,KAAI,WAC3B,OAAOw3D,EAAE,IAAKz0D,MAAM,EACtB,IAAG2+B,KAAK,CACN6C,UAAW,IAEbxhC,KAAKq1J,UAAUr1J,KAAKujM,QAAS,kBAC7BvjM,KAAKqoK,OAAS5zG,IACdz0D,KAAKujM,QAAQruK,MAAK,SAAU5+B,EAAG4wB,GAC7B,IAAImN,EACFszI,EACAc,EACAm8B,EAAWnwI,EAAEvtC,GAAQorH,WAAW3zG,KAAK,MACrC8kK,EAAMhvI,EAAEvtC,GAAQ6f,QAAQ,MACxB89J,EAAuBpB,EAAI9kK,KAAK,iBAG9B7X,EAAKm8K,SAAS/7K,IAEhBuhJ,GADAp0I,EAAWnN,EAAO8Z,MACCmpF,UAAU,GAC7Bw9C,EAAQ7gJ,EAAKqwC,QAAQ37B,KAAK1U,EAAKw9K,kBAAkBjwK,MAOjDA,EAAW,KADXo0I,EAAUg7B,EAAI9kK,KAAK,kBAAoB81B,EAAE,CAAC,GAAG69E,WAAW,GAAGv2G,KAE3D4rI,EAAQ7gJ,EAAKqwC,QAAQ37B,KAAKnH,IACf79B,SACTmxK,EAAQ7gJ,EAAKg+K,aAAar8B,IACpBxtH,YAAYn0B,EAAKuhJ,OAAO/xK,EAAI,IAAMwwB,EAAK09K,SAE/C78B,EAAMhpI,KAAK,YAAa,WAEtBgpI,EAAMnxK,SACRswB,EAAKuhJ,OAASvhJ,EAAKuhJ,OAAO/1J,IAAIq1J,IAE5Bk9B,GACFpB,EAAIxtM,KAAK,wBAAyB4uM,GAEpCpB,EAAI9kK,KAAK,CACP,gBAAiB8pI,EACjB,kBAAmBm8B,IAErBj9B,EAAMhpI,KAAK,kBAAmBimK,EAChC,IACA5kM,KAAKqoK,OAAO1pI,KAAK,OAAQ,YACzB3+B,KAAKq1J,UAAUr1J,KAAKqoK,OAAQ,gBAAiB,qBAGzCo8B,IACFzkM,KAAKo1J,KAAKqvC,EAAS9jK,IAAI3gC,KAAKsjM,OAC5BtjM,KAAKo1J,KAAKsvC,EAAY/jK,IAAI3gC,KAAKujM,UAC/BvjM,KAAKo1J,KAAKgT,EAAWznI,IAAI3gC,KAAKqoK,SAElC,EAEAs8B,SAAU,WACR,OAAO3kM,KAAKwkM,SAAWxkM,KAAKm3D,QAAQ37B,KAAK,UAAUpG,GAAG,EACxD,EACA0vK,aAAc,SAAU/oK,GACtB,OAAO04B,EAAE,SAAS91B,KAAK,KAAM5C,GAAI9lC,KAAK,mBAAmB,EAC3D,EACAg+J,mBAAoB,SAAU54H,GAC5B,IAAIktJ,EAAa5jG,EAAIruF,EAUrB,IATI6F,MAAMF,QAAQo/B,KACXA,EAAS7kC,OAEH6kC,EAAS7kC,SAAWwJ,KAAKujM,QAAQ/sM,SAC1C6kC,GAAW,GAFXA,GAAW,GAOV/kC,EAAI,EAAGquF,EAAK3kF,KAAKsjM,KAAKhtM,GAAIA,IAC7BiyL,EAAc9zH,EAAEkwB,IACC,IAAbtpD,IAAiD,IAA5Bo5B,EAAE59B,QAAQvgC,EAAG+kC,IACpCktJ,EAAY5pJ,KAAK,gBAAiB,QAClC3+B,KAAKq1J,UAAUkzB,EAAa,KAAM,uBAElCA,EAAYnhI,WAAW,iBACvBpnD,KAAKq0J,aAAak0B,EAAa,KAAM,sBAGzCvoL,KAAK41B,QAAQyF,SAAWA,EACxBr7B,KAAK60J,aAAa70J,KAAKoyJ,SAAUpyJ,KAAKizJ,eAAiB,YAAa,MAAmB,IAAb53H,EAC5E,EACA0sI,aAAc,SAAUpvK,GACtB,IAAIi7C,EAAS,CAAC,EACVj7C,GACF87D,EAAEv/B,KAAKv8B,EAAMsV,MAAM,MAAM,SAAU+f,EAAO6mC,GACxCjhB,EAAOihB,GAAa,eACtB,IAEF70D,KAAKo1J,KAAKp1J,KAAKujM,QAAQjxL,IAAItS,KAAKsjM,MAAMhxL,IAAItS,KAAKqoK,SAG/CroK,KAAK8zJ,KAAI,EAAM9zJ,KAAKujM,QAAS,CAC3BztJ,MAAO,SAAUn9C,GACfA,EAAM46C,gBACR,IAEFvzC,KAAK8zJ,IAAI9zJ,KAAKujM,QAAS3vJ,GACvB5zC,KAAK8zJ,IAAI9zJ,KAAKsjM,KAAM,CAClB36B,QAAS,gBAEX3oK,KAAK8zJ,IAAI9zJ,KAAKqoK,OAAQ,CACpBM,QAAS,kBAEX3oK,KAAK21J,WAAW31J,KAAKsjM,MACrBtjM,KAAK01J,WAAW11J,KAAKsjM,KACvB,EACAe,kBAAmB,SAAUv9B,GAC3B,IAAIwB,EACFloI,EAASpgC,KAAKm3D,QAAQ/2B,SACJ,SAAhB0mI,GACFwB,EAAYloI,EAAO8d,SACnBoqH,GAAatoK,KAAKm3D,QAAQ2/F,cAAgB92J,KAAKm3D,QAAQjZ,SACvDl+C,KAAKm3D,QAAQrxB,SAAS,YAAY5Q,MAAK,WACrC,IAAIR,EAAO+/B,EAAEz0D,MACXm9C,EAAWzoB,EAAKya,IAAI,YACL,aAAbgO,GAAwC,UAAbA,IAG/BmrH,GAAa5zI,EAAKoiI,aAAY,GAChC,IACA92J,KAAKm3D,QAAQ1wB,WAAW9F,IAAI3gC,KAAKqoK,QAAQnzI,MAAK,WAC5CozI,GAAa7zG,EAAEz0D,MAAM82J,aAAY,EACnC,IACA92J,KAAKqoK,OAAOnzI,MAAK,WACfu/B,EAAEz0D,MAAMk+C,OAAOh6C,KAAKI,IAAI,EAAGgkK,EAAY7zG,EAAEz0D,MAAMuvF,cAAgB96B,EAAEz0D,MAAMk+C,UACzE,IAAG/O,IAAI,WAAY,SACM,SAAhB23H,IACTwB,EAAY,EACZtoK,KAAKqoK,OAAOnzI,MAAK,WACfozI,EAAYpkK,KAAKI,IAAIgkK,EAAW7zG,EAAEz0D,MAAMk+C,OAAO,IAAIA,SACrD,IAAGA,OAAOoqH,GAEd,EACAL,cAAe,SAAUtvK,GACvB,IAAIi9B,EAAU51B,KAAK41B,QACjBi2B,EAAS7rD,KAAK6rD,OAEd43I,EADShvI,EAAE97D,EAAMu8C,eACJnO,QAAQ,MACrBgiI,EAAkB06B,EAAI,KAAO53I,EAAO,GACpCm9G,EAAaD,GAAmBnzI,EAAQixI,YACxCoC,EAASD,EAAav0G,IAAMz0D,KAAK0jM,gBAAgBD,GACjDv6B,EAAUr9G,EAAOr1D,OAAewJ,KAAK0jM,gBAAgB73I,GAA3B4I,IAC1B00G,EAAY,CACV47B,OAAQl5I,EACRw9G,SAAUH,EACV87B,OAAQh8B,EAAav0G,IAAMgvI,EAC3Bl6B,SAAUN,GAEdtwK,EAAM46C,iBACFkwJ,EAAIh7I,SAAS,sBAEjBg7I,EAAIh7I,SAAS,oBAEbzoD,KAAKmjM,SAELp6B,IAAoBnzI,EAAQixI,cAE0B,IAAtD7mK,KAAKk0J,SAAS,iBAAkBv7J,EAAOwwK,KAGvCvzI,EAAQi2B,QAASm9G,GAAqBhpK,KAAKsjM,KAAKt1K,MAAMy1K,GACtDzjM,KAAK6rD,OAASk9G,EAAkBt0G,IAAMgvI,EAClCzjM,KAAKqwD,KACPrwD,KAAKqwD,IAAIlC,QAEN+6G,EAAO1yK,QAAWyyK,EAAOzyK,QAC5Bi+D,EAAEh8D,MAAM,oDAENwwK,EAAOzyK,QACTwJ,KAAK41C,KAAK51C,KAAKsjM,KAAKt1K,MAAMy1K,GAAM9qM,GAElCqH,KAAKwpK,QAAQ7wK,EAAOwwK,GACtB,EAEAK,QAAS,SAAU7wK,EAAOwwK,GACxB,IAAIriJ,EAAO9mB,KACTipK,EAASE,EAAUI,SACnBL,EAASC,EAAUE,SAErB,SAAStkH,IACPj+B,EAAKq8K,SAAU,EACfr8K,EAAKotI,SAAS,WAAYv7J,EAAOwwK,EACnC,CACA,SAASj5H,IACPppB,EAAKuuI,UAAU8T,EAAU67B,OAAOj+J,QAAQ,MAAO,iBAAkB,mBAC7DkiI,EAAOzyK,QAAUswB,EAAK8O,QAAQsa,KAChCppB,EAAKsrK,MAAMnpB,EAAQniJ,EAAK8O,QAAQsa,KAAM6U,IAEtCkkH,EAAO/4H,OACP6U,IAEJ,CAbA/kD,KAAKmjM,SAAU,EAgBXj6B,EAAO1yK,QAAUwJ,KAAK41B,QAAQua,KAChCnwC,KAAK0xL,MAAMxoB,EAAQlpK,KAAK41B,QAAQua,MAAM,WACpCrpB,EAAKutI,aAAa8U,EAAU47B,OAAOh+J,QAAQ,MAAO,iBAAkB,mBACpEmJ,GACF,KAEAlwC,KAAKq0J,aAAa8U,EAAU47B,OAAOh+J,QAAQ,MAAO,iBAAkB,mBACpEmiI,EAAO/4H,OACPD,KAEFg5H,EAAOvqI,KAAK,cAAe,QAC3BwqI,EAAU47B,OAAOpmK,KAAK,CACpB,gBAAiB,QACjB,gBAAiB,UAMfsqI,EAAOzyK,QAAU0yK,EAAO1yK,OAC1B2yK,EAAU47B,OAAOpmK,KAAK,YAAa,GAC1BsqI,EAAOzyK,QAChBwJ,KAAKsjM,KAAK99K,QAAO,WACf,OAAoC,IAA7BivC,EAAEz0D,MAAM2+B,KAAK,WACtB,IAAGA,KAAK,YAAa,GAEvBsqI,EAAOtqI,KAAK,cAAe,SAC3BwqI,EAAU67B,OAAOrmK,KAAK,CACpB,gBAAiB,OACjB,gBAAiB,OACjB6C,SAAU,GAEd,EACAiuD,UAAW,SAAUzhE,GACnB,IAAI9G,EACF2kC,EAAS7rD,KAAKuoK,YAAYv6I,GAGxB69B,EAAO,KAAO7rD,KAAK6rD,OAAO,KAKzBA,EAAOr1D,SACVq1D,EAAS7rD,KAAK6rD,QAEhB3kC,EAAS2kC,EAAOrwB,KAAK,mBAAmB,GACxCx7B,KAAKioK,cAAc,CACjB9uK,OAAQ+tB,EACRguB,cAAehuB,EACfqsB,eAAgBkhB,EAAEr+B,OAEtB,EACAmyI,YAAa,SAAUv6I,GACrB,OAAiB,IAAVA,EAAkBymC,IAAMz0D,KAAKsjM,KAAKluK,GAAGpH,EAC9C,EACAi3K,UAAW,SAAUj3K,GAKnB,MAHqB,kBAAVA,IACTA,EAAQhuB,KAAKujM,QAAQv1K,MAAMhuB,KAAKujM,QAAQ/9K,OAAO,WAAaivC,EAAEv8B,eAAelK,GAAS,QAEjFA,CACT,EACAomI,SAAU,WACJp0J,KAAKqwD,KACPrwD,KAAKqwD,IAAIlC,QAEXnuD,KAAKwkM,QAAQp9I,WAAW,QAAQrU,IAAI/yC,KAAK0zJ,gBACzC1zJ,KAAKujM,QAAQn8I,WAAW,iBAAiBw/G,iBACzC5mK,KAAKsjM,KAAKhxL,IAAItS,KAAKqoK,QAAQnzI,MAAK,WAC1Bu/B,EAAEx+D,KAAK+J,KAAM,mBACfy0D,EAAEz0D,MAAMkpC,SAERurB,EAAEz0D,MAAMonD,WAAW,4FAEvB,IACApnD,KAAKsjM,KAAKpuK,MAAK,WACb,IAAIyvD,EAAKlwB,EAAEz0D,MACT2mC,EAAOg+C,EAAG1uF,KAAK,yBACb0wC,EACFg+C,EAAGhmD,KAAK,gBAAiBgI,GAAMoH,WAAW,yBAE1C42C,EAAGv9B,WAAW,gBAElB,IACApnD,KAAKqoK,OAAOn4H,OACqB,YAA7BlwC,KAAK41B,QAAQkxI,aACf9mK,KAAKqoK,OAAOl5H,IAAI,SAAU,GAE9B,EACAm6C,OAAQ,SAAUt7D,GAChB,IAAIqN,EAAWr7B,KAAK41B,QAAQyF,UACX,IAAbA,SAGU9hC,IAAVy0B,EACFqN,GAAW,GAEXrN,EAAQhuB,KAAKilM,UAAUj3K,GAErBqN,EADEl/B,MAAMF,QAAQo/B,GACLo5B,EAAEx3D,IAAIo+B,GAAU,SAAUxG,GACnC,OAAOA,IAAQ7G,EAAQ6G,EAAM,IAC/B,IAEW4/B,EAAEx3D,IAAI+C,KAAKsjM,MAAM,SAAU3+G,EAAI9vD,GACxC,OAAOA,IAAQ7G,EAAQ6G,EAAM,IAC/B,KAGJ70B,KAAKi0J,mBAAmB54H,GAC1B,EACA8N,QAAS,SAAUnb,GACjB,IAAIqN,EAAWr7B,KAAK41B,QAAQyF,SAC5B,IAAiB,IAAbA,EAAJ,CAGA,QAAc9hC,IAAVy0B,EACFqN,GAAW,MACN,CAEL,GADArN,EAAQhuB,KAAKilM,UAAUj3K,IACa,IAAhCymC,EAAE59B,QAAQ7I,EAAOqN,GACnB,OAGAA,EADEl/B,MAAMF,QAAQo/B,GACLo5B,EAAEz/B,MAAM,CAAChH,GAAQqN,GAAUhyB,OAE3B,CAAC2kB,EAEhB,CACAhuB,KAAKi0J,mBAAmB54H,EAdxB,CAeF,EACAua,KAAM,SAAU5nB,EAAOr1B,GACrBq1B,EAAQhuB,KAAKilM,UAAUj3K,GACvB,IAAIlH,EAAO9mB,KACTyjM,EAAMzjM,KAAKsjM,KAAKluK,GAAGpH,GACnB9G,EAASu8K,EAAIjoK,KAAK,mBAClBmsI,EAAQ3nK,KAAK0jM,gBAAgBD,GAC7Bt6B,EAAY,CACVs6B,IAAKA,EACL97B,MAAOA,GAET5iH,EAAW,SAAUsG,EAAO6C,GACX,UAAXA,GACFpnC,EAAKuhJ,OAAO/5H,MAAK,GAAO,GAE1BxnB,EAAKutI,aAAaovC,EAAK,mBACvB97B,EAAMvgH,WAAW,aACbiE,IAAUvkC,EAAKupC,YACVvpC,EAAKupC,GAEhB,EAGErwD,KAAKijM,SAAS/7K,EAAO,MAGzBlnB,KAAKqwD,IAAMoE,EAAE5H,KAAK7sD,KAAKklM,cAAch+K,EAAQvuB,EAAOwwK,IAKhDnpK,KAAKqwD,KAA+B,aAAxBrwD,KAAKqwD,IAAIjC,aACvBpuD,KAAKq1J,UAAUouC,EAAK,mBACpB97B,EAAMhpI,KAAK,YAAa,QACxB3+B,KAAKqwD,IAAIx3B,MAAK,SAAUo2B,EAAUf,EAAQ7C,GAGxC7xD,YAAW,WACTmuK,EAAM7tH,KAAKmV,GACXnoC,EAAKotI,SAAS,OAAQv7J,EAAOwwK,GAC7BpkH,EAASsG,EAAO6C,EAClB,GAAG,EACL,IAAGhmB,MAAK,SAAUmjB,EAAO6C,GAGvB10D,YAAW,WACTurD,EAASsG,EAAO6C,EAClB,GAAG,EACL,KAEJ,EACAg3I,cAAe,SAAUh+K,EAAQvuB,EAAOwwK,GACtC,IAAIriJ,EAAO9mB,KACX,MAAO,CAGLgsD,IAAK9kC,EAAOyX,KAAK,QAAQv5B,QAAQ,OAAQ,IACzCupD,WAAY,SAAUtD,EAAOqB,GAC3B,OAAO5lC,EAAKotI,SAAS,aAAcv7J,EAAO87D,EAAEn3D,OAAO,CACjD+tD,MAAOA,EACPO,aAAcc,GACby8G,GACL,EAEJ,EACAu6B,gBAAiB,SAAUD,GACzB,IAAI1nK,EAAK04B,EAAEgvI,GAAK9kK,KAAK,iBACrB,OAAO3+B,KAAKm3D,QAAQ37B,KAAKx7B,KAAKskM,kBAAkB,IAAMvoK,GACxD,KAKqB,IAAnB04B,EAAEyrG,cAEJzrG,EAAE29F,OAAO,UAAW39F,EAAEu9F,GAAGsxC,KAAM,CAC7BF,aAAc,WACZpjM,KAAK4yJ,YAAY92J,WACjBkE,KAAKq1J,UAAUr1J,KAAKsjM,KAAM,SAC5B,IAGc7uI,EAAEu9F,GAAGsxC,KAoBvB7uI,EAAE29F,OAAO,aAAc,CACrBpgI,QAAS,SACT4D,QAAS,CACP4uC,QAAS,CACP,aAAc,kCAEhBh9B,QAAS,WACP,IAAIugD,EAAQtzB,EAAEz0D,MAAM2+B,KAAK,SAGzB,OAAO81B,EAAE,OAAO3gC,KAAKi0D,GAAOjuC,MAC9B,EACA3J,MAAM,EAENguC,MAAO,0BACPhhC,SAAU,CACR07G,GAAI,cACJV,GAAI,cACJD,UAAW,gBAEbhoH,MAAM,EACNi1J,OAAO,EAEPp4H,MAAO,KACPpc,KAAM,MAERy0I,gBAAiB,SAAU1wK,EAAMqH,GAC/B,IAAIspK,GAAe3wK,EAAKiK,KAAK,qBAAuB,IAAI1wB,MAAM,OAC9Do3L,EAAYvuM,KAAKilC,GACjBrH,EAAKz+B,KAAK,gBAAiB8lC,GAAI4C,KAAK,mBAAoB7Z,OAAOpuB,UAAU49D,KAAK19D,KAAKyuM,EAAYtjM,KAAK,MACtG,EACAujM,mBAAoB,SAAU5wK,GAC5B,IAAIqH,EAAKrH,EAAKz+B,KAAK,iBACjBovM,GAAe3wK,EAAKiK,KAAK,qBAAuB,IAAI1wB,MAAM,OAC1D+f,EAAQymC,EAAE59B,QAAQkF,EAAIspK,IACT,IAAXr3K,GACFq3K,EAAY1vK,OAAO3H,EAAO,GAE5B0G,EAAKqZ,WAAW,kBAChBs3J,EAAcvgL,OAAOpuB,UAAU49D,KAAK19D,KAAKyuM,EAAYtjM,KAAK,OAExD2yB,EAAKiK,KAAK,mBAAoB0mK,GAE9B3wK,EAAK0yB,WAAW,mBAEpB,EACA4sG,QAAS,WACPh0J,KAAK8zJ,IAAI,CACPyxC,UAAW,OACX3vC,QAAS,SAIX51J,KAAKwlM,SAAW,CAAC,EAGjBxlM,KAAKknC,QAAU,CAAC,EAGhBlnC,KAAKmuK,WAAa15G,EAAE,SAAS91B,KAAK,CAChCorI,KAAM,MACN,YAAa,YACb,gBAAiB,cAChBhvH,SAAS/6C,KAAKhI,SAAS,GAAGg4C,MAC7BhwC,KAAKq1J,UAAUr1J,KAAKmuK,WAAY,KAAM,+BACtCnuK,KAAKylM,eAAiBhxI,EAAE,GAC1B,EACA+/F,WAAY,SAAU35J,EAAKN,GACzB,IAAIusB,EAAO9mB,KACXA,KAAKw8D,OAAO3hE,EAAKN,GACL,YAARM,GACF45D,EAAEv/B,KAAKl1B,KAAKwlM,UAAU,SAAUzpK,EAAI2pK,GAClC5+K,EAAK6+K,eAAeD,EAAYvuI,QAClC,GAEJ,EACA88F,mBAAoB,SAAU15J,GAC5ByF,KAAKzF,EAAQ,WAAa,YAC5B,EACAqrM,SAAU,WACR,IAAI9+K,EAAO9mB,KAGXy0D,EAAEv/B,KAAKl1B,KAAKwlM,UAAU,SAAUzpK,EAAI2pK,GAClC,IAAI/sM,EAAQ87D,EAAEhf,MAAM,QACpB98C,EAAMQ,OAASR,EAAMu8C,cAAgBwwJ,EAAYvuI,QAAQ,GACzDrwC,EAAKimD,MAAMp0E,GAAO,EACpB,IAGAqH,KAAKylM,eAAiBzlM,KAAKylM,eAAenzL,IAAItS,KAAKm3D,QAAQ37B,KAAKx7B,KAAK41B,QAAQuoD,OAAOl3C,UAAUzhB,QAAO,WACnG,IAAI2xC,EAAU1C,EAAEz0D,MAChB,GAAIm3D,EAAQtxB,GAAG,WACb,OAAOsxB,EAAQlhE,KAAK,mBAAoBkhE,EAAQx4B,KAAK,UAAUyoB,WAAW,QAE9E,IACF,EACAy+I,QAAS,WAEP7lM,KAAKylM,eAAevwK,MAAK,WACvB,IAAIiiC,EAAU1C,EAAEz0D,MACZm3D,EAAQlhE,KAAK,qBACfkhE,EAAQx4B,KAAK,QAASw4B,EAAQlhE,KAAK,oBAEvC,IACA+J,KAAKylM,eAAiBhxI,EAAE,GAC1B,EACA9D,KAAM,SAAUh4D,GACd,IAAImuB,EAAO9mB,KACT7G,EAASs7D,EAAE97D,EAAQA,EAAMQ,OAAS6G,KAAKm3D,SAItCpwB,QAAQ/mC,KAAK41B,QAAQuoD,OAGnBhlF,EAAO3C,SAAU2C,EAAOlD,KAAK,mBAG9BkD,EAAOwlC,KAAK,UACdxlC,EAAOlD,KAAK,mBAAoBkD,EAAOwlC,KAAK,UAE9CxlC,EAAOlD,KAAK,mBAAmB,GAG3B0C,GAAwB,cAAfA,EAAMM,MACjBE,EAAO+tC,UAAUhS,MAAK,WACpB,IACE4wG,EADE1lG,EAASq0B,EAAEz0D,MAEXogC,EAAOnqC,KAAK,sBACd6vI,EAAYrxE,EAAEhf,MAAM,SACVt8C,OAAS2sI,EAAU5wF,cAAgBl1C,KAC7C8mB,EAAKimD,MAAM+4D,GAAW,IAEpB1lG,EAAOzB,KAAK,WACdyB,EAAOkyG,WACPxrH,EAAKogB,QAAQlnC,KAAK+7B,IAAM,CACtBo7B,QAASn3D,KACT+nF,MAAO3nD,EAAOzB,KAAK,UAErByB,EAAOzB,KAAK,QAAS,IAEzB,IAEF3+B,KAAK8lM,uBAAuBntM,EAAOQ,GACnC6G,KAAK2lM,eAAexsM,EAAQR,GAC9B,EACAgtM,eAAgB,SAAUxsM,EAAQR,GAChC,IAAI6uC,EACFu+J,EAAgB/lM,KAAK41B,QAAQ4R,QAC7B1gB,EAAO9mB,KACP60F,EAAYl8F,EAAQA,EAAMM,KAAO,KACnC,GAA6B,kBAAlB8sM,GAA8BA,EAAc1yK,UAAY0yK,EAAcpxK,OAC/E,OAAO30B,KAAKksK,MAAMvzK,EAAOQ,EAAQ4sM,IAEnCv+J,EAAUu+J,EAAcnvM,KAAKuC,EAAO,IAAI,SAAU81D,GAGhDnoC,EAAK2uI,QAAO,WAELt8J,EAAOlD,KAAK,qBASb0C,IACFA,EAAMM,KAAO47F,GAEf70F,KAAKksK,MAAMvzK,EAAOQ,EAAQ81D,GAC5B,GACF,MAEEjvD,KAAKksK,MAAMvzK,EAAOQ,EAAQquC,EAE9B,EACA0kI,MAAO,SAAUvzK,EAAOQ,EAAQquC,GAC9B,IAAIk+J,EACFM,EACAC,EACAC,EACAC,EAAiB1xI,EAAEn3D,OAAO,CAAC,EAAG0C,KAAK41B,QAAQunB,UAwC7C,SAASA,EAASxkD,GAChBwtM,EAAezuC,GAAK/+J,EAChBqtM,EAAQngK,GAAG,YAGfmgK,EAAQ7oJ,SAASgpJ,EACnB,CA7CK3+J,KAMLk+J,EAAc1lM,KAAKomM,MAAMjtM,IAEvBusM,EAAYM,QAAQxqK,KAAK,uBAAuBse,KAAKtS,IAWnDruC,EAAO0sC,GAAG,aACRltC,GAAwB,cAAfA,EAAMM,KACjBE,EAAOwlC,KAAK,QAAS,IAErBxlC,EAAOiuD,WAAW,UAGtBs+I,EAAc1lM,KAAKqmM,SAASltM,GAC5B6sM,EAAUN,EAAYM,QACtBhmM,KAAKolM,gBAAgBjsM,EAAQ6sM,EAAQrnK,KAAK,OAC1CqnK,EAAQxqK,KAAK,uBAAuBse,KAAKtS,GAKzCxnC,KAAKmuK,WAAW1nI,WAAW0J,QAC3B+1J,EAAczxI,EAAE,SAAS3a,KAAKksJ,EAAQxqK,KAAK,uBAAuBse,SACtDsN,WAAW,QAAQ5rB,KAAK,UAAU4rB,WAAW,QACzD8+I,EAAY9+I,WAAW,MAAM5rB,KAAK,QAAQ4rB,WAAW,MACrD8+I,EAAYnrJ,SAAS/6C,KAAKmuK,YAQtBnuK,KAAK41B,QAAQuvK,OAASxsM,GAAS,SAASkN,KAAKlN,EAAMM,OACrD+G,KAAK8zJ,IAAI9zJ,KAAKhI,SAAU,CACtBsuM,UAAWnpJ,IAIbA,EAASxkD,IAETqtM,EAAQ7oJ,SAASsX,EAAEn3D,OAAO,CACxBo6J,GAAIv+J,GACH6G,KAAK41B,QAAQunB,WAElB6oJ,EAAQ71J,OACRnwC,KAAKoyL,MAAM4T,EAAShmM,KAAK41B,QAAQsa,MAM7BlwC,KAAK41B,QAAQuvK,OAASnlM,KAAK41B,QAAQsa,MAAQlwC,KAAK41B,QAAQsa,KAAK6W,QAC/Dk/I,EAAcjmM,KAAKimM,YAAc9xH,aAAY,WACvC6xH,EAAQngK,GAAG,cACbsX,EAASgpJ,EAAezuC,IACxBzjF,cAAcgyH,GAElB,GAAG,KAELjmM,KAAKk0J,SAAS,OAAQv7J,EAAO,CAC3BqtM,QAASA,KAEb,EACAF,uBAAwB,SAAUntM,EAAOQ,GACvC,IAAIy6C,EAAS,CACXyoJ,MAAO,SAAU1jM,GACf,GAAIA,EAAMy+C,UAAYqd,EAAEu9F,GAAG56G,QAAQ01E,OAAQ,CACzC,IAAIy5E,EAAY9xI,EAAEhf,MAAM98C,GACxB4tM,EAAUrxJ,cAAgB/7C,EAAO,GACjC6G,KAAK+sE,MAAMw5H,GAAW,EACxB,CACF,GAKEptM,EAAO,KAAO6G,KAAKm3D,QAAQ,KAC7BvjB,EAAO1K,OAAS,WACd,IAAIi2E,EAAgBn/G,KAAKomM,MAAMjtM,GAC3BgmH,GACFn/G,KAAKwmM,eAAernF,EAAc6mF,QAEtC,GAEGrtM,GAAwB,cAAfA,EAAMM,OAClB26C,EAAO6E,WAAa,SAEjB9/C,GAAwB,YAAfA,EAAMM,OAClB26C,EAAOiiH,SAAW,SAEpB71J,KAAK8zJ,KAAI,EAAM36J,EAAQy6C,EACzB,EACAm5B,MAAO,SAAUp0E,GACf,IAAIqtM,EACFl/K,EAAO9mB,KACP7G,EAASs7D,EAAE97D,EAAQA,EAAMu8C,cAAgBl1C,KAAKm3D,SAC9CuuI,EAAc1lM,KAAKomM,MAAMjtM,GAGtBusM,GAQLM,EAAUN,EAAYM,QAIlBN,EAAYe,UAKhBxyH,cAAcj0E,KAAKimM,aAIf9sM,EAAOlD,KAAK,sBAAwBkD,EAAOwlC,KAAK,UAClDxlC,EAAOwlC,KAAK,QAASxlC,EAAOlD,KAAK,qBAEnC+J,KAAKslM,mBAAmBnsM,GACxBusM,EAAYn3F,QAAS,EACrBy3F,EAAQ13J,MAAK,GACbtuC,KAAK0xL,MAAMsU,EAAShmM,KAAK41B,QAAQua,MAAM,WACrCrpB,EAAK0/K,eAAe/xI,EAAEz0D,MACxB,IACA7G,EAAO40C,WAAW,mBAClB/tC,KAAKo1J,KAAKj8J,EAAQ,6BAGdA,EAAO,KAAO6G,KAAKm3D,QAAQ,IAC7Bn3D,KAAKo1J,KAAKj8J,EAAQ,UAEpB6G,KAAKo1J,KAAKp1J,KAAKhI,SAAU,aACrBW,GAAwB,eAAfA,EAAMM,MACjBw7D,EAAEv/B,KAAKl1B,KAAKknC,SAAS,SAAUnL,EAAIqE,GACjCq0B,EAAEr0B,EAAO+2B,SAASx4B,KAAK,QAASyB,EAAO2nD,cAChCjhE,EAAKogB,QAAQnL,EACtB,IAEF2pK,EAAYe,SAAU,EACtBzmM,KAAKk0J,SAAS,QAASv7J,EAAO,CAC5BqtM,QAASA,IAENN,EAAYn3F,SACfm3F,EAAYe,SAAU,KA5CtBttM,EAAO40C,WAAW,kBA8CtB,EACAs4J,SAAU,SAAUlvI,GAClB,IAAI6uI,EAAUvxI,EAAE,SAAS91B,KAAK,OAAQ,WACpC6I,EAAUitB,EAAE,SAAS1Z,SAASirJ,GAC9BjqK,EAAKiqK,EAAQ1zD,WAAW3zG,KAAK,MAI/B,OAHA3+B,KAAKq1J,UAAU7tH,EAAS,sBACxBxnC,KAAKq1J,UAAU2wC,EAAS,aAAc,+BACtCA,EAAQjrJ,SAAS/6C,KAAKguK,UAAU72G,IACzBn3D,KAAKwlM,SAASzpK,GAAM,CACzBo7B,QAASA,EACT6uI,QAASA,EAEb,EACAI,MAAO,SAAUjtM,GACf,IAAI4iC,EAAK5iC,EAAOlD,KAAK,iBACrB,OAAO8lC,EAAK/7B,KAAKwlM,SAASzpK,GAAM,IAClC,EACAyqK,eAAgB,SAAUR,GAExB/xH,cAAcj0E,KAAKimM,aACnBD,EAAQ98J,gBACDlpC,KAAKwlM,SAASQ,EAAQrnK,KAAK,MACpC,EACAqvI,UAAW,SAAU70K,GACnB,IAAIg+D,EAAUh+D,EAAO4tC,QAAQ,qBAI7B,OAHKowB,EAAQ3gE,SACX2gE,EAAUn3D,KAAKhI,SAAS,GAAGg4C,MAEtBmnB,CACT,EACAi9F,SAAU,WACR,IAAIttI,EAAO9mB,KAGXy0D,EAAEv/B,KAAKl1B,KAAKwlM,UAAU,SAAUzpK,EAAI2pK,GAElC,IAAI/sM,EAAQ87D,EAAEhf,MAAM,QAClB0hB,EAAUuuI,EAAYvuI,QACxBx+D,EAAMQ,OAASR,EAAMu8C,cAAgBiiB,EAAQ,GAC7CrwC,EAAKimD,MAAMp0E,GAAO,GAIlB87D,EAAE,IAAM14B,GAAImN,SAGRiuB,EAAQlhE,KAAK,sBAEVkhE,EAAQx4B,KAAK,UAChBw4B,EAAQx4B,KAAK,QAASw4B,EAAQlhE,KAAK,qBAErCkhE,EAAQppB,WAAW,oBAEvB,IACA/tC,KAAKmuK,WAAWjlI,QAClB,KAKqB,IAAnBurB,EAAEyrG,cAEJzrG,EAAE29F,OAAO,aAAc39F,EAAEu9F,GAAGg0C,QAAS,CACnCpwK,QAAS,CACP8wK,aAAc,MAEhBL,SAAU,WACR,IAAIX,EAAc1lM,KAAK4yJ,YAAY92J,WAInC,OAHIkE,KAAK41B,QAAQ8wK,cACfhB,EAAYM,QAAQ/9I,SAASjoD,KAAK41B,QAAQ8wK,cAErChB,CACT,IAGiBjxI,EAAEu9F,GAAGg0C,OAC5B,OA12f8B,2DAK7B,CAVD,E,kCCLO,SAASW,EAAuBryK,GACrC,OAAOA,EAAQryB,OAAOhF,KAAI,SAAUpC,GAClC,OAKJ,SAA8Cy5B,EAASz5B,GACrD,IAAIw+B,EAcC,SAAiCx+B,GACtC,IAAI+rM,GAAe/rM,EAAIsK,MAAM,2CAA6C,IAAI,GAC9E,GAAIyhM,EACF,OAAOA,EAAYxhM,QAAQ,KAAM,KAAKA,QAAQ,MAAO,KAEzD,CAnBmByhM,CAAwBhsM,GACzC,GAAIw+B,EACF,OAGJ,SAA0ChiC,EAAQgiC,GAChD,IAAIwmC,EAAwBxoE,EAAO6wE,QACnC,GAAoC,mBAAzBrI,EACT,MAAO,CACLxmC,WAAYA,EACZwmC,sBAAuBA,EAG7B,CAXWinI,CAAiCxyK,EAAQz5B,GAAMw+B,EAE1D,CAVW0tK,CAAqCzyK,EAASz5B,EACvD,IAAG2qB,QAAO,SAAUjrB,GAClB,OAAOA,CACT,GACF,C,iECLA,IAAIo4B,EAAS,EAAQ,GACjBq0K,EAAuB,EAAQ,IAE/BC,EAAS,qBACTC,EAAQv0K,EAAOs0K,IAAWD,EAAqBC,EAAQ,CAAC,GAE5D5vM,EAAOD,QAAU8vM,C,+BCNjB,IAAIv0K,EAAS,EAAQ,GAGjB14B,EAAiBxD,OAAOwD,eAE5B5C,EAAOD,QAAU,SAAUyD,EAAKN,GAC9B,IACEN,EAAe04B,EAAQ93B,EAAK,CAAEN,MAAOA,EAAO8yC,cAAc,EAAMsI,UAAU,GAC5E,CAAE,MAAOl9C,GACPk6B,EAAO93B,GAAON,CAChB,CAAE,OAAOA,CACX,C,+BCXA,IAAI8B,EAAW,EAAQ,IAEnB8qM,EAAUriL,OACV0sI,EAAa9mH,UAGjBrzC,EAAOD,QAAU,SAAUgmC,GACzB,GAAI/gC,EAAS+gC,GAAW,OAAOA,EAC/B,MAAM,IAAIo0H,EAAW21C,EAAQ/pK,GAAY,oBAC3C,C,+BCTA,IAAImpF,EAAc,EAAQ,IAEtB3vH,EAAOyL,SAAS3L,UAAUE,KAE9BS,EAAOD,QAAUmvH,EAAc3vH,EAAKkE,KAAKlE,GAAQ,WAC/C,OAAOA,EAAKiF,MAAMjF,EAAMkF,UAC1B,C,+BCNA,IAAI62B,EAAS,EAAQ,GACjBwjH,EAAa,EAAQ,GAMzB9+I,EAAOD,QAAU,SAAU2/B,EAAWkR,GACpC,OAAOnsC,UAAUtF,OAAS,GALF4mC,EAKgBzK,EAAOoE,GAJxCo/G,EAAW/4G,GAAYA,OAAW7jC,GAIoBo5B,EAAOoE,IAAcpE,EAAOoE,GAAWkR,GALtF,IAAU7K,CAM1B,C,+BCTA/lC,EAAOD,QAA8B,oBAAbo8E,WAA4B1uD,OAAO0uD,UAAU84C,YAAc,E,+BCCnF,IAAI86E,EAAgB,EAAQ,KACxBC,EAAyB,EAAQ,IAErChwM,EAAOD,QAAU,SAAUsgG,GACzB,OAAO0vG,EAAcC,EAAuB3vG,GAC9C,C,+BCNA,IAAIw+C,EAAc,EAAQ,IAEtB95I,EAAW85I,EAAY,CAAC,EAAE95I,UAC1BkrM,EAAcpxD,EAAY,GAAG16I,OAEjCnE,EAAOD,QAAU,SAAUsgG,GACzB,OAAO4vG,EAAYlrM,EAASs7F,GAAK,GAAI,EACvC,C,mBCRA,aAYA,WACE,aAEA,IAAI6vG,EAAgB,SAAU9yI,EAAGl7D,GAQ/B,IAAIi+F,EALA/iC,EAAE+iC,QAAUj+F,GACdk7D,EAAEh8D,MAAM,uCAKV,IAAI+uM,EAAY/yI,EAAEz8D,UAClBy8D,EAAE+iC,MAAQA,EAAQ,CAEhBtE,kBAAmB,yGAEnBC,oBAAqB,sGAErBE,oBAAqB,iEAErBC,mBAAoB,8BAEpBC,uBAAwB,ySAExBk0G,gBAAiB,sMAEjBC,eAAgB,4MAEhBC,sBAAuB,kFAEvBj0G,kBAAmB,yCAEnBC,oBAAqB,wCAErBC,sBAAuB,4EAEvBQ,UAAW,WACT,OAAO3/B,EAAE,yBAAyB91B,KAAK,UACzC,EAEAw1D,UAAW,WACT,OAAO1/B,EAAE,yBAAyB91B,KAAK,UACzC,EAEA21D,eAAgB,SAAUjkC,GACxB,IAAIxrD,EAAQ2yF,EAAMpD,YACdvvF,GAAOwrD,EAAItC,iBAAiB,eAAgBlpD,EAClD,EAEA0vF,kBAAmB,WACjB9/B,EAAE,oBAAsB+iC,EAAMrD,YAAc,MAAM3zF,IAAIg3F,EAAMpD,YAC9D,EAEArrD,KAAM,SAAUrsC,EAAKrD,EAAMpD,GACzB,IAAI0C,EAAQ87D,EAAEhf,MAAMp8C,GAEpB,OADAqD,EAAI82C,QAAQ76C,EAAO1C,IACK,IAAjB0C,EAAMoiB,MACf,EAEAg7E,QAAS,SAAU38F,GACjB,OAAO28F,QAAQ38F,EACjB,EAEAyzD,KAAM,SAAUj3B,GACd,OAAO6+B,EAAE5H,KAAKj3B,EAChB,EAEA2L,KAAM,SAAU41B,GACd,OAAOA,EAAQ,GAAG51B,IACpB,EAEAy1D,SAAU,SAAU7/B,GAClB,OAAOA,EAAQlhE,KAAK,YAAcsD,IAAwC,IAA3B49D,EAAQlhE,KAAK,SAC9D,EAEAghG,aAAc,SAAU9/B,GACtB,IAAIlvB,EAAQ+jB,EAAK/1D,EAAMm/F,EAAiBlqC,EAAUt1B,EAClD,GAAI4hE,EAAMzuD,KAAKouB,EAAS,eAAgB,CAGtC,GAFAi+B,EAAkBj+B,EAAQlhE,KAAK,qBAAuB,KACtDi1D,EAAWiM,EAAQlhE,KAAK,SAAWw+D,EAAE7I,cAAgB6I,EAAE7I,aAAaV,SAChEiM,EAAQtxB,GAAG,QAAS,CACtBoC,EAASkvB,EAAQlhE,KAAK,iCAAmCkhE,EAAQx4B,KAAK,UACtEqtB,EAAMmL,EAAQlhE,KAAK,iCAAmCkhE,EAAQx4B,KAAK,UACnE1oC,EAAOw+D,EAAE0C,EAAQ,IAAI9M,iBAErB,IAAItoB,EAASo1B,EAAQlhE,KAAK,qBACtB8rC,IACF9rC,EAAKa,KAAKirC,GACVo1B,EAAQlhE,KAAK,oBAAqB,OAEpCkhE,EAAQlhE,KAAK,+BAAgC,MAC7CkhE,EAAQlhE,KAAK,+BAAgC,KAC/C,MAAWkhE,EAAQtxB,GAAG2xD,EAAMnE,sBAC1BprD,EAASkvB,EAAQlhE,KAAK,UACtB+1D,EAAMmL,EAAQlhE,KAAK,OACnBA,EAAOkhE,EAAQ/M,YACX+M,EAAQlhE,KAAK,YAAWA,EAAOA,EAAO,IAAMkhE,EAAQlhE,KAAK,YACpDkhE,EAAQtxB,GAAG2xD,EAAMrE,sBAC1BlrD,EAASkvB,EAAQlhE,KAAK,WAAa,MACnC+1D,EAAMmL,EAAQlhE,KAAK,OACnBA,EAAOkhE,EAAQ/M,YACX+M,EAAQlhE,KAAK,YAAWA,EAAOA,EAAO,IAAMkhE,EAAQlhE,KAAK,aAE7DgyC,EAASkvB,EAAQlhE,KAAK,UACtB+1D,EAAMwrC,EAAMj2D,KAAK41B,GACjBlhE,EAAOkhE,EAAQlhE,KAAK,WAAa,MAyCnC,OAvCA2/B,EAAU,CACR38B,KAAMgvC,GAAU,MAChBhyC,KAAMA,EACNi1D,SAAUA,EAEVyD,WAAY,SAAU0B,EAAK3D,GAIzB,GAHIA,EAASxB,WAAa3xD,GACxB82D,EAAItC,iBAAiB,SAAU,cAAgBrB,EAASL,QAAQt0D,SAE9Dy/F,EAAMzuD,KAAKouB,EAAS,kBAAmB,CAAC9G,EAAK3D,IAG/C,OAAO,EAFPyK,EAAQ3jB,QAAQ,YAAa6c,EAIjC,EACAzB,QAAS,SAAU34D,EAAMi4D,EAAQmC,GAC/B8G,EAAQ3jB,QAAQ,eAAgB,CAACv9C,EAAMi4D,EAAQmC,GACjD,EACAtL,SAAU,SAAUsL,EAAKnC,GACvBiJ,EAAQ3jB,QAAQ,gBAAiB,CAAC6c,EAAKnC,GACzC,EACAz1D,MAAO,SAAU43D,EAAKnC,EAAQz1D,GAC5B0+D,EAAQ3jB,QAAQ,aAAc,CAAC6c,EAAKnC,EAAQz1D,GAC9C,EACA61D,YAAakpC,EAAMjC,cAAcvpC,IAK/BopC,IACFx/D,EAAQi7B,UAAY,CAClBukC,gBAAiBA,IAKjBppC,IACFp2B,EAAQo2B,IAAMA,GAETwrC,EAAM3qC,KAAKj3B,EACpB,CACE,OAAO,CAEX,EAEA2/D,cAAe,SAAUvpC,GACvB,IAAIlB,EAAe9yD,SAASC,cAAc,KAC1C6yD,EAAavpB,KAAON,SAASM,KAC7B,IAAI4rB,EAAYn1D,SAASC,cAAc,KACvC,IAUE,OATAk1D,EAAU5rB,KAAOyqB,EAEjBmB,EAAU5rB,KAAO4rB,EAAU5rB,SAOhB4rB,EAAUlB,UAAmC,MAAvBkB,EAAUlB,YAAsBkB,EAAUoB,MAAQzD,EAAamB,SAAW,KAAOnB,EAAayD,OAASpB,EAAUlB,SAAW,KAAOkB,EAAUoB,KAChL,CAAE,MAAOh3D,GAEP,OAAO,CACT,CACF,EAGAs/F,aAAc,SAAUE,GACtB,IAAIx1D,EAAOi2D,EAAMj2D,KAAKw1D,GACpB9uD,EAAS8uD,EAAK9gG,KAAK,UACnBkD,EAAS49F,EAAKp4D,KAAK,UACnBy1D,EAAYoD,EAAMpD,YAClBD,EAAYqD,EAAMrD,YAClByB,EAAOnhC,EAAE,+BAAiClzB,EAAO,aACjDqmK,EAAgB,gCAAkC3/J,EAAS,qBACzDksD,IAAc56F,GAAa66F,IAAc76F,GAAci+F,EAAMjC,cAAch0D,KAC7EqmK,GAAiB,gBAAkBzzG,EAAY,YAAcC,EAAY,sBAEvEj7F,GACFy8F,EAAKj3D,KAAK,SAAUxlC,GAEtBy8F,EAAKzlD,OAAOqK,OAAOotJ,GAAe7sJ,SAAS,QAC3C66C,EAAKnzD,QACP,EAIAkzD,aAAc,SAAUC,EAAMvhE,GAC5B,OAAOuhE,EAAK/vD,GAAG,QAAU4uB,EAAEmhC,EAAK,GAAGn3D,UAAUjZ,OAAO6O,GAAYuhE,EAAKp6D,KAAKnH,EAC5E,EAMA6hE,oBAAqB,SAAUN,GAC7B4B,EAAM7B,aAAaC,EAAM4B,EAAMiwG,iBAAiBvyK,MAAK,WACnDsiE,EAAMvB,mBAAmBxhC,EAAEz0D,MAC7B,GACF,EACAi2F,mBAAoB,SAAU9+B,GAC5B,IAAIlvB,EAAQ0uD,EACZ1uD,EAASkvB,EAAQtxB,GAAG,UAAY,OAAS,OACzC8wD,EAAcx/B,EAAQlhE,KAAK,mBACPsD,IAClB49D,EAAQlhE,KAAK,kBAAmBkhE,EAAQlvB,MACxCkvB,EAAQlvB,GAAQ0uD,IAElBx/B,EAAQ52D,KAAK,YAAY,GACzB42D,EAAQlhE,KAAK,gBAAgB,EAC/B,EAKAogG,mBAAoB,SAAUT,GAC5B4B,EAAM7B,aAAaC,EAAM4B,EAAMkwG,gBAAgBxyK,MAAK,WAClDsiE,EAAMpB,kBAAkB3hC,EAAEz0D,MAC5B,GACF,EACAo2F,kBAAmB,SAAUj/B,GAC3B,IAAIlvB,EAASkvB,EAAQtxB,GAAG,UAAY,OAAS,MACzCsxB,EAAQlhE,KAAK,qBAAuBsD,IACtC49D,EAAQlvB,GAAQkvB,EAAQlhE,KAAK,oBAC7BkhE,EAAQppB,WAAW,oBAGrBopB,EAAQ52D,KAAK,YAAY,GACzB42D,EAAQppB,WAAW,eACrB,EAUA8nD,YAAa,SAAU1+B,GACrB,IAEEn7D,EAFE5C,EAAU+9D,EAAQlhE,KAAK,WACzB+/F,GAAS,EAEX,IAAK58F,EACH,OAAO,EAET,GAAIo+F,EAAMzuD,KAAKouB,EAAS,WAAY,CAClC,IACE6+B,EAASwB,EAAMzB,QAAQ38F,EACzB,CAAE,MAAO7B,IACN6D,QAAQ3C,OAAS2C,QAAQ48I,KAAKphJ,KAAKwE,QAAS7D,EAAEyK,OAASzK,EAC1D,CACAyE,EAAWw7F,EAAMzuD,KAAKouB,EAAS,mBAAoB,CAAC6+B,GACtD,CACA,OAAOA,GAAUh6F,CACnB,EAEA6rM,YAAa,SAAUjyG,EAAMkyG,EAAmBC,GAC9C,IACE7rM,EAEA8rM,EACAC,EAJEC,EAAczzI,IAKhBpgC,EAAWyzK,GAAqB,iBAChCK,EAAiBvyG,EAAKp6D,KAAKnH,GAC3B+zK,EAA0B,CAAC,EA2B7B,OA1BAD,EAAejzK,MAAK,YAClBh5B,EAAQu4D,EAAEz0D,OACA6lC,GAAG,sBAIXoiK,EAAY/rM,EAAMyiC,KAAK,QAGlBypK,EAAwBH,KAEqD,IAA5EryG,EAAKp6D,KAAK,mCAAqCysK,EAAY,MAAMzxM,SACnEwxM,EAAgCpyG,EAAKp6D,KAAK,2BAA6BysK,EAAY,MACnFC,EAAcA,EAAY51L,IAAI01L,IAIhCI,EAAwBH,GAAaA,KAGxB/rM,EAAM2pC,GAAG,0CAA4C3pC,EAAM2pC,GAAG,cAAgB3pC,EAAMsE,SAC9EunM,IACnBG,EAAcA,EAAY51L,IAAIpW,GAGpC,MACOgsM,EAAY1xM,QAAS0xM,CAC9B,EAEAG,eAAgB,SAAUzyG,EAAMkyG,GAC9B,OAAOtwG,EAAMqwG,YAAYjyG,EAAMkyG,GAAmB,EACpD,EAGAlzG,eAAgB,SAAUr9F,GAGxB,OAFAk9D,EAAEl9D,EAAE4B,QAAQq6C,QAAQ,yBACpBj8C,EAAE+7C,4BACK,CACT,EAGAojD,eAAgB,SAAUv/B,GACxB,IAAIw/B,EAAcx/B,EAAQlhE,KAAK,gBAC3B0gG,IAAgBp9F,IAClB49D,EAAQlhE,KAAK,kBAAmBkhE,EAAQrd,QACxCqd,EAAQrd,KAAK68C,IAEfx/B,EAAQxkB,GAAG,sBAAsB,SAAUp7C,GAEzC,OAAOigG,EAAM5C,eAAer9F,EAC9B,IACA4/D,EAAQlhE,KAAK,gBAAgB,EAC/B,EAEAwgG,cAAe,SAAUt/B,GACnBA,EAAQlhE,KAAK,qBAAuBsD,IACtC49D,EAAQrd,KAAKqd,EAAQlhE,KAAK,oBAC1BkhE,EAAQppB,WAAW,oBAGrBopB,EAAQpkB,IAAI,sBACZokB,EAAQppB,WAAW,eACrB,GAEEypD,EAAMzuD,KAAKy+J,EAAW,0BACxB/yI,EAAE9H,eAAc,SAAU/2B,EAASgvB,EAAiByL,GAC7Cz6B,EAAQ04B,aACXkpC,EAAMlD,eAAejkC,EAEzB,IAOAoE,EAAEn5D,QAAQq3C,GAAG,kBAAkB,WAC7B8hB,EAAEA,EAAE+iC,MAAMkwG,gBAAgBxyK,MAAK,WAC7B,IAAIiiC,EAAU1C,EAAEz0D,MACZm3D,EAAQlhE,KAAK,iBACfw+D,EAAE+iC,MAAMpB,kBAAkBj/B,EAE9B,IACA1C,EAAEA,EAAE+iC,MAAM7D,qBAAqBz+D,MAAK,WAClC,IAAIiiC,EAAU1C,EAAEz0D,MACZm3D,EAAQlhE,KAAK,iBACfw+D,EAAE+iC,MAAMf,cAAct/B,EAE1B,GACF,IACAqwI,EAAU70J,GAAG,gBAAiB6kD,EAAM7D,qBAAqB,WACvD6D,EAAMf,cAAchiC,EAAEz0D,MACxB,IACAwnM,EAAU70J,GAAG,gBAAiB6kD,EAAM5D,uBAAuB,WACzD4D,EAAMpB,kBAAkB3hC,EAAEz0D,MAC5B,IACAwnM,EAAU70J,GAAG,cAAe6kD,EAAMtE,mBAAmB,SAAU37F,GAC7D,IAAIw/F,EAAOtiC,EAAEz0D,MACXioC,EAAS8uD,EAAK9gG,KAAK,UACnBA,EAAO8gG,EAAK9gG,KAAK,UACjBqyM,EAAY/wM,EAAEu/C,SAAWv/C,EAAEo/C,QAC7B,IAAK6gD,EAAM3B,YAAYkB,GAAO,OAAOS,EAAM5C,eAAer9F,GAE1D,IADK+wM,GAAavxG,EAAKlxD,GAAG2xD,EAAM7D,sBAAsB6D,EAAMd,eAAeK,GACvES,EAAMR,SAASD,GAAO,CACxB,GAAIuxG,KAAergK,GAAqB,QAAXA,KAAsBhyC,EACjD,OAAO,EAET,IAAIghG,EAAeO,EAAMP,aAAaF,GAStC,OAPqB,IAAjBE,EACFO,EAAMf,cAAcM,GAEpBE,EAAa/uD,MAAK,WAChBsvD,EAAMf,cAAcM,EACtB,KAEK,CACT,CAAO,OAAI9uD,GACTuvD,EAAMX,aAAaE,IACZ,QAFF,CAIT,IACAywG,EAAU70J,GAAG,cAAe6kD,EAAMrE,qBAAqB,SAAU57F,GAC/D,IAAIwqC,EAAS0yB,EAAEz0D,MACf,IAAKw3F,EAAM3B,YAAY9zD,KAAYy1D,EAAMR,SAASj1D,GAAS,OAAOy1D,EAAM5C,eAAer9F,GACnFwqC,EAAO8D,GAAG2xD,EAAM5D,wBAAwB4D,EAAMvB,mBAAmBl0D,GACrE,IAAIk1D,EAAeO,EAAMP,aAAal1D,GAStC,OAPqB,IAAjBk1D,EACFO,EAAMpB,kBAAkBr0D,GAExBk1D,EAAa/uD,MAAK,WAChBsvD,EAAMpB,kBAAkBr0D,EAC1B,KAEK,CACT,IACAylK,EAAU70J,GAAG,eAAgB6kD,EAAMnE,qBAAqB,SAAU97F,GAChE,IAAIw/F,EAAOtiC,EAAEz0D,MACb,OAAKw3F,EAAM3B,YAAYkB,IAAUS,EAAMR,SAASD,IAChDS,EAAMP,aAAaF,IACZ,GAFuDS,EAAM5C,eAAer9F,EAGrF,IACAiwM,EAAU70J,GAAG,eAAgB6kD,EAAMlE,oBAAoB,SAAU/7F,GAC/D,IAEEgxM,EACAC,EAHE5yG,EAAOnhC,EAAEz0D,MACXyoM,EAASjxG,EAAMR,SAASpB,GAG1B,IAAK4B,EAAM3B,YAAYD,GAAO,OAAO4B,EAAM5C,eAAer9F,GAG1D,GAAIq+F,EAAKj3D,KAAK,gBAAkBplC,EAC9B,GAAIq8F,EAAK3/F,KAAK,+BAAiCsD,GAE7C,IADAgvM,EAAsB/wG,EAAMqwG,YAAYjyG,EAAM4B,EAAMmwG,uBAAuB,KAChDnwG,EAAMzuD,KAAK6sD,EAAM,wBAAyB,CAAC2yG,IACpE,OAAO/wG,EAAM5C,eAAer9F,QAK9Bq+F,EAAK3/F,KAAK,4BAA6BsD,GAG3C,GAAIkvM,EAAQ,CAEV,GADAD,EAAqBhxG,EAAM6wG,eAAezyG,EAAM4B,EAAM9D,mBAC9B,CAGtBl6F,YAAW,WACTg+F,EAAMtB,oBAAoBN,EAC5B,GAAG,IACH,IAAI8yG,EAAUlxG,EAAMzuD,KAAK6sD,EAAM,oBAAqB,CAAC4yG,IAQrD,OALKE,GACHlvM,YAAW,WACTg+F,EAAMnB,mBAAmBT,EAC3B,GAAG,IAEE8yG,CACT,CAEA,OADAlxG,EAAMP,aAAarB,IACZ,CACT,CAEEp8F,YAAW,WACTg+F,EAAMtB,oBAAoBN,EAC5B,GAAG,GAEP,IACA4xG,EAAU70J,GAAG,cAAe6kD,EAAMjE,wBAAwB,SAAU56F,GAClE,IAAIopC,EAAS0yB,EAAEz0D,MACf,IAAKw3F,EAAM3B,YAAY9zD,GAAS,OAAOy1D,EAAM5C,eAAej8F,GAG5D,IAAIU,EAAO0oC,EAAOpD,KAAK,QACrB1oC,EAAOoD,EAAO,CACZA,KAAMA,EACNkB,MAAOwnC,EAAOvhC,OACZ,KACFo1F,EAAO7zD,EAAOgF,QAAQ,QACN,IAAhB6uD,EAAKp/F,SACPo/F,EAAOnhC,EAAE,IAAM1yB,EAAOpD,KAAK,UAE7Bi3D,EAAK3/F,KAAK,oBAAqBA,GAG/B2/F,EAAK3/F,KAAK,4BAA6B8rC,EAAOpD,KAAK,mBACnDi3D,EAAK3/F,KAAK,+BAAgC8rC,EAAOpD,KAAK,eACtDi3D,EAAK3/F,KAAK,+BAAgC8rC,EAAOpD,KAAK,cACxD,IACA6oK,EAAU70J,GAAG,kBAAmB6kD,EAAMlE,oBAAoB,SAAU36F,GAC9DqH,OAASrH,EAAMQ,QAAQq+F,EAAMtB,oBAAoBzhC,EAAEz0D,MACzD,IACAwnM,EAAU70J,GAAG,sBAAuB6kD,EAAMlE,oBAAoB,SAAU36F,GAClEqH,OAASrH,EAAMQ,QAAQq+F,EAAMnB,mBAAmB5hC,EAAEz0D,MACxD,IACAy0D,GAAE,WACA+iC,EAAMjD,mBACR,IAEJ,EACIj5F,OAAO84B,OACTmzK,EAAcnzK,GAEd/8B,EAAOD,QAAUmwM,CAEpB,CArfD,E,iDCZA,mBAwBA,IAAIjwD,EAA8B,qBAAXh8I,QAA8C,qBAAbtD,UAAiD,qBAAdw7E,UACvFm1H,EAAkB,WAEpB,IADA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WACvCtyM,EAAI,EAAGA,EAAIsyM,EAAsBpyM,OAAQF,GAAK,EACrD,GAAIghJ,GAAa9jE,UAAU84C,UAAUx/G,QAAQ87L,EAAsBtyM,KAAO,EACxE,OAAO,EAGX,OAAO,CACT,CARsB,GAkCtB,IAWIuyM,EAXqBvxD,GAAah8I,OAAO3D,QAzB7C,SAA2BwF,GACzB,IAAI8sE,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACT3uE,OAAO3D,QAAQC,UAAUuwC,MAAK,WAC5B8hC,GAAS,EACT9sE,GACF,IACF,CACF,EACA,SAAsBA,GACpB,IAAI2rM,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZtvM,YAAW,WACTsvM,GAAY,EACZ3rM,GACF,GAAGwrM,GAEP,CACF,EAqBA,SAASvmM,EAAW2mM,GAElB,OAAOA,GAA8D,sBADvD,CAAC,EACmB3sM,SAASxF,KAAKmyM,EAClD,CASA,SAASC,EAAyB7xI,EAASl8D,GACzC,GAAyB,IAArBk8D,EAAQ9jC,SACV,MAAO,GAGT,IACI8b,EADSgoB,EAAQjgC,cAAcuG,YAClBge,iBAAiB0b,EAAS,MAC3C,OAAOl8D,EAAWk0C,EAAIl0C,GAAYk0C,CACpC,CASA,SAAS85J,EAAc9xI,GACrB,MAAyB,SAArBA,EAAQ1iC,SACH0iC,EAEFA,EAAQnjC,YAAcmjC,EAAQ5I,IACvC,CASA,SAAS26I,EAAgB/xI,GAEvB,IAAKA,EACH,OAAOn/D,SAASg4C,KAElB,OAAQmnB,EAAQ1iC,UACd,IAAK,OACL,IAAK,OACH,OAAO0iC,EAAQjgC,cAAc8Y,KAC/B,IAAK,YACH,OAAOmnB,EAAQnnB,KAKnB,IAAIm5J,EAAwBH,EAAyB7xI,GACnDj5D,EAAWirM,EAAsBjrM,SACjCunD,EAAY0jJ,EAAsB1jJ,UAClCC,EAAYyjJ,EAAsBzjJ,UACpC,MAAI,wBAAwB7/C,KAAK3H,EAAWwnD,EAAYD,GAC/C0R,EAEF+xI,EAAgBD,EAAc9xI,GACvC,CASA,SAASiyI,EAAiBptH,GACxB,OAAOA,GAAaA,EAAUqtH,cAAgBrtH,EAAUqtH,cAAgBrtH,CAC1E,CACA,IAAIstH,EAAShyD,MAAgBh8I,OAAOiuM,uBAAwBvxM,SAASogD,cACjEoxJ,EAASlyD,GAAa,UAAUzxI,KAAK2tE,UAAU84C,WASnD,SAASF,EAAKp6F,GACZ,OAAgB,KAAZA,EACKs3K,EAEO,KAAZt3K,EACKw3K,EAEFF,GAAUE,CACnB,CASA,SAASC,EAAgBtyI,GACvB,IAAKA,EACH,OAAOn/D,SAASy+B,gBAOlB,IALA,IAAIizK,EAAiBt9E,EAAK,IAAMp0H,SAASg4C,KAAO,KAG5CmjB,EAAegE,EAAQhE,cAAgB,KAEpCA,IAAiBu2I,GAAkBvyI,EAAQg6E,oBAChDh+E,GAAgBgE,EAAUA,EAAQg6E,oBAAoBh+E,aAExD,IAAI1+B,EAAW0+B,GAAgBA,EAAa1+B,SAC5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAAS3nB,QAAQqmD,EAAa1+B,WAA2E,WAAvDu0K,EAAyB71I,EAAc,YACjGs2I,EAAgBt2I,GAElBA,EAREgE,EAAUA,EAAQjgC,cAAcT,gBAAkBz+B,SAASy+B,eAStE,CAgBA,SAASkzK,EAAQ/1K,GACf,OAAwB,OAApBA,EAAKI,WACA21K,EAAQ/1K,EAAKI,YAEfJ,CACT,CAUA,SAASg2K,EAAuBC,EAAUC,GAExC,IAAKD,IAAaA,EAASx2K,WAAay2K,IAAaA,EAASz2K,SAC5D,OAAOr7B,SAASy+B,gBAIlB,IAAI2qB,EAAQyoJ,EAASjyK,wBAAwBkyK,GAAY3vI,KAAK4vI,4BAC1D5pK,EAAQihB,EAAQyoJ,EAAWC,EAC3Bp0K,EAAM0rB,EAAQ0oJ,EAAWD,EAGzBz5E,EAAQp4H,SAASs1G,cACrB8iB,EAAMiH,SAASl3F,EAAO,GACtBiwF,EAAMsG,OAAOhhG,EAAK,GAClB,IA7CyByhC,EACrB1iC,EA4CAq8F,EAA0BV,EAAMU,wBAIpC,GAAI+4E,IAAa/4E,GAA2Bg5E,IAAah5E,GAA2B3wF,EAAMzI,SAAShC,GACjG,MAhDe,UADbjB,GADqB0iC,EAkDD25D,GAjDDr8F,WAIH,SAAbA,GAAuBg1K,EAAgBtyI,EAAQnH,qBAAuBmH,EAgDpEsyI,EAAgB34E,GAFdA,EAMX,IAAIk5E,EAAeL,EAAQE,GAC3B,OAAIG,EAAaz7I,KACRq7I,EAAuBI,EAAaz7I,KAAMu7I,GAE1CF,EAAuBC,EAAUF,EAAQG,GAAUv7I,KAE9D,CAUA,SAAS07I,EAAU9yI,GACjB,IACI+yI,EAAqB,SADdpuM,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,OAC9C,YAAc,aAC3C24B,EAAW0iC,EAAQ1iC,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EAAqB,CAC9C,IAAIqlB,EAAOqd,EAAQjgC,cAAcT,gBAEjC,OADuB0gC,EAAQjgC,cAAcizK,kBAAoBrwJ,GACzCowJ,EAC1B,CACA,OAAO/yI,EAAQ+yI,EACjB,CAiCA,SAASE,EAAe3qJ,EAAQwkI,GAC9B,IAAIomB,EAAiB,MAATpmB,EAAe,OAAS,MAChCqmB,EAAkB,SAAVD,EAAmB,QAAU,SACzC,OAAOvqL,WAAW2/B,EAAO,SAAW4qJ,EAAQ,UAAYvqL,WAAW2/B,EAAO,SAAW6qJ,EAAQ,SAC/F,CACA,SAASC,EAAQtmB,EAAMj0I,EAAM8J,EAAMmlF,GACjC,OAAO/6H,KAAKI,IAAI0rC,EAAK,SAAWi0I,GAAOj0I,EAAK,SAAWi0I,GAAOnqI,EAAK,SAAWmqI,GAAOnqI,EAAK,SAAWmqI,GAAOnqI,EAAK,SAAWmqI,GAAO73D,EAAK,IAAM/7G,SAASypC,EAAK,SAAWmqI,IAAS5zK,SAAS4uH,EAAc,UAAqB,WAATglD,EAAoB,MAAQ,UAAY5zK,SAAS4uH,EAAc,UAAqB,WAATglD,EAAoB,SAAW,WAAa,EAC5U,CACA,SAASumB,EAAexyM,GACtB,IAAIg4C,EAAOh4C,EAASg4C,KAChB8J,EAAO9hD,EAASy+B,gBAChBwoG,EAAgB7S,EAAK,KAAO3wE,iBAAiB3B,GACjD,MAAO,CACLoE,OAAQqsJ,EAAQ,SAAUv6J,EAAM8J,EAAMmlF,GACtCljF,MAAOwuJ,EAAQ,QAASv6J,EAAM8J,EAAMmlF,GAExC,CACA,IAKIwrE,EAAc,WAChB,SAASlpI,EAAiBpoE,EAAQ88C,GAChC,IAAK,IAAI3/C,EAAI,EAAGA,EAAI2/C,EAAMz/C,OAAQF,IAAK,CACrC,IAAI8gE,EAAanhB,EAAM3/C,GACvB8gE,EAAWl9D,WAAak9D,EAAWl9D,aAAc,EACjDk9D,EAAW/pB,cAAe,EACtB,UAAW+pB,IAAYA,EAAWzhB,UAAW,GACjDl/C,OAAOwD,eAAed,EAAQi+D,EAAWv8D,IAAKu8D,EAChD,CACF,CACA,OAAO,SAAUgS,EAAaC,EAAYC,GAGxC,OAFID,GAAY9H,EAAiB6H,EAAY1yE,UAAW2yE,GACpDC,GAAa/H,EAAiB6H,EAAaE,GACxCF,CACT,CACF,CAfkB,GAgBdnvE,EAAiB,SAAUyC,EAAK7B,EAAKN,GAWvC,OAVIM,KAAO6B,EACTjG,OAAOwD,eAAeyC,EAAK7B,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZmzC,cAAc,EACdsI,UAAU,IAGZj5C,EAAI7B,GAAON,EAENmC,CACT,EACI6sE,EAAW9yE,OAAO46B,QAAU,SAAUl4B,GACxC,IAAK,IAAI7C,EAAI,EAAGA,EAAIwF,UAAUtF,OAAQF,IAAK,CACzC,IAAIqM,EAAS7G,UAAUxF,GACvB,IAAK,IAAIuE,KAAO8H,EACVlM,OAAOC,UAAUC,eAAeC,KAAK+L,EAAQ9H,KAC/C1B,EAAO0B,GAAO8H,EAAO9H,GAG3B,CACA,OAAO1B,CACT,EASA,SAASuxM,EAAchtH,GACrB,OAAOnU,EAAS,CAAC,EAAGmU,EAAS,CAC3B1gC,MAAO0gC,EAAQx7B,KAAOw7B,EAAQ3hC,MAC9B+8G,OAAQp7E,EAAQhgD,IAAMggD,EAAQx/B,QAElC,CASA,SAAS8D,EAAsBmV,GAC7B,IAAIpE,EAAO,CAAC,EAKZ,IACE,GAAIq5D,EAAK,IAAK,CACZr5D,EAAOoE,EAAQnV,wBACf,IAAIc,EAAYmnJ,EAAU9yI,EAAS,OAC/BpU,EAAaknJ,EAAU9yI,EAAS,QACpCpE,EAAKr1B,KAAOolB,EACZiQ,EAAK7Q,MAAQa,EACbgQ,EAAK+lG,QAAUh2G,EACfiQ,EAAK/V,OAAS+F,CAChB,MACEgQ,EAAOoE,EAAQnV,uBAEnB,CAAE,MAAOzqD,GAAI,CACb,IAAIwjB,EAAS,CACXmnC,KAAM6Q,EAAK7Q,KACXxkB,IAAKq1B,EAAKr1B,IACVqe,MAAOgX,EAAK/V,MAAQ+V,EAAK7Q,KACzBhE,OAAQ6U,EAAK+lG,OAAS/lG,EAAKr1B,KAIzBitK,EAA6B,SAArBxzI,EAAQ1iC,SAAsB+1K,EAAerzI,EAAQjgC,eAAiB,CAAC,EAC/E6kB,EAAQ4uJ,EAAM5uJ,OAASob,EAAQysB,aAAe7oE,EAAOghC,MACrDmC,EAASysJ,EAAMzsJ,QAAUiZ,EAAQ0qB,cAAgB9mE,EAAOmjC,OACxD0sJ,EAAiBzzI,EAAQ9Z,YAActB,EACvC8uJ,EAAgB1zI,EAAQ9Y,aAAeH,EAI3C,GAAI0sJ,GAAkBC,EAAe,CACnC,IAAIprJ,EAASupJ,EAAyB7xI,GACtCyzI,GAAkBR,EAAe3qJ,EAAQ,KACzCorJ,GAAiBT,EAAe3qJ,EAAQ,KACxC1kC,EAAOghC,OAAS6uJ,EAChB7vL,EAAOmjC,QAAU2sJ,CACnB,CACA,OAAOH,EAAc3vL,EACvB,CACA,SAAS+vL,EAAqCrkK,EAAUrG,GACtD,IAAI2qK,EAAgBjvM,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,IAAmBA,UAAU,GAC/E0tM,EAASp9E,EAAK,IACdzuB,EAA6B,SAApBv9D,EAAO3L,SAChBu2K,EAAehpJ,EAAsBvb,GACrCwkK,EAAajpJ,EAAsB5hB,GACnCmmI,EAAe2iC,EAAgBziK,GAC/BgZ,EAASupJ,EAAyB5oK,GAClC+d,EAAiBr+B,WAAW2/B,EAAOtB,gBACnC+sJ,EAAkBprL,WAAW2/B,EAAOyrJ,iBAGpCH,GAAiBptG,IACnBstG,EAAWvtK,IAAMx5B,KAAKI,IAAI2mM,EAAWvtK,IAAK,GAC1CutK,EAAW/oJ,KAAOh+C,KAAKI,IAAI2mM,EAAW/oJ,KAAM,IAE9C,IAAIw7B,EAAUgtH,EAAc,CAC1BhtK,IAAKstK,EAAattK,IAAMutK,EAAWvtK,IAAMygB,EACzC+D,KAAM8oJ,EAAa9oJ,KAAO+oJ,EAAW/oJ,KAAOgpJ,EAC5CnvJ,MAAOivJ,EAAajvJ,MACpBmC,OAAQ8sJ,EAAa9sJ,SASvB,GAPAw/B,EAAQ+6E,UAAY,EACpB/6E,EAAQ3gC,WAAa,GAMhBysJ,GAAU7rG,EAAQ,CACrB,IAAI86D,EAAY34I,WAAW2/B,EAAOg5G,WAC9B17G,EAAaj9B,WAAW2/B,EAAO1C,YACnC2gC,EAAQhgD,KAAOygB,EAAiBs6G,EAChC/6E,EAAQo7E,QAAU36G,EAAiBs6G,EACnC/6E,EAAQx7B,MAAQgpJ,EAAkBnuJ,EAClC2gC,EAAQ1gC,OAASkuJ,EAAkBnuJ,EAGnC2gC,EAAQ+6E,UAAYA,EACpB/6E,EAAQ3gC,WAAaA,CACvB,CAIA,OAHIysJ,IAAWuB,EAAgB3qK,EAAO1I,SAAS6uI,GAAgBnmI,IAAWmmI,GAA0C,SAA1BA,EAAa9xI,YACrGipD,EAhMJ,SAAuB3qB,EAAMoE,GAC3B,IAAIl0C,EAAWnnB,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,IAAmBA,UAAU,GAC1EgnD,EAAYmnJ,EAAU9yI,EAAS,OAC/BpU,EAAaknJ,EAAU9yI,EAAS,QAChCg0I,EAAWloL,GAAY,EAAI,EAK/B,OAJA8vC,EAAKr1B,KAAOolB,EAAYqoJ,EACxBp4I,EAAK+lG,QAAUh2G,EAAYqoJ,EAC3Bp4I,EAAK7Q,MAAQa,EAAaooJ,EAC1Bp4I,EAAK/V,OAAS+F,EAAaooJ,EACpBp4I,CACT,CAsLcq4I,CAAc1tH,EAASt9C,IAE5Bs9C,CACT,CA0BA,SAAS09F,EAAQjkH,GACf,IAAI1iC,EAAW0iC,EAAQ1iC,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAET,GAAsD,UAAlDu0K,EAAyB7xI,EAAS,YACpC,OAAO,EAET,IAAInjC,EAAai1K,EAAc9xI,GAC/B,QAAKnjC,GAGEonJ,EAAQpnJ,EACjB,CAUA,SAASq3K,EAA6Bl0I,GAEpC,IAAKA,IAAYA,EAAQ+I,eAAiBksD,IACxC,OAAOp0H,SAASy+B,gBAGlB,IADA,IAAIqG,EAAKq6B,EAAQ+I,cACVpjC,GAAoD,SAA9CksK,EAAyBlsK,EAAI,cACxCA,EAAKA,EAAGojC,cAEV,OAAOpjC,GAAM9kC,SAASy+B,eACxB,CAaA,SAAS60K,EAAcv/G,EAAQ/P,EAAW55B,EAASy7B,GACjD,IAAIktH,EAAgBjvM,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,IAAmBA,UAAU,GAI/EyvM,EAAa,CACf7tK,IAAK,EACLwkB,KAAM,GAEJiR,EAAe43I,EAAgBM,EAA6Bt/G,GAAU69G,EAAuB79G,EAAQq9G,EAAiBptH,IAG1H,GAA0B,aAAtB6B,EACF0tH,EApFJ,SAAuDp0I,GACrD,IAAIq0I,EAAgB1vM,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,IAAmBA,UAAU,GAC/Eg+C,EAAOqd,EAAQjgC,cAAcT,gBAC7Bg1K,EAAiBX,EAAqC3zI,EAASrd,GAC/DiC,EAAQ73C,KAAKI,IAAIw1C,EAAK8pC,YAAatoF,OAAO0nF,YAAc,GACxD9kC,EAASh6C,KAAKI,IAAIw1C,EAAK+nC,aAAcvmF,OAAOi0F,aAAe,GAC3DzsC,EAAa0oJ,EAAkC,EAAlBvB,EAAUnwJ,GACvCiJ,EAAcyoJ,EAA0C,EAA1BvB,EAAUnwJ,EAAM,QAOlD,OAAO4wJ,EANM,CACXhtK,IAAKolB,EAAY2oJ,EAAe/tK,IAAM+tK,EAAehzC,UACrDv2G,KAAMa,EAAa0oJ,EAAevpJ,KAAOupJ,EAAe1uJ,WACxDhB,MAAOA,EACPmC,OAAQA,GAGZ,CAqEiBwtJ,CAA8Cv4I,EAAc43I,OACpE,CAEL,IAAIY,OAAiB,EACK,iBAAtB9tH,EAE8B,UADhC8tH,EAAiBzC,EAAgBD,EAAcjtH,KAC5BvnD,WACjBk3K,EAAiB5/G,EAAO70D,cAAcT,iBAGxCk1K,EAD+B,WAAtB9tH,EACQkO,EAAO70D,cAAcT,gBAErBonD,EAEnB,IAAIH,EAAUotH,EAAqCa,EAAgBx4I,EAAc43I,GAGjF,GAAgC,SAA5BY,EAAel3K,UAAwB2mJ,EAAQjoH,GAUjDo4I,EAAa7tH,MAVmD,CAChE,IAAIkuH,EAAkBpB,EAAez+G,EAAO70D,eAC1CgnB,EAAS0tJ,EAAgB1tJ,OACzBnC,EAAQ6vJ,EAAgB7vJ,MAC1BwvJ,EAAW7tK,KAAOggD,EAAQhgD,IAAMggD,EAAQ+6E,UACxC8yC,EAAWzyC,OAAS56G,EAASw/B,EAAQhgD,IACrC6tK,EAAWrpJ,MAAQw7B,EAAQx7B,KAAOw7B,EAAQ3gC,WAC1CwuJ,EAAWvuJ,MAAQjB,EAAQ2hC,EAAQx7B,IACrC,CAIF,CAIA,IAAI2pJ,EAAqC,kBADzCzpJ,EAAUA,GAAW,GAMrB,OAJAmpJ,EAAWrpJ,MAAQ2pJ,EAAkBzpJ,EAAUA,EAAQF,MAAQ,EAC/DqpJ,EAAW7tK,KAAOmuK,EAAkBzpJ,EAAUA,EAAQ1kB,KAAO,EAC7D6tK,EAAWvuJ,OAAS6uJ,EAAkBzpJ,EAAUA,EAAQpF,OAAS,EACjEuuJ,EAAWzyC,QAAU+yC,EAAkBzpJ,EAAUA,EAAQ02G,QAAU,EAC5DyyC,CACT,CAgBA,SAASO,EAAqBtuH,EAAWuuH,EAAShgH,EAAQ/P,EAAW6B,GACnE,IAAIz7B,EAAUtmD,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,EAClF,IAAmC,IAA/B0hF,EAAU1wE,QAAQ,QACpB,OAAO0wE,EAET,IAAI+tH,EAAaD,EAAcv/G,EAAQ/P,EAAW55B,EAASy7B,GACvDktD,EAAQ,CACVrtG,IAAK,CACHqe,MAAOwvJ,EAAWxvJ,MAClBmC,OAAQ6tJ,EAAQruK,IAAM6tK,EAAW7tK,KAEnCsf,MAAO,CACLjB,MAAOwvJ,EAAWvuJ,MAAQ+uJ,EAAQ/uJ,MAClCkB,OAAQqtJ,EAAWrtJ,QAErB46G,OAAQ,CACN/8G,MAAOwvJ,EAAWxvJ,MAClBmC,OAAQqtJ,EAAWzyC,OAASizC,EAAQjzC,QAEtC52G,KAAM,CACJnG,MAAOgwJ,EAAQ7pJ,KAAOqpJ,EAAWrpJ,KACjChE,OAAQqtJ,EAAWrtJ,SAGnB8tJ,EAAcv1M,OAAOwL,KAAK8oI,GAAO9tI,KAAI,SAAUpC,GACjD,OAAO0uE,EAAS,CACd1uE,IAAKA,GACJkwI,EAAMlwI,GAAM,CACbmpF,MA3CWka,EA2CG6sC,EAAMlwI,GA1CZqjG,EAAKniD,MACNmiD,EAAKhgD,UAFlB,IAAiBggD,CA6Cf,IAAG70F,MAAK,SAAU9M,EAAGC,GACnB,OAAOA,EAAEwnF,KAAOznF,EAAEynF,IACpB,IACIioH,EAAgBD,EAAYxmL,QAAO,SAAU44E,GAC/C,IAAIriD,EAAQqiD,EAAMriD,MAChBmC,EAASkgD,EAAMlgD,OACjB,OAAOnC,GAASgwC,EAAOnI,aAAe1lC,GAAU6tC,EAAOlK,YACzD,IACIqqH,EAAoBD,EAAcz1M,OAAS,EAAIy1M,EAAc,GAAGpxM,IAAMmxM,EAAY,GAAGnxM,IACrFsxM,EAAY3uH,EAAUvvE,MAAM,KAAK,GACrC,OAAOi+L,GAAqBC,EAAY,IAAMA,EAAY,GAC5D,CAYA,SAASC,EAAoB5iK,EAAOuiD,EAAQ/P,GAC1C,IAAI+uH,EAAgBjvM,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,KAExF,OAAOgvM,EAAqC9uH,EADnB+uH,EAAgBM,EAA6Bt/G,GAAU69G,EAAuB79G,EAAQq9G,EAAiBptH,IACrD+uH,EAC7E,CASA,SAASsB,EAAcl1I,GACrB,IACI1X,EADS0X,EAAQjgC,cAAcuG,YACfge,iBAAiB0b,GACjC1pD,EAAIqS,WAAW2/B,EAAOg5G,WAAa,GAAK34I,WAAW2/B,EAAOwhH,cAAgB,GAC1Ev5J,EAAIoY,WAAW2/B,EAAO1C,YAAc,GAAKj9B,WAAW2/B,EAAO+jC,aAAe,GAK9E,MAJa,CACXznC,MAAOob,EAAQ9Z,YAAc31C,EAC7Bw2C,OAAQiZ,EAAQ9Y,aAAe5wC,EAGnC,CASA,SAAS6+L,EAAqB9uH,GAC5B,IAAIx8C,EAAO,CACTkhB,KAAM,QACNlF,MAAO,OACP87G,OAAQ,MACRp7H,IAAK,UAEP,OAAO8/C,EAAUp4E,QAAQ,0BAA0B,SAAU8G,GAC3D,OAAO80B,EAAK90B,EACd,GACF,CAYA,SAASqgM,EAAiBxgH,EAAQygH,EAAkBhvH,GAClDA,EAAYA,EAAUvvE,MAAM,KAAK,GAGjC,IAAIw+L,EAAaJ,EAActgH,GAG3B2gH,EAAgB,CAClB3wJ,MAAO0wJ,EAAW1wJ,MAClBmC,OAAQuuJ,EAAWvuJ,QAIjByuJ,GAAoD,IAA1C,CAAC,QAAS,QAAQ7/L,QAAQ0wE,GACpCovH,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAOtC,OANAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZrvH,IAAcqvH,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBF,EAAqBO,IAEhEH,CACT,CAWA,SAASlxK,EAAKt+B,EAAKuiC,GAEjB,OAAItjC,MAAMzF,UAAU8kC,KACXt+B,EAAIs+B,KAAKiE,GAIXviC,EAAIsoB,OAAOia,GAAO,EAC3B,CAoCA,SAASutK,EAAarvH,EAAW1nF,EAAMg3M,GAiBrC,YAhB8B1zM,IAAT0zM,EAAqBtvH,EAAYA,EAAUniF,MAAM,EA1BxE,SAAmB0B,EAAKqD,EAAMhG,GAE5B,GAAI4B,MAAMzF,UAAU+mE,UAClB,OAAOvgE,EAAIugE,WAAU,SAAU52B,GAC7B,OAAOA,EAAItmC,KAAUhG,CACvB,IAIF,IAAI4K,EAAQq2B,EAAKt+B,GAAK,SAAUR,GAC9B,OAAOA,EAAI6D,KAAUhG,CACvB,IACA,OAAO2C,EAAI4P,QAAQ3H,EACrB,CAa2Es4D,CAAUkgB,EAAW,OAAQsvH,KACvF30L,SAAQ,SAAU6yL,GAC3BA,EAAmB,UAErB/vM,QAAQkG,KAAK,yDAEf,IAAInE,EAAKguM,EAAmB,UAAKA,EAAShuM,GACtCguM,EAAS1pK,SAAWr/B,EAAWjF,KAIjClH,EAAKynF,QAAQqO,OAAS2+G,EAAcz0M,EAAKynF,QAAQqO,QACjD91F,EAAKynF,QAAQ1B,UAAY0uH,EAAcz0M,EAAKynF,QAAQ1B,WACpD/lF,EAAOkH,EAAGlH,EAAMk1M,GAEpB,IACOl1M,CACT,CASA,SAASinF,IAEP,IAAIl9E,KAAKwpC,MAAM0jK,YAAf,CAGA,IAAIj3M,EAAO,CACT61F,SAAU9rF,KACVy/C,OAAQ,CAAC,EACT0tJ,YAAa,CAAC,EACd7zK,WAAY,CAAC,EACb8zK,SAAS,EACT1vH,QAAS,CAAC,GAIZznF,EAAKynF,QAAQ1B,UAAYowH,EAAoBpsM,KAAKwpC,MAAOxpC,KAAK+rF,OAAQ/rF,KAAKg8E,UAAWh8E,KAAK41B,QAAQy3K,eAKnGp3M,EAAKunF,UAAYsuH,EAAqB9rM,KAAK41B,QAAQ4nD,UAAWvnF,EAAKynF,QAAQ1B,UAAWh8E,KAAK+rF,OAAQ/rF,KAAKg8E,UAAWh8E,KAAK41B,QAAQ+nD,UAAU7B,KAAK+B,kBAAmB79E,KAAK41B,QAAQ+nD,UAAU7B,KAAK15B,SAG9LnsD,EAAKk1F,kBAAoBl1F,EAAKunF,UAC9BvnF,EAAKo3M,cAAgBrtM,KAAK41B,QAAQy3K,cAGlCp3M,EAAKynF,QAAQqO,OAASwgH,EAAiBvsM,KAAK+rF,OAAQ91F,EAAKynF,QAAQ1B,UAAW/lF,EAAKunF,WACjFvnF,EAAKynF,QAAQqO,OAAO5uC,SAAWn9C,KAAK41B,QAAQy3K,cAAgB,QAAU,WAGtEp3M,EAAO+2M,EAAahtM,KAAK29E,UAAW1nF,GAI/B+J,KAAKwpC,MAAM8jK,UAIdttM,KAAK41B,QAAQy1D,SAASp1F,IAHtB+J,KAAKwpC,MAAM8jK,WAAY,EACvBttM,KAAK41B,QAAQs1D,SAASj1F,GAjCxB,CAqCF,CAQA,SAASs3M,EAAkB5vH,EAAW6vH,GACpC,OAAO7vH,EAAUhiF,MAAK,SAAUuiG,GAC9B,IAAI7kG,EAAO6kG,EAAK7kG,KAEhB,OADY6kG,EAAKz8D,SACCpoC,IAASm0M,CAC7B,GACF,CASA,SAASC,EAAyBxyM,GAGhC,IAFA,IAAIyyM,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAY1yM,EAAS+a,OAAO,GAAGzP,cAAgBtL,EAASO,MAAM,GACzDlF,EAAI,EAAGA,EAAIo3M,EAASl3M,OAAQF,IAAK,CACxC,IAAIixB,EAASmmL,EAASp3M,GAClBs3M,EAAUrmL,EAAS,GAAKA,EAASomL,EAAY1yM,EACjD,GAA4C,qBAAjCjD,SAASg4C,KAAKf,MAAM2+J,GAC7B,OAAOA,CAEX,CACA,OAAO,IACT,CAOA,SAAS3wH,IAqBP,OApBAj9E,KAAKwpC,MAAM0jK,aAAc,EAGrBK,EAAkBvtM,KAAK29E,UAAW,gBACpC39E,KAAK+rF,OAAOvvD,gBAAgB,eAC5Bx8B,KAAK+rF,OAAO98C,MAAMkO,SAAW,GAC7Bn9C,KAAK+rF,OAAO98C,MAAMvR,IAAM,GACxB19B,KAAK+rF,OAAO98C,MAAMiT,KAAO,GACzBliD,KAAK+rF,OAAO98C,MAAM+N,MAAQ,GAC1Bh9C,KAAK+rF,OAAO98C,MAAM6pH,OAAS,GAC3B94J,KAAK+rF,OAAO98C,MAAM4+J,WAAa,GAC/B7tM,KAAK+rF,OAAO98C,MAAMw+J,EAAyB,cAAgB,IAE7DztM,KAAK8tM,wBAID9tM,KAAK41B,QAAQm4K,iBACf/tM,KAAK+rF,OAAO/3D,WAAWC,YAAYj0B,KAAK+rF,QAEnC/rF,IACT,CAOA,SAASq7I,EAAUlkF,GACjB,IAAIjgC,EAAgBigC,EAAQjgC,cAC5B,OAAOA,EAAgBA,EAAcuG,YAAcniC,MACrD,CACA,SAAS0yM,EAAsBznC,EAAc5tK,EAAOqD,EAAUiyM,GAC5D,IAAIC,EAAmC,SAA1B3nC,EAAa9xI,SACtBt7B,EAAS+0M,EAAS3nC,EAAarvI,cAAcuG,YAAc8oI,EAC/DptK,EAAOwkC,iBAAiBhlC,EAAOqD,EAAU,CACvCmyM,SAAS,IAEND,GACHF,EAAsB9E,EAAgB/vM,EAAO66B,YAAar7B,EAAOqD,EAAUiyM,GAE7EA,EAAcn3M,KAAKqC,EACrB,CAQA,SAASi1M,EAAoBpyH,EAAWpmD,EAAS4T,EAAO6kK,GAEtD7kK,EAAM6kK,YAAcA,EACpBhzD,EAAUr/D,GAAWr+C,iBAAiB,SAAU6L,EAAM6kK,YAAa,CACjEF,SAAS,IAIX,IAAIG,EAAgBpF,EAAgBltH,GAIpC,OAHAgyH,EAAsBM,EAAe,SAAU9kK,EAAM6kK,YAAa7kK,EAAMykK,eACxEzkK,EAAM8kK,cAAgBA,EACtB9kK,EAAM+kK,eAAgB,EACf/kK,CACT,CAQA,SAASglK,IACFxuM,KAAKwpC,MAAM+kK,gBACdvuM,KAAKwpC,MAAQ4kK,EAAoBpuM,KAAKg8E,UAAWh8E,KAAK41B,QAAS51B,KAAKwpC,MAAOxpC,KAAKm9E,gBAEpF,CAgCA,SAAS2wH,IAxBT,IAA8B9xH,EAAWxyC,EAyBnCxpC,KAAKwpC,MAAM+kK,gBACbh4F,qBAAqBv2G,KAAKm9E,gBAC1Bn9E,KAAKwpC,OA3BqBwyC,EA2BQh8E,KAAKg8E,UA3BFxyC,EA2BaxpC,KAAKwpC,MAzBzD6xG,EAAUr/D,GAAWjwC,oBAAoB,SAAUvC,EAAM6kK,aAGzD7kK,EAAMykK,cAAc31L,SAAQ,SAAUnf,GACpCA,EAAO4yC,oBAAoB,SAAUvC,EAAM6kK,YAC7C,IAGA7kK,EAAM6kK,YAAc,KACpB7kK,EAAMykK,cAAgB,GACtBzkK,EAAM8kK,cAAgB,KACtB9kK,EAAM+kK,eAAgB,EACf/kK,GAeT,CASA,SAAS6qB,EAAUt5D,GACjB,MAAa,KAANA,IAAauE,MAAMwgB,WAAW/kB,KAAO+O,SAAS/O,EACvD,CAUA,SAAS0zM,EAAUt3I,EAAS1X,GAC1BhpD,OAAOwL,KAAKw9C,GAAQnnC,SAAQ,SAAU/X,GACpC,IAAI8H,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQyE,QAAQvM,IAAgB8zD,EAAU5U,EAAOl/C,MACjG8H,EAAO,MAET8uD,EAAQloB,MAAM1uC,GAAQk/C,EAAOl/C,GAAQ8H,CACvC,GACF,CAuHA,IAAIqmM,EAAYp3D,GAAa,WAAWzxI,KAAK2tE,UAAU84C,WA0GvD,SAASqiF,EAAmBhxH,EAAWixH,EAAgBC,GACrD,IAAI7pG,EAAaxpE,EAAKmiD,GAAW,SAAUugB,GAEzC,OADWA,EAAK7kG,OACAu1M,CAClB,IACIE,IAAe9pG,GAAcrnB,EAAUhiF,MAAK,SAAUwvM,GACxD,OAAOA,EAAS9xM,OAASw1M,GAAiB1D,EAAS1pK,SAAW0pK,EAAS/pJ,MAAQ4jD,EAAW5jD,KAC5F,IACA,IAAK0tJ,EAAY,CACf,IAAIC,EAAc,IAAMH,EAAiB,IACrCI,EAAY,IAAMH,EAAgB,IACtCzzM,QAAQkG,KAAK0tM,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,IACnJ,CACA,OAAOD,CACT,CA6HA,IAAIG,EAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,EAAkBD,EAAWzzM,MAAM,GAYvC,SAAS2zM,EAAU3xH,GACjB,IAAIgjH,EAAU1kM,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,IAAmBA,UAAU,GACzEkyB,EAAQkhL,EAAgBpiM,QAAQ0wE,GAChCtgF,EAAMgyM,EAAgB1zM,MAAMwyB,EAAQ,GAAGnb,OAAOq8L,EAAgB1zM,MAAM,EAAGwyB,IAC3E,OAAOwyK,EAAUtjM,EAAIuqC,UAAYvqC,CACnC,CACA,IAAIkyM,EACI,OADJA,EAES,YAFTA,GAGgB,mBA4KpB,SAASC,GAAY7tL,EAAQkrL,EAAeF,EAAkB8C,GAC5D,IAAI5xH,EAAU,CAAC,EAAG,GAKd6xH,GAA0D,IAA9C,CAAC,QAAS,QAAQziM,QAAQwiM,GAItCE,EAAYhuL,EAAOvT,MAAM,WAAWhR,KAAI,SAAUgiJ,GACpD,OAAOA,EAAK3qF,MACd,IAIIm7I,EAAUD,EAAU1iM,QAAQ0uB,EAAKg0K,GAAW,SAAUvwD,GACxD,OAAgC,IAAzBA,EAAKl7C,OAAO,OACrB,KACIyrG,EAAUC,KAAiD,IAArCD,EAAUC,GAAS3iM,QAAQ,MACnD1R,QAAQkG,KAAK,gFAKf,IAAIouM,EAAa,cACb/oI,GAAmB,IAAb8oI,EAAiB,CAACD,EAAUh0M,MAAM,EAAGi0M,GAAS58L,OAAO,CAAC28L,EAAUC,GAASxhM,MAAMyhM,GAAY,KAAM,CAACF,EAAUC,GAASxhM,MAAMyhM,GAAY,IAAI78L,OAAO28L,EAAUh0M,MAAMi0M,EAAU,KAAO,CAACD,GAqC9L,OAlCA7oI,EAAMA,EAAI1pE,KAAI,SAAU4pE,EAAI74C,GAE1B,IAAI8+K,GAAyB,IAAV9+K,GAAeuhL,EAAYA,GAAa,SAAW,QAClEI,GAAoB,EACxB,OAAO9oI,EAGNvQ,QAAO,SAAU/5D,EAAGC,GACnB,MAAwB,KAApBD,EAAEA,EAAE/F,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAKsW,QAAQtQ,IAC/CD,EAAEA,EAAE/F,OAAS,GAAKgG,EAClBmzM,GAAoB,EACbpzM,GACEozM,GACTpzM,EAAEA,EAAE/F,OAAS,IAAMgG,EACnBmzM,GAAoB,EACbpzM,GAEAA,EAAEsW,OAAOrW,EAEpB,GAAG,IAEFS,KAAI,SAAUotH,GACb,OArGN,SAAiBA,EAAKyiF,EAAaJ,EAAeF,GAEhD,IAAIv+L,EAAQo8G,EAAIllH,MAAM,6BAClB5K,GAAS0T,EAAM,GACf5F,EAAO4F,EAAM,GAGjB,IAAK1T,EACH,OAAO8vH,EAET,GAA0B,IAAtBhiH,EAAKyE,QAAQ,KAAY,CAY3B,OADW49L,EARJ,OADCriM,EAEMqkM,EAKAF,GAGFM,GAAe,IAAMvyM,CACnC,CAAO,GAAa,OAAT8N,GAA0B,OAATA,EAQ1B,OALa,OAATA,EACKnE,KAAKI,IAAItM,SAASy+B,gBAAgBorD,aAAcvmF,OAAOi0F,aAAe,GAEtErrF,KAAKI,IAAItM,SAASy+B,gBAAgBmtD,YAAatoF,OAAO0nF,YAAc,IAE/D,IAAMzoF,EAIpB,OAAOA,CAEX,CAgEaq1M,CAAQvlF,EAAKyiF,EAAaJ,EAAeF,EAClD,GACF,IAGA7lI,EAAIruD,SAAQ,SAAUuuD,EAAI74C,GACxB64C,EAAGvuD,SAAQ,SAAU2mI,EAAM4wD,GACrBx7I,EAAU4qF,KACZvhE,EAAQ1vD,IAAUixH,GAA2B,MAAnBp4E,EAAGgpI,EAAS,IAAc,EAAI,GAE5D,GACF,IACOnyH,CACT,CAgNA,IAAIC,GAAY,CASd1mF,MAAO,CAELmqD,MAAO,IAEP3f,SAAS,EAETtkC,GAhHJ,SAAelH,GACb,IAAIunF,EAAYvnF,EAAKunF,UACjB8xH,EAAgB9xH,EAAUvvE,MAAM,KAAK,GACrC6hM,EAAiBtyH,EAAUvvE,MAAM,KAAK,GAG1C,GAAI6hM,EAAgB,CAClB,IAAIC,EAAgB95M,EAAKynF,QACvB1B,EAAY+zH,EAAc/zH,UAC1B+P,EAASgkH,EAAchkH,OACrBikH,GAA2D,IAA9C,CAAC,SAAU,OAAOljM,QAAQwiM,GACvCW,EAAOD,EAAa,OAAS,MAC7BlD,EAAckD,EAAa,QAAU,SACrCE,EAAe,CACjB/vK,MAAOlmC,EAAe,CAAC,EAAGg2M,EAAMj0H,EAAUi0H,IAC1Cv6K,IAAKz7B,EAAe,CAAC,EAAGg2M,EAAMj0H,EAAUi0H,GAAQj0H,EAAU8wH,GAAe/gH,EAAO+gH,KAElF72M,EAAKynF,QAAQqO,OAASxiB,EAAS,CAAC,EAAGwiB,EAAQmkH,EAAaJ,GAC1D,CACA,OAAO75M,CACT,GAoIEurB,OAAQ,CAEN4/B,MAAO,IAEP3f,SAAS,EAETtkC,GAlQJ,SAAgBlH,EAAMioG,GACpB,IAAI18E,EAAS08E,EAAK18E,OACdg8D,EAAYvnF,EAAKunF,UACnBuyH,EAAgB95M,EAAKynF,QACrBqO,EAASgkH,EAAchkH,OACvB/P,EAAY+zH,EAAc/zH,UACxBszH,EAAgB9xH,EAAUvvE,MAAM,KAAK,GACrCyvE,OAAU,EAoBd,OAlBEA,EADErpB,GAAW7yC,GACH,EAAEA,EAAQ,GAEV6tL,GAAY7tL,EAAQuqE,EAAQ/P,EAAWszH,GAE7B,SAAlBA,GACFvjH,EAAOruD,KAAOggD,EAAQ,GACtBqO,EAAO7pC,MAAQw7B,EAAQ,IACI,UAAlB4xH,GACTvjH,EAAOruD,KAAOggD,EAAQ,GACtBqO,EAAO7pC,MAAQw7B,EAAQ,IACI,QAAlB4xH,GACTvjH,EAAO7pC,MAAQw7B,EAAQ,GACvBqO,EAAOruD,KAAOggD,EAAQ,IACK,WAAlB4xH,IACTvjH,EAAO7pC,MAAQw7B,EAAQ,GACvBqO,EAAOruD,KAAOggD,EAAQ,IAExBznF,EAAK81F,OAASA,EACP91F,CACT,EA0OIurB,OAAQ,GAmBVo8D,gBAAiB,CAEfx8B,MAAO,IAEP3f,SAAS,EAETtkC,GA1PJ,SAAyBlH,EAAM2/B,GAC7B,IAAIioD,EAAoBjoD,EAAQioD,mBAAqB4rH,EAAgBxzM,EAAK61F,SAASC,QAK/E91F,EAAK61F,SAAS9P,YAAc6B,IAC9BA,EAAoB4rH,EAAgB5rH,IAMtC,IAAIsyH,EAAgB1C,EAAyB,aACzC2C,EAAen6M,EAAK61F,SAASC,OAAO98C,MACpCvR,EAAM0yK,EAAa1yK,IACrBwkB,EAAOkuJ,EAAaluJ,KACpBmuJ,EAAYD,EAAaD,GAC3BC,EAAa1yK,IAAM,GACnB0yK,EAAaluJ,KAAO,GACpBkuJ,EAAaD,GAAiB,GAC9B,IAAI5E,EAAaD,EAAcr1M,EAAK61F,SAASC,OAAQ91F,EAAK61F,SAAS9P,UAAWpmD,EAAQwsB,QAASy7B,EAAmB5nF,EAAKo3M,eAIvH+C,EAAa1yK,IAAMA,EACnB0yK,EAAaluJ,KAAOA,EACpBkuJ,EAAaD,GAAiBE,EAC9Bz6K,EAAQ21K,WAAaA,EACrB,IAAInqJ,EAAQxrB,EAAQ3sB,SAChB8iF,EAAS91F,EAAKynF,QAAQqO,OACtBtsD,EAAQ,CACV+L,QAAS,SAAiBgyC,GACxB,IAAIjjF,EAAQwxF,EAAOvO,GAInB,OAHIuO,EAAOvO,GAAa+tH,EAAW/tH,KAAe5nD,EAAQ06K,sBACxD/1M,EAAQ2J,KAAKI,IAAIynF,EAAOvO,GAAY+tH,EAAW/tH,KAE1CvjF,EAAe,CAAC,EAAGujF,EAAWjjF,EACvC,EACAy3K,UAAW,SAAmBx0F,GAC5B,IAAIovH,EAAyB,UAAdpvH,EAAwB,OAAS,MAC5CjjF,EAAQwxF,EAAO6gH,GAInB,OAHI7gH,EAAOvO,GAAa+tH,EAAW/tH,KAAe5nD,EAAQ06K,sBACxD/1M,EAAQ2J,KAAKqL,IAAIw8E,EAAO6gH,GAAWrB,EAAW/tH,IAA4B,UAAdA,EAAwBuO,EAAOhwC,MAAQgwC,EAAO7tC,UAErGjkD,EAAe,CAAC,EAAG2yM,EAAUryM,EACtC,GAOF,OALA6mD,EAAM9oC,SAAQ,SAAUklE,GACtB,IAAIyyH,GAA+C,IAAxC,CAAC,OAAQ,OAAOnjM,QAAQ0wE,GAAoB,UAAY,YACnEuO,EAASxiB,EAAS,CAAC,EAAGwiB,EAAQtsD,EAAMwwK,GAAMzyH,GAC5C,IACAvnF,EAAKynF,QAAQqO,OAASA,EACf91F,CACT,EA0MIgT,SAAU,CAAC,OAAQ,QAAS,MAAO,UAOnCm5C,QAAS,EAMTy7B,kBAAmB,gBAWrB0yH,aAAc,CAEZnvJ,MAAO,IAEP3f,SAAS,EAETtkC,GA/dJ,SAAsBlH,GACpB,IAAI85M,EAAgB95M,EAAKynF,QACvBqO,EAASgkH,EAAchkH,OACvB/P,EAAY+zH,EAAc/zH,UACxBwB,EAAYvnF,EAAKunF,UAAUvvE,MAAM,KAAK,GACtCvE,EAAQxF,KAAKwF,MACbsmM,GAAuD,IAA1C,CAAC,MAAO,UAAUljM,QAAQ0wE,GACvCyyH,EAAOD,EAAa,QAAU,SAC9BQ,EAASR,EAAa,OAAS,MAC/BlD,EAAckD,EAAa,QAAU,SAOzC,OANIjkH,EAAOkkH,GAAQvmM,EAAMsyE,EAAUw0H,MACjCv6M,EAAKynF,QAAQqO,OAAOykH,GAAU9mM,EAAMsyE,EAAUw0H,IAAWzkH,EAAO+gH,IAE9D/gH,EAAOykH,GAAU9mM,EAAMsyE,EAAUi0H,MACnCh6M,EAAKynF,QAAQqO,OAAOykH,GAAU9mM,EAAMsyE,EAAUi0H,KAEzCh6M,CACT,GA0dEg1F,MAAO,CAEL7pC,MAAO,IAEP3f,SAAS,EAETtkC,GAxtBJ,SAAelH,EAAM2/B,GACnB,IAAI66K,EAGJ,IAAK9B,EAAmB14M,EAAK61F,SAASnO,UAAW,QAAS,gBACxD,OAAO1nF,EAET,IAAIy6M,EAAe96K,EAAQuhC,QAG3B,GAA4B,kBAAjBu5I,GAIT,KAHAA,EAAez6M,EAAK61F,SAASC,OAAO/tD,cAAc0yK,IAIhD,OAAOz6M,OAKT,IAAKA,EAAK61F,SAASC,OAAOr0D,SAASg5K,GAEjC,OADAt1M,QAAQkG,KAAK,iEACNrL,EAGX,IAAIunF,EAAYvnF,EAAKunF,UAAUvvE,MAAM,KAAK,GACtC8hM,EAAgB95M,EAAKynF,QACvBqO,EAASgkH,EAAchkH,OACvB/P,EAAY+zH,EAAc/zH,UACxBg0H,GAAuD,IAA1C,CAAC,OAAQ,SAASljM,QAAQ0wE,GACvCv9E,EAAM+vM,EAAa,SAAW,QAC9BW,EAAkBX,EAAa,MAAQ,OACvCC,EAAOU,EAAgBnoM,cACvBooM,EAAUZ,EAAa,OAAS,MAChCQ,EAASR,EAAa,SAAW,QACjCa,EAAmBxE,EAAcqE,GAAczwM,GAQ/C+7E,EAAUw0H,GAAUK,EAAmB9kH,EAAOkkH,KAChDh6M,EAAKynF,QAAQqO,OAAOkkH,IAASlkH,EAAOkkH,IAASj0H,EAAUw0H,GAAUK,IAG/D70H,EAAUi0H,GAAQY,EAAmB9kH,EAAOykH,KAC9Cv6M,EAAKynF,QAAQqO,OAAOkkH,IAASj0H,EAAUi0H,GAAQY,EAAmB9kH,EAAOykH,IAE3Ev6M,EAAKynF,QAAQqO,OAAS2+G,EAAcz0M,EAAKynF,QAAQqO,QAGjD,IAAI+kH,EAAS90H,EAAUi0H,GAAQj0H,EAAU/7E,GAAO,EAAI4wM,EAAmB,EAInE1hK,EAAM65J,EAAyB/yM,EAAK61F,SAASC,QAC7CglH,EAAmBjxL,WAAWqvB,EAAI,SAAWwhK,IAC7CK,EAAmBlxL,WAAWqvB,EAAI,SAAWwhK,EAAkB,UAC/DM,EAAYH,EAAS76M,EAAKynF,QAAQqO,OAAOkkH,GAAQc,EAAmBC,EAMxE,OAHAC,EAAY/sM,KAAKI,IAAIJ,KAAKqL,IAAIw8E,EAAO9rF,GAAO4wM,EAAkBI,GAAY,GAC1Eh7M,EAAKy6M,aAAeA,EACpBz6M,EAAKynF,QAAQuN,OAAmChxF,EAA1Bw2M,EAAsB,CAAC,EAAuCR,EAAM/rM,KAAK+c,MAAMgwL,IAAah3M,EAAew2M,EAAqBG,EAAS,IAAKH,GAC7Jx6M,CACT,EAupBIkhE,QAAS,aAaX2kB,KAAM,CAEJ16B,MAAO,IAEP3f,SAAS,EAETtkC,GAvlBJ,SAAclH,EAAM2/B,GAElB,GAAI23K,EAAkBt3M,EAAK61F,SAASnO,UAAW,SAC7C,OAAO1nF,EAET,GAAIA,EAAKm3M,SAAWn3M,EAAKunF,YAAcvnF,EAAKk1F,kBAE1C,OAAOl1F,EAET,IAAIs1M,EAAaD,EAAcr1M,EAAK61F,SAASC,OAAQ91F,EAAK61F,SAAS9P,UAAWpmD,EAAQwsB,QAASxsB,EAAQioD,kBAAmB5nF,EAAKo3M,eAC3H7vH,EAAYvnF,EAAKunF,UAAUvvE,MAAM,KAAK,GACtCijM,EAAoB5E,EAAqB9uH,GACzC2uH,EAAYl2M,EAAKunF,UAAUvvE,MAAM,KAAK,IAAM,GAC5CkjM,EAAY,GAChB,OAAQv7K,EAAQo1D,UACd,KAAKokH,EACH+B,EAAY,CAAC3zH,EAAW0zH,GACxB,MACF,KAAK9B,EACH+B,EAAYhC,EAAU3xH,GACtB,MACF,KAAK4xH,GACH+B,EAAYhC,EAAU3xH,GAAW,GACjC,MACF,QACE2zH,EAAYv7K,EAAQo1D,SA8CxB,OA5CAmmH,EAAU74L,SAAQ,SAAUsqC,EAAM50B,GAChC,GAAIwvD,IAAc56B,GAAQuuJ,EAAU36M,SAAWw3B,EAAQ,EACrD,OAAO/3B,EAETunF,EAAYvnF,EAAKunF,UAAUvvE,MAAM,KAAK,GACtCijM,EAAoB5E,EAAqB9uH,GACzC,IAAIkvH,EAAgBz2M,EAAKynF,QAAQqO,OAC7BqlH,EAAan7M,EAAKynF,QAAQ1B,UAG1BtyE,EAAQxF,KAAKwF,MACb2nM,EAA4B,SAAd7zH,GAAwB9zE,EAAMgjM,EAAc1vJ,OAAStzC,EAAM0nM,EAAWlvJ,OAAuB,UAAds7B,GAAyB9zE,EAAMgjM,EAAcxqJ,MAAQx4C,EAAM0nM,EAAWp0J,QAAwB,QAAdwgC,GAAuB9zE,EAAMgjM,EAAc5zC,QAAUpvJ,EAAM0nM,EAAW1zK,MAAsB,WAAd8/C,GAA0B9zE,EAAMgjM,EAAchvK,KAAOh0B,EAAM0nM,EAAWt4C,QACjUw4C,EAAgB5nM,EAAMgjM,EAAcxqJ,MAAQx4C,EAAM6hM,EAAWrpJ,MAC7DqvJ,EAAiB7nM,EAAMgjM,EAAc1vJ,OAAStzC,EAAM6hM,EAAWvuJ,OAC/Dw0J,EAAe9nM,EAAMgjM,EAAchvK,KAAOh0B,EAAM6hM,EAAW7tK,KAC3D+zK,EAAkB/nM,EAAMgjM,EAAc5zC,QAAUpvJ,EAAM6hM,EAAWzyC,QACjE44C,EAAoC,SAAdl0H,GAAwB8zH,GAA+B,UAAd9zH,GAAyB+zH,GAAgC,QAAd/zH,GAAuBg0H,GAA8B,WAAdh0H,GAA0Bi0H,EAG3KzB,GAAuD,IAA1C,CAAC,MAAO,UAAUljM,QAAQ0wE,GAGvCm0H,IAA0B/7K,EAAQg8K,iBAAmB5B,GAA4B,UAAd7D,GAAyBmF,GAAiBtB,GAA4B,QAAd7D,GAAuBoF,IAAmBvB,GAA4B,UAAd7D,GAAyBqF,IAAiBxB,GAA4B,QAAd7D,GAAuBsF,GAGlQI,IAA8Bj8K,EAAQk8K,0BAA4B9B,GAA4B,UAAd7D,GAAyBoF,GAAkBvB,GAA4B,QAAd7D,GAAuBmF,IAAkBtB,GAA4B,UAAd7D,GAAyBsF,IAAoBzB,GAA4B,QAAd7D,GAAuBqF,GAClRO,EAAmBJ,GAAyBE,GAC5CR,GAAeK,GAAuBK,KAExC97M,EAAKm3M,SAAU,GACXiE,GAAeK,KACjBl0H,EAAY2zH,EAAUnjL,EAAQ,IAE5B+jL,IACF5F,EAvIR,SAA8BA,GAC5B,MAAkB,QAAdA,EACK,QACgB,UAAdA,EACF,MAEFA,CACT,CAgIoB6F,CAAqB7F,IAEnCl2M,EAAKunF,UAAYA,GAAa2uH,EAAY,IAAMA,EAAY,IAI5Dl2M,EAAKynF,QAAQqO,OAASxiB,EAAS,CAAC,EAAGtzE,EAAKynF,QAAQqO,OAAQwgH,EAAiBt2M,EAAK61F,SAASC,OAAQ91F,EAAKynF,QAAQ1B,UAAW/lF,EAAKunF,YAC5HvnF,EAAO+2M,EAAa/2M,EAAK61F,SAASnO,UAAW1nF,EAAM,QAEvD,IACOA,CACT,EAshBI+0F,SAAU,OAKV5oC,QAAS,EAOTy7B,kBAAmB,WAQnB+zH,gBAAgB,EAQhBE,yBAAyB,GAS3BG,MAAO,CAEL7wJ,MAAO,IAEP3f,SAAS,EAETtkC,GA1PJ,SAAelH,GACb,IAAIunF,EAAYvnF,EAAKunF,UACjB8xH,EAAgB9xH,EAAUvvE,MAAM,KAAK,GACrC8hM,EAAgB95M,EAAKynF,QACvBqO,EAASgkH,EAAchkH,OACvB/P,EAAY+zH,EAAc/zH,UACxB2wH,GAAwD,IAA9C,CAAC,OAAQ,SAAS7/L,QAAQwiM,GACpC4C,GAA6D,IAA5C,CAAC,MAAO,QAAQplM,QAAQwiM,GAI7C,OAHAvjH,EAAO4gH,EAAU,OAAS,OAAS3wH,EAAUszH,IAAkB4C,EAAiBnmH,EAAO4gH,EAAU,QAAU,UAAY,GACvH12M,EAAKunF,UAAY8uH,EAAqB9uH,GACtCvnF,EAAKynF,QAAQqO,OAAS2+G,EAAc3+G,GAC7B91F,CACT,GA0PEk6C,KAAM,CAEJiR,MAAO,IAEP3f,SAAS,EAETtkC,GA7SJ,SAAclH,GACZ,IAAK04M,EAAmB14M,EAAK61F,SAASnO,UAAW,OAAQ,mBACvD,OAAO1nF,EAET,IAAI81M,EAAU91M,EAAKynF,QAAQ1B,UACvBm2H,EAAQ32K,EAAKvlC,EAAK61F,SAASnO,WAAW,SAAUwtH,GAClD,MAAyB,oBAAlBA,EAAS9xM,IAClB,IAAGkyM,WACH,GAAIQ,EAAQjzC,OAASq5C,EAAMz0K,KAAOquK,EAAQ7pJ,KAAOiwJ,EAAMn1J,OAAS+uJ,EAAQruK,IAAMy0K,EAAMr5C,QAAUizC,EAAQ/uJ,MAAQm1J,EAAMjwJ,KAAM,CAExH,IAAkB,IAAdjsD,EAAKk6C,KACP,OAAOl6C,EAETA,EAAKk6C,MAAO,EACZl6C,EAAKqjC,WAAW,uBAAyB,EAC3C,KAAO,CAEL,IAAkB,IAAdrjC,EAAKk6C,KACP,OAAOl6C,EAETA,EAAKk6C,MAAO,EACZl6C,EAAKqjC,WAAW,wBAAyB,CAC3C,CACA,OAAOrjC,CACT,GAsSEm8M,aAAc,CAEZhxJ,MAAO,IAEP3f,SAAS,EAETtkC,GAh8BJ,SAAsBlH,EAAM2/B,GAC1B,IAAInoB,EAAImoB,EAAQnoB,EACd/F,EAAIkuB,EAAQluB,EACVqkF,EAAS91F,EAAKynF,QAAQqO,OAItBsmH,EAA8B72K,EAAKvlC,EAAK61F,SAASnO,WAAW,SAAUwtH,GACxE,MAAyB,eAAlBA,EAAS9xM,IAClB,IAAGi5M,qBACiC/4M,IAAhC84M,GACFj3M,QAAQkG,KAAK,iIAEf,IAAIgxM,OAAkD/4M,IAAhC84M,EAA4CA,EAA8Bz8K,EAAQ08K,gBACpGn/I,EAAes2I,EAAgBxzM,EAAK61F,SAASC,QAC7CwmH,EAAmBvwJ,EAAsBmR,GAGzC1T,EAAS,CACXtC,SAAU4uC,EAAO5uC,UAEfugC,EAtDN,SAA2BznF,EAAMu8M,GAC/B,IAAIzC,EAAgB95M,EAAKynF,QACvBqO,EAASgkH,EAAchkH,OACvB/P,EAAY+zH,EAAc/zH,UACxB/6D,EAAQ/c,KAAK+c,MACfvX,EAAQxF,KAAKwF,MACX+oM,EAAU,SAAiB7qK,GAC7B,OAAOA,CACT,EACI8qK,EAAiBzxL,EAAM+6D,EAAUjgC,OACjC42J,EAAc1xL,EAAM8qE,EAAOhwC,OAC3Bi0J,GAA4D,IAA/C,CAAC,OAAQ,SAASljM,QAAQ7W,EAAKunF,WAC5Co1H,GAA+C,IAAjC38M,EAAKunF,UAAU1wE,QAAQ,KAGrC+lM,EAAuBL,EAAwBxC,GAAc4C,GAF3CF,EAAiB,IAAMC,EAAc,EAEuC1xL,EAAQvX,EAAjE+oM,EACrCK,EAAqBN,EAAwBvxL,EAAVwxL,EACvC,MAAO,CACLvwJ,KAAM2wJ,EAJWH,EAAiB,IAAM,GAAKC,EAAc,IAAM,IAItBC,GAAeJ,EAAczmH,EAAO7pC,KAAO,EAAI6pC,EAAO7pC,MACjGxkB,IAAKo1K,EAAkB/mH,EAAOruD,KAC9Bo7H,OAAQg6C,EAAkB/mH,EAAO+sE,QACjC97G,MAAO61J,EAAoB9mH,EAAO/uC,OAEtC,CA+BgB+1J,CAAkB98M,EAAMqF,OAAO03M,iBAAmB,IAAMtE,GAClErE,EAAc,WAAN58L,EAAiB,MAAQ,SACjC68L,EAAc,UAAN5iM,EAAgB,OAAS,QAKjCurM,EAAmBxF,EAAyB,aAW5CvrJ,OAAO,EACTxkB,OAAM,EAqBR,GAhBIA,EAJU,WAAV2sK,EAG4B,SAA1Bl3I,EAAa1+B,UACR0+B,EAAa0uB,aAAenE,EAAQo7E,QAEpCy5C,EAAiBr0J,OAASw/B,EAAQo7E,OAGrCp7E,EAAQhgD,IAIZwkB,EAFU,UAAVooJ,EAC4B,SAA1Bn3I,EAAa1+B,UACP0+B,EAAaywB,YAAclG,EAAQ1gC,OAEnCu1J,EAAiBx2J,MAAQ2hC,EAAQ1gC,MAGpC0gC,EAAQx7B,KAEbowJ,GAAmBW,EACrBxzJ,EAAOwzJ,GAAoB,eAAiB/wJ,EAAO,OAASxkB,EAAM,SAClE+hB,EAAO4qJ,GAAS,EAChB5qJ,EAAO6qJ,GAAS,EAChB7qJ,EAAOouJ,WAAa,gBACf,CAEL,IAAIqF,EAAsB,WAAV7I,GAAsB,EAAI,EACtC8I,EAAuB,UAAV7I,GAAqB,EAAI,EAC1C7qJ,EAAO4qJ,GAAS3sK,EAAMw1K,EACtBzzJ,EAAO6qJ,GAASpoJ,EAAOixJ,EACvB1zJ,EAAOouJ,WAAaxD,EAAQ,KAAOC,CACrC,CAGA,IAAIhxK,EAAa,CACf,cAAerjC,EAAKunF,WAOtB,OAHAvnF,EAAKqjC,WAAaiwC,EAAS,CAAC,EAAGjwC,EAAYrjC,EAAKqjC,YAChDrjC,EAAKwpD,OAAS8pB,EAAS,CAAC,EAAG9pB,EAAQxpD,EAAKwpD,QACxCxpD,EAAKk3M,YAAc5jI,EAAS,CAAC,EAAGtzE,EAAKynF,QAAQuN,MAAOh1F,EAAKk3M,aAClDl3M,CACT,EAi3BIq8M,iBAAiB,EAMjB7kM,EAAG,SAMH/F,EAAG,SAiBLo2E,WAAY,CAEV18B,MAAO,IAEP3f,SAAS,EAETtkC,GA3kCJ,SAAoBlH,GApBpB,IAAuBkhE,EAAS79B,EAmC9B,OAVAm1K,EAAUx4M,EAAK61F,SAASC,OAAQ91F,EAAKwpD,QAzBhB0X,EA6BPlhE,EAAK61F,SAASC,OA7BEzyD,EA6BMrjC,EAAKqjC,WA5BzC7iC,OAAOwL,KAAKq3B,GAAYhhB,SAAQ,SAAU/X,IAE1B,IADF+4B,EAAW/4B,GAErB42D,EAAQ9+D,aAAakI,EAAM+4B,EAAW/4B,IAEtC42D,EAAQ36B,gBAAgBj8B,EAE5B,IAwBItK,EAAKy6M,cAAgBj6M,OAAOwL,KAAKhM,EAAKk3M,aAAa32M,QACrDi4M,EAAUx4M,EAAKy6M,aAAcz6M,EAAKk3M,aAE7Bl3M,CACT,EA6jCIm9M,OAjjCJ,SAA0Bp3H,EAAW+P,EAAQn2D,EAASy9K,EAAiB7pK,GAErE,IAAIgjK,EAAmBJ,EAAoB5iK,EAAOuiD,EAAQ/P,EAAWpmD,EAAQy3K,eAKzE7vH,EAAYsuH,EAAqBl2K,EAAQ4nD,UAAWgvH,EAAkBzgH,EAAQ/P,EAAWpmD,EAAQ+nD,UAAU7B,KAAK+B,kBAAmBjoD,EAAQ+nD,UAAU7B,KAAK15B,SAQ9J,OAPA2pC,EAAO1zF,aAAa,cAAemlF,GAInCixH,EAAU1iH,EAAQ,CAChB5uC,SAAUvnB,EAAQy3K,cAAgB,QAAU,aAEvCz3K,CACT,EAwiCI08K,qBAAiB/4M,IAuCjB+5M,GAAW,CAKb91H,UAAW,SAKX6vH,eAAe,EAKfkB,eAAe,EAMfR,iBAAiB,EAOjB7iH,SAAU,WAAqB,EAS/BG,SAAU,WAAqB,EAM/B1N,UAAWA,IAeT7U,GAAS,WASX,SAASA,EAAOkT,EAAW+P,GACzB,IAAI3zB,EAAQp4D,KACR41B,EAAU95B,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,GA77DlE,SAAUgwF,EAAU1iB,GACvC,KAAM0iB,aAAoB1iB,GACxB,MAAM,IAAI1+B,UAAU,oCAExB,CA07DI6oK,CAAevzM,KAAM8oE,GACrB9oE,KAAKm9E,eAAiB,WACpB,OAAOz5B,sBAAsB0U,EAAM8kB,OACrC,EAGAl9E,KAAKk9E,OAAS2rH,EAAS7oM,KAAKk9E,OAAOpiF,KAAKkF,OAGxCA,KAAK41B,QAAU2zC,EAAS,CAAC,EAAGT,EAAOwqI,SAAU19K,GAG7C51B,KAAKwpC,MAAQ,CACX0jK,aAAa,EACbI,WAAW,EACXW,cAAe,IAIjBjuM,KAAKg8E,UAAYA,GAAaA,EAAUrnD,OAASqnD,EAAU,GAAKA,EAChEh8E,KAAK+rF,OAASA,GAAUA,EAAOp3D,OAASo3D,EAAO,GAAKA,EAGpD/rF,KAAK41B,QAAQ+nD,UAAY,CAAC,EAC1BlnF,OAAOwL,KAAKsnE,EAAS,CAAC,EAAGT,EAAOwqI,SAAS31H,UAAW/nD,EAAQ+nD,YAAYrlE,SAAQ,SAAUjf,GACxF++D,EAAMxiC,QAAQ+nD,UAAUtkF,GAAQkwE,EAAS,CAAC,EAAGT,EAAOwqI,SAAS31H,UAAUtkF,IAAS,CAAC,EAAGu8B,EAAQ+nD,UAAY/nD,EAAQ+nD,UAAUtkF,GAAQ,CAAC,EACrI,IAGA2G,KAAK29E,UAAYlnF,OAAOwL,KAAKjC,KAAK41B,QAAQ+nD,WAAW1gF,KAAI,SAAU5D,GACjE,OAAOkwE,EAAS,CACdlwE,KAAMA,GACL++D,EAAMxiC,QAAQ+nD,UAAUtkF,GAC7B,IAECgQ,MAAK,SAAU9M,EAAGC,GACjB,OAAOD,EAAE6kD,MAAQ5kD,EAAE4kD,KACrB,IAMAphD,KAAK29E,UAAUrlE,SAAQ,SAAU+6L,GAC3BA,EAAgB5xK,SAAWr/B,EAAWixM,EAAgBD,SACxDC,EAAgBD,OAAOh7I,EAAM4jB,UAAW5jB,EAAM2zB,OAAQ3zB,EAAMxiC,QAASy9K,EAAiBj7I,EAAM5uB,MAEhG,IAGAxpC,KAAKk9E,SACL,IAAIqxH,EAAgBvuM,KAAK41B,QAAQ24K,cAC7BA,GAEFvuM,KAAKwuM,uBAEPxuM,KAAKwpC,MAAM+kK,cAAgBA,CAC7B,CAkDA,OA7CA9D,EAAY3hI,EAAQ,CAAC,CACnBjuE,IAAK,SACLN,MAAO,WACL,OAAO2iF,EAAOtmF,KAAKoJ,KACrB,GACC,CACDnF,IAAK,UACLN,MAAO,WACL,OAAO0iF,EAAQrmF,KAAKoJ,KACtB,GACC,CACDnF,IAAK,uBACLN,MAAO,WACL,OAAOi0M,EAAqB53M,KAAKoJ,KACnC,GACC,CACDnF,IAAK,wBACLN,MAAO,WACL,OAAOuzM,EAAsBl3M,KAAKoJ,KACpC,KA0BK8oE,CACT,CAxHa,GA8IbA,GAAO0qI,OAA2B,qBAAXl4M,OAAyBA,OAASq3B,GAAQ8gL,YACjE3qI,GAAOmmI,WAAaA,EACpBnmI,GAAOwqI,SAAWA,GACH,Y,iDCl5Ef,SAASI,EAAuBh3M,GAC9B,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CACnC,QAAWA,EAEf,CARAtF,EAAQsD,YAAa,EACrBtD,EAAQu8M,sBAAwBA,EAQhC,IAAIC,EAAS,EAAQ,GAEjBC,EAAcH,EADD,EAAQ,KAErBI,EAAW,EAAQ,KACnBC,EAAc,EAAQ,KAEtBC,EAAWN,EADD,EAAQ,MAElBO,EAAuB,EAAQ,KAEnC78M,EAAQ46F,QADM,QAGd56F,EAAQ88M,kBADgB,EAGxB98M,EAAQ+8M,kCADgC,EAaxC/8M,EAAQg9M,iBAXe,CACrB,EAAG,cAEH,EAAG,gBACH,EAAG,gBACH,EAAG,WACH,EAAG,mBACH,EAAG,kBACH,EAAG,kBACH,EAAG,YAGL,IAAIC,EAAa,kBACjB,SAASV,EAAsBW,EAASC,EAAUC,GAChDx0M,KAAKs0M,QAAUA,GAAW,CAAC,EAC3Bt0M,KAAKu0M,SAAWA,GAAY,CAAC,EAC7Bv0M,KAAKw0M,WAAaA,GAAc,CAAC,EACjCV,EAASW,uBAAuBz0M,MAChC+zM,EAAYW,0BAA0B10M,KACxC,CACA2zM,EAAsBj9M,UAAY,CAChCk+B,YAAa++K,EACbvwI,OAAQ4wI,EAAkB,QAC1Bh8D,IAAKg8D,EAAkB,QAAEh8D,IACzB28D,eAAgB,SAAwBt7M,EAAM8D,GAC5C,GAAIy2M,EAAOx3M,SAASxF,KAAKyC,KAAUg7M,EAAY,CAC7C,GAAIl3M,EACF,MAAM,IAAI02M,EAAqB,QAAE,2CAEnCD,EAAOt2M,OAAO0C,KAAKs0M,QAASj7M,EAC9B,MACE2G,KAAKs0M,QAAQj7M,GAAQ8D,CAEzB,EACAy3M,iBAAkB,SAA0Bv7M,UACnC2G,KAAKs0M,QAAQj7M,EACtB,EACAw7M,gBAAiB,SAAyBx7M,EAAMy7M,GAC9C,GAAIlB,EAAOx3M,SAASxF,KAAKyC,KAAUg7M,EACjCT,EAAOt2M,OAAO0C,KAAKu0M,SAAUl7M,OACxB,CACL,GAAuB,qBAAZy7M,EACT,MAAM,IAAIjB,EAAqB,QAAE,4CAA8Cx6M,EAAO,kBAExF2G,KAAKu0M,SAASl7M,GAAQy7M,CACxB,CACF,EACAC,kBAAmB,SAA2B17M,UACrC2G,KAAKu0M,SAASl7M,EACvB,EACA27M,kBAAmB,SAA2B37M,EAAM8D,GAClD,GAAIy2M,EAAOx3M,SAASxF,KAAKyC,KAAUg7M,EAAY,CAC7C,GAAIl3M,EACF,MAAM,IAAI02M,EAAqB,QAAE,8CAEnCD,EAAOt2M,OAAO0C,KAAKw0M,WAAYn7M,EACjC,MACE2G,KAAKw0M,WAAWn7M,GAAQ8D,CAE5B,EACA83M,oBAAqB,SAA6B57M,UACzC2G,KAAKw0M,WAAWn7M,EACzB,EAKA67M,4BAA6B,WAC3BjB,EAAqBkB,uBACvB,GAEF,IAAIn9D,EAAMg8D,EAAkB,QAAEh8D,IAC9B5gJ,EAAQ4gJ,IAAMA,EACd5gJ,EAAQ8gG,YAAc07G,EAAO17G,YAC7B9gG,EAAQgsE,OAAS4wI,EAAkB,O,mBCnGnCv/I,cAAEz8D,UAAU26C,GAAG,cAAc,WAC3B8hB,EAAE,QAAQ9hB,GAAG,QAAS,kFAAkF,WAClG8hB,EAAEz0D,MAAM6lC,GAAG,aACb4uB,EAAEz0D,MAAMogC,SAASA,SAASA,SAASzoB,OAAOA,OAAO0wC,YAAY,UAAUnY,OACvEukB,EAAEz0D,MAAMogC,SAASA,SAASA,SAASzoB,OAAOw4B,OAAO8X,SAAS,YAE1DwM,EAAEz0D,MAAMogC,SAASA,SAASA,SAASzoB,OAAOA,OAAOw4B,OACjDskB,EAAEz0D,MAAMogC,SAASA,SAASA,SAASzoB,OAAO0wC,YAAY,UAAUnY,OAEpE,IACAukB,EAAE,YAAY9hB,GAAG,SAAU,sCAAsC,WAC/D,IAAIyiK,EAAY3gJ,EAAEz0D,MAAMw7B,KAAK,aAAah7B,MACzB,SAAb40M,GAAoC,YAAZA,GAAuC,UAAbA,EACpD3gJ,EAAEz0D,MAAMogC,SAASA,SAASqG,SAAS,eAAe9H,KAAK,QAAS,mBAEhE81B,EAAEz0D,MAAMogC,SAASA,SAASqG,SAAS,eAAe9H,KAAK,QAAS,iBAEpE,IACA81B,EAAE,YAAY9hB,GAAG,SAAU,wBAAwB,WAC/C8hB,EAAEz0D,MAAMogC,SAASzoB,KAAK,aAAagnB,KAAK,QAAS,kBACrD,GACF,G,qCCrBA81B,cAAEz8D,UAAU26C,GAAG,cAAc,WAC3B0iK,YACF,IAEA/5M,OAAO+5M,WAAa,WAEdr9M,SAASg4C,KAAKk/B,UAAUx3C,SAAS,WAAa1/B,SAASg4C,KAAKk/B,UAAUx3C,SAAS,gBAEjF1/B,SAAS2lC,iBAAiB,SAAS,SAAShlC,GAC1C,IAAIQ,EAASR,EAAMQ,OACfA,EAAO6oB,QAAQ,wJACjBszL,aAAan8M,EAAOoB,MAExB,IAEAvC,SAAS2lC,iBAAiB,UAAU,SAAShlC,GAC3C,IAAIQ,EAASR,EAAMQ,OACfo8M,EAAev9M,SAASgmC,cAAc,yBAEtC7kC,EAAO6oB,QAAQ,wBAA0B7oB,EAAO6oB,QAAQ,2BAA6B7oB,EAAO6oB,QAAQ,YACtGuzL,EAAa/4K,gBAAgB,WAEjC,IAEJ,EAEAlhC,OAAOg6M,aAAe,SAAS90M,GACzBA,EAAIhK,OAAS,EACfwB,SAASgmC,cAAc,eAAexB,gBAAgB,YAEtDxkC,SAASgmC,cAAc,eAAe3lC,aAAa,YAAY,EAEnE,C,6DChCA,IAAIm9M,EACGrpJ,eAAespJ,IACpB,OAAOD,GAAYE,EAKdvpJ,iBACL,MACEwpJ,SAD0B,+BACKA,eACjC,OAAOA,GACT,CATiCA,GAAiBxtK,KAAKutK,GACvD,CACO,SAASA,EAAYE,GAC1B,OAAOJ,EAAWI,CACpB,CCae,SAASC,EAAKn5M,GAC3B,OAAKA,GAAsB,kBAARA,EACfA,aAAeM,MAAQN,aAAe+F,OAAe/F,EACrDP,MAAMF,QAAQS,GAAaA,EAAIO,IAAI44M,GAChCp/M,OAAOwL,KAAKvF,GAAK45D,QAAO,SAAUw/I,EAAKj7M,GAK5C,OADAi7M,EAHYj7M,EAAI,GAAG2N,cAAgB3N,EAAIW,MAAM,GAAG4J,QAAQ,aAAa,SAAUxL,EAAG6T,GAChF,MAAO,IAAMA,EAAEjF,aACjB,KACaqtM,EAAKn5M,EAAI7B,IACfi7M,CACT,GAAG,CAAC,GATwCp5M,CAU9C,CC9BA,SAASq5M,EAAQx+M,EAAG6C,GAAK,IAAII,EAAI/D,OAAOwL,KAAK1K,GAAI,GAAId,OAAOorE,sBAAuB,CAAE,IAAI7nE,EAAIvD,OAAOorE,sBAAsBtqE,GAAI6C,IAAMJ,EAAIA,EAAEwrB,QAAO,SAAUprB,GAAK,OAAO3D,OAAO2qE,yBAAyB7pE,EAAG6C,GAAGF,UAAY,KAAKM,EAAE1D,KAAK+E,MAAMrB,EAAGR,EAAI,CAAE,OAAOQ,CAAG,CAC9P,SAASw7M,EAAcz+M,GAAK,IAAK,IAAI6C,EAAI,EAAGA,EAAI0B,UAAUtF,OAAQ4D,IAAK,CAAE,IAAII,EAAI,MAAQsB,UAAU1B,GAAK0B,UAAU1B,GAAK,CAAC,EAAGA,EAAI,EAAI27M,EAAQt/M,OAAO+D,IAAI,GAAI8d,SAAQ,SAAUle,GAAK67M,EAAgB1+M,EAAG6C,EAAGI,EAAEJ,GAAK,IAAK3D,OAAOy/M,0BAA4Bz/M,OAAO8qE,iBAAiBhqE,EAAGd,OAAOy/M,0BAA0B17M,IAAMu7M,EAAQt/M,OAAO+D,IAAI8d,SAAQ,SAAUle,GAAK3D,OAAOwD,eAAe1C,EAAG6C,EAAG3D,OAAO2qE,yBAAyB5mE,EAAGJ,GAAK,GAAI,CAAE,OAAO7C,CAAG,CACtb,SAAS0+M,EAAgBv5M,EAAK7B,EAAKN,GAA4L,OAAnLM,EAC5C,SAAwB+G,GAAO,IAAI/G,EACnC,SAAsBqB,EAAOi6M,GAAQ,GAAqB,kBAAVj6M,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAIk6M,EAAOl6M,EAAM7B,OAAOg8M,aAAc,QAAa98M,IAAT68M,EAAoB,CAAE,IAAIh5M,EAAMg5M,EAAKx/M,KAAKsF,EAAOi6M,GAAQ,WAAY,GAAmB,kBAAR/4M,EAAkB,OAAOA,EAAK,MAAM,IAAIstC,UAAU,+CAAiD,CAAE,OAAiB,WAATyrK,EAAoBrxL,OAASwjD,QAAQpsE,EAAQ,CAD/Uo6M,CAAa10M,EAAK,UAAW,MAAsB,kBAAR/G,EAAmBA,EAAMiqB,OAAOjqB,EAAM,CADxE07M,CAAe17M,MAAiB6B,EAAOjG,OAAOwD,eAAeyC,EAAK7B,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMmzC,cAAc,EAAMsI,UAAU,IAAkBj5C,EAAI7B,GAAON,EAAgBmC,CAAK,CAM3O,MAAM,UAAsC28F,YAC1C,uBAAM0B,GACJ,YAAoB/6F,MACpBA,KAAKw2M,mBFCFrqJ,eAA2BsqJ,EAASC,GAGzC,aAFiCjB,KACIkB,cAChB/7M,OAAO67M,EAASC,EACvC,CEL8BE,CAAY52M,KAAKy2M,QAAS,CAClDI,SAAU72M,KAAK82M,qBAAqBh8M,KAAKkF,MACzC+jH,UAAW/jH,KAAK+2M,sBAAsBj8M,KAAKkF,MAC3Cg3M,aAAch3M,KAAKi3M,yBAAyBn8M,KAAKkF,OAErD,CACA,oBAAAg7F,GACE,YAAuBh7F,MACnBA,KAAKw2M,cAAcx2M,KAAKw2M,aAAaziE,aAC3C,CACA,oBAAA+iE,CAAqB7gN,GACnB,MAAM0C,EAAQ,IAAIu+M,aAAa,UAAW,CACxCjhN,SAEF,OAAO+J,KAAK20F,cAAch8F,EAC5B,CACA,qBAAAo+M,GACE/2M,KAAK3H,aAAa,YAAa,GACjC,CACA,wBAAA4+M,GACEj3M,KAAKw8B,gBAAgB,YACvB,CACA,WAAIi6K,GAGF,OAAOT,EAAc,CACnBS,QAHcz2M,KAAK+zB,aAAa,WAIhCojL,mBAHyBn3M,KAAK+zB,aAAa,uBAI1C,EAASiiL,EAAc,CAAC,EAAGh2M,KAAKo3M,UACrC,OAEsD79M,IAApD2/F,eAAe/+F,IAAI,8BACrB++F,eAAegtB,OAAO,4BAA6B,GCrCrDvoF,iBAAiB,8BCNV,SAAqChlC,GAC1C,GAAIA,EAAMQ,kBAAkB0gG,gBAAiB,CAC3C,MAAMjE,EAAOj9F,EAAMQ,OACjB6nG,EAAeroG,EAAMi+C,OAAOoqD,aAC9BpL,EAAKj4D,iBAAiB,sBAAsBugE,IAC1C,IAAIxE,EAAYwE,EAAKtnD,OAAOgvD,eAAelM,UAC3C,MAAM1pD,EAsCZ,SAAoBA,GAClB,OAAOA,aAAgBmnD,UAAYnnD,aAAgBswD,eACrD,CAxCmB+2G,CAAWr2G,EAAahxD,MAAQgxD,EAAahxD,KAAO,IAAIswD,gBAC/Dr4D,EAcZ,SAA8ByxD,EAAW1pD,EAAM4lD,GAC7C,MAAM0hH,EAWR,SAA6B59G,GAC3B,OAAIA,aAAqB69G,mBAAqB79G,aAAqB89G,mBAC7D99G,EAAUh/B,aAAa,cAClBg/B,EAAU49G,WAKZ,IAEX,CArBqBG,CAAoB/9G,GACjCg+G,EAAiB1nK,EAAK71C,IAAI,WAC1B8tC,EAAS2tD,EAAK7hE,aAAa,WAAa,MAC9C,MAAyB,iBAAdujL,EACFA,EAC2B,iBAAlBI,EACTA,EAEAzvK,CAEX,CAzBqB0vK,CAAqBj+G,EAAW1pD,EAAM4lD,GAChD,OAAO/vF,KAAKoiC,KACX,QAAQpiC,KAAKoiC,GACf+H,EAAKslB,OAAO,WAEZtlB,EAAK1tC,IAAI,UAAW2lC,GAEtB+4D,EAAa/4D,OAAS,OACxB,GACC,CACDe,MAAM,GAEV,CACF,G,mBCpBA,YA0B+D3xC,EAAOD,QAC9D,WACN,aAEA,SAASoD,EAAEA,EAAGjD,GACZ,IAAIjB,EAAIG,OAAOwL,KAAKzH,GACpB,GAAI/D,OAAOorE,sBAAuB,CAChC,IAAIpmE,EAAIhF,OAAOorE,sBAAsBrnE,GACrCjD,IAAMkE,EAAIA,EAAE+pB,QAAO,SAAUjuB,GAC3B,OAAOd,OAAO2qE,yBAAyB5mE,EAAGjD,GAAG2C,UAC/C,KAAK5D,EAAEQ,KAAK+E,MAAMvF,EAAGmF,EACvB,CACA,OAAOnF,CACT,CACA,SAASiB,EAAEA,GACT,IAAK,IAAIkE,EAAI,EAAGA,EAAIK,UAAUtF,OAAQiF,IAAK,CACzC,IAAIc,EAAI,MAAQT,UAAUL,GAAKK,UAAUL,GAAK,CAAC,EAC/CA,EAAI,EAAIjB,EAAE/D,OAAO8F,IAAI,GAAI+b,SAAQ,SAAU9d,GACzClE,EAAEiB,EAAGiD,EAAG+B,EAAE/B,GACZ,IAAK/D,OAAOy/M,0BAA4Bz/M,OAAO8qE,iBAAiBhqE,EAAGd,OAAOy/M,0BAA0B35M,IAAM/B,EAAE/D,OAAO8F,IAAI+b,SAAQ,SAAU9d,GACvI/D,OAAOwD,eAAe1C,EAAGiD,EAAG/D,OAAO2qE,yBAAyB7kE,EAAG/B,GACjE,GACF,CACA,OAAOjD,CACT,CACA,SAASjB,EAAEkE,EAAGjD,EAAGjB,GACf,OAAQiB,EAAI,SAAUiD,GACpB,IAAIjD,EAAI,SAAUiD,EAAGjD,GACnB,GAAI,iBAAmBiD,GAAK,OAASA,EAAG,OAAOA,EAC/C,IAAIlE,EAAIkE,EAAEH,OAAOg8M,aACjB,QAAI,IAAW//M,EAAG,CAChB,IAAImF,EAAInF,EAAEM,KAAK4D,EAAGjD,GAAK,WACvB,GAAI,iBAAmBkE,EAAG,OAAOA,EACjC,MAAM,IAAIivC,UAAU,+CACtB,CACA,OAAQ,WAAanzC,EAAIutB,OAASwjD,QAAQ9tE,EAC5C,CATQ,CASNA,EAAG,UACL,MAAO,iBAAmBjD,EAAIA,EAAIutB,OAAOvtB,EAC3C,CAZY,CAYVA,MAAOiD,EAAI/D,OAAOwD,eAAeO,EAAGjD,EAAG,CACvCgD,MAAOjE,EACP4D,YAAY,EACZmzC,cAAc,EACdsI,UAAU,IACPn7C,EAAEjD,GAAKjB,EAAGkE,CACjB,CACA,IAAIiB,EAAI,SACR,MAAMc,EAAI,CAAC/B,EAAGjD,EAAGjB,EAAGmF,KAAOjB,EAAI,GAAKA,EAAGjD,EAAI,GAAKA,EAAGkE,IAAMjB,EAAIA,EAAE85D,OAAQ/8D,EAAIA,EAAE+8D,QAASh+D,EAAIkE,GAAKjD,EAAIiD,EAAEgO,eAAiBjR,EAAEiR,eACtHzN,EAAI,CAACP,EAAGjD,IAAMiD,GAAK2B,MAAMF,QAAQzB,IAAMA,EAAEyC,KAAIzC,GAAKR,EAAEQ,EAAGjD,KACzD,SAASyC,EAAEQ,EAAGjD,GACZ,IAAIjB,EACFmF,EAAI,CAAC,EACP,IAAKnF,KAAKkE,EAAGjD,EAAEuV,QAAQxW,GAAK,IAAMmF,EAAEnF,GAAKkE,EAAElE,IAC3C,OAAOmF,CACT,CACA,SAASrB,EAAEI,GACT,IAAIjD,EAAIS,SAASC,cAAc,OAC/B,OAAOuC,EAAE4K,QAAQ,oBAAoB,SAAU5K,GAC7C,OAAOjD,EAAE8mC,UAAY7jC,EAAGjD,EAAEqgN,SAC5B,GACF,CACA,SAAStgN,EAAEkD,GACT,OAAO,IAAIwuD,WAAYC,gBAAgBzuD,EAAE85D,OAAQ,aAAatkB,KAAKggB,iBACrE,CACA,SAASl2D,EAAEU,EAAGjD,GACZ,IAAKA,EAAIA,GAAK,WAAYiD,EAAIA,EAAEjD,EAAI,YAAa,GAAI,GAAKiD,EAAE64B,SAAU,OAAO74B,CAC/E,CACA,SAAS2M,EAAE3M,GACT,MAAO,iBAAmBA,EAAIA,EAAE4K,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,OAAQ,UAAY5K,CACzJ,CACA,SAAS+rE,EAAE/rE,GACT,IAAIjD,EAAId,OAAOC,UAAU0F,SAASxF,KAAK4D,GAAGyT,MAAM,KAAK,GAAGzS,MAAM,GAAI,GAClE,OAAOhB,IAAM/D,OAAO+D,IAAM,SAAWjD,GAAK,YAAcA,GAAK,UAAYA,GAAK,sBAAwBA,CACxG,CACA,SAASgB,EAAEiC,EAAGjD,EAAGjB,GACf,SAASmF,EAAEjB,EAAGjD,GACZ,IAAK,IAAIjB,KAAKiB,EAAG,GAAIA,EAAEZ,eAAeL,GAAI,CACxC,GAAIiwE,EAAEhvE,EAAEjB,IAAK,CACXiwE,EAAE/rE,EAAElE,IAAMmF,EAAEjB,EAAElE,GAAIiB,EAAEjB,IAAMkE,EAAElE,GAAKG,OAAO46B,OAAO,CAAC,EAAG95B,EAAEjB,IACrD,QACF,CACA,GAAI6F,MAAMF,QAAQ1E,EAAEjB,IAAK,CACvBkE,EAAElE,GAAKG,OAAO46B,OAAO,GAAI95B,EAAEjB,IAC3B,QACF,CACAkE,EAAElE,GAAKiB,EAAEjB,EACX,CACF,CACA,OAAOkE,aAAa/D,SAAW+D,EAAI,CAAC,GAAIiB,EAAEjB,EAAGjD,GAAIjB,GAAKmF,EAAEjB,EAAGlE,GAAIkE,CACjE,CACA,SAASX,IACP,MAAMW,EAAI,GACRjD,EAAI,CAAC,EACP,IAAK,IAAIjB,KAAKwF,UAAW,IAAK,IAAIL,KAAKnF,EAAGiwE,EAAE9qE,GAAKlE,EAAEkE,EAAElB,SAAWC,EAAE1D,KAAK2E,GAAIlE,EAAEkE,EAAElB,OAAS,GAAKC,EAAEwoH,SAASvnH,IAAMjB,EAAE1D,KAAK2E,GACrH,OAAOjB,CACT,CACA,SAAS4O,EAAE5O,GACT,OAAOsqB,OAAOpuB,UAAUmhN,UAAY,iBAAmBr9M,EAAIA,EAAEq9M,UAAU,OAAOzyM,QAAQ,mBAAoB,SAAM,EAAS5K,CAC3H,CACA,IAAIZ,EAAI,IAAM,6BAA6BiM,KAAK2tE,UAAU84C,WAC1D,SAAS1kF,IACP,OAAQ,CAAC,MAAQ,KAAO,KAAO,KAAO,MAAMxiC,QAAQ,UAAU5K,IAAMA,EAAIs9M,OAAOC,gBAAgB,IAAIruF,WAAW,IAAI,GAAK,IAAMlvH,EAAI,GAAG4B,SAAS,KAC/I,CACA,SAASkqE,EAAE9rE,GACT,OAAOA,GAAKA,EAAE00E,WAAa10E,EAAE00E,UAAUx3C,SAAS13B,KAAK0sD,SAASxE,WAAW/pB,IAC3E,CACA,SAAS65K,EAAEx9M,EAAGjD,GACZ,IAAIjB,EAAIgF,OAAOq1H,eACf,OAAOp5H,EAAIA,GAAKjB,EAAEu6H,WAAW,GAAI,iBAAmBr2H,IAAMA,EAAIxC,SAASu6C,eAAe/3C,IAAKjD,IAAMA,EAAEi2G,iBAAkBj2G,EAAE25H,WAAW12H,IAAKA,CACzI,CACA,SAAS8M,EAAE9M,EAAGjD,EAAGjB,GACf,OAAOkE,GAAKjD,IAAMiD,EAAEy9M,gBAAkB3hN,EAAIiB,EAAIgB,EAAE,CAAC,EAAGiC,EAAEy9M,iBAAmB,CAAC,EAAG1gN,IAAKiD,EAAEy9M,kBAAoB78M,QAAQkG,KAAK,4BAA6B9G,EAAGjD,GAAIA,EAC3J,CACA,SAASiF,EAAEhC,GACT,GAAIA,GAAKA,EAAEw5B,WAAY,CACrB,IAAIz8B,EAAIiD,EACNlE,EAAIgF,OAAOq1H,eACXl1H,EAAInF,EAAEu6H,WAAW,GACnBv6H,EAAEs6H,aAAen1H,EAAE21H,cAAc75H,GAAIkE,EAAE41H,UAAS,GAAK/6H,EAAE2jI,kBAAmB3jI,EAAE4jI,SAASz+H,GACvF,CACF,CACA,SAASiM,EAAElN,EAAGjD,GACZiD,EAAE8d,SAAQ9d,IACR,GAAI8M,EAAE9M,EAAEm1H,mBAAqBn1H,EAAEm1H,gBAAiB,CAC9C,IAAIr5H,EAAI0B,SAASu6C,eAAe92C,GAChCjB,EAAEmgD,OAAOrkD,GAAIiB,GAAKiF,EAAElG,EACtB,IAEJ,CACA,IAAImX,EAAI,CACNyqM,WAAY,IACZ34K,QAAS,KACT44K,YAAa,QACbC,QAAS,IACTC,UAAW,CAAC,EACZC,cAAc,EACdC,mBAAmB,EACnBz5K,YAAY,EACZ05K,UAAW,GACXC,UAAW,GACXC,kBAAkB,EAClBC,WAAW,EACXC,iBAAiB,EACjBC,mBAAmB,EACnBC,oBAAqB,aACrBC,oBAAqB,CAAC,KAAM,MAC5BC,WAAW,EACXC,aAAa,EACbC,aAAa,EACbC,SAAU,CACRC,OAAQ,EACRC,aAAa,GAEfC,aAAc,OACdhlJ,MAAM,EACNilJ,KAAM,CACJC,eAAe,GAEjBC,QAAS,CACPC,eAAgB,QAElBC,aAAc,CACZl4K,SAAS,EACTm4K,UAAU,GAEZ1xJ,WAAY,CACVnxB,UAAW,SACX0iL,QAAS,cACTI,WAAY,iBACZ39M,MAAO,gBACPilC,MAAO,gBACP24K,eAAgB,iBAChBC,WAAY,kBACZC,cAAe,qBACfC,aAAc,kBACdC,WAAY,qBACZC,UAAW,iBACXp8M,MAAO,gBACPq8M,aAAc,yBACdC,SAAU,mBACVC,gBAAiB,4BACjBC,eAAgB,2BAChBC,eAAgB,2BAChBC,aAAc,yBACdC,mBAAoB,iCACpBC,mBAAoB,iCACpBC,eAAgB,4BAChBz8K,IAAK,cACL08K,QAAS,mBACTC,KAAM,yBACNC,WAAY,uBACZC,WAAY,wBACZC,SAAU,qBACVC,QAAS,qBAEXb,SAAU,CACRc,UAAW,GACX15K,QAAS,EACT25K,SAAU,GACVC,WAAY,CAAC,QAAS,YACtBC,aAAa,EACbC,eAAe,EACfC,gBAAgB,EAChBC,qBAAqB,EACrBC,gBAAgB,EAChBC,eAAe,EACfC,eAAe,EACfz+J,SAAU,MACV0+J,aAAc,MAEhBjgN,MAAO,CACLkgN,gBAAiB,IAAMnkN,QAAQC,UAC/BmkN,YAAa,IAAMpkN,QAAQC,UAC3BokN,gBAAiB,IAAMrkN,QAAQC,YAGnC,SAASk6J,IACP9xJ,KAAKq6M,SAAW,CAAC,EACjB,IAAK,IAAI7/M,KAAKwF,KAAKi8M,UAAWj8M,KAAKq6M,SAAS7/M,GAAK,mBAAqBwF,KAAKi8M,UAAUzhN,GAAKwF,KAAKi8M,UAAUzhN,GAAGM,KAAKkF,MAAQA,KAAKi8M,UAAUzhN,GACxIwF,KAAKq6M,SAAS6B,MAChB,CACA,IAAIC,EAAI,CACN,IAAAD,GACEl8M,KAAKo8M,IAAI/B,SAAWr6M,KAAKq8M,cAAc,WAAY,CAACr8M,KAAK0sD,WAAY1sD,KAAKo8M,IAAI/B,SAAS7yK,QAAUxnC,KAAKo8M,IAAI/B,SAASr8K,cAAc,+CACnI,EACA,YAAAs+K,GACE,OAAOt8M,KAAKo8M,IAAI/B,SAASr8K,cAAc,8CACzC,EACA,YAAAu+K,GACE,OAAOv8M,KAAKo8M,IAAI/B,SAASr8K,cAAc,8CACzC,EACA,qBAAAw+K,GACE,MAAO,IAAIx8M,KAAKo8M,IAAI/B,SAAS7yK,QAAQlL,iBAAiBt8B,KAAK0sD,SAASxE,WAAWu0J,sBACjF,EACA,IAAAvsK,CAAK11C,GACH,IAAIjD,EACFjB,EACAmF,EACAV,EAAIiF,KAAK0sD,SACT1yD,EAAI,OAASe,EAAEN,OAASM,EAAE29M,iBAC1Bt+M,GAAKW,EAAEy9M,YAAcz9M,EAAEy9M,UAAUhiN,OACjCc,EAAI,UAAYyD,EAAEs/M,SAASl9J,SAC7B,GAAI3iD,OAAI,IAAWA,EAAIwF,KAAKwpC,MAAMkzK,UAAYliN,IAAKJ,IAAMJ,IAAMe,EAAE4hN,UAAUC,sBAAuB,IAAO7hN,EAAEs/M,SAAS/wH,QAAUtpF,KAAKwpC,MAAMqyD,WAAa77F,KAAK0sD,SAASmwJ,UAAW,CAC7K,GAAI/jN,aAAakH,KAAK88M,iCAAkC98M,KAAK+8M,mBAAqB/8M,KAAKq6M,SAAS2C,gBAAgBxiN,GAAIA,IAAMwF,KAAK+8M,mBAAmBvmN,SAAWwJ,KAAKwzC,QAAQ,mBAAoBh5C,GAAIO,EAAE4hN,UAAUC,sBAAwBnhN,EAAIV,EAAE4hN,UAAUC,oBAAoBhmN,KAAKoJ,KAAM,CACnRzF,MAAOC,OACFiB,EAAG,CACR,GAAIuE,KAAK+8M,mBAAmBvmN,OAAQgE,GAAKR,IAAMgG,KAAKwpC,MAAMyzK,QAAQ9gL,QAAU5/B,EAAEyD,KAAK+8M,mBAAmB,GAAGxiN,MAAOC,IAAMwF,KAAK+8M,mBAAmB1uK,QAAQ,CACpJ9zC,MAAOC,QACD,CACN,IAAKA,IAAMR,GAAKgG,KAAKwpC,MAAMyzK,QAAQ9gL,MAAO,OAAOn8B,KAAK9D,MAAMsyK,aAAa0uC,QAAQtmN,KAAKoJ,WAAYA,KAAKq6M,SAASlqK,OAChHnwC,KAAK+8M,mBAAqB,CAAC,CACzBxiN,MAAOC,GAEX,CACAlE,EAAI,IAAMiwE,EAAEhvE,EAAIyI,KAAK+8M,mBAAmB,IAAMxlN,EAAEgD,MAAQhD,GAAIwD,EAAE4+M,cAAgBrjN,GAAK,GAAKA,EAAEwW,QAAQtS,IAAMwF,KAAK9D,MAAMsyK,aAAa0uC,QAAQtmN,KAAKoJ,KAAMzI,EACrJ,CACAyI,KAAKq6M,SAAS8C,KAAK1hN,GAAIV,EAAEs/M,SAASqB,gBAAkB17M,KAAKq6M,SAAS+C,gBAAgBp9M,KAAKo8M,IAAI/B,SAAS7yK,QAAQxJ,cAAcjjC,EAAEmtD,WAAWu0J,uBAAwBz8M,KAAKwpC,MAAM6wK,SAASjqJ,SAAW52D,WAAWwG,KAAKq6M,SAASzmK,OAAOwhB,QAAQt6D,KAAKkF,OAAQA,KAAKwpC,MAAM6wK,SAASjqJ,QAAU51D,IAAK,EAAIwF,KAAKwpC,MAAM6wK,SAASv4E,MAAQtnI,EAAGwF,KAAKq9M,oBAAqB/lN,GAAKkC,YAAW,KACjWwG,KAAKq6M,SAASl9J,WAAYn9C,KAAKq6M,SAAS3xG,QAAQ,IAC9ClvG,YAAW,KACbwG,KAAKwzC,QAAQ,gBAAiBxzC,KAAKo8M,IAAI/B,SAAS,GAEpD,CACF,EACA,IAAAlqK,CAAK31C,GACH,IAAIjD,EAAIyI,KAAKo8M,IACX9lN,EAAIiB,EAAE4kC,MACN1gC,EAAIlE,EAAE8iN,SACN99M,EAAI,UAAYyD,KAAK0sD,SAAS2tJ,SAASl9J,WAAa3iD,EACtD,GAAIiB,GAAKzD,SAASg4C,KAAKtY,SAASj8B,KAAOc,EAAG,OAAOjB,OAAOywC,oBAAoB,SAAU/rC,KAAKq6M,SAASl9J,UAAWn9C,KAAKq6M,SAASzmK,OAAOwhB,QAAQx+D,KAAKoJ,MAAM,GAAK1J,EAAE+B,aAAa,iBAAiB,GAAKoD,EAAEu4B,WAAWC,YAAYx4B,GAAIjC,YAAW,KACvOwG,KAAKwpC,MAAM6wK,SAASjqJ,SAAU,CAAE,GAC/B,KAAMpwD,KAAKwpC,MAAM6wK,SAASv4E,MAAQ9hI,KAAKwpC,MAAM8zK,WAAat9M,KAAKwpC,MAAM+zK,UAAYv9M,KAAKwpC,MAAMwI,UAAY,KAAMhyC,KAAKwpC,MAAMrL,KAAOn+B,KAAKwpC,MAAMrL,IAAI5jC,MAAM/D,SAAWwJ,KAAKwpC,MAAMg0K,YAAYx9M,KAAKwpC,MAAMrL,IAAIs/K,YAAcz9M,KAAKwpC,MAAMrL,KAAMn+B,KAAKwzC,QAAQ,gBAAiB/3C,GAAIuE,IAC5Q,EACA,MAAAowC,CAAO51C,GACLwF,KAAKq6M,SAASr6M,KAAKwpC,MAAM6wK,SAASjqJ,UAAY51D,EAAI,OAAS,SAC7D,EACA,MAAAkuG,GACE,IACEnxG,EACAjB,EACAmF,IAA6BnF,EAApB0J,KAAKo8M,IAAI/B,SAAiB1pK,WAAU,IAAK1B,MAAMyN,QAAU,yCAA0C1kD,SAASg4C,KAAKt2C,YAAYpD,GAAIiB,EAAIjB,EAAEurF,aAAcvrF,EAAE09B,WAAWC,YAAY39B,GAAIiB,GAC3LgF,EAAIyD,KAAK0sD,SACX,MAAO,iBAAmBnwD,EAAE89M,SAAS54K,SAAWllC,EAAE89M,SAAS54K,SAAW,GAAKzhC,KAAKo8M,IAAIjgL,MAAM9jC,aAAa,iBAAiB,GAAKL,SAASg4C,KAAKtY,SAAS13B,KAAKo8M,IAAI/B,YAAcr6M,KAAKo8M,IAAI/B,SAASnrI,UAAU58D,IAAI/V,EAAE2rD,WAAW0yJ,gBAAiB56M,KAAKq6M,SAASl9J,SAAS1hD,GAAIc,EAAE89M,SAASwB,aAAaniN,YAAYsG,KAAKo8M,IAAI/B,UAAW7gN,YAAW,IAAMwG,KAAKo8M,IAAI/B,SAASnrI,UAAUhmC,OAAO3sC,EAAE2rD,WAAW0yJ,mBAAmB56M,MAAQA,IAC1Z,EACA,IAAAm9M,CAAK3iN,GACHA,EAAI,iBAAmBA,EAAIA,EAAIwF,KAAKq6M,SAASqD,eAAeljN,GAAKwF,KAAK+8M,oBACtE,IAAIxlN,EACFjB,EAAI0J,KAAK0sD,SAASiwJ,UAAUgB,gBAAgB/mN,KAAKoJ,KAAMxF,GACzDwF,KAAKo8M,IAAI/B,SAAS7yK,QAAQnJ,WAAa9mC,EAAIjB,GAAKiB,EAAE6N,QAAQ,gBAAiB,MAAM6I,MAAM,SAASlM,KAAK,MAAMuyD,OAAS,EACtH,EACA,gBAAAspJ,GACE,IAAIpjN,EAAIwF,KAAKq6M,SAAS2C,gBAAgBh9M,KAAKwpC,MAAM6wK,SAASv4E,OACxDvqI,EAAIyI,KAAKq8M,cAAc,iBAAkB,CAAC7hN,IAC1ClE,EAAI0J,KAAKq8M,cAAc,iBAAkB,CAAC7hN,IAC1CiB,EAAIuE,KAAKq6M,SAASiC,eAClB//M,EAAIyD,KAAKq6M,SAASkC,eACpBhlN,GAAW,OAANkE,QAAoB,IAANA,GAAgBA,EAAEu4B,WAAW8mB,aAAavjD,EAAGkE,GAAInF,IAAY,OAANiG,QAAoB,IAANA,GAAwBA,EAAEy3B,WAAW8mB,aAAaxkD,EAAGiG,GAC/I,EACA,QAAAshN,CAASrjN,GACPA,EAAIA,GAAKwF,KAAKwpC,MAAM6wK,SAASv4E,OAAS,GAAI9hI,KAAK+8M,mBAAqB/8M,KAAKq6M,SAAS2C,gBAAgBxiN,GAAIwF,KAAKq6M,SAAS8C,OAAQn9M,KAAK+8M,mBAAmBvmN,QAAUwJ,KAAKq6M,SAASlqK,OAAQnwC,KAAKwzC,QAAQ,mBAAoBxzC,KAAKo8M,IAAI/B,SAChO,EACA,QAAAl9J,CAAS3iD,GACP,IAAIjD,EAAIyI,KAAK0sD,SAAS2tJ,SACtB,GAAI,UAAY9iN,EAAE4lD,SAAU,CAC1B,IAAI7mD,EACFmF,EACAc,EACAxB,EACAf,EACAI,EACA9C,EAAI0I,KAAKo8M,IAAI/B,SACbvgN,EAAIvC,EAAEumN,WACN32M,EAAI5P,EAAEskN,eAAiB7jN,SAASg4C,KAChCu2B,EAAIp/D,EAAI7L,OAAO23D,YAAc17D,EAAEskN,aAAa/4J,UAC5CvqD,EAAIP,SAAS+lN,mBAAqB/lN,SAASgmN,yBAA2BhmN,SAASy+B,gBAC/E58B,EAAItB,EAAEspF,aACNz4E,EAAIlF,KAAKI,IAAI/L,EAAEqrF,aAAe,EAAGtoF,OAAO0nF,YAAc,GAAK,IAAMzrF,EAAE4lD,SAAW,MAC9EvjD,EAAIoG,KAAKo8M,IAAI,SAAWhzM,EAAI,QAAU,SACxC,GAAI5O,EAAIA,GAAKlD,EAAEuqF,aAAc7hF,KAAKwpC,MAAM6wK,SAASjqJ,QAAS,CACxD,GAAI,QAAUhnD,GAAK7M,GAAKjG,EAAI,WAC1B,MAAMkE,EAAIxC,SAAS24H,eACnB,GAAIn2H,EAAEo2H,WAAY,CAChB,MAAMr5H,EAAIiD,EAAEq2H,WAAW,GACrBv6H,EAAIiB,EAAEo/H,eACNl7H,EAAIlE,EAAEy5H,YACR,IAAIz0H,EAAGxB,EACP,GAAIU,EAAI,EAAG,OAAOV,EAAI/C,SAASs1G,cAAevyG,EAAEs8H,SAAS/gI,EAAGmF,EAAI,GAAIV,EAAE27H,OAAOpgI,EAAGmF,GAAIc,EAAIxB,EAAEinD,wBAAyB,CACjHE,KAAM3lD,EAAEygD,MACRtf,IAAKnhC,EAAEmhC,IACPo7H,OAAQv8J,EAAEu8J,QAEZ,GAAIxiK,EAAE0rD,sBAAuB,OAAO1rD,EAAE0rD,uBACxC,CACA,MAAO,CACLE,MAAO,KACPxkB,KAAM,KAEV,CAlB4B,IAkBvBo7H,OAAQr9J,EAAInF,EAAEonC,IAAK3iC,EAAIzE,EAAE4rD,KAAMloD,EAAI,SAAWI,EAAI,SAAUI,GAC/D,IAAK,IAAIjD,EAAI,EAAGjB,EAAI,EAAGkE,GAAKA,GAAKjC,GAAIhB,GAAKiD,EAAEs/J,YAAc,EAAGxjK,GAAKkE,EAAEw/J,WAAa,EAAGx/J,EAAIA,EAAEw5B,WAC1F,MAAO,CACLkuB,KAAM3qD,EACNmmC,IAAKpnC,EAET,CANuD,CAMrDiB,EAAEskN,cAAepgN,GAAKnF,EAAIsD,EAAEooD,yBAAyBtkB,IAAMtjC,EAAEsjC,IAAKnhC,EAAIjG,EAAEwiK,OAAS,EAAI1+J,EAAEsjC,IAAK3iC,EAAIzE,EAAE4rD,KAAO9nD,EAAE8nD,KAAMloD,EAAI1D,EAAEylD,MAAQ,OAAQ50C,EAAG,CAC1I,IAAI3M,EAAI,WACN,IAAK,IAAIA,EAAI,EAAGlE,EAAIiB,EAAEskN,aAAa7nL,WAAY19B,GAAIkE,GAAKlE,EAAEwsD,WAAa,EAAGxsD,EAAIA,EAAE09B,WAChF,OAAOx5B,CACT,CAHQ,GAIRiB,GAAKjB,EAAG+B,GAAK/B,CACf,CACAiB,EAAIyI,KAAKwF,MAAMjO,GAAIc,EAAI2H,KAAKuF,KAAKlN,GAAIzC,OAAI,IAAWA,EAAID,EAAIvD,EAAEwiK,OAASt+J,EAAIV,EAAGxC,EAAE23C,MAAMyN,QAAU,SAAW3hD,EAAIO,OAAO43D,aAAe,aAAel5D,EAAI,KAAOF,EAAI,SAAW2B,EAAI8qE,GAAK,KAAO,SAAWhqE,EAAIgqE,GAAK,MAAOjvE,EAAEe,aAAa,YAAayB,EAAI,MAAQ,UAAWxC,EAAEe,aAAa,WAAY+Q,EACzS,CACF,CACF,EACAwqC,OAAQ,CACN,OAAAwhB,GACE,IAAI56D,IAAMsB,UAAUtF,OAAS,QAAK,IAAWsF,UAAU,KAAOA,UAAU,GACxE,IAAIvE,EAAIyI,KAAKq6M,SAASzmK,OAAOykK,UAC3B/hN,EAAI0J,KAAKu2D,UAAU8jJ,SAAWr6M,KAAKu2D,UAAU8jJ,UAAY,CACvDl9J,SAAUn9C,KAAKq6M,SAASl9J,SAASriD,KAAKkF,KAAM,MAC5Ci+M,UAAW1mN,EAAE0mN,UAAUnjN,KAAKkF,MAC5Bk+M,YAAa3mN,EAAE2mN,YAAYpjN,KAAKkF,MAChCm+M,aAAc5mN,EAAE4mN,aAAarjN,KAAKkF,MAClCo+M,QAAS7mN,EAAE6mN,QAAQtjN,KAAKkF,MACxB06G,SAAUnjH,EAAEmjH,SAAS5/G,KAAKkF,OAE5BvE,EAAIjB,EAAI,mBAAqB,sBAC/B,UAAYwF,KAAK0sD,SAAS2tJ,SAASl9J,WAAanlD,SAASyD,GAAG,SAAUnF,EAAE6mD,UAAU,GAAK7hD,OAAOG,GAAG,SAAUnF,EAAE6mD,UAAW7hD,OAAOG,GAAG,UAAWnF,EAAE2nN,YAAaj+M,KAAKo8M,IAAI/B,SAAS5+M,GAAG,YAAanF,EAAE4nN,aAAcl+M,KAAKo8M,IAAI/B,SAAS5+M,GAAG,aAAcnF,EAAE6nN,cAAen+M,KAAKo8M,IAAI/B,SAAS5+M,GAAG,YAAanF,EAAE8nN,SAAUp+M,KAAKo8M,IAAI/B,SAAS7yK,QAAQ/rC,GAAG,SAAUnF,EAAEokH,SAC3V,EACA29F,UAAW,CACT,SAAA4F,CAAUzjN,GACR,GAAIwF,KAAKwpC,MAAMlI,WAAathC,KAAKwpC,MAAM60K,UAAW,CAChD,IAAI9mN,EAAIyI,KAAKo8M,IAAI/B,SAASr8K,cAAch+B,KAAK0sD,SAASxE,WAAWo2J,4BAC/DhoN,EAAI0J,KAAKq6M,SAASkE,wBAAwBhnN,GAC5C,OAAQiD,EAAEK,KACR,IAAK,YACL,IAAK,UACL,IAAK,OACL,IAAK,KACHL,EAAE+4C,iBACF,IAAI93C,EAAIuE,KAAKq6M,SAASmC,wBACpBjgN,EAAI,WAAa/B,EAAEK,KAAO,MAAQL,EAAEK,IACtCtD,IAAMA,EAAIyI,KAAKq6M,SAASmE,oBAAoBjnN,GAAIgF,IAAKhF,GAAKA,EAAEyqB,QAAQhiB,KAAK0sD,SAASxE,WAAWu0J,wBAA0BllN,EAAIkE,EAAEc,EAAId,EAAEjF,OAAS,EAAI,IAAKwJ,KAAKq6M,SAAS+C,gBAAgB7lN,GAAG,GACtL,MACF,IAAK,SACL,IAAK,MACHyI,KAAKq6M,SAASlqK,OACd,MACF,IAAK,aACH,GAAInwC,KAAKwpC,MAAMi1K,QAAQC,UAAW,OACpC,IAAK,MACH,GAAI,OAAS1+M,KAAK0sD,SAASjyD,MAAQlD,IAAMyI,KAAK0sD,SAASitJ,aAAaC,WAAa55M,KAAKwpC,MAAMyzK,QAAS,CACnGziN,EAAE+4C,iBACF,IAAIx4C,EAAIiF,KAAKq6M,SAASsE,eAAeroN,GACrC,OAAO0J,KAAK9D,MAAMsyK,aAAalsK,IAAI1L,KAAKoJ,KAAMjF,IAAI,CACpD,CACA,OAAO,EACT,IAAK,QACHP,EAAE+4C,iBAAkBvzC,KAAK0sD,SAAS9wD,MAAMogN,gBAAgBxhN,EAAG,CACzDokN,OAAQ5+M,KACR6+M,QAASvoN,EACTwoN,cAAevnN,IACd4wC,MAAK,KACN,GAAI5wC,EAAG,OAAOyI,KAAKq6M,SAAS0E,aAAaxnN,GAAIA,EAAIyI,KAAKq6M,SAASmE,oBAAoBjnN,GAAIgF,QAASyD,KAAKq6M,SAAS+C,gBAAgB7lN,GAC9HyI,KAAKq6M,SAASlqK,OAAQ,OAASnwC,KAAK0sD,SAASjyD,MAAQuF,KAAKg/M,QAAQh/M,KAAKwpC,MAAMkzK,UAAUpoJ,QAAQ,EAAG,IACjGtoB,OAAMxxC,GAAKA,IACd,MACF,IAAK,YACH,CACE,GAAI,OAASwF,KAAK0sD,SAASjyD,MAAQuF,KAAKwpC,MAAMyzK,QAAQ9gL,MAAO,OAC7D,MAAM3hC,EAAIwF,KAAK9D,MAAMswC,IAAI51C,KAAKoJ,MAC9B,IAAMxF,GAAK,MAAQA,EAAEy9B,WAAW,MAAO,IAAOj4B,KAAK0sD,SAASssJ,UAAYh5M,KAAKi/M,aAAe,QAAUj/M,KAAK0sD,SAASssJ,WAAax/M,WAAWwG,KAAKk/M,QAAQpkN,KAAKkF,MAAO,GACvK,EAEN,CACF,EACA,WAAAk+M,CAAY1jN,GACV,IAAIjD,EAAIiD,EAAErB,OAAO4tC,QAAQ/mC,KAAK0sD,SAASxE,WAAWu0J,sBAClDllN,GAAKyI,KAAKq6M,SAAS+C,gBAAgB7lN,EACrC,EACA,YAAA4mN,CAAa3jN,GACXwF,KAAKq6M,SAAS+C,iBAChB,EACA,OAAAgB,CAAQ5jN,GACN,GAAI,GAAKA,EAAEunC,QAAUvnC,EAAErB,QAAU6G,KAAKo8M,IAAI/B,UAAY7/M,EAAErB,QAAU6G,KAAKo8M,IAAI/B,SAAS7yK,QAAS,CAC3F,IAAIjwC,EAAIiD,EAAErB,OAAO4tC,QAAQ/mC,KAAK0sD,SAASxE,WAAWu0J,sBAChDnmN,EAAI0J,KAAKq6M,SAASkE,wBAAwBhnN,GAC5CyI,KAAKwpC,MAAMi1K,QAAQM,cAAe,EAAIvlN,YAAW,IAAMwG,KAAKwpC,MAAMi1K,QAAQM,cAAe,GAAI,IAAK/+M,KAAK0sD,SAAS9wD,MAAMogN,gBAAgBxhN,EAAG,CACvIokN,OAAQ5+M,KACR6+M,QAASvoN,EACTwoN,cAAevnN,IACd4wC,MAAK,KACN5wC,EAAIyI,KAAKq6M,SAAS0E,aAAaxnN,EAAGiD,GAAKwF,KAAKq6M,SAASlqK,MAAM,IAC1DnE,OAAMxxC,GAAKY,QAAQkG,KAAK9G,IAC7B,CACF,EACA,QAAAkgH,CAASlgH,GACP,IAAIjD,EAAIiD,EAAErB,OACR7C,EAAIiB,EAAEurD,WAAavrD,EAAEqqF,aAAerqF,EAAEy8B,WAAW6tD,cAAgB,IACnE7hF,KAAKwzC,QAAQ,kBAAmB,CAC9B8iJ,WAAYpyL,KAAK+c,MAAM3qB,IAE3B,IAGJ,uBAAAioN,CAAwB/jN,GACtB,IAAIjD,EAAIiD,GAAKA,EAAEu5B,aAAa,SAC5B,OAAO/zB,KAAK+8M,mBAAmBvhL,MAAKhhC,GAAKA,EAAED,OAAShD,KAAM,IAC5D,EACA,mBAAAinN,CAAoBhkN,GAClB,IAAIjD,IAAMuE,UAAUtF,OAAS,QAAK,IAAWsF,UAAU,KAAOA,UAAU,GACxE,IAAIxF,EAAI0J,KAAKq6M,SAASmC,wBACpB/gN,EAAInF,EAAEmnE,WAAUlmE,GAAKA,IAAMiD,IAC7B,OAAOjD,EAAIjB,EAAEmF,EAAI,GAAKnF,EAAEmF,EAAI,EAC9B,EACA,eAAA2hN,CAAgB5iN,EAAGjD,GACjB,IAAIjB,EACFmF,EAAIuE,KAAK0sD,SAASxE,WAAWwyJ,mBAC/B,GAAI16M,KAAKwpC,MAAM+zK,YAAcv9M,KAAKwpC,MAAM+zK,UAAUruI,UAAUhmC,OAAOztC,GAAIuE,KAAKwpC,MAAM+zK,UAAU/gL,gBAAgB,mBAAoBhiC,EAAG,OAAOwF,KAAKwpC,MAAM8zK,WAAa,KAAMt9M,KAAKwpC,MAAM+zK,UAAY,UAAWv9M,KAAK9D,MAAMsyK,aAAa0uC,QAAQtmN,KAAKoJ,MAC/O1J,EAAI0J,KAAKq6M,SAASkE,wBAAwB/jN,GAAIwF,KAAKwpC,MAAM8zK,WAAahnN,EAAG0J,KAAKwpC,MAAM+zK,UAAY/iN,EAAGA,EAAE00E,UAAU58D,IAAI7W,GAAIjB,EAAEnC,aAAa,iBAAiB,GAAKd,IAAMiD,EAAEw5B,WAAW8uB,UAAYtoD,EAAEqnF,aAAernF,EAAEw/J,UAAYx/J,EAAEw5B,WAAW6tD,cAAe7hF,KAAK0sD,SAASitJ,eAAiB35M,KAAK9D,MAAMsyK,aAAa0uC,QAAQtmN,KAAKoJ,KAAM1J,GAAI0J,KAAKq6M,SAASl9J,WACpV,EACA,YAAA4hK,CAAavkN,EAAGjD,GACd,IAAIjB,EAAI0J,KAAK0sD,SAAS2tJ,SACpB5+M,EAAInF,EAAEslN,cACNr/M,EAAIjG,EAAEqlN,cACR,IAAKnhN,EAAG,OAAOwF,KAAKg/M,QAAQh/M,KAAKwpC,MAAMkzK,WAAW,QAAWngN,GAAKyD,KAAKq6M,SAASlqK,QAChF54C,EAAIA,GAAK,CAAC,EACV,IAAIwD,EAAIP,EAAEu5B,aAAa,SACrB/5B,EAAI,WAAae,EACjBX,EAAI4F,KAAK+8M,mBAAmBvhL,MAAKhhC,IAC/B,IAAI2kN,EACJ,OAAiC,QAAxBA,EAAW3kN,EAAED,aAAgC,IAAb4kN,EAAsBA,EAAW3kN,IAAMO,CAAC,IAErFiF,KAAKwzC,QAAQ,kBAAmB,CAC9Bv9C,KAAMmE,EACNglN,IAAK5kN,EACL7B,MAAOpB,IACLwD,IAAMX,GAAKJ,IAAMgG,KAAKwpC,MAAMyzK,QAAUj9M,KAAKq/M,cAAc,KAAM9mN,EAAE,CACnE+mN,WAAW,GACVt/M,KAAKu/M,cAAc,CAACnlN,IAAI,KAAO4F,KAAK,OAASA,KAAK0sD,SAASjyD,KAAO,aAAe,WAAW,CAACL,GAAK4F,KAAK9D,MAAMswC,IAAI51C,KAAKoJ,OAAQvE,GAAIuE,KAAKo8M,IAAIlgN,MAAM83B,aAAex6B,YAAW,KAC5KwG,KAAKo8M,IAAIlgN,MAAMilC,QAASnhC,KAAKw/M,kBAAiB,EAAG,IAC/CjjN,GAAK/C,WAAWwG,KAAKq6M,SAASlqK,KAAKr1C,KAAKkF,OAAQxF,EAAEmjC,iBAAiB,iBAAiB,KACtF39B,KAAKq6M,SAASuD,mBAAoBpkN,YAAW,IAAMgB,EAAE0uC,UAAU,IAAI,GAClE,CACDF,MAAM,IACJxuC,EAAE00E,UAAU58D,IAAItS,KAAK0sD,SAASxE,WAAWyyJ,sBAAwBp+M,GAAK/C,WAAWwG,KAAKq6M,SAASlqK,KAAKr1C,KAAKkF,MAC/G,EACA,SAAAy/M,CAAUjlN,GACRwF,KAAK+8M,mBAAmBvmN,OAAS,EAAGwJ,KAAKq6M,SAASlqK,OAAQnwC,KAAKq6M,SAAS2C,gBAAgB,IACxF,IAAIzlN,EAAIyI,KAAKq6M,SAAS2C,gBAAgB,IACtC,OAAOxiN,IAAMjD,EAAIyI,KAAKwpC,MAAM6wK,SAASqF,aAAc1/M,KAAKg/M,QAAQznN,GAAG,GAAKyI,IAC1E,EACA,eAAAg9M,CAAgBxiN,EAAGjD,GACjB,IAAIjB,EACFmF,EACAc,EACAxB,EACAf,EACAI,EAAI4F,KAAK0sD,SACTp1D,EAAI8C,EAAEigN,SACNvgN,GAAKvC,EAAIA,GAAK,CAAC,EAAG,IAClB4P,EAAI,GACJ5O,EAAI6B,EAAEo+M,UACN3+M,EAAIvC,EAAE8jN,UAAY,EAAI9jN,EAAE8jN,SAAW,IACnCxhN,EAAItC,EAAE+jN,WACNzzK,EAAI,EACN,KAAMptC,EAAI,UAAYJ,EAAEK,MAAQuF,KAAKzF,MAAM/D,QAAUwJ,KAAKzF,MAAM,GAAGH,EAAE+9M,cAAgB39M,EAAI,GAAKA,KAAOZ,EAAEpD,OAAQ,OAAOsD,EAAIxC,EAAEmkN,oBAAsBljN,EAAIA,EAAEitB,QAAOhrB,IAAMwF,KAAK2/M,eAAep5I,EAAE/rE,GAAKA,EAAED,MAAQC,KAAKwF,KAAKwpC,MAAM6wK,SAASqF,YAAc5lN,EAAGA,EAAE0B,MAAM,EAAG3B,GAC/P,SAASysE,EAAE9rE,EAAGjD,GACZ,OAAOA,EAAEiR,cAAcyF,MAAM,KAAK6jI,OAAMv6I,GAAKiD,EAAEwoH,SAASzrH,EAAEiR,gBAC5D,CACA,IAAKxO,EAAI1C,EAAEikN,cAAgB,GAAK/gN,GAAK,GAAKA,GAAGgO,cAAeo/B,EAAIrvC,EAAE/B,OAAQoxC,IAAK,CAC7E,IAAIptC,EAAGJ,EACP9D,EAAIiC,EAAEqvC,aAAcnxC,OAAS8B,EAAEqvC,GAAK,CAClCrtC,MAAOhC,EAAEqvC,IAEX,IAAI/tC,EAAKpD,OAAOwL,KAAK3L,GAAGqF,MAAKnB,GAAKZ,EAAEopH,SAASxoH,KAAkBZ,EAAZ,CAAC,SACpDtC,EAAEgkN,cAAgB/jN,EAAEqoN,OAASrjN,EAAI1C,EAAEy8D,QAAO,CAAC97D,EAAGjD,IAAMiD,EAAI,KAAOlE,EAAEiB,IAAM,KAAK,IAAIiR,cAAc8rD,OAAQh9D,EAAEkkN,iBAAmBj/M,EAAI6M,EAAE7M,GAAIvC,EAAIoP,EAAEpP,IAAKQ,EAAI,GAAK+B,EAAEuQ,QAAQ9S,GAAII,EAAImC,IAAMvC,EAAGyB,EAAI6qE,EAAE/pE,EAAGvC,KAAOQ,GAAI,EAAIiB,EAAI5B,EAAE8B,MAAKnB,IACrN,IAAIiB,EAAI,IAAMnF,EAAEkE,IAAM,IACtB,OAAOlD,EAAEkkN,iBAAmB//M,EAAI2N,EAAE3N,GAAIzB,EAAIoP,EAAEpP,IAAK1C,EAAEikN,gBAAkB9/M,EAAIA,EAAE+M,eAAgBpO,EAAIqB,IAAMzB,EAAGzC,EAAEqoN,MAAQnkN,IAAMzB,EAAI,GAAKyB,EAAEqR,QAAQ9S,EAAE,KAC1Ie,GAAKzD,EAAEmkN,qBAAuBz7M,KAAK2/M,eAAep5I,EAAEjwE,GAAKA,EAAEiE,MAAQjE,GAAImF,IAAMV,IAAMX,GAAKI,EAAI2M,EAAErQ,KAAKR,GAAK,cAAgBgB,EAAEuoN,QAAUrlN,EAAIV,EAAEu0C,QAAQ/3C,GAAKwD,EAAEhD,KAAKR,GACrK,CACA,OAAO0J,KAAKwpC,MAAM6wK,SAASqF,YAAcv4M,EAAE0L,OAAO/Y,GAAI,mBAAqBxC,EAAEuoN,OAASvoN,EAAEuoN,OAAO14M,EAAE0L,OAAO/Y,GAAIE,GAAKmN,EAAE0L,OAAO/Y,GAAG0B,MAAM,EAAG3B,EACxI,EACA,cAAA8kN,CAAenkN,GACb,IAAIjD,EAAIyI,KAAK0sD,SAAS2tJ,SAASyF,WAC/B,OAAOvoN,EAAI,mBAAqBA,EAAIA,EAAEiD,GAAKA,EAAEjD,IAAMiD,EAAED,MAAQC,EAAED,KACjE,EACA,cAAAmjN,CAAeljN,GACb,OAAOjC,EAAE,GAAIiC,GAAGyC,KAAI,CAACzC,EAAGlE,KACtB,iBAAmBkE,GAAK,iBAAmBA,IAAMA,EAAI,CACnDD,MAAOC,IAET,IAAIiB,EAAIuE,KAAKq6M,SAASsE,eAAenkN,GACrC,OAAOiB,EAAI,iBAAmBA,EAAI0L,EAAE1L,GAAKA,EAAGuE,KAAK0sD,SAASiwJ,UAAUlC,aAAa5+M,MAAMmE,KAAM,CAACzI,EAAEA,EAAE,CAAC,EAAGiD,GAAI,CAAC,EAAG,CAC5GulN,YAAatkN,IACXuE,MAAM,IACT+B,KAAK,GACV,GAEF,MAAMyF,EAAI,kBACV,IAAIw4M,EACFC,EAAI,CACFliN,MAAO,QACPmiN,OAAQ,0BACR3gL,QAAS,mBACT+oH,UAAW,iBACX63D,WAAY,eAEdC,EAAI,CACF7jF,QAAS,CAAC/hI,EAAGjD,IAAM,gBAAgBA,EAAE2wD,WAAWnxB,aAAax/B,EAAEkD,KAAO,GAAGlD,EAAE2wD,WAAW3wD,EAAEkD,KAAO,UAAY,MAAMD,EAAE4jC,mCAAmC7mC,EAAEslN,SAAW,WAAa,2BAA2BtlN,EAAE8jC,SAAW,WAAa,2BAA2B9jC,EAAE8oN,SAAW,WAAa,2BAA2B,WAAa9oN,EAAEkD,KAAO,qBAAuB,8DAA8DlD,EAAEslN,UAAYtlN,EAAEohN,UAAY,kBAAoB,qCAAqCphN,EAAEg1G,aAAe,gCAAgCh1G,EAAEg1G,aAAe,+BAA+Bh1G,EAAE2wD,WAAWhsD,qHAAqH,OAAS3E,EAAEkD,0DACnuB,GAAA0jC,CAAI3jC,EAAGjD,GACL,IAAIjB,EAAIiB,EAAEm1D,SACV,MAAO,eAAelyD,EAAEutF,OAASvtF,EAAED,8HAA8HjE,EAAEijN,KAAKC,cAAgB,GAAK,kCAAkCljN,EAAE4xD,WAAW/pB,OAAO3jC,EAAE8lN,OAAS,4BAA4BtgN,KAAKugN,cAAc/lN,uCAAuClE,EAAE4xD,WAAW4yJ,qGAAqGxkN,EAAE4xD,WAAW2yJ,YAAYrgN,EAAElE,EAAE6hN,cAAgB39M,EAAED,kDACvf,EACA,QAAA8/M,CAAS7/M,GACP,IAAIjD,EAAIiD,EAAE6/M,SACR/jN,EAAI,UAAYiB,EAAE4lD,SAClB1hD,EAAI,GAAGjB,EAAE0tD,WAAWmyJ,WACtB,MAAO,eAAe/jN,EAAI,GAAKmF,KAAKlE,EAAE4jN,qIAAqI3gN,EAAE0tD,WAAWoyJ,iDAC1L,EACA,eAAAqD,CAAgBnjN,GACd,IAAIjD,EAAIyI,KAAK0sD,SACXp2D,EAAI0J,KAAKwpC,MAAM6wK,SAASqF,YAC1B,MAAO,iBAAiBnoN,EAAEolN,UAAUpC,eAAe3jN,KAAKoJ,KAAM1J,mBAAmBkE,kBAAkBjD,EAAEolN,UAAUnC,eAAe5jN,KAAKoJ,KAAM1J,cAC3I,EACA,YAAAmkN,CAAajgN,GACX,MAAO,QAAQwF,KAAKugN,cAAc/lN,kCAAkCwF,KAAK0sD,SAASxE,WAAWuyJ,gBAAgBjgN,EAAE8lN,MAAQ9lN,EAAE8lN,MAAQ,4EAA4E9lN,EAAEulN,aAAevlN,EAAED,aAClO,EACA,cAAAggN,CAAe//M,GACb,MAAO,4DAA4DwF,KAAK0sD,SAASxE,WAAWqyJ,2BAC9F,EACA,cAAAC,CAAehgN,GACb,IAAIjD,EAAIiD,EAAEhE,OAASwJ,KAAK0sD,SAAS2tJ,SAASe,SAC1C,OAAO7jN,EAAI,EAAI,4DAA4DyI,KAAK0sD,SAASxE,WAAWsyJ,qCAAqCjjN,2DAA6D,EACxM,EACAqlN,oBAAqB,MAErBv/L,EAAI,CACN,aAAAmjM,GACExgN,KAAKygN,iBAAiBnoM,SAAQ9d,IAC5BwF,KAAK2yC,GAAGn4C,EAAGwF,KAAK0sD,SAAS2rJ,UAAU79M,GAAG,GAE1C,EACA,OAAA46D,GACE,IAAI56D,IAAMsB,UAAUtF,OAAS,QAAK,IAAWsF,UAAU,KAAOA,UAAU,GACxE,IAAIvE,EACFjB,EAAI0J,KAAK4zC,OAAOykK,UAChB58M,EAAIjB,EAAI,mBAAqB,sBAC/B,IAAKwF,KAAKwpC,MAAMk3K,aAAelmN,EAAG,CAChC,IAAK,IAAI+B,KAAKyD,KAAKwpC,MAAMk3K,WAAalmN,EAAGA,IAAMwF,KAAKu2D,UAAUoqJ,OAAS3gN,KAAK4zC,OAAOgtK,WAAWhqN,KAAKoJ,MAAOA,KAAK0sD,SAASm0J,gBAAkBzsL,EAAOp0B,KAAKo8M,IAAI0E,eAAenuK,GAAG,uBAAwB3yC,KAAK+gN,cAAcjmN,KAAKkF,QAASzI,EAAIyI,KAAKu2D,UAAUoqJ,KAAO3gN,KAAKu2D,UAAUoqJ,MAAQ,CACpRx/K,MAAO,CAAC,QAAS7qC,EAAE0qN,YAAYlmN,KAAKkF,OACpC2oK,QAAS,CAAC,QAASryK,EAAE2qN,UAAUnmN,KAAKkF,OACpC81C,MAAO,CAAC,QAASx/C,EAAE4qN,aAAapmN,KAAKkF,OACrCmhN,SAAU,CAAC,QAAS7qN,EAAE8qN,mBAAmBtmN,KAAKkF,OAC9CssI,MAAO,CAAC,QAASh2I,EAAE+qN,QAAQvmN,KAAKkF,OAChCinL,KAAM,CAAC,QAAS3wL,EAAEgrN,OAAOxmN,KAAKkF,OAC9BuhN,iBAAkB,CAAC,QAASjrN,EAAEkrN,mBAAmB1mN,KAAKkF,OACtDyhN,eAAgB,CAAC,QAASnrN,EAAEorN,iBAAiB5mN,KAAKkF,QACjDA,KAAKo8M,IAAI7kN,EAAEgF,GAAG,IAAId,GAAGc,EAAGhF,EAAEgF,GAAG,IAChC03E,cAAcj0E,KAAKu2D,UAAUoqJ,KAAKgB,oCAAqC3hN,KAAKu2D,UAAUoqJ,KAAKgB,mCAAqCxtI,YAAY79E,EAAEsrN,0BAA0B9mN,KAAKkF,MAAO,KACpL,IAAIjF,EAAIiF,KAAKu2D,UAAUoqJ,KAAKkB,uBAAyB,IAAIvpJ,iBAAiBhiE,EAAEwrN,iBAAiBhnN,KAAKkF,OAClGjF,EAAEm6D,aAAc,OAASl1D,KAAK0sD,SAASjyD,MAAQM,EAAE09D,QAAQz4D,KAAKo8M,IAAIlgN,MAAO,CACvEw8D,WAAW,GAEf,CACF,EACA,UAAAkoJ,CAAWpmN,GACT,IAAIjD,EACFjB,EAAI0J,KAAK4zC,OAAOykK,UAChB58M,EAAIjB,EAAI,sBAAwB,mBAClC,GAAIwF,KAAKu2D,YAAc/7D,IAAMwF,KAAKu2D,UAAU5jC,QAAS,IAAKp7B,KAAMyI,KAAKu2D,UAAU5jC,OAAS3yB,KAAKu2D,UAAU5jC,QAAU,CAAC,CAChH15B,KAAM+G,KAAKosH,KAAO,UAAY,QAC9BjzH,OAAQ6G,KAAKo8M,IAAIlgN,MACjB6lN,GAAIzrN,EAAE0J,KAAKosH,KAAO,YAAc,WAAWtxH,KAAKkF,OAC/C,CACD/G,KAAM,UACNE,OAAQmC,OACRymN,GAAIzrN,EAAE0rN,gBAAgBlnN,KAAKkF,OAC1B,CACD/G,KAAM,OACNE,OAAQ6G,KAAKo8M,IAAIlgN,MACjB6lN,GAAIzrN,EAAE0qN,YAAYlmN,KAAKkF,OACtB,CACD/G,KAAM,QACNE,OAAQnB,SACR+pN,GAAIzrN,EAAE2rN,gBAAgBnnN,KAAKkF,QACzBA,KAAKu2D,UAAU5jC,QAASp7B,EAAE4B,OAAOsC,GAAGlE,EAAE0B,KAAM1B,EAAEwqN,GACpD,EACA,YAAAG,GACEliN,KAAK4zC,OAAOgtK,WAAWhqN,KAAKoJ,MAAM,EACpC,EACAq4M,UAAW,CACT,WAAA2I,CAAYxmN,GACV,IAAI2nN,EAAaC,EACb7qN,EAAIyI,KAAK0sD,SACXp2D,EAAIkE,EAAErB,OAAS6G,KAAKs0D,KAAK95D,EAAErB,OAAOq9B,aAAe,GACjD/6B,EAAmC,QAA9B0mN,EAAcniN,KAAKzF,aAAmC,IAAhB4nN,GAAsE,QAAnCC,EAAeD,EAAY,UAAiC,IAAjBC,OAArD,EAAwFA,EAAa7qN,EAAE4gN,aAC3K57M,EAAI/B,EAAEvB,KACN8B,EAAIxD,EAAE8iN,SAAS54K,SAAW,EAC1BznC,EAAI,CACFo8C,cAAe57C,EAAE47C,eAEnBh8C,EAAI4F,KAAKwpC,MAAMi1K,QAAQM,eAAiBhkN,IAAMxD,EAAE8iN,SAASsB,eACzDrkN,EAAI0I,KAAKwpC,MAAMi1K,QAAQ4D,QAAUtnN,EACjCjB,EAAIU,EAAE47C,eAAiBkwB,EAAE1vE,KAAKoJ,KAAMxF,EAAE47C,gBAAkBp2C,KAAKo8M,IAAIjgL,MAAMzE,SAASl9B,EAAE47C,eACpF,GAAI,QAAU75C,EAAG,CACf,GAAI/B,EAAE47C,gBAAkBp2C,KAAKo8M,IAAIjgL,MAAO,OAAOn8B,KAAKq6M,SAASlqK,YAAanwC,KAAKo8M,IAAIlgN,MAAMilC,QACzFnhC,KAAKsiN,aAAc/qN,EAAEghN,mBAAqBv4M,KAAKgvE,oBACjD,CACA,IAAK50E,IAAM9C,EAAG,GAAI0I,KAAKwpC,MAAMlI,SAAW,SAAW/kC,IAAM,IAAIS,KAAQgD,KAAKw/M,iBAAiBx/M,KAAKwpC,MAAMlI,UAAW,OAAS/pC,EAAEkD,KAAM,CAChI,GAAI,SAAW8B,EAAG,OAAOyD,KAAKwzC,QAAQ,QAASx5C,QAAU,IAAMzC,EAAE8iN,SAAS54K,SAAWlqC,EAAEohN,WAAa34M,KAAKq6M,SAASnqK,KAAKlwC,KAAKzF,MAAM/D,OAAS,QAAK,IAChJ,QAAU+F,IAAMyD,KAAKwzC,QAAQ,OAAQx5C,GAAIgG,KAAKw7F,SAAQ,GAAK,UAAYjkG,EAAEkD,OAASX,IAAMkG,KAAKi/M,aAAc3oN,EAAI,IAAKmF,IAAMnF,IAAMA,EAAI,KAAMA,IAAM0J,KAAKwpC,MAAMi1K,QAAQM,cAAgBxnN,EAAE+gN,cAAgBt4M,KAAKg/M,QAAQ1oN,GAAG,IAAM0J,KAAKo8M,IAAIlgN,MAAMsgC,gBAAgB,SAAUx8B,KAAKq6M,SAASlqK,MACpR,KAAO,SAAW5zC,EAAIyD,KAAKwzC,QAAQ,QAASx5C,GAAK,QAAUQ,EAAEvB,OAAS+G,KAAKwzC,QAAQ,OAAQx5C,GAAIgG,KAAKw7F,SAAQ,GAAKx7F,KAAKq6M,SAASlqK,OAAQnwC,KAAKwpC,MAAM6wK,SAASjqJ,aAAU,EAAQpwD,KAAKq9M,oBACpL,EACA,kBAAAmE,CAAmBhnN,GACjBwF,KAAKwpC,MAAM60K,WAAY,CACzB,EACA,gBAAAqD,CAAiBlnN,GACfwF,KAAKwpC,MAAM60K,WAAY,CACzB,EACA,eAAA2D,CAAgBxnN,GACd,IAAIjD,EACFjB,EAAI0B,SAASopC,cACb3lC,EAAI6qE,EAAE1vE,KAAKoJ,KAAM1J,IAAM0J,KAAKo8M,IAAIjgL,MAAMzE,SAAS1/B,SAASopC,eACxD7kC,EAAId,GAAKnF,EAAEokE,aAAa,YAC1B,GAAIj/D,IAAMc,EAAG,OAAQhF,EAAIjB,EAAE66I,mBAAoB32I,EAAEK,KAC/C,IAAK,YACHmF,KAAK0sD,SAASmwJ,WAAa78M,KAAKi/M,WAAW3oN,IAAKiB,GAAKyI,KAAKo8M,IAAIlgN,OAAOilC,SACrE,MACF,IAAK,QACH3nC,WAAWwG,KAAKk/M,QAAQpkN,KAAKkF,MAAO,EAAG1J,GAE7C,EACA,SAAA2qN,CAAUzmN,GACR,IAAIjD,EAAIyI,KAAK0sD,SACb,IAAK1sD,KAAKwpC,MAAM60K,WAAa9mN,EAAEohN,UAAW,CACxC,UAAYphN,EAAEkD,MAAQlD,EAAEmhN,kBAAoB14M,KAAKzF,MAAM/D,QAAU,OAASgE,EAAEK,KAAOL,EAAE+4C,iBACrF,IAAIj9C,EAAI0J,KAAKs0D,KAAK95D,EAAErB,OAAOq9B,aAC3B,GAAIx2B,KAAKwzC,QAAQ,UAAW,CAC1B76C,MAAO6B,IACL,OAASjD,EAAEkD,KAAM,CACnB,OAAQD,EAAEK,KACR,IAAK,OACL,IAAK,YACHmF,KAAKwpC,MAAMi1K,QAAQC,WAAY,EAC/B,MACF,IAAK,SACL,IAAK,YACH,GAAI1+M,KAAKwpC,MAAMyzK,QAAS,OACxB,IAAIxhN,EAAIzD,SAAS24H,eACfp0H,EAAI,UAAY/B,EAAEK,KAAOY,EAAE8vJ,eAAiB9vJ,EAAE0+H,WAAW3jI,QAAU,GACnEuE,EAAIU,EAAE0+H,WAAWxK,gBACjB31H,EAAI,GAAKyB,EAAE0+H,WAAW9mG,WAAa53B,EAAE8vJ,cAAgBxwJ,GAAK,GAAKA,EAAEs4B,UAAY53B,EAAE0+H,WAAWxK,gBAC5Fv1H,EAAE4F,KAAKo8M,IAAIlgN,MAAMmiC,WACjB,IAAI/mC,EACF6P,EACAo/D,EACAhuE,EAAIyH,KAAKuiN,aACT1oN,EAAI,IAAM4B,EAAE0+H,WAAW3jI,QAAUiF,EAAE0+H,WAAWzjG,WAAa5R,OAAOkW,aAAa,MACjF,GAAI,QAAUzjC,EAAEyhN,WAAah/M,EAAG,OAAO1C,EAAI,GAAKmE,EAAE0+H,WAAW9mG,SAAW,KAAO53B,EAAE0+H,WAAW6R,uBAAwBxyI,WAAWwG,KAAKk/M,QAAQpkN,KAAKkF,MAAO,EAAG1I,QAASkD,EAAE+4C,iBACtK,GAAI35C,KAAOI,aAAai+D,QAAS,OAAOsO,EAAIzsE,EAAEE,GAAIA,EAAE0gE,aAAa,aAAe1gE,EAAEkvC,SAAUlpC,KAAKo8M,IAAIlgN,MAAMilC,aAAc3nC,YAAW,KAClIgD,EAAE+pE,GAAIvmE,KAAKo8M,IAAIlgN,MAAM45C,OAAO,IAE9B,GAAI,MAAQr6C,EAAE0+H,WAAW1lG,SAAU,OACnC,IAAKl4B,GAAKvC,IAAM,GAAKyB,EAAE0+H,WAAW9mG,SAAWlsB,EAAI,GAAK1L,EAAE8vJ,aAAehvJ,EAAIhE,EAAE,GAAK,KAAOA,EAAE2L,KAAKqL,IAAIhX,EAAE/B,OAAQiF,EAAE8vJ,cAAgB,GAAKhvJ,EAAI4K,EAAI1L,EAAE0+H,WAAWgX,mBAAqBn3I,aAAai+D,UAAY9wD,EAAInN,GAAI,GAAKyB,EAAE0+H,WAAW9mG,WAAa53B,EAAE0+H,WAAWzjG,WAAaj7B,EAAE0+H,WAAW6R,wBAA0BxxI,EAAE+4C,kBAAmBv5C,GAAKuC,KAAOhF,EAAEyhN,UAAW,YAAYx+M,EAAE+4C,iBAC5W,GAAI,SAAW93C,EAAExC,OAASwC,EAAE8vJ,cAAgB9vJ,EAAE0+H,YAAcn6H,KAAKo8M,IAAIlgN,OAAS,UAAY1B,EAAEK,IAAK,YAAYL,EAAE+4C,iBAC/G,GAAI,SAAW93C,EAAExC,MAAQkO,GAAKA,EAAEuzD,aAAa,YAAa,YAAYl+D,EAAE1C,EAAEqN,IAC1E,UAAY3M,EAAEK,KAAOhB,GAAKyN,EAAE7L,EAAE0+H,WAAWt4F,cAAgB7hC,KAAKi/M,WAAWxjN,EAAE0+H,WAAWt4F,aAAc/oC,aAAaknN,GAAIA,EAAIxmN,YAAW,KAClI,IAAIgB,EAAIxC,SAAS24H,eACjBv2H,EAAE4F,KAAKo8M,IAAIlgN,MAAMmiC,YAAa9hC,GAAK/B,EAAE2/H,WAAWxK,gBAAiB3vH,KAAKzF,MAAQ,GAAG0C,IAAIrG,KAAK2B,GAAG,CAACiC,EAAGjD,KAC/F,IAAIjB,EAAIgR,EAAE9M,GACV,GAAIA,EAAEw5B,YAAc19B,EAAEumN,SAAU,OAAOvmN,EACvC0J,KAAKwzC,QAAQ,SAAU,CACrBrV,IAAK3jC,EACLwzB,MAAOz2B,EACPtB,KAAMK,GACN,IACDkvB,QAAOhrB,GAAKA,GAAE,GAChB,IAEP,OAAO,CACT,CACA,OAAQA,EAAEK,KACR,IAAK,YACH,UAAYtD,EAAEkD,MAAQlD,EAAEmhN,kBAAoB14M,KAAKzF,MAAM/D,OAASwJ,KAAKi/M,aAAej/M,KAAKwpC,MAAM6wK,SAASjqJ,SAAW,UAAY74D,EAAE8iN,SAASl9J,UAAY,IAAM3iD,EAAErB,OAAOq9B,aAAe,MAAQlgC,EAAE2hC,WAAW,MAAO,IAAO1gC,EAAEyhN,UAAYh5M,KAAKi/M,aAAe,QAAU1nN,EAAEyhN,WAAax/M,WAAWwG,KAAKk/M,QAAQpkN,KAAKkF,MAAO,IACtT,MACF,IAAK,MACL,IAAK,SACH,GAAIA,KAAKwpC,MAAM6wK,SAASjqJ,QAAS,OACjC51D,EAAErB,OAAO++C,OACT,MACF,IAAK,OACL,IAAK,YACHl4C,KAAKwpC,MAAM6wK,SAASjqJ,SAAWpwD,KAAKq6M,SAASnqK,OAC7C,MACF,IAAK,aACH,CACE,IAAI11C,EAAIwF,KAAKwpC,MAAMg5K,iBAAmBxiN,KAAKwpC,MAAM8zK,WACjD,GAAI9iN,GAAKjD,EAAEoiN,aAAaC,SAAU,YAAY55M,KAAKg/M,QAAQ,CAACxkN,IAAI,GAChE,KACF,CACF,IAAK,MACH,CACE,IAAIiB,EAAI,UAAYlE,EAAEkD,KACtB,IAAKnE,GAAKmF,EAAG,OAAO,EACpBjB,EAAE+4C,gBACJ,CACF,IAAK,QACH,GAAIvzC,KAAKwpC,MAAM6wK,SAASjqJ,SAAW,UAAY74D,EAAE8iN,SAASl9J,SAAU,OACpE3iD,EAAE+4C,iBAAkB/5C,YAAW,KAC7BwG,KAAKwpC,MAAM6wK,SAASjqJ,SAAWpwD,KAAKwpC,MAAMi1K,QAAQM,cAAgB/+M,KAAKg/M,QAAQ1oN,GAAG,EAAG,IAG7F,CACF,EACA,OAAAmsN,CAAQjoN,GACNwF,KAAKsiN,aACL,IAAI/qN,EAAIyI,KAAK0sD,SACb,GAAI,OAASn1D,EAAEkD,KAAM,OAAOuF,KAAK4zC,OAAOykK,UAAUqK,eAAe9rN,KAAKoJ,KAAMxF,GAC5E,IAAIlE,EAAI0J,KAAK9D,MAAM27M,UAAUjhN,KAAKoJ,MAChCvE,EAAInF,EAAEE,QAAUe,EAAE8iN,SAAS54K,QAC3BllC,EAAI,CACFhC,MAAOjE,EACPqsN,SAAU3iN,KAAKo8M,IAAIlgN,OAErBnB,EAAIiF,KAAK4iN,YAAY,CACnBroN,MAAOjE,IAEX,UAAYiB,EAAEkD,MAAQuF,KAAK6iN,sBAAsB9nN,GAAIwB,EAAE0C,QAAUlE,EAAGiF,KAAKwpC,MAAMkzK,WAAapmN,IAAM0J,KAAK9D,MAAMoG,IAAI1L,KAAKoJ,KAAM1J,GAAG,IAAM,GAAKA,EAAEytG,OAAOxsG,EAAE2gN,YAAcl4M,KAAKg/M,QAAQ1oN,IAAM0J,KAAK9D,MAAMoG,IAAI1L,KAAKoJ,MAAQzI,EAAE8iN,SAAS54K,SAAW,GAAKzhC,KAAKq6M,SAAS5+M,EAAI,OAAS,QAAQnF,GAAI0J,KAAKwzC,QAAQ,QAASj3C,GAC5S,EACA,cAAAmmN,CAAeloN,GACb,IAAIjD,EACFjB,EACAmF,EACAc,EACAxB,EACAf,EACAI,EACA9C,EACAwC,EAAIkG,KAAK0sD,SACTvlD,EAAInH,KAAKzF,MAAM/D,OACf+vE,EAAIvmE,KAAKuiN,aACT1oN,EAAI7B,SAASy4C,yBACbrnC,EAAI9N,OAAOq1H,eAAeE,WAAW,GACrCjpF,EAAI,GAAG3qC,IAAIrG,KAAK2vE,GAAG/rE,GAAK8M,EAAE9M,GAAGD,QAC/B,GAAI,yBAA2BC,EAAEsoN,WAAalpN,KAAOoG,KAAK4zC,OAAOykK,UAAU4I,UAAUrqN,KAAKoJ,KAAM,CAC9F7G,OAAQqB,EAAErB,OACV0B,IAAK,cACH6M,EAAE1H,KAAKuiN,cAAeviN,KAAKzF,MAAMiB,QAAQ8c,SAAQ9d,IACnDA,EAAEqiN,WAAaj1K,EAAEo7E,SAASxoH,EAAED,QAAUV,EAAEH,YAAYsG,KAAK+iN,cAAcvoN,GAAG,IACxEX,EAAEyhC,WAAW9kC,SAAW4S,EAAE8nH,WAAWr3H,GAAImG,KAAKgjN,oBAAmB,EAAInpN,EAAE0mC,YAAagmC,EAAE/vE,QAAU2Q,EAAG,OAAOnH,KAAKzF,MAAQ,GAAG0C,IAAIrG,KAAKoJ,KAAKuiN,cAAc/nN,GAAK8M,EAAE9M,UAAUwF,KAAKk9E,OAAO,CACrL+lI,oBAAoB,IAEtB,GAAIjjN,KAAKk6M,aAAc,OAAO,EAC9B,GAAI5+M,OAAOq1H,eAAiB32H,EAAIsB,OAAOq1H,gBAAgBC,WAAa,GAAK,GAAK52H,EAAEmgI,WAAW9mG,SAAU,CACnG,IAAKjqB,EAAIpP,EAAE62H,WAAW,GAAGM,cAAcE,UAAS,GAAKjoH,EAAEiuH,SAASr9H,EAAEwxJ,UAAW,GAAI/vJ,GAAKlE,EAAI6R,EAAEhN,WAAWZ,MAAM,EAAG4N,EAAE6nH,YAAYhjH,MAAMnU,EAAEylC,SAAS/oC,OAAS,GAAIF,EAAIiB,EAAE4N,MAAMrL,EAAEylC,YAAchjC,EAAIhF,EAAEiE,MAAMjE,EAAE2rN,YAAY5sN,EAAEA,EAAEE,OAAS,MAAO+F,EAAG,CACvO,GAAIyD,KAAKwpC,MAAMi1K,QAAQC,WAAY,EAAI1+M,KAAKwpC,MAAMrL,IAAM,CACtD5W,OAAQhrB,EAAE4I,MAAMrL,EAAEylC,SAAS,GAC3BhlC,MAAOgC,EAAE6I,QAAQtL,EAAEylC,QAAS,KAC3Bv/B,KAAKwpC,MAAMrL,IAAIs/K,WAAazjN,EAAEyjN,WAAaz9M,KAAKwpC,MAAMrL,IAAI5jC,MAAM/D,OAAQc,EAAI0I,KAAKwpC,MAAMrL,IAAI5jC,MAAM4K,MAAMrL,EAAEo+M,YAAa,OAAOl4M,KAAKwpC,MAAMrL,IAAI5jC,MAAQyF,KAAKwpC,MAAMrL,IAAI5jC,MAAM6K,QAAQtL,EAAEo+M,WAAY,IAAKl4M,KAAKwpC,MAAMrL,IAAI+5K,WAAa5gN,EAAE,GAAI0I,KAAKg/M,QAAQh/M,KAAKwpC,MAAMrL,IAAI5jC,MAAOT,EAAEugN,SAASuB,oBAAqB57M,KAAKq6M,SAASlqK,OAC1Tp1C,EAAIiF,KAAKwpC,MAAMrL,IAAI5jC,MAAM/D,QAAUsD,EAAEugN,SAAS54K,QAC9C,IACErnC,GAAKA,EAAI4F,KAAKwpC,MAAMg0K,YAAYx9M,KAAKwpC,MAAMrL,IAAIs/K,aAAal2L,QAAUvnB,KAAKwpC,MAAMrL,IAAI5W,QAAUntB,EAAEG,MAAM,IAAMyF,KAAKwpC,MAAMrL,IAAI5jC,MAAM,GAAIyF,KAAKwpC,MAAMg0K,YAAYx9M,KAAKwpC,MAAMrL,IAAIs/K,cAAgBz9M,KAAKwpC,MAAMrL,IAAI5jC,cAAgByF,KAAKwpC,MAAMg0K,YAAYx9M,KAAKwpC,MAAMrL,IAAIs/K,WACnQ,CAAE,MAAOjjN,GAAI,EACZJ,GAAKqB,EAAIuE,KAAKwpC,MAAMiwK,QAAQ0J,uBAAyBpoN,GAAI,EAC5D,MAAOiF,KAAKwpC,MAAMg0K,YAAc,CAAC,EACjCx9M,KAAKwpC,MAAMiwK,QAAQ0J,oBAAsB1nN,CAC3C,CACAjC,YAAW,KACTwG,KAAKk9E,OAAO,CACV+lI,oBAAoB,IAClBjjN,KAAKwzC,QAAQ,QAASj7C,EAAE,CAAC,EAAGyH,KAAKwpC,MAAMrL,IAAK,CAC9C3H,YAAax2B,KAAKo8M,IAAIlgN,MAAMs6B,eACzBx2B,KAAKwpC,MAAMrL,KAAOn+B,KAAKq6M,SAASt/M,EAAI,OAAS,QAAQiF,KAAKwpC,MAAMrL,IAAI5jC,MAAM,GAC9E,GACL,EACA,SAAA6oN,CAAU5oN,GACR,IAAIjD,EAAIyI,KACRxG,YAAW,WACTjC,EAAEq8C,OAAOykK,UAAUoK,QAAQ7rN,KAAKW,EAAGiD,EACrC,GACF,EACA,yBAAAonN,GACE5hN,KAAKo8M,IAAI0E,cAAc9sL,YAAch0B,KAAKi9E,UAAWj9E,KAAKo8M,IAAI0E,cAAcvmN,OAASyF,KAAKo8M,IAAI0E,cAAcuC,aAAerjN,KAAKsjN,oBAClI,EACA,eAAArB,CAAgBznN,GACdA,EAAErB,QAAU6G,KAAKo8M,IAAIjgL,OAASn8B,KAAKo8M,IAAIjgL,MAAMzE,SAASl9B,EAAErB,UAAY6G,KAAKw/M,kBAAiB,GAAKx/M,KAAKwpC,MAAMlI,UAAW,EACvH,EACA,YAAA4/K,CAAa1mN,GACX,IAAIjD,EAAIyI,KAAK0sD,SACXp2D,EAAIkE,EAAErB,OAAO4tC,QAAQ,IAAMxvC,EAAE2wD,WAAW/pB,KACxC1iC,GAAK,IAAIuB,KAASgD,KAAKwpC,MAAMlI,SAC/B,GAAI9mC,EAAErB,QAAU6G,KAAKo8M,IAAIjgL,MAAO,CAC9B,IAAK3hC,EAAErB,OAAO+1E,UAAUx3C,SAASngC,EAAE2wD,WAAW4yJ,MAAO,OAAOxkN,GAAK0J,KAAKwzC,QAAQ,QAAS,CACrFrV,IAAK7nC,EACL03B,MAAOhuB,KAAKq6I,aAAa/jJ,GACzBL,KAAMqR,EAAEhR,GACRqC,MAAO6B,SACC,IAAMjD,EAAE4hN,UAAY,IAAM5hN,EAAE4hN,SAASC,QAAUp5M,KAAK4zC,OAAOykK,UAAU+I,mBAAmBxqN,KAAKoJ,KAAMxF,UAAaA,EAAErB,QAAU6G,KAAKo8M,IAAIlgN,QAAU,OAAS3E,EAAEkD,MAAQuF,KAAKujN,2BAA4B9nN,EAAI,KAAOuE,KAAKwpC,MAAM6wK,SAASjqJ,QAAUpwD,KAAKq6M,SAASlqK,OAAS,IAAM54C,EAAE8iN,SAAS54K,SAAW,OAASlqC,EAAEkD,MAAQuF,KAAKq6M,SAASnqK,KAAKlwC,KAAKzF,MAAM/D,OAAS,QAAK,GAAU,UAAYe,EAAEkD,MAAQ,IAAMlD,EAAE8iN,SAAS54K,SAAWzhC,KAAKwpC,MAAM6wK,SAASjqJ,SAAWpwD,KAAKq6M,SAASnqK,QACjdlwC,KAAKi/M,WAAWzkN,EAAErB,OAAO66B,WAC3B,MAAOh0B,KAAKo8M,IAAIlgN,MAAMilC,OACxB,EACA,OAAAkgL,CAAQ7mN,GACNA,EAAE+4C,iBACF,IAAIh8C,EACFjB,EACAmF,EAAIuE,KAAK0sD,SACX,GAAI,UAAYjxD,EAAEhB,MAAQgB,EAAEi9M,mBAAqBj9M,EAAEk9M,UAAW,OAAO,EACrEl9M,EAAEohN,WAAatlN,EAAIiD,EAAEmvI,eAAiBruI,OAAOquI,cAAerzI,EAAIiB,EAAEu2C,QAAQ,QAASryC,EAAEG,MAAMmgN,YAAYvhN,EAAG,CACxGokN,OAAQ5+M,KACRwjN,WAAYltN,EACZqzI,cAAepyI,IACd4wC,MAAK5wC,SACN,IAAWA,IAAMA,EAAIjB,GAAIiB,IAAMyI,KAAKyjN,cAAclsN,EAAG+D,OAAOq1H,eAAeE,WAAW,IAAK,OAAS7wH,KAAK0sD,SAASjyD,KAAOuF,KAAK4zC,OAAOykK,UAAUqK,eAAe9rN,KAAKoJ,KAAMxF,GAAKwF,KAAK0sD,SAASwsJ,YAAcl5M,KAAKg/M,QAAQh/M,KAAKwpC,MAAMkzK,UAAYnlN,GAAG,GAAMyI,KAAKwpC,MAAMkzK,UAAYnlN,EAAE,IAC/Qy0C,OAAMxxC,GAAKA,IAChB,EACA,MAAA8mN,CAAO9mN,GACLA,EAAE+4C,gBACJ,EACA,cAAAmwK,CAAelpN,EAAGjD,GAChB,IAAIjB,EAAIkE,EAAEusC,QAAQ,IAAM/mC,KAAK0sD,SAASxE,WAAW/pB,KAC/C1iC,EAAIuE,KAAKq6I,aAAa/jJ,GACtBiG,EAAI+K,EAAEhR,GACNyE,EAAIiF,KAAK9D,MAAM27M,UAAUjhN,KAAKoJ,KAAMxF,GACpCR,EAAI,CACF,CAACgG,KAAK0sD,SAASyrJ,aAAcp9M,EAC7B4oN,QAASpnN,EAAEonN,SAEbvpN,EAAI4F,KAAK4iN,YAAY5oN,GACvBgG,KAAK4jN,sBAAsBrrN,EAAEgE,EAAGvC,MAAO,IAAOQ,EAAEqpN,kBAAoBzpN,GAAI,GAAK9D,EAAE44E,UAAU9+B,OAAOpwC,KAAK0sD,SAASxE,WAAW6xJ,YAAY,IAAO3/M,GAAImC,EAAE+iN,UAAYllN,EAAG9D,EAAEyxF,OAAQ,IAAO3tF,EAAImC,EAAEwrF,OAASxrF,EAAEhC,MAAQH,EAAGW,EAAEvE,QAAUwJ,KAAK0sD,SAAS2tJ,SAAS54K,UAAYzhC,KAAKwpC,MAAMyzK,UAAYj9M,KAAKwpC,MAAMyzK,QAAQ1iN,MAAQQ,GAAIiF,KAAKq6M,SAASnqK,KAAKn1C,IAAKiF,KAAKwzC,QAAQ,aAAc,CACpWrV,IAAK7nC,EACL03B,MAAOvyB,EACPxF,KAAMsC,EAAE,CAAC,EAAGyH,KAAKzF,MAAMkB,GAAI,CACzB06L,SAAUp7L,IAEZpC,MAAOpB,GAEX,EACA,cAAAusN,CAAetpN,EAAGjD,GAChB,IAAIjB,GAAKiB,EAAEoyI,eAAiBruI,OAAOquI,eAAe77F,QAAQ,QAC1Dv2C,EAAEg8C,iBACF,IAAI93C,EAAIu8M,EAAE1hN,GACV0J,KAAKgjN,oBAAmB,EAAIvnN,EAC9B,EACA,cAAAsoN,CAAevpN,GACbwF,KAAKwpC,MAAMyzK,QAAU,CACnB9gL,MAAO3hC,EACP0B,MAAO1B,EAAEwjC,cAAc,qBAE3B,EACA,aAAAgmL,CAAcxpN,GACZ,GAAIwF,KAAKwpC,MAAMlI,UAAYthC,KAAKw/M,mBAAoBx/M,KAAKo8M,IAAIjgL,MAAMzE,SAASl9B,GAAI,CAC9E,IAAIjD,EACFjB,EACAmF,EAAIuE,KAAK0sD,SACTnwD,EAAI/B,EAAEusC,QAAQ,IAAMtrC,EAAEysD,WAAW/pB,KACjCpjC,EAAIuM,EAAE/K,GACNvC,EAAIgG,KAAK9D,MAAM27M,UAAUjhN,KAAKoJ,KAAMxF,GACpCJ,EAAI,CACF,CAACqB,EAAE08M,aAAcn+M,EACjB2pN,QAAS5oN,EAAE4oN,SAEbrsN,EAAIyD,EAAEkpN,eACNnqN,EAAIkG,KAAK4jN,sBAAsBrrN,EAAEwC,EAAGX,IACpC+M,EAAInH,KAAK4iN,YAAYxoN,GACvB,GAAIJ,EACF,GAAIF,EAAG,CACL,GAAIvC,EAAIyI,KAAKk6M,aAAc5jN,EAAIiC,EAAE,CAAC,EAAGjB,EAAG,CACtC,CAACmE,EAAE08M,aAAcn4M,KAAKs0D,KAAKt6D,GAC3BslN,UAAWn4M,IACT1L,EAAE69M,aAAa1iN,KAAKoJ,KAAM1J,EAAGgB,IAAI,KAAQ6P,IAAM5P,IAAK,IAAOD,EAAEgoN,YAAct/M,KAAK4iN,YAAYtsN,IAAK,CACnG,GAAI0J,KAAKwzC,QAAQ,UAAW,CAC1Bv9C,KAAMK,EACN6nC,IAAK5hC,EACLnD,QAAS+N,IACP1L,EAAE09M,SAASE,YAAa,OAC5B59M,EAAEm9M,gBAAkBtiN,EAAEgpN,UAAYn4M,EAAI7Q,EAAIgB,CAC5C,MAAOmE,EAAEm9M,yBAA2BtiN,EAAEyxF,aAAczxF,EAAE,uBAAwBA,EAAEgqN,OAChFtgN,KAAKq/M,cAAc9iN,EAAGjG,EACxB,MAAO0J,KAAKq/M,cAAc9iN,EAAGjF,QACxB0I,KAAKq/M,cAAc9iN,EAC5B,CACF,EACA,gBAAA2nN,CAAiB1pN,EAAGjD,GAClB,IAAKyI,KAAKwpC,MAAM60K,UAAW,OAAQr+M,KAAKwzC,QAAQ,eAAgB,CAC9D76C,MAAO6B,IACLA,EAAEK,KACJ,IAAK,MACL,IAAK,SACHtD,EAAEy8B,WAAW8mB,aAAavjD,EAAE0gN,gBAAgBkM,eAAgB5sN,GAAIyI,KAAKwpC,MAAMyzK,SAAU,EACvF,IAAK,QACL,IAAK,MACHziN,EAAE+4C,iBAAkB/4C,EAAErB,OAAO++C,OAEnC,EACA,kBAAAkpK,CAAmB5mN,GACjB,IAAIjD,EACFjB,EACAmF,EAAIjB,EAAErB,OAAO4tC,QAAQ,IAAM/mC,KAAK0sD,SAASxE,WAAW/pB,KACpD5hC,EAAI+K,EAAE7L,GACNV,EAAIiF,KAAK0sD,SACXjxD,GAAKV,EAAE49M,YAAa,IAAOp8M,EAAEu/H,WAAavkI,EAAIkE,EAAEyzE,UAAUx3C,SAAS13B,KAAK0sD,SAASxE,WAAW8yJ,YAAa1kN,EAAImF,EAAEi/D,aAAa,YAAa,UAAY3/D,EAAEN,MAAQM,EAAE8hN,UAAYtlN,GAAKjB,IAAM0J,KAAK0sD,SAASysJ,UAAYn5M,KAAKk/M,QAAQzjN,GAAIuE,KAAKw/M,kBAAiB,GAAKx/M,KAAKwzC,QAAQ,WAAY,CACrRrV,IAAK1iC,EACLuyB,MAAOhuB,KAAKq6I,aAAa5+I,GACzBxF,KAAMqR,EAAE7L,KAEZ,EACA,gBAAAqmN,CAAiBtnN,GACfA,EAAE8d,SAAQ9d,IACRA,EAAEm/D,WAAWrhD,SAAQ9d,IACnB,IAAI4pN,EACJ,GAAI,mBAAqB5pN,EAAEi1G,UAAWj1G,EAAEqgD,YAAY7iD,SAASC,cAAc,YAAY,GAAI,GAAKuC,EAAE64B,UAAY74B,EAAEwjC,cAAch+B,KAAK0sD,SAASxE,WAAWm8J,aAAc,CACnK,IAAI9sN,EAAIS,SAASu6C,eAAe,IAChC,GAAK/3C,EAAE8gC,WAAW,GAAGjI,UAAY,MAAQ74B,EAAEm1H,gBAAgBl7F,WAAal9B,EAAIS,SAASu6C,eAAe,OAAQ/3C,EAAEqgD,YAAYtjD,KAAM,IAAIiD,EAAE8gC,YAAY9/B,MAAM,GAAI,IAAKgB,EAAEjF,EACrK,MAAO,GAAI+uE,EAAE1vE,KAAKoJ,KAAMxF,GAAI,GAAI,IAAmD,QAA5C4pN,EAAqB5pN,EAAEm1H,uBAAoD,IAAvBy0F,OAAgC,EAASA,EAAmB/wL,WAAa74B,EAAEm1H,gBAAgBn5F,aAAeh8B,EAAEm1H,gBAAgBzmF,SAAU1uC,EAAEm1H,iBAAmB,MAAQn1H,EAAEm1H,gBAAgBl7F,SAAU,CACxRj6B,EAAEm1H,gBAAgB90E,YAAY,KAAOp/C,GACrC,IAAIlE,EAAIiD,EAAEqnC,YACRvrC,EAAI,GACN,KAAOiB,GAAIjB,GAAKiB,EAAEi/B,YAAaj/B,EAAIA,EAAEsqC,YACrCvrC,EAAEg+D,QAAU93D,EAAEhC,EAAEm1H,gBAClB,MAAOn1H,EAAEm1H,kBAAoBroH,EAAE9M,EAAEm1H,kBAAoBn1H,EAAEmgD,OAAOl/C,EAAE,IAC9DjB,EAAEi/D,aAAanhD,SAAQ9d,IACzBA,GAAK,MAAQA,EAAEi6B,UAAY6xC,EAAE1vE,KAAKoJ,KAAMzI,KAAOyI,KAAKi/M,WAAW1nN,GAAIyI,KAAKujN,2BAA2B,GACnG,IAEJ,IAAIhsN,EAAIyI,KAAKo8M,IAAIlgN,MAAMqkC,UACvBhpC,GAAK,IAAMA,EAAEm/B,WAAan/B,EAAE2xC,SAAU3xC,GAAK,MAAQA,EAAEk9B,UAAYz0B,KAAKo8M,IAAIlgN,MAAMxC,YAAY1B,SAASC,cAAc,MACrH,IAGJ,SAASowC,EAAE7tC,EAAGjD,GACZ,IAAKiD,EAAG,CACNY,QAAQkG,KAAK,UAAW,0BAA2B9G,GACnD,MAAMjD,EAAI,IAAI+sN,MAAMtkN,KAAM,CACxB7F,IAAK,IAAM,IAAM5C,IAEnB,OAAOA,CACT,CACA,GAAIiD,EAAE+pN,SAAU,OAAOnpN,QAAQkG,KAAK,WAAY,iEAAkE9G,GAAIA,EAAE+pN,SACxH,IAAIjuN,EACJiC,EAAEyH,KAAM,SAAUxF,GAChB,IAAIjD,EAAIS,SAASu6C,eAAe,IAChC,SAASj8C,EAAEkE,EAAGlE,EAAGmF,GACfA,GAAKnF,EAAE2X,MAAM,QAAQqK,SAAQhiB,GAAKiB,EAAEiD,EAAI,iBAAiB5D,KAAKW,EAAGjB,EAAGmF,IACtE,CACA,MAAO,CACL,GAAAs3C,CAAIv4C,EAAGjD,GACL,OAAOjB,EAAE,SAAUkE,EAAGjD,GAAIyI,IAC5B,EACA,EAAA2yC,CAAGn4C,EAAGjD,GACJ,OAAOA,GAAK,mBAAqBA,GAAKjB,EAAE,MAAOkE,EAAGjD,GAAIyI,IACxD,EACA,OAAAwzC,CAAQl9C,EAAGmF,EAAGc,GACZ,IAAIxB,EACJ,GAAIwB,EAAIA,GAAK,CACXioN,WAAW,GACVluN,EAAG,GAAIkE,EAAEkyD,SAASm0J,eAAgB,UAAYvqN,IAAMA,EAAI,aAAc89B,EAAO55B,EAAE4hN,IAAI0E,eAAep3J,eAAepzD,EAAG,CAACmF,QAAS,CAC/H,IACE,IAAIzB,EAAI,iBAAmByB,EAAIA,EAAI,CACjClB,MAAOkB,GAET,IAAKzB,EAAIuC,EAAEioN,UAAYjsN,EAAE,CAAC,EAAGyB,GAAKA,GAAG4kN,OAAS5+M,KAAMvE,EAAE9C,QAAUqB,EAAErB,MAAQqH,KAAKykN,WAAWhpN,EAAE9C,QAAS8C,aAAahF,OAAQ,IAAK,IAAI2D,KAAKqB,EAAGA,EAAErB,aAAci/F,cAAgBr/F,EAAEI,GAAKqB,EAAErB,IACpLW,EAAI,IAAIy5F,YAAYl+F,EAAG,CACrBsgD,OAAQ58C,GAEZ,CAAE,MAAOQ,GACPY,QAAQkG,KAAK9G,EACf,CACAjD,EAAEo9F,cAAc55F,EAClB,CACF,EAEJ,CAhCQ,CAgCNiF,OAAQA,KAAK0uM,UAAY,iBAAiB7oM,KAAK2tE,UAAU84C,aAAe,aAAazmH,KAAK2tE,UAAU84C,WAAYtsH,KAAKosH,KAAO9wH,OAAOtD,SAASogD,aAAc7gD,EAAIA,GAAK,CAAC,EAAGyI,KAAK0kN,kBAAoBpuN,EAAIiB,EAAEwkC,GAAIvhC,IAC1M,IAAIjD,EACFkE,EAAI,IAAMjB,EACZ,GAAI,GAAKmqN,aAAaC,QAAQp9M,EAAIlR,EAAI,KAAM,GAAI,IAC9CiB,EAAIq2C,KAAKC,MAAM82K,aAAan9M,EAAIlR,EAAImF,GACtC,CAAE,MAAOjB,GAAI,CACb,OAAOjD,CAAC,GACNyI,KAAK6kN,iBAAmB,CAACrqN,GAAKA,GAAKmqN,aAAaG,QAAQt9M,EAAIhN,EAAI,KAAM,GAAI,CAACjD,EAAGjB,KAChF,IAAImF,EAAI,IAAMnF,EACZiG,EAAIqxC,KAAKg7B,UAAUrxE,GACrBA,GAAKjB,IAAMquN,aAAaG,QAAQt9M,EAAIhN,EAAIiB,EAAGc,GAAIo4F,cAAc,IAAIl/C,MAAM,YAAY,GAChF,OAJuB,CAIbl+C,EAAEwkC,IAAK/7B,KAAK+kN,mBAAqB,CAACvqN,GAAKjD,IACpD,MAAMjB,EAAIkR,EAAI,IAAMhN,EAAI,IACxB,GAAIjD,EAAGotN,aAAaK,WAAW1uN,EAAIiB,QAAQ,IAAK,IAAIiD,KAAKmqN,aAAcnqN,EAAEwoH,SAAS1sH,IAAMquN,aAAaK,WAAWxqN,EAAE,EAFpE,CAG7CjD,EAAEwkC,IAAK/7B,KAAKilN,cAAczqN,EAAGjD,GAAIyI,KAAKwpC,MAAQ,CAC/CkzK,UAAW,GACXO,SAAS,EACToB,WAAW,EACXI,QAAS,CAAC,EACVhF,QAAS,CAAC,EACVY,SAAU,CAAC,EACXmD,YAAa,CAAC,GACbx9M,KAAKzF,MAAQ,GAAIyF,KAAKu2D,UAAY,CAAC,EAAGv2D,KAAKo8M,IAAM,CAAC,EAAGp8M,KAAKklN,MAAM1qN,GAAIs3J,EAAEl7J,KAAKoJ,MAAOA,KAAKmlN,aAAcnlN,KAAKsjN,qBAAsBtjN,KAAK4zC,OAAO4sK,cAAc5pN,KAAKoJ,MAAOA,KAAK4zC,OAAOwhB,QAAQx+D,KAAKoJ,MAAOxF,EAAE4qN,WAAaplN,KAAKo8M,IAAIlgN,MAAMilC,QAAS3mC,EAAE+pN,SAAWvkN,IAC/P,CACA,OAAOqoC,EAAE3xC,UAAY,CACnBulN,UAAWE,EACXkJ,cAAe/9M,EACfgtM,QAAS,CACPgR,QAAS/oN,EACTgpN,qBAAsBxqN,EACtByqN,KAAMxrN,EACNqC,SAAUkqE,EACVlgC,UAAW/uC,EACXmuN,WAAYt+M,EACZ7J,OAAQ/E,EACRmtN,kBAAmB7rN,EACnBywE,OAAQ1iC,EACR+9K,UAAWr/I,GAEbm6I,iBAAkB,CAAC,SAAU,MAAO,SAAU,UAAW,QAAS,QAAS,UAAW,QAAS,OAAQ,aAAc,oBAAqB,eAAgB,aAAc,eAAgB,gBAAiB,gBAAiB,kBAAmB,mBAAoB,mBAAoB,mBACrRmF,UAAW,CAAC,YAAa,YAAa,iBAAkB,iBAAkB,WAC1E,IAAAtxJ,CAAK95D,GACH,OAAOwF,KAAK0sD,SAAS4H,MAAQ95D,GAAK,iBAAmBA,EAAIA,EAAE85D,OAAS95D,CACtE,EACA6rC,UAAW/uC,EACXqlN,UAAWyD,EACX,aAAA/D,CAAc7hN,EAAGjD,GACf,OAAOD,GAAGkD,EAAIwF,KAAK0sD,SAASiwJ,UAAUniN,IAAMA,GAAGqB,MAAMmE,KAAMzI,GAC7D,EACA,aAAIihN,CAAUh+M,GACZ,MAAMjD,EAAIiD,GAAK2B,MAAMF,QAAQzB,GAC7BwF,KAAK0sD,SAAS8rJ,UAAYjhN,EAAIiD,EAAI,GAAIwF,KAAK6kN,iBAAiBttN,EAAIiD,EAAI,GAAI,YAC1E,EACA,aAAIg+M,GACF,OAAOx4M,KAAK0sD,SAAS8rJ,SACvB,EACA,sBAAAqN,CAAuBrrN,GACrB,IAAK,IAAIjD,KAAKiD,EAAG,CACf,IAAIlE,EAAIiB,EACRd,OAAOwD,eAAeO,EAAGlE,EAAI,WAAY,CACvC,GAAA6D,GACE,MAAO,IAAM6F,KAAK1J,GAAG2X,MAAM,KAAK,EAClC,GAEJ,CACF,EACA,aAAAg3M,CAAczqN,EAAGlE,GACf,IAAIwvN,EAAaC,EACjBt4M,EAAEkvM,UAAY38M,KAAK28M,UACnB,IAAIlhN,EAAIlD,EAAE,CAAC,EAAGkV,EAAG,OAASnX,EAAEmE,KAAO,CAC/B4/M,SAAU,CACRl9J,SAAU,SAEV,CAAC,GACL5gD,EAAIyD,KAAK0sD,SAAWn0D,EAAE,CAAC,EAAGkD,EAAGnF,GAC/B,GAAIiG,EAAE8+B,SAAW7gC,EAAEkgE,aAAa,YAAan+D,EAAEsgN,SAAWtgN,EAAEsgN,UAAYriN,EAAEkgE,aAAa,YAAan+D,EAAEgwG,YAAcplG,EAAE3M,EAAEu5B,aAAa,gBAAkBx3B,EAAEgwG,aAAe,IAAKhwG,EAAE8jN,SAAW7lN,EAAEkgE,aAAa,YAAa16D,KAAK6lN,uBAAuBtpN,EAAE2rD,iBAAa,IAAW3rD,EAAE89M,SAASoB,sBAAwBl/M,EAAE89M,SAASoB,oBAAsBl/M,EAAEuiC,YAAa9+B,KAAKosH,OAAS7vH,EAAEo9M,cAAe,GAAK,CAAC,YAAa,aAAarhM,SAAQ/gB,IACpa,IAAIjB,EAAIkE,EAAEu5B,aAAa,QAAUx8B,GACjCjB,IAAMA,EAAIA,EAAE2X,MAAM1R,EAAE27M,uBAAwB/7M,QAAUI,EAAEhF,GAAKjB,EAAE,IAC7D,iBAAkBA,IAAMiwE,EAAEjwE,EAAEqjN,gBAAkBp9M,EAAEo9M,aAAelsM,EAAEksM,aAAcp9M,EAAEo9M,aAAal4K,QAAUnrC,EAAEqjN,cAAe,OAASp9M,EAAE9B,OAAS8B,EAAEgjC,QAAUhjC,EAAEgjC,SAAW,IAAKhjC,EAAEo9M,aAAaC,UAAW,EAAIr9M,EAAE27M,WAAa5hN,EAAE4hN,YAAc,KAAM37M,EAAE47M,cAAgB57M,EAAE89M,SAASgB,WAAWr4F,SAASzmH,EAAE47M,cAAgB57M,EAAE89M,SAASgB,WAAWvkN,KAAKyF,EAAE47M,cAAe39M,EAAE+kC,QAAS,IAC1WhjC,EAAEgjC,QAAU,IAAI98B,OAAOjI,EAAE+kC,QAC3B,CAAE,MAAO/kC,GAAI,CACb,GAAI+B,EAAE27M,WAAY,CAChB37M,EAAEypN,YAAczpN,EAAE27M,WAClB,IACE37M,EAAE27M,WAAa,IAAIz1M,OAAOzC,KAAK0sD,SAASwrJ,WAAY,IACtD,CAAE,MAAO19M,GAAI,CACf,CACA+B,EAAE8+B,WAAa9+B,EAAEo8M,WAAY,GAAK34M,KAAKimN,MAAQ1uN,EAAEA,EAAE,CAAC,EAAG0oN,GAAI1jN,EAAE2pN,OAAS,CAAC,IAAK,UAAY3pN,EAAE9B,MAAuC,QAA9BqrN,EAAcxvN,EAAE+jN,gBAAsC,IAAhByL,GAA0BA,EAAYrkL,UAAYllC,EAAEo8M,YAAcp8M,EAAE89M,SAAS54K,QAAU,GAAIllC,EAAE89M,SAASwB,cAAgD,QAA/BkK,EAAezvN,EAAE+jN,gBAAuC,IAAjB0L,OAA0B,EAASA,EAAalK,eAAiB7jN,SAASg4C,KACjX,IAAIj1C,EAAIiF,KAAK0kN,iBAAiB,aAC9BvoN,MAAMF,QAAQlB,KAAOiF,KAAKw4M,UAAYr8M,MAAMF,QAAQM,EAAEi8M,WAAa3+M,EAAE0C,EAAEi8M,UAAWz9M,GAAKA,EACzF,EACA,aAAAwlN,CAAc/lN,GACZ,IAAIjD,EACFjB,EAAI0J,KAAKmmN,oBAAoB3rN,GAC7BiB,EAAI,GACN,IAAKlE,KAAKjB,EAAGmF,GAAK,IAAMlE,QAAK,IAAWiD,EAAEjD,GAAK,KAAKjB,EAAEiB,MAAQ,IAC9D,OAAOkE,CACT,EACA,mBAAA0qN,CAAoB3rN,GAClB,IAAK+rE,EAAE/rE,GAAI,MAAO,GAClB,IAAIjD,EACFjB,EAAI,CAAC,EACP,IAAKiB,KAAKiD,EAAG,MAAQjD,EAAEiE,MAAM,EAAG,IAAM,SAAWjE,GAAKiD,EAAE7D,eAAeY,SAAM,IAAWiD,EAAEjD,KAAOjB,EAAEiB,GAAK4P,EAAE3M,EAAEjD,KAC5G,OAAOjB,CACT,EACA,iBAAA+mN,GACE,IAAI7iN,EAAIc,OAAOq1H,eACbp5H,EAAI,CACFg0J,aAAc/wJ,EAAE+wJ,aAChBpxB,WAAY3/H,EAAE2/H,WACd/J,MAAO51H,EAAEq2H,YAAcr2H,EAAEo2H,YAAcp2H,EAAEq2H,WAAW,IAExD,OAAO7wH,KAAKwpC,MAAMwI,UAAYz6C,EAAGA,CACnC,EACA,UAAA4tN,GACE,IACI5tN,EADAiD,EAAIihD,iBAAiBz7C,KAAKo8M,IAAIjgL,MAAO,MAEzCn8B,KAAKomN,QAAU,CACbC,kBAAmB,CAAC7rN,IAClB,IAAIjD,EAAIiD,EAAED,MACV,MAAO,KAAOC,EAAE6N,KAAO,IAAM9Q,EAAIA,CAClC,EAHkB,CAGhB,SAAUiD,GACX,IAAKA,EAAG,MAAO,CAAC,EAChB,IAAIjD,GAAKiD,EAAIA,EAAE85D,OAAOrmD,MAAM,KAAK,IAAIA,MAAM,QAAQuX,QAAOhrB,GAAKA,IAAG+8B,MAAM+8B,OACxE,MAAO,CACL/5D,OAAQC,EAAEyT,MAAM1W,GAAGiuB,QAAOhrB,GAAKA,IAAG,GAAG85D,OACrCjsD,KAAM9Q,EAEV,CAPG,EAOAA,EAAI,sBAAuBiD,EAAE2hD,iBAAiB,KAAO5kD,MAE5D,EACA,KAAA2tN,CAAM1qN,GACJ,IAAIjD,EAAIyI,KAAKo8M,IACbp8M,KAAK0sD,SAAS+sJ,QAAQ6M,YAAc/uN,EAAEupN,cAAgB,KAAMvpN,EAAE4kC,MAAQ3hC,EAAGjD,EAAE2E,MAAQ1B,IAAMjD,EAAEupN,cAAgBtmN,EAAGjD,EAAEgvN,uBAAyB/rN,EAAEgnC,SAAUjqC,EAAE4kC,MAAQn8B,KAAKq8M,cAAc,UAAW,CAAC7hN,EAAGwF,KAAK0sD,WAAYn1D,EAAE2E,MAAQ3E,EAAE4kC,MAAM6B,cAAch+B,KAAK0sD,SAASxE,WAAWs+J,eAAgBhsN,EAAEw5B,WAAW0mB,aAAanjD,EAAE4kC,MAAO3hC,GAAIA,EAAEgnC,UAAY,EAClV,EACA,OAAAy7C,GACEj9E,KAAK4zC,OAAOsuK,aAAatrN,KAAKoJ,MAAOA,KAAKo8M,IAAIjgL,MAAMnI,WAAWC,YAAYj0B,KAAKo8M,IAAIjgL,OAAQn8B,KAAKo8M,IAAI0E,cAAct/K,SAAWxhC,KAAKo8M,IAAImK,8BAA+BvmN,KAAKo8M,IAAI0E,cAAcyD,SAAUvkN,KAAKq6M,SAASlqK,MAAK,GAAKr3C,aAAakH,KAAK88M,iCAAkC7oI,cAAcj0E,KAAKu2D,UAAUoqJ,KAAKgB,mCACvT,EACA,kBAAA2B,CAAmB9oN,GACjB,IAAIjD,EACFjB,EAAI0J,KAAK0sD,SACX,GAAI1sD,KAAKwpC,MAAMi9K,kBAAmB,OAAI,IAAWjsN,EAAG,CAClD,MAAMjD,EAAIyI,KAAK0kN,iBAAiB,SAChClqN,EAAIjD,IAAMyI,KAAKo8M,IAAI0E,cAAcvmN,MAAQhD,EAAIjB,EAAEmjN,QAAQ6M,WAAatmN,KAAKo8M,IAAIlgN,MAAMs6B,YAAcx2B,KAAKo8M,IAAI0E,cAAcvmN,KAC1H,CACA,GAAIyF,KAAK+gN,gBAAiBvmN,EACxB,GAAI,OAASlE,EAAEmE,KAAMuF,KAAK0mN,aAAalsN,IAAKjD,EAAIyI,KAAKo8M,IAAIlgN,MAAMqkC,YAAc,MAAQhpC,EAAE8/D,SAAWr3D,KAAKo8M,IAAIlgN,MAAMyqN,mBAAmB,YAAa,YAAa,CAC5J,IACE/4K,KAAKC,MAAMrzC,aAAc2B,QAAU3B,EAAIozC,KAAKC,MAAMrzC,GACpD,CAAE,MAAOA,GAAI,CACbwF,KAAKg/M,QAAQxkN,GAAG,GAAI8d,SAAQ9d,GAAKA,GAAKA,EAAE00E,UAAU58D,IAAIhc,EAAE4xD,WAAW4xJ,iBACrE,MACK95M,KAAKsiN,aACZtiN,KAAKwpC,MAAMo9K,0BAA4BtwN,EAAEmjN,QAAQ6M,WAAa,GAAKtmN,KAAKo8M,IAAI0E,cAAcvmN,KAC5F,EACA,UAAAkqN,CAAWjqN,GACT,IAAIjD,EAAI,CAAC,EACT,IAAK,IAAIjB,KAAKkE,EAAG,QAAUlE,IAAMiB,EAAEjB,GAAKkE,EAAElE,IAC1C,OAAOiB,CACT,EACA,OAAAikG,CAAQhhG,GACN,OAAOwF,KAAKwpC,MAAMqyD,UAAYrhG,EAAGwF,KAAKo8M,IAAIjgL,MAAM+yC,UAAU10E,EAAI,MAAQ,UAAUwF,KAAK0sD,SAASxE,WAAW+xJ,cAAej6M,IAC1H,EACA,UAAA+6M,CAAWvgN,EAAGjD,GACZ,OAAOiD,GAAKA,EAAE00E,UAAU33E,EAAI,MAAQ,UAAUyI,KAAK0sD,SAASxE,WAAW6yJ,YAAa/6M,IACtF,EACA,WAAAsoD,CAAY9tD,EAAGjD,GACb,iBAAmBiD,GAAKwF,KAAKo8M,IAAIjgL,MAAM+yC,UAAU9+B,OAAO51C,EAAGjD,EAC7D,EACA,qBAAAsrN,CAAsBroN,GACpB,IAAIjD,GAAI,IAAOiD,QAAK,IAAWA,GAC9BwF,KAAK0sD,SAAS2zJ,UAAY7lN,GAAKA,IAAMwF,KAAKimN,MAAMloN,QAAUxG,GAAI,GAAKyI,KAAKsoD,YAAYtoD,KAAK0sD,SAASxE,WAAW6xJ,YAAaxiN,GAAIyI,KAAKo8M,IAAIjgL,MAAM4rD,MAAQxwF,EAAI,GAAKiD,CACjK,EACA,gBAAAglN,CAAiBhlN,GACfwF,KAAKsoD,YAAYtoD,KAAK0sD,SAASxE,WAAW/mB,QAAS3mC,EACrD,EACAw0E,mBAAoB,WAClB,IAAKhvE,KAAK0sD,SAAS+sJ,QAAQ6M,WAAY,CACrC,IAAI9rN,EAAIwF,KAAKo8M,IAAI0E,cACfvpN,EAAIyI,KAAKwpC,MAAMo9K,4BAA8BpsN,EAAED,MAC/CjE,EAAI,IAAIk+F,YAAY,SAAU,CAC5Bh+C,SAAS,IAEbj/C,IAAMyI,KAAKwpC,MAAMo9K,0BAA4BpsN,EAAED,MAAOjE,EAAEuwN,WAAY,EAAIrsN,EAAEssN,eAAiBtsN,EAAEssN,cAAcr4G,SAASvqG,KAAKgyB,UAAW17B,EAAEm6F,cAAcr+F,GAAI0J,KAAKwzC,QAAQ,SAAUxzC,KAAKwpC,MAAMo9K,2BAA4BpsN,EAAED,MAAQyF,KAAKwpC,MAAMo9K,0BAC7O,CACF,EACAhzK,OAAQv2B,EACR,wBAAAkmM,GAA4B,EAC5B,kBAAAP,CAAmBxoN,EAAGjD,GACpB,GAAIA,EAAG,CACLiD,EAAI,iBAAmBA,EAAIA,IAAMA,EAAGjD,EAAIA,EAAEgpC,WAAahpC,EACvD,IAAIjB,EAAI0B,SAAS24H,eACjB,GAAIr6H,EAAEk1J,qBAAqBvzF,UAAYj4D,KAAKo8M,IAAIlgN,MAAMw7B,SAASphC,EAAEk1J,WAAY,OAAO,EACpF,IACEl1J,EAAEs6H,YAAc,GAAK,CAAC,QAAS,OAAOt4G,SAAQ7c,GAAKnF,EAAEu6H,WAAW,GAAG,MAAQp1H,GAAGlE,EAAGiD,GAAKjD,EAAEf,SAC1F,CAAE,MAAOgE,GAAI,CACf,CACF,EACA,cAAAk/M,CAAel/M,EAAGjD,GAChB,GAAIA,EAAIA,GAAKyI,KAAK0sD,SAAS+sJ,QAAQC,eAAgBl/M,GAAKA,EAAEw5B,YAAcz8B,EAAG,OAAOA,EAAI,iBAAmBA,EAAIS,SAASu6C,eAAeh7C,GAAKA,EAAGiD,EAAEw5B,WAAW0mB,aAAanjD,EAAGiD,EAAEqnC,aAActqC,CAC5L,EACA,qBAAAqsN,CAAsBppN,GACpB,IAAIjD,EAAIiD,EAAEypN,eACV,IAAK,IAAI3tN,KAAKiB,EAAG,IAAKyI,KAAK4lN,UAAU5iG,SAAS1sH,IAAMkE,EAAElE,IAAMiB,EAAEjB,GAAI,OAAO,EACzE,OAAO,CACT,EACA,cAAAywN,CAAevsN,GACb,OAAOA,EAAEwjC,cAAch+B,KAAK0sD,SAASxE,WAAW8+J,gBAClD,EACA,cAAAC,CAAezsN,EAAGjD,GAChByI,KAAK+mN,eAAevsN,GAAG6jC,UAAYl3B,EAAE5P,EACvC,EACA,OAAA2nN,CAAQ1kN,EAAGjD,GACTiD,EAAIA,GAAKwF,KAAKknN,aAAc3vN,EAAIA,GAAK,CAAC,EAAGyI,KAAKq6M,SAASlqK,OACvD,IAAI75C,EAAI0J,KAAK0sD,SACXjxD,EAAIuE,KAAK+mN,eAAevsN,GACxB+B,EAAIyD,KAAKq6I,aAAa7/I,GACtBO,EAAIuM,EAAE9M,GACNR,EAAIgG,KAAK4zC,OAAOykK,UAChBj+M,EAAI4F,KACJ1I,GAAI,EACN,GAAImE,GACF,KAAMV,aAAatE,QAAU,aAAcsE,IAAMA,EAAE+gI,SAAU,OAAO/gI,EAAIuM,EAAE9M,EAAG,CAC3EypN,eAAgB1rN,EAAE,CAAC,EAAGwC,GACtBopN,eAAgB3pN,EAAEm2C,WAAU,KAC1BrpC,EAAEvM,EAAEopN,eAAgBppN,EAAEkpN,gBAAiBxoN,EAAEpD,aAAa,mBAAmB,GAAKmC,EAAE00E,UAAU58D,IAAIhc,EAAE4xD,WAAW8yJ,YAAav/M,EAAEkiC,iBAAiB,QAAS3jC,EAAE+pN,eAAejpN,KAAKkF,KAAMxF,IAAKiB,EAAEkiC,iBAAiB,QAAQ,WAClNnkC,YAAW,IAAMQ,EAAEgqN,cAAcptN,KAAKwD,EAAGA,EAAE2sN,eAAevsN,KAC5D,IAAIiB,EAAEkiC,iBAAiB,QAAS3jC,EAAE0pN,eAAe5oN,KAAKkF,KAAMvE,IAAKA,EAAEkiC,iBAAiB,QAAS3jC,EAAE8pN,eAAehpN,KAAKkF,KAAMvE,IAAKA,EAAEkiC,iBAAiB,WAAWpmC,GAAKyC,EAAEkqN,iBAAiBttN,KAAKoJ,KAAMzI,EAAGiD,KAAKiB,EAAEkiC,iBAAiB,mBAAoB3jC,EAAEwnN,mBAAmB1mN,KAAKkF,OAAQvE,EAAEkiC,iBAAiB,iBAAkB3jC,EAAE0nN,iBAAiB5mN,KAAKkF,OAAQzI,EAAE4vN,iBAAmB7vN,EAAI0I,KAAKonN,sBAAsB5sN,IAAKiB,EAAEooN,gBAAkBvsN,EAAG0I,KAAKwzC,QAAQ,aAAc,CAC9brV,IAAK3jC,EACLwzB,MAAOzxB,EACPtG,KAAM8E,EACNkE,QAAS3H,IACPmE,EAAE0lC,QAASnhC,KAAKgjN,oBAAmB,EAAIvnN,GAAIuE,UAC1C5E,QAAQkG,KAAK,yCAA0ChL,EAAE4xD,WAAW8+J,gBAC7E,EACA,qBAAAI,CAAsB5sN,EAAGjD,GACvB,IAAIjB,EACJ,GAAIiB,EAAIA,GAAK+P,EAAE9M,GAAI,OAAQlE,IAAM,cAAeiB,KAAM,IAAOA,EAAE+nN,YAAct/M,KAAKqnN,oBAAoB7sN,GAAIwF,KAAKk9E,SAAU1iF,EAAE00E,UAAU9+B,OAAOpwC,KAAK0sD,SAASxE,WAAW8xJ,eAAgB1jN,GAAIiB,EAAE+nN,UAAYhpN,EAAGiB,EAAE+nN,UAC5MlkN,QAAQkG,KAAK,oBAAqB9G,EAAGjD,EACvC,EACA,aAAA8nN,CAAc7kN,EAAGjD,GACfA,EAAIA,GAAK,CAAC,EACV,IAAIjB,EAAI,CACN6nC,IAAK3jC,EAAIA,GAAKwF,KAAKwpC,MAAMyzK,QAAQ9gL,MACjCnO,MAAOhuB,KAAKq6I,aAAa7/I,GACzB8sN,aAAchgN,EAAE9M,GAChBvE,KAAMsB,GAERyI,KAAKwzC,QAAQ,oBAAqBl9C,EAAG,CACnCkuN,WAAW,IACTxkN,KAAKwpC,MAAMyzK,SAAU,SAAW1lN,EAAE0sN,sBAAuB1sN,EAAE4sN,eAAgB3pN,GAAKjD,EAAEyI,KAAK0sD,SAASyrJ,cAAgB39M,EAAIwF,KAAKunN,WAAW/sN,EAAGjD,GAAIyI,KAAKonN,sBAAsB5sN,EAAGjD,GAAIyI,KAAK0sD,SAAS6sJ,KAAKC,cAAgBh/M,EAAE2mC,QAAU3kC,EAAEhC,IAAMA,GAAKwF,KAAKi/M,WAAWzkN,GAAIwF,KAAKwzC,QAAQ,eAAgBl9C,GAAI0J,KAAKq6M,SAASlqK,OAAQnwC,KAAK0sD,SAASksJ,iBAAmB54M,KAAKwnN,oBAChW,EACA,UAAAD,CAAW/sN,EAAGjD,GACZA,GAAKA,EAAEgD,QAAUhD,EAAIiD,EAAEy9M,iBAAkB1gN,EAAE+nN,WAAa,GAAK/nN,EAAE+nN,WAAa/mN,EAAEhB,EAAGyI,KAAKynN,mBAAmBlwN,EAAGA,EAAE+nN,YAC9G,IAAIhpN,EAAI0J,KAAK+iN,cAAcxrN,GAC3B,OAAOiD,EAAEw5B,WAAW8mB,aAAaxkD,EAAGkE,GAAIwF,KAAK0nN,uBAAwBpxN,CACvE,EACA,oBAAAoxN,GACE1nN,KAAKzF,MAAM/D,OAAS,EAAG,GAAG8hB,QAAQ1hB,KAAKoJ,KAAKuiN,cAAc/nN,IACxDA,EAAE00E,UAAUx3C,SAAS13B,KAAK0sD,SAASxE,WAAW8xJ,cAAc/rM,MAAM,KAAK,KAAOjO,KAAKzF,MAAMzD,KAAKwQ,EAAE9M,GAAG,IACjGwF,KAAKk9E,QACX,EACA,aAAAumI,CAAcjpN,EAAGjD,GACf,IAAIowN,EACJ,QAASpwN,EAAIA,IAAyD,QAAlDowN,EAAwB3nN,KAAKwpC,MAAMwI,iBAAiD,IAA1B21K,OAAmC,EAASA,EAAsBv3F,SAAW51H,GAAKwF,KAAK4nN,cAAcptN,GAAIwF,OAASg4M,EAAEx9M,EAAGjD,GAAIyI,KAAKgjN,oBAAmB,EAAIxoN,GAAIwF,KAAK0nN,uBAAwB1nN,KAAKk9E,SAAUl9E,KACvR,EACA9D,MAAO,CACL,GAAAoG,GACE,IAAI9H,EAAIsB,UAAUtF,OAAS,QAAK,IAAWsF,UAAU,GAAKA,UAAU,GAAK,GACvEvE,IAAMuE,UAAUtF,OAAS,QAAK,IAAWsF,UAAU,KAAOA,UAAU,GACtE,IAAIxF,EAAI0J,KAAK0sD,SAAS2tJ,SAASsB,cAC/B37M,KAAKwpC,MAAMkzK,UAAYliN,EAAGjD,IAAMyI,KAAKo8M,IAAIlgN,MAAMmiC,UAAYl3B,EAAE,GAAK3M,KAAMA,GAAKlE,GAAK0J,KAAKq6M,SAASlqK,KAAKr1C,KAAKkF,MAAOA,KAAK9D,MAAMsyK,aAAa0uC,QAAQtmN,KAAKoJ,MAAOA,KAAK9D,MAAM2rN,SAASjxN,KAAKoJ,KACxL,EACA,GAAAwsC,GACE,OAAOxsC,KAAKo8M,IAAIlgN,MAAMs6B,WACxB,EACA,QAAAqxL,GACE,IAAIrtN,GAAKwF,KAAKwpC,MAAMkzK,YAAa,IAAO18M,KAAK4iN,YAAY,CACvDroN,MAAOyF,KAAKwpC,MAAMkzK,YAEpB,OAAO18M,KAAKo8M,IAAIlgN,MAAMgzE,UAAU9+B,OAAOpwC,KAAK0sD,SAASxE,WAAWkyJ,cAAe5/M,GAAIA,CACrF,EACA,SAAAq9M,CAAUr9M,GACR,IAAIjD,EAAIiD,GAAKwF,KAAKo8M,IAAIlgN,MACpB5F,EAAI,GACNiB,EAAE+jC,WAAWhjB,SAAQ9d,GAAK,GAAKA,EAAE64B,UAAY/8B,EAAEQ,KAAK0D,EAAEk8B,aAAapgC,EAAIA,EAAEyL,KAAK,MAC9E,IACEzL,EAAIA,EAAE8O,QAAQ,kBAAmBpF,KAAK0sD,SAASwrJ,WAAWv1M,OAAOqT,OAAO,GAC1E,CAAE,MAAOxb,GAAI,CACb,OAAOlE,EAAIA,EAAE8O,QAAQ,MAAO,KAAMpF,KAAKs0D,KAAKh+D,EAC9C,EACAk4K,aAAc,CACZ,OAAA0uC,CAAQ1iN,GACN,GAAIwF,KAAK0sD,SAASitJ,aAAal4K,QAAS,CACtC,iBAAoBjnC,EAAIA,GAAK,CAC3BD,MAAO,OACFC,EAAI,CACTD,MAAOC,IAET,IAAIjD,EAAIyI,KAAKq6M,SAASsE,eAAenkN,GACrC,GAAI,iBAAmBjD,EAAG,CACxB,IAAIjB,EAAIiB,EAAEgN,OAAO,EAAGvE,KAAKwpC,MAAMkzK,UAAUlmN,QAAQgS,cAC/C/M,EAAIlE,EAAE4yH,UAAUnqH,KAAKwpC,MAAMkzK,UAAUlmN,QACvCe,GAAKyI,KAAKwpC,MAAMkzK,WAAapmN,GAAK0J,KAAKwpC,MAAMkzK,UAAUl0M,eAAiBxI,KAAKo8M,IAAIlgN,MAAM7D,aAAa,eAAgBoD,GAAIuE,KAAKwpC,MAAMg5K,gBAAkBhoN,IAAMwF,KAAKo8M,IAAIlgN,MAAMsgC,gBAAgB,uBAAwBx8B,KAAKwpC,MAAMg5K,gBAC/N,CACF,CACF,EACA,GAAAlgN,CAAI9H,GACF,IAAIjD,EAAIyI,KAAKo8M,IAAIlgN,MAAM63B,aAAa,gBAClCz9B,EAAIkE,IAAMjD,EAAIyI,KAAKwpC,MAAMkzK,UAAYnlN,EAAI,MAC3C,QAASjB,IAAM,OAAS0J,KAAK0sD,SAASjyD,KAAOuF,KAAK8nN,oBAAoB9vN,SAASu6C,eAAevyC,KAAKwpC,MAAMrL,IAAI5W,OAASjxB,KAAO0J,KAAK9D,MAAMoG,IAAI1L,KAAKoJ,KAAM1J,GAAI0J,KAAKgjN,oBAAmB,EAAIhjN,KAAKo8M,IAAIlgN,QAAS8D,KAAK9D,MAAMsyK,aAAa0uC,QAAQtmN,KAAKoJ,MAAOA,KAAKq6M,SAASlqK,QAAQ,EAC7Q,IAGJ,SAAA43K,CAAUvtN,GACR,OAAOwF,KAAKzF,MAAMkjE,WAAUlmE,GAAKA,EAAEosN,UAAYnpN,GAAK,CAAC,GAAGmpN,SAC1D,EACA,YAAAtpE,CAAa7/I,GACX,IAAIjD,EAAI,EACR,GAAIiD,EAAG,KAAOA,EAAIA,EAAEwxI,wBAAyBz0I,IAC7C,OAAOA,CACT,EACA,UAAAgrN,GACE,IAAK,IAAI/nN,EAAIsB,UAAUtF,OAAQe,EAAI,IAAI4E,MAAM3B,GAAIlE,EAAI,EAAGA,EAAIkE,EAAGlE,IAAKiB,EAAEjB,GAAKwF,UAAUxF,GACrF,IAAImF,EAAI,IAAM,IAAIuE,KAAK0sD,SAASxE,WAAW/pB,IAAIlwB,MAAM,QAAS1W,GAAGwK,KAAK,KACtE,MAAO,GAAGvG,MAAM5E,KAAKoJ,KAAKo8M,IAAIjgL,MAAMG,iBAAiB7gC,GACvD,EACA,UAAAyrN,GACE,IAAI1sN,EAAIwF,KAAKo8M,IAAIjgL,MAAMG,iBAAiB,GAAGt8B,KAAK0sD,SAASxE,WAAWm8J,oBAAoBrkN,KAAK0sD,SAASxE,WAAWgzJ,4BACjH,OAAO1gN,EAAEA,EAAEhE,OAAS,EACtB,EACA,cAAAmpN,CAAenlN,EAAGjD,EAAGjB,GACnB,IAAImF,EAAI,EACR,GAAI,UAAYuE,KAAK0sD,SAASjyD,KAAM,OAAO,EAC3C,IAAK,IAAIM,KAAKiF,KAAKzF,MACjBgC,EAAEyD,KAAKs0D,KAAK,GAAK95D,GAAIO,EAAER,MAAOhD,IAAMjB,GAAKyE,EAAE4oN,SAAWloN,IAExD,OAAOA,CACT,EACA,kBAAAusN,CAAmBxtN,GACjB,IAAIjD,EAAI,GACNjB,EAAI0J,KAAK0sD,SAAS2tJ,SAASkB,cAC7B,OAAOv7M,KAAKuiN,aAAajqM,SAAQ,CAAC7c,EAAGV,KACnCU,EAAEw8M,iBAAmB17M,EAAEyD,KAAKs0D,KAAK74D,EAAEw8M,gBAAgB19M,OAAQC,EAAGlE,IAAMiB,EAAET,KAAKiE,EAAE,IAC3ExD,CACN,EACA,gBAAA0wN,CAAiBztN,GACf,IAAIjD,EAAIyI,KAAKgoN,mBAAmBxtN,GAAG,GACnC,OAAOwF,KAAKuiN,aAAahrN,EAC3B,EACA,QAAA2wN,CAAS1tN,GACPA,IAAMA,EAAE00E,UAAU58D,IAAItS,KAAK0sD,SAASxE,WAAW+yJ,UAAWzhN,YAAW,KACnEgB,EAAE00E,UAAUhmC,OAAOlpC,KAAK0sD,SAASxE,WAAW+yJ,SAAS,GACpD,KACL,EACA,gBAAAkN,CAAiB3tN,GACf,OAAOA,EAAIwF,KAAKs0D,KAAK95D,EAAEgO,eAAgBxI,KAAK0sD,SAAS+rJ,UAAUjzL,QAAOjuB,IAAM,GAAKA,GAAGiR,eAAiBhO,IAAGhE,MAC1G,EACA,gBAAA4xN,CAAiB5tN,GACf,QAASwF,KAAKqoN,iBAAiB7tN,EACjC,EACA,gBAAA6tN,CAAiB7tN,EAAGjD,EAAGjB,GACrBiB,EAAIA,GAAK,QACT,IAAIkE,EACFV,EAAIiF,KAAK0sD,SACX,OAAQp2D,EAAIA,GAAKyE,EAAEy9M,WAAW78M,MAAKrF,IACjC,IAAI0D,EAAI,iBAAmB1D,EAAIA,EAAIA,EAAEiB,IAAMjB,EAAEiE,MAC7C,GAAIgC,EAAEvC,EAAGQ,EAAGO,EAAEs/M,SAASkB,cAAexgN,EAAEu5D,MAAO,OAAO74D,EAAI,iBAAmBnF,EAAI,CAC/EiE,MAAOjE,GACLA,GAAG,CAAE,IACPmF,GAAK,SAAWlE,GAAK,SAAWwD,EAAEo9M,cAAgB18M,EAAIuE,KAAKqoN,iBAAiB7tN,EAAGO,EAAEo9M,YAAa7hN,IAAKmF,CACzG,EACA,WAAAmnN,CAAYpoN,GACV,IAAIjD,EAAIyI,KAAK0sD,SACXp2D,EAAI,UAAWkE,EAAI,QAAUjD,EAAE4gN,YAC/B18M,EAAIuE,KAAKs0D,KAAK95D,EAAElE,GAAK,IACvB,OAAQkE,EAAElE,GAAK,IAAIg+D,OAAS,OAAS/8D,EAAEkD,MAAQlD,EAAEgoC,SAAWhoC,EAAEgoC,mBAAmB98B,SAAWlL,EAAEgoC,QAAQ15B,KAAKpK,GAAKuE,KAAKimN,MAAM1mL,SAAWhoC,EAAEunC,YAAc9+B,KAAK2/M,eAAelkN,EAAGlE,EAAE8iN,SAASkB,cAAe/gN,EAAEmpN,SAAW3jN,KAAKimN,MAAM39D,UAAYtoJ,KAAKmoN,iBAAiB1sN,IAAMlE,EAAEmhN,mBAAqB14M,KAAKooN,iBAAiB3sN,GAAKuE,KAAKimN,MAAM9F,YAAc5oN,EAAEswN,UAAYtwN,EAAEswN,SAASrtN,GAAKwF,KAAKimN,MAAMloN,KAC7X,EACA,kBAAA0pN,CAAmBjtN,EAAGjD,GACpB,MAAO,CACL,gBAAgB,EAChB+oN,MAAO,GAAG9lN,EAAE8lN,OAAS,MAAMtgN,KAAK0sD,SAASxE,WAAW8xJ,gBAAgB1lJ,OACpEyzB,MAAOxwF,EAEX,EACA,UAAA2iN,GACE,OAAOl6M,KAAKzF,MAAM/D,QAAUwJ,KAAK0sD,SAAS0rJ,SAAWp4M,KAAKimN,MAAM/F,MAClE,EACA,WAAAoI,CAAY9tN,EAAGjD,GACb,IAAIjB,EAAI0J,KAAK0sD,SACb10D,SAASopC,cAAc8W,OAAQ5hD,EAAEiB,GAAK,YAAciD,EAAGwF,KAAKo8M,IAAIjgL,OAAO3hC,EAAI,MAAQ,UAAY,aAAajD,GAAK,YAAY,GAAKyI,KAAK0sD,SAASisJ,WAAY,EAAI34M,KAAKuoN,oBAAoB/tN,EAC3L,EACA,kBAAA+tN,CAAmB/tN,GACjBwF,KAAK0sD,SAASisJ,YAAc34M,KAAKo8M,IAAIlgN,MAAMwgJ,gBAAkBliJ,EAAGwF,KAAKo8M,IAAIlgN,MAAMslC,SAAWhnC,EAAI,GAAK,EACrG,EACA,WAAAguN,CAAYhuN,GACVwF,KAAKsoN,YAAY9tN,EAAG,WACtB,EACA,aAAA+kN,CAAc/kN,GACZ,IAAIjD,EAAIyI,KAAK0sD,SACXp2D,EAAIiB,EAAEihN,UACN/8M,EAAIlE,EAAE2gN,WACN37M,EAAIhF,EAAEkD,KACNM,EAAIxD,EAAE4gN,YACNn+M,EAAI,GACJI,IAAM9D,GAAKA,EAAE,aAAcG,OAC3Ba,EAAI6E,MAAMF,QAAQzB,GAClBV,EAAIxC,GAAKkD,EAAE,GAAGD,MACd4M,EAAI3M,IAAMA,EAAI,IAAIyT,MAAMxS,GAAG+pB,QAAOhrB,GAAKA,IAAGyC,KAAIzC,IAAK,CACjD,CAACO,GAAIiF,KAAKs0D,KAAK95D,GACfD,MAAOyF,KAAKs0D,KAAK95D,OAErB,GAAI,iBAAmBA,IAAMA,EAAIA,EAAE4B,YAAa,iBAAmB5B,EAAG,CACpE,IAAKA,EAAE85D,OAAQ,MAAO,GACtB95D,EAAI2M,EAAE3M,EACR,MAAOlD,IAAMkD,EAAI,GAAGqY,UAAUrY,EAAEyC,KAAIzC,GAAK,MAAQA,EAAED,MAAQC,EAAI2M,EAAE3M,OACjE,OAAOJ,IAAMN,IAAMU,EAAE8d,SAAQ9d,IAC3B,IAAIjD,EAAIyC,EAAEiD,KAAIzC,GAAKA,EAAED,QACnBjE,EAAI0J,KAAKq6M,SAAS2C,gBAAgBpmN,KAAKoJ,KAAMxF,EAAEO,GAAI,CACjD6kN,OAAO,IAEX5/M,KAAK0sD,SAAS5tB,aAAexoC,EAAIA,EAAEkvB,QAAOhrB,IAAMjD,EAAEyrH,SAASxoH,EAAED,UAC7D,IAAIkB,EAAInF,EAAEE,OAAS,EAAIwJ,KAAKqoN,iBAAiB7tN,EAAEO,GAAIA,EAAGzE,GAAKA,EAAE,GAC7DmF,GAAKA,aAAahF,OAASuD,EAAElD,KAAK2E,GAAK,OAASc,IAAM,MAAQ/B,EAAED,QAAUC,EAAED,MAAQC,EAAEO,IAAKf,EAAElD,KAAK0D,GAAG,IACnGR,EAAExD,SAAWgE,EAAIR,IAAKQ,CAC5B,EACA,YAAAksN,CAAalsN,GACX,IAAIjD,EAAIyI,KAAK0sD,SACXp2D,EAAIiB,EAAEwhN,oBACNt9M,EAAIlE,EAAEunC,WACNviC,EAAIhF,EAAE+hN,aACNv+M,EAAIxD,EAAEmhN,iBACN1+M,EAAIzC,EAAE6gN,QACNh+M,EAAI7C,EAAE4gN,YACN7gN,EAAI,GACNkD,EAAIA,EAAEyT,MAAM3X,EAAE,IAAI2G,KAAI,CAACzC,EAAGjD,KACxB,IAAIuC,EACFqN,EACAo/D,EACAhuE,EAAIiC,EAAEyT,MAAM3X,EAAE,IACduD,EAAItB,EAAE,GACN6Q,EAAI9R,EAAEd,QAAUwD,EAClB,IACE,GAAIH,IAAMA,EAAG,MAAMnB,MACnByO,EAAIymC,KAAKC,MAAMh0C,EACjB,CAAE,MAAOW,GACP2M,EAAInH,KAAKu/M,cAAc1lN,GAAG,IAAM,CAC9BU,MAAOV,EAEX,CACA,GAAI0C,EAAE3F,KAAKoJ,KAAMmH,GAAIiC,KAAO7Q,EAAE/B,OAAS,IAAMuE,IAAMiF,KAAKooN,iBAAiBjhN,EAAE5M,SAAWkB,GAAKuE,KAAK2/M,eAAex4M,EAAE5M,QAC/G,GAAIC,EAAG,OAAOjD,EAAIjB,EAAE,GAAKkE,EAAIA,OACxB2M,EAAErN,EAAIqN,EAAE/M,GAAKA,EAAI,SAAW4F,KAAKs0D,KAAKntD,EAAErN,IAAKysE,EAAIvmE,KAAK+iN,cAAc57M,GAAI7P,EAAER,KAAKqQ,GAAIo/D,EAAE2I,UAAU58D,IAAItS,KAAK0sD,SAASxE,WAAW4xJ,gBAAiBvhN,EAAE,GAAKguE,EAAEkpC,UAAWzvG,KAAKzF,MAAMzD,KAAKqQ,GACxL,OAAO5O,EAAEwJ,KAAK,GAAG,IAChBA,KAAK,IAAK/B,KAAKo8M,IAAIlgN,MAAMmiC,UAAY7jC,EAAGwF,KAAKo8M,IAAIlgN,MAAMxC,YAAY1B,SAASu6C,eAAe,KAAMvyC,KAAKo8M,IAAIlgN,MAAM27M,YACnH,IAAI/9M,EAAIkG,KAAKuiN,aACb,OAAOzoN,EAAEwe,SAAQ,CAAC9d,EAAGjD,IAAM+P,EAAE9M,EAAGlD,EAAEC,MAAMyI,KAAKk9E,OAAO,CAClD+lI,oBAAoB,IAClBv7M,EAAE5N,EAAGkG,KAAKwpC,MAAMlI,UAAW9mC,CACjC,EACA,mBAAAstN,CAAoBttN,EAAGjD,GACrB,GAAIyI,KAAKwpC,MAAMrL,KAAO5mC,EAAG,CACvBA,EAAIA,GAAKyI,KAAKwpC,MAAMrL,IAAI5W,OAASvnB,KAAKwpC,MAAMrL,IAAI5jC,MAChD,IAAIjE,EACFmF,EACAc,EAAIyD,KAAKwpC,MAAMwI,WAAa12C,OAAOq1H,eACnC51H,EAAIwB,EAAE49H,WACNngI,EAAIgG,KAAKwpC,MAAMrL,IAAI+5K,WAAal4M,KAAKwpC,MAAMrL,IAAI+5K,WAAW1hN,OAAS,EACrE,OAAOuE,EAAE0zH,UAAUlyH,EAAEgvJ,aAAevxJ,IAAK,IAAM1D,EAAIyE,EAAE27B,UAAUwsL,YAAY3rN,MAAYkE,EAAIV,EAAE0zH,UAAUn4H,GAAIkE,GAAKO,EAAEi5B,WAAW8mB,aAAatgD,EAAGiB,KAA5D,CACnF,CACF,EACA,SAAAgtN,CAAUjuN,EAAGjD,GACX,IAAIjB,EAAI0J,KAAK0sD,SACb,IAAKp2D,EAAEoiN,kBAAoB14M,KAAKooN,iBAAiB7wN,EAAEgD,OAAQ,CACzDyF,KAAK9D,MAAMoG,IAAI1L,KAAKoJ,KAAMzI,EAAEjB,EAAE6hN,cAAgB5gN,EAAEgD,OAAO,GAAKyF,KAAKwpC,MAAMi1K,QAAQM,cAAgBvlN,YAAW,IAAMwG,KAAKgjN,oBAAmB,EAAIhjN,KAAKo8M,IAAIlgN,SACrJ,IAAIT,EAAIuE,KAAKknN,aACb,OAAOzrN,EAAIuE,KAAKunN,WAAW9rN,EAAGlE,GAAKyI,KAAK0oN,UAAUluN,GAAIwF,KAAKzF,MAAM,GAAKhD,EAAGyI,KAAKk9E,SAAUl9E,KAAKwzC,QAAQ,MAAO,CAC1GrV,IAAK3jC,EACLvE,KAAMsB,IACJ,CAACiD,EACP,CACF,EACA,WAAAmuN,CAAYnuN,GACV,IAAIjD,EAAIgB,EAAE,CACNgC,MAAO,IACNC,GAAK,CAAC,GACTlE,EAAI0J,KAAK+iN,cAAcxrN,GACzB+P,EAAEhR,EAAGiB,GAAIyI,KAAK0oN,UAAUpyN,GAAI0J,KAAKk/M,QAAQ5oN,EAAG,CAC1C6wN,gBAAgB,GAEpB,EACA,OAAAnI,CAAQxkN,EAAGjD,EAAGjB,GACZ,IAAImF,EAAI,GACNc,EAAIyD,KAAK0sD,SACT3xD,EAAI,GACJf,EAAIhC,SAASy4C,yBACf,GAAIn6C,EAAIA,GAAKiG,EAAE08M,aAAcz+M,GAAK,GAAKA,EAAEhE,OAAQ,OAAOiF,EACxD,OAAQjB,EAAIwF,KAAKu/M,cAAc/kN,GAAI+B,EAAE9B,MACnC,IAAK,MACH,OAAOuF,KAAK4oN,WAAWpuN,GACzB,IAAK,SACHjD,GAAI,EAAIyI,KAAK+gN,gBAEjB,OAAO/gN,KAAKo8M,IAAIlgN,MAAMsgC,gBAAgB,SAAUhiC,EAAE8d,SAAQ9d,IACxD,IAAIjD,EACF6C,EAAI,CAAC,EACL9C,EAAIb,OAAO46B,OAAO,CAAC,EAAG72B,EAAG,CACvBD,MAAOC,EAAED,MAAQ,KAErB,GAAIC,EAAI/D,OAAO46B,OAAO,CAAC,EAAG/5B,GAAIiF,EAAE+8M,aAAa1iN,KAAKoJ,KAAMxF,GAAIA,EAAE8kN,UAAYt/M,KAAKk6M,cAAgBl6M,KAAK4iN,YAAYpoN,IAAI,IAAOA,EAAE8kN,UAAW,CACtI,GAAIhpN,EAAG,OACP,GAAIiC,EAAE6B,EAAG4F,KAAKynN,mBAAmBjtN,EAAGA,EAAE8kN,WAAY,CAChDuJ,iBAAkBvxN,IAChBkD,EAAE8kN,WAAat/M,KAAKimN,MAAM39D,WAAatoJ,KAAKkoN,SAASloN,KAAKioN,iBAAiBztN,EAAED,SAAUgC,EAAEs8M,kBAAmB,YAAY99M,EAAEjE,KAAK0D,EAAED,MACvI,CACA,GAAI,aAAcC,IAAMA,EAAEqiN,SAAWziN,EAAE,kBAAmB,SAAYI,EAAEqiN,UAAWtlN,EAAIyI,KAAK+iN,cAAcvoN,EAAGJ,GAAIqB,EAAE3E,KAAKS,GAAI,UAAYgF,EAAE9B,KAAM,OAAOuF,KAAKyoN,UAAUlxN,EAAGiD,GACzKR,EAAEN,YAAYnC,GAAIiD,EAAE8kN,YAAa,IAAO9kN,EAAE8kN,WAAat/M,KAAKzF,MAAMzD,KAAK0D,GAAIwF,KAAKwzC,QAAQ,MAAO,CAC7FrV,IAAK5mC,EACLy2B,MAAOhuB,KAAKzF,MAAM/D,OAAS,EAC3BP,KAAMuE,MACDwF,KAAKwzC,QAAQ,UAAW,CAC7Bv9C,KAAMuE,EACNwzB,MAAOhuB,KAAKzF,MAAM/D,OAClB2nC,IAAK5mC,EACL6B,QAASoB,EAAE8kN,YACT/iN,EAAEq8M,iBAAmBp/M,YAAW,IAAMwG,KAAKi/M,WAAW1nN,GAAG,IAAK,MAAOyI,KAAKq6M,SAASl9J,UAAU,IAC/Fn9C,KAAK0oN,UAAU1uN,GAAIgG,KAAKk9E,SAAU1iF,EAAEhE,QAAUe,IAAMyI,KAAK9D,MAAMoG,IAAI1L,KAAKoJ,KAAMzD,EAAEs8M,kBAAoB,GAAK99M,EAAEgH,KAAKxF,EAAEypN,cAAehmN,KAAKgjN,oBAAmB,EAAIhjN,KAAKo8M,IAAIlgN,QAASK,EAAE89M,SAAS54K,SAAWzhC,KAAKq6M,SAASwD,WAAYpiN,CACrO,EACA,UAAAmtN,CAAWpuN,GACT,IAAKA,EAAIwF,KAAKu/M,cAAc/kN,IAAI,GAAG+sB,QAAUvnB,KAAKwpC,MAAMrL,IAAK,OAAOn+B,KAAK8oN,kBAAkBtuN,EAAE,IAC7F,IAAIjD,EAAIS,SAASy4C,yBACjB,OAAOj2C,EAAE8d,SAAQ9d,IACf,IAAIlE,EAAI0J,KAAK+iN,cAAcvoN,GAC3BjD,EAAEmC,YAAYpD,EAAE,IACd0J,KAAK4nN,cAAcrwN,GAAIA,CAC7B,EACA,aAAAqwN,CAAcptN,GACZ,IAAIjD,IAAMyI,KAAKwpC,MAAMwI,UACrBz6C,EAAIyI,KAAKyjN,cAAcjpN,IAAMwF,KAAKo8M,IAAIlgN,MAAMilC,SAAU5pC,EAAIyI,KAAKq9M,qBAAqBjtF,MAAMiH,SAASr3H,KAAKo8M,IAAIlgN,MAAO3E,EAAE64H,MAAMa,WAAY15H,EAAE64H,MAAMsG,OAAO12H,KAAKo8M,IAAIlgN,MAAO3E,EAAE64H,MAAMa,WAAYjxH,KAAKo8M,IAAIlgN,MAAMxC,YAAYc,GAAIwF,KAAK0nN,uBAAwB1nN,KAAKk9E,SAC7P,EACA,iBAAA4rI,CAAkBtuN,GAChB,IAAIjD,EACFjB,EAAI0J,KAAK0sD,SACTjxD,EAAIuE,KAAKwpC,MAAMrL,IAAI+5K,WACrB,GAAI5hN,EAAEgjN,aAAa1iN,KAAKoJ,KAAMxF,GAAIA,EAAE+sB,OAAS/sB,EAAE+sB,QAAUvnB,KAAKwpC,MAAMrL,IAAMn+B,KAAKwpC,MAAMrL,IAAI5W,QAAUjxB,EAAEipC,QAAQ58B,QAAUrM,EAAEipC,SAAS,GAAIhoC,EAAIyI,KAAK+iN,cAAcvoN,GAAIwF,KAAK8nN,oBAAoBvwN,IAAMyI,KAAKo8M,IAAIlgN,MAAMxC,YAAYnC,GAAIiC,YAAW,IAAMjC,EAAE23E,UAAU58D,IAAItS,KAAK0sD,SAASxE,WAAW4xJ,iBAAiB,KAAM95M,KAAKzF,MAAMzD,KAAK0D,GAAIwF,KAAKk9E,UAAWzhF,EAAG,CACrV,IAAIc,EAAIyD,KAAK05M,eAAeniN,IAAMA,EAClCiC,WAAWgD,EAAG,EAAGD,EACnB,CACA,OAAOyD,KAAKwpC,MAAMrL,IAAM,KAAMn+B,KAAKwzC,QAAQ,MAAOj7C,EAAE,CAAC,EAAG,CACtD4lC,IAAK5mC,GACJ,CACDtB,KAAMuE,KACHjD,CACP,EACA,SAAAmxN,CAAUluN,GACR,IAAIjD,EAAIyI,KAAKo8M,IACX9lN,EAAIiB,EAAE2E,MACR3E,EAAE4kC,MAAMue,aAAalgD,EAAGlE,EAC1B,EACA,aAAAysN,CAAcvoN,EAAGlE,GACfkE,EAAEmpN,QAAU/7K,IACZ,IAAInsC,EACFc,EAAIhE,EAAE,CAAC,EAAGiC,EAAGjD,EAAE,CACbgD,MAAO4M,EAAE3M,EAAED,MAAQ,KAClBjE,IACL,OAAO,SAAUkE,GACf,IAAK,IAAIjD,EAAGjB,EAAI0B,SAASu3H,mBAAmB/0H,EAAGszH,WAAW0B,UAAW,MAAM,GAAKj4H,EAAIjB,EAAE+3H,YAAa92H,EAAEi/B,YAAY89B,QAAU/8D,EAAEy8B,WAAWC,YAAY18B,EACtJ,CAFO,CAELkE,EAAIuE,KAAKq8M,cAAc,MAAO,CAAC9/M,EAAGyD,QAASsH,EAAE7L,EAAGjB,GAAIiB,CACxD,EACA,kBAAA+rN,GACE,IAAIhtN,EAAIwF,KAAK0sD,SACb1sD,KAAKuiN,WAAW/nN,EAAE0tD,WAAW8xJ,eAAe1hM,SAAQ,CAAC/gB,EAAGjB,KACtD,IAAImF,EAAI6L,EAAE/P,GACRgF,EAAIyD,KAAKk6M,aACTn/M,EAAIiF,KAAK4iN,YAAYnnN,GACrBzB,GAAI,IAAOe,IAAMwB,EACnB,GAAI,UAAY/B,EAAEC,MAAQuF,KAAK6iN,sBAAsB9nN,GAAIf,EAAG,OAAOyB,EAAIA,EAAEotN,iBAAmBptN,EAAEotN,iBAAmB,CAC/GtuN,MAAOkB,EAAElB,OACRyF,KAAKunN,WAAWhwN,EAAGkE,GACtBlE,EAAEwwF,MAAQxrF,GAAKxB,CAAC,GAEpB,EACA,UAAAkkN,CAAWzkN,EAAGjD,EAAGjB,GACf,IAAImF,EACFc,EAAIyD,KAAK0sD,SACX,GAAIlyD,EAAIA,GAAKA,aAAa6+F,YAAc,CAAC7+F,GAAKA,aAAa2B,MAAQ3B,EAAIA,EAAI,CAACA,GAAK,CAACwF,KAAKknN,cAAezrN,EAAIjB,EAAE87D,QAAO,CAAC97D,EAAGjD,KACrHA,GAAK,iBAAmBA,IAAMA,EAAIyI,KAAKioN,iBAAiB1wN,IACxD,IAAIjB,EAAIgR,EAAE/P,GACV,OAAOA,GAAKjB,IAAMA,EAAEumN,UAAYriN,EAAE1D,KAAK,CACrC88B,KAAMr8B,EACNmpC,IAAK1gC,KAAK+nN,UAAUzxN,GACpBL,KAAMqR,EAAE/P,EAAG,CACTwxN,WAAW,MAEXvuN,CAAC,GACJ,IAAKlE,EAAI,iBAAmBA,EAAIA,EAAI0J,KAAKomN,QAAQC,kBAAmB,UAAY9pN,EAAE9B,OAASnE,EAAI,EAAG0J,KAAK9D,MAAMoG,IAAI1L,KAAKoJ,OAAQ,GAAKvE,EAAEjF,QAAU,UAAY+F,EAAE9B,MAAQgB,EAAE,GAAGm4B,KAAKs7C,UAAUx3C,SAASn7B,EAAE2rD,WAAW8xJ,iBAAmBziN,GAAI,GAAKkE,EAAEjF,OAAQ,OAAO+F,EAAEX,MAAMkgN,gBAAgBrgN,EAAG,CACxRmjN,OAAQ5+M,OACPmoC,MAAK,KACN,SAAS3tC,EAAEA,GACTA,EAAEo5B,KAAKI,aAAex5B,EAAEo5B,KAAKI,WAAWC,YAAYz5B,EAAEo5B,MAAOr8B,EAAIgF,EAAEq8M,iBAAmB54M,KAAKwzC,QAAQ,SAAU,CAC3GrV,IAAK3jC,EAAEo5B,KACP5F,MAAOxzB,EAAEkmC,OACL1gC,KAAKwzC,QAAQ,SAAU,CAC3BrV,IAAK3jC,EAAEo5B,KACP5F,MAAOxzB,EAAEkmC,IACTzqC,KAAMuE,EAAEvE,OACN+J,KAAKq6M,SAASwD,WAAY79M,KAAKq6M,SAASl9J,WAAYn9C,KAAKo8M,IAAIlgN,MAAM27M,YAAat7M,EAAEq8M,iBAAmB54M,KAAKwnN,sBAChH,CACAlxN,GAAKA,EAAI,IAAM,GAAKmF,EAAEjF,OAAS,SAAUe,GACvCA,EAAEq8B,KAAKqb,MAAM8M,MAAQj8B,WAAWxkB,OAAOmgD,iBAAiBlkD,EAAEq8B,MAAMmoB,OAAS,KAAM/jD,SAASg4C,KAAKg5K,UAAWzxN,EAAEq8B,KAAKs7C,UAAU58D,IAAI/V,EAAE2rD,WAAWgzJ,SAAU1hN,WAAWgB,EAAEM,KAAKkF,MAAO1J,EAAGiB,EAClL,EAAEX,KAAKoJ,KAAMvE,EAAE,IAAMA,EAAE6c,QAAQ9d,EAAEM,KAAKkF,OAAQzI,IAAMyI,KAAKqnN,oBAAoB5rN,EAAEwB,KAAIzC,GAAKA,EAAEo5B,QAAQ5zB,KAAKk9E,SAAU,UAAY3gF,EAAE9B,MAAQuF,KAAKuoN,oBAAmB,GAAI,IAClKv8K,OAAMxxC,OACX,EACA,iBAAAyuN,GACE,GAAGztN,MAAM5E,KAAKoJ,KAAKuiN,cAAcjqM,SAAQ9d,GAAKA,EAAEw5B,WAAWC,YAAYz5B,IACzE,EACA,mBAAA6sN,CAAoB7sN,IACjBA,EAAI2B,MAAMF,QAAQzB,GAAKA,EAAI,CAACA,IAAI8d,SAAQ9d,IACvC,IAAIjD,EAAI+P,EAAE9M,GACRlE,EAAI0J,KAAK+nN,UAAUxwN,GACrBjB,GAAK,GAAK0J,KAAKzF,MAAMo7B,OAAOr/B,EAAG,EAAE,GAErC,EACA,aAAAyqN,CAAcvmN,GACZA,EAAIA,GAAK,CAAC,EAAGwF,KAAKzF,MAAQ,GAAI,OAASyF,KAAK0sD,SAASjyD,KAAOuF,KAAKo8M,IAAIlgN,MAAMmiC,UAAY,GAAKr+B,KAAKipN,oBAAqBjpN,KAAKq6M,SAASwD,WAAY79M,KAAKq6M,SAASl9J,WAAYn9C,KAAKwpC,MAAM6wK,SAASjqJ,SAAW52D,YAAW,KAClNwG,KAAKo8M,IAAIlgN,MAAMilC,OAAO,IACpB,UAAYnhC,KAAK0sD,SAASjyD,OAASuF,KAAK9D,MAAMoG,IAAI1L,KAAKoJ,MAAOA,KAAKuoN,oBAAmB,IAAMvoN,KAAKk9E,OAAO1iF,EAC9G,EACA,UAAA8nN,GACE,IAAI4G,EAAcC,EAClBnpN,KAAKwpC,MAAMi9K,kBAAmB,EAC9B,IAAIjsN,EAAIwF,KAAK0sD,SACXn1D,EAAIiD,EAAE0tD,WACN5xD,EAAI,OAASkE,EAAEC,KAAOD,EAAEi/M,QAAQ6M,WAAatmN,KAAKo8M,IAAIlgN,MAAMs6B,YAAcx2B,KAAKo8M,IAAI0E,cAAcvmN,MAAM+5D,OAASt0D,KAAKzF,MAAM/D,OAASwJ,KAAK9D,MAAMswC,IAAI51C,KAAKoJ,MAAMxJ,OAChKwJ,KAAKsoD,YAAY/wD,EAAE2iN,WAAYl6M,KAAKzF,MAAM/D,QAAUgE,EAAE49M,SAAUp4M,KAAKsoD,YAAY/wD,EAAE4iN,WAAYn6M,KAAKzF,MAAM/D,QAASwJ,KAAKsoD,YAAY/wD,EAAEwG,OAAQzH,GAAI,UAAYkE,EAAEC,MAAQuF,KAAK6iN,sBAAsD,QAA/BqG,EAAelpN,KAAKzF,aAAoC,IAAjB2uN,GAAyE,QAArCC,EAAgBD,EAAa,UAAkC,IAAlBC,OAAvD,EAA2FA,EAAc7J,UAChX,EACA,qBAAA8J,CAAsB5uN,GACpB,IAAIjD,EAAIyI,KAAKo8M,IAAI0E,cACjB9gN,KAAK0sD,SAAS+sJ,QAAQ6M,aAAe/uN,EAAEgD,MAAQC,EAAGjD,EAAE8rN,YAAc9rN,EAAEgD,MAAOyF,KAAK6kN,iBAAiBrqN,EAAG,SACtG,EACA,MAAA0iF,CAAO1iF,GACL1B,aAAakH,KAAKqpN,wBAAyBrpN,KAAKqpN,uBAAyB7vN,WAAW,WAClF,IAAIjC,EAAIyI,KAAKspN,gBACbtpN,KAAKopN,sBAAsB7xN,GAAIyI,KAAK0sD,SAAS6rJ,oBAAsB/9M,GAAK,CAAC,GAAGyoN,oBAAsBjjN,KAAKwpC,MAAMi9K,kBAAoBzmN,KAAKgvE,qBACtIhvE,KAAKsiN,YACP,EAAExnN,KAAKkF,MAAO,IAChB,EACA,aAAAspN,GACE,IAAI9uN,EAAIwF,KAAKupN,gBACb,MAAO,OAASvpN,KAAK0sD,SAASjyD,KAAOuF,KAAKwpN,qBAAqBhvN,GAAKA,EAAEhE,OAASwJ,KAAK0sD,SAAS+8J,yBAA2BzpN,KAAK0sD,SAAS+8J,yBAAyBjvN,GAAKozC,KAAKg7B,UAAUpuE,GAAK,EAC1L,EACA,aAAA+uN,CAAc/uN,GACZ,OAAOO,EAAEP,GAAKwF,KAAKzF,MAAOyF,KAAK4lN,UACjC,EACA,oBAAA4D,GACE,IAAIhvN,EAAI,GACNjD,EAAIyI,KACJ1J,EAAI0J,KAAK0sD,SACTjxD,EAAInF,EAAEmzN,0BAA4B77K,KAAKg7B,UACvCrsE,EAAIjG,EAAEyiN,oBACR,OAAO,SAASziN,EAAEyE,GAChBA,EAAEugC,WAAWhjB,SAAQvd,IACnB,GAAI,GAAKA,EAAEs4B,SAAU,CACnB,MAAMj5B,EAAIkN,EAAEvM,GACZ,GAAI,MAAQA,EAAEs8D,UAAY78D,GAAK,QAASJ,GAAKksE,EAAE1vE,KAAKW,EAAGwD,GAAI,CACzD,GAAIX,EAAE2uN,UAAW,OACjBvuN,GAAK+B,EAAE,GAAKd,EAAEzB,EAAEI,EAAG7C,EAAEquN,YAAcrpN,EAAE,EACvC,MAAOxB,EAAEg5B,aAAa,UAAY,CAAC,IAAK,IAAK,KAAKivF,SAASjoH,EAAEs8D,SAAW78D,GAAKO,EAAEy7B,YAAc,OAASz7B,EAAEs8D,SAAW,KAAOt8D,EAAEs8D,UAAY78D,GAAK,OAAQlE,EAAEyE,GACzJ,MAAOP,GAAKO,EAAEy7B,WAAW,GAE7B,CAVO,CAULx2B,KAAKo8M,IAAIlgN,OAAQ1B,CACrB,GACC6tC,EAAE3xC,UAAUgzN,UAAYrhL,EAAE3xC,UAAUuoN,WAAY52K,CACrD,CAnpDgF9wC,E,kDCzBhF,IAAI2+I,EAAc,EAAQ,IACtBD,EAAQ,EAAQ,IAChBE,EAAa,EAAQ,GACrBljH,EAAS,EAAQ,IACjBk+H,EAAc,EAAQ,IACtBw4D,EAA6B,EAAQ,KAA8B/3D,aACnEg4D,EAAgB,EAAQ,KACxBC,EAAsB,EAAQ,KAE9BC,EAAuBD,EAAoBE,QAC3CC,EAAmBH,EAAoB1vN,IACvCgtM,EAAUriL,OAEV7qB,EAAiBxD,OAAOwD,eACxBqtM,EAAcpxD,EAAY,GAAG16I,OAC7B4J,EAAU8wI,EAAY,GAAG9wI,SACzBrD,EAAOm0I,EAAY,GAAGn0I,MAEtBkoN,EAAsB94D,IAAgBlb,GAAM,WAC9C,OAAsF,IAA/Eh8I,GAAe,WAA0B,GAAG,SAAU,CAAEM,MAAO,IAAK/D,MAC7E,IAEI0zN,EAAWplM,OAAOA,QAAQ7W,MAAM,UAEhCk8M,EAAc9yN,EAAOD,QAAU,SAAUmD,EAAOlB,EAAMu8B,GACf,YAArC0xK,EAAYH,EAAQ9tM,GAAO,EAAG,KAChCA,EAAO,IAAM+L,EAAQ+hM,EAAQ9tM,GAAO,qBAAsB,MAAQ,KAEhEu8B,GAAWA,EAAQ77B,SAAQV,EAAO,OAASA,GAC3Cu8B,GAAWA,EAAQ1H,SAAQ70B,EAAO,OAASA,KAC1C45B,EAAO14B,EAAO,SAAYovN,GAA8BpvN,EAAMlB,OAASA,KACtE83J,EAAal3J,EAAeM,EAAO,OAAQ,CAAEA,MAAOlB,EAAMg0C,cAAc,IACvE9yC,EAAMlB,KAAOA,GAEhB4wN,GAAuBr0L,GAAW3C,EAAO2C,EAAS,UAAYr7B,EAAM/D,SAAWo/B,EAAQw0L,OACzFnwN,EAAeM,EAAO,SAAU,CAAEA,MAAOq7B,EAAQw0L,QAEnD,IACMx0L,GAAW3C,EAAO2C,EAAS,gBAAkBA,EAAQhB,YACnDu8H,GAAal3J,EAAeM,EAAO,YAAa,CAAEo7C,UAAU,IAEvDp7C,EAAM7D,YAAW6D,EAAM7D,eAAY6C,EAChD,CAAE,MAAOd,GAAqB,CAC9B,IAAI+wC,EAAQsgL,EAAqBvvN,GAG/B,OAFG04B,EAAOuW,EAAO,YACjBA,EAAM7mC,OAASZ,EAAKmoN,EAAyB,iBAAR7wN,EAAmBA,EAAO,KACxDkB,CACX,EAIA8H,SAAS3L,UAAU0F,SAAW+tN,GAAY,WACxC,OAAOh0E,EAAWn2I,OAASgqN,EAAiBhqN,MAAM2C,QAAUinN,EAAc5pN,KAC5E,GAAG,W,+BCrDH,IAAIqmH,EAAiC,iBAAZruH,UAAwBA,SAAS2B,IAItD2sH,EAAmC,oBAAfD,QAA8C9sH,IAAhB8sH,EAEtDhvH,EAAOD,QAAU,CACfuC,IAAK0sH,EACLC,WAAYA,E,+BCRd,IAAI+jG,EAAoB,EAAQ,IAE5B74D,EAAa9mH,UAIjBrzC,EAAOD,QAAU,SAAUsgG,GACzB,GAAI2yH,EAAkB3yH,GAAK,MAAM,IAAI85D,EAAW,wBAA0B95D,GAC1E,OAAOA,CACT,C,+BCPArgG,EAAOD,QAAU,SAAUsgG,GACzB,OAAc,OAAPA,QAAsBn+F,IAAPm+F,CACxB,C,+BCJA,IAAIy5D,EAAc,EAAQ,IACtBm5D,EAAuB,EAAQ,IAC/BC,EAA2B,EAAQ,IAEvClzN,EAAOD,QAAU+5J,EAAc,SAAUn2J,EAAQH,EAAKN,GACpD,OAAO+vN,EAAqBhkJ,EAAEtrE,EAAQH,EAAK0vN,EAAyB,EAAGhwN,GACzE,EAAI,SAAUS,EAAQH,EAAKN,GAEzB,OADAS,EAAOH,GAAON,EACPS,CACT,C,+BCTA,IAAIm2J,EAAc,EAAQ,IACtBlb,EAAQ,EAAQ,IAChBh+I,EAAgB,EAAQ,IAG5BZ,EAAOD,SAAW+5J,IAAgBlb,GAAM,WAEtC,OAES,IAFFx/I,OAAOwD,eAAehC,EAAc,OAAQ,IAAK,CACtDkC,IAAK,WAAc,OAAO,CAAG,IAC5BoC,CACL,G,+BCVA,IAAIo2B,EAAS,EAAQ,GACjBt2B,EAAW,EAAQ,IAEnBrE,EAAW26B,EAAO36B,SAElBwyN,EAASnuN,EAASrE,IAAaqE,EAASrE,EAASC,eAErDZ,EAAOD,QAAU,SAAUsgG,GACzB,OAAO8yH,EAASxyN,EAASC,cAAcy/F,GAAM,CAAC,CAChD,C,+BCTA,IAAI2+G,EAAc,EAAQ,KACtBoU,EAAW,EAAQ,IAIvBpzN,EAAOD,QAAU,SAAUgmC,GACzB,IAAIviC,EAAMw7M,EAAYj5K,EAAU,UAChC,OAAOqtL,EAAS5vN,GAAOA,EAAMA,EAAM,EACrC,C,+BCRA,IAAI6vN,EAAa,EAAQ,IACrBv0E,EAAa,EAAQ,GACrBw0E,EAAgB,EAAQ,KACxBC,EAAoB,EAAQ,IAE5BC,EAAUp0N,OAEdY,EAAOD,QAAUwzN,EAAoB,SAAUlzH,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAIozH,EAAUJ,EAAW,UACzB,OAAOv0E,EAAW20E,IAAYH,EAAcG,EAAQp0N,UAAWm0N,EAAQnzH,GACzE,C,+BCXA,IAAIqzH,EAAgB,EAAQ,IAE5B1zN,EAAOD,QAAU2zN,IACX1wN,OAAO2wN,MACkB,iBAAnB3wN,OAAOi9B,Q,+BCJnB,IAAI2zL,EAAa,EAAQ,KACrBh1E,EAAQ,EAAQ,IAGhBkxD,EAFS,EAAQ,GAEAriL,OAGrBztB,EAAOD,UAAYX,OAAOorE,wBAA0Bo0E,GAAM,WACxD,IAAIi1E,EAAS7wN,OAAO,oBAKpB,OAAQ8sM,EAAQ+jB,MAAaz0N,OAAOy0N,aAAmB7wN,UAEpDA,OAAO2wN,MAAQC,GAAcA,EAAa,EAC/C,G,+BCjBA,IAAI90E,EAAa,EAAQ,GACrBg1E,EAAc,EAAQ,KAEtB35D,EAAa9mH,UAGjBrzC,EAAOD,QAAU,SAAUgmC,GACzB,GAAI+4G,EAAW/4G,GAAW,OAAOA,EACjC,MAAM,IAAIo0H,EAAW25D,EAAY/tL,GAAY,qBAC/C,C,+BCTA,IAAIguL,EAAU,EAAQ,KAClBlkB,EAAQ,EAAQ,KAEnB7vM,EAAOD,QAAU,SAAUyD,EAAKN,GAC/B,OAAO2sM,EAAMrsM,KAASqsM,EAAMrsM,QAAiBtB,IAAVgB,EAAsBA,EAAQ,CAAC,EACpE,GAAG,WAAY,IAAIzD,KAAK,CACtBk7B,QAAS,SACTv3B,KAAM2wN,EAAU,OAAS,SACzBC,UAAW,+CACXC,QAAS,2DACT3oN,OAAQ,uC,+BCVV,IAAIuzI,EAAc,EAAQ,IAEtBn6G,EAAK,EACLwvL,EAAUrnN,KAAKgyB,SACf95B,EAAW85I,EAAY,GAAI95I,UAE/B/E,EAAOD,QAAU,SAAUyD,GACzB,MAAO,gBAAqBtB,IAARsB,EAAoB,GAAKA,GAAO,KAAOuB,IAAW2/B,EAAKwvL,EAAS,GACtF,C,+BCRAl0N,EAAOD,QAAU,SAAUo0N,EAAQjxN,GACjC,MAAO,CACLL,aAAuB,EAATsxN,GACdn+K,eAAyB,EAATm+K,GAChB71K,WAAqB,EAAT61K,GACZjxN,MAAOA,EAEX,C,+BCPAlD,EAAOD,QAAU,CAAC,C,+BCAlB,IAAIu7B,EAAS,EAAQ,GACjByuC,EAA2B,EAAQ,IAAmDkF,EACtFmlJ,EAA8B,EAAQ,IACtCC,EAAgB,EAAQ,KACxB1kB,EAAuB,EAAQ,IAC/B2kB,EAA4B,EAAQ,KACpCC,EAAW,EAAQ,KAiBvBv0N,EAAOD,QAAU,SAAUw+B,EAASjzB,GAClC,IAGYxJ,EAAQ0B,EAAKgxN,EAAgBC,EAAgB10J,EAHrD20J,EAASn2L,EAAQz8B,OACjB6yN,EAASp2L,EAAQjD,OACjBs5L,EAASr2L,EAAQs2L,KASrB,GANE/yN,EADE6yN,EACOr5L,EACAs5L,EACAt5L,EAAOo5L,IAAW/kB,EAAqB+kB,EAAQ,CAAC,IAE/Cp5L,EAAOo5L,IAAW,CAAC,GAAGr1N,UAEtB,IAAKmE,KAAO8H,EAAQ,CAQ9B,GAPAmpN,EAAiBnpN,EAAO9H,GAGtBgxN,EAFEj2L,EAAQu2L,gBACV/0J,EAAagK,EAAyBjoE,EAAQ0B,KACfu8D,EAAW78D,MACpBpB,EAAO0B,IACtB+wN,EAASI,EAASnxN,EAAMkxN,GAAUE,EAAS,IAAM,KAAOpxN,EAAK+6B,EAAQw2L,cAE5C7yN,IAAnBsyN,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDF,EAA0BG,EAAgBD,EAC5C,EAEIj2L,EAAQo1L,MAASa,GAAkBA,EAAeb,OACpDS,EAA4BK,EAAgB,QAAQ,GAEtDJ,EAAcvyN,EAAQ0B,EAAKixN,EAAgBl2L,EAC7C,CACF,C,+BCrDA,IAAIu7H,EAAc,EAAQ,IACtBv6J,EAAO,EAAQ,IACfy1N,EAA6B,EAAQ,KACrC9B,EAA2B,EAAQ,IACnC+B,EAAkB,EAAQ,IAC1B/6D,EAAgB,EAAQ,IACxBt+H,EAAS,EAAQ,IACjBm+H,EAAiB,EAAQ,IAGzBM,EAA4Bj7J,OAAO2qE,yBAIvChqE,EAAQkvE,EAAI6qF,EAAcO,EAA4B,SAAkCI,EAAG7rF,GAGzF,GAFA6rF,EAAIw6D,EAAgBx6D,GACpB7rF,EAAIsrF,EAActrF,GACdmrF,EAAgB,IAClB,OAAOM,EAA0BI,EAAG7rF,EACtC,CAAE,MAAOxtE,GAAqB,CAC9B,GAAIw6B,EAAO6+H,EAAG7rF,GAAI,OAAOskJ,GAA0B3zN,EAAKy1N,EAA2B/lJ,EAAGwrF,EAAG7rF,GAAI6rF,EAAE7rF,GACjG,C,+BCrBA,IAAIsmJ,EAAQ,EAAQ,KAIpBl1N,EAAOD,QAAU,SAAUgmC,GACzB,IAAIt5B,GAAUs5B,EAEd,OAAOt5B,IAAWA,GAAqB,IAAXA,EAAe,EAAIyoN,EAAMzoN,EACvD,C,+BCRA,IAuBI0oN,EAAW/9K,EAAOgoK,EAASgW,EAvB3B95L,EAAS,EAAQ,GACjB92B,EAAQ,EAAQ,IAChBf,EAAO,EAAQ,KACfq7I,EAAa,EAAQ,GACrBljH,EAAS,EAAQ,IACjBgjH,EAAQ,EAAQ,IAChBn8F,EAAO,EAAQ,KACf4yK,EAAa,EAAQ,IACrBz0N,EAAgB,EAAQ,IACxB00N,EAA0B,EAAQ,IAClCC,EAAS,EAAQ,KACjBC,EAAU,EAAQ,KAElBvqN,EAAMqwB,EAAOm6L,aACb5tJ,EAAQvsC,EAAOo6L,eACfliL,EAAUlY,EAAOkY,QACjBmiL,EAAWr6L,EAAOq6L,SAClB3qN,EAAWswB,EAAOtwB,SAClB4qN,EAAiBt6L,EAAOs6L,eACxBnoM,EAAS6N,EAAO7N,OAChB07K,EAAU,EACV33J,EAAQ,CAAC,EACTqkL,EAAqB,qBAGzBj3E,GAAM,WAEJu2E,EAAY75L,EAAOsO,QACrB,IAEA,IAAIwhB,EAAM,SAAU1mB,GAClB,GAAI9I,EAAO4V,EAAO9M,GAAK,CACrB,IAAI5+B,EAAK0rC,EAAM9M,UACR8M,EAAM9M,GACb5+B,GACF,CACF,EAEIgwN,EAAS,SAAUpxL,GACrB,OAAO,WACL0mB,EAAI1mB,EACN,CACF,EAEIs6B,EAAgB,SAAU19D,GAC5B8pD,EAAI9pD,EAAM1C,KACZ,EAEIm3N,EAAyB,SAAUrxL,GAErCpJ,EAAO06L,YAAYvoM,EAAOiX,GAAKywL,EAAUvgK,SAAW,KAAOugK,EAAUj+J,KACvE,EAGKjsD,GAAQ48D,IACX58D,EAAM,SAAsBioC,GAC1BoiL,EAAwB7wN,UAAUtF,OAAQ,GAC1C,IAAI2G,EAAKg5I,EAAW5rG,GAAWA,EAAUloC,EAASkoC,GAC9C1oC,EAAO6qN,EAAW5wN,UAAW,GAKjC,OAJA+sC,IAAQ23J,GAAW,WACjB3kM,EAAMsB,OAAI5D,EAAWsI,EACvB,EACA4sC,EAAM+xJ,GACCA,CACT,EACAthI,EAAQ,SAAwBnjC,UACvB8M,EAAM9M,EACf,EAEI8wL,EACFp+K,EAAQ,SAAU1S,GAChB8O,EAAQyiL,SAASH,EAAOpxL,GAC1B,EAESixL,GAAYA,EAAStpN,IAC9B+qC,EAAQ,SAAU1S,GAChBixL,EAAStpN,IAAIypN,EAAOpxL,GACtB,EAGSkxL,IAAmBL,GAE5BH,GADAhW,EAAU,IAAIwW,GACCM,MACf9W,EAAQ+W,MAAMC,UAAYp3J,EAC1B5nB,EAAQ3zC,EAAK2xN,EAAKY,YAAaZ,IAI/B95L,EAAOgL,kBACPw4G,EAAWxjH,EAAO06L,eACjB16L,EAAO+6L,eACRlB,GAAoC,UAAvBA,EAAUvgK,WACtBgqF,EAAMm3E,IAEP3+K,EAAQ2+K,EACRz6L,EAAOgL,iBAAiB,UAAW04B,GAAe,IAGlD5nB,EADSy+K,KAAsBj1N,EAAc,UACrC,SAAU8jC,GAChB+d,EAAKpgD,YAAYzB,EAAc,WAAWi1N,GAAsB,WAC9DpzK,EAAK7lB,YAAYj0B,MACjByiD,EAAI1mB,EACN,CACF,EAGQ,SAAUA,GAChBviC,WAAW2zN,EAAOpxL,GAAK,EACzB,GAIJ1kC,EAAOD,QAAU,CACfkL,IAAKA,EACL48D,MAAOA,E,+BClHT,IAAIqnD,EAAc,EAAQ,IAEtBC,EAAoBnkH,SAAS3L,UAC7BmF,EAAQ2qH,EAAkB3qH,MAC1BjF,EAAO4vH,EAAkB5vH,KAG7BS,EAAOD,QAA4B,iBAAX6qE,SAAuBA,QAAQpmE,QAAU0qH,EAAc3vH,EAAKkE,KAAKe,GAAS,WAChG,OAAOjF,EAAKiF,MAAMA,EAAOC,UAC3B,E,+BCTA,IAAIo6I,EAAc,EAAQ,IAE1B7+I,EAAOD,QAAU8+I,EAAY,GAAG16I,M,+BCFhC,IAAIg2J,EAAa9mH,UAEjBrzC,EAAOD,QAAU,SAAUu2N,EAAQtN,GACjC,GAAIsN,EAAStN,EAAU,MAAM,IAAI7uD,EAAW,wBAC5C,OAAOm8D,CACT,C,gBCNAt2N,EAAOD,QAAU,SAAUC,GAoBzB,OAnBKA,EAAOu2N,kBACVv2N,EAAOoK,UAAY,WAAa,EAChCpK,EAAOw2N,MAAQ,GAEVx2N,EAAOovC,WAAUpvC,EAAOovC,SAAW,IACxChwC,OAAOwD,eAAe5C,EAAQ,SAAU,CACtC6C,YAAY,EACZC,IAAK,WACH,OAAO9C,EAAOC,CAChB,IAEFb,OAAOwD,eAAe5C,EAAQ,KAAM,CAClC6C,YAAY,EACZC,IAAK,WACH,OAAO9C,EAAOf,CAChB,IAEFe,EAAOu2N,gBAAkB,GAEpBv2N,CACT,C,mBCdS,SAAUy2N,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,8FAA8FK,MAAM,KAC5GN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,4DAA4D/E,MAAM,KAC5E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1C+I,cAAe,SACfZ,KAAM,SAAUla,GACd,MAAO,QAAQ2J,KAAK3J,EACtB,EACA0C,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACHmB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAE5B,EACAjR,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,iBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SACRC,KAAM,YACNvL,EAAG,mBACHwL,GAAI,cACJrN,EAAG,YACHsN,GAAI,YACJC,EAAG,SACHC,GAAI,SACJtN,EAAG,SACHuN,GAAI,SACJG,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WAENoP,uBAAwB,kBACxBhS,QAAS,SAAUjB,GACjB,OAAOA,GAAqB,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAC1E,EAEAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnEkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEPC,EAAa,SAAUlzN,GACrB,OAAa,IAANA,EAAU,EAAU,IAANA,EAAU,EAAU,IAANA,EAAU,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,CAC3G,EACAmzN,EAAU,CACRzyN,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,8BAAW,oCAAY,qCAClF7B,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,oCAAY,oCAAY,qCACnFuN,EAAG,CAAC,2DAAe,0DAAc,CAAC,uCAAU,wCAAW,oCAAY,8BAAW,+BAC9ErN,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,oCAAY,yBACzE0N,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,8BAAW,yBACxEE,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,oCAAY,oCAAY,0BAE5EymN,EAAY,SAAU/kN,GACpB,OAAO,SAAUtF,EAAQ+D,EAAeC,EAAQC,GAC9C,IAAIu+D,EAAI2nJ,EAAWnqN,GACjBumH,EAAM6jG,EAAQ9kN,GAAG6kN,EAAWnqN,IAI9B,OAHU,IAANwiE,IACF+jD,EAAMA,EAAIxiH,EAAgB,EAAI,IAEzBwiH,EAAIjlH,QAAQ,MAAOtB,EAC5B,CACF,EACA8J,EAAS,CAAC,iCAAS,uCAAU,2BAAQ,iCAAS,2BAAQ,iCAAS,iCAAS,iCAAS,uCAAU,uCAAU,uCAAU,wCACxGkgN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaC,EACboF,SAAU,uRAAsD/E,MAAM,KACtE8E,cAAe,mMAAwC9E,MAAM,KAC7D6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER4Q,cAAe,gBACfZ,KAAM,SAAUla,GACd,MAAO,WAAQA,CACjB,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,SAEA,QAEX,EACAva,SAAU,CACRN,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNvL,EAAG0yN,EAAU,KACblnN,GAAIknN,EAAU,KACdv0N,EAAGu0N,EAAU,KACbjnN,GAAIinN,EAAU,KACdhnN,EAAGgnN,EAAU,KACb/mN,GAAI+mN,EAAU,KACdr0N,EAAGq0N,EAAU,KACb9mN,GAAI8mN,EAAU,KACd3mN,EAAG2mN,EAAU,KACb1mN,GAAI0mN,EAAU,KACdzmN,EAAGymN,EAAU,KACbxmN,GAAIwmN,EAAU,MAEhBjvM,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,IAAGC,QAAQ,UAAM,IACnB,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,IAAGC,QAAQ,KAAM,SACnB,EACAkM,KAAM,CACJL,IAAK,EAELC,IAAK,KAKX,CAvHkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGA,IAAIG,EAAa,SAAUlzN,GACvB,OAAa,IAANA,EAAU,EAAU,IAANA,EAAU,EAAU,IAANA,EAAU,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,CAC3G,EACAmzN,EAAU,CACRzyN,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,8BAAW,oCAAY,qCAClF7B,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,oCAAY,oCAAY,qCACnFuN,EAAG,CAAC,2DAAe,0DAAc,CAAC,uCAAU,wCAAW,oCAAY,8BAAW,+BAC9ErN,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,oCAAY,yBACzE0N,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,8BAAW,yBACxEE,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,oCAAY,oCAAY,0BAE5EymN,EAAY,SAAU/kN,GACpB,OAAO,SAAUtF,EAAQ+D,EAAeC,EAAQC,GAC9C,IAAIu+D,EAAI2nJ,EAAWnqN,GACjBumH,EAAM6jG,EAAQ9kN,GAAG6kN,EAAWnqN,IAI9B,OAHU,IAANwiE,IACF+jD,EAAMA,EAAIxiH,EAAgB,EAAI,IAEzBwiH,EAAIjlH,QAAQ,MAAOtB,EAC5B,CACF,EACA8J,EAAS,CAAC,iCAAS,iCAAS,2BAAQ,iCAAS,qBAAO,2BAAQ,uCAAU,qBAAO,uCAAU,uCAAU,uCAAU,wCAClGkgN,EAAO31M,aAAa,QAAS,CACtCvK,OAAQA,EACRD,YAAaC,EACboF,SAAU,uRAAsD/E,MAAM,KACtE8E,cAAe,mMAAwC9E,MAAM,KAC7D6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER4Q,cAAe,gBACfZ,KAAM,SAAUla,GACd,MAAO,WAAQA,CACjB,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,SAEA,QAEX,EACAva,SAAU,CACRN,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNvL,EAAG0yN,EAAU,KACblnN,GAAIknN,EAAU,KACdv0N,EAAGu0N,EAAU,KACbjnN,GAAIinN,EAAU,KACdhnN,EAAGgnN,EAAU,KACb/mN,GAAI+mN,EAAU,KACdr0N,EAAGq0N,EAAU,KACb9mN,GAAI8mN,EAAU,KACd3mN,EAAG2mN,EAAU,KACb1mN,GAAI0mN,EAAU,KACdzmN,EAAGymN,EAAU,KACbxmN,GAAIwmN,EAAU,MAEhBrmM,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,KAAM,SAC9B,EACAkM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAxFkGwhB,CAAQ,EAAQ,G,mBCHzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,0WAAwEK,MAAM,KACtFN,YAAa,0WAAwEM,MAAM,KAC3F+E,SAAU,uRAAsD/E,MAAM,KACtE8E,cAAe,mMAAwC9E,MAAM,KAC7D6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNvL,EAAG,2BACHwL,GAAI,oCACJrN,EAAG,iCACHsN,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJtN,EAAG,qBACHuN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,KAKX,CApDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAELE,EAAa,SAAUlzN,GACrB,OAAa,IAANA,EAAU,EAAU,IAANA,EAAU,EAAU,IAANA,EAAU,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,CAC3G,EACAmzN,EAAU,CACRzyN,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,8BAAW,oCAAY,qCAClF7B,EAAG,CAAC,iEAAgB,gEAAe,CAAC,6CAAW,8CAAY,oCAAY,oCAAY,qCACnFuN,EAAG,CAAC,2DAAe,0DAAc,CAAC,uCAAU,wCAAW,oCAAY,8BAAW,+BAC9ErN,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,oCAAY,yBACzE0N,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,8BAAW,8BAAW,yBACxEE,EAAG,CAAC,qDAAc,8CAAY,CAAC,iCAAS,kCAAU,oCAAY,oCAAY,0BAE5EymN,EAAY,SAAU/kN,GACpB,OAAO,SAAUtF,EAAQ+D,EAAeC,EAAQC,GAC9C,IAAIu+D,EAAI2nJ,EAAWnqN,GACjBumH,EAAM6jG,EAAQ9kN,GAAG6kN,EAAWnqN,IAI9B,OAHU,IAANwiE,IACF+jD,EAAMA,EAAIxiH,EAAgB,EAAI,IAEzBwiH,EAAIjlH,QAAQ,MAAOtB,EAC5B,CACF,EACA8J,EAAS,CAAC,iCAAS,uCAAU,2BAAQ,iCAAS,2BAAQ,iCAAS,iCAAS,iCAAS,uCAAU,uCAAU,uCAAU,wCACtGkgN,EAAO31M,aAAa,QAAS,CACtCvK,OAAQA,EACRD,YAAaC,EACboF,SAAU,uRAAsD/E,MAAM,KACtE8E,cAAe,mMAAwC9E,MAAM,KAC7D6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,uBACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER4Q,cAAe,gBACfZ,KAAM,SAAUla,GACd,MAAO,WAAQA,CACjB,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,SAEA,QAEX,EACAva,SAAU,CACRN,QAAS,8FACTC,QAAS,wFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNvL,EAAG0yN,EAAU,KACblnN,GAAIknN,EAAU,KACdv0N,EAAGu0N,EAAU,KACbjnN,GAAIinN,EAAU,KACdhnN,EAAGgnN,EAAU,KACb/mN,GAAI+mN,EAAU,KACdr0N,EAAGq0N,EAAU,KACb9mN,GAAI8mN,EAAU,KACd3mN,EAAG2mN,EAAU,KACb1mN,GAAI0mN,EAAU,KACdzmN,EAAGymN,EAAU,KACbxmN,GAAIwmN,EAAU,MAEhBjvM,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,UAAM,IAC9B,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,IAAGC,QAAQ,KAAM,SACnB,EACAkM,KAAM,CACJL,IAAK,EAELC,IAAK,KAKX,CAzGkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,0WAAwEK,MAAM,KACtFN,YAAa,0WAAwEM,MAAM,KAC3F+E,SAAU,uRAAsD/E,MAAM,KACtE8E,cAAe,mMAAwC9E,MAAM,KAC7D6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNvL,EAAG,2BACHwL,GAAI,oCACJrN,EAAG,iCACHsN,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJtN,EAAG,qBACHuN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CApDkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEEF,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wYAA6EK,MAAM,KAC3FN,YAAa,wYAA6EM,MAAM,KAChG+E,SAAU,uRAAsD/E,MAAM,KACtE8E,cAAe,mMAAwC9E,MAAM,KAC7D6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER4Q,cAAe,gBACfZ,KAAM,SAAUla,GACd,MAAO,WAAQA,CACjB,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,SAEA,QAEX,EACAva,SAAU,CACRN,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNvL,EAAG,2BACHwL,GAAI,oCACJrN,EAAG,iCACHsN,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJtN,EAAG,qBACHuN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,IAAGC,QAAQ,UAAM,IACnB,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,IAAGC,QAAQ,KAAM,SACnB,EACAkM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAjGkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,gXAAyEK,MAAM,KACvFN,YAAa,gXAAyEM,MAAM,KAC5F+E,SAAU,uRAAsD/E,MAAM,KACtE8E,cAAe,mMAAwC9E,MAAM,KAC7D6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,8FACTC,QAAS,kFACTC,SAAU,oEACVC,QAAS,kFACTC,SAAU,oEACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNvL,EAAG,2BACHwL,GAAI,oCACJrN,EAAG,iCACHsN,GAAI,oCACJC,EAAG,2BACHC,GAAI,oCACJtN,EAAG,qBACHuN,GAAI,8BACJG,EAAG,qBACHC,GAAI,8BACJC,EAAG,qBACHC,GAAI,qCAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CApDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIO,EAAW,CACb,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,cACH,EAAG,cACH,IAAK,cACL,EAAG,YACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,kBACJ,GAAI,mBAEGP,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,+EAA+EK,MAAM,KAC7FN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2KAAqE/E,MAAM,KACrF8E,cAAe,sDAA8B9E,MAAM,KACnD6E,YAAa,+CAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,qBACTC,QAAS,kBACTC,SAAU,mDACVC,QAAS,qBACTC,SAAU,iDACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,qBACNvL,EAAG,+BACHwL,GAAI,iBACJrN,EAAG,uBACHsN,GAAI,sBACJC,EAAG,WACHC,GAAI,UACJtN,EAAG,aACHuN,GAAI,YACJG,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAENqP,cAAe,oDACfZ,KAAM,SAAUla,GACd,MAAO,8BAAmB2J,KAAK3J,EACjC,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,YACEA,EAAO,GACT,kBACEA,EAAO,GACT,eAEA,YAEX,EACAhH,uBAAwB,6DACxBhS,QAAS,SAAUjB,GACjB,GAAe,IAAXA,EAEF,OAAOA,EAAS,kBAElB,IAAIvH,EAAIuH,EAAS,GACftH,EAAIsH,EAAS,IAAMvH,EACnB1C,EAAIiK,GAAU,IAAM,IAAM,KAC5B,OAAOA,GAAUuqN,EAAS9xN,IAAM8xN,EAAS7xN,IAAM6xN,EAASx0N,GAC1D,EACAyX,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAlGkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGA,SAASQ,EAAOC,EAAM15L,GACpB,IAAI25L,EAAQD,EAAKtgN,MAAM,KACvB,OAAO4mB,EAAM,KAAO,GAAKA,EAAM,MAAQ,GAAK25L,EAAM,GAAK35L,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAAM25L,EAAM,GAAKA,EAAM,EAClJ,CACA,SAASC,EAAuB3qN,EAAQ+D,EAAehN,GASrD,MAAY,MAARA,EACKgN,EAAgB,6CAAY,6CAClB,MAARhN,EACFgN,EAAgB,6CAAY,6CAE5B/D,EAAS,IAAMwqN,EAbX,CACXrnN,GAAIY,EAAgB,6HAA2B,6HAC/CX,GAAIW,EAAgB,6HAA2B,6HAC/CT,GAAIS,EAAgB,6HAA2B,6HAC/CR,GAAI,6EACJI,GAAI,iHACJE,GAAI,8EAOgC9M,IAAOiJ,EAE/C,CACSgqN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,CACNnQ,OAAQ,oiBAAuGwQ,MAAM,KACrHygN,WAAY,whBAAqGzgN,MAAM,MAEzHN,YAAa,sRAA0DM,MAAM,KAC7E+E,SAAU,CACRvV,OAAQ,+SAA0DwQ,MAAM,KACxEygN,WAAY,+SAA0DzgN,MAAM,KAC5EO,SAAU,8IAEZuE,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAER5C,SAAU,CACRN,QAAS,6CACTC,QAAS,mDACTE,QAAS,6CACTD,SAAU,WACR,MAAO,2BACT,EACAE,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,uEACT,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,iEAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,8BACRC,KAAM,8BACNvL,EAAG,wFACH7B,EAAG60N,EACHvnN,GAAIunN,EACJtnN,EAAGsnN,EACHrnN,GAAIqnN,EACJ30N,EAAG,iCACHuN,GAAIonN,EACJjnN,EAAG,iCACHC,GAAIgnN,EACJ/mN,EAAG,qBACHC,GAAI8mN,GAENz3M,cAAe,wHACfZ,KAAM,SAAUla,GACd,MAAO,8DAAiB2J,KAAK3J,EAC/B,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,2BACEA,EAAO,GACT,uCACEA,EAAO,GACT,qBAEA,sCAEX,EACAhH,uBAAwB,uCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACH,OAAQ3gB,EAAS,KAAO,GAAKA,EAAS,KAAO,GAAMA,EAAS,MAAQ,IAAMA,EAAS,MAAQ,GAAqBA,EAAS,UAAzBA,EAAS,UAC3G,IAAK,IACH,OAAOA,EAAS,gBAClB,QACE,OAAOA,EAEb,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA1HkGwhB,CAAQ,EAAQ,G,mBCDzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,kbAAoFK,MAAM,KAClGN,YAAa,sOAAkDM,MAAM,KACrE+E,SAAU,ySAAyD/E,MAAM,KACzE8E,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,sEACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,gEAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,8BACRC,KAAM,oCACNvL,EAAG,wFACHwL,GAAI,gDACJrN,EAAG,uCACHsN,GAAI,0CACJC,EAAG,qBACHC,GAAI,8BACJtN,EAAG,qBACHuN,GAAI,8BACJC,EAAG,6CACHC,GAAI,gDACJC,EAAG,iCACHC,GAAI,0CACJC,EAAG,uCACHC,GAAI,2CAENoP,uBAAwB,0FACxBhS,QAAS,SAAUjB,GACjB,IAAI6qN,EAAY7qN,EAAS,GACvB8qN,EAAc9qN,EAAS,IACzB,OAAe,IAAXA,EACKA,EAAS,gBACS,IAAhB8qN,EACF9qN,EAAS,gBACP8qN,EAAc,IAAMA,EAAc,GACpC9qN,EAAS,gBACO,IAAd6qN,EACF7qN,EAAS,gBACO,IAAd6qN,EACF7qN,EAAS,gBACO,IAAd6qN,GAAiC,IAAdA,EACrB7qN,EAAS,gBAETA,EAAS,eAEpB,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArFkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,uKAA8IK,MAAM,KAC5JN,YAAa,gEAAiDM,MAAM,KACpE+E,SAAU,yDAA+C/E,MAAM,KAC/D8E,cAAe,mCAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,kDACLC,KAAM,wDAER5C,SAAU,CACRN,QAAS,yBACTC,QAAS,2BACTC,SAAU,+BACVC,QAAS,2BACTC,SAAU,6CACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,oBACRC,KAAM,uBACNvL,EAAG,kBACHwL,GAAI,aACJrN,EAAG,eACHsN,GAAI,YACJC,EAAG,uBACHC,GAAI,oBACJtN,EAAG,aACHuN,GAAI,UACJG,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,sdAA0FK,MAAM,KACxGN,YAAa,4UAAmEM,MAAM,KACtF+E,SAAU,2TAA4D/E,MAAM,KAC5E8E,cAAe,6LAAuC9E,MAAM,KAC5D6E,YAAa,+JAAkC7E,MAAM,KACrDtI,eAAgB,CACdK,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,wDACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNvL,EAAG,sEACHwL,GAAI,gDACJrN,EAAG,8CACHsN,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJtN,EAAG,kCACHuN,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EACA6R,cAAe,+HACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,uBAAbnf,GAAsBmf,GAAQ,GAAkB,mCAAbnf,GAAwBmf,EAAO,GAAkB,mCAAbnf,EAClEmf,EAAO,GAEPA,CAEX,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,iCAEA,oBAEX,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA7GkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEEF,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,sdAA0FK,MAAM,KACxGN,YAAa,4UAAmEM,MAAM,KACtF+E,SAAU,2TAA4D/E,MAAM,KAC5E8E,cAAe,6LAAuC9E,MAAM,KAC5D6E,YAAa,+JAAkC7E,MAAM,KACrDtI,eAAgB,CACdK,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,wDACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNvL,EAAG,sEACHwL,GAAI,gDACJrN,EAAG,8CACHsN,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJtN,EAAG,kCACHuN,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EACA6R,cAAe,6LACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,uBAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,uBAAbnf,GAEa,6BAAbA,EADFmf,EAGe,mCAAbnf,EACFmf,GAAQ,EAAIA,EAAOA,EAAO,GACX,mCAAbnf,GAEa,+CAAbA,EADFmf,EAAO,QACT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,qBACEA,EAAO,EACT,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,iCACEA,EAAO,GACT,6CAEA,oBAEX,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzHkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wzBAAqJK,MAAM,KACnKN,YAAa,qPAAiEM,MAAM,KACpFJ,iBAAkB,+BAClBghN,kBAAkB,EAClB77M,SAAU,mbAAgF/E,MAAM,KAChG8E,cAAe,2QAAoD9E,MAAM,KACzE6E,YAAa,iIAA6B7E,MAAM,KAChDtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAER5C,SAAU,CACRN,QAAS,4CACTC,QAAS,4CACTC,SAAU,mGACVC,QAAS,gCACTC,SAAU,kGACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,oCACNvL,EAAG,iCACHwL,GAAI,0CACJrN,EAAG,+DACHsN,GAAI,oCACJC,EAAG,qEACHC,GAAI,0CACJtN,EAAG,mDACHuN,GAAI,8BACJG,EAAG,yDACHC,GAAI,8BACJC,EAAG,6CACHC,GAAI,mBAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EACA6R,cAAe,6MACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,yCAAbnf,GAAyBmf,GAAQ,GAAkB,+CAAbnf,GAA0Bmf,EAAO,GAAkB,+CAAbnf,EACvEmf,EAAO,GAEPA,CAEX,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,uCACEA,EAAO,GACT,6CACEA,EAAO,GACT,6CACEA,EAAO,GACT,6CAEA,sCAEX,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA/GkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,SAASgB,EAAyBhrN,EAAQ+D,EAAehN,GAMvD,OAAOiJ,EAAS,IAAMs1D,EALT,CACXlyD,GAAI,WACJO,GAAI,MACJJ,GAAI,UAEgCxM,GAAMiJ,EAC9C,CACA,SAASirN,EAAwBjrN,GAC/B,OAAQkrN,EAAWlrN,IACjB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,OAAOA,EAAS,SAClB,QACE,OAAOA,EAAS,SAEtB,CACA,SAASkrN,EAAWlrN,GAClB,OAAIA,EAAS,EACJkrN,EAAWlrN,EAAS,IAEtBA,CACT,CACA,SAASs1D,EAAStlC,EAAMhwB,GACtB,OAAe,IAAXA,EACKmrN,EAAan7L,GAEfA,CACT,CACA,SAASm7L,EAAan7L,GACpB,IAAIo7L,EAAgB,CAClBt1N,EAAG,IACH4C,EAAG,IACH1C,EAAG,KAEL,YAAsCP,IAAlC21N,EAAcp7L,EAAK9d,OAAO,IACrB8d,EAEFo7L,EAAcp7L,EAAK9d,OAAO,IAAM8d,EAAKq2F,UAAU,EACxD,CACA,IAAIp8G,EAAc,CAAC,QAAS,mBAAe,QAAS,QAAS,QAAS,cAAe,QAAS,QAAS,QAAS,QAAS,OAAQ,SAC/HD,EAAc,uJACdqhN,EAAoB,6FACpBC,EAAyB,gEACzBC,EAAoB,CAAC,QAAS,QAAS,WAAY,sBAAkB,SAAU,WAAY,YAC3FC,EAAqB,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAC5EC,EAAmB,CAAC,OAAQ,OAAQ,eAAgB,QAAS,OAAQ,OAAQ,QACtEzB,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,qFAAgFK,MAAM,KAC9FN,YAAa,wDAAmDM,MAAM,KACtE+E,SAAU,kDAA6C/E,MAAM,KAC7D8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,wBAAwB7E,MAAM,KAC3CwE,cAAe88M,EACfF,kBAAmBA,EACnBC,mBAAoBA,EACpBC,iBAAkBA,EAClBzhN,YAAaA,EACbD,iBAAkBC,EAClBqhN,kBAAmBA,EACnBC,uBAAwBA,EACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBpI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,0BACTC,SAAU,eACVC,QAAS,qBACTC,SAAU,qBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,YACRC,KAAM,cACNvL,EAAG,2BACHwL,GAAI,YACJrN,EAAG,cACHsN,GAAI4nN,EACJ3nN,EAAG,SACHC,GAAI,SACJtN,EAAG,YACHuN,GAAIynN,EACJtnN,EAAG,SACHC,GAAIqnN,EACJpnN,EAAG,WACHC,GAAIonN,GAENh4M,uBAAwB,qBACxBhS,QAAS,SAAUjB,GAEjB,OAAOA,GADiB,IAAXA,EAAe,QAAO,MAErC,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,GAGP8F,cAAe,YAEfZ,KAAM,SAAUvR,GACd,MAAiB,SAAVA,CACT,EACAjG,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAOmH,EAAO,GAAK,OAAS,MAC9B,GAGJ,CA7HkG2U,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,SAAS4B,EAAU5rN,EAAQ+D,EAAehN,GACxC,IAAIkgB,EAASjX,EAAS,IACtB,OAAQjJ,GACN,IAAK,KAQH,OANEkgB,GADa,IAAXjX,EACQ,UACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,UAEA,UAGd,IAAK,IACH,OAAO+D,EAAgB,eAAiB,eAC1C,IAAK,KAQH,OANEkT,GADa,IAAXjX,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,SAEA,SAGd,IAAK,IACH,OAAO+D,EAAgB,YAAc,cACvC,IAAK,KAQH,OANEkT,GADa,IAAXjX,EACQ,MACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,OAEA,OAGd,IAAK,KAMH,OAJEiX,GADa,IAAXjX,EACQ,MAEA,OAGd,IAAK,KAQH,OANEiX,GADa,IAAXjX,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,UAEA,UAGd,IAAK,KAQH,OANEiX,GADa,IAAXjX,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,SAEA,SAIlB,CACSgqN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,qFAAqFK,MAAM,KACnGN,YAAa,8DAA8DM,MAAM,KACjF4gN,kBAAkB,EAClB77M,SAAU,iEAA4D/E,MAAM,KAC5E8E,cAAe,0CAAqC9E,MAAM,KAC1D6E,YAAa,4BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,eACTC,QAAS,eACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,wBACT,KAAK,EACH,MAAO,uBACT,KAAK,EACH,MAAO,sBACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,kBAEb,EACAvQ,QAAS,oBACTC,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACL,KAAK,EACH,MAAO,4BACT,KAAK,EACH,MAAO,gCACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,4BAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNvL,EAAG,cACHwL,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAGuoN,EACHtoN,GAAIsoN,EACJ51N,EAAG,MACHuN,GAAIqoN,EACJloN,EAAG,SACHC,GAAIioN,EACJhoN,EAAG,SACHC,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA/IkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,CACN8gN,WAAY,uFAAoFzgN,MAAM,KACtGxQ,OAAQ,wHAAqHwQ,MAAM,KACnIO,SAAU,mBAEZb,YAAa,iEAA8DM,MAAM,KACjF4gN,kBAAkB,EAClB77M,SAAU,8DAA8D/E,MAAM,KAC9E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJypN,GAAI,aACJxpN,IAAK,gCACLypN,IAAK,mBACLxpN,KAAM,qCACNypN,KAAM,wBAERrsN,SAAU,CACRN,QAAS,WACP,MAAO,YAA+B,IAAjBlD,KAAKyV,QAAgB,MAAQ,MAAQ,MAC5D,EACAtS,QAAS,WACP,MAAO,eAA+B,IAAjBnD,KAAKyV,QAAgB,MAAQ,MAAQ,MAC5D,EACArS,SAAU,WACR,MAAO,YAA+B,IAAjBpD,KAAKyV,QAAgB,MAAQ,MAAQ,MAC5D,EACApS,QAAS,WACP,MAAO,YAA+B,IAAjBrD,KAAKyV,QAAgB,MAAQ,MAAQ,MAC5D,EACAnS,SAAU,WACR,MAAO,wBAA2C,IAAjBtD,KAAKyV,QAAgB,MAAQ,MAAQ,MACxE,EACAlS,SAAU,KAEZqE,aAAc,CACZb,OAAQ,eACRC,KAAM,QACNvL,EAAG,aACHwL,GAAI,YACJrN,EAAG,WACHsN,GAAI,YACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,SACHuN,GAAI,UACJG,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAENoP,uBAAwB,wBACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,IAAI9gB,EAAoB,IAAXG,EAAe,IAAiB,IAAXA,EAAe,IAAiB,IAAXA,EAAe,IAAiB,IAAXA,EAAe,IAAM,OAIjG,MAHe,MAAX2gB,GAA6B,MAAXA,IACpB9gB,EAAS,KAEJG,EAASH,CAClB,EACA2N,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA9EkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIlgN,EAAS,CACTnQ,OAAQ,8HAAoFwQ,MAAM,KAClGygN,WAAY,gIAAsFzgN,MAAM,MAE1GN,EAAc,yFAAkDM,MAAM,KACtEF,EAAc,CAAC,QAAS,WAAS,aAAS,QAAS,aAAS,wCAA0B,2CAA6B,QAAS,gBAAS,gBAAS,QAAS,SAGvJD,EAAc,mPAChB,SAASwgN,EAAOvzN,GACd,OAAOA,EAAI,GAAKA,EAAI,GAAoB,OAAZA,EAAI,GAClC,CACA,SAAS20N,EAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC7C,IAAIgT,EAASjX,EAAS,IACtB,OAAQjJ,GACN,IAAK,IAEH,OAAOgN,GAAiBE,EAAW,gBAAe,mBACpD,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,UAAY,UAEvCiX,EAAS,YAEpB,IAAK,IAEH,OAAOlT,EAAgB,SAAWE,EAAW,SAAW,UAC1D,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,SAAW,SAEtCiX,EAAS,WAEpB,IAAK,IAEH,OAAOlT,EAAgB,SAAWE,EAAW,SAAW,UAC1D,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,SAAW,SAEtCiX,EAAS,WAEpB,IAAK,IAEH,OAAOlT,GAAiBE,EAAW,MAAQ,OAC7C,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,MAAQ,UAEnCiX,EAAS,MAEpB,IAAK,IAEH,OAAOlT,GAAiBE,EAAW,gBAAU,kBAC/C,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,iBAAW,uBAEtCiX,EAAS,iBAEpB,IAAK,IAEH,OAAOlT,GAAiBE,EAAW,MAAQ,QAC7C,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,OAAS,OAEpCiX,EAAS,OAGxB,CACS+yM,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaA,EACbG,YAAaA,EACbD,iBAAkBC,EAGlBqhN,kBAAmB,gPACnBC,uBAAwB,6FACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,mFAAmD/E,MAAM,KACnE8E,cAAe,kCAAuB9E,MAAM,KAC5C6E,YAAa,kCAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN9O,EAAG,cAELkM,SAAU,CACRN,QAAS,cACTC,QAAS,kBACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,uBACT,KAAK,EACL,KAAK,EACH,MAAO,kBACT,KAAK,EACH,MAAO,wBACT,KAAK,EACH,MAAO,yBACT,KAAK,EACH,MAAO,oBACT,KAAK,EACH,MAAO,kBAEb,EACAvQ,QAAS,oBACTC,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACH,MAAO,6BACT,KAAK,EACL,KAAK,EACH,MAAO,0BACT,KAAK,EACH,MAAO,6BACT,KAAK,EACL,KAAK,EACH,MAAO,0BACT,KAAK,EACH,MAAO,wBAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,eACNvL,EAAGi0N,EACHzoN,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAGuoN,EACHtoN,GAAIsoN,EACJ51N,EAAG41N,EACHroN,GAAIqoN,EACJloN,EAAGkoN,EACHjoN,GAAIioN,EACJhoN,EAAGgoN,EACH/nN,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3KkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,0TAAgEK,MAAM,KAC9EN,YAAa,sOAAkDM,MAAM,KACrE+E,SAAU,2WAAoE/E,MAAM,KACpF8E,cAAe,iIAA6B9E,MAAM,KAClD6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iHACJC,IAAK,wHACLC,KAAM,+HAER5C,SAAU,CACRN,QAAS,6EACTC,QAAS,6EACTE,QAAS,6EACTD,SAAU,wFACVE,SAAU,wFACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SAAUpD,GAEhB,OAAOA,GADK,mCAAUyW,KAAKzW,GAAU,qBAAQ,uBAAQyW,KAAKzW,GAAU,qBAAQ,qBAE9E,EACAqD,KAAM,0CACNvL,EAAG,6EACHwL,GAAI,gDACJrN,EAAG,oDACHsN,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJtN,EAAG,wCACHuN,GAAI,wBACJG,EAAG,8CACHC,GAAI,8BACJC,EAAG,wCACHC,GAAI,yBAENoP,uBAAwB,6BACxBhS,QAAS,wBACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAxDkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,yFAAyFK,MAAM,KACvGN,YAAa,qDAAqDM,MAAM,KACxE+E,SAAU,+EAA+E/E,MAAM,KAC/F8E,cAAe,+BAA+B9E,MAAM,KACpD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EAEpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,UACRC,KAAM,cACNvL,EAAG,mBACHwL,GAAI,YACJrN,EAAG,QACHsN,GAAI,WACJC,EAAG,MACHC,GAAI,SACJtN,EAAG,UACHuN,GAAI,aACJG,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAENoP,uBAAwB,mCAExBhS,QAAS,SAAUjB,GACjB,IACEH,EAAS,GAeX,OAhBQG,EAOA,GAEJH,EADQ,KARJG,GAQgB,KARhBA,GAQ4B,KAR5BA,GAQwC,KARxCA,GAQoD,MARpDA,EASK,MAEA,MAXLA,EAaO,IACbH,EAZS,CAAC,GAAI,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,MAExE,KAAM,MAAO,KAAM,KAAM,MAAO,KAAM,KAAM,MAAO,KAAM,OAJnDG,IAgBDA,EAASH,CAClB,EACA2N,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA1EkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,sFAAsFK,MAAM,KACpGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAAqD/E,MAAM,KACrE8E,cAAe,oCAA8B9E,MAAM,KACnD6E,YAAa,6BAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAER5C,SAAU,CACRN,QAAS,iBACTC,QAAS,oBACTC,SAAU,sBACVC,QAAS,oBACTC,SAAU,qBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNvL,EAAG,iBACHwL,GAAI,cACJrN,EAAG,WACHsN,GAAI,cACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,SACHuN,GAAI,UACJG,EAAG,cACHC,GAAI,gBACJC,EAAG,WACHC,GAAI,YAENoP,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArDkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAItK,EAAS,CACX7D,EAAG,CAAC,cAAe,gBACnBuN,EAAG,CAAC,cAAe,gBACnBrN,EAAG,CAAC,UAAW,aACfuN,GAAI,CAACvD,EAAS,QAASA,EAAS,UAChCwD,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC3D,EAAS,UAAWA,EAAS,YAClC4D,EAAG,CAAC,WAAY,cAChBC,GAAI,CAAC7D,EAAS,SAAUA,EAAS,YAEnC,OAAO+D,EAAgBpK,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,EACtD,CACSizN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wFAAqFK,MAAM,KACnGN,YAAa,gEAA6DM,MAAM,KAChF4gN,kBAAkB,EAClB77M,SAAU,8DAA8D/E,MAAM,KAC9E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEZsE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAGk2N,EACH5oN,GAAI,aACJC,EAAG2oN,EACH1oN,GAAI,aACJtN,EAAGg2N,EACHzoN,GAAIyoN,EACJxoN,EAAGwoN,EACHvoN,GAAI,YACJC,EAAGsoN,EACHroN,GAAIqoN,EACJpoN,EAAGooN,EACHnoN,GAAImoN,GAEN/4M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAvEkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAItK,EAAS,CACX7D,EAAG,CAAC,cAAe,gBACnBuN,EAAG,CAAC,cAAe,gBACnBrN,EAAG,CAAC,UAAW,aACfuN,GAAI,CAACvD,EAAS,QAASA,EAAS,UAChCwD,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC3D,EAAS,UAAWA,EAAS,YAClC4D,EAAG,CAAC,WAAY,cAChBC,GAAI,CAAC7D,EAAS,SAAUA,EAAS,YAEnC,OAAO+D,EAAgBpK,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,EACtD,CACWizN,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,2FAAqFK,MAAM,KACnGN,YAAa,mEAA6DM,MAAM,KAChF4gN,kBAAkB,EAClB77M,SAAU,8DAA8D/E,MAAM,KAC9E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEZsE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAGk2N,EACH5oN,GAAI,aACJC,EAAG2oN,EACH1oN,GAAI,aACJtN,EAAGg2N,EACHzoN,GAAIyoN,EACJxoN,EAAGwoN,EACHvoN,GAAI,YACJC,EAAGsoN,EACHroN,GAAIqoN,EACJpoN,EAAGooN,EACHnoN,GAAImoN,GAEN/4M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAvEkGwhB,CAAQ,EAAQ,G,mBCFzG,SAAUo7L,GACjB,aAGA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAItK,EAAS,CACX7D,EAAG,CAAC,cAAe,gBACnBuN,EAAG,CAAC,cAAe,gBACnBrN,EAAG,CAAC,UAAW,aACfuN,GAAI,CAACvD,EAAS,QAASA,EAAS,UAChCwD,EAAG,CAAC,aAAc,eAClBE,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC3D,EAAS,UAAWA,EAAS,YAClC4D,EAAG,CAAC,WAAY,cAChBC,GAAI,CAAC7D,EAAS,SAAUA,EAAS,YAEnC,OAAO+D,EAAgBpK,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,EACtD,CACWizN,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAqFK,MAAM,KACnGN,YAAa,gEAA6DM,MAAM,KAChF4gN,kBAAkB,EAClB77M,SAAU,8DAA8D/E,MAAM,KAC9E8E,cAAe,uBAAuB9E,MAAM,KAC5C6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEZsE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAGk2N,EACH5oN,GAAI,aACJC,EAAG2oN,EACH1oN,GAAI,aACJtN,EAAGg2N,EACHzoN,GAAIyoN,EACJxoN,EAAGwoN,EACHvoN,GAAI,YACJC,EAAGsoN,EACHroN,GAAIqoN,EACJpoN,EAAGooN,EACHnoN,GAAImoN,GAEN/4M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAvEkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIlgN,EAAS,CAAC,mDAAY,+DAAc,uCAAU,mDAAY,eAAM,2BAAQ,uCAAU,mDAAY,2EAAgB,+DAAc,+DAAc,gEAC5IoF,EAAW,CAAC,mDAAY,2BAAQ,mDAAY,2BAAQ,+DAAc,uCAAU,oDACrE86M,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaC,EACboF,SAAUA,EACVD,cAAeC,EACfF,YAAa,iLAAqC7E,MAAM,KACxDtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER4Q,cAAe,4BACfZ,KAAM,SAAUla,GACd,MAAO,iBAASA,CAClB,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,eAEA,cAEX,EACAva,SAAU,CACRN,QAAS,4CACTC,QAAS,4CACTC,SAAU,UACVC,QAAS,4CACTC,SAAU,6DACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,sDACRC,KAAM,0CACNvL,EAAG,uFACHwL,GAAI,sDACJrN,EAAG,mDACHsN,GAAI,0CACJC,EAAG,+DACHC,GAAI,sDACJtN,EAAG,mDACHuN,GAAI,0CACJG,EAAG,uCACHC,GAAI,8BACJC,EAAG,mDACHC,GAAI,2CAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,UAAM,IAC9B,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,KAAM,SAC9B,EACAkM,KAAM,CACJL,IAAK,EAELC,IAAK,KAKX,CAtEkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,SAAS1rN,EAAWlG,GAClB,MAA2B,qBAAbmG,UAA4BnG,aAAiBmG,UAAsD,sBAA1C5L,OAAOC,UAAU0F,SAASxF,KAAKsF,EACxG,CACS4xN,EAAO31M,aAAa,KAAM,CACjC43M,mBAAoB,wnBAAqH9hN,MAAM,KAC/I+hN,iBAAkB,wnBAAqH/hN,MAAM,KAC7IL,OAAQ,SAAUqiN,EAAgBxyN,GAChC,OAAKwyN,EAEwB,kBAAXxyN,GAAuB,IAAIoI,KAAKpI,EAAO0sH,UAAU,EAAG1sH,EAAOqP,QAAQ,UAE5E9M,KAAKkwN,kBAAkBD,EAAe/lN,SAEtClK,KAAKmwN,oBAAoBF,EAAe/lN,SALxClK,KAAKmwN,mBAOhB,EACAxiN,YAAa,kPAAoDM,MAAM,KACvE+E,SAAU,ySAAyD/E,MAAM,KACzE8E,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,6FAAuB7E,MAAM,KAC1CrP,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACHmB,EAAU,eAAO,eAEjBA,EAAU,eAAO,cAE5B,EACAR,KAAM,SAAUla,GACd,MAAyC,YAAjCA,EAAQ,IAAIsM,cAAc,EACpC,EACAwO,cAAe,+BACfrR,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAERgqN,WAAY,CACVltN,QAAS,+CACTC,QAAS,yCACTC,SAAU,eACVC,QAAS,mCACTC,SAAU,WACR,OACO,IADCtD,KAAK4T,MAEF,iGAEA,sGAEb,EACArQ,SAAU,KAEZC,SAAU,SAAU3I,EAAK4I,GACvB,IAAIE,EAAS3D,KAAKqwN,YAAYx1N,GAC5B4a,EAAQhS,GAAOA,EAAIgS,QAIrB,OAHIrT,EAAWuB,KACbA,EAASA,EAAO9H,MAAM4H,IAEjBE,EAAOyB,QAAQ,KAAMqQ,EAAQ,KAAO,EAAI,qBAAQ,2BACzD,EACA7N,aAAc,CACZb,OAAQ,kBACRC,KAAM,8BACNvL,EAAG,oGACHwL,GAAI,8EACJrN,EAAG,oDACHsN,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJtN,EAAG,8CACHuN,GAAI,oCACJG,EAAG,0DACHC,GAAI,oCACJC,EAAG,gEACHC,GAAI,2CAENoP,uBAAwB,gBACxBhS,QAAS,WACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA7FkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,GAGJ,CAnDkGk2B,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,GAGJ,CAnDkGk2B,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCIzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,kGAA6FK,MAAM,KAC3GN,YAAa,yDAAoDM,MAAM,KACvE+E,SAAU,oEAAqD/E,MAAM,KACrE8E,cAAe,0CAAgC9E,MAAM,KACrD6E,YAAa,4BAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNypN,KAAM,uCAER74M,cAAe,cACfZ,KAAM,SAAUla,GACd,MAAyC,MAAlCA,EAAM8Z,OAAO,GAAGxN,aACzB,EACA5J,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACHmB,EAAU,SAAW,SAErBA,EAAU,SAAW,QAEhC,EACApT,SAAU,CACRN,QAAS,sBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,sBACTC,SAAU,2BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,UACRC,KAAM,gBACNvL,EAAG,kBACHwL,GAAI,cACJrN,EAAG,aACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,WAEHuN,GAAI,WACJG,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YAENoP,uBAAwB,WACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAlEkGwhB,CAAQ,EAAQ,G,mBCFzG,SAAUo7L,GACjB,aAGA,IAAIwC,EAAiB,8DAA8DriN,MAAM,KACvFN,EAAc,kDAAkDM,MAAM,KACtEF,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAClHD,EAAc,mLACPggN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,2FAA2FK,MAAM,KACzGN,YAAa,SAAU/T,EAAG6D,GACxB,OAAK7D,EAEM,QAAQiM,KAAKpI,GACfkQ,EAAY/T,EAAEsQ,SAEdomN,EAAe12N,EAAEsQ,SAJjBomN,CAMX,EACAxiN,YAAaA,EACbD,iBAAkBC,EAClBqhN,kBAAmB,+FACnBC,uBAAwB,0FACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,6DAAuD/E,MAAM,KACvE8E,cAAe,2CAAqC9E,MAAM,KAC1D6E,YAAa,0BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAER5C,SAAU,CACRN,QAAS,WACP,MAAO,aAAgC,IAAjBlD,KAAKyV,QAAgB,IAAM,IAAM,MACzD,EACAtS,QAAS,WACP,MAAO,mBAAmC,IAAjBnD,KAAKyV,QAAgB,IAAM,IAAM,MAC5D,EACArS,SAAU,WACR,MAAO,cAAiC,IAAjBpD,KAAKyV,QAAgB,IAAM,IAAM,MAC1D,EACApS,QAAS,WACP,MAAO,cAAiC,IAAjBrD,KAAKyV,QAAgB,IAAM,IAAM,MAC1D,EACAnS,SAAU,WACR,MAAO,0BAA6C,IAAjBtD,KAAKyV,QAAgB,IAAM,IAAM,MACtE,EACAlS,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNvL,EAAG,gBACHwL,GAAI,cACJrN,EAAG,YACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,YACHuN,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,GAGPzL,YAAa,qBAGjB,CAtFkGitB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGA,IAAIwC,EAAiB,8DAA8DriN,MAAM,KACvFN,EAAc,kDAAkDM,MAAM,KACtEF,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAClHD,EAAc,mLACLggN,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,2FAA2FK,MAAM,KACzGN,YAAa,SAAU/T,EAAG6D,GACxB,OAAK7D,EAEM,QAAQiM,KAAKpI,GACfkQ,EAAY/T,EAAEsQ,SAEdomN,EAAe12N,EAAEsQ,SAJjBomN,CAMX,EACAxiN,YAAaA,EACbD,iBAAkBC,EAClBqhN,kBAAmB,+FACnBC,uBAAwB,0FACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,6DAAuD/E,MAAM,KACvE8E,cAAe,2CAAqC9E,MAAM,KAC1D6E,YAAa,0BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAER5C,SAAU,CACRN,QAAS,WACP,MAAO,aAAgC,IAAjBlD,KAAKyV,QAAgB,IAAM,IAAM,MACzD,EACAtS,QAAS,WACP,MAAO,mBAAmC,IAAjBnD,KAAKyV,QAAgB,IAAM,IAAM,MAC5D,EACArS,SAAU,WACR,MAAO,cAAiC,IAAjBpD,KAAKyV,QAAgB,IAAM,IAAM,MAC1D,EACApS,QAAS,WACP,MAAO,cAAiC,IAAjBrD,KAAKyV,QAAgB,IAAM,IAAM,MAC1D,EACAnS,SAAU,WACR,MAAO,0BAA6C,IAAjBtD,KAAKyV,QAAgB,IAAM,IAAM,MACtE,EACAlS,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNvL,EAAG,gBACHwL,GAAI,cACJrN,EAAG,YACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,YACHuN,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArFkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,IAAIwC,EAAiB,8DAA8DriN,MAAM,KACvFN,EAAc,kDAAkDM,MAAM,KACtEF,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAClHD,EAAc,mLACLggN,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,2FAA2FK,MAAM,KACzGN,YAAa,SAAU/T,EAAG6D,GACxB,OAAK7D,EAEM,QAAQiM,KAAKpI,GACfkQ,EAAY/T,EAAEsQ,SAEdomN,EAAe12N,EAAEsQ,SAJjBomN,CAMX,EACAxiN,YAAaA,EACbD,iBAAkBC,EAClBqhN,kBAAmB,+FACnBC,uBAAwB,0FACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,6DAAuD/E,MAAM,KACvE8E,cAAe,2CAAqC9E,MAAM,KAC1D6E,YAAa,0BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAER5C,SAAU,CACRN,QAAS,WACP,MAAO,aAAgC,IAAjBlD,KAAKyV,QAAgB,IAAM,IAAM,MACzD,EACAtS,QAAS,WACP,MAAO,mBAAmC,IAAjBnD,KAAKyV,QAAgB,IAAM,IAAM,MAC5D,EACArS,SAAU,WACR,MAAO,cAAiC,IAAjBpD,KAAKyV,QAAgB,IAAM,IAAM,MAC1D,EACApS,QAAS,WACP,MAAO,cAAiC,IAAjBrD,KAAKyV,QAAgB,IAAM,IAAM,MAC1D,EACAnS,SAAU,WACR,MAAO,0BAA6C,IAAjBtD,KAAKyV,QAAgB,IAAM,IAAM,MACtE,EACAlS,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNvL,EAAG,gBACHwL,GAAI,cACJrN,EAAG,YACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,YACHuN,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,GAGPzL,YAAa,qBAGjB,CAtFkGitB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,IAAIwC,EAAiB,8DAA8DriN,MAAM,KACvFN,EAAc,kDAAkDM,MAAM,KACtEF,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,SAClHD,EAAc,mLACLggN,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,2FAA2FK,MAAM,KACzGN,YAAa,SAAU/T,EAAG6D,GACxB,OAAK7D,EAEM,QAAQiM,KAAKpI,GACfkQ,EAAY/T,EAAEsQ,SAEdomN,EAAe12N,EAAEsQ,SAJjBomN,CAMX,EACAxiN,YAAaA,EACbD,iBAAkBC,EAClBqhN,kBAAmB,+FACnBC,uBAAwB,0FACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,6DAAuD/E,MAAM,KACvE8E,cAAe,2CAAqC9E,MAAM,KAC1D6E,YAAa,0BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAER5C,SAAU,CACRN,QAAS,WACP,MAAO,aAAgC,IAAjBlD,KAAKyV,QAAgB,IAAM,IAAM,MACzD,EACAtS,QAAS,WACP,MAAO,mBAAmC,IAAjBnD,KAAKyV,QAAgB,IAAM,IAAM,MAC5D,EACArS,SAAU,WACR,MAAO,cAAiC,IAAjBpD,KAAKyV,QAAgB,IAAM,IAAM,MAC1D,EACApS,QAAS,WACP,MAAO,cAAiC,IAAjBrD,KAAKyV,QAAgB,IAAM,IAAM,MAC1D,EACAnS,SAAU,WACR,MAAO,0BAA6C,IAAjBtD,KAAKyV,QAAgB,IAAM,IAAM,MACtE,EACAlS,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNvL,EAAG,gBACHwL,GAAI,cACJrN,EAAG,YACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,YACHuN,GAAI,aACJC,EAAG,aACHC,GAAI,aACJC,EAAG,SACHC,GAAI,WACJC,EAAG,YACHC,GAAI,cAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArFkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAItK,EAAS,CACXhC,EAAG,CAAC,kBAAgB,iBAAe,iBACnCwL,GAAI,CAACnD,EAAS,UAAWA,EAAS,YAClClK,EAAG,CAAC,gBAAc,gBAClBsN,GAAI,CAACpD,EAAS,UAAWA,EAAS,YAClCqD,EAAG,CAAC,eAAa,YAAa,eAC9BC,GAAI,CAACtD,EAAS,SAAUA,EAAS,UACjChK,EAAG,CAAC,kBAAa,kBACjB0N,EAAG,CAAC,UAAW,WAAY,cAC3BC,GAAI,CAAC3D,EAAS,OAAQA,EAAS,SAC/B4D,EAAG,CAAC,eAAa,QAAS,gBAC1BC,GAAI,CAAC7D,EAAS,SAAUA,EAAS,YAEnC,OAAI+D,EACKpK,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,GAEhDkN,EAAWtK,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,EACjD,CACSizN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gGAA6FK,MAAM,KAC3GN,YAAa,gEAA6DM,MAAM,KAChF+E,SAAU,sFAAiE/E,MAAM,KACjF8E,cAAe,gBAAgB9E,MAAM,KACrC6E,YAAa,gBAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,eACRC,KAAM,YACNvL,EAAGq0N,EACH7oN,GAAI6oN,EACJl2N,EAAGk2N,EACH5oN,GAAI4oN,EACJ3oN,EAAG2oN,EACH1oN,GAAI0oN,EACJh2N,EAAGg2N,EACHzoN,GAAI,cACJG,EAAGsoN,EACHroN,GAAIqoN,EACJpoN,EAAGooN,EACHnoN,GAAImoN,GAEN/4M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAxEkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,+FAA+FK,MAAM,KAC7GN,YAAa,8DAA8DM,MAAM,KACjF4gN,kBAAkB,EAClB77M,SAAU,sEAAsE/E,MAAM,KACtF8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN9O,EAAG,WACHq4N,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAERrsN,SAAU,CACRN,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNvL,EAAG,iBACHwL,GAAI,aACJrN,EAAG,aACHsN,GAAI,YACJC,EAAG,WACHC,GAAI,UACJtN,EAAG,WACHuN,GAAI,UACJG,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WAENoP,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3DkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,0WAAwEK,MAAM,KACtFN,YAAa,0WAAwEM,MAAM,KAC3F+E,SAAU,iRAAoE/E,MAAM,KACpF8E,cAAe,iRAAoE9E,MAAM,KACzF6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER4Q,cAAe,wGACfZ,KAAM,SAAUla,GACd,MAAO,qDAAa2J,KAAK3J,EAC3B,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,qDAEA,oDAEX,EACAva,SAAU,CACRN,QAAS,+DACTC,QAAS,yDACTC,SAAU,qCACVC,QAAS,+DACTC,SAAU,0DACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNvL,EAAG,oDACHwL,GAAI,oCACJrN,EAAG,8CACHsN,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJtN,EAAG,kCACHuN,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,oBAAU,SAAUD,GACxC,OAAO6oN,EAAU7oN,EACnB,IAAGC,QAAQ,UAAM,IACnB,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,IAAGC,QAAQ,KAAM,SACnB,EACA2R,uBAAwB,gBACxBhS,QAAS,WACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,KAKX,CAnGkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIyC,EAAc,iFAAwEtiN,MAAM,KAC9FuiN,EAAgB,CAAC,QAAS,QAAS,SAAU,SAAU,YAAU,SAAU,SAAUD,EAAY,GAAIA,EAAY,GAAIA,EAAY,IACnI,SAASb,EAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC7C,IAAIgT,EAAS,GACb,OAAQlgB,GACN,IAAK,IACH,OAAOkN,EAAW,oBAAsB,kBAC1C,IAAK,KACHgT,EAAShT,EAAW,WAAa,WACjC,MACF,IAAK,IACH,OAAOA,EAAW,WAAa,WACjC,IAAK,KACHgT,EAAShT,EAAW,WAAa,YACjC,MACF,IAAK,IACH,OAAOA,EAAW,SAAW,QAC/B,IAAK,KACHgT,EAAShT,EAAW,SAAW,SAC/B,MACF,IAAK,IACH,OAAOA,EAAW,eAAW,cAC/B,IAAK,KACHgT,EAAShT,EAAW,eAAW,kBAC/B,MACF,IAAK,IACH,OAAOA,EAAW,YAAc,WAClC,IAAK,KACHgT,EAAShT,EAAW,YAAc,YAClC,MACF,IAAK,IACH,OAAOA,EAAW,SAAW,QAC/B,IAAK,KACHgT,EAAShT,EAAW,SAAW,SAInC,OADAgT,EAAS01M,EAAa3sN,EAAQiE,GAAY,IAAMgT,CAElD,CACA,SAAS01M,EAAa3sN,EAAQiE,GAC5B,OAAOjE,EAAS,GAAKiE,EAAWyoN,EAAc1sN,GAAUysN,EAAYzsN,GAAUA,CAChF,CACSgqN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,iHAA2GK,MAAM,KACzHN,YAAa,6EAAuEM,MAAM,KAC1F+E,SAAU,qEAAqE/E,MAAM,KACrF8E,cAAe,uBAAuB9E,MAAM,KAC5C6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN9O,EAAG,WACHq4N,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAERrsN,SAAU,CACRN,QAAS,6BACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,qBACRC,KAAM,YACNvL,EAAGi0N,EACHzoN,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAGuoN,EACHtoN,GAAIsoN,EACJ51N,EAAG41N,EACHroN,GAAIqoN,EACJloN,EAAGkoN,EACHjoN,GAAIioN,EACJhoN,EAAGgoN,EACH/nN,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnGkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGUA,EAAO31M,aAAa,MAAO,CACnCvK,OAAQ,0FAA0FK,MAAM,KACxGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,yDAAyD/E,MAAM,KACzE8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,wBAAwB7E,MAAM,KAC3CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,gBACRC,KAAM,mBACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,eACHsN,GAAI,YACJC,EAAG,aACHC,GAAI,UACJtN,EAAG,aACHuN,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAENoP,uBAAwB,UACxBhS,QAAS,SAAUjB,GACjB,OAAOA,CACT,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAvDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wFAAqFK,MAAM,KACnGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,wFAA4E/E,MAAM,KAC5F8E,cAAe,0CAA8B9E,MAAM,KACnD6E,YAAa,gCAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,uBACTC,SAAU,gBACVC,QAAS,wBACTC,SAAU,8BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,kBACNvL,EAAG,eACHwL,GAAI,cACJrN,EAAG,eACHsN,GAAI,cACJC,EAAG,cACHC,GAAI,cACJtN,EAAG,YACHuN,GAAI,WACJG,EAAG,oBACHC,GAAI,mBACJC,EAAG,aACHC,GAAI,YAENoP,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArDkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGA,IAAIqB,EAAoB,oGACtBC,EAAyB,6FACzBthN,EAAc,2LACdC,EAAc,CAAC,SAAU,YAAU,SAAU,QAAS,QAAS,SAAU,SAAU,YAAU,SAAU,QAAS,QAAS,YAClH+/M,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gGAAuFK,MAAM,KACrGN,YAAa,0EAAiEM,MAAM,KACpFH,YAAaA,EACbD,iBAAkBC,EAClBqhN,kBAAmBA,EACnBC,uBAAwBA,EACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,sDAAsD/E,MAAM,KACtE8E,cAAe,qCAAqC9E,MAAM,KAC1D6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,UACRC,KAAM,YACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAG,aACHsN,GAAI,aACJC,EAAG,YACHC,GAAI,YACJtN,EAAG,UACHuN,GAAI,WACJC,EAAG,cACHC,GAAI,cACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAENoP,uBAAwB,eACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GAIN,IAAK,IACH,OAAO3gB,GAAqB,IAAXA,EAAe,KAAO,IAGzC,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACH,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAGzC,IAAK,IACL,IAAK,IACH,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAE7C,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAxFkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,gGAAuFK,MAAM,KACrGN,YAAa,0EAAiEM,MAAM,KACpF4gN,kBAAkB,EAClB77M,SAAU,sDAAsD/E,MAAM,KACtE8E,cAAe,qCAAqC9E,MAAM,KAC1D6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,UACRC,KAAM,YACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAG,aACHsN,GAAI,aACJC,EAAG,YACHC,GAAI,YACJtN,EAAG,UACHuN,GAAI,WACJG,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAENoP,uBAAwB,gBACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GAEN,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACH,OAAO3gB,GAAqB,IAAXA,EAAe,KAAO,KAGzC,IAAK,IACL,IAAK,IACH,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAE7C,GAGJ,CAjEkG4uB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,gGAAuFK,MAAM,KACrGN,YAAa,0EAAiEM,MAAM,KACpF4gN,kBAAkB,EAClB77M,SAAU,sDAAsD/E,MAAM,KACtE8E,cAAe,qCAAqC9E,MAAM,KAC1D6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,6BACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,UACRC,KAAM,YACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAG,aACHsN,GAAI,aACJC,EAAG,YACHC,GAAI,YACJtN,EAAG,UACHuN,GAAI,WACJG,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAENoP,uBAAwB,gBACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GAEN,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACH,OAAO3gB,GAAqB,IAAXA,EAAe,KAAO,KAGzC,IAAK,IACL,IAAK,IACH,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAE7C,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAvEkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAI4C,EAAsB,6DAA6DziN,MAAM,KAC3F0iN,EAAyB,kDAAkD1iN,MAAM,KAC1E6/M,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,iGAAiGK,MAAM,KAC/GN,YAAa,SAAU/T,EAAG6D,GACxB,OAAK7D,EAEM,QAAQiM,KAAKpI,GACfkzN,EAAuB/2N,EAAEsQ,SAEzBwmN,EAAoB92N,EAAEsQ,SAJtBwmN,CAMX,EACA7B,kBAAkB,EAClB77M,SAAU,wDAAwD/E,MAAM,KACxE8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SACRC,KAAM,SACNvL,EAAG,mBACHwL,GAAI,cACJrN,EAAG,eACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,UACHuN,GAAI,WACJG,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAENoP,uBAAwB,kBACxBhS,QAAS,SAAUjB,GACjB,OAAOA,GAAqB,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAC1E,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnEkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIlgN,EAAS,CAAC,YAAU,UAAW,WAAS,aAAW,YAAa,YAAa,UAAQ,YAAU,qBAAgB,sBAAoB,UAAW,WAChJD,EAAc,CAAC,MAAO,QAAS,UAAQ,MAAO,OAAQ,QAAS,UAAQ,SAAO,OAAQ,OAAQ,OAAQ,QACtGqF,EAAW,CAAC,kBAAgB,cAAY,iBAAY,oBAAe,eAAa,eAAa,kBAC7FD,EAAgB,CAAC,OAAQ,OAAQ,WAAS,UAAQ,UAAQ,QAAS,QACnED,EAAc,CAAC,KAAM,KAAM,QAAM,QAAM,QAAM,IAAK,MAC3Cg7M,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaA,EACbkhN,kBAAkB,EAClB77M,SAAUA,EACVD,cAAeA,EACfD,YAAaA,EACbnN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,kBACTC,SAAU,2BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,OACRC,KAAM,eACNvL,EAAG,mBACHwL,GAAI,aACJrN,EAAG,gBACHsN,GAAI,mBACJC,EAAG,iBACHC,GAAI,oBACJtN,EAAG,QACHuN,GAAI,WACJG,EAAG,QACHC,GAAI,eACJC,EAAG,SACHC,GAAI,aAENoP,uBAAwB,mBACxBhS,QAAS,SAAUjB,GAEjB,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,KAAO,EAAI,KAAO,KAE/D,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA9DkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIlgN,EAAS,CAAC,gBAAiB,aAAc,aAAW,aAAc,gBAAc,kBAAgB,cAAe,iBAAe,eAAgB,gBAAc,eAAgB,mBAC9KD,EAAc,CAAC,OAAQ,OAAQ,UAAQ,OAAQ,UAAQ,UAAQ,OAAQ,SAAO,OAAQ,UAAQ,OAAQ,WACtGqF,EAAW,CAAC,iBAAe,UAAW,aAAW,YAAa,YAAa,WAAY,eACvFD,EAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DD,EAAc,CAAC,QAAM,KAAM,QAAM,KAAM,KAAM,KAAM,MAC5Cg7M,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaA,EACbkhN,kBAAkB,EAClB77M,SAAUA,EACVD,cAAeA,EACfD,YAAaA,EACbnN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,yBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,6BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,YACRC,KAAM,gBACNvL,EAAG,gBACHwL,GAAI,YACJrN,EAAG,UACHsN,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJtN,EAAG,QACHuN,GAAI,WACJG,EAAG,UACHC,GAAI,eACJC,EAAG,WACHC,GAAI,eAENoP,uBAAwB,mBACxBhS,QAAS,SAAUjB,GAEjB,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,KAAO,EAAI,KAAO,KAE/D,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA9DkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,4FAAyFK,MAAM,KACvGN,YAAa,iEAA8DM,MAAM,KACjF4gN,kBAAkB,EAClB77M,SAAU,yDAAmD/E,MAAM,KACnE8E,cAAe,2CAAqC9E,MAAM,KAC1D6E,YAAa,6BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAER5C,SAAU,CACRN,QAAS,WACP,MAAO,UAA6B,IAAjBlD,KAAKyV,QAAgB,QAAO,QAAO,MACxD,EACAtS,QAAS,WACP,MAAO,gBAA6B,IAAjBnD,KAAKyV,QAAgB,QAAO,QAAO,MACxD,EACArS,SAAU,WACR,MAAO,UAA6B,IAAjBpD,KAAKyV,QAAgB,QAAO,KAAO,MACxD,EACApS,QAAS,WACP,MAAO,UAA6B,IAAjBrD,KAAKyV,QAAgB,OAAM,KAAO,MACvD,EACAnS,SAAU,WACR,MAAO,qBAAwC,IAAjBtD,KAAKyV,QAAgB,QAAO,KAAO,MACnE,EACAlS,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SAAUsjH,GAChB,OAA0B,IAAtBA,EAAIv9G,QAAQ,MACP,IAAMu9G,EAER,MAAQA,CACjB,EACArjH,KAAM,SACNvL,EAAG,eACHwL,GAAI,cACJrN,EAAG,YACHsN,GAAI,aACJC,EAAG,YACHC,GAAI,WACJtN,EAAG,YACHuN,GAAI,aACJG,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAtEkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAItK,EAAS,CACXhC,EAAG,CAAC,wFAAmB,2DACvBwL,GAAI,CAACnD,EAAS,0DAAcA,EAAS,mCACrClK,EAAG,CAAC,0DAAc,+CAClBsN,GAAI,CAACpD,EAAS,oDAAaA,EAAS,yCACpCqD,EAAG,CAAC,8CAAY,6BAChBC,GAAI,CAACtD,EAAS,wCAAWA,EAAS,6BAClChK,EAAG,CAAC,oDAAa,mCACjBuN,GAAI,CAACvD,EAAS,8CAAYA,EAAS,uBACnC0D,EAAG,CAAC,4EAAiB,qDACrBC,GAAI,CAAC3D,EAAS,gEAAeA,EAAS,yCACtC4D,EAAG,CAAC,0DAAc,yCAClBC,GAAI,CAAC7D,EAAS,oDAAaA,EAAS,0CAEtC,OAAOiE,EAAWtK,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,EACjD,CACcizN,EAAO31M,aAAa,WAAY,CAC5CvK,OAAQ,CACN8gN,WAAY,0cAAwFzgN,MAAM,KAC1GxQ,OAAQ,4yBAAmJwQ,MAAM,KACjKO,SAAU,mBAEZb,YAAa,qVAA4EM,MAAM,KAC/F4gN,kBAAkB,EAClB77M,SAAU,iRAAqD/E,MAAM,KACrE8E,cAAe,wLAA4C9E,MAAM,KACjE6E,YAAa,mGAAwB7E,MAAM,KAC3CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,gDACJD,IAAK,mDACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4DACLC,KAAM,qEACNypN,KAAM,kEAERrsN,SAAU,CACRN,QAAS,0BACTC,QAAS,kDACTC,SAAU,8CACVC,QAAS,0BACTC,SAAU,8CACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,KACRC,KAAM,8BACNvL,EAAGq0N,EACH7oN,GAAI6oN,EACJl2N,EAAGk2N,EACH5oN,GAAI4oN,EACJ3oN,EAAG2oN,EACH1oN,GAAI0oN,EACJh2N,EAAGg2N,EACHzoN,GAAIyoN,EACJtoN,EAAGsoN,EACHroN,GAAIqoN,EACJpoN,EAAGooN,EACHnoN,GAAImoN,GAEN/4M,uBAAwB,8BACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,MAEO,MAFCA,EAGG3gB,EAAS,qBAQTA,CAEb,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,GAGP8F,cAAe,0IACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,6BAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,yCAAbnf,EACFmf,EACe,+CAAbnf,EACFmf,EAAO,GAAKA,EAAOA,EAAO,GACX,mCAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,2BACEA,EAAO,GACT,uCACEA,EAAO,GACT,6CACEA,EAAO,GACT,iCAEA,0BAEX,GAGJ,CAvHkG2U,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAItK,EAAS,CACXhC,EAAG,CAAC,qBAAsB,iBAC1BwL,GAAI,CAACnD,EAAS,cAAeA,EAAS,WACtClK,EAAG,CAAC,aAAc,YAClBsN,GAAI,CAACpD,EAAS,YAAaA,EAAS,WACpCqD,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACtD,EAAS,WAAYA,EAAS,UACnChK,EAAG,CAAC,YAAa,UACjBuN,GAAI,CAACvD,EAAS,WAAYA,EAAS,QACnC0D,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAAC3D,EAAS,cAAeA,EAAS,WACtC4D,EAAG,CAAC,aAAc,YAClBC,GAAI,CAAC7D,EAAS,YAAaA,EAAS,YAEtC,OAAOiE,EAAWtK,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,EACjD,CACcizN,EAAO31M,aAAa,WAAY,CAC5CvK,OAAQ,CACN8gN,WAAY,4EAA4EzgN,MAAM,KAC9FxQ,OAAQ,wIAAwIwQ,MAAM,KACtJO,SAAU,mBAEZb,YAAa,4DAA4DM,MAAM,KAC/E4gN,kBAAkB,EAClB77M,SAAU,uDAAuD/E,MAAM,KACvE8E,cAAe,qCAAqC9E,MAAM,KAC1D6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,iBACJD,IAAK,oBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNypN,KAAM,mCAERrsN,SAAU,CACRN,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,KACRC,KAAM,UACNvL,EAAGq0N,EACH7oN,GAAI6oN,EACJl2N,EAAGk2N,EACH5oN,GAAI4oN,EACJ3oN,EAAG2oN,EACH1oN,GAAI0oN,EACJh2N,EAAGg2N,EACHzoN,GAAIyoN,EACJtoN,EAAGsoN,EACHroN,GAAIqoN,EACJpoN,EAAGooN,EACHnoN,GAAImoN,GAEN/4M,uBAAwB,cACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,MAEO,MAFCA,EAGG3gB,EAAS,KAQTA,CAEb,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,GAGP8F,cAAe,+BACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,SAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,aAAbnf,EACFmf,EACe,aAAbnf,EACFmf,EAAO,GAAKA,EAAOA,EAAO,GACX,UAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,OACEA,EAAO,GACT,WACEA,EAAO,GACT,WACEA,EAAO,GACT,QAEA,MAEX,GAGJ,CAvHkG2U,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gdAAyFK,MAAM,KACvGN,YAAa,mUAAyEM,MAAM,KAC5F4gN,kBAAkB,EAClB77M,SAAU,mSAAwD/E,MAAM,KACxE8E,cAAe,qKAAmC9E,MAAM,KACxD6E,YAAa,iFAAqB7E,MAAM,KACxCtI,eAAgB,CACdK,GAAI,8CACJD,IAAK,iDACLE,EAAG,aACHC,GAAI,cACJC,IAAK,2DACLC,KAAM,kEAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,4CACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,oCACNvL,EAAG,8CACHwL,GAAI,oCACJrN,EAAG,8CACHsN,GAAI,oCACJC,EAAG,wCACHC,GAAI,8BACJtN,EAAG,wCACHuN,GAAI,8BACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EAGA6R,cAAe,gGACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,uBAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbnf,EACFmf,EACe,6BAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,6BAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,2BACEA,EAAO,GACT,2BAEA,oBAEX,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CApHkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,sXAA0EK,MAAM,KACxFN,YAAa,kSAA4DM,MAAM,KAC/E+E,SAAU,6LAAuC/E,MAAM,KACvD8E,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,mDAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,kCACN9O,EAAG,WACHq4N,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAERrsN,SAAU,CACRN,QAAS,4CACTC,QAAS,sCACTC,SAAU,qCACVC,QAAS,kDACTC,SAAU,qGACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,8BACRC,KAAM,8BACNvL,EAAG,0DACHwL,GAAI,oCACJrN,EAAG,qBACHsN,GAAI,8BACJC,EAAG,qBACHC,GAAI,SAAUtD,GACZ,OAAe,IAAXA,EACK,uCAEFA,EAAS,2BAClB,EACAhK,EAAG,qBACHuN,GAAI,SAAUvD,GACZ,OAAe,IAAXA,EACK,uCAEFA,EAAS,2BAClB,EACA0D,EAAG,2BACHC,GAAI,SAAU3D,GACZ,OAAe,IAAXA,EACK,6CAEFA,EAAS,uCAClB,EACA4D,EAAG,qBACHC,GAAI,SAAU7D,GACZ,OAAe,IAAXA,EACK,uCACEA,EAAS,KAAO,GAAgB,KAAXA,EACvBA,EAAS,sBAEXA,EAAS,2BAClB,GAEFkT,cAAe,qTACfZ,KAAM,SAAUla,GACd,MAAO,6HAA8B2J,KAAK3J,EAC5C,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,0DACEA,EAAO,GACT,iCACEA,EAAO,GACTnH,EAAU,kCAAW,sEACnBmH,EAAO,GACTnH,EAAU,4BAAU,sEAEpB,0BAEX,GAGJ,CAxFkG8b,CAAQ,EAAQ,G,mBCDzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEPjgN,EAAc,CAAC,iBAAQ,oCAAY,mCAAW,mCAAW,iBAAQ,uBAAS,uBAAS,iBAAQ,gDAAc,mCAAW,oCAAY,iDAChI0hN,EAAmB,CAAC,iBAAQ,uBAAS,mCAAW,mCAAW,iBAAQ,uBAAS,uBAAS,iBAAQ,uBAAS,mCAAW,iBAAQ,wBAClH3B,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,CACNnQ,OAAQ,8YAA8EwQ,MAAM,KAC5FygN,WAAY,sXAA0EzgN,MAAM,MAE9FN,YAAa,2PAA6DM,MAAM,KAChF+E,SAAU,6RAAuD/E,MAAM,KACvE8E,cAAe,+JAAkC9E,MAAM,KACvD6E,YAAa,iFAAqB7E,MAAM,KACxCtI,eAAgB,CACdK,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAER2H,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkBA,EAClB3hN,YAAa,yuBACbD,iBAAkB,yuBAClBshN,kBAAmB,6lBACnBC,uBAAwB,oRACxB5rN,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,WACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,8BACNvL,EAAG,2DACHwL,GAAI,oCACJrN,EAAG,wCACHsN,GAAI,8BACJC,EAAG,wCACHC,GAAI,8BACJtN,EAAG,kCACHuN,GAAI,wBACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EAGA6R,cAAe,gGACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,uBAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbnf,EACFmf,EACe,mCAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,uBAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,qBAEA,oBAEX,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA/HkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,SAAS4B,EAAU5rN,EAAQ+D,EAAehN,GACxC,IAAIkgB,EAASjX,EAAS,IACtB,OAAQjJ,GACN,IAAK,KAQH,OANEkgB,GADa,IAAXjX,EACQ,UACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,UAEA,UAGd,IAAK,IACH,OAAO+D,EAAgB,eAAiB,eAC1C,IAAK,KAQH,OANEkT,GADa,IAAXjX,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,SAEA,SAGd,IAAK,IACH,OAAO+D,EAAgB,YAAc,cACvC,IAAK,KAQH,OANEkT,GADa,IAAXjX,EACQ,MACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,OAEA,OAGd,IAAK,KAMH,OAJEiX,GADa,IAAXjX,EACQ,MAEA,OAGd,IAAK,KAQH,OANEiX,GADa,IAAXjX,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,UAEA,UAGd,IAAK,KAQH,OANEiX,GADa,IAAXjX,EACQ,SACU,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC/B,SAEA,SAIlB,CACSgqN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,CACNnQ,OAAQ,mHAAoGwQ,MAAM,KAClHygN,WAAY,+GAAgGzgN,MAAM,MAEpHN,YAAa,oEAA+DM,MAAM,KAClF4gN,kBAAkB,EAClB77M,SAAU,iEAA4D/E,MAAM,KAC5E8E,cAAe,0CAAqC9E,MAAM,KAC1D6E,YAAa,4BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,eACTC,QAAS,eACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,wBACT,KAAK,EACH,MAAO,uBACT,KAAK,EACH,MAAO,sBACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,kBAEb,EACAvQ,QAAS,oBACTC,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACH,MAAO,kCACT,KAAK,EACH,MAAO,iCACT,KAAK,EACH,MAAO,gCACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,4BAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNvL,EAAG,cACHwL,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAGuoN,EACHtoN,GAAIsoN,EACJ51N,EAAG,MACHuN,GAAIqoN,EACJloN,EAAG,SACHC,GAAIioN,EACJhoN,EAAG,SACHC,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnJkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,IAAI8C,EAAc,6FAAgE3iN,MAAM,KACxF,SAASyhN,EAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC7C,IAAI8sB,EAAM/wB,EACV,OAAQjJ,GACN,IAAK,IACH,OAAOkN,GAAYF,EAAgB,4BAAqB,6BAC1D,IAAK,KACH,OAAOgtB,GAAO9sB,GAAYF,GAAiB,gBAAe,iBAC5D,IAAK,IACH,MAAO,OAASE,GAAYF,EAAgB,QAAU,UACxD,IAAK,KACH,OAAOgtB,GAAO9sB,GAAYF,EAAgB,QAAU,UACtD,IAAK,IACH,MAAO,OAASE,GAAYF,EAAgB,UAAS,gBACvD,IAAK,KACH,OAAOgtB,GAAO9sB,GAAYF,EAAgB,UAAS,gBACrD,IAAK,IACH,MAAO,OAASE,GAAYF,EAAgB,OAAS,UACvD,IAAK,KACH,OAAOgtB,GAAO9sB,GAAYF,EAAgB,OAAS,UACrD,IAAK,IACH,MAAO,OAASE,GAAYF,EAAgB,YAAW,eACzD,IAAK,KACH,OAAOgtB,GAAO9sB,GAAYF,EAAgB,YAAW,eACvD,IAAK,IACH,MAAO,OAASE,GAAYF,EAAgB,SAAQ,WACtD,IAAK,KACH,OAAOgtB,GAAO9sB,GAAYF,EAAgB,SAAQ,WAEtD,MAAO,EACT,CACA,SAASyJ,EAAKvJ,GACZ,OAAQA,EAAW,GAAK,cAAa,IAAM6oN,EAAY5wN,KAAK4T,OAAS,YACvE,CACSk6M,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,4HAAoGK,MAAM,KAClHN,YAAa,gFAAiEM,MAAM,KACpF4gN,kBAAkB,EAClB77M,SAAU,6EAAsD/E,MAAM,KACtE8E,cAAe,yCAAgC9E,MAAM,KACrD6E,YAAa,qBAAqB7E,MAAM,KACxCtI,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAER4Q,cAAe,SACfZ,KAAM,SAAUla,GACd,MAAyC,MAAlCA,EAAM8Z,OAAO,GAAGxN,aACzB,EACA5J,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,IACS,IAAZmB,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,IAErC,EACApT,SAAU,CACRN,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACR,OAAOkO,EAAK1a,KAAKoJ,MAAM,EACzB,EACAqD,QAAS,oBACTC,SAAU,WACR,OAAOgO,EAAK1a,KAAKoJ,MAAM,EACzB,EACAuD,SAAU,KAEZqE,aAAc,CACZb,OAAQ,cACRC,KAAM,KACNvL,EAAGi0N,EACHzoN,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAGuoN,EACHtoN,GAAIsoN,EACJ51N,EAAG41N,EACHroN,GAAIqoN,EACJloN,EAAGkoN,EACHjoN,GAAIioN,EACJhoN,EAAGgoN,EACH/nN,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAvGkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,CACNnQ,OAAQ,kkBAA4GwQ,MAAM,KAC1HygN,WAAY,0fAAgGzgN,MAAM,MAEpHN,YAAa,sOAAkDM,MAAM,KACrE+E,SAAU,mVAAgE/E,MAAM,KAChF8E,cAAe,6IAA+B9E,MAAM,KACpD6E,YAAa,6IAA+B7E,MAAM,KAClDtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAER5C,SAAU,CACRN,QAAS,sCACTC,QAAS,gCACTE,QAAS,gCACTD,SAAU,WACR,MAAO,uDACT,EACAE,SAAU,WACR,MAAO,wFACT,EACAC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,8BACRC,KAAM,8BACNvL,EAAG,yFACHwL,GAAI,sDACJrN,EAAG,2BACHsN,GAAI,8BACJC,EAAG,qBACHC,GAAI,wBACJtN,EAAG,eACHuN,GAAI,kBACJG,EAAG,2BACHC,GAAI,8BACJC,EAAG,2BACHC,GAAI,+BAENqP,cAAe,0LACfZ,KAAM,SAAUla,GACd,MAAO,kGAAuB2J,KAAK3J,EACrC,EACA0C,SAAU,SAAUmf,GAClB,OAAIA,EAAO,EACF,6CACEA,EAAO,GACT,mDACEA,EAAO,GACT,6CAEA,kDAEX,EACAhH,uBAAwB,8CACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACH,OAAe,IAAX3gB,EACKA,EAAS,gBAEXA,EAAS,gBAClB,QACE,OAAOA,EAEb,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAxFkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,yFAAyFK,MAAM,KACvGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,6CAA6C/E,MAAM,KAC7D8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAER4Q,cAAe,wBACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,SAAbnf,EACKmf,EACe,UAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,SAAbnf,GAAoC,UAAbA,EACzBmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACH,OACEA,EAAQ,GACV,QACEA,EAAQ,GACV,OAEA,OAEX,EACAjS,SAAU,CACRN,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,eACNvL,EAAG,iBACHwL,GAAI,WACJrN,EAAG,UACHsN,GAAI,WACJC,EAAG,QACHC,GAAI,SACJtN,EAAG,SACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3EkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGA,SAASQ,EAAOvzN,GACd,OAAIA,EAAI,MAAQ,IAELA,EAAI,KAAO,CAIxB,CACA,SAAS20N,EAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC7C,IAAIgT,EAASjX,EAAS,IACtB,OAAQjJ,GACN,IAAK,IACH,OAAOgN,GAAiBE,EAAW,sBAAqB,sBAC1D,IAAK,KACH,OAAIumN,EAAOxqN,GACFiX,GAAUlT,GAAiBE,EAAW,cAAa,eAErDgT,EAAS,aAClB,IAAK,IACH,OAAOlT,EAAgB,eAAW,eACpC,IAAK,KACH,OAAIymN,EAAOxqN,GACFiX,GAAUlT,GAAiBE,EAAW,gBAAY,iBAChDF,EACFkT,EAAS,eAEXA,EAAS,eAClB,IAAK,KACH,OAAIuzM,EAAOxqN,GACFiX,GAAUlT,GAAiBE,EAAW,gBAAkB,iBAE1DgT,EAAS,cAClB,IAAK,IACH,OAAIlT,EACK,QAEFE,EAAW,MAAQ,OAC5B,IAAK,KACH,OAAIumN,EAAOxqN,GACL+D,EACKkT,EAAS,QAEXA,GAAUhT,EAAW,OAAS,YAC5BF,EACFkT,EAAS,QAEXA,GAAUhT,EAAW,MAAQ,QACtC,IAAK,IACH,OAAIF,EACK,gBAEFE,EAAW,cAAU,eAC9B,IAAK,KACH,OAAIumN,EAAOxqN,GACL+D,EACKkT,EAAS,gBAEXA,GAAUhT,EAAW,eAAW,iBAC9BF,EACFkT,EAAS,gBAEXA,GAAUhT,EAAW,cAAU,gBACxC,IAAK,IACH,OAAOF,GAAiBE,EAAW,QAAO,SAC5C,IAAK,KACH,OAAIumN,EAAOxqN,GACFiX,GAAUlT,GAAiBE,EAAW,QAAO,WAE/CgT,GAAUlT,GAAiBE,EAAW,QAAO,UAE1D,CACS+lN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wHAAoFK,MAAM,KAClGN,YAAa,oEAAkDM,MAAM,KACrE+E,SAAU,kGAAmF/E,MAAM,KACnG8E,cAAe,0CAA8B9E,MAAM,KACnD6E,YAAa,gCAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,uBACTC,SAAU,gBACVC,QAAS,uBACTC,SAAU,gCACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,uBACNvL,EAAGi0N,EACHzoN,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAG,cACHC,GAAIsoN,EACJ51N,EAAG41N,EACHroN,GAAIqoN,EACJloN,EAAGkoN,EACHjoN,GAAIioN,EACJhoN,EAAGgoN,EACH/nN,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA5HkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gGAAgGK,MAAM,KAC9GN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,0EAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,WACP,MAAO,WAAalD,KAAKyV,QAAU,EAAI,OAA0B,IAAjBzV,KAAKyV,QAAgB,IAAM,OAAS,KACtF,EACAtS,QAAS,WACP,MAAO,aAAenD,KAAKyV,QAAU,EAAI,OAA0B,IAAjBzV,KAAKyV,QAAgB,IAAM,OAAS,KACxF,EACArS,SAAU,WACR,MAAO,WAAapD,KAAKyV,QAAU,EAAI,OAA0B,IAAjBzV,KAAKyV,QAAgB,IAAM,OAAS,KACtF,EACApS,QAAS,WACP,MAAO,WAAarD,KAAKyV,QAAU,EAAI,OAA0B,IAAjBzV,KAAKyV,QAAgB,IAAM,OAAS,KACtF,EACAnS,SAAU,WACR,OACO,IADCtD,KAAK4T,MAEF,uBAAyB5T,KAAKyV,QAAU,EAAI,OAA0B,IAAjBzV,KAAKyV,QAAgB,IAAM,OAAS,MAEzF,uBAAyBzV,KAAKyV,QAAU,EAAI,OAA0B,IAAjBzV,KAAKyV,QAAgB,IAAM,OAAS,KAEtG,EACAlS,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SACRC,KAAM,QACNvL,EAAG,iBACHwL,GAAI,aACJrN,EAAG,YACHsN,GAAI,YACJC,EAAG,SACHC,GAAI,SACJtN,EAAG,YACHuN,GAAI,YACJC,EAAG,gBACHC,GAAI,eACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAtEkGwhB,CAAQ,EAAQ,G,mBCDzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,gGAAgGK,MAAM,KAC9GN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,0EAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACR,OACO,IADCtD,KAAK4T,MAEF,6BAEA,4BAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SAAUtL,GAChB,OAAQ,YAAYoK,KAAKpK,GAAK,MAAQ,MAAQ,IAAMA,CACtD,EACAuL,KAAM,QACNvL,EAAG,iBACHwL,GAAI,aACJrN,EAAG,YACHsN,GAAI,YACJC,EAAG,SACHC,GAAI,SACJtN,EAAG,YACHuN,GAAI,YACJG,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA9DkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCoR,KAAM,CAAC,CACLE,MAAO,aACPjI,OAAQ,EACRnoB,KAAM,eACNwwB,OAAQ,SACRzR,KAAM,KACL,CACDqR,MAAO,aACPC,MAAO,aACPlI,OAAQ,EACRnoB,KAAM,eACNwwB,OAAQ,SACRzR,KAAM,KACL,CACDqR,MAAO,aACPC,MAAO,aACPlI,OAAQ,EACRnoB,KAAM,eACNwwB,OAAQ,SACRzR,KAAM,KACL,CACDqR,MAAO,aACPC,MAAO,aACPlI,OAAQ,EACRnoB,KAAM,eACNwwB,OAAQ,SACRzR,KAAM,KACL,CACDqR,MAAO,aACPC,MAAO,aACPlI,OAAQ,EACRnoB,KAAM,eACNwwB,OAAQ,SACRzR,KAAM,KACL,CACDqR,MAAO,aACPC,MAAO,aACPlI,OAAQ,EACRnoB,KAAM,eACNwwB,OAAQ,KACRzR,KAAM,MACL,CACDqR,MAAO,aACPC,OAAO,IACPlI,OAAQ,EACRnoB,KAAM,qBACNwwB,OAAQ,KACRzR,KAAM,OAERy4M,oBAAqB,qBACrB1kM,oBAAqB,SAAUjwB,EAAOiJ,GACpC,MAAoB,WAAbA,EAAM,GAAa,EAAIkL,SAASlL,EAAM,IAAMjJ,EAAO,GAC5D,EACA0R,OAAQ,qGAAyCK,MAAM,KACvDN,YAAa,qGAAyCM,MAAM,KAC5D+E,SAAU,uIAA8B/E,MAAM,KAC9C8E,cAAe,mDAAgB9E,MAAM,KACrC6E,YAAa,mDAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCACN9O,EAAG,aACHq4N,GAAI,2BACJC,IAAK,iCACLC,KAAM,uCAER74M,cAAe,6BACfZ,KAAM,SAAUla,GACd,MAAiB,iBAAVA,CACT,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,eAEA,cAEX,EACAva,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,SAAUM,GAClB,OAAIA,EAAI4N,SAAWtR,KAAKsR,OACf,wBAEA,SAEX,EACAjO,QAAS,oBACTC,SAAU,SAAUI,GAClB,OAAI1D,KAAKsR,SAAW5N,EAAI4N,OACf,wBAEA,SAEX,EACA/N,SAAU,KAEZwT,uBAAwB,gBACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACH,OAAkB,IAAX3gB,EAAe,eAAOA,EAAS,SACxC,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAOA,EAAS,SAClB,QACE,OAAOA,EAEb,EACA8D,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNvL,EAAG,eACHwL,GAAI,WACJrN,EAAG,UACHsN,GAAI,WACJC,EAAG,gBACHC,GAAI,iBACJtN,EAAG,UACHuN,GAAI,WACJG,EAAG,gBACHC,GAAI,iBACJC,EAAG,UACHC,GAAI,aAIV,CA1IkG+qB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,yFAAyFK,MAAM,KACvGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,+CAA+C/E,MAAM,KAC/D8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAER4Q,cAAe,6BACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,WAAbnf,EACKmf,EACe,WAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,WAAbnf,GAAsC,UAAbA,EAC3Bmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACH,SACEA,EAAQ,GACV,SACEA,EAAQ,GACV,SAEA,OAEX,EACAjS,SAAU,CACRN,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,gBACRC,KAAM,uBACNvL,EAAG,kBACHwL,GAAI,WACJrN,EAAG,kBACHsN,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJtN,EAAG,WACHuN,GAAI,YACJG,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3EkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,whBAAqGK,MAAM,KACnHN,YAAa,sOAAkDM,MAAM,KACrE+E,SAAU,CACR07M,WAAY,mVAAgEzgN,MAAM,KAClFxQ,OAAQ,yVAAiEwQ,MAAM,KAC/EO,SAAU,mEAEZuE,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,+CACTC,QAAS,+CACTE,QAAS,qDACTD,SAAU,gEACVE,SAAU,kDACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SAAUtL,GAChB,OAAOA,EAAE2J,QAAQ,gIAAiC,SAAU0rN,EAAIC,EAAIC,GAClE,MAAc,WAAPA,EAAaD,EAAK,eAAOA,EAAKC,EAAK,cAC5C,GACF,EACAhqN,KAAM,SAAUvL,GACd,MAAI,2HAA4BoK,KAAKpK,GAC5BA,EAAE2J,QAAQ,mBAAU,mCAEzB,2BAAOS,KAAKpK,GACPA,EAAE2J,QAAQ,4BAAS,+CAErB3J,CACT,EACAA,EAAG,kFACHwL,GAAI,8BACJrN,EAAG,2BACHsN,GAAI,8BACJC,EAAG,iCACHC,GAAI,oCACJtN,EAAG,qBACHuN,GAAI,wBACJG,EAAG,qBACHC,GAAI,wBACJC,EAAG,2BACHC,GAAI,+BAENoP,uBAAwB,uDACxBhS,QAAS,SAAUjB,GACjB,OAAe,IAAXA,EACKA,EAEM,IAAXA,EACKA,EAAS,gBAEdA,EAAS,IAAMA,GAAU,KAAOA,EAAS,KAAO,GAAKA,EAAS,MAAQ,EACjE,gBAAQA,EAEVA,EAAS,SAClB,EACAwN,KAAM,CACJL,IAAK,EACLC,IAAK,IAIX,CA9EkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIO,EAAW,CACb,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,IAAK,iBAEEP,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wbAAqFK,MAAM,KACnGN,YAAa,sOAAkDM,MAAM,KACrE+E,SAAU,+SAA0D/E,MAAM,KAC1E8E,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,qEACTC,QAAS,qEACTC,SAAU,2CACVC,QAAS,+DACTC,SAAU,uHACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,0CACRC,KAAM,oCACNvL,EAAG,kFACHwL,GAAI,0CACJrN,EAAG,oDACHsN,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJtN,EAAG,wCACHuN,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAENoP,uBAAwB,sCACxBhS,QAAS,SAAUjB,GACjB,IAAIvH,EAAIuH,EAAS,GACftH,EAAIsH,GAAU,IAAM,IAAM,KAC5B,OAAOA,GAAUuqN,EAASvqN,IAAWuqN,EAAS9xN,IAAM8xN,EAAS7xN,GAC/D,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA/EkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gXAAyEK,MAAM,KACvFN,YAAa,gXAAyEM,MAAM,KAC5F+E,SAAU,yPAAiD/E,MAAM,KACjE8E,cAAe,2EAAoB9E,MAAM,KACzC6E,YAAa,2EAAoB7E,MAAM,KACvCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER4Q,cAAe,gEACfZ,KAAM,SAAUla,GACd,MAAiB,mCAAVA,CACT,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,iCAEA,gCAEX,EACAva,SAAU,CACRN,QAAS,2EACTC,QAAS,+DACTC,SAAU,qCACVC,QAAS,iFACTC,SAAU,oGACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,uBACRC,KAAM,uBACNvL,EAAG,uFACHwL,GAAI,0CACJrN,EAAG,6CACHsN,GAAI,8BACJC,EAAG,6CACHC,GAAI,8BACJtN,EAAG,6CACHuN,GAAI,8BACJG,EAAG,iCACHC,GAAI,kBACJC,EAAG,mDACHC,GAAI,qCAENoP,uBAAwB,sBACxBhS,QAAS,iBACTma,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EACAmM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnGkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,weAA6FK,MAAM,KAC3GN,YAAa,4XAA2EM,MAAM,KAC9F4gN,kBAAkB,EAClB77M,SAAU,+SAA0D/E,MAAM,KAC1E8E,cAAe,iLAAqC9E,MAAM,KAC1D6E,YAAa,mGAAwB7E,MAAM,KAC3CtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAER5C,SAAU,CACRN,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,kDACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,8BACRC,KAAM,oCACNvL,EAAG,4EACHwL,GAAI,kEACJrN,EAAG,0DACHsN,GAAI,oCACJC,EAAG,oDACHC,GAAI,8BACJtN,EAAG,8CACHuN,GAAI,wBACJG,EAAG,gEACHC,GAAI,0CACJC,EAAG,oDACHC,GAAI,+BAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EACA6R,cAAe,kKACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,yCAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,qDAAbnf,EACFmf,EACe,qDAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,6BAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,uCACEA,EAAO,GACT,mDACEA,EAAO,GACT,mDACEA,EAAO,GACT,2BAEA,sCAEX,EACAhH,uBAAwB,8BACxBhS,QAAS,SAAUjB,GACjB,OAAOA,EAAS,oBAClB,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAtHkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,qGAAyCK,MAAM,KACvDN,YAAa,qGAAyCM,MAAM,KAC5D+E,SAAU,uIAA8B/E,MAAM,KAC9C8E,cAAe,mDAAgB9E,MAAM,KACrC6E,YAAa,mDAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,cACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,sCACN9O,EAAG,cACHq4N,GAAI,0BACJC,IAAK,iCACLC,KAAM,uCAERrsN,SAAU,CACRN,QAAS,kBACTC,QAAS,kBACTC,SAAU,UACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,YACRC,KAAM,YACNvL,EAAG,gBACHwL,GAAI,WACJrN,EAAG,UACHsN,GAAI,WACJC,EAAG,sBACHC,GAAI,iBACJtN,EAAG,eACHuN,GAAI,WACJG,EAAG,gBACHC,GAAI,WACJC,EAAG,gBACHC,GAAI,YAENoP,uBAAwB,gCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAO3gB,EAAS,SAClB,IAAK,IACH,OAAOA,EAAS,SAClB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAClB,QACE,OAAOA,EAEb,EACAkT,cAAe,4BACfZ,KAAM,SAAUvR,GACd,MAAiB,iBAAVA,CACT,EACAjG,SAAU,SAAUmf,EAAMc,EAAQoyM,GAChC,OAAOlzM,EAAO,GAAK,eAAO,cAC5B,GAGJ,CAxEkG2U,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEPpgN,EAAS,CAAC,sEAAgB,iCAAS,iCAAS,iCAAS,iCAAS,mDAAY,uCAAU,qBAAO,6CAAW,sEAAgB,sEAAgB,uEAC/HkgN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaC,EACboF,SAAU,+YAA0E/E,MAAM,KAC1F8E,cAAe,qTAA2D9E,MAAM,KAChF6E,YAAa,mDAAgB7E,MAAM,KACnCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER4Q,cAAe,wFACfZ,KAAM,SAAUla,GACd,MAAO,6CAAU2J,KAAK3J,EACxB,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,6CAEA,4CAEX,EACAva,SAAU,CACRN,QAAS,uFACTC,QAAS,6FACTC,SAAU,uDACVC,QAAS,iFACTC,SAAU,uDACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,KACNvL,EAAG,wFACHwL,GAAI,oCACJrN,EAAG,gEACHsN,GAAI,0CACJC,EAAG,sEACHC,GAAI,gDACJtN,EAAG,8CACHuN,GAAI,wBACJG,EAAG,oDACHC,GAAI,8BACJC,EAAG,8CACHC,GAAI,yBAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,IAAGC,QAAQ,UAAM,IACnB,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,IAAGC,QAAQ,KAAM,SACnB,EACAkM,KAAM,CACJL,IAAK,EAELC,IAAK,KAKX,CAlGkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIO,EAAW,CACb,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,IAAK,iBAEEP,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,saAAkFK,MAAM,KAChGN,YAAa,wPAAqDM,MAAM,KACxE+E,SAAU,qTAA2D/E,MAAM,KAC3E8E,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,+DACTC,QAAS,+DACTC,SAAU,qCACVC,QAAS,+DACTC,SAAU,4IACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,0CACRC,KAAM,oCACNvL,EAAG,kFACHwL,GAAI,0CACJrN,EAAG,oDACHsN,GAAI,oCACJC,EAAG,8CACHC,GAAI,8BACJtN,EAAG,wCACHuN,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAENoP,uBAAwB,gEACxBhS,QAAS,SAAUjB,GACjB,IAAIvH,EAAIuH,EAAS,GACftH,EAAIsH,GAAU,IAAM,IAAM,KAC5B,OAAOA,GAAUuqN,EAASvqN,IAAWuqN,EAAS9xN,IAAM8xN,EAAS7xN,GAC/D,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA/EkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAItK,EAAS,CACX7D,EAAG,CAAC,aAAc,gBAClBuN,EAAG,CAAC,YAAa,eACjBrN,EAAG,CAAC,UAAW,aACf0N,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEjB,OAAOG,EAAgBpK,EAAO5C,GAAK,GAAK4C,EAAO5C,GAAK,EACtD,CACA,SAASq2N,EAAkBppN,GAEzB,OAAIqpN,EADSrpN,EAAOvD,OAAO,EAAGuD,EAAOgF,QAAQ,OAEpC,KAAOhF,EAET,MAAQA,CACjB,CACA,SAASspN,EAAgBtpN,GAEvB,OAAIqpN,EADSrpN,EAAOvD,OAAO,EAAGuD,EAAOgF,QAAQ,OAEpC,QAAUhF,EAEZ,SAAWA,CACpB,CAQA,SAASqpN,EAA4BrtN,GAEnC,GADAA,EAASuM,SAASvM,EAAQ,IACtBxE,MAAMwE,GACR,OAAO,EAET,GAAIA,EAAS,EAEX,OAAO,EACF,GAAIA,EAAS,GAElB,OAAI,GAAKA,GAAUA,GAAU,EAIxB,GAAIA,EAAS,IAAK,CAEvB,IAAI6qN,EAAY7qN,EAAS,GAEzB,OACSqtN,EADS,IAAdxC,EADW7qN,EAAS,GAIW6qN,EACrC,CAAO,GAAI7qN,EAAS,IAAO,CAEzB,KAAOA,GAAU,IACfA,GAAkB,GAEpB,OAAOqtN,EAA4BrtN,EACrC,CAGE,OAAOqtN,EADPrtN,GAAkB,IAGtB,CACSgqN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,6FAAuFK,MAAM,KACrGN,YAAa,+DAA+DM,MAAM,KAClF4gN,kBAAkB,EAClB77M,SAAU,4EAAmE/E,MAAM,KACnF8E,cAAe,uCAA8B9E,MAAM,KACnD6E,YAAa,gCAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,cACJD,IAAK,iBACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAER5C,SAAU,CACRN,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,sBACTC,SAAU,WAER,OAAQtD,KAAK4T,OACX,KAAK,EACL,KAAK,EACH,MAAO,0BACT,QACE,MAAO,yBAEb,GAEFhM,aAAc,CACZb,OAAQmqN,EACRlqN,KAAMoqN,EACN31N,EAAG,kBACHwL,GAAI,cACJrN,EAAGk2N,EACH5oN,GAAI,cACJC,EAAG2oN,EACH1oN,GAAI,aACJtN,EAAGg2N,EACHzoN,GAAI,UACJG,EAAGsoN,EACHroN,GAAI,cACJC,EAAGooN,EACHnoN,GAAI,WAENoP,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAjIkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wYAA6EK,MAAM,KAC3FN,YAAa,wYAA6EM,MAAM,KAChG+E,SAAU,uLAAsC/E,MAAM,KACtD8E,cAAe,2KAAoC9E,MAAM,KACzD6E,YAAa,qEAAmB7E,MAAM,KACtCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4CAER4Q,cAAe,wFACfZ,KAAM,SAAUla,GACd,MAAiB,yCAAVA,CACT,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,mDAEA,sCAEX,EACAva,SAAU,CACRN,QAAS,oEACTC,QAAS,0EACTC,SAAU,0EACVC,QAAS,sFACTC,SAAU,kGACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,yCACNvL,EAAG,mGACHwL,GAAI,0CACJrN,EAAG,6BACHsN,GAAI,8BACJC,EAAG,+CACHC,GAAI,gDACJtN,EAAG,uBACHuN,GAAI,wBACJG,EAAG,mCACHC,GAAI,oCACJC,EAAG,iBACHC,GAAI,mBAENoP,uBAAwB,8BACxBhS,QAAS,SAAUjB,GACjB,MAAO,qBAAQA,CACjB,GAGJ,CA7DkG4uB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIplN,EAAQ,CACVzB,GAAI,4CACJrN,EAAG,uCACHsN,GAAI,yCACJC,EAAG,gCACHC,GAAI,iCACJtN,EAAG,0BACHuN,GAAI,2BACJG,EAAG,2CACHC,GAAI,gDACJC,EAAG,wBACHC,GAAI,yBAEN,SAAS0pN,EAAiBvtN,EAAQ+D,EAAehN,EAAKkN,GACpD,OAAIF,EACK,uBAEAE,EAAW,iCAAoB,iBAE1C,CACA,SAASupN,EAAkBxtN,EAAQ+D,EAAehN,EAAKkN,GACrD,OAAOF,EAAgB2mN,EAAM3zN,GAAK,GAAKkN,EAAWymN,EAAM3zN,GAAK,GAAK2zN,EAAM3zN,GAAK,EAC/E,CACA,SAAS2vC,EAAQ1mC,GACf,OAAOA,EAAS,KAAO,GAAKA,EAAS,IAAMA,EAAS,EACtD,CACA,SAAS0qN,EAAM3zN,GACb,OAAO6N,EAAM7N,GAAKoT,MAAM,IAC1B,CACA,SAASyhN,EAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC7C,IAAIgT,EAASjX,EAAS,IACtB,OAAe,IAAXA,EACKiX,EAASu2M,EAAkBxtN,EAAQ+D,EAAehN,EAAI,GAAIkN,GACxDF,EACFkT,GAAUyvB,EAAQ1mC,GAAU0qN,EAAM3zN,GAAK,GAAK2zN,EAAM3zN,GAAK,IAE1DkN,EACKgT,EAASyzM,EAAM3zN,GAAK,GAEpBkgB,GAAUyvB,EAAQ1mC,GAAU0qN,EAAM3zN,GAAK,GAAK2zN,EAAM3zN,GAAK,GAGpE,CACSizN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,CACNnQ,OAAQ,iJAAoGwQ,MAAM,KAClHygN,WAAY,2HAAkGzgN,MAAM,KACpHO,SAAU,+DAEZb,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,CACRvV,OAAQ,sIAAoFwQ,MAAM,KAClGygN,WAAY,0GAA2FzgN,MAAM,KAC7GO,SAAU,cAEZuE,cAAe,wCAA8B9E,MAAM,KACnD6E,YAAa,sBAAiB7E,MAAM,KACpCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN9O,EAAG,aACHq4N,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAERrsN,SAAU,CACRN,QAAS,qBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,gBACNvL,EAAG41N,EACHpqN,GAAIyoN,EACJ91N,EAAG03N,EACHpqN,GAAIwoN,EACJvoN,EAAGmqN,EACHlqN,GAAIsoN,EACJ51N,EAAGw3N,EACHjqN,GAAIqoN,EACJloN,EAAG8pN,EACH7pN,GAAIioN,EACJhoN,EAAG4pN,EACH3pN,GAAI+nN,GAEN34M,uBAAwB,cACxBhS,QAAS,SAAUjB,GACjB,OAAOA,EAAS,MAClB,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA/GkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,IAAIplN,EAAQ,CACVzB,GAAI,0CAAqCgH,MAAM,KAC/CrU,EAAG,0DAAiCqU,MAAM,KAC1C/G,GAAI,0DAAiC+G,MAAM,KAC3C9G,EAAG,sCAAiC8G,MAAM,KAC1C7G,GAAI,sCAAiC6G,MAAM,KAC3CnU,EAAG,kCAA6BmU,MAAM,KACtC5G,GAAI,kCAA6B4G,MAAM,KACvCzG,EAAG,oEAAiCyG,MAAM,KAC1CxG,GAAI,oEAAiCwG,MAAM,KAC3CvG,EAAG,wBAAwBuG,MAAM,KACjCtG,GAAI,wBAAwBsG,MAAM,MAKpC,SAASxQ,EAAO+wN,EAAO1qN,EAAQ+D,GAC7B,OAAIA,EAEK/D,EAAS,KAAO,GAAKA,EAAS,MAAQ,GAAK0qN,EAAM,GAAKA,EAAM,GAI5D1qN,EAAS,KAAO,GAAKA,EAAS,MAAQ,GAAK0qN,EAAM,GAAKA,EAAM,EAEvE,CACA,SAASC,EAAuB3qN,EAAQ+D,EAAehN,GACrD,OAAOiJ,EAAS,IAAMrG,EAAOiL,EAAM7N,GAAMiJ,EAAQ+D,EACnD,CACA,SAAS0pN,EAAyBztN,EAAQ+D,EAAehN,GACvD,OAAO4C,EAAOiL,EAAM7N,GAAMiJ,EAAQ+D,EACpC,CACA,SAAS2pN,EAAgB1tN,EAAQ+D,GAC/B,OAAOA,EAAgB,sBAAmB,+BAC5C,CACSimN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gIAAuGK,MAAM,KACrHN,YAAa,4DAAkDM,MAAM,KACrE+E,SAAU,oFAA0E/E,MAAM,KAC1F8E,cAAe,kBAAkB9E,MAAM,KACvC6E,YAAa,kBAAkB7E,MAAM,KACrCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAER5C,SAAU,CACRN,QAAS,4BACTC,QAAS,yBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,+CACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,cACRC,KAAM,WACNvL,EAAG+1N,EACHvqN,GAAIwnN,EACJ70N,EAAG23N,EACHrqN,GAAIunN,EACJtnN,EAAGoqN,EACHnqN,GAAIqnN,EACJ30N,EAAGy3N,EACHlqN,GAAIonN,EACJjnN,EAAG+pN,EACH9pN,GAAIgnN,EACJ/mN,EAAG6pN,EACH5pN,GAAI8mN,GAEN13M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzFkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGA,IAAI2D,EAAa,CACfC,MAAO,CAELzqN,GAAI,CAAC,SAAU,UAAW,WAC1BrN,EAAG,CAAC,cAAe,iBACnBsN,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBI,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE3BgqN,uBAAwB,SAAU7tN,EAAQ8tN,GACxC,OAAkB,IAAX9tN,EAAe8tN,EAAQ,GAAK9tN,GAAU,GAAKA,GAAU,EAAI8tN,EAAQ,GAAKA,EAAQ,EACvF,EACAlC,UAAW,SAAU5rN,EAAQ+D,EAAehN,GAC1C,IAAI+2N,EAAUH,EAAWC,MAAM72N,GAC/B,OAAmB,IAAfA,EAAIrE,OACCqR,EAAgB+pN,EAAQ,GAAKA,EAAQ,GAErC9tN,EAAS,IAAM2tN,EAAWE,uBAAuB7tN,EAAQ8tN,EAEpE,GAEO9D,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,mFAAmFK,MAAM,KACjGN,YAAa,2DAA2DM,MAAM,KAC9E4gN,kBAAkB,EAClB77M,SAAU,iEAA4D/E,MAAM,KAC5E8E,cAAe,0CAAqC9E,MAAM,KAC1D6E,YAAa,4BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,eACTC,QAAS,gBACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,wBACT,KAAK,EACH,MAAO,uBACT,KAAK,EACH,MAAO,sBACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,kBAEb,EACAvQ,QAAS,mBACTC,SAAU,WAER,MADmB,CAAC,kCAA8B,sCAAkC,iCAA6B,iCAA6B,wCAA+B,gCAA4B,iCACrLtD,KAAK4T,MAC3B,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNvL,EAAG,mBACHwL,GAAIwqN,EAAW/B,UACf91N,EAAG63N,EAAW/B,UACdxoN,GAAIuqN,EAAW/B,UACfvoN,EAAGsqN,EAAW/B,UACdtoN,GAAIqqN,EAAW/B,UACf51N,EAAG,MACHuN,GAAIoqN,EAAW/B,UACfloN,EAAG,SACHC,GAAIgqN,EAAW/B,UACfhoN,EAAG,SACHC,GAAI8pN,EAAW/B,WAEjB34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAhGkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,2LAA8IK,MAAM,KAC5JN,YAAa,sEAAiEM,MAAM,KACpFH,YAAa,yCACbqhN,kBAAmB,yCACnBthN,iBAAkB,yCAClBuhN,uBAAwB,yCACxBp8M,SAAU,sEAAkD/E,MAAM,KAClE8E,cAAe,uCAAwB9E,MAAM,KAC7C6E,YAAa,uCAAwB7E,MAAM,KAC3CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAER5C,SAAU,CACRN,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,cACRC,KAAM,WACNvL,EAAG,wBACHwL,GAAI,iBACJrN,EAAG,YACHsN,GAAI,YACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,QACHuN,GAAI,QACJG,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,ocAAuFK,MAAM,KACrGN,YAAa,sOAAkDM,MAAM,KACrE+E,SAAU,mSAAwD/E,MAAM,KACxE8E,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,8EAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,mDACTC,QAAS,6CACTC,SAAU,wCACVC,QAAS,mDACTC,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,wFACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,wFAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,8BACNvL,EAAG,wFACHwL,GAAI,gDACJrN,EAAG,gEACHsN,GAAI,0CACJC,EAAG,8CACHC,GAAI,8BACJtN,EAAG,8CACHuN,GAAI,8BACJG,EAAG,0DACHC,GAAI,0CACJC,EAAG,gEACHC,GAAI,2CAENoP,uBAAwB,0FACxBhS,QAAS,SAAUjB,GACjB,IAAI6qN,EAAY7qN,EAAS,GACvB8qN,EAAc9qN,EAAS,IACzB,OAAe,IAAXA,EACKA,EAAS,gBACS,IAAhB8qN,EACF9qN,EAAS,gBACP8qN,EAAc,IAAMA,EAAc,GACpC9qN,EAAS,gBACO,IAAd6qN,EACF7qN,EAAS,gBACO,IAAd6qN,EACF7qN,EAAS,gBACO,IAAd6qN,GAAiC,IAAdA,EACrB7qN,EAAS,gBAETA,EAAS,eAEpB,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnFkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gdAAyFK,MAAM,KACvGN,YAAa,8TAAyEM,MAAM,KAC5F4gN,kBAAkB,EAClB77M,SAAU,mYAAwE/E,MAAM,KACxF8E,cAAe,qNAA2C9E,MAAM,KAChE6E,YAAa,mGAAwB7E,MAAM,KAC3CtI,eAAgB,CACdK,GAAI,uBACJD,IAAK,0BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oCACLC,KAAM,2CAER5C,SAAU,CACRN,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,kDACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,gDACRC,KAAM,oCACNvL,EAAG,4EACHwL,GAAI,sDACJrN,EAAG,sEACHsN,GAAI,sDACJC,EAAG,sEACHC,GAAI,sDACJtN,EAAG,oDACHuN,GAAI,oCACJG,EAAG,8CACHC,GAAI,8BACJC,EAAG,8CACHC,GAAI,+BAENqP,cAAe,mPACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,yCAAbnf,GAAyBmf,GAAQ,GAAkB,wEAAbnf,GAA4C,iEAAbA,EAChEmf,EAAO,GAEPA,CAEX,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,uCACEA,EAAO,GACT,uCACEA,EAAO,GACT,sEACEA,EAAO,GACT,+DAEA,sCAEX,GAGJ,CAtEkG2U,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,SAAS4B,EAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC7C,OAAQlN,GACN,IAAK,IACH,OAAOgN,EAAgB,4EAAkB,wFAC3C,IAAK,KACH,OAAO/D,GAAU+D,EAAgB,wCAAY,qDAC/C,IAAK,IACL,IAAK,KACH,OAAO/D,GAAU+D,EAAgB,kCAAW,+CAC9C,IAAK,IACL,IAAK,KACH,OAAO/D,GAAU+D,EAAgB,sBAAS,yCAC5C,IAAK,IACL,IAAK,KACH,OAAO/D,GAAU+D,EAAgB,4BAAU,yCAC7C,IAAK,IACL,IAAK,KACH,OAAO/D,GAAU+D,EAAgB,sBAAS,mCAC5C,IAAK,IACL,IAAK,KACH,OAAO/D,GAAU+D,EAAgB,sBAAS,yCAC5C,QACE,OAAO/D,EAEb,CACSgqN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,8+BAA+LK,MAAM,KAC7MN,YAAa,iQAA6EM,MAAM,KAChG4gN,kBAAkB,EAClB77M,SAAU,iOAA6C/E,MAAM,KAC7D8E,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,6FAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,6CACJC,IAAK,mDACLC,KAAM,0DAER4Q,cAAe,6BACfZ,KAAM,SAAUla,GACd,MAAiB,iBAAVA,CACT,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,eAEA,cAEX,EACAva,SAAU,CACRN,QAAS,kDACTC,QAAS,kDACTC,SAAU,qCACVC,QAAS,kDACTC,SAAU,6DACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,oCACRC,KAAM,8BACNvL,EAAGi0N,EACHzoN,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAGuoN,EACHtoN,GAAIsoN,EACJ51N,EAAG41N,EACHroN,GAAIqoN,EACJloN,EAAGkoN,EACHjoN,GAAIioN,EACJhoN,EAAGgoN,EACH/nN,GAAI+nN,GAEN34M,uBAAwB,mCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAO3gB,EAAS,4BAClB,QACE,OAAOA,EAEb,GAGJ,CA9FkG4uB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAET,SAAS6D,EAAe/tN,EAAQ+D,EAAeC,EAAQC,GACrD,IAAIpE,EAAS,GACb,GAAIkE,EACF,OAAQC,GACN,IAAK,IACHnE,EAAS,0DACT,MACF,IAAK,KACHA,EAAS,oCACT,MACF,IAAK,IACHA,EAAS,8CACT,MACF,IAAK,KACHA,EAAS,0CACT,MACF,IAAK,IACHA,EAAS,kCACT,MACF,IAAK,KACHA,EAAS,wBACT,MACF,IAAK,IACHA,EAAS,wCACT,MACF,IAAK,KACHA,EAAS,8BACT,MACF,IAAK,IACHA,EAAS,8CACT,MACF,IAAK,KACHA,EAAS,oCACT,MACF,IAAK,IACHA,EAAS,wCACT,MACF,IAAK,KACHA,EAAS,yCAIb,OAAQmE,GACN,IAAK,IACHnE,EAAS,sEACT,MACF,IAAK,KACHA,EAAS,gDACT,MACF,IAAK,IACHA,EAAS,0DACT,MACF,IAAK,KACHA,EAAS,gDACT,MACF,IAAK,IACHA,EAAS,8CACT,MACF,IAAK,KACHA,EAAS,oCACT,MACF,IAAK,IACHA,EAAS,oDACT,MACF,IAAK,KACHA,EAAS,0CACT,MACF,IAAK,IACHA,EAAS,gEACT,MACF,IAAK,KACHA,EAAS,sDACT,MACF,IAAK,IACHA,EAAS,oDACT,MACF,IAAK,KACHA,EAAS,0CAIf,OAAOA,EAAOyB,QAAQ,MAAOtB,EAC/B,CACSgqN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,0cAAwFK,MAAM,KACtGN,YAAa,8VAAgFM,MAAM,KACnG4gN,kBAAkB,EAClB77M,SAAU,6RAAuD/E,MAAM,KACvE8E,cAAe,+JAAkC9E,MAAM,KACvD6E,YAAa,iFAAqB7E,MAAM,KACxCtI,eAAgB,CACdK,GAAI,wCACJD,IAAK,2CACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qDACLC,KAAM,4DAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,sCACTC,SAAU,WACVC,QAAS,0BACTC,SAAU,4CACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,mCACRC,KAAM,yCACNvL,EAAGo2N,EACH5qN,GAAI4qN,EACJj4N,EAAGi4N,EACH3qN,GAAI2qN,EACJ1qN,EAAG0qN,EACHzqN,GAAIyqN,EACJ/3N,EAAG+3N,EACHxqN,GAAIwqN,EACJrqN,EAAGqqN,EACHpqN,GAAIoqN,EACJnqN,EAAGmqN,EACHlqN,GAAIkqN,GAEN3yM,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EACA6R,cAAe,2LACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,mCAAbnf,GAAqC,mCAAbA,EACnBmf,EACe,yCAAbnf,GAAsC,qDAAbA,GAAwC,yCAAbA,EACtDmf,GAAQ,GAAKA,EAAOA,EAAO,QAD7B,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,GAAQ,GAAKA,EAAO,EACf,iCACEA,EAAO,GACT,iCACEA,EAAO,GACT,uCACEA,EAAO,GACT,mDAEA,sCAEX,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAjMkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,oFAAoFK,MAAM,KAClGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,6CAA6C/E,MAAM,KAC7D8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAER4Q,cAAe,8BACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,SAAbnf,EACKmf,EACe,cAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,WAAbnf,GAAsC,UAAbA,EAC3Bmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACH,OACEA,EAAQ,GACV,YACEA,EAAQ,GACV,SAEA,OAEX,EACAjS,SAAU,CACRN,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,gBACNvL,EAAG,gBACHwL,GAAI,UACJrN,EAAG,UACHsN,GAAI,WACJC,EAAG,QACHC,GAAI,SACJtN,EAAG,SACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3EkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,oFAAoFK,MAAM,KAClGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,6CAA6C/E,MAAM,KAC7D8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAER4Q,cAAe,8BACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,SAAbnf,EACKmf,EACe,cAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,WAAbnf,GAAsC,UAAbA,EAC3Bmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACH,OACEA,EAAQ,GACV,YACEA,EAAQ,GACV,SAEA,OAEX,EACAjS,SAAU,CACRN,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,gBACNvL,EAAG,gBACHwL,GAAI,UACJrN,EAAG,UACHsN,GAAI,WACJC,EAAG,QACHC,GAAI,SACJtN,EAAG,SACHuN,GAAI,UACJG,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3EkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,kGAAwFK,MAAM,KACtGN,YAAa,4DAAkDM,MAAM,KACrE+E,SAAU,0FAAiE/E,MAAM,KACjF8E,cAAe,6CAA8B9E,MAAM,KACnD6E,YAAa,sCAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,iBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,0BACTC,SAAU,iCACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,aACRC,KAAM,SACNvL,EAAG,eACHwL,GAAI,aACJrN,EAAG,SACHsN,GAAI,YACJC,EAAG,cACHC,GAAI,kBACJtN,EAAG,eACHuN,GAAI,iBACJG,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArDkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,4dAA2FK,MAAM,KACzGN,YAAa,4OAAmDM,MAAM,KACtE+E,SAAU,mSAAwD/E,MAAM,KACxE8E,cAAe,qHAA2B9E,MAAM,KAChD6E,YAAa,qHAA2B7E,MAAM,KAC9CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,gDACTC,QAAS,6EACTC,SAAU,+BACVC,QAAS,sDACTC,SAAU,8FACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,6DACRC,KAAM,yEACNvL,EAAG,wFACHwL,GAAI,gDACJrN,EAAG,mDACHsN,GAAI,oCACJC,EAAG,6CACHC,GAAI,8BACJtN,EAAG,uCACHuN,GAAI,wBACJG,EAAG,2BACHC,GAAI,YACJC,EAAG,6CACHC,GAAI,+BAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EACAmM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArFkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,qFAAqFK,MAAM,KACnGN,YAAa,6DAA6DM,MAAM,KAChF4gN,kBAAkB,EAClB77M,SAAU,2DAAqD/E,MAAM,KACrE8E,cAAe,oCAA8B9E,MAAM,KACnD6E,YAAa,6BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAER5C,SAAU,CACRN,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,0BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNvL,EAAG,gBACHwL,GAAI,cACJrN,EAAG,aACHsN,GAAI,cACJC,EAAG,UACHC,GAAI,WACJtN,EAAG,SACHuN,GAAI,WACJC,EAAG,SACHC,GAAI,UACJC,EAAG,cACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAENoP,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCDzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,ocAAuFK,MAAM,KACrGN,YAAa,uTAAuEM,MAAM,KAC1F4gN,kBAAkB,EAClB77M,SAAU,mSAAwD/E,MAAM,KACxE8E,cAAe,4KAA0C9E,MAAM,KAC/D6E,YAAa,wFAA4B7E,MAAM,KAC/CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,wCACJD,IAAK,2CACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qDACLC,KAAM,4DAER8Y,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EACA6R,cAAe,wHACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,6BAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,mCAAbnf,EACFmf,EACe,yCAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,6BAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,uCACEA,EAAO,GACT,2BAEA,0BAEX,EACAva,SAAU,CACRN,QAAS,oBACTC,QAAS,gCACTC,SAAU,8CACVC,QAAS,gCACTC,SAAU,wCACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,iBACRC,KAAM,oCACNvL,EAAG,oDACHwL,GAAI,gDACJrN,EAAG,8CACHsN,GAAI,oCACJC,EAAG,8CACHC,GAAI,oCACJtN,EAAG,kCACHuN,GAAI,wBACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,+BAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnHkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,IAAI4C,EAAsB,6DAA6DziN,MAAM,KAC3F0iN,EAAyB,kDAAkD1iN,MAAM,KACjFF,EAAc,CAAC,QAAS,QAAS,iBAAkB,QAAS,SAAU,cAAe,cAAe,QAAS,QAAS,QAAS,QAAS,SACxID,EAAc,qKACPggN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,0FAA0FK,MAAM,KACxGN,YAAa,SAAU/T,EAAG6D,GACxB,OAAK7D,EAEM,QAAQiM,KAAKpI,GACfkzN,EAAuB/2N,EAAEsQ,SAEzBwmN,EAAoB92N,EAAEsQ,SAJtBwmN,CAMX,EACA5iN,YAAaA,EACbD,iBAAkBC,EAClBqhN,kBAAmB,4FACnBC,uBAAwB,mFACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,6DAA6D/E,MAAM,KAC7E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,UACRC,KAAM,aACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAG,mBACHsN,GAAI,aACJC,EAAG,gBACHC,GAAI,SACJtN,EAAG,gBACHuN,GAAI,WACJC,EAAG,iBACHC,GAAI,WACJC,EAAG,kBACHC,GAAI,aACJC,EAAG,iBACHC,GAAI,WAENoP,uBAAwB,kBACxBhS,QAAS,SAAUjB,GACjB,OAAOA,GAAqB,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAC1E,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA7EkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAI4C,EAAsB,6DAA6DziN,MAAM,KAC3F0iN,EAAyB,kDAAkD1iN,MAAM,KACjFF,EAAc,CAAC,QAAS,QAAS,iBAAkB,QAAS,SAAU,cAAe,cAAe,QAAS,QAAS,QAAS,QAAS,SACxID,EAAc,qKACLggN,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,0FAA0FK,MAAM,KACxGN,YAAa,SAAU/T,EAAG6D,GACxB,OAAK7D,EAEM,QAAQiM,KAAKpI,GACfkzN,EAAuB/2N,EAAEsQ,SAEzBwmN,EAAoB92N,EAAEsQ,SAJtBwmN,CAMX,EACA5iN,YAAaA,EACbD,iBAAkBC,EAClBqhN,kBAAmB,4FACnBC,uBAAwB,mFACxBrhN,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,6DAA6D/E,MAAM,KAC7E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,UACRC,KAAM,aACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAG,mBACHsN,GAAI,aACJC,EAAG,gBACHC,GAAI,SACJtN,EAAG,gBACHuN,GAAI,WACJG,EAAG,kBACHC,GAAI,aACJC,EAAG,iBACHC,GAAI,WAENoP,uBAAwB,kBACxBhS,QAAS,SAAUjB,GACjB,OAAOA,GAAqB,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAC1E,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3EkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,qFAAqFK,MAAM,KACnGN,YAAa,6DAA6DM,MAAM,KAChF4gN,kBAAkB,EAClB77M,SAAU,wDAAqD/E,MAAM,KACrE8E,cAAe,kCAA+B9E,MAAM,KACpD6E,YAAa,0BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,uBACTC,SAAU,sCACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNvL,EAAG,eACHwL,GAAI,YACJrN,EAAG,aACHsN,GAAI,YACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,UACHuN,GAAI,WACJC,EAAG,UACHC,GAAI,WACJC,EAAG,eACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAENoP,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGYA,EAAO31M,aAAa,SAAU,CACxCvK,OAAQ,CACN8gN,WAAY,iGAAqFzgN,MAAM,KACvGxQ,OAAQ,kIAAsHwQ,MAAM,KACpIO,SAAU,mBAEZb,YAAa,kEAA+DM,MAAM,KAClF4gN,kBAAkB,EAClB77M,SAAU,iEAA2D/E,MAAM,KAC3E8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJypN,GAAI,aACJxpN,IAAK,4BACLypN,IAAK,mBACLxpN,KAAM,iCACNypN,KAAM,wBAERrsN,SAAU,CACRN,QAAS,gBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,eACRC,KAAM,QACNvL,EAAG,gBACHwL,GAAI,cACJrN,EAAG,aACHsN,GAAI,aACJC,EAAG,UACHC,GAAI,UACJtN,EAAG,UACHuN,GAAI,WACJG,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAENoP,uBAAwB,wBACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,IAAI9gB,EAAoB,IAAXG,EAAe,IAAiB,IAAXA,EAAe,IAAiB,IAAXA,EAAe,IAAiB,IAAXA,EAAe,IAAM,OAIjG,MAHe,MAAX2gB,GAA6B,MAAXA,IACpB9gB,EAAS,KAEJG,EAASH,CAClB,EACA2N,KAAM,CACJL,IAAK,EAELC,IAAK,IAIX,CAnEkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEEF,EAAO31M,aAAa,QAAS,CAEtCvK,OAAQ,8VAAsEK,MAAM,KACpFN,YAAa,8VAAsEM,MAAM,KACzF+E,SAAU,ySAAyD/E,MAAM,KACzE8E,cAAe,yJAAiC9E,MAAM,KACtD6E,YAAa,yJAAiC7E,MAAM,KACpDtI,eAAgB,CACdK,GAAI,4BACJD,IAAK,+BACLE,EAAG,aACHC,GAAI,cACJC,IAAK,yCACLC,KAAM,gDAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,sCACVC,QAAS,oBACTC,SAAU,4CACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,8BACRC,KAAM,oCACNvL,EAAG,oDACHwL,GAAI,oCACJrN,EAAG,wCACHsN,GAAI,8BACJC,EAAG,8CACHC,GAAI,8BACJtN,EAAG,wCACHuN,GAAI,wBACJG,EAAG,oDACHC,GAAI,oCACJC,EAAG,wCACHC,GAAI,yBAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EAGA6R,cAAe,4GACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,uBAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbnf,EACFmf,EACe,yCAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,6BAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,uCACEA,EAAO,GACT,2BAEA,oBAEX,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CApHkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIgE,EAAmB,iIAAmG7jN,MAAM,KAC9H8jN,EAAmB,+GAAqG9jN,MAAM,KAC9HF,EAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,aAAS,QAAS,SACpH,SAASugN,EAAOvzN,GACd,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,KAAO,CACzD,CACA,SAAS20N,EAAU5rN,EAAQ+D,EAAehN,GACxC,IAAIkgB,EAASjX,EAAS,IACtB,OAAQjJ,GACN,IAAK,KACH,OAAOkgB,GAAUuzM,EAAOxqN,GAAU,UAAY,UAChD,IAAK,IACH,OAAO+D,EAAgB,SAAW,cACpC,IAAK,KACH,OAAOkT,GAAUuzM,EAAOxqN,GAAU,SAAW,SAC/C,IAAK,IACH,OAAO+D,EAAgB,UAAY,eACrC,IAAK,KACH,OAAOkT,GAAUuzM,EAAOxqN,GAAU,UAAY,UAChD,IAAK,KACH,OAAOiX,GAAUuzM,EAAOxqN,GAAU,WAAa,WACjD,IAAK,KACH,OAAOiX,GAAUuzM,EAAOxqN,GAAU,gBAAa,iBACjD,IAAK,KACH,OAAOiX,GAAUuzM,EAAOxqN,GAAU,OAAS,OAEjD,CACSgqN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,SAAUqiN,EAAgBxyN,GAChC,OAAKwyN,EAEM,SAASpqN,KAAKpI,GAChBs0N,EAAiB9B,EAAe/lN,SAEhC4nN,EAAiB7B,EAAe/lN,SAJhC4nN,CAMX,EACAnkN,YAAa,uDAAkDM,MAAM,KACrEF,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAClBiF,SAAU,4EAA6D/E,MAAM,KAC7E8E,cAAe,gCAA2B9E,MAAM,KAChD6E,YAAa,4BAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,mBACTC,QAAS,eACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,0BACT,KAAK,EACH,MAAO,mBACT,KAAK,EACH,MAAO,2BACT,KAAK,EACH,MAAO,uBACT,QACE,MAAO,kBAEb,EACAvQ,QAAS,iBACTC,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACH,MAAO,2CACT,KAAK,EACH,MAAO,4CACT,KAAK,EACH,MAAO,wCACT,QACE,MAAO,8BAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNvL,EAAG,eACHwL,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAGuoN,EACHtoN,GAAIsoN,EACJ51N,EAAG,eACHuN,GAAI,SACJC,EAAG,eACHC,GAAImoN,EACJloN,EAAG,eACHC,GAAIioN,EACJhoN,EAAG,MACHC,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArHkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,8FAA2FK,MAAM,KACzGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,uFAAiF/E,MAAM,KACjG8E,cAAe,iCAA8B9E,MAAM,KACnD6E,YAAa,yCAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAER5C,SAAU,CACRN,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACR,OAAsB,IAAftD,KAAK4T,OAA8B,IAAf5T,KAAK4T,MAAc,8BAC5C,6BACJ,EAEArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNvL,EAAG,WACHwL,GAAI,cACJrN,EAAG,YACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,SACHuN,GAAI,UACJC,EAAG,aACHC,GAAI,aACJC,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAENoP,uBAAwB,cACxBhS,QAAS,SACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA5DkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,8FAA2FK,MAAM,KACzGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,uFAAiF/E,MAAM,KACjG8E,cAAe,iCAA8B9E,MAAM,KACnD6E,YAAa,yCAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,6CAER5C,SAAU,CACRN,QAAS,kBACTC,QAAS,uBACTC,SAAU,kBACVC,QAAS,mBACTC,SAAU,WACR,OAAsB,IAAftD,KAAK4T,OAA8B,IAAf5T,KAAK4T,MAAc,8BAC5C,6BACJ,EAEArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,WACNvL,EAAG,kBACHwL,GAAI,cACJrN,EAAG,YACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,WACJtN,EAAG,SACHuN,GAAI,UACJG,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAENoP,uBAAwB,cACxBhS,QAAS,SACTU,YAAa,oBAGjB,CArDkGitB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGA,SAASW,EAAuB3qN,EAAQ+D,EAAehN,GACrD,IASE4mB,EAAY,IAId,OAHI3d,EAAS,KAAO,IAAMA,GAAU,KAAOA,EAAS,MAAQ,KAC1D2d,EAAY,QAEP3d,EAAS2d,EAbH,CACTxa,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJE,GAAI,yBACJE,GAAI,OACJE,GAAI,OAM2B9M,EACrC,CACSizN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,oGAAoGK,MAAM,KAClHN,YAAa,+DAA+DM,MAAM,KAClF4gN,kBAAkB,EAClB77M,SAAU,yEAAkD/E,MAAM,KAClE8E,cAAe,iCAA8B9E,MAAM,KACnD6E,YAAa,0BAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,cACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,qBACNvL,EAAG,oBACHwL,GAAIwnN,EACJ70N,EAAG,WACHsN,GAAIunN,EACJtnN,EAAG,aACHC,GAAIqnN,EACJ30N,EAAG,OACHuN,GAAIonN,EACJnnN,EAAG,gCACHC,GAAIknN,EACJjnN,EAAG,cACHC,GAAIgnN,EACJ/mN,EAAG,QACHC,GAAI8mN,GAENn9M,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAtEkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,SAASQ,EAAOC,EAAM15L,GACpB,IAAI25L,EAAQD,EAAKtgN,MAAM,KACvB,OAAO4mB,EAAM,KAAO,GAAKA,EAAM,MAAQ,GAAK25L,EAAM,GAAK35L,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAAM25L,EAAM,GAAKA,EAAM,EAClJ,CACA,SAASC,EAAuB3qN,EAAQ+D,EAAehN,GAUrD,MAAY,MAARA,EACKgN,EAAgB,uCAAW,uCAE3B/D,EAAS,IAAMwqN,EAZX,CACXrnN,GAAIY,EAAgB,6HAA2B,6HAC/CX,GAAIW,EAAgB,2GAAwB,2GAC5CT,GAAI,6EACJC,GAAI,uEACJE,GAAI,iHACJE,GAAI,iHACJE,GAAI,kEAKgC9M,IAAOiJ,EAE/C,CACA,IAAIiK,EAAc,CAAC,uBAAS,uBAAS,uBAAS,uBAAS,+BAAY,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,wBAKhH+/M,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,CACNnQ,OAAQ,kbAAoFwQ,MAAM,KAClGygN,WAAY,saAAkFzgN,MAAM,MAEtGN,YAAa,CAEXlQ,OAAQ,6QAAgEwQ,MAAM,KAC9EygN,WAAY,kRAAgEzgN,MAAM,MAEpF+E,SAAU,CACR07M,WAAY,mVAAgEzgN,MAAM,KAClFxQ,OAAQ,mVAAgEwQ,MAAM,KAC9EO,SAAU,0JAEZuE,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,6FAAuB7E,MAAM,KAC1CF,YAAaA,EACbyhN,gBAAiBzhN,EACjB0hN,iBAAkB1hN,EAElBD,YAAa,+wBAEbD,iBAAkB,+wBAElBshN,kBAAmB,wgBAEnBC,uBAAwB,8TACxBzpN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAER5C,SAAU,CACRN,QAAS,0DACTC,QAAS,oDACTE,QAAS,8CACTD,SAAU,SAAUM,GAClB,GAAIA,EAAI4N,SAAWtR,KAAKsR,OActB,OAAmB,IAAftR,KAAK4T,MACA,mCAEA,6BAhBT,OAAQ5T,KAAK4T,OACX,KAAK,EACH,MAAO,oFACT,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,oFACT,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,oFASf,EACAtQ,SAAU,SAAUI,GAClB,GAAIA,EAAI4N,SAAWtR,KAAKsR,OActB,OAAmB,IAAftR,KAAK4T,MACA,mCAEA,6BAhBT,OAAQ5T,KAAK4T,OACX,KAAK,EACH,MAAO,wEACT,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,wEACT,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,wEASf,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,oCACRC,KAAM,oCACNvL,EAAG,8FACHwL,GAAIwnN,EACJ70N,EAAG60N,EACHvnN,GAAIunN,EACJtnN,EAAG,qBACHC,GAAIqnN,EACJ30N,EAAG,2BACHuN,GAAIonN,EACJnnN,EAAG,uCACHC,GAAIknN,EACJjnN,EAAG,iCACHC,GAAIgnN,EACJ/mN,EAAG,qBACHC,GAAI8mN,GAENz3M,cAAe,6GACfZ,KAAM,SAAUla,GACd,MAAO,8DAAiB2J,KAAK3J,EAC/B,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,2BACEA,EAAO,GACT,2BACEA,EAAO,GACT,qBAEA,sCAEX,EACAhH,uBAAwB,uCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAO3gB,EAAS,UAClB,IAAK,IACH,OAAOA,EAAS,gBAClB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,UAClB,QACE,OAAOA,EAEb,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA7KkGwhB,CAAQ,EAAQ,G,mBCDzG,SAAUo7L,GACjB,aAGA,IAAIlgN,EAAS,CAAC,iCAAS,6CAAW,2BAAQ,iCAAS,qBAAO,qBAAO,uCAAU,2BAAQ,6CAAW,uCAAU,iCAAS,kCAC/G6S,EAAO,CAAC,qBAAO,2BAAQ,iCAAS,2BAAQ,2BAAQ,qBAAO,4BAChDqtM,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaC,EACboF,SAAUyN,EACV1N,cAAe0N,EACf3N,YAAa2N,EACb9a,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,gCAER4Q,cAAe,wCACfZ,KAAM,SAAUla,GACd,MAAO,uBAAUA,CACnB,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,qBAEF,oBACT,EACAva,SAAU,CACRN,QAAS,oBACTC,QAAS,sCACTC,SAAU,2EACVC,QAAS,sCACTC,SAAU,mFACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,kBACNvL,EAAG,oDACHwL,GAAI,oCACJrN,EAAG,kCACHsN,GAAI,wBACJC,EAAG,wCACHC,GAAI,8BACJtN,EAAG,8CACHuN,GAAI,oCACJG,EAAG,8CACHC,GAAI,oCACJC,EAAG,kCACHC,GAAI,yBAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,UAAM,IAC9B,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,KAAM,SAC9B,EACAkM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArEkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wNAAmJK,MAAM,KACjKN,YAAa,oFAA6DM,MAAM,KAChF+E,SAAU,gGAA6E/E,MAAM,KAC7F8E,cAAe,2CAAmC9E,MAAM,KACxD6E,YAAa,gBAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAER5C,SAAU,CACRN,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,iBACRC,KAAM,gBACNvL,EAAG,mBACHwL,GAAI,eACJrN,EAAG,eACHsN,GAAI,cACJC,EAAG,cACHC,GAAI,aACJtN,EAAG,cACHuN,GAAI,cACJG,EAAG,gBACHC,GAAI,cACJC,EAAG,aACHC,GAAI,YAENoP,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAKSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,sgBAAkGK,MAAM,KAChHN,YAAa,0QAAwDM,MAAM,KAC3E+E,SAAU,mVAAgE/E,MAAM,KAChF8E,cAAe,mJAAgC9E,MAAM,KACrD6E,YAAa,iFAAqB7E,MAAM,KACxCmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,0DAER5C,SAAU,CACRN,QAAS,4BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,kCACTC,SAAU,yDACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,6BACRC,KAAM,oCACNvL,EAAG,sEACHwL,GAAI,oCACJrN,EAAG,yDACHsN,GAAI,sDACJC,EAAG,qBACHC,GAAI,wBACJtN,EAAG,2BACHuN,GAAI,wBACJG,EAAG,2BACHC,GAAI,wBACJC,EAAG,qBACHC,GAAI,yBAENoP,uBAAwB,mCACxBhS,QAAS,SAAUjB,GACjB,OAAOA,EAAS,2BAClB,EACAkT,cAAe,iHACfZ,KAAM,SAAUla,GACd,MAAiB,mBAAVA,GAA8B,0CAAVA,CAC7B,EACA0C,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACHmB,EAAU,iBAAS,wCAEnBA,EAAU,uBAAU,uCAE/B,GAGJ,CA/DkG8b,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,IAAIlgN,EAAS,yGAAoFK,MAAM,KACrGN,EAAc,2DAAkDM,MAAM,KACxE,SAASqgN,EAAOvzN,GACd,OAAOA,EAAI,GAAKA,EAAI,CACtB,CACA,SAAS20N,EAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC7C,IAAIgT,EAASjX,EAAS,IACtB,OAAQjJ,GACN,IAAK,IAEH,OAAOgN,GAAiBE,EAAW,mBAAe,mBACpD,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,UAAY,aAEvCiX,EAAS,YAEpB,IAAK,IAEH,OAAOlT,EAAgB,YAAWE,EAAW,YAAW,aAC1D,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,YAAW,YAEtCiX,EAAS,cAEpB,IAAK,IAEH,OAAOlT,EAAgB,SAAWE,EAAW,SAAW,UAC1D,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,SAAW,YAEtCiX,EAAS,WAEpB,IAAK,IAEH,OAAOlT,GAAiBE,EAAW,WAAQ,YAC7C,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,MAAQ,UAEnCiX,EAAS,aAEpB,IAAK,IAEH,OAAOlT,GAAiBE,EAAW,SAAW,WAChD,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,UAAY,YAEvCiX,EAAS,WAEpB,IAAK,IAEH,OAAOlT,GAAiBE,EAAW,MAAQ,QAC7C,IAAK,KAEH,OAAIF,GAAiBE,EACZgT,GAAUuzM,EAAOxqN,GAAU,OAAS,SAEpCiX,EAAS,QAGxB,CACS+yM,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaA,EACbqF,SAAU,gEAAsD/E,MAAM,KACtE8E,cAAe,4BAAuB9E,MAAM,KAC5C6E,YAAa,4BAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,cACTC,QAAS,gBACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,uBACT,KAAK,EACL,KAAK,EACH,MAAO,kBACT,KAAK,EACH,MAAO,kBACT,KAAK,EACH,MAAO,yBACT,KAAK,EACH,MAAO,kBACT,KAAK,EACH,MAAO,kBAEb,EACAvQ,QAAS,oBACTC,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACH,MAAO,+BACT,KAAK,EACL,KAAK,EAIL,KAAK,EACL,KAAK,EACH,MAAO,0BAJT,KAAK,EACH,MAAO,0BAIT,KAAK,EACH,MAAO,0BAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,UACNvL,EAAGi0N,EACHzoN,GAAIyoN,EACJ91N,EAAG81N,EACHxoN,GAAIwoN,EACJvoN,EAAGuoN,EACHtoN,GAAIsoN,EACJ51N,EAAG41N,EACHroN,GAAIqoN,EACJloN,EAAGkoN,EACHjoN,GAAIioN,EACJhoN,EAAGgoN,EACH/nN,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA1JkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAIgT,EAASjX,EAAS,IACtB,OAAQjJ,GACN,IAAK,IACH,OAAOgN,GAAiBE,EAAW,eAAiB,kBACtD,IAAK,KAUH,OAREgT,GADa,IAAXjX,EACQ+D,EAAgB,UAAY,UAClB,IAAX/D,EACC+D,GAAiBE,EAAW,UAAY,WACzCjE,EAAS,EACR+D,GAAiBE,EAAW,UAAY,WAExC,SAGd,IAAK,IACH,OAAOF,EAAgB,aAAe,aACxC,IAAK,KAUH,OAREkT,GADa,IAAXjX,EACQ+D,EAAgB,SAAW,SACjB,IAAX/D,EACC+D,GAAiBE,EAAW,SAAW,WACxCjE,EAAS,EACR+D,GAAiBE,EAAW,SAAW,WAEvCF,GAAiBE,EAAW,QAAU,WAGpD,IAAK,IACH,OAAOF,EAAgB,UAAY,UACrC,IAAK,KAUH,OAREkT,GADa,IAAXjX,EACQ+D,EAAgB,MAAQ,MACd,IAAX/D,EACC+D,GAAiBE,EAAW,MAAQ,QACrCjE,EAAS,EACR+D,GAAiBE,EAAW,MAAQ,QAEpCF,GAAiBE,EAAW,KAAO,QAGjD,IAAK,IACH,OAAOF,GAAiBE,EAAW,SAAW,YAChD,IAAK,KAQH,OANEgT,GADa,IAAXjX,EACQ+D,GAAiBE,EAAW,MAAQ,OAC1B,IAAXjE,EACC+D,GAAiBE,EAAW,MAAQ,UAEpCF,GAAiBE,EAAW,MAAQ,QAGlD,IAAK,IACH,OAAOF,GAAiBE,EAAW,WAAa,eAClD,IAAK,KAUH,OAREgT,GADa,IAAXjX,EACQ+D,GAAiBE,EAAW,QAAU,UAC5B,IAAXjE,EACC+D,GAAiBE,EAAW,SAAW,WACxCjE,EAAS,EACR+D,GAAiBE,EAAW,SAAW,SAEvCF,GAAiBE,EAAW,UAAY,SAGtD,IAAK,IACH,OAAOF,GAAiBE,EAAW,WAAa,aAClD,IAAK,KAUH,OAREgT,GADa,IAAXjX,EACQ+D,GAAiBE,EAAW,OAAS,QAC3B,IAAXjE,EACC+D,GAAiBE,EAAW,OAAS,SACtCjE,EAAS,EACR+D,GAAiBE,EAAW,OAAS,OAErCF,GAAiBE,EAAW,MAAQ,OAItD,CACS+lN,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,8DAA8DM,MAAM,KACjF4gN,kBAAkB,EAClB77M,SAAU,2DAAsD/E,MAAM,KACtE8E,cAAe,0CAAqC9E,MAAM,KAC1D6E,YAAa,4BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,gBACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,wBACT,KAAK,EACH,MAAO,sBACT,KAAK,EACH,MAAO,uBACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,mBAEb,EACAvQ,QAAS,sBACTC,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACH,MAAO,oCACT,KAAK,EACH,MAAO,kCACT,KAAK,EACH,MAAO,mCACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,+BAEb,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,cACRC,KAAM,UACNvL,EAAGq0N,EACH7oN,GAAI6oN,EACJl2N,EAAGk2N,EACH5oN,GAAI4oN,EACJ3oN,EAAG2oN,EACH1oN,GAAI0oN,EACJh2N,EAAGg2N,EACHzoN,GAAIyoN,EACJtoN,EAAGsoN,EACHroN,GAAIqoN,EACJpoN,EAAGooN,EACHnoN,GAAImoN,GAEN/4M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CApKkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,mFAAgFK,MAAM,KAC9FN,YAAa,qDAAkDM,MAAM,KACrE+E,SAAU,8EAA4D/E,MAAM,KAC5E8E,cAAe,oCAA8B9E,MAAM,KACnD6E,YAAa,sBAAmB7E,MAAM,KACtCmgN,oBAAoB,EACpBp3M,cAAe,QACfZ,KAAM,SAAUla,GACd,MAA2B,MAApBA,EAAM8Z,OAAO,EACtB,EACApX,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAOnB,EAAQ,GAAK,KAAO,IAC7B,EACA9P,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,iBACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,mBACNvL,EAAG,eACHwL,GAAI,aACJrN,EAAG,mBACHsN,GAAI,YACJC,EAAG,gBACHC,GAAI,YACJtN,EAAG,iBACHuN,GAAI,aACJG,EAAG,cACHC,GAAI,UACJC,EAAG,aACHC,GAAI,WAENoP,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA7DkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGA,IAAI2D,EAAa,CACfC,MAAO,CAELzqN,GAAI,CAAC,UAAW,UAAW,WAC3BrN,EAAG,CAAC,cAAe,iBACnBsN,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBtN,EAAG,CAAC,YAAa,eACjBuN,GAAI,CAAC,MAAO,OAAQ,QACpBG,EAAG,CAAC,cAAe,iBACnBC,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,eAAgB,gBACpBC,GAAI,CAAC,SAAU,SAAU,WAE3BgqN,uBAAwB,SAAU7tN,EAAQ8tN,GACxC,OAAI9tN,EAAS,IAAM,GAAKA,EAAS,IAAM,IAAMA,EAAS,IAAM,IAAMA,EAAS,KAAO,IACzEA,EAAS,KAAO,EAAI8tN,EAAQ,GAAKA,EAAQ,GAE3CA,EAAQ,EACjB,EACAlC,UAAW,SAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC/C,IACEwmN,EADEqD,EAAUH,EAAWC,MAAM72N,GAE/B,OAAmB,IAAfA,EAAIrE,OAEM,MAARqE,GAAegN,EAAsB,eAClCE,GAAYF,EAAgB+pN,EAAQ,GAAKA,EAAQ,IAE1DrD,EAAOkD,EAAWE,uBAAuB7tN,EAAQ8tN,GAErC,OAAR/2N,GAAgBgN,GAA0B,WAAT0mN,EAC5BzqN,EAAS,UAEXA,EAAS,IAAMyqN,EACxB,GAEOT,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,mFAAmFK,MAAM,KACjGN,YAAa,2DAA2DM,MAAM,KAC9E4gN,kBAAkB,EAClB77M,SAAU,6DAAwD/E,MAAM,KACxE8E,cAAe,0CAAqC9E,MAAM,KAC1D6E,YAAa,4BAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,eACTC,QAAS,eACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,uBACT,KAAK,EACH,MAAO,qBACT,KAAK,EACH,MAAO,sBACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,kBAEb,EACAvQ,QAAS,mBACTC,SAAU,WAER,MADmB,CAAC,iCAA6B,qCAAiC,iCAA6B,+BAA2B,wCAA+B,gCAA4B,iCACjLtD,KAAK4T,MAC3B,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,SACNvL,EAAG,mBACHwL,GAAIwqN,EAAW/B,UACf91N,EAAG63N,EAAW/B,UACdxoN,GAAIuqN,EAAW/B,UACfvoN,EAAGsqN,EAAW/B,UACdtoN,GAAIqqN,EAAW/B,UACf51N,EAAG23N,EAAW/B,UACdroN,GAAIoqN,EAAW/B,UACfloN,EAAGiqN,EAAW/B,UACdjoN,GAAIgqN,EAAW/B,UACfhoN,EAAG+pN,EAAW/B,UACd/nN,GAAI8pN,EAAW/B,WAEjB34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA7GkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAI2D,EAAa,CACfC,MAAO,CAELzqN,GAAI,CAAC,6CAAW,6CAAW,8CAC3BrN,EAAG,CAAC,gEAAe,6EACnBsN,GAAI,CAAC,iCAAS,uCAAU,wCACxBC,EAAG,CAAC,oDAAa,iEACjBC,GAAI,CAAC,qBAAO,2BAAQ,4BACpBtN,EAAG,CAAC,oDAAa,iEACjBuN,GAAI,CAAC,qBAAO,2BAAQ,4BACpBG,EAAG,CAAC,gEAAe,6EACnBC,GAAI,CAAC,iCAAS,uCAAU,wCACxBC,EAAG,CAAC,sEAAgB,uEACpBC,GAAI,CAAC,uCAAU,uCAAU,yCAE3BgqN,uBAAwB,SAAU7tN,EAAQ8tN,GACxC,OAAI9tN,EAAS,IAAM,GAAKA,EAAS,IAAM,IAAMA,EAAS,IAAM,IAAMA,EAAS,KAAO,IACzEA,EAAS,KAAO,EAAI8tN,EAAQ,GAAKA,EAAQ,GAE3CA,EAAQ,EACjB,EACAlC,UAAW,SAAU5rN,EAAQ+D,EAAehN,EAAKkN,GAC/C,IACEwmN,EADEqD,EAAUH,EAAWC,MAAM72N,GAE/B,OAAmB,IAAfA,EAAIrE,OAEM,MAARqE,GAAegN,EAAsB,sEAClCE,GAAYF,EAAgB+pN,EAAQ,GAAKA,EAAQ,IAE1DrD,EAAOkD,EAAWE,uBAAuB7tN,EAAQ8tN,GAErC,OAAR/2N,GAAgBgN,GAA0B,yCAAT0mN,EAC5BzqN,EAAS,wCAEXA,EAAS,IAAMyqN,EACxB,GAEWT,EAAO31M,aAAa,UAAW,CAC1CvK,OAAQ,4aAAmFK,MAAM,KACjGN,YAAa,+OAA2DM,MAAM,KAC9E4gN,kBAAkB,EAClB77M,SAAU,uRAAsD/E,MAAM,KACtE8E,cAAe,8IAAqC9E,MAAM,KAC1D6E,YAAa,6FAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,6CACTC,QAAS,6CACTC,SAAU,WACR,OAAQpD,KAAK4T,OACX,KAAK,EACH,MAAO,8DACT,KAAK,EACH,MAAO,wDACT,KAAK,EACH,MAAO,8DACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,MAAO,4BAEb,EACAvQ,QAAS,uCACTC,SAAU,WAER,MADmB,CAAC,4FAA4B,oHAAgC,kGAA6B,sFAA2B,8GAA+B,4FAA4B,6FAC/KtD,KAAK4T,MAC3B,EACArQ,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,wBACNvL,EAAG,8FACHwL,GAAIwqN,EAAW/B,UACf91N,EAAG63N,EAAW/B,UACdxoN,GAAIuqN,EAAW/B,UACfvoN,EAAGsqN,EAAW/B,UACdtoN,GAAIqqN,EAAW/B,UACf51N,EAAG23N,EAAW/B,UACdroN,GAAIoqN,EAAW/B,UACfloN,EAAGiqN,EAAW/B,UACdjoN,GAAIgqN,EAAW/B,UACfhoN,EAAG+pN,EAAW/B,UACd/nN,GAAI8pN,EAAW/B,WAEjB34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA7GkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,mHAAmHK,MAAM,KACjIN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,sEAAsE/E,MAAM,KACtF8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SACRC,KAAM,iBACNvL,EAAG,qBACHwL,GAAI,cACJrN,EAAG,SACHsN,GAAI,aACJC,EAAG,SACHC,GAAI,aACJtN,EAAG,UACHuN,GAAI,cACJG,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAENqP,cAAe,mCACfpY,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACH,UACEA,EAAQ,GACV,QACEA,EAAQ,GACV,aAEA,SAEX,EACAwI,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,YAAbnf,EACKmf,EACe,UAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,eAAbnf,GAA0C,YAAbA,EACzB,IAATmf,EACK,EAEFA,EAAO,QAJT,CAMT,EACAhH,uBAAwB,UACxBhS,QAAS,KACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAjFkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,wFAAwFK,MAAM,KACtGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,6DAAoD/E,MAAM,KACpE8E,cAAe,uCAA8B9E,MAAM,KACnD6E,YAAa,gCAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNwpN,IAAK,mBACLC,KAAM,wBAERrsN,SAAU,CACRN,QAAS,YACTC,QAAS,eACTE,QAAS,eACTD,SAAU,kBACVE,SAAU,iBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,QACRC,KAAM,kBACNvL,EAAG,oBACHwL,GAAI,cACJrN,EAAG,WACHsN,GAAI,aACJC,EAAG,WACHC,GAAI,YACJtN,EAAG,SACHuN,GAAI,WACJG,EAAG,cACHC,GAAI,gBACJC,EAAG,YACHC,GAAI,YAENoP,uBAAwB,mBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,GAAuB,IAANA,EAAP,KAAkC,KAE9F,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3DkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,sFAAsFK,MAAM,KACpGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,8DAA8D/E,MAAM,KAC9E8E,cAAe,kCAAkC9E,MAAM,KACvD6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,UACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,aACRC,KAAM,WACNvL,EAAG,aACHwL,GAAI,aACJrN,EAAG,cACHsN,GAAI,YACJC,EAAG,aACHC,GAAI,WACJtN,EAAG,YACHuN,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CApDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIC,EAAY,CACZ,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,SACH,EAAG,UAELC,EAAY,CACV,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KAEAF,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,sdAA0FK,MAAM,KACxGN,YAAa,sdAA0FM,MAAM,KAC7G+E,SAAU,ugBAA8F/E,MAAM,KAC9G8E,cAAe,qQAAmD9E,MAAM,KACxE6E,YAAa,uFAAsB7E,MAAM,KACzCtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,sCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,4CACTC,SAAU,2EACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,8BACNvL,EAAG,+FACHwL,GAAI,4DACJrN,EAAG,gEACHsN,GAAI,kEACJC,EAAG,uEACHC,GAAI,uDACJtN,EAAG,8CACHuN,GAAI,gDACJG,EAAG,oDACHC,GAAI,sDACJC,EAAG,0DACHC,GAAI,uDAENoP,uBAAwB,4BACxBhS,QAAS,SAAUjB,GACjB,OAAOA,EAAS,oBAClB,EACAob,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,mEAAiB,SAAUD,GAC/C,OAAO6oN,EAAU7oN,EACnB,GACF,EACA2iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,OAAO,SAAUD,GACrC,OAAO4oN,EAAU5oN,EACnB,GACF,EAEA6R,cAAe,wMACfpY,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,kCACEA,EAAO,EACT,kCACEA,EAAO,GACT,4BACEA,EAAO,GACT,8CACEA,EAAO,GACT,8CACEA,EAAO,GACT,4BAEA,iCAEX,EACAE,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,mCAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,mCAAbnf,GAAqC,6BAAbA,GAEX,+CAAbA,GACFmf,GAAQ,GAFRA,EAIAA,EAAO,EAElB,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA1HkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,0cAAwFK,MAAM,KACtGN,YAAa,oSAAmEM,MAAM,KACtF4gN,kBAAkB,EAClB77M,SAAU,uUAA8D/E,MAAM,KAC9E8E,cAAe,+JAAkC9E,MAAM,KACvD6E,YAAa,iFAAqB7E,MAAM,KACxCtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAER5C,SAAU,CACRN,QAAS,gCACTC,QAAS,gCACTC,SAAU,WACVC,QAAS,sCACTC,SAAU,0BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,0CACNvL,EAAG,kFACHwL,GAAI,gDACJrN,EAAG,oDACHsN,GAAI,sDACJC,EAAG,kCACHC,GAAI,oCACJtN,EAAG,wCACHuN,GAAI,0CACJG,EAAG,kCACHC,GAAI,oCACJC,EAAG,gEACHC,GAAI,mEAENoP,uBAAwB,gBACxBhS,QAAS,WACTiS,cAAe,wKACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,yCAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbnf,EACFmf,EACe,2DAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,qDAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,uCACEA,EAAO,GACT,2BACEA,EAAO,GACT,yDACEA,EAAO,GACT,mDAEA,sCAEX,EACAzM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAlFkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGUA,EAAO31M,aAAa,MAAO,CACnCvK,OAAQ,6FAA0FK,MAAM,KACxGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,kDAAkD/E,MAAM,KAClE8E,cAAe,iCAAiC9E,MAAM,KACtD6E,YAAa,yBAAyB7E,MAAM,KAC5CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,SACRC,KAAM,WACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,aACHsN,GAAI,YACJC,EAAG,WACHC,GAAI,UACJtN,EAAG,YACHuN,GAAI,WACJG,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,YAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAzDkGwhB,CAAQ,EAAQ,G,mBCDzG,SAAUo7L,GACjB,aAGA,IAAIO,EAAW,CACb,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,gBACJ,IAAK,iBAEEP,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,CACNnQ,OAAQ,wbAAqFwQ,MAAM,KACnGygN,WAAY,gXAAyEzgN,MAAM,MAE7FN,YAAa,sOAAkDM,MAAM,KACrE+E,SAAU,ySAAyD/E,MAAM,KACzE8E,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,qEACTC,QAAS,qEACTE,QAAS,qEACTD,SAAU,uHACVE,SAAU,mIACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,oCACRC,KAAM,wBACNvL,EAAG,sEACH7B,EAAG,oDACHsN,GAAI,0CACJC,EAAG,wCACHC,GAAI,8BACJtN,EAAG,kCACHuN,GAAI,wBACJG,EAAG,kCACHC,GAAI,wBACJC,EAAG,kCACHC,GAAI,yBAENqP,cAAe,gGACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,uBAAbnf,EACKmf,EAAO,EAAIA,EAAOA,EAAO,GACV,6BAAbnf,EACFmf,EACe,uBAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,mCAAbnf,EACFmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,qBACEA,EAAO,GACT,2BACEA,EAAO,GACT,qBACEA,EAAO,GACT,iCAEA,oBAEX,EACAhH,uBAAwB,sCACxBhS,QAAS,SAAUjB,GACjB,IAAIvH,EAAIuH,EAAS,GACftH,EAAIsH,GAAU,IAAM,IAAM,KAC5B,OAAOA,GAAUuqN,EAASvqN,IAAWuqN,EAAS9xN,IAAM8xN,EAAS7xN,GAC/D,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA/GkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,khBAAoGK,MAAM,KAClHN,YAAa,wMAAiEM,MAAM,KACpF4gN,kBAAkB,EAClB77M,SAAU,yPAAiD/E,MAAM,KACjE8E,cAAe,uOAA8C9E,MAAM,KAEnE6E,YAAa,sEAAyB7E,MAAM,KAC5CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4CACLC,KAAM,sFAER4Q,cAAe,4HACfZ,KAAM,SAAUla,GACd,MAAiB,iEAAVA,CACT,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,+DAEA,8DAEX,EACAva,SAAU,CACRN,QAAS,qEACTC,QAAS,iFACTC,SAAU,6DACVC,QAAS,mGACTC,SAAU,mGACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,+CACNvL,EAAG,2EACHwL,GAAI,0CACJrN,EAAG,6BACHsN,GAAI,8BACJC,EAAG,+CACHC,GAAI,gDACJtN,EAAG,uBACHuN,GAAI,wBACJC,EAAG,+CACHC,GAAI,gDACJC,EAAG,mCACHC,GAAI,oCACJC,EAAG,iBACHC,GAAI,oBAIV,CA7DkG+qB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIO,EAAW,CACb,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,WACH,EAAG,WACH,IAAK,WACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAEGP,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,oGAA+EK,MAAM,KAC7FN,YAAa,iEAAkDM,MAAM,KACrE+E,SAAU,4FAAwD/E,MAAM,KACxE8E,cAAe,mDAA8B9E,MAAM,KACnD6E,YAAa,4CAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,sBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,kBACTC,SAAU,6BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,cACRC,KAAM,gBACNvL,EAAG,uBACH7B,EAAG,YACHsN,GAAI,WACJC,EAAG,YACHC,GAAI,WACJtN,EAAG,aACHuN,GAAI,YACJG,EAAG,YACHC,GAAI,WACJC,EAAG,aACHC,GAAI,aAEN5C,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACH,OAAO3gB,EACT,QACE,GAAe,IAAXA,EAEF,OAAOA,EAAS,QAElB,IAAIvH,EAAIuH,EAAS,GACftH,EAAIsH,EAAS,IAAMvH,EACnB1C,EAAIiK,GAAU,IAAM,IAAM,KAC5B,OAAOA,GAAUuqN,EAAS9xN,IAAM8xN,EAAS7xN,IAAM6xN,EAASx0N,IAE9D,EACAyX,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAxFkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,0FAA0FK,MAAM,KACxGN,YAAa,kDAAkDM,MAAM,KACrE+E,SAAU,yDAAyD/E,MAAM,KACzE8E,cAAe,8BAA8B9E,MAAM,KACnD6E,YAAa,wBAAwB7E,MAAM,KAC3CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAER5C,SAAU,CACRN,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,gBACRC,KAAM,mBACNvL,EAAG,gBACHwL,GAAI,aACJrN,EAAG,eACHsN,GAAI,YACJC,EAAG,aACHC,GAAI,UACJtN,EAAG,aACHuN,GAAI,UACJG,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAENoP,uBAAwB,UACxBhS,QAAS,SAAUjB,GACjB,OAAOA,CACT,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAvDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIkE,EAAe,2DAAiD/jN,MAAM,KAC1E,SAASgkN,EAAgBtuN,GACvB,IAAImiB,EAAOniB,EAEX,OADAmiB,GAAkC,IAA3BniB,EAAOmJ,QAAQ,OAAgBgZ,EAAKtqB,MAAM,GAAI,GAAK,OAAmC,IAA3BmI,EAAOmJ,QAAQ,OAAgBgZ,EAAKtqB,MAAM,GAAI,GAAK,OAAmC,IAA3BmI,EAAOmJ,QAAQ,OAAgBgZ,EAAKtqB,MAAM,GAAI,GAAK,MAAQsqB,EAAO,MAEjM,CACA,SAASosM,EAAcvuN,GACrB,IAAImiB,EAAOniB,EAEX,OADAmiB,GAAkC,IAA3BniB,EAAOmJ,QAAQ,OAAgBgZ,EAAKtqB,MAAM,GAAI,GAAK,YAAmC,IAA3BmI,EAAOmJ,QAAQ,OAAgBgZ,EAAKtqB,MAAM,GAAI,GAAK,OAAmC,IAA3BmI,EAAOmJ,QAAQ,OAAgBgZ,EAAKtqB,MAAM,GAAI,GAAK,MAAQsqB,EAAO,MAEjM,CACA,SAAS4pM,EAAU5rN,EAAQ+D,EAAeC,EAAQC,GAChD,IAAIoqN,EAAaC,EAAatuN,GAC9B,OAAQgE,GACN,IAAK,KACH,OAAOqqN,EAAa,OACtB,IAAK,KACH,OAAOA,EAAa,OACtB,IAAK,KACH,OAAOA,EAAa,OACtB,IAAK,KACH,OAAOA,EAAa,OACtB,IAAK,KACH,OAAOA,EAAa,OACtB,IAAK,KACH,OAAOA,EAAa,OAE1B,CACA,SAASC,EAAatuN,GACpB,IAAIuuN,EAAUnuN,KAAKwF,MAAM5F,EAAS,IAAO,KACvCwuN,EAAMpuN,KAAKwF,MAAM5F,EAAS,IAAM,IAChC+uC,EAAM/uC,EAAS,GACfyqN,EAAO,GAUT,OATI8D,EAAU,IACZ9D,GAAQyD,EAAaK,GAAW,SAE9BC,EAAM,IACR/D,IAAkB,KAATA,EAAc,IAAM,IAAMyD,EAAaM,GAAO,OAErDz/K,EAAM,IACR07K,IAAkB,KAATA,EAAc,IAAM,IAAMyD,EAAan/K,IAElC,KAAT07K,EAAc,OAASA,CAChC,CACUT,EAAO31M,aAAa,MAAO,CACnCvK,OAAQ,iSAAkMK,MAAM,KAChNN,YAAa,6JAA0HM,MAAM,KAC7I4gN,kBAAkB,EAClB77M,SAAU,2DAA2D/E,MAAM,KAC3E8E,cAAe,2DAA2D9E,MAAM,KAChF6E,YAAa,2DAA2D7E,MAAM,KAC9EtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,cACTC,QAAS,mBACTC,SAAU,MACVC,QAAS,wBACTC,SAAU,MACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQkrN,EACRjrN,KAAMkrN,EACNz2N,EAAG,UACHwL,GAAIyoN,EACJ91N,EAAG,eACHsN,GAAIwoN,EACJvoN,EAAG,eACHC,GAAIsoN,EACJ51N,EAAG,eACHuN,GAAIqoN,EACJloN,EAAG,eACHC,GAAIioN,EACJhoN,EAAG,eACHC,GAAI+nN,GAEN34M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAlGkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,IAAIO,EAAW,CACb,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,cACH,EAAG,cACH,IAAK,cACL,EAAG,YACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,kBACJ,GAAI,mBAEGP,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,yGAA6EK,MAAM,KAC3FN,YAAa,4DAAkDM,MAAM,KACrE+E,SAAU,0EAAwD/E,MAAM,KACxE8E,cAAe,iCAA8B9E,MAAM,KACnD6E,YAAa,0BAAuB7E,MAAM,KAC1CrP,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACHmB,EAAU,WAAO,WAEjBA,EAAU,QAAO,OAE5B,EACAI,cAAe,gCACfZ,KAAM,SAAUla,GACd,MAAiB,UAAVA,GAA4B,UAAVA,CAC3B,EACAyJ,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,qBACTC,QAAS,uBACTC,SAAU,2BACVC,QAAS,cACTC,SAAU,4BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,WACRC,KAAM,aACNvL,EAAG,mBACHwL,GAAI,YACJrN,EAAG,aACHsN,GAAI,YACJC,EAAG,WACHC,GAAI,UACJtN,EAAG,aACHuN,GAAI,YACJC,EAAG,YACHC,GAAI,WACJC,EAAG,SACHC,GAAI,QACJC,EAAG,eACHC,GAAI,eAEN5C,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACH,OAAO3gB,EACT,QACE,GAAe,IAAXA,EAEF,OAAOA,EAAS,kBAElB,IAAIvH,EAAIuH,EAAS,GACftH,EAAIsH,EAAS,IAAMvH,EACnB1C,EAAIiK,GAAU,IAAM,IAAM,KAC5B,OAAOA,GAAUuqN,EAAS9xN,IAAM8xN,EAAS7xN,IAAM6xN,EAASx0N,IAE9D,EACAyX,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAtGkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAgEA,SAASgC,EAAoBhsN,EAAQ+D,EAAehN,EAAKkN,GACvD,IAAItK,EAAS,CACXhC,EAAG,CAAC,kBAAmB,mBACvBwL,GAAI,CAACnD,EAAS,WAAiBA,EAAS,YACxClK,EAAG,CAAC,aAAW,iBACfsN,GAAI,CAACpD,EAAS,YAAeA,EAAS,aACtCqD,EAAG,CAAC,aAAW,kBACfC,GAAI,CAACtD,EAAS,YAAeA,EAAS,aACtChK,EAAG,CAAC,UAAW,eACfuN,GAAI,CAACvD,EAAS,SAAeA,EAAS,UACtC0D,EAAG,CAAC,SAAU,aACdC,GAAI,CAAC3D,EAAS,SAAeA,EAAS,UACtC4D,EAAG,CAAC,QAAS,YACbC,GAAI,CAAC7D,EAAS,OAAaA,EAAS,SAEtC,OAAOiE,GAA4BF,EAAjBpK,EAAO5C,GAAK,GAAsC4C,EAAO5C,GAAK,EAClF,CA1EUizN,EAAO31M,aAAa,MAAO,CACnCvK,OAAQ,kGAAsFK,MAAM,KACpGN,YAAa,qDAAkDM,MAAM,KACrE+E,SAAU,8EAAsD/E,MAAM,KACtE8E,cAAe,gDAA8B9E,MAAM,KACnD6E,YAAa,mCAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAER4Q,cAAe,aACfZ,KAAM,SAAUla,GACd,MAAO,QAAUA,EAAMsM,aACzB,EACA5J,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACHmB,EAAU,MAAQ,MAElBA,EAAU,MAAQ,KAE7B,EACApT,SAAU,CACRN,QAAS,iBACTC,QAAS,oBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,oCACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,YACRC,KAAM,OACNvL,EAAGq0N,EACH7oN,GAAI6oN,EACJl2N,EAAGk2N,EACH5oN,GAAI4oN,EACJ3oN,EAAG2oN,EACH1oN,GAAI0oN,EACJh2N,EAAGg2N,EACHzoN,GAAIyoN,EACJtoN,EAAGsoN,EACHroN,GAAIqoN,EACJpoN,EAAGooN,EACHnoN,GAAImoN,GAEN/4M,uBAAwB,YACxBhS,QAAS,MACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAsBX,CApFkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGUA,EAAO31M,aAAa,MAAO,CACnCvK,OAAQ,saAAkFK,MAAM,KAChGN,YAAa,saAAkFM,MAAM,KACrG+E,SAAU,+PAAkD/E,MAAM,KAClE8E,cAAe,+PAAkD9E,MAAM,KACvE6E,YAAa,+PAAkD7E,MAAM,KACrEtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,uCACTC,QAAS,uCACTC,SAAU,mBACVC,QAAS,6CACTC,SAAU,mBACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wDACRC,KAAM,wBACNvL,EAAG,2BACHwL,GAAI,8BACJrN,EAAG,iCACHsN,GAAI,oCACJC,EAAG,2BACHC,GAAI,sDACJtN,EAAG,qBACHuN,GAAI,+BACJG,EAAG,4BACHC,GAAI,0CACJC,EAAG,iCACHC,GAAI,2CAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,KAKX,CAnDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGcA,EAAO31M,aAAa,WAAY,CAC5CvK,OAAQ,qIAAwFK,MAAM,KACtGN,YAAa,qIAAwFM,MAAM,KAC3G+E,SAAU,uDAAkD/E,MAAM,KAClE8E,cAAe,uDAAkD9E,MAAM,KACvE6E,YAAa,uDAAkD7E,MAAM,KACrEtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAER5C,SAAU,CACRN,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,iBACRC,KAAM,SACNvL,EAAG,OACHwL,GAAI,UACJrN,EAAG,aACHsN,GAAI,gBACJC,EAAG,YACHC,GAAI,mBACJtN,EAAG,MACHuN,GAAI,WACJG,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,KAKX,CAnDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,8bAAsFK,MAAM,KACpGN,YAAa,8bAAsFM,MAAM,KACzG+E,SAAU,ySAAyD/E,MAAM,KACzE8E,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,gGACJC,IAAK,4GACLC,KAAM,wHAER4Q,cAAe,uQACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,4DAAbnf,GAA0C,mCAAbA,GAAqC,wEAAbA,EAChDmf,EACe,wEAAbnf,GAA4C,uBAAbA,EACjCmf,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,EAEtC,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,IAAI6E,EAAY,IAAPsC,EAAac,EACtB,OAAIpD,EAAK,IACA,0DACEA,EAAK,IACP,iCACEA,EAAK,KACP,sEACEA,EAAK,KACP,qBACEA,EAAK,KACP,sEAEA,oBAEX,EACAjY,SAAU,CACRN,QAAS,qEACTC,QAAS,+DACTC,SAAU,wFACVC,QAAS,kDACTC,SAAU,8FACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,oCACRC,KAAM,oCACNvL,EAAG,sEACHwL,GAAI,0CACJrN,EAAG,oDACHsN,GAAI,oCACJC,EAAG,oDACHC,GAAI,oCACJtN,EAAG,wCACHuN,GAAI,wBACJG,EAAG,wCACHC,GAAI,wBACJC,EAAG,wCACHC,GAAI,yBAENoP,uBAAwB,yFACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAO3gB,EAAS,4BAClB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,kCAClB,QACE,OAAOA,EAEb,EACAob,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,UAAM,IAC9B,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,KAAM,SAC9B,EACAkM,KAAM,CAEJL,IAAK,EAELC,IAAK,IAKX,CArGkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGA,SAASQ,EAAOC,EAAM15L,GACpB,IAAI25L,EAAQD,EAAKtgN,MAAM,KACvB,OAAO4mB,EAAM,KAAO,GAAKA,EAAM,MAAQ,GAAK25L,EAAM,GAAK35L,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAAM25L,EAAM,GAAKA,EAAM,EAClJ,CACA,SAASC,EAAuB3qN,EAAQ+D,EAAehN,GASrD,MAAY,MAARA,EACKgN,EAAgB,6CAAY,6CAClB,MAARhN,EACFgN,EAAgB,uCAAW,uCAE3B/D,EAAS,IAAMwqN,EAbX,CACXrnN,GAAIY,EAAgB,6HAA2B,6HAC/CX,GAAIW,EAAgB,6HAA2B,6HAC/CT,GAAIS,EAAgB,2GAAwB,2GAC5CR,GAAI,uEACJI,GAAI,uHACJE,GAAI,8EAOgC9M,IAAOiJ,EAE/C,CACA,SAASyuN,EAAoB34N,EAAG6D,GAC9B,IAAIuV,EAAW,CACXw/M,WAAY,+SAA0DvkN,MAAM,KAC5EwkN,WAAY,+SAA0DxkN,MAAM,KAC5EykN,SAAU,2TAA4DzkN,MAAM,MAGhF,OAAU,IAANrU,EACKoZ,EAAqB,WAAExX,MAAM,EAAG,GAAGqX,OAAOG,EAAqB,WAAExX,MAAM,EAAG,IAE9E5B,EAIEoZ,EADI,yCAAqBnN,KAAKpI,GAAU,aAAe,sHAAsCoI,KAAKpI,GAAU,WAAa,cACtG7D,EAAEga,OAHnBZ,EAAqB,UAIhC,CACA,SAAS2/M,EAAqBtoG,GAC5B,OAAO,WACL,OAAOA,EAAM,UAAwB,KAAjBrqH,KAAKyV,QAAiB,SAAM,IAAM,MACxD,CACF,CACSq4M,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,CACNnQ,OAAQ,gdAAyFwQ,MAAM,KACvGygN,WAAY,ggBAAiGzgN,MAAM,MAErHN,YAAa,gRAAyDM,MAAM,KAC5E+E,SAAUu/M,EACVx/M,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,6BACLC,KAAM,oCAER5C,SAAU,CACRN,QAASyvN,EAAqB,sDAC9BxvN,QAASwvN,EAAqB,0CAC9BtvN,QAASsvN,EAAqB,oCAC9BvvN,SAAUuvN,EAAqB,mBAC/BrvN,SAAU,WACR,OAAQtD,KAAK4T,OACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACH,OAAO++M,EAAqB,uDAAoB/7N,KAAKoJ,MACvD,KAAK,EACL,KAAK,EACL,KAAK,EACH,OAAO2yN,EAAqB,6DAAqB/7N,KAAKoJ,MAE5D,EACAuD,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,8BACNvL,EAAG,wFACHwL,GAAIwnN,EACJ70N,EAAG60N,EACHvnN,GAAIunN,EACJtnN,EAAG,uCACHC,GAAIqnN,EACJ30N,EAAG,2BACHuN,GAAIonN,EACJjnN,EAAG,uCACHC,GAAIgnN,EACJ/mN,EAAG,qBACHC,GAAI8mN,GAGNz3M,cAAe,kHACfZ,KAAM,SAAUla,GACd,MAAO,8DAAiB2J,KAAK3J,EAC/B,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,EACF,2BACEA,EAAO,GACT,iCACEA,EAAO,GACT,qBAEA,sCAEX,EACAhH,uBAAwB,gCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACH,OAAO3gB,EAAS,UAClB,IAAK,IACH,OAAOA,EAAS,gBAClB,QACE,OAAOA,EAEb,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA3IkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGA,IAAIlgN,EAAS,CAAC,iCAAS,iCAAS,2BAAQ,iCAAS,qBAAO,qBAAO,uCAAU,2BAAQ,iCAAS,uCAAU,iCAAS,kCAC3G6S,EAAO,CAAC,iCAAS,qBAAO,2BAAQ,qBAAO,uCAAU,2BAAQ,4BAClDqtM,EAAO31M,aAAa,KAAM,CACjCvK,OAAQA,EACRD,YAAaC,EACboF,SAAUyN,EACV1N,cAAe0N,EACf3N,YAAa2N,EACb9a,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,gCAER4Q,cAAe,wCACfZ,KAAM,SAAUla,GACd,MAAO,uBAAUA,CACnB,EACA0C,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,OAAImH,EAAO,GACF,qBAEF,oBACT,EACAva,SAAU,CACRN,QAAS,6CACTC,QAAS,6CACTC,SAAU,qCACVC,QAAS,kFACTC,SAAU,sEACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,wBACRC,KAAM,wBACNvL,EAAG,oDACHwL,GAAI,oCACJrN,EAAG,wCACHsN,GAAI,wBACJC,EAAG,oDACHC,GAAI,oCACJtN,EAAG,kCACHuN,GAAI,kBACJG,EAAG,wCACHC,GAAI,wBACJC,EAAG,wCACHC,GAAI,yBAENuX,SAAU,SAAUpX,GAClB,OAAOA,EAAO1C,QAAQ,UAAM,IAC9B,EACA0iB,WAAY,SAAUhgB,GACpB,OAAOA,EAAO1C,QAAQ,KAAM,SAC9B,EACAkM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArEkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gXAAyEK,MAAM,KACvFN,YAAa,sOAAkDM,MAAM,KACrE+E,SAAU,6RAAuD/E,MAAM,KACvE8E,cAAe,uIAA8B9E,MAAM,KACnD6E,YAAa,6FAAuB7E,MAAM,KAC1CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,8EACTC,QAAS,2DACTC,SAAU,6EACVC,QAAS,wEACTC,SAAU,8GACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,6DACRC,KAAM,gFACNvL,EAAG,uCACHwL,GAAI,0CACJrN,EAAG,0DACHsN,GAAI,0CACJC,EAAG,8CACHC,GAAI,8BACJtN,EAAG,wCACHuN,GAAI,wBACJG,EAAG,kCACHC,GAAI,kBACJC,EAAG,wCACHC,GAAI,yBAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnDkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGaA,EAAO31M,aAAa,UAAW,CAC1CvK,OAAQ,6EAA6EK,MAAM,KAC3FN,YAAa,oDAAoDM,MAAM,KACvE+E,SAAU,+DAA+D/E,MAAM,KAC/E8E,cAAe,kCAAkC9E,MAAM,KACvD6E,YAAa,yBAAyB7E,MAAM,KAC5CtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,kBACRC,KAAM,qBACNvL,EAAG,SACHwL,GAAI,YACJrN,EAAG,aACHsN,GAAI,YACJC,EAAG,WACHC,GAAI,UACJtN,EAAG,UACHuN,GAAI,SACJG,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAEN2J,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CAnDkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,yIAAqGK,MAAM,KACnHN,YAAa,sFAAsFM,MAAM,KACzG4gN,kBAAkB,EAClB77M,SAAU,mHAAyD/E,MAAM,KACzE8E,cAAe,uBAAuB9E,MAAM,KAC5C6E,YAAa,uBAAuB7E,MAAM,KAC1CmgN,oBAAoB,EACpBp3M,cAAe,SACfZ,KAAM,SAAUla,GACd,MAAO,QAAQ2J,KAAK3J,EACtB,EACA0C,SAAU,SAAU6W,EAAOG,EAASgB,GAClC,OAAInB,EAAQ,GACHmB,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAE5B,EACAjR,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,yBACJC,IAAK,+BACLC,KAAM,qCACN9O,EAAG,YACHq4N,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAERrsN,SAAU,CACRN,QAAS,yBACTC,QAAS,0BACTC,SAAU,sCACVC,QAAS,yBACTC,SAAU,6CACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,cACRC,KAAM,qBACNvL,EAAG,iBACHwL,GAAI,aACJrN,EAAG,mBACHsN,GAAI,aACJC,EAAG,oBACHC,GAAI,cACJtN,EAAG,mBACHuN,GAAI,aACJC,EAAG,qBACHC,GAAI,eACJC,EAAG,oBACHC,GAAI,cACJC,EAAG,oBACHC,GAAI,eAENoP,uBAAwB,UACxBhS,QAAS,SAAUjB,GACjB,OAAOA,CACT,EACAwN,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA1EkGwhB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGcA,EAAO31M,aAAa,WAAY,CAC5CvK,OAAQ,sNAA6GK,MAAM,KAC3HN,YAAa,iHAA8DM,MAAM,KACjF4gN,kBAAkB,EAClB77M,SAAU,0JAAyE/E,MAAM,KACzF8E,cAAe,mEAAqC9E,MAAM,KAC1D6E,YAAa,2CAA4B7E,MAAM,KAC/CmgN,oBAAoB,EACpBzoN,eAAgB,CACdK,GAAI,QACJC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAER5C,SAAU,CACRN,QAAS,8BACTC,QAAS,kCACTC,SAAU,kBACVC,QAAS,yCACTC,SAAU,6BACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,eACRC,KAAM,gBACNvL,EAAG,kCACHwL,GAAI,wBACJrN,EAAG,4BACHsN,GAAI,2BACJC,EAAG,wBACHC,GAAI,kBACJtN,EAAG,kBACHuN,GAAI,iBACJG,EAAG,qBACHC,GAAI,oBACJC,EAAG,sBACHC,GAAI,sBAENoP,uBAAwB,uBACxBhS,QAAS,SAAUjB,GACjB,IAAItH,EAAIsH,EAAS,GAEjB,OAAOA,GAD8B,OAAvBA,EAAS,IAAM,IAAY,KAAa,IAANtH,EAAU,KAAa,IAANA,EAAU,KAAa,IAANA,EAAU,KAAO,KAErG,EACA8U,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CA1DkGwhB,CAAQ,EAAQ,G,mBCCzG,SAAUo7L,GACjB,aAGSA,EAAO31M,aAAa,KAAM,CACjCvK,OAAQ,gPAA0FK,MAAM,KACxGN,YAAa,oKAAgEM,MAAM,KACnF+E,SAAU,gKAAuD/E,MAAM,KACvE8E,cAAe,kGAAsC9E,MAAM,KAC3D6E,YAAa,8DAA2B7E,MAAM,KAC9CtI,eAAgB,CACdK,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAER5C,SAAU,CACRN,QAAS,0BACTC,QAAS,yBACTC,SAAU,uDACVC,QAAS,oBACTC,SAAU,2DACVC,SAAU,KAEZqE,aAAc,CACZb,OAAQ,cACRC,KAAM,qBACNvL,EAAG,wCACHwL,GAAI,gBACJrN,EAAG,6BACHsN,GAAI,4BACJC,EAAG,mBACHC,GAAI,kBACJtN,EAAG,0BACHuN,GAAI,yBACJG,EAAG,gBACHC,GAAI,eACJC,EAAG,sBACHC,GAAI,sBAENoP,uBAAwB,+BACxBhS,QAAS,yBACTuM,KAAM,CACJL,IAAK,EAELC,IAAK,IAKX,CArDkGwhB,CAAQ,EAAQ,G,mBCGzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,0KAAwCK,MAAM,KACtDN,YAAa,qGAAyCM,MAAM,KAC5D+E,SAAU,uIAA8B/E,MAAM,KAC9C8E,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,mDAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,2CACLC,KAAM,+CACN9O,EAAG,WACHq4N,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAER74M,cAAe,gFACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,iBAAbnf,GAAkC,iBAAbA,GAAkC,iBAAbA,EACrCmf,EACe,iBAAbnf,GAAkC,iBAAbA,EACvBmf,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,EAEtC,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,IAAI6E,EAAY,IAAPsC,EAAac,EACtB,OAAIpD,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eAEA,cAEX,EACAjY,SAAU,CACRN,QAAS,mBACTC,QAAS,mBACTC,SAAU,SAAUM,GAClB,OAAIA,EAAI4N,SAAWtR,KAAKsR,OACf,gBAEA,eAEX,EACAjO,QAAS,mBACTC,SAAU,SAAUI,GAClB,OAAI1D,KAAKsR,SAAW5N,EAAI4N,OACf,gBAEA,eAEX,EACA/N,SAAU,KAEZwT,uBAAwB,gCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAO3gB,EAAS,SAClB,IAAK,IACH,OAAOA,EAAS,SAClB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAClB,QACE,OAAOA,EAEb,EACA8D,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNvL,EAAG,eACHwL,GAAI,YACJrN,EAAG,iBACHsN,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJtN,EAAG,WACHuN,GAAI,YACJC,EAAG,WACHC,GAAI,YACJC,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,aAEN2J,KAAM,CAEJL,IAAK,EAELC,IAAK,IAKX,CApHkGwhB,CAAQ,EAAQ,G,mBCEzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,0KAAwCK,MAAM,KACtDN,YAAa,qGAAyCM,MAAM,KAC5D+E,SAAU,uIAA8B/E,MAAM,KAC9C8E,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,mDAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN9O,EAAG,WACHq4N,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAER74M,cAAe,gFACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,iBAAbnf,GAAkC,iBAAbA,GAAkC,iBAAbA,EACrCmf,EACe,iBAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,iBAAbnf,GAAkC,iBAAbA,EACvBmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,IAAI6E,EAAY,IAAPsC,EAAac,EACtB,OAAIpD,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACS,OAAPA,EACF,eACEA,EAAK,KACP,eAEA,cAEX,EACAjY,SAAU,CACRN,QAAS,mBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,mBACTC,SAAU,iBACVC,SAAU,KAEZwT,uBAAwB,gCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAO3gB,EAAS,SAClB,IAAK,IACH,OAAOA,EAAS,SAClB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAClB,QACE,OAAOA,EAEb,EACA8D,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNvL,EAAG,eACHwL,GAAI,YACJrN,EAAG,iBACHsN,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJtN,EAAG,WACHuN,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,cAIV,CA9FkG+qB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,0KAAwCK,MAAM,KACtDN,YAAa,qGAAyCM,MAAM,KAC5D+E,SAAU,uIAA8B/E,MAAM,KAC9C8E,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,mDAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN9O,EAAG,WACHq4N,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAER74M,cAAe,gFACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,iBAAbnf,GAAkC,iBAAbA,GAAkC,iBAAbA,EACrCmf,EACe,iBAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,iBAAbnf,GAAkC,iBAAbA,EACvBmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,IAAI6E,EAAY,IAAPsC,EAAac,EACtB,OAAIpD,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eAEA,cAEX,EACAjY,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,KAEZwT,uBAAwB,gCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAO3gB,EAAS,SAClB,IAAK,IACH,OAAOA,EAAS,SAClB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAClB,QACE,OAAOA,EAEb,EACA8D,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNvL,EAAG,eACHwL,GAAI,YACJrN,EAAG,iBACHsN,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJtN,EAAG,WACHuN,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,cAIV,CA9FkG+qB,CAAQ,EAAQ,G,mBCAzG,SAAUo7L,GACjB,aAGWA,EAAO31M,aAAa,QAAS,CACtCvK,OAAQ,0KAAwCK,MAAM,KACtDN,YAAa,qGAAyCM,MAAM,KAC5D+E,SAAU,uIAA8B/E,MAAM,KAC9C8E,cAAe,6FAAuB9E,MAAM,KAC5C6E,YAAa,mDAAgB7E,MAAM,KACnCtI,eAAgB,CACdK,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,iCACLC,KAAM,qCACN9O,EAAG,WACHq4N,GAAI,2BACJC,IAAK,iCACLC,KAAM,sCAER74M,cAAe,gFACfiH,aAAc,SAAUF,EAAMnf,GAI5B,OAHa,KAATmf,IACFA,EAAO,GAEQ,iBAAbnf,GAAkC,iBAAbA,GAAkC,iBAAbA,EACrCmf,EACe,iBAAbnf,EACFmf,GAAQ,GAAKA,EAAOA,EAAO,GACZ,iBAAbnf,GAAkC,iBAAbA,EACvBmf,EAAO,QADT,CAGT,EACAnf,SAAU,SAAUmf,EAAMc,EAAQjI,GAChC,IAAI6E,EAAY,IAAPsC,EAAac,EACtB,OAAIpD,EAAK,IACA,eACEA,EAAK,IACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eACEA,EAAK,KACP,eAEA,cAEX,EACAjY,SAAU,CACRN,QAAS,oBACTC,QAAS,oBACTC,SAAU,kBACVC,QAAS,oBACTC,SAAU,kBACVC,SAAU,KAEZwT,uBAAwB,gCACxBhS,QAAS,SAAUjB,EAAQ2gB,GACzB,OAAQA,GACN,IAAK,IACL,IAAK,IACL,IAAK,MACH,OAAO3gB,EAAS,SAClB,IAAK,IACH,OAAOA,EAAS,SAClB,IAAK,IACL,IAAK,IACH,OAAOA,EAAS,SAClB,QACE,OAAOA,EAEb,EACA8D,aAAc,CACZb,OAAQ,WACRC,KAAM,WACNvL,EAAG,eACHwL,GAAI,YACJrN,EAAG,iBACHsN,GAAI,kBACJC,EAAG,iBACHC,GAAI,kBACJtN,EAAG,WACHuN,GAAI,YACJG,EAAG,iBACHC,GAAI,kBACJC,EAAG,WACHC,GAAI,cAIV,CA9FkG+qB,CAAQ,EAAQ,G,+BCFlH,SAASghL,EAAuBh3M,GAC9B,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CACnC,QAAWA,EAEf,CAIA,SAASk2N,EAAwBl2N,GAC/B,GAAIA,GAAOA,EAAIhC,WACb,OAAOgC,EAEP,IAAIm2N,EAAS,CAAC,EACd,GAAW,MAAPn2N,EACF,IAAK,IAAI7B,KAAO6B,EACVjG,OAAOC,UAAUC,eAAeC,KAAK8F,EAAK7B,KAAMg4N,EAAOh4N,GAAO6B,EAAI7B,IAI1E,OADAg4N,EAAgB,QAAIn2N,EACbm2N,CAEX,CAxBAz7N,EAAQsD,YAAa,EAyBrB,IACI0pB,EAAOwuM,EADW,EAAQ,KAO1BE,EAAyBpf,EADD,EAAQ,MAGhCqf,EAAwBrf,EADD,EAAQ,KAG/BF,EAAQof,EADW,EAAQ,IAG3BI,EAAUJ,EADW,EAAQ,MAG7BK,EAAyBvf,EADD,EAAQ,MAIpC,SAAS94M,IACP,IAAIs4N,EAAK,IAAI9uM,EAAKuvL,sBAUlB,OATAH,EAAMl2M,OAAO41N,EAAI9uM,GACjB8uM,EAAGC,WAAaL,EAAgC,QAChDI,EAAGvsG,UAAYosG,EAA+B,QAC9CG,EAAG1f,MAAQA,EACX0f,EAAGt7H,iBAAmB47G,EAAM57G,iBAC5Bs7H,EAAGE,GAAKJ,EACRE,EAAGprI,SAAW,SAAUurI,GACtB,OAAOL,EAAQlrI,SAASurI,EAAMH,EAChC,EACOA,CACT,CACA,IAAIn3D,EAAOnhK,IACXmhK,EAAKnhK,OAASA,EACdq4N,EAAgC,QAAEl3D,GAClCA,EAAc,QAAIA,EAClB3kK,EAAiB,QAAI2kK,EACrB1kK,EAAOD,QAAUA,EAAiB,O,+BCxDlC,SAASs8M,EAAuBh3M,GAC9B,OAAOA,GAAOA,EAAIhC,WAAagC,EAAM,CACnC,QAAWA,EAEf,CATAtF,EAAQsD,YAAa,EACrBtD,EAAQq9M,uBAuBR,SAAgC3oH,GAC9BwnI,EAAqC,QAAExnI,GACvCynI,EAAuB,QAAEznI,GACzB0nI,EAAgC,QAAE1nI,GAClC2nI,EAAqB,QAAE3nI,GACvB4nI,EAAsB,QAAE5nI,GACxB6nI,EAAyB,QAAE7nI,GAC3B8nI,EAAuB,QAAE9nI,EAC3B,EA9BA10F,EAAQy8N,kBA+BR,SAA2B/nI,EAAUgoI,EAAYC,GAC3CjoI,EAASwoH,QAAQwf,KACnBhoI,EAASlwF,MAAMk4N,GAAchoI,EAASwoH,QAAQwf,GACzCC,UACIjoI,EAASwoH,QAAQwf,GAG9B,EA9BA,IACIR,EAA8B5f,EADD,EAAQ,MAGrC6f,EAAgB7f,EADD,EAAQ,MAGvB8f,EAAyB9f,EADD,EAAQ,MAGhC+f,EAAc/f,EADD,EAAQ,MAGrBggB,EAAehgB,EADD,EAAQ,MAGtBigB,EAAkBjgB,EADD,EAAQ,MAGzBkgB,EAAgBlgB,EADD,EAAQ,K,+BCtB3Bt8M,EAAQsD,YAAa,EACrB,IAAIk5M,EAAS,EAAQ,GACjBxwI,EAAS,CACX4wJ,UAAW,CAAC,QAAS,OAAQ,OAAQ,SACrCC,MAAO,OAEPC,YAAa,SAAqBD,GAChC,GAAqB,kBAAVA,EAAoB,CAC7B,IAAIE,EAAWvgB,EAAO9mM,QAAQs2D,EAAO4wJ,UAAWC,EAAMzrN,eAEpDyrN,EADEE,GAAY,EACNA,EAEA9jN,SAAS4jN,EAAO,GAE5B,CACA,OAAOA,CACT,EAEAj8E,IAAK,SAAai8E,GAEhB,GADAA,EAAQ7wJ,EAAO8wJ,YAAYD,GACJ,qBAAZ74N,SAA2BgoE,EAAO8wJ,YAAY9wJ,EAAO6wJ,QAAUA,EAAO,CAC/E,IAAIhsL,EAASm7B,EAAO4wJ,UAAUC,GAEzB74N,QAAQ6sC,KACXA,EAAS,OAEX,IAAK,IAAIqnC,EAAOxzE,UAAUtF,OAAQ4C,EAAU+C,MAAMmzE,EAAO,EAAIA,EAAO,EAAI,GAAI5iC,EAAO,EAAGA,EAAO4iC,EAAM5iC,IACjGtzC,EAAQszC,EAAO,GAAK5wC,UAAU4wC,GAEhCtxC,QAAQ6sC,GAAQpsC,MAAMT,QAAShC,EACjC,CACF,GAGFhC,EAAiB,QAAIgsE,EACrB/rE,EAAOD,QAAUA,EAAiB,O,+BCnClCA,EAAQsD,YAAa,EACrBtD,EAAQg9N,yBAcR,SAAkCC,GAChC,IAAIC,EAAyB79N,OAAOmE,OAAO,MAC3C05N,EAAoC,aAAI,EACxCA,EAAyC,kBAAI,EAC7CA,EAAyC,kBAAI,EAC7CA,EAAyC,kBAAI,EAC7C,IAAIC,EAA2B99N,OAAOmE,OAAO,MAG7C,OADA25N,EAAoC,WAAI,EACjC,CACLnvM,WAAY,CACVozL,UAAWgc,EAAuBC,sBAAsBF,EAA0BF,EAAeK,wBACjG7jL,aAAcwjL,EAAeM,+BAE/BC,QAAS,CACPpc,UAAWgc,EAAuBC,sBAAsBH,EAAwBD,EAAeQ,qBAC/FhkL,aAAcwjL,EAAeS,4BAGnC,EAhCA19N,EAAQ29N,gBAiCR,SAAyBh6M,EAAQi6M,EAAoB50J,GACnD,OACS60J,EADa,oBAAXl6M,EACai6M,EAAmBJ,QAEnBI,EAAmB5vM,WAFSg7C,EAItD,EAtCAhpE,EAAQ+9M,sBAuDR,WACE1+M,OAAOwL,KAAKizN,GAAkB58M,SAAQ,SAAU8nD,UACvC80J,EAAiB90J,EAC1B,GACF,EAnDA,IALgC1jE,EAK5B83N,EAAyB,EAAQ,KACjCW,EAAU,EAAQ,KAClBnhB,GAP4Bt3M,EAOMy4N,IANtBz4N,EAAIhC,WAAagC,EAAM,CACnC,QAAWA,GAMXw4N,EAAmBz+N,OAAOmE,OAAO,MA4BrC,SAASq6N,EAAeG,EAA2Bh1J,GACjD,YAA0D7mE,IAAtD67N,EAA0B5c,UAAUp4I,IACuB,IAAtDg1J,EAA0B5c,UAAUp4I,QAEE7mE,IAA3C67N,EAA0BvkL,aACrBukL,EAA0BvkL,cAKrC,SAAwCuvB,IACC,IAAnC80J,EAAiB90J,KACnB80J,EAAiB90J,IAAgB,EACjC4zI,EAAkB,QAAEh8D,IAAI,QAAS,+DAAiE53E,EAAjE,6OAErC,CAREi1J,CAA+Bj1J,IACxB,EACT,C,+BClDAhpE,EAAQsD,YAAa,EACrBtD,EAAiB,QAAI,SAAUk+N,GAID,kBAAf39H,aACXlhG,OAAOC,UAAUyxH,iBAAiB,aAAa,WAC7C,OAAOnoH,IACT,IACAu1N,UAAU59H,WAAa49H,iBAChB9+N,OAAOC,UAAU6+N,WAE1B,IAAIC,EAAc79H,WAAW29H,WAG7BA,EAAW5gK,WAAa,WAItB,OAHIijC,WAAW29H,aAAeA,IAC5B39H,WAAW29H,WAAaE,GAEnBF,CACT,CACF,EACAj+N,EAAOD,QAAUA,EAAiB,O,+BCvBlCA,EAAQsD,YAAa,EACrB,IAAI+6N,EAAM,CAERnhB,QAAS,CAIPohB,iBAAkB,SAA0B9hM,GAC1C,MAAqB,kBAAdA,EAAK36B,OAA2C,sBAAd26B,EAAK36B,MAA8C,mBAAd26B,EAAK36B,UAAiC26B,EAAKw+B,QAAUx+B,EAAKw+B,OAAO57D,QAAUo9B,EAAKoN,KAChK,EACA20L,SAAU,SAAkBr9H,GAC1B,MAAO,aAAazyF,KAAKyyF,EAAKn9C,SAChC,EAGAy6K,SAAU,SAAkBt9H,GAC1B,OAA6B,IAAtBA,EAAKv2E,MAAMvrB,SAAiBi/N,EAAInhB,QAAQqhB,SAASr9H,KAAUA,EAAKhuD,KACzE,IAMJlzC,EAAiB,QAAIq+N,EACrBp+N,EAAOD,QAAUA,EAAiB,O,+BCxBlCA,EAAQsD,YAAa,EAQrB,IALgCgC,EAK5Bm5N,EAAa,EAAQ,IACrBhiB,GAN4Bn3M,EAMSm5N,IALzBn5N,EAAIhC,WAAagC,EAAM,CACnC,QAAWA,GAKf,SAASo5N,IACP91N,KAAKknC,QAAU,EACjB,CAqFA,SAAS6uL,EAAmBC,GAC1Bh2N,KAAKi2N,eAAeD,EAAU,QAC9Bh2N,KAAKk2N,YAAYF,EAAS5jK,QAC1BpyD,KAAKm2N,UAAUH,EAAU,OAC3B,CACA,SAASI,EAAWpoH,GAClB+nH,EAAmBn/N,KAAKoJ,KAAMguG,GAC9BhuG,KAAKm2N,UAAUnoH,EAAO,WACtBhuG,KAAKm2N,UAAUnoH,EAAO,UACxB,CACA,SAASqoH,EAAavhB,GACpB90M,KAAKi2N,eAAenhB,EAAS,QAC7B90M,KAAKk2N,YAAYphB,EAAQ1iJ,QACzBpyD,KAAKm2N,UAAUrhB,EAAS,OAC1B,CAlGAghB,EAAQp/N,UAAY,CAClBk+B,YAAakhM,EACbQ,UAAU,EAEVH,UAAW,SAAmBviM,EAAMv6B,GAClC,IAAIkB,EAAQyF,KAAKm1F,OAAOvhE,EAAKv6B,IAC7B,GAAI2G,KAAKs2N,SAAU,CAGjB,GAAI/7N,IAAUu7N,EAAQp/N,UAAU6D,EAAMtB,MACpC,MAAM,IAAI46M,EAAqB,QAAE,yBAA2Bt5M,EAAMtB,KAAO,0BAA4BI,EAAO,OAASu6B,EAAK36B,MAE5H26B,EAAKv6B,GAAQkB,CACf,CACF,EAGA07N,eAAgB,SAAwBriM,EAAMv6B,GAE5C,GADA2G,KAAKm2N,UAAUviM,EAAMv6B,IAChBu6B,EAAKv6B,GACR,MAAM,IAAIw6M,EAAqB,QAAEjgL,EAAK36B,KAAO,aAAeI,EAEhE,EAGA68N,YAAa,SAAqB5wN,GAChC,IAAK,IAAIhP,EAAI,EAAGgB,EAAIgO,EAAM9O,OAAQF,EAAIgB,EAAGhB,IACvC0J,KAAKm2N,UAAU7wN,EAAOhP,GACjBgP,EAAMhP,KACTgP,EAAMqwB,OAAOr/B,EAAG,GAChBA,IACAgB,IAGN,EACA69F,OAAQ,SAAgBn6F,GACtB,GAAKA,EAAL,CAKA,IAAKgF,KAAKhF,EAAO/B,MACf,MAAM,IAAI46M,EAAqB,QAAE,iBAAmB74M,EAAO/B,KAAM+B,GAE/DgF,KAAKwvD,SACPxvD,KAAKknC,QAAQmH,QAAQruC,KAAKwvD,SAE5BxvD,KAAKwvD,QAAUx0D,EACf,IAAI8oB,EAAM9jB,KAAKhF,EAAO/B,MAAM+B,GAE5B,OADAgF,KAAKwvD,QAAUxvD,KAAKknC,QAAQjwC,SACvB+I,KAAKs2N,UAAYxyM,EACbA,GACU,IAARA,EACF9oB,OADF,CAdP,CAiBF,EACAu7N,QAAS,SAAiBC,GACxBx2N,KAAKk2N,YAAYM,EAAQxmL,KAC3B,EACAymL,kBAAmBV,EACnBW,UAAWX,EACXY,eAAgBP,EAChBQ,eAAgBR,EAChBS,iBAAkBR,EAClBS,sBAAuB,SAA+BhiB,GACpDuhB,EAAaz/N,KAAKoJ,KAAM80M,GACxB90M,KAAKm2N,UAAUrhB,EAAS,UAC1B,EACAiiB,iBAAkB,WAA0C,EAC5DC,iBAAkB,WAA0C,EAC5DC,cAAelB,EACfmB,eAAgB,WAAqC,EACrDC,cAAe,WAAsC,EACrDC,cAAe,WAAsC,EACrDC,eAAgB,WAAqC,EACrDC,iBAAkB,WAA0C,EAC5DC,YAAa,WAAqC,EAClDC,KAAM,SAAcx2L,GAClBhhC,KAAKk2N,YAAYl1L,EAAK0/B,MACxB,EACA+2J,SAAU,SAAkBnkF,GAC1BtzI,KAAKi2N,eAAe3iF,EAAM,QAC5B,GAiBFl8I,EAAiB,QAAI0+N,EACrBz+N,EAAOD,QAAUA,EAAiB,O,8hDCxGG,I,MAAAg6C,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAyDlC,O,EAzDkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WAAS,IAAA69D,EAAA,KACSp4D,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GACXA,EAAEmjE,aAAa,mBAAyD,QAApCnjE,EAAEw8B,aAAa,mBACrDqkC,EAAKnQ,UAET,GACF,GAAC,CAAAptD,IAAA,WAAAN,MAED,WACkByF,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GAEf,IAAMgkC,EAAMhkC,EAAEw8B,aAAa,mBAAmB9lB,MAAM,KAC9CmwB,EAAY7mC,EAAEw8B,aAAa,cAGvB,WAFMx8B,EAAEmjE,aAAa,gBAAkBnjE,EAAEw8B,aAAa,iBAgBhE,WACE,IAAMmyD,EAAS3uF,EAAEw8B,aAAa,aACxBxM,EAAShwB,EAAEw8B,aAAa,eACxBwH,EAAMvjC,SAASskC,iBAAiB4pD,GAEtC3qD,EAAIjjB,SAAQ,SAACwkB,GACX,GAAIvV,EAEF,IAAK,IAAIjxB,EAAIwmC,EAAGoyC,UAAU14E,OAAS,EAAGF,GAAK,EAAGA,IAAK,CACjD,IAAMyhO,EAAYj7L,EAAGoyC,UAAU54E,GAC3ByhO,EAAUh7H,WAAWx1E,IACvBuV,EAAGoyC,UAAUhmC,OAAO6uL,EAExB,MAEAj7L,EAAGoyC,UAAUhmC,OAAO9K,EAExB,GAEF,CAjCmB45L,GAIjBz8L,EAAIjjB,SAAQ,SAAAwkB,IACNA,EAAK9kC,SAASskC,iBAAiB,IAAIzpB,OAAOiqB,MAE5CA,EAAGxkB,SAAQ,SAAC/gB,GACVA,EAAE23E,UAAU58D,IAAI8rB,EAClB,GAEJ,GAuBJ,GACF,M,8EAACgT,CAAA,CAzDkC,C,KAERy3B,G,EAAUz3B,E,EACrB,CAAC,Y,MADoB,c,qnDCbD,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA6BnC,O,EA7BmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKpC,WACEyF,KAAKi4N,aACP,GACA,CAAAp9N,IAAA,cAAAN,MACA,WACEa,QAAQ48I,IAAI,kBACIh4I,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GACHA,EAAEw8B,aAAa,mBAAmB9lB,MAAM,KAChDqK,SAAQ,SAACwkB,GACX,IAAMo7L,EAAgB3gO,EAAEw8B,aAAa,qBAC/BokM,EAAiB5gO,EAAEw8B,aAAa,qBAAqB9lB,MAAM,KAC3DmqN,EAAsB7gO,EAAEw8B,aAAa,4BACrCskM,EAAcrgO,SAAS8jC,eAAeo8L,GACtC/4G,EAAgBnnH,SAAS8jC,eAAegB,GAG1Cq7L,EAAen1G,SAASq1G,EAAY99N,MAAMiO,eAC5C22G,EAAcjwC,UAAU58D,IAAI8lN,GAE5Bj5G,EAAcjwC,UAAUhmC,OAAOkvL,EAEnC,GACF,GACF,M,8EAAChnL,CAAA,CA7BmC,C,KAETy3B,G,EAAUz3B,E,EACpB,CAAE,Y,MADkB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAyClC,O,EAzCkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAMnC,WACEyF,KAAKs4N,gBACP,GAAC,CAAAz9N,IAAA,WAAAN,MAED,SAAS5B,GACPqH,KAAKs4N,gBACP,GAAC,CAAAz9N,IAAA,iBAAAN,MAED,WACE,IAAMusC,EAAU9mC,KAAK83N,eACfxiI,EAAS,IAAItsC,UACnBliB,EAAQxuB,SAAQ,SAAC/gB,GACf,IAAMghO,EAAmBvgO,SAASgmC,cAAc,IAAMzmC,EAAEw8B,aAAa,kCAC/DykM,EAAejhO,EAAEw8B,aAAa,6BAC9BqK,EAAY7mC,EAAEw8B,aAAa,cAC3BwH,EAAMhkC,EAAEw8B,aAAa,kBAAkB9lB,MAAM,KACvCqnF,EAAOrsC,gBAAgBsvK,EAAiBl6L,UAAW,aAG3C2R,KAAKxZ,YAAYpxB,QAAQ,aAAc,IACrCkvD,OAAOrmD,MAAM,OACbzX,QAEL6Z,SAASmoN,GACxBj9L,EAAIjjB,SAAQ,SAAC/gB,GACFS,SAAS8jC,eAAevkC,GAC9B23E,UAAUhmC,OAAO9K,EACtB,IAEA7C,EAAIjjB,SAAQ,SAAC/gB,GACFS,SAAS8jC,eAAevkC,GAC9B23E,UAAU58D,IAAI8rB,EACnB,GAEJ,GACF,M,8EAACgT,CAAA,CAzCkC,C,KAERy3B,G,EAAUz3B,E,EAEpB,CAAC,Y,MAFmB,c,qvDCFD,IAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,IAAAgnB,G,4FAAAy/J,CAAA,KAAAzmL,GAAA,QAAAk+B,EAAAxzE,UAAAtF,OAAAqL,EAAA,IAAA1F,MAAAmzE,GAAA5iC,EAAA,EAAAA,EAAA4iC,EAAA5iC,IAAA7qC,EAAA6qC,GAAA5wC,UAAA4wC,GAMI,OADxCupK,EAAAwiB,EALoCrgK,EAAAoE,EAAA5lE,KAAAiF,MAAA2gE,EAAA,OAAA3pD,OAAAhR,KAKpC,gBACgBu2D,EAAKnQ,SAASntD,KAAI29N,EAAArgK,KAAMA,CAAA,CAkDvC,O,EAlDuChnB,G,EAAA,EAAAv2C,IAAA,UAAAN,MAExC,WACEvC,SAAS2lC,iBAAiB,UAAW39B,KAAK04N,eAC1C1gO,SAAS2lC,iBAAiB,kBAAmB39B,KAAK04N,eAClD1gO,SAAS2lC,iBAAiB,kBAAmB39B,KAAK24N,qBAAqB79N,KAAKkF,MAC9E,GAAC,CAAAnF,IAAA,aAAAN,MAED,WACEvC,SAAS+zC,oBAAoB,UAAW/rC,KAAK04N,eAC7C1gO,SAAS+zC,oBAAoB,kBAAmB/rC,KAAK04N,eACrD1gO,SAAS+zC,oBAAoB,kBAAmB/rC,KAAK24N,qBAAqB79N,KAAKkF,MACjF,GAAC,CAAAnF,IAAA,WAAAN,MAED,WACkByF,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GACf,IAAMqhO,EAAUrhO,EAAEw8B,aAAa,iBACzB8kM,EAAe7gO,SAAS8jC,eAAe88L,GACvCE,EAAcvhO,EAAEw8B,aAAa,mBAC7BglM,EAAexhO,EAAEw8B,aAAa,sBAC9BqK,EAAY7mC,EAAEw8B,aAAa,cAC3BilM,EAAe19N,OAAOq1H,eACtBsoG,EAA6C,SAAnC1hO,EAAEw8B,aAAa,gBAEzBmlM,EAAyBL,EAAanhM,SAASshM,EAAa7+F,YAElE,GAAuC,IAAnC6+F,EAAa58N,WAAW5F,QAA2B,GAAXyiO,GAC1C,GAAIH,EACqB9gO,SAAS8jC,eAAeg9L,GAChC5pJ,UAAUhmC,OAAO9K,QAC3B,GAAI26L,EAAc,CACvB,IAAMI,EAAkBnhO,SAASikC,uBAAuB88L,GACxD58N,MAAMmE,KAAK64N,GAAiB7gN,SAAQ,SAACwkB,GAAE,OAAKA,EAAGoyC,UAAUhmC,OAAO9K,EAAU,GAC5E,OACK,GAAI46L,EAAa58N,WAAWk4D,OAAO99D,OAAS,GAAK0iO,EACtD,GAAIJ,EACqB9gO,SAAS8jC,eAAeg9L,GAChC5pJ,UAAU58D,IAAI8rB,QACxB,GAAI26L,EAAc,CACvB,IAAMK,EAAkBphO,SAASikC,uBAAuB88L,GACxD58N,MAAMmE,KAAK84N,GAAiB9gN,SAAQ,SAACwkB,GAAE,OAAKA,EAAGoyC,UAAU58D,IAAI8rB,EAAU,GACzE,CAEJ,GACF,GAAC,CAAAvjC,IAAA,uBAAAN,MAED,WACEvC,SAAS+zC,oBAAoB,UAAW/rC,KAAK04N,eAC7C1gO,SAAS+zC,oBAAoB,kBAAmB/rC,KAAK04N,cACvD,M,8EAACtnL,CAAA,CAxDmC,C,KAETy3B,GAAUotI,EAAA7kK,EAAA,UACpB,CAAC,W,qkDCFW,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAiH5B,O,EAjH4Bs1C,G,EAAA,EAAAv2C,IAAA,aAAAN,MAM7B,WACEyF,KAAKowC,OAASpwC,KAAKowC,OAAOt1C,KAAKkF,MAC/BA,KAAK44D,QAAU54D,KAAK44D,QAAQ99D,KAAKkF,KACnC,GAAC,CAAAnF,IAAA,UAAAN,MAED,WAAU,IAAA69D,EAAA,KACHp4D,KAAKq5N,uBACVr5N,KAAKs5N,kBAAkB37L,iBAAiB,SAAU39B,KAAKowC,QACvDpwC,KAAKu5N,gBAAgBjhN,SAAQ,SAAA+pB,GAAQ,OAAIA,EAAS1E,iBAAiB,SAAUy6B,EAAKQ,QAAQ,IAC1F54D,KAAK44D,UACP,GAAC,CAAA/9D,IAAA,aAAAN,MAED,WAAa,IAAAk6E,EAAA,KACNz0E,KAAKq5N,uBAEVr5N,KAAKs5N,kBAAkBvtL,oBAAoB,SAAU/rC,KAAKowC,QAC1DpwC,KAAKu5N,gBAAgBjhN,SAAQ,SAAA+pB,GAAQ,OAAIA,EAAS0J,oBAAoB,SAAU0oC,EAAK7b,QAAQ,IAC/F,GAAC,CAAA/9D,IAAA,SAAAN,MAED,SAAOhD,GAAE,IAAAq9E,EAAA,KACPr9E,EAAEg8C,iBAEFvzC,KAAKu5N,gBAAgBjhN,SAAQ,SAAA+pB,GAC3BA,EAASX,QAAUnqC,EAAE4B,OAAOuoC,QAC5BkzC,EAAK4kJ,kBAAkBn3L,EACzB,IACAriC,KAAKy5N,gBACP,GAAC,CAAA5+N,IAAA,UAAAN,MAED,WACE,IAAMm/N,EAAkB15N,KAAKu5N,gBAAgB/iO,OACvCmjO,EAAyB35N,KAAK0hC,QAAQlrC,OAE5CwJ,KAAKs5N,kBAAkB53L,QAAUi4L,EAAyB,EAC1D35N,KAAKs5N,kBAAkBljC,cAAgBujC,EAAyB,GAAKA,EAAyBD,EAC9F15N,KAAKy5N,gBACP,GAAC,CAAA5+N,IAAA,iBAAAN,MAED,WACMyF,KAAK0hC,QAAQlrC,OAAS,EACxBwJ,KAAK45N,kBAEL55N,KAAK65N,cAET,GAAC,CAAAh/N,IAAA,kBAAAN,MAED,WACE,IAAIu/N,EAAW9hO,SAAS8jC,eAAe,YACnCg+L,GACLA,EAAS5qJ,UAAUhmC,OAAO,SAE3B,GAAC,CAAAruC,IAAA,eAAAN,MAED,WACE,IAAIu/N,EAAW9hO,SAAS8jC,eAAe,YACnCg+L,GACLA,EAAS5qJ,UAAU58D,IAAI,SAExB,GAAC,CAAAzX,IAAA,oBAAAN,MAED,SAAmB8nC,GACjB,IAAM1pC,EAAQ,IAAI88C,MAAM,QAAS,CAAEe,SAAS,EAAOC,YAAY,IAE/DpU,EAASsyD,cAAch8F,EACzB,GAAC,CAAAkC,IAAA,UAAAV,IAED,WACE,OAAO6F,KAAKu5N,gBAAgB/zM,QAAO,SAAA6c,GAAQ,OAAIA,EAASX,OAAO,GACjE,GAAC,CAAA7mC,IAAA,YAAAV,IAED,WACE,OAAO6F,KAAKu5N,gBAAgB/zM,QAAO,SAAA6c,GAAQ,OAAKA,EAASX,OAAO,GAClE,GAAC,CAAA7mC,IAAA,UAAAN,MAED,SAAQ5B,GACNA,EAAM46C,iBAEN,IAAIt9C,EAAO,IAAIkhG,SACX4iI,EAAe/5N,KAAK0hC,QACxB1hC,KAAK0hC,QAAQppB,SAAQ,SAAC+pB,GAAQ,OAAKpsC,EAAKukD,OAAO,QAASnY,EAAS9nC,MAAM,IACvE04F,IAAMpmC,KAAK,CACTb,IAAK,gBACL/yD,KAAM,SACNhD,KAAMA,EACN24D,QAAS,WACPmrK,EAAazhN,SAAQ,SAAC+pB,GAAQ,OAAKrqC,SAAS8jC,eAAe,WAAWuG,EAAS9nC,OAAO2uC,QAAQ,IAC9FurB,EAAE,2BAA2B67H,MAAM,OACrC,GAEJ,GAAC,CAAAz1L,IAAA,SAAAN,MAED,SAAO5B,GACLA,EAAM46C,iBAEN,IAAIumL,EAAW9hO,SAASgmC,cAAc,kBAClC/nC,EAAO,IAAIkhG,SAAS2iI,GACxB95N,KAAK0hC,QAAQppB,SAAQ,SAAC+pB,GAAQ,OAAKpsC,EAAKukD,OAAO,QAASnY,EAAS9nC,MAAM,IAEvE04F,IAAMpmC,KAAK,CACTb,IAAK,gBACL/yD,KAAM,QACNhD,KAAMA,EACN24D,QAAS,WACP,IAAIgnC,EAAO59F,SAAS8jC,eAAe,sBACnCm3D,IAAMlqD,KAAK6sD,EAAM,SACnB,GAEJ,M,8EAACxkD,CAAA,CAjH4B,CAEFy3B,K,EAAUz3B,E,EAEpB,CAAC,cAAe,a,MAFI,c,soDCHD,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAsDnC,O,EAtDmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKpC,WACEa,QAAQ48I,IAAI,iCACd,GAAC,CAAAn9I,IAAA,OAAAN,MAED,SAAK5B,GAAO,IAAAy/D,EAAA,KACVz/D,EAAM46C,iBACN,IAAMxR,EAASppC,EAAMu8C,cACf8kL,EAAaj4L,EAAOq1K,QAAQ6iB,cAE9BzmJ,UAAU0mJ,WAAa1mJ,UAAU0mJ,UAAUC,UAC7C3mJ,UAAU0mJ,UAAUC,UAAUH,GAAY7xL,MAAK,WAC7CiwB,EAAKgiK,mBAAmBr4L,EAC1B,IAAE,OAAO,SAAA5mC,GACPC,QAAQ3C,MAAM,wBAAyB0C,EACzC,IAEA6E,KAAKq6N,4BAA4BL,EAAYj4L,EAEjD,GAAC,CAAAlnC,IAAA,8BAAAN,MAED,SAA4Bu5B,EAAMiO,GAChC,IAAMu4L,EAAWtiO,SAASC,cAAc,YACxCqiO,EAAS//N,MAAQu5B,EAEjBwmM,EAASrrL,MAAMkO,SAAW,QAC1Bm9K,EAASrrL,MAAMvR,IAAM,UACrB48L,EAASrrL,MAAMiT,KAAO,UACtBlqD,SAASg4C,KAAKt2C,YAAY4gO,GAC1BA,EAASn5L,QACTm5L,EAAS79L,SAET,IACEzkC,SAASy4H,YAAY,QACrBzwH,KAAKo6N,mBAAmBr4L,EAC1B,CAAE,MAAO5mC,GACPC,QAAQ3C,MAAM,iCAAkC0C,EAClD,CAEAnD,SAASg4C,KAAK/b,YAAYqmM,EAC5B,GAAC,CAAAz/N,IAAA,qBAAAN,MAED,SAAmBwnC,GACjB,IAAMw4L,EAAkBx4L,EAAO1D,UACzBm8L,EAAiBx6N,KAAK/J,KAAKkE,IAAI,UAAY,qCACjD4nC,EAAO1D,UAAYm8L,EAEnBhhO,YAAW,WACTuoC,EAAO1D,UAAYk8L,CACrB,GAAG,IACL,M,8EAACnpL,CAAA,CAtDmC,C,KAETy3B,G,EAAUz3B,E,EACpB,CAAC,W,MADmB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAwDlC,O,EAxDkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WACEvC,SAAS2lC,iBAAiB,sBAAuB39B,KAAKy6N,wBACxD,GAAC,CAAA5/N,IAAA,aAAAN,MAED,WACEyF,KAAK06N,sBACL1iO,SAAS+zC,oBAAoB,sBAAuB/rC,KAAKy6N,wBAC3D,GAAC,CAAA5/N,IAAA,0BAAAN,MAED,WACEyF,KAAK06N,qBACP,GAAC,CAAA7/N,IAAA,eAAAN,MAED,WACEyF,KAAK26N,kBACP,GAAC,CAAA9/N,IAAA,gBAAAN,MAED,SAAc5B,GACZ,IAAMQ,EAAS6G,KAAK46N,cAGdzjK,EAAUn/D,SAAS8jC,eAAe3iC,EAAO46B,aAAa,oBACtD8mM,EAAkB1hO,EAAOuhE,aAAa,kBAAoBvhE,EAAO46B,aAAa,kBAAkB9lB,MAAM,KAAO,GAC7G6sN,EAAc3hO,EAAOuhE,aAAa,gBAAkB1iE,SAAS8jC,eAAe3iC,EAAO46B,aAAa,iBAAmB,KACnHk0B,EAAW9uD,EAAO46B,aAAa,yBAA2B,GAC1Ds0B,EAAclvD,EAAO46B,aAAa,4BAA8B,GAChEgnM,EAASpiO,EAAMgyG,eAAeqY,SAAS83G,GACvCE,EAAmBriO,EAAMgyG,eAAeqY,SAAS7rD,KAAa4jK,EAC9DE,EAAYJ,EAAgBl/N,MAAK,SAAAogC,GAAE,OAAIpjC,EAAMgyG,eAAeqY,SAAShrH,SAAS8jC,eAAeC,GAAI,IAEnGi/L,GAAoBC,EAGtBj7N,KAAK26N,oBAED1yK,GAAUjoD,KAAKioD,SAASkP,EAASlP,GACjCI,GAAaroD,KAAKqoD,YAAY8O,EAAS9O,GAE/C,GAAC,CAAAxtD,IAAA,mBAAAN,MAED,WAAmB,IAAA69D,EAAA,KACjBp4D,KAAKk7N,mBAAqB,SAAAviO,GAAK,OAAIy/D,EAAK+iK,cAAcxiO,EAAM,EAC5DX,SAAS2lC,iBAAiB,QAAS39B,KAAKk7N,mBAAoB,CAAEvvC,SAAS,EAAM3iJ,MAAM,GACrF,GAAC,CAAAnuC,IAAA,WAAAN,MAED,SAASuiC,EAAIs+L,GACXt+L,EAAGoyC,UAAU58D,IAAI8oN,EACnB,GAAC,CAAAvgO,IAAA,cAAAN,MAED,SAAYuiC,EAAIs+L,GACdt+L,EAAGoyC,UAAUhmC,OAAOkyL,EACtB,M,8EAAChqL,CAAA,CAxDkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAclC,O,EAdkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAMnC,WAAW,GAAC,CAAAM,IAAA,UAAAN,MAEZ,WACE,IAAI8gO,EAAcr7N,KAAK46N,cAAc7mM,aAAa,qBAC9CunM,EAAetjO,SAAS8jC,eAAe97B,KAAK46N,cAAc7mM,aAAa,uBACvEwnM,EAAgBvjO,SAAS8jC,eAAe97B,KAAK46N,cAAc7mM,aAAa,wBAE5EunM,EAAa/gO,OAAS8gO,EAAcE,EAAclgM,UAAW,EAAQkgM,EAAclgM,UAAW,CAChG,M,8EAAC+V,CAAA,CAdkC,C,KAERy3B,G,EAAUz3B,E,EAEpB,CAAC,Y,MAFmB,c,6mDCFF,IAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAelC,O,EAfkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAInC,SAAQ5B,GACNA,EAAM46C,iBAEN,IAAIt9C,EAAO,IAAIkhG,SACfn3F,KAAK0hC,QAAQppB,SAAQ,SAAC+pB,GAAQ,OAAKpsC,EAAKukD,OAAO,QAASnY,EAAS9nC,MAAM,IACvEa,QAAQ48I,IAAI,gBACZ/kD,MAAMpmC,KAAK,CACTb,IAAK,iBACL/yD,KAAM,SACNhD,KAAMA,GAEV,M,8EAACm7C,CAAA,CAfkC,C,KAERy3B,E,8hDCFQ,I,MAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA6BlC,O,EA7BkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WACEyF,KAAKw7N,gBAAkBx7N,KAAKy7N,SAAS3gO,KAAKkF,MAC1CA,KAAK07N,kBAAoB17N,KAAKy7N,SAAS3gO,KAAKkF,MAC5CA,KAAK27N,kBAAoB37N,KAAKy7N,SAAS3gO,KAAKkF,MAC5C,IAAM64N,EAAe7gO,SAAS8jC,eAAe97B,KAAK47N,cAClD/C,EAAal7L,iBAAiB,UAAW39B,KAAKw7N,iBAC9C3C,EAAal7L,iBAAiB,YAAa39B,KAAK07N,mBAChD7C,EAAal7L,iBAAiB,YAAa39B,KAAK27N,mBAChD37N,KAAK64N,aAAeA,CACtB,GAAC,CAAAh+N,IAAA,aAAAN,MAED,WACEyF,KAAK64N,aAAa9sL,oBAAoB,UAAW/rC,KAAKw7N,iBACtDx7N,KAAK64N,aAAa9sL,oBAAoB,YAAa/rC,KAAK07N,mBACxD17N,KAAK64N,aAAa9sL,oBAAoB,YAAa/rC,KAAK27N,kBAC1D,GAAC,CAAA9gO,IAAA,WAAAN,MAED,WACE,IAAMshO,EAAc7jO,SAAS8jC,eAAe97B,KAAK87N,oBAE3ChoM,EADYx4B,OAAOq1H,eACFv0H,WACnB03B,IACF+nM,EAAYthO,MAAQu5B,EAExB,M,8EAACsd,CAAA,CA7BkC,C,KAERy3B,G,EAAUz3B,E,EAAA,S,EACrB,CAAE2qL,cAAej3M,OAAQ8zM,QAAS9zM,S,+nDCHf,I,MAAAssB,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAclC,O,EAdkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAInC,WACEkhO,UACF,GAAC,CAAA5gO,IAAA,WAAAN,MAED,WACE,IAAMyhO,EAAah8N,KAAKi8N,aAAaloM,aAAa,WAE5CoiK,EADMn+L,SAAS8jC,eAAekgM,GAAYzqH,gBAAgB,GAC3Cz9E,KACrB9zB,KAAKk8N,sBAAsB5jN,SAAQ,SAAA6jN,GAAS,OAAInkO,SAAS8jC,eAAeqgM,EAAUpoM,aAAa,OAAOx5B,MAAQ47L,CAAQ,IACtHn2L,KAAKo8N,qBAAqB9jN,SAAQ,SAAA6jN,GAAS,OAAInkO,SAAS8jC,eAAeqgM,EAAUpoM,aAAa,OAAOsK,UAAY83J,CAAQ,GAC3H,M,8EAAC/kJ,CAAA,CAdkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,SAAU,iBAAkB,kB,MADT,c,ipDCDE,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA4CtC,O,EA5CsCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKvC,WACE,GACD,CAAAM,IAAA,aAAAN,MAED,WACkByF,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GACf,IAAI8kO,EAAe9kO,EAAEw8B,aAAa,qBAC9B0oB,EAAYzkD,SAASgmC,cAAc,IAAMq+L,GACvCC,EAAW/kO,EAAEw8B,aAAa,kBACX0oB,EAAUngB,iBAAiB,iBAEnChkB,SAAQ,SAACikN,GACpB,IAAM94J,EAAa84J,EAAGxoM,aAAa,eAC7ByoM,EAAa,GAAH3pN,OAAMypN,EAAQ,KAAAzpN,OAAI4wD,GAC5Bg5J,EAA2BzkO,SAAS8jC,eAAe0gM,GAIzD,GAHAphO,QAAQ48I,IAAIv0E,GAGM,YAAdA,EAA0B,CAC5B,IAAIi5J,EAAc1kO,SAASgmC,cAAc,aACrC2+L,EAAa,IAAIC,cAAc,QAAS,CAC1C/hO,IAAK,UAEPO,QAAQ48I,IAAI0kF,GACZ,IAAI72F,EAAS3a,IAAauqB,qBAAqBinF,GAC3C72F,GACFA,EAAOpnG,SAAS,GAAGJ,UAAYk+L,EAAGl+L,UAAUi2B,OAC5CuxE,EAAOryF,QAAQ,gBAAiB,KAAMqyF,EAAOpnG,SAAS,IACtDzmC,SAAS28F,cAAcgoI,IAEvBvhO,QAAQ48I,IAAI,kCAEhB,MACEykF,EAAyBliO,MAAQgiO,EAAGl+L,UAAUi2B,OAAOlvD,QAAQ,aAAc,GAG/E,GACF,GACF,M,8EAACgsC,CAAA,CA5CsC,CAEZy3B,K,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCHF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA2BjC,O,EA3BiCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAInC,WAEA,GAAC,CAAAM,IAAA,YAAAN,MACD,WACkByF,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GACf,IAAMykO,EAAazkO,EAAEw8B,aAAa,kBAC5B8oM,EAA2BtlO,EAAEw8B,aAAa,+BAC5CojC,EAAUn/D,SAAS8jC,eAAekgM,GACtC,IAAK7kK,EAAS,CACZ,IAAI14B,EAAWzmC,SAAS6lC,kBAAkBm+L,GACtCv9L,EAASjoC,OAAS,IACpB2gE,EAAU14B,EAAS,GAEvB,CACA,IAAM03J,EAAWh/H,EAAUA,EAAQ58D,MAAQ,KACrCuiO,EAAcvlO,EAAEw8B,aAAa,gBAC/B8oM,EACF7kO,SAAS8jC,eAAeghM,GAAazkO,aAAawkO,EAA0B1mC,GAE5En+L,SAAS8jC,eAAeghM,GAAaviO,MAAQ47L,CAEjD,GACD,M,8EAAC/kJ,CAAA,CA3BiC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,6mDCFF,IAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAWlC,O,EAXkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAInC,WACA,GAAC,CAAAM,IAAA,eAAAN,MAED,SAAahD,GACM,IAAbA,EAAE6/C,SACJ7/C,EAAEg8C,gBAEN,M,8EAACnC,CAAA,CAXkC,C,KAERy3B,E,8hDCG7B,I,MAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA2BG,O,EA3BHs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAIE,WACE,GACD,CAAAM,IAAA,WAAAN,MACD,WACkByF,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GAGf,IAAM02B,EAAQj2B,SAAS8jC,eAAevkC,EAAEw8B,aAAa,uBAC/CgpM,EAAgB/kO,SAAS8jC,eAAevkC,EAAEw8B,aAAa,wBACvDipM,EAAiBhlO,SAAS8jC,eAAevkC,EAAEw8B,aAAa,yBAE5C,IAAf9F,EAAM1zB,OAEPwiO,EAAc7tJ,UAAU58D,IAAI,UAC5B0qN,EAAe9tJ,UAAUhmC,OAAO,YAGhC6zL,EAAc7tJ,UAAUhmC,OAAO,UAC/B8zL,EAAe9tJ,UAAU58D,IAAI,UAGjC,GACF,M,8EAAC8+B,CAAA,CA3BH,C,KAE6By3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCPF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAwBlC,O,EAxBkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WAAU,IAAA69D,EAAA,KACR5+D,YAAW,WAAO4+D,EAAK6kK,mBAAoB,GAAG,IAC9CzjO,YAAW,WAAO4+D,EAAK6kK,mBAAoB,GAAG,KAC9CzjO,YAAW,WAAO4+D,EAAK6kK,mBAAoB,GAAG,KAC9CzjO,YAAW,WAAO4+D,EAAK6kK,mBAAoB,GAAG,KAC9CzjO,YAAW,WAAO4+D,EAAK6kK,mBAAoB,GAAG,MAC9CzjO,YAAW,WAAO4+D,EAAK6kK,mBAAoB,GAAG,KAC9CzjO,YAAW,WAAO4+D,EAAK6kK,mBAAoB,GAAG,IAChD,GAAC,CAAApiO,IAAA,oBAAAN,MAED,WAEE,IAAI2iO,EAAYl9N,KAAKm9N,sBACrBD,EAAUjuL,MAAMiP,OAAS,EACzB,IAAIk/K,EAAc/sN,SAASorC,iBAAiByhL,EAAW,MAAM/gL,iBAAiB,gBAC1EkhL,EAAiBhtN,SAASorC,iBAAiByhL,EAAW,MAAM/gL,iBAAiB,mBAE7EmhL,EADeJ,EAAUt7I,aAAe,GACXw7I,EAAcC,EAC/CH,EAAUjuL,MAAMiP,OAASo/K,EAAc,IACzC,M,8EAAClsL,CAAA,CAxBkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,oB,MADmB,c,qnDCOF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAOlC,O,EAPkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WACEyF,KAAKu9N,aAAa/mM,YAAc,kBAClC,M,8EAAC4a,CAAA,CAPkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAE,W,MADkB,c,qnDCNvC,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAwBG,O,EAxBHs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAIE,WACE,GACD,CAAAM,IAAA,WAAAN,MACD,WACkByF,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GAGf,IAAM02B,EAAQj2B,SAAS8jC,eAAevkC,EAAEw8B,aAAa,uBAC/C0oB,EAAYzkD,SAAS8jC,eAAevkC,EAAEw8B,aAAa,mBAEvC,IAAf9F,EAAM1zB,MAEPkiD,EAAUyyB,UAAU58D,IAAI,UAGxBmqC,EAAUyyB,UAAUhmC,OAAO,SAG/B,GACF,M,8EAACkI,CAAA,CAxBH,C,KAE6By3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCNF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA2BhC,O,EA3BgCs1C,G,EAAA,EAAAv2C,IAAA,WAAAN,MAKnC,WACI,IAAIjC,EAAM0H,KAAKw9N,aAAazpM,aAAa,OACrCsvF,EAAcrjH,KAAKw9N,aAAa9iK,aAAa,oBAAsB16D,KAAKw9N,aAAazpM,aAAa,oBAAsB,YACxH0pM,EAAez9N,KAAKw9N,aAAazpM,aAAa,sBAC9C2pM,EAAe19N,KAAKw9N,aAAazpM,aAAa,qBAC9C4pM,EAAkB39N,KAAKw9N,aAAazpM,aAAa,yBACjD6pM,EAAmB59N,KAAKw9N,aAAazpM,aAAa,0BAEtD/7B,SAAS8jC,eAAe,sBAAsBvhC,MAAQjC,EACtDN,SAAS8jC,eAAe,8BAA8BvhC,MAAQ8oH,EAC9DrrH,SAAS8jC,eAAe,gCAAgCvhC,MAAQkjO,EAChEzlO,SAAS8jC,eAAe,+BAA+BvhC,MAAQmjO,EAC/D1lO,SAAS8jC,eAAe,mCAAmCvhC,MAAQojO,EACnE3lO,SAAS8jC,eAAe,oCAAoCvhC,MAAQqjO,EAGpE5lO,SAAS8jC,eAAe,qBAAqB2G,SAK7CnnC,OAAO+3D,SAAS,EAAG,EACrB,M,8EAACjiB,CAAA,CA3BgC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,W,MADmB,c,6mDCFF,IAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAgBlC,O,EAhBkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAGnC,WACEa,QAAQ48I,IAAI,2BACZ,IAAIv7F,EAAYzkD,SAAS8jC,eAAe,6BACpCkwB,EAAMhsD,KAAK/J,KAAKkE,IAAI,OAExBshE,MAAMzP,GACH7jB,MAAK,SAAA8mB,GAAQ,OAAIA,EAASn7B,MAAM,IAChCqU,MAAK,SAAA2R,GACJ2C,EAAUpe,UAAYyb,CACxB,IAAE,OACK,SAAArhD,GACL2C,QAAQkG,KAAK7I,EACf,GACJ,M,8EAAC24C,CAAA,CAhBkC,C,KAERy3B,E,8hDCHQ,I,MAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAiClC,O,EAjCkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WAAU,IAAA69D,EAAA,KACR5+D,YAAW,WAAO4+D,EAAKzR,QAAQyR,EAAKylK,aAAa,GAAG,KACpDrkO,YAAW,WAAO4+D,EAAK1R,OAAO0R,EAAK0lK,cAAc,GAAG,IACtD,GAAC,CAAAjjO,IAAA,UAAAN,MAGD,SAAQuiC,GACNA,EAAGmS,MAAMoR,QAAU,EACnB,SAAUykH,KACHhoI,EAAGmS,MAAMoR,SAAW,IAAM,EAC7BvjB,EAAGmS,MAAMC,QAAU,OAEnBwU,sBAAsBohH,EAEzB,CAND,EAOF,GAAC,CAAAjqK,IAAA,SAAAN,MAGD,SAAOuiC,GACLA,EAAGmS,MAAMoR,QAAU,EACnBvjB,EAAGmS,MAAMC,QAAU,QACnB,SAAU41H,IACR,IAAItkK,EAAMsf,WAAWgd,EAAGmS,MAAMoR,UACvB7/C,GAAO,IAAM,IAClBs8B,EAAGmS,MAAMoR,QAAU7/C,EACnBkjD,sBAAsBohH,GAEzB,CAND,EAOF,M,8EAAC1zH,CAAA,CAjCkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,SAAU,Y,MADS,c,6vDCAvC,IAAM2sL,EAAgB,CACpB,yDACA,uEACA,gEACA,wDACA,oCACA,6EACA,uDACA,6DACA,+CACA,2CACA,iIACA,kEACA,4DACA,kDACA,sFACA,sFACA,+CACA,uEACA,oGACA,+GACA,wFACA,2FACA,2HACA,qHACA3sL,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAiCC,O,EAjCDs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MASA,WAAU,IAAA69D,EAAA,KACS,IAAIwqC,sBAAqB,SAAA/B,GACxCA,EAAQvoF,SAAQ,SAAA0lN,GACVA,EAAMv7H,gBACRrqC,EAAK6lK,uBAET,GACF,IAESxlK,QAAQz4D,KAAK46N,eAEtB56N,KAAKk+N,cAAgBl+N,KAAKk+N,eAAiB,IAC3Cl+N,KAAKm+N,WAAa,IACpB,GAAC,CAAAtjO,IAAA,wBAAAN,MAED,WAAwB,IAAAk6E,EAAA,KAClBz0E,KAAKm+N,YACPlqJ,cAAcj0E,KAAKm+N,YAGrBn+N,KAAKm+N,WAAahqJ,aAAY,WAC5B,IAAMiqJ,EAAcl6N,KAAKwF,MAAMxF,KAAKgyB,SAAW6nM,EAAcvnO,QAC7Di+E,EAAKmmJ,cAAcv8L,UAAY0/L,EAAcK,EAC/C,GAAGp+N,KAAKk+N,cACV,M,8EAAC9sL,CAAA,CAjCD,CAE2By3B,KAAUotI,EAAA7kK,EAAA,SACrB,CACduS,SAAU2kB,SACX2tI,EAAA7kK,EAAA,UAEgB,CAAC,W,yjDCjCO,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAqBzB,O,EArByBs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKzB,WACEyF,KAAKq+N,oBACP,GAAC,CAAAxjO,IAAA,qBAAAN,MACF,WACC,IAAMusC,EAAU9mC,KAAKs+N,YAEfC,EAAmB,2BAMzBz3L,EAAQxuB,SAAQ,SAAC/gB,GAEbA,EAAEi/B,YAAcs3L,IAAOjwN,IAAItG,EAAEi/B,YATT,yBASuCnU,QAAQ7e,SAAS,KAAM,CAAEN,QAPpE,kBAO0FG,QANtF,sBAMgHF,QALlH,qBAK0IG,SAAWi7N,EAAkBh7N,SAAUg7N,GACvM,GACD,M,8EAACntL,CAAA,CArByB,CAEEy3B,K,EAAUz3B,E,EACrB,CAAC,S,MADoB,c,6mDCHD,IAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAuEnC,O,EAvEmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAGpC,WACEyF,KAAKw+N,mBAAqBljO,OAAO0nF,WACjChjF,KAAKy+N,UAAYz+N,KAAKy+N,UAAU3jO,KAAKkF,MACrCA,KAAKy+N,YAELnjO,OAAOqiC,iBAAiB,SAAU39B,KAAKy+N,UACzC,GAAC,CAAA5jO,IAAA,aAAAN,MAED,WACEe,OAAOywC,oBAAoB,SAAU/rC,KAAKy+N,UAC5C,GAAC,CAAA5jO,IAAA,YAAAN,MAED,WAEE,GAAIe,OAAO0nF,aAAehjF,KAAKw+N,mBAAoB,CACjDx+N,KAAKw+N,mBAAqBljO,OAAO0nF,WACjC,IAAM07I,EAAe1+N,KAAKm3D,QAAQn5B,cAAc,kBAC5C0gM,IACFA,EAAaxvJ,UAAUhmC,OAAO,QAC9Bw1L,EAAa1gM,cAAc,kBAAkBkxC,UAAUhmC,OAAO,QAElE,CAgBA,IAdA,IAAMy1L,EAAiB3+N,KAAKm3D,QACtBynK,EAAqBD,EAAe3gM,cAAc,oBAClD6gM,EAAeF,EAAe3gM,cAAc,aAC5Cy5J,EAAYt7L,MAAMmE,KAAKq+N,EAAeriM,iBAAiB,mCACzDwiM,EAAYH,EAAe38K,wBAAwBjG,MAEjDgjL,EAAkBH,EAAmB58K,wBAAwBjG,MAI/DijL,GAHJF,EAAYF,EAAmB1vJ,UAAUx3C,SAAS,UAAYonM,EAAYA,EAAYC,GAGrDtnC,EAAUnhI,QAAO,SAACw/I,EAAKrwL,GAAI,OAAKqwL,EAAMrwL,EAAKu8B,wBAAwBjG,KAAK,GAAE,GAErGkjL,EAA0B9iO,MAAMmE,KAAKu+N,EAAaviM,iBAAiB,mBAElE0iM,EAAiB,GAAKC,EAAwBzoO,QAAQ,CAC3D,IAAM0oO,EAAsBD,EAAwB,GAC9CE,EAAYD,EAAoBl9K,wBAAwBjG,MAC9D,KAAIijL,EAAiBG,GAAa,GAMhC,MALAH,GAAkBG,EAClBF,EAAwBhoO,QACxBioO,EAAoBhwJ,UAAUhmC,OAAO,iBACrC21L,EAAa3+J,cAAcxlB,aAAawkL,EAAqBL,EAIjE,CAGA,IAAIO,EAAmB,EACvB3nC,EAAUn/K,SAAQ,SAAC+mN,IACjBD,GAAoBC,EAASr9K,wBAAwBjG,OAE9B+iL,IACrBO,EAASnwJ,UAAU58D,IAAI,iBACvBusN,EAAa7gM,cAAc,kBAAkByc,QAAQ4kL,GAEzD,IAI2C,IADlBR,EAAa7gM,cAAc,kBAC/B1C,WAAW9kC,OAC9BooO,EAAmB1vJ,UAAU58D,IAAI,UAEjCssN,EAAmB1vJ,UAAUhmC,OAAO,SAExC,M,8EAACkI,CAAA,CAvEmC,C,KAETy3B,E,8hDCFQ,I,MAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAYlC,O,EAZkCs1C,G,EAAA,EAAAv2C,IAAA,gBAAAN,MAInC,WACE,IAAI8lD,EAAUrgD,KAAKs/N,mBAAmB/kO,MAAQ,IAC1CiiO,EAAax8N,KAAKs/N,mBAAmBvrM,aAAa,mBAClDyO,EAAQxqC,SAAS8jC,eAAe0gM,GACpCphO,QAAQ48I,IAAI33F,GACZjlD,QAAQ48I,IAAIwkF,GACZphO,QAAQ48I,IAAIx1G,GACZA,EAAMyM,MAAMoR,QAAUA,CACxB,M,8EAACjP,CAAA,CAZkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,iB,MADmB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA0ClC,O,EA1CkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WAAU,IAAA69D,EAAA,KACR5+D,YAAW,WAAO4+D,EAAKmnK,WAAY,GAAG,IACxC,GAAC,CAAA1kO,IAAA,YAAAN,MAED,WACE,IAAIilO,EAAYx/N,KAAKy/N,aAAa1rM,aAAa,kBAC3C2rM,EAAa1/N,KAAKy/N,aAAa1rM,aAAa,mBAC5CyT,EAAUxvC,SAAS8jC,eAAe4jM,GAClCC,EAAS3nO,SAAS8jC,eAAe0jM,GAErCx/N,KAAK4/N,cAAcD,GACnB3/N,KAAK6/N,cAAcr4L,EAAS,QAC9B,GAAC,CAAA3sC,IAAA,gBAAAN,MAED,SAAcuiC,GACZA,EAAGmS,MAAMoR,QAAU,EACnB,SAAUykH,KACHhoI,EAAGmS,MAAMoR,SAAW,IAAM,EAC7BvjB,EAAGmS,MAAMC,QAAU,OAEnBwU,sBAAsBohH,EAEzB,CAND,GAOA1pK,QAAQ48I,IAAI,mBACd,GAAC,CAAAn9I,IAAA,gBAAAN,MAED,SAAcuiC,EAAIoS,GAChBpS,EAAGmS,MAAMoR,QAAU,EACnBvjB,EAAGmS,MAAMC,QAAUA,GAAW,QAC9B,SAAU41H,IACR,IAAItkK,EAAMsf,WAAWgd,EAAGmS,MAAMoR,UACvB7/C,GAAO,IAAM,IAClBs8B,EAAGmS,MAAMoR,QAAU7/C,EACnBkjD,sBAAsBohH,GAEzB,CAND,GAOA1pK,QAAQ48I,IAAI,8BACd,M,8EAAC5mG,CAAA,CA1CkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,W,MADmB,c,6mDCFD,IAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAUnC,O,EAVmCs1C,G,EAAA,EAAAv2C,IAAA,cAAAN,MAGpC,SAAY5B,GACV,IAAMmnO,EAAUnnO,EAAMu8C,cAAckiK,QAAQj/G,MACtCA,EAAQngG,SAAS8jC,eAAegkM,GAEhC9zK,EAAM,IAAIiwC,IAAI9D,EAAM7/F,KAC1B0zD,EAAI40C,aAAapmD,OAAO,SAAUt2C,KAAKgyB,UACvCiiE,EAAM7/F,IAAM0zD,EAAIzqB,IAClB,M,8EAAC6P,CAAA,CAVmC,C,KAETy3B,E,8hDCSU,I,MAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAkClC,O,EAlCkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WAAS,IAAA69D,EAAA,KACSp4D,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GACXA,EAAEmjE,aAAa,mBAAyD,QAApCnjE,EAAEw8B,aAAa,mBACrDqkC,EAAK/P,aAET,GACF,GAAC,CAAAxtD,IAAA,cAAAN,MAED,WACkByF,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GAEf,IAAMgkC,EAAMhkC,EAAEw8B,aAAa,mBAAmB9lB,MAAM,KAC9CmwB,EAAY7mC,EAAEw8B,aAAa,cAK/BwH,EAAIjjB,SAAQ,SAAAwkB,IACNA,EAAK9kC,SAASskC,iBAAiB,IAAIzpB,OAAOiqB,MAE5CA,EAAGxkB,SAAQ,SAAC/gB,GACVA,EAAE23E,UAAUhmC,OAAO9K,EACrB,GAEJ,GAEJ,GACF,M,8EAACgT,CAAA,CAlCkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCbJ,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAalC,O,EAbkCs1C,G,EAAA,EAAAv2C,IAAA,SAAAN,MAKnC,SAAO5B,GACLyC,QAAQ48I,IACQh4I,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GACfoB,EAAM46C,iBACN,IAAMohG,EAAc,IAAIngD,YAAY,mBACpCx8F,SAAS28F,cAAcggD,EACzB,GACF,M,8EAACvjG,CAAA,CAbkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,6mDCFD,IAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAcnC,O,EAdmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAIpC,WACE,IAAMwlO,EAAgB//N,KAAK/J,KAAKkE,IAAI,cAGpC,GAFqBmB,OAAOq1H,eAAev0H,WAEzB,CAChB,IAAM4jO,EAAUhoO,SAASu6C,eAAewtL,GAClC3vG,EAAQ90H,OAAOq1H,eAAeE,WAAW,GAC/CT,EAAM5iB,iBACN4iB,EAAMc,WAAW8uG,EACnB,CACF,M,8EAAC5uL,CAAA,CAdmC,C,KAETy3B,E,shDCFS,IAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAcnC,O,EAdmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAGpC,WAAU,IAAA69D,EAAA,KACRp4D,KAAKigO,iBACLjoO,SAAS2lC,iBAAiB,mBAAmB,kBAAMy6B,EAAK6nK,gBAAgB,GAC1E,GAAC,CAAAplO,IAAA,aAAAN,MAED,WAAa,IAAAk6E,EAAA,KACXz8E,SAAS+zC,oBAAoB,mBAAmB,kBAAM0oC,EAAKwrJ,gBAAgB,GAC7E,GAAC,CAAAplO,IAAA,iBAAAN,MAED,WACEyF,KAAKm3D,QAAQrU,UAAY9iD,KAAKm3D,QAAQyqB,YACxC,M,8EAACxwC,CAAA,CAdmC,C,KAETy3B,E,8hDCFQ,I,MAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAmBlC,O,EAnBkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WAEoB,SADFyF,KAAK46N,cAAc7mM,aAAa,mBAE/C/zB,KAAKqzD,UAER,GAAC,CAAAx4D,IAAA,WAAAN,MAED,WACE,IAAIywF,EAAWhrF,KAAK46N,cAAclgK,aAAa,iBAAmB16D,KAAK46N,cAAc7mM,aAAa,iBAAmB,OACjHyoM,EAAax8N,KAAK46N,cAAc7mM,aAAa,mBAG7CrsB,EAFU1P,SAAS8jC,eAAe0gM,GAEtBx6K,wBAAwBtkB,IAAMpiC,OAAO23D,aADtC,GAEf33D,OAAO+3D,SAAS,CAAC31B,IAAKh2B,EAAGsjF,SAAUA,GACrC,M,8EAAC55C,CAAA,CAnBkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAuBlC,O,EAvBkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WACEyF,KAAKmkI,eACP,GAAC,CAAAtpI,IAAA,gBAAAN,MAED,WACE,IAAIiiO,EAAax8N,KAAK46N,cAAc7mM,aAAa,mBAC7CojC,EAAUn/D,SAAS8jC,eAAe0gM,GACtCx8N,KAAKkgO,cAAc/oK,GACnBn3D,KAAKmgO,YAAYhpK,EACnB,GAAC,CAAAt8D,IAAA,cAAAN,MAED,SAAYuiC,GACVA,EAAGoyC,UAAU58D,IAAK,WACpB,GAAC,CAAAzX,IAAA,gBAAAN,MAED,SAAcuiC,GACZA,EAAGojC,cAAc5jC,iBAAkB,aAAchkB,SAAS,SAAA/gB,GAAC,OACzDA,EAAE23E,UAAUhmC,OAAQ,WAAY,GACpC,M,8EAACkI,CAAA,CAvBkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAUlC,O,EAVkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WAAW,GAAC,CAAAM,IAAA,cAAAN,MAEZ,WACE,IAAIiiO,EAAax8N,KAAK46N,cAAc7mM,aAAa,iBACjD/7B,SAAS8jC,eAAe0gM,GAAY//L,QACtC,M,8EAAC2U,CAAA,CAVkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCDF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAkHlC,O,EAlHkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WACEyF,KAAKogO,eACP,GAAC,CAAAvlO,IAAA,gBAAAN,MAED,WAAgB,IAAA69D,EAAA,KAIRioK,EADgBrgO,KAAKsgO,oBACatiM,cAAc,MAElDuiM,EAAc,KACdC,EAAgBxoO,SAASC,cAAc,OAC3CuoO,EAAcpiM,UAAY,iBAE1BoiM,EAAcvxL,MAAQ,qBAAHp8B,OATU,UASkC,+BAE7CwtN,EAAkB/jM,iBAAiB,MAArD,IAGMmkM,EAAqB,WACAJ,EAAkB/jM,iBAAiB,MAC3ChkB,SAAQ,SAACooN,GACxBA,EAASroO,aAAa,YAAa,QAGnCqoO,EAAS30L,oBAAoB,YAAa40L,GAE1CD,EAAS/iM,iBAAiB,YAAagjM,EACzC,IAEAN,EAAkBt0L,oBAAoB,WAAY60L,GAClDP,EAAkBt0L,oBAAoB,OAAQu1K,GAE9C+e,EAAkB1iM,iBAAiB,WAAYijM,GAC/CP,EAAkB1iM,iBAAiB,OAAQ2jL,EAC7C,EAGMqf,EAAc,SAAChoO,GACnB,IAAM+nO,EAAW/nO,EAAMQ,OAAO4tC,QAAQ,MACtCpuC,EAAMgvI,aAAazzC,QAAQ,YAAawsI,EAASjxH,WACjD92G,EAAMgvI,aAAazzC,QAAQ,aAAcwsI,EAAStpB,QAAQypB,iBAC1DN,EAAcG,GACFzxL,MAAQ,qBAAHp8B,OArCY,UAqCkC,kBACjE,EAGM+tN,EAAa,SAACjoO,GAClBA,EAAM46C,iBACN,IAAMp6C,EAASR,EAAMQ,OAAO4tC,QAAQ,MAEpC,GAAI5tC,EAAQ,CACV,IAAM2nO,EAASnoO,EAAM4+C,QACfwpL,EAAe5nO,EAAO6oD,wBAIxB8+K,EAHkBC,EAAarjM,IACdqjM,EAAa7iL,OAEY,EAC5C/kD,EAAO6nO,sBAAsB,cAAeR,GAE5CrnO,EAAO6nO,sBAAsB,WAAYR,EAE7C,CACF,EAEMlf,EAAS,SAAC3oN,GAKd,GAJAA,EAAM46C,iBACgB56C,EAAMgvI,aAAa75F,QAAQ,cAClCn1C,EAAMQ,OAAO4tC,QAAQ,MAEhCy5L,EAAcxsM,WAAY,CAC5B,IAAMitM,EAAkBtoO,EAAMgvI,aAAa75F,QAAQ,aAC7CozL,GAAqB,IAAIl4K,WAAYC,gBAAgBg4K,EAAiB,aAAajxL,KAAK1P,WAE1F4gM,GAAsBA,aAA8B/mK,MACtDkmK,EAAkB3lL,aAAawmL,EAAoBV,GACnDD,EAAYr3L,SACZs3L,EAAct3L,SACdkvB,EAAK+oK,YAGLV,KAEAD,EAAct3L,QAElB,MACEs3L,EAAct3L,QAElB,EAGAu3L,GACF,GAAC,CAAA5lO,IAAA,YAAAN,MAED,WACE,IAAM6mO,EAAgBphO,KAAKsgO,oBAAoBhkM,iBAAiB,MAC1D8kB,EAAQjlD,MAAMzF,UAAU8E,MAAM5E,KAAKwqO,GAAenkO,KAAI,SAACwoB,GAAI,OAAKA,EAAK2xL,QAAQypB,cAAc,IAE3FzsI,EAAYp8F,SAASgmC,cAAc,2BAA2BwJ,QAEpEi0B,MAAM,2BAA4B,CAChCxzB,OAAQ,MACRymB,QAAS,CACP,eAAgB,mBAChB,eAAgB0lC,EAChB,OAAU,8BAEZpkD,KAAMpC,KAAKg7B,UAAU,CAAExnB,WAE3B,M,8EAAChQ,CAAA,CAlHkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,kB,MADmB,c,gpDCFR,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAa5B,O,EAb4Bs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAK7B,WACIa,QAAQ48I,IAAI,qBAChB,GAAC,CAAAn9I,IAAA,aAAAN,MAED,WACE,IAAI8mO,EAAUrhO,KAAK46N,cAAc7mM,aAAa,gBAC1C6hE,EAAO59F,SAAS8jC,eAAeulM,GACnC7nO,YAAW,WAAOy5F,IAAMlqD,KAAK6sD,EAAM,SAAS,GAAG,IACjD,M,8EAACxkD,CAAA,CAb4B,CAEFy3B,K,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAqBlC,O,EArBkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WACEyF,KAAKshO,eAAiBthO,KAAKshO,eAAexmO,KAAKkF,MAC/CA,KAAKuhO,eAAe5jM,iBAAiB,UAAW39B,KAAKshO,eACvD,GAAC,CAAAzmO,IAAA,aAAAN,MAED,WACEyF,KAAKuhO,eAAex1L,oBAAoB,UAAW/rC,KAAKshO,eAC1D,GAAC,CAAAzmO,IAAA,iBAAAN,MAED,SAAe5B,GACK,UAAdA,EAAMkC,KAAoBlC,EAAMs+C,WAClCt+C,EAAM46C,iBACmC,KAArCvzC,KAAKuhO,eAAehnO,MAAM+5D,QAC5Bt0D,KAAKm3D,QAAQsiC,gBAGnB,M,8EAACroD,CAAA,CArBkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,a,MADmB,c,qnDCHD,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA8BnC,O,EA9BmCs1C,G,EAAA,EAAAv2C,IAAA,cAAAN,MAKpC,WACE,IAAMinO,EAAcxhO,KAAKm3D,QAAQigJ,QAAQoqB,YAGpCA,EAKL/lK,MAAM,eAAD5oD,OAAgB2uN,EAAW,iBAAiB,CAC/Cv5L,OAAQ,OACRymB,QAAS,CACP,eAAgB12D,SAASgmC,cAAc,2BAA2BwJ,QAClE,eAAgB,sBAGnBW,MAAK,SAAA8mB,GAAQ,OAAIA,EAAS3C,MAAM,IAChCnkB,MAAK,SAAAlyC,GACJ,IAAMwrO,EAAsBzpO,SAAS8jC,eAAe,gBAChD2lM,IACFA,EAAoBrjM,UACH,SAAfnoC,EAAKyrO,MAAmB,kBAAoB,mBAElD,IAAE,OACK,SAAAjpO,GAAK,OAAI2C,QAAQ3C,MAAM,wBAAyBA,EAAM,IAnB3D2C,QAAQ3C,MAAM,yBAoBlB,M,8EAAC24C,CAAA,CA9BmC,C,KAETy3B,G,EAAUz3B,E,EACpB,CAAC,W,MADmB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAWnC,O,EAXmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKpC,WACA,GAAC,CAAAM,IAAA,cAAAN,MAED,WACC,IAAIonO,EAAgB3hO,KAAK46N,cAAc7mM,aAAa,mBACpD/7B,SAASg4C,KAAKk/B,UAAU9+B,OAAOuxL,EAChC,M,8EAACvwL,CAAA,CAXmC,C,KAERy3B,G,EAAUz3B,E,EACrB,CAAC,Y,MADoB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAmBnC,O,EAnBmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKpC,WACCyF,KAAKsoD,aACN,GAAC,CAAAztD,IAAA,cAAAN,MAED,WACC,IAAIkkC,EAAWz+B,KAAK46N,cAAc7mM,aAAa,mBAAmB3uB,QAAQ,OAAQ,IAAI6I,MAAM,KACxF0zN,EAAgB3hO,KAAK46N,cAAc7mM,aAAa,cACpD34B,QAAQ48I,IAAIv5G,GACZA,EAASnmB,SAAQ,SAAA6+C,GAChB,IAAIh+D,EAASnB,SAAS8jC,eAAeq7B,GACjCh+D,GACHA,EAAO+1E,UAAU9+B,OAAOuxL,EAE1B,GACD,M,8EAACvwL,CAAA,CAnBmC,C,KAERy3B,G,EAAUz3B,E,EACrB,CAAC,Y,MADoB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA8BnC,O,EA9BmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WAEoB,SADFyF,KAAK46N,cAAc7mM,aAAa,mBAE/C/zB,KAAKsoD,aAER,GAAC,CAAAztD,IAAA,cAAAN,MAEF,WACiByF,KAAK83N,eACbx/M,SAAQ,SAAC/gB,GAChB,IAAMqqO,KAAarqO,EAAEmjE,aAAa,iBAAkBnjE,EAAEw8B,aAAa,gBAC7DwH,EAAMhkC,EAAEw8B,aAAa,mBAAmB9lB,MAAM,KAC9C4zN,EAAMtqO,EAAEw8B,aAAa,cAAc9lB,MAAM,KAE3C2zN,GAAarqO,EAAEmjE,aAAa,cAEdnjE,EAAEw8B,aAAa,eAEjCwH,EAAIjjB,SAAQ,SAAAwkB,IACPA,EAAK9kC,SAAS8jC,eAAegB,KAEhC+kM,EAAI5kO,KAAI,SAAAm+N,GAAE,OAAIt+L,EAAGoyC,UAAU9+B,OAAOgrL,EAAG,GAEvC,GACD,GACD,M,8EAAChqL,CAAA,CA9BmC,C,KAERy3B,G,EAAUz3B,E,EACrB,CAAC,Y,MADoB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA6BlC,O,EA7BkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKnC,WACEyF,KAAKsoD,aACP,GAAC,CAAAztD,IAAA,cAAAN,MAED,WAGE,IAAI4kH,EAAgBn/G,KAAK46N,cAAc7mM,aAAa,mBAChDojC,EAAUn/D,SAAS8jC,eAAeqjF,GAEtC,GAAe,MAAXhoD,EAAiB,CACnB,IAAIwqK,EAAgB3hO,KAAK46N,cAAc7mM,aAAa,cAChD+tM,EAASx5J,OAAOtoE,KAAK46N,cAAc7mM,aAAa,6BAChDguM,EAASz5J,OAAOtoE,KAAK46N,cAAc7mM,aAAa,6BAChDiuM,EAAa1mO,OAAOg+K,QAAU,EAE/B0oD,EAAa,EAAIF,GAAUE,EAAa,EAAID,EAC3C5qK,EAAQ+X,UAAU58D,IAAIqvN,GAEtBxqK,EAAQ+X,UAAUhmC,OAAOy4L,EAE/B,CAGF,M,8EAACvwL,CAAA,CA7BkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,Y,MADmB,c,kvDCDF,IAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAgBlC,O,EAhBkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAMnC,WAAU,IAAA69D,EAAA,KACHp4D,KAAK46N,cAAc16J,cAAczc,SACpCzjD,KAAK7H,QAAUqB,YAAW,WACxB4+D,EAAKwiK,cAAc1rJ,UAAU9+B,OAAO,SACtC,GAAGpwC,KAAKk+N,eAEZ,GAAC,CAAArjO,IAAA,aAAAN,MAED,WACEzB,aAAakH,KAAK7H,QACpB,M,8EAACi5C,CAAA,CAhBkC,C,KAERy3B,GAAUotI,EAAA7kK,EAAA,UACpB,CAAC,YAAU6kK,EAAA7kK,EAAA,SACZ,CAAEuS,SAAU2kB,Q,wiDCHU,IAAAl3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAarC,O,EAbqCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAGtC,WAAU,IAAA69D,EAAA,KACRp4D,KAAKm3D,QAAQx5B,iBAAiB,oBAAoB,SAAChlC,GACjDy/D,EAAKzgD,KAAKhf,EACZ,GACF,GAAC,CAAAkC,IAAA,OAAAN,MAED,SAAK5B,GACCA,EAAMi+C,OAAOgY,SACfszD,IAAYvpH,EAAMi+C,OAAO4qD,cAAcvyC,SAASjD,IAEpD,M,8EAAC5a,CAAA,CAbqC,CAEXy3B,I,shDCJQ,IAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAmBlC,O,EAnBkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAGnC,WACEa,QAAQ48I,IAAI,iCACd,GAAC,CAAAn9I,IAAA,mBAAAN,MAED,SAAiB5B,GACfA,EAAM46C,iBAEN,IAAMyY,EAAMhsD,KAAK/J,KAAKkE,IAAI,OACpB2lO,EAAU9/N,KAAK/J,KAAKkE,IAAI,WAE9BshE,MAAMzP,GACH7jB,MAAK,SAAA8mB,GAAQ,OAAIA,EAASn7B,MAAM,IAChCqU,MAAK,SAAA2R,GACsB9hD,SAAS8jC,eAAegkM,GAChCzhM,UAAYyb,CAChC,GACJ,M,8EAAC1I,CAAA,CAnBkC,C,KAERy3B,E,qxECFQ,IAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAqClC,O,EArCkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAGnC,WAAU,IAAA69D,EAAA,KAER5+D,YAAW,WACTyoO,EAAI7pK,EAAKjB,QAAQ1wB,UAAUxpC,KAAI,SAAA6/B,GAAE,OAAIs7B,EAAK8pK,eAAeplM,EAAG,GAC9D,GAAG,EACL,GAAC,CAAAjiC,IAAA,eAAAN,MAED,SAAa48D,GACuB,IAAAgrK,EAAV,UAApBhrK,EAAQ1iC,WACW,QAArB0tM,EAAAhrK,EAAQ+I,qBAAa,IAAAiiK,GAArBA,EAAuBluM,YAAYkjC,GAEvC,GAAC,CAAAt8D,IAAA,iBAAAN,MAED,SAAe48D,GACb,GAAwB,UAApBA,EAAQ1iC,SAAsB,CAChC,IAAMqpE,EAAuB9lG,SAASC,cAAc,UACpD6lG,EAAqBtnE,YAAc2gC,EAAQ3gC,YAC3CsnE,EAAqB3xC,OAAQ,EAC7BnsD,KAAKm+F,sBAAsBL,EAAsB3mC,GACjDn3D,KAAKoiO,0BAA0BjrK,EAAS2mC,EAC1C,CACF,GAAC,CAAAjjG,IAAA,4BAAAN,MAED,SAA0Bw2G,EAAah5D,GACrC,IAAMmoB,EAAgB6wC,EAAY7wC,cAClC,GAAIA,EACF,OAAOA,EAAcplB,aAAa/C,EAAWg5D,EAEjD,GAAC,CAAAl2G,IAAA,wBAAAN,MAED,SAAsByjG,EAAoBC,GACxC,IAAK,IAALt9F,EAAA,EAAA0hO,EAAAJ,EAAmChkI,EAAc3kE,YAAU34B,EAAA0hO,EAAA7rO,OAAAmK,IAAI,KAAAu9F,EAAAmkI,EAAA1hO,GAAlDtH,EAAI6kG,EAAJ7kG,KAAMkB,EAAK2jG,EAAL3jG,MACjByjG,EAAmB3lG,aAAagB,EAAMkB,EACxC,CACF,M,8EAAC62C,CAAA,CArCkC,C,KAERy3B,E,8hDCFQ,I,MAAAz3B,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAWlC,O,EAXkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAInC,WACE,GACD,CAAAM,IAAA,gBAAAN,MACD,WACE,IAAI+nO,EAAatiO,KAAKuiO,WAAWxuM,aAAa,cAC1CyuM,EAAYxiO,KAAKuiO,WAAWxuM,aAAa,WAC7C/7B,SAAS8jC,eAAe0mM,GAAWnkM,UAAYikM,CACjD,M,8EAAClxL,CAAA,CAXkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,S,MADmB,c,qnDCFF,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CAclC,O,EAdkCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAInC,WACE,GACD,CAAAM,IAAA,cAAAN,MACD,WACkByF,KAAKyiO,YACbnqN,SAAQ,SAAC/gB,GACf,IAAI4+L,EAAW5+L,EAAEw8B,aAAa,cAC1B2uM,EAAYnrO,EAAEw8B,aAAa,WAC/B/7B,SAAS8jC,eAAe4mM,GAAWnoO,MAAQ47L,CAC7C,GACF,M,8EAAC/kJ,CAAA,CAdkC,C,KAERy3B,G,EAAUz3B,E,EACpB,CAAC,S,MADmB,c,qnDCFD,I,MAAAA,EAAA,SAAAsmL,I,sRAAAC,CAAAvmL,EAAAsmL,GAAA,I,MAAAl7J,EAAAo7J,EAAAxmL,GAAA,SAAAA,IAAA,O,4FAAAymL,CAAA,KAAAzmL,GAAAorB,EAAA3gE,MAAA,KAAAC,UAAA,CA8BnC,O,EA9BmCs1C,G,EAAA,EAAAv2C,IAAA,UAAAN,MAKpC,WAAU,IAAA69D,EAAA,KACRp4D,KAAKu5N,gBAAgBjhN,SAAQ,SAAC+pB,GAC5BA,EAAS1E,iBAAiB,SAAUy6B,EAAK9P,YAAYxtD,KAAKs9D,GAC5D,GACF,GAAC,CAAAv9D,IAAA,cAAAN,MAED,SAAY5B,GACVa,YAAW,WAET,IAAMmpO,EAAoB3qO,SAASskC,iBAAiB,6BAC9C0gM,EAAiBhlO,SAAS8jC,eAAe,uBACzCy5K,EAAev9M,SAAS8jC,eAAe,eAEzC6mM,EAAkBnsO,OAAS,GAC3B++M,EAAarmI,UAAUhmC,OAAO,UAC9BqsK,EAAarmI,UAAU58D,IAAI,WAC3B0qN,EAAe9tJ,UAAU58D,IAAI,UAC7B0qN,EAAe9tJ,UAAUhmC,OAAO,aAEhC8zL,EAAe9tJ,UAAUhmC,OAAO,UAChC8zL,EAAe9tJ,UAAU58D,IAAI,WAC7BijM,EAAarmI,UAAU58D,IAAI,UAC3BijM,EAAarmI,UAAUhmC,OAAO,WAEpC,GAAG,EACL,M,8EAACkI,CAAA,CA9BmC,C,KAETy3B,G,EAAUz3B,E,EACpB,CAAC,a,MADmB,c,oICDvCwxL,EAAA,kBAAArrO,CAAA,MAAAiD,EAAAjD,EAAA,GAAA6C,EAAA3D,OAAAC,UAAAqE,EAAAX,EAAAzD,eAAAqD,EAAAvD,OAAAwD,gBAAA,SAAAO,EAAAjD,EAAA6C,GAAAI,EAAAjD,GAAA6C,EAAAG,KAAA,EAAAjE,EAAA,mBAAA+D,cAAA,GAAAkC,EAAAjG,EAAAghC,UAAA,aAAAz9B,EAAAvD,EAAAusO,eAAA,kBAAAz5N,EAAA9S,EAAAgE,aAAA,yBAAA4rH,EAAA1rH,EAAAjD,EAAA6C,GAAA,OAAA3D,OAAAwD,eAAAO,EAAAjD,EAAA,CAAAgD,MAAAH,EAAAF,YAAA,EAAAmzC,cAAA,EAAAsI,UAAA,IAAAn7C,EAAAjD,EAAA,KAAA2uH,EAAA,aAAA1rH,GAAA0rH,EAAA,SAAA1rH,EAAAjD,EAAA6C,GAAA,OAAAI,EAAAjD,GAAA6C,CAAA,WAAA83C,EAAA13C,EAAAjD,EAAA6C,EAAAW,GAAA,IAAAzE,EAAAiB,KAAAb,qBAAAosO,EAAAvrO,EAAAurO,EAAAvmO,EAAA9F,OAAAmE,OAAAtE,EAAAI,WAAAmD,EAAA,IAAA+lE,EAAA7kE,GAAA,WAAAf,EAAAuC,EAAA,WAAAhC,MAAAwoO,EAAAvoO,EAAAJ,EAAAP,KAAA0C,CAAA,UAAAymO,EAAAxoO,EAAAjD,EAAA6C,GAAA,WAAAnB,KAAA,SAAA2I,IAAApH,EAAA5D,KAAAW,EAAA6C,GAAA,OAAAI,GAAA,OAAAvB,KAAA,QAAA2I,IAAApH,EAAA,EAAAjD,EAAA26C,OAAA,IAAA/qC,EAAA,iBAAA7P,EAAA,iBAAAgvE,EAAA,YAAA7qE,EAAA,YAAAiM,EAAA,YAAAo7N,IAAA,UAAAG,IAAA,UAAAC,IAAA,KAAA3qO,EAAA,GAAA2tH,EAAA3tH,EAAAgE,GAAA,8BAAAzC,EAAArD,OAAAq8B,eAAA8U,EAAA9tC,OAAAme,EAAA,MAAA2vB,OAAAxtC,GAAAW,EAAAnE,KAAAgxC,EAAArrC,KAAAhE,EAAAqvC,GAAA,IAAA2+B,EAAA28J,EAAAxsO,UAAAosO,EAAApsO,UAAAD,OAAAmE,OAAArC,GAAA,SAAA4qO,EAAA3oO,GAAA,0BAAA8d,SAAA,SAAA/gB,GAAA2uH,EAAA1rH,EAAAjD,GAAA,SAAAiD,GAAA,YAAA4oO,QAAA7rO,EAAAiD,EAAA,gBAAA6oO,EAAA7oO,EAAAjD,GAAA,SAAA+rO,EAAAlpO,EAAAJ,EAAA1D,EAAAiG,GAAA,IAAA1C,EAAAmpO,EAAAxoO,EAAAJ,GAAAI,EAAAR,GAAA,aAAAH,EAAAZ,KAAA,KAAAmQ,EAAAvP,EAAA+H,IAAAuF,EAAAiC,EAAA7O,MAAA,OAAA4M,GAAA,iBAAAA,GAAApM,EAAAnE,KAAAuQ,EAAA,WAAA5P,EAAAK,QAAAuP,EAAAo8N,SAAAp7L,MAAA,SAAA3tC,GAAA8oO,EAAA,OAAA9oO,EAAAlE,EAAAiG,EAAA,aAAA/B,GAAA8oO,EAAA,QAAA9oO,EAAAlE,EAAAiG,EAAA,IAAAhF,EAAAK,QAAAuP,GAAAghC,MAAA,SAAA3tC,GAAA4O,EAAA7O,MAAAC,EAAAlE,EAAA8S,EAAA,aAAA5O,GAAA,OAAA8oO,EAAA,QAAA9oO,EAAAlE,EAAAiG,EAAA,IAAAA,EAAA1C,EAAA+H,IAAA,KAAAxH,EAAAJ,EAAA,gBAAAO,MAAA,SAAAC,EAAAO,GAAA,SAAAyoO,IAAA,WAAAjsO,GAAA,SAAAA,EAAA6C,GAAAkpO,EAAA9oO,EAAAO,EAAAxD,EAAA6C,EAAA,WAAAA,MAAA+tC,KAAAq7L,QAAA,aAAAT,EAAAxrO,EAAA6C,EAAAW,GAAA,IAAAf,EAAAmN,EAAA,gBAAA7Q,EAAAiG,GAAA,GAAAvC,IAAAssE,EAAA,UAAA5tE,MAAA,mCAAAsB,IAAAyB,EAAA,cAAAnF,EAAA,MAAAiG,EAAA,OAAAhC,MAAAC,EAAAq+B,MAAA,OAAA99B,EAAAktC,OAAA3xC,EAAAyE,EAAA6G,IAAArF,IAAA,KAAA1C,EAAAkB,EAAA44D,SAAA,GAAA95D,EAAA,KAAAuP,EAAAq6N,EAAA5pO,EAAAkB,GAAA,GAAAqO,EAAA,IAAAA,IAAA1B,EAAA,gBAAA0B,CAAA,cAAArO,EAAAktC,OAAAltC,EAAA0rE,KAAA1rE,EAAA2oO,MAAA3oO,EAAA6G,SAAA,aAAA7G,EAAAktC,OAAA,IAAAjuC,IAAAmN,EAAA,MAAAnN,EAAAyB,EAAAV,EAAA6G,IAAA7G,EAAA4oO,kBAAA5oO,EAAA6G,IAAA,gBAAA7G,EAAAktC,QAAAltC,EAAA6oO,OAAA,SAAA7oO,EAAA6G,KAAA5H,EAAAssE,EAAA,IAAA/tE,EAAAyqO,EAAAzrO,EAAA6C,EAAAW,GAAA,cAAAxC,EAAAU,KAAA,IAAAe,EAAAe,EAAA89B,KAAAp9B,EAAAnE,EAAAiB,EAAAqJ,MAAA8F,EAAA,gBAAAnN,MAAAhC,EAAAqJ,IAAAi3B,KAAA99B,EAAA89B,KAAA,WAAAtgC,EAAAU,OAAAe,EAAAyB,EAAAV,EAAAktC,OAAA,QAAAltC,EAAA6G,IAAArJ,EAAAqJ,IAAA,YAAA6hO,EAAAlsO,EAAA6C,GAAA,IAAAW,EAAAX,EAAA6tC,OAAAjuC,EAAAzC,EAAA+/B,SAAAv8B,GAAA,GAAAf,IAAAQ,EAAA,OAAAJ,EAAAu5D,SAAA,eAAA54D,GAAAxD,EAAA+/B,SAAA,SAAAl9B,EAAA6tC,OAAA,SAAA7tC,EAAAwH,IAAApH,EAAAipO,EAAAlsO,EAAA6C,GAAA,UAAAA,EAAA6tC,SAAA,WAAAltC,IAAAX,EAAA6tC,OAAA,QAAA7tC,EAAAwH,IAAA,IAAA8oC,UAAA,oCAAA3vC,EAAA,aAAA2M,EAAA,IAAApR,EAAA0sO,EAAAhpO,EAAAzC,EAAA+/B,SAAAl9B,EAAAwH,KAAA,aAAAtL,EAAA2C,KAAA,OAAAmB,EAAA6tC,OAAA,QAAA7tC,EAAAwH,IAAAtL,EAAAsL,IAAAxH,EAAAu5D,SAAA,KAAAjsD,EAAA,IAAAnL,EAAAjG,EAAAsL,IAAA,OAAArF,IAAAs8B,MAAAz+B,EAAA7C,EAAAssO,YAAAtnO,EAAAhC,MAAAH,EAAAud,KAAApgB,EAAAusO,QAAA,WAAA1pO,EAAA6tC,SAAA7tC,EAAA6tC,OAAA,OAAA7tC,EAAAwH,IAAApH,GAAAJ,EAAAu5D,SAAA,KAAAjsD,GAAAnL,GAAAnC,EAAA6tC,OAAA,QAAA7tC,EAAAwH,IAAA,IAAA8oC,UAAA,oCAAAtwC,EAAAu5D,SAAA,KAAAjsD,EAAA,UAAAq8N,EAAAvpO,GAAA,IAAAjD,EAAA,CAAAysO,OAAAxpO,EAAA,SAAAA,IAAAjD,EAAA0sO,SAAAzpO,EAAA,SAAAA,IAAAjD,EAAA2sO,WAAA1pO,EAAA,GAAAjD,EAAA4sO,SAAA3pO,EAAA,SAAA4pO,WAAAttO,KAAAS,EAAA,UAAA8sO,EAAA7pO,GAAA,IAAAjD,EAAAiD,EAAA8pO,YAAA,GAAA/sO,EAAA0B,KAAA,gBAAA1B,EAAAqK,IAAApH,EAAA8pO,WAAA/sO,CAAA,UAAAqoE,EAAAplE,GAAA,KAAA4pO,WAAA,EAAAJ,OAAA,SAAAxpO,EAAA8d,QAAAyrN,EAAA,WAAArhM,OAAA,YAAAzqB,EAAA1gB,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAA6C,EAAA7C,EAAAgF,GAAA,GAAAnC,EAAA,OAAAA,EAAAxD,KAAAW,GAAA,sBAAAA,EAAAogB,KAAA,OAAApgB,EAAA,IAAA+H,MAAA/H,EAAAf,QAAA,KAAAwD,GAAA,EAAA1D,EAAA,SAAAqhB,IAAA,OAAA3d,EAAAzC,EAAAf,QAAA,GAAAuE,EAAAnE,KAAAW,EAAAyC,GAAA,OAAA2d,EAAApd,MAAAhD,EAAAyC,GAAA2d,EAAAkhB,MAAA,EAAAlhB,EAAA,OAAAA,EAAApd,MAAAC,EAAAmd,EAAAkhB,MAAA,EAAAlhB,CAAA,SAAArhB,EAAAqhB,KAAArhB,CAAA,YAAAo0C,iBAAAnzC,EAAA,2BAAA0rO,EAAAvsO,UAAAwsO,EAAAlpO,EAAAusE,EAAA,eAAAhsE,MAAA2oO,EAAA71L,cAAA,IAAArzC,EAAAkpO,EAAA,eAAA3oO,MAAA0oO,EAAA51L,cAAA,IAAA41L,EAAAsB,YAAAr+G,EAAAg9G,EAAA95N,EAAA,qBAAA7R,EAAAitO,oBAAA,SAAAhqO,GAAA,IAAAjD,EAAA,mBAAAiD,KAAAo6B,YAAA,QAAAr9B,QAAA0rO,GAAA,uBAAA1rO,EAAAgtO,aAAAhtO,EAAA8B,MAAA,EAAA9B,EAAAktO,KAAA,SAAAjqO,GAAA,OAAA/D,OAAA4lE,eAAA5lE,OAAA4lE,eAAA7hE,EAAA0oO,IAAA1oO,EAAA8hE,UAAA4mK,EAAAh9G,EAAA1rH,EAAA4O,EAAA,sBAAA5O,EAAA9D,UAAAD,OAAAmE,OAAA2rE,GAAA/rE,CAAA,EAAAjD,EAAAmtO,MAAA,SAAAlqO,GAAA,OAAA+oO,QAAA/oO,EAAA,EAAA2oO,EAAAE,EAAA3sO,WAAAwvH,EAAAm9G,EAAA3sO,UAAAmD,GAAA,0BAAAtC,EAAA8rO,gBAAA9rO,EAAA40D,MAAA,SAAA3xD,EAAAJ,EAAAW,EAAAf,EAAA1D,QAAA,IAAAA,MAAAqB,SAAA,IAAA4E,EAAA,IAAA8mO,EAAAnxL,EAAA13C,EAAAJ,EAAAW,EAAAf,GAAA1D,GAAA,OAAAiB,EAAAitO,oBAAApqO,GAAAmC,IAAAob,OAAAwwB,MAAA,SAAA3tC,GAAA,OAAAA,EAAAq+B,KAAAr+B,EAAAD,MAAAgC,EAAAob,MAAA,KAAAwrN,EAAA58J,GAAA2/C,EAAA3/C,EAAAn9D,EAAA,aAAA88G,EAAA3/C,EAAAhqE,GAAA,0BAAA2pH,EAAA3/C,EAAA,qDAAAhvE,EAAA0K,KAAA,SAAAzH,GAAA,IAAAjD,EAAAd,OAAA+D,GAAAJ,EAAA,WAAAW,KAAAxD,EAAA6C,EAAAtD,KAAAiE,GAAA,OAAAX,EAAAqtC,UAAA,SAAA9vB,IAAA,KAAAvd,EAAA5D,QAAA,KAAAgE,EAAAJ,EAAAm9B,MAAA,GAAA/8B,KAAAjD,EAAA,OAAAogB,EAAApd,MAAAC,EAAAmd,EAAAkhB,MAAA,EAAAlhB,CAAA,QAAAA,EAAAkhB,MAAA,EAAAlhB,CAAA,GAAApgB,EAAA0gB,SAAA2nD,EAAAlpE,UAAA,CAAAk+B,YAAAgrC,EAAAl9B,MAAA,SAAAnrC,GAAA,QAAAovC,KAAA,OAAAhvB,KAAA,OAAA8uD,KAAA,KAAAi9J,MAAAlpO,EAAA,KAAAq+B,MAAA,OAAA86B,SAAA,UAAA1rB,OAAA,YAAArmC,IAAApH,EAAA,KAAA4pO,WAAA9rN,QAAA+rN,IAAA9sO,EAAA,QAAA6C,KAAA,WAAAA,EAAA4b,OAAA,IAAAjb,EAAAnE,KAAA,KAAAwD,KAAAkF,OAAAlF,EAAAoB,MAAA,WAAApB,GAAAI,EAAA,EAAA8zC,KAAA,gBAAAzV,MAAA,MAAAr+B,EAAA,KAAA4pO,WAAA,GAAAE,WAAA,aAAA9pO,EAAAvB,KAAA,MAAAuB,EAAAoH,IAAA,YAAA+iO,IAAA,EAAAhB,kBAAA,SAAApsO,GAAA,QAAAshC,KAAA,MAAAthC,EAAA,IAAA6C,EAAA,cAAA85C,EAAAn5C,EAAAf,GAAA,OAAAuC,EAAAtD,KAAA,QAAAsD,EAAAqF,IAAArK,EAAA6C,EAAAud,KAAA5c,EAAAf,IAAAI,EAAA6tC,OAAA,OAAA7tC,EAAAwH,IAAApH,KAAAR,CAAA,SAAAA,EAAA,KAAAoqO,WAAA5tO,OAAA,EAAAwD,GAAA,IAAAA,EAAA,KAAA1D,EAAA,KAAA8tO,WAAApqO,GAAAuC,EAAAjG,EAAAguO,WAAA,YAAAhuO,EAAA0tO,OAAA,OAAA9vL,EAAA,UAAA59C,EAAA0tO,QAAA,KAAAr9L,KAAA,KAAA9sC,EAAAkB,EAAAnE,KAAAN,EAAA,YAAA8S,EAAArO,EAAAnE,KAAAN,EAAA,iBAAAuD,GAAAuP,EAAA,SAAAu9B,KAAArwC,EAAA2tO,SAAA,OAAA/vL,EAAA59C,EAAA2tO,UAAA,WAAAt9L,KAAArwC,EAAA4tO,WAAA,OAAAhwL,EAAA59C,EAAA4tO,WAAA,SAAArqO,GAAA,QAAA8sC,KAAArwC,EAAA2tO,SAAA,OAAA/vL,EAAA59C,EAAA2tO,UAAA,YAAA76N,EAAA,UAAA1Q,MAAA,kDAAAiuC,KAAArwC,EAAA4tO,WAAA,OAAAhwL,EAAA59C,EAAA4tO,WAAA,KAAAN,OAAA,SAAAppO,EAAAjD,GAAA,QAAA6C,EAAA,KAAAgqO,WAAA5tO,OAAA,EAAA4D,GAAA,IAAAA,EAAA,KAAAJ,EAAA,KAAAoqO,WAAAhqO,GAAA,GAAAJ,EAAAgqO,QAAA,KAAAr9L,MAAA5rC,EAAAnE,KAAAoD,EAAA,oBAAA2sC,KAAA3sC,EAAAkqO,WAAA,KAAA5tO,EAAA0D,EAAA,OAAA1D,IAAA,UAAAkE,GAAA,aAAAA,IAAAlE,EAAA0tO,QAAAzsO,MAAAjB,EAAA4tO,aAAA5tO,EAAA,UAAAiG,EAAAjG,IAAAguO,WAAA,UAAA/nO,EAAAtD,KAAAuB,EAAA+B,EAAAqF,IAAArK,EAAAjB,GAAA,KAAA2xC,OAAA,YAAAtwB,KAAArhB,EAAA4tO,WAAAx8N,GAAA,KAAAq9C,SAAAxoD,EAAA,EAAAwoD,SAAA,SAAAvqD,EAAAjD,GAAA,aAAAiD,EAAAvB,KAAA,MAAAuB,EAAAoH,IAAA,gBAAApH,EAAAvB,MAAA,aAAAuB,EAAAvB,KAAA,KAAA0e,KAAAnd,EAAAoH,IAAA,WAAApH,EAAAvB,MAAA,KAAA0rO,KAAA,KAAA/iO,IAAApH,EAAAoH,IAAA,KAAAqmC,OAAA,cAAAtwB,KAAA,kBAAAnd,EAAAvB,MAAA1B,IAAA,KAAAogB,KAAApgB,GAAAmQ,CAAA,EAAAy+C,OAAA,SAAA3rD,GAAA,QAAAjD,EAAA,KAAA6sO,WAAA5tO,OAAA,EAAAe,GAAA,IAAAA,EAAA,KAAA6C,EAAA,KAAAgqO,WAAA7sO,GAAA,GAAA6C,EAAA8pO,aAAA1pO,EAAA,YAAAuqD,SAAA3qD,EAAAkqO,WAAAlqO,EAAA+pO,UAAAE,EAAAjqO,GAAAsN,CAAA,kBAAAlN,GAAA,QAAAjD,EAAA,KAAA6sO,WAAA5tO,OAAA,EAAAe,GAAA,IAAAA,EAAA,KAAA6C,EAAA,KAAAgqO,WAAA7sO,GAAA,GAAA6C,EAAA4pO,SAAAxpO,EAAA,KAAAO,EAAAX,EAAAkqO,WAAA,aAAAvpO,EAAA9B,KAAA,KAAAe,EAAAe,EAAA6G,IAAAyiO,EAAAjqO,EAAA,QAAAJ,CAAA,YAAAtB,MAAA,0BAAAksO,cAAA,SAAArtO,EAAA6C,EAAAW,GAAA,YAAA44D,SAAA,CAAAr8B,SAAArf,EAAA1gB,GAAAssO,WAAAzpO,EAAA0pO,QAAA/oO,GAAA,cAAAktC,SAAA,KAAArmC,IAAApH,GAAAkN,CAAA,GAAAnQ,CAAA,UAAAstO,EAAAC,EAAAltO,EAAAC,EAAAilJ,EAAAioF,EAAAlqO,EAAA+G,GAAA,QAAAojO,EAAAF,EAAAjqO,GAAA+G,GAAArH,EAAAyqO,EAAAzqO,KAAA,OAAA9B,GAAA,YAAAZ,EAAAY,EAAA,CAAAusO,EAAAnsM,KAAAjhC,EAAA2C,GAAA5C,QAAAC,QAAA2C,GAAA4tC,KAAA20G,EAAAioF,EAAA,UAAAE,EAAA9nO,GAAA,sBAAAgpC,EAAA,KAAAtkC,EAAA/F,UAAA,WAAAnE,SAAA,SAAAC,EAAAC,GAAA,IAAAitO,EAAA3nO,EAAAtB,MAAAsqC,EAAAtkC,GAAA,SAAAi7I,EAAAviJ,GAAAsqO,EAAAC,EAAAltO,EAAAC,EAAAilJ,EAAAioF,EAAA,OAAAxqO,EAAA,UAAAwqO,EAAA5pO,GAAA0pO,EAAAC,EAAAltO,EAAAC,EAAAilJ,EAAAioF,EAAA,QAAA5pO,EAAA,CAAA2hJ,OAAAvjJ,EAAA,cAAA0oO,EAAA/kO,GAAA,gBAAAA,GAAA,GAAAf,MAAAF,QAAAiB,GAAA,OAAAgoO,EAAAhoO,EAAA,CAAAioO,CAAAjoO,IAAA,SAAAkoO,GAAA,wBAAA/qO,QAAA,MAAA+qO,EAAA/qO,OAAAi9B,WAAA,MAAA8tM,EAAA,qBAAAjpO,MAAAmE,KAAA8kO,EAAA,CAAAC,CAAAnoO,IAAAooO,EAAApoO,IAAA,qBAAAwtC,UAAA,wIAAA66L,EAAA,UAAAr8J,EAAA/vE,EAAA88C,GAAA,QAAA3/C,EAAA,EAAAA,EAAA2/C,EAAAz/C,OAAAF,IAAA,KAAA8gE,EAAAnhB,EAAA3/C,GAAA8gE,EAAAl9D,WAAAk9D,EAAAl9D,aAAA,EAAAk9D,EAAA/pB,cAAA,YAAA+pB,MAAAzhB,UAAA,GAAAl/C,OAAAwD,eAAAd,EAAAqsO,EAAApuK,EAAAv8D,KAAAu8D,EAAA,WAAAquK,EAAA/oO,EAAA7B,EAAAN,GAAA,OAAAM,EAAA2qO,EAAA3qO,MAAA6B,EAAAjG,OAAAwD,eAAAyC,EAAA7B,EAAA,CAAAN,QAAAL,YAAA,EAAAmzC,cAAA,EAAAsI,UAAA,IAAAj5C,EAAA7B,GAAAN,EAAAmC,CAAA,UAAA8oO,EAAA5jO,GAAA,IAAA/G,EAAA,SAAAqB,EAAAi6M,GAAA,qBAAAj6M,GAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAk6M,EAAAl6M,EAAA7B,OAAAg8M,aAAA,QAAA98M,IAAA68M,EAAA,KAAAh5M,EAAAg5M,EAAAx/M,KAAAsF,EAAAi6M,GAAA,gCAAA/4M,EAAA,OAAAA,EAAA,UAAAstC,UAAA,kEAAAyrK,EAAArxL,OAAAwjD,QAAApsE,EAAA,CAAAwpO,CAAA9jO,EAAA,kCAAA/G,IAAAiqB,OAAAjqB,EAAA,UAAA8qO,EAAA3rO,EAAA4rO,GAAA,IAAAluI,EAAA,qBAAAr9F,QAAAL,EAAAK,OAAAi9B,WAAAt9B,EAAA,kBAAA09F,EAAA,IAAAv7F,MAAAF,QAAAjC,KAAA09F,EAAA4tI,EAAAtrO,KAAA4rO,GAAA5rO,GAAA,kBAAAA,EAAAxD,OAAA,CAAAkhG,IAAA19F,EAAA09F,GAAA,IAAAphG,EAAA,EAAA6tJ,EAAA,oBAAA1oJ,EAAA0oJ,EAAAppJ,EAAA,kBAAAzE,GAAA0D,EAAAxD,OAAA,CAAAqiC,MAAA,IAAAA,MAAA,EAAAt+B,MAAAP,EAAA1D,KAAA,EAAAiB,EAAA,SAAAsuO,GAAA,MAAAA,CAAA,EAAAv/J,EAAA69E,EAAA,WAAAz5G,UAAA,6IAAAvvC,EAAA2qO,GAAA,EAAAC,GAAA,SAAAtqO,EAAA,WAAAi8F,IAAA9gG,KAAAoD,EAAA,EAAAe,EAAA,eAAA6nD,EAAA80C,EAAA//E,OAAA,OAAAmuN,EAAAljL,EAAA/pB,KAAA+pB,CAAA,EAAArrD,EAAA,SAAAyuO,GAAAD,GAAA,EAAA5qO,EAAA6qO,CAAA,EAAA1/J,EAAA,eAAAw/J,GAAA,MAAApuI,EAAA,QAAAA,EAAA,oBAAAquI,EAAA,MAAA5qO,CAAA,aAAAmqO,EAAAtrO,EAAA8+F,GAAA,GAAA9+F,EAAA,sBAAAA,EAAA,OAAAkrO,EAAAlrO,EAAA8+F,GAAA,IAAA/9F,EAAAtE,OAAAC,UAAA0F,SAAAxF,KAAAoD,GAAAwB,MAAA,uBAAAT,GAAAf,EAAA46B,cAAA75B,EAAAf,EAAA46B,YAAAv7B,MAAA,QAAA0B,GAAA,QAAAA,EAAAoB,MAAAmE,KAAAtG,GAAA,cAAAe,GAAA,2CAAA8K,KAAA9K,GAAAmqO,EAAAlrO,EAAA8+F,QAAA,YAAAosI,EAAAhoO,EAAA+C,IAAA,MAAAA,KAAA/C,EAAA1G,UAAAyJ,EAAA/C,EAAA1G,QAAA,QAAAF,EAAA,EAAA+gB,EAAA,IAAAlb,MAAA8D,GAAA3J,EAAA2J,EAAA3J,IAAA+gB,EAAA/gB,GAAA4G,EAAA5G,GAAA,OAAA+gB,CAAA,CADA,SAAS0+L,EAAQx+M,EAAG6C,GAAK,IAAII,EAAI/D,OAAOwL,KAAK1K,GAAI,GAAId,OAAOorE,sBAAuB,CAAE,IAAI7nE,EAAIvD,OAAOorE,sBAAsBtqE,GAAI6C,IAAMJ,EAAIA,EAAEwrB,QAAO,SAAUprB,GAAK,OAAO3D,OAAO2qE,yBAAyB7pE,EAAG6C,GAAGF,UAAY,KAAKM,EAAE1D,KAAK+E,MAAMrB,EAAGR,EAAI,CAAE,OAAOQ,CAAG,CAC9P,SAASw7M,EAAcz+M,GAAK,IAAK,IAAI6C,EAAI,EAAGA,EAAI0B,UAAUtF,OAAQ4D,IAAK,CAAE,IAAII,EAAI,MAAQsB,UAAU1B,GAAK0B,UAAU1B,GAAK,CAAC,EAAGA,EAAI,EAAI27M,EAAQt/M,OAAO+D,IAAI,GAAI8d,SAAQ,SAAUle,GAAK67M,EAAgB1+M,EAAG6C,EAAGI,EAAEJ,GAAK,IAAK3D,OAAOy/M,0BAA4Bz/M,OAAO8qE,iBAAiBhqE,EAAGd,OAAOy/M,0BAA0B17M,IAAMu7M,EAAQt/M,OAAO+D,IAAI8d,SAAQ,SAAUle,GAAK3D,OAAOwD,eAAe1C,EAAG6C,EAAG3D,OAAO2qE,yBAAyB5mE,EAAGJ,GAAK,GAAI,CAAE,OAAO7C,CAAG,CACtb,SAAS0+M,EAAgBv5M,EAAK7B,EAAKN,GAA4L,OAAnLM,EAC5C,SAAwB+G,GAAO,IAAI/G,EACnC,SAAsBqB,EAAOi6M,GAAQ,GAAqB,kBAAVj6M,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAIk6M,EAAOl6M,EAAM7B,OAAOg8M,aAAc,QAAa98M,IAAT68M,EAAoB,CAAE,IAAIh5M,EAAMg5M,EAAKx/M,KAAKsF,EAAOi6M,GAAQ,WAAY,GAAmB,kBAAR/4M,EAAkB,OAAOA,EAAK,MAAM,IAAIstC,UAAU,+CAAiD,CAAE,OAAiB,WAATyrK,EAAoBrxL,OAASwjD,QAAQpsE,EAAQ,CAD/Uo6M,CAAa10M,EAAK,UAAW,MAAsB,kBAAR/G,EAAmBA,EAAMiqB,OAAOjqB,EAAM,CADxE07M,CAAe17M,MAAiB6B,EAAOjG,OAAOwD,eAAeyC,EAAK7B,EAAK,CAAEN,MAAOA,EAAOL,YAAY,EAAMmzC,cAAc,EAAMsI,UAAU,IAAkBj5C,EAAI7B,GAAON,EAAgBmC,CAAK,CAG3O,SAASg8F,EAAex7F,EAAK5G,GAAK,OAKlC,SAAyB4G,GAAO,GAAIf,MAAMF,QAAQiB,GAAM,OAAOA,CAAK,CAL3By7F,CAAgBz7F,IAIzD,SAA+B9C,EAAG9C,GAAK,IAAIkD,EAAI,MAAQJ,EAAI,KAAO,oBAAsBC,QAAUD,EAAEC,OAAOi9B,WAAal9B,EAAE,cAAe,GAAI,MAAQI,EAAG,CAAE,IAAIjD,EAAGwD,EAAGzE,EAAG8S,EAAG7M,EAAI,GAAI+pE,GAAI,EAAItsE,GAAI,EAAI,IAAM,GAAI1D,GAAKkE,EAAIA,EAAE5D,KAAKwD,IAAIud,KAAM,IAAMrgB,EAAG,CAAE,GAAIb,OAAO+D,KAAOA,EAAG,OAAQ8rE,GAAI,CAAI,MAAO,OAASA,GAAK/uE,EAAIjB,EAAEM,KAAK4D,IAAIq+B,QAAUt8B,EAAEzF,KAAKS,EAAEgD,OAAQgC,EAAE/F,SAAWc,GAAIgvE,GAAI,GAAK,CAAE,MAAOlsE,GAAKJ,GAAI,EAAIe,EAAIX,CAAG,CAAE,QAAU,IAAM,IAAKksE,GAAK,MAAQ9rE,EAAC,SAAY4O,EAAI5O,EAAC,SAAW/D,OAAO2S,KAAOA,GAAI,MAAQ,CAAE,QAAU,GAAIpP,EAAG,MAAMe,CAAG,CAAE,CAAE,OAAOwB,CAAG,CAAE,CAJlds8F,CAAsB37F,EAAK5G,IAE5F,SAAqC0D,EAAG8+F,GAAU,IAAK9+F,EAAG,OAAQ,GAAiB,kBAANA,EAAgB,OAAO++F,EAAkB/+F,EAAG8+F,GAAS,IAAI/9F,EAAItE,OAAOC,UAAU0F,SAASxF,KAAKoD,GAAGwB,MAAM,GAAI,GAAc,WAANT,GAAkBf,EAAE46B,cAAa75B,EAAIf,EAAE46B,YAAYv7B,MAAM,GAAU,QAAN0B,GAAqB,QAANA,EAAa,OAAOoB,MAAMmE,KAAKtG,GAAI,GAAU,cAANe,GAAqB,2CAA2C8K,KAAK9K,GAAI,OAAOg+F,EAAkB/+F,EAAG8+F,EAAS,CAF7TE,CAA4B97F,EAAK5G,IACnI,WAA8B,MAAM,IAAIo0C,UAAU,4IAA8I,CADvDuuD,EAAoB,CAG7J,SAASF,EAAkB77F,EAAK+C,IAAkB,MAAPA,GAAeA,EAAM/C,EAAI1G,UAAQyJ,EAAM/C,EAAI1G,QAAQ,IAAK,IAAIF,EAAI,EAAG+gB,EAAO,IAAIlb,MAAM8D,GAAM3J,EAAI2J,EAAK3J,IAAK+gB,EAAK/gB,GAAK4G,EAAI5G,GAAI,OAAO+gB,CAAM,CAMhL8uB,KAD0D9uC,EAAOD,QACpD,WACb,aAEA,IAAIG,EAAI,CACJuC,EAAG,SAACU,EAAGlE,GACL,IAAK,IAAIyE,KAAKzE,EAAGiB,EAAEyC,EAAE1D,EAAGyE,KAAOxD,EAAEyC,EAAEQ,EAAGO,IAAMtE,OAAOwD,eAAeO,EAAGO,EAAG,CACtEb,YAAY,EACZC,IAAK7D,EAAEyE,IAEX,EACAf,EAAG,SAACzC,EAAGiD,GAAC,OAAK/D,OAAOC,UAAUC,eAAeC,KAAKW,EAAGiD,EAAE,GAEzDA,EAAI,CAAC,EACP,SAASlE,EAAEiB,EAAGiD,EAAGlE,EAAGyE,GAClBoB,MAAMF,QAAQzB,KAAOA,EAAI,CAACA,IAAK2B,MAAMF,QAAQ3F,KAAOA,EAAI,CAACA,IAAI,IAC5C2vO,EAD4CC,EAAAP,EAC7CnrO,GAAC,IAAjB,IAAA0rO,EAAAzqO,MAAAwqO,EAAAC,EAAAnrO,KAAA89B,MAAmB,KAAiBstM,EAAzB1qO,EAACwqO,EAAA1rO,MAAA6rO,EAAAT,EAAuBrvO,GAAC,IAAjB,IAAA8vO,EAAA3qO,MAAA0qO,EAAAC,EAAArrO,KAAA89B,MAAmB,KAARr+B,EAAC2rO,EAAA5rO,MAAOkB,EAAElE,GAAGiD,EAAGO,EAAE,CAAC,OAAAI,GAAAirO,EAAA7uO,EAAA4D,EAAA,SAAAirO,EAAA9/J,GAAA,CAAD,CAAC,OAAAnrE,GAAA+qO,EAAA3uO,EAAA4D,EAAA,SAAA+qO,EAAA5/J,GAAA,CACjD,MAAO,GAAG9qE,MAAM5E,KAAKkF,UAAW,EAClC,CACAvE,EAAEuC,EAAEU,EAAG,CACL0tE,QAAS,kBAAMtuE,CAAC,IAElB,IAAMmB,EAAIzE,EAAEwE,KAAK,KAAM,oBACrBW,EAAInF,EAAEwE,KAAK,KAAM,uBACnB,SAASd,EAAEzC,GACT,GAAI+D,OAAO0tD,UACT,OAAO,IAAIA,WAAYC,gBAAgB1xD,EAAG,aAAay4C,KAAKggB,kBAE9D,IAAMx1D,EAAIxC,SAASC,cAAc,OACjC,OAAOuC,EAAE6jC,UAAY9mC,EAAGiD,EAAEw1D,iBAC5B,CACA,SAAS51D,EAAE7C,GACT,OAAOA,GAAK,iBAAmBA,IAAM4E,MAAMF,QAAQ1E,EACrD,CACA,SAASgF,EAAEhF,EAAGiD,GACZ,IAAIlE,EAAIG,OAAO46B,OAAO,CAAC,EAAG95B,GAC1B,OAAO6C,EAAE7C,IAAM6C,EAAEI,IAAM/D,OAAOwL,KAAKzH,GAAG8d,SAAQ,SAAAvd,GAC5CX,EAAEI,EAAEO,KAAMA,KAAKxD,EAAIjB,EAAEyE,GAAKwB,EAAEhF,EAAEwD,GAAIP,EAAEO,IAE/BtE,OAAO46B,OAAO/6B,EAACmvO,EAAA,GACjB1qO,EAAIP,EAAEO,IAEX,IAAIzE,CACN,CACA,SAASgB,EAAEC,EAAGiD,GACZ,OAAO/D,OAAOwL,KAAK1K,GAAGikC,MAAK,SAAAllC,GAAC,OAAIiB,EAAEjB,KAAOkE,CAAC,GAC5C,CACA,IAAMX,EAAI,SAAAtC,GACR,IAAI8uO,EACE7rO,EAAIjD,EAAEmqO,MACVprO,EAAIiB,EAAE+uO,KACNvrO,EAAIxD,EAAEokN,cACNlgN,EAAI,SAAUlE,GACZ,IAAMiD,EAAI,SAACjD,EAAGiD,GACV,IAAMlE,EAAIiB,EAAEw8B,aAAav5B,GACzB,OAAOjD,EAAEilC,gBAAgBhiC,GAAIlE,CAC/B,EACAA,EAAI,SAAJA,EAAciB,GACZ,IAAIwD,EAAIe,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACvEL,EAAIjB,EAAEjD,EAAG,gBACfkE,IAAMV,EAAEU,GAAKlE,GACb,IAAK,IAALoJ,EAAA,EAAA4lO,EAAgBpqO,MAAMmE,KAAK/I,EAAEkvC,UAAS9lC,EAAA4lO,EAAA/vO,OAAAmK,IAAE,CAAnC,IAAMlF,EAAC8qO,EAAA5lO,GACJpJ,EAAIiD,EAAEiB,EAAG,oBACflE,GAAKA,IAAMwD,EAAExD,GAAKkE,GAAInF,EAAEmF,EAAGV,EAC7B,CACA,OAAOA,CACT,EACF,OAAOzE,EAAE0D,EAAEzC,GACb,CAhBI,CAgBF,sEAADsb,OAAuErY,EAAC,yPAAAqY,OAAwP,iBAAmBvc,EAAE,eAAiB,KAAOA,EAAE,cAAgB,OAAHuc,OAAUvc,EAAE,cAAa,SAAU,GAAE,wkBAAAuc,OAAukBvc,EAAE,qBAAoB,oDAAAuc,OAAmDvc,EAAE,qBAAoB,yKAAAuc,OAAwK9X,EAAI,GAAK,kLAAH8X,OAAqLvc,EAAE,YAAW,yCAAuC,+CACj+C,OAAOkE,EAAEwoH,SAAS,eAAwC,QAAtBqjH,EAAU5qO,EAAEwmI,YAA8B,IAAZokG,GAAsBA,EAAQn3J,UAAU58D,IAAI,MAAO,eAAgB7W,EAAEsoG,OAAO70B,UAAU58D,IAAI,iBAAkB7W,CAChL,EACM2N,EAAI,kEACRtP,EAAI,CACF,wBAAyB,CACvBe,IAAK,MACL0sB,OAAQ,WACRykC,IAAK,GAAFn5C,OAAKzJ,EAAC,cAEX,uBAAwB,CACtBvO,IAAK,aACL0sB,OAAQ,UACRykC,IAAK,GAAFn5C,OAAKzJ,EAAC,qBAEX,sBAAuB,CACrBvO,IAAK,YACL0sB,OAAQ,UACRykC,IAAK,GAAFn5C,OAAKzJ,EAAC,oBAEX,wBAAyB,CACvBvO,IAAK,cACL0sB,OAAQ,UACRykC,IAAK,GAAFn5C,OAAKzJ,EAAC,sBAEXo9N,QAAS,CACP3rO,IAAK,UACL0sB,OAAQ,WACRykC,IAAK,GAAFn5C,OAAKzJ,EAAC,mBAGf,SAASjC,EAAE5P,GACT,IAAIiD,EAAI/D,OAAOmE,OAAO,CAAC,GACvB,OAAOuB,MAAMF,QAAQ1E,IAAMA,EAAE+gB,SAAQ,SAAA/gB,IAClC,SAAUA,GACT,OAAOuC,EAAEnD,eAAeY,EAC1B,CAFC,CAECA,GAAKA,EAAEsD,MAAQL,EAAEjD,EAAEsD,KAAOtD,GAAKiD,EAAEV,EAAEvC,GAAGsD,KAAOf,EAAEvC,EACnD,IAAIiD,CACN,CAAC,IACKZ,EAAC,WAoBL,SAAAA,EAAYrC,IA3IhB,SAAAu0F,EAAA1iB,GAAA,KAAA0iB,aAAA1iB,GAAA,UAAA1+B,UAAA,qCA2ImBmtL,CAAA,KAAAj+N,GAAA6rO,EAAA,sBAPE,CACfhpM,OAAQ,GACRwlG,KAAM,GACN/xF,KAAM,GACNgvB,MAAO,GACP/uB,KAAM,KAGN,IAAI31C,EAAIsB,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7EkE,KAAK41B,QAAUr5B,EAAE3C,EAAE6sO,gBAAiBjsO,GAAIwF,KAAKm3D,QAAU5/D,EAAGyI,KAAK0mO,YAAa1mO,KAAKm3D,SAAWn3D,KAAK41B,QAAQ+wM,WAAWnwO,OAAS,GAAKwJ,KAAK4mO,aAAc5mO,KAAK6mO,gBAAiB7mO,KAAK8mO,gBAAkB9mO,KAAK+mO,YAAY,oBACrN,CA9IJ,IAAA39J,EAAAC,EAAAC,EAqRK,OArRLF,EA8IKxvE,EA9ILyvE,EA8IK,EAAAxuE,IAAA,YAAAN,MACD,WACE,IAAIhD,EACJyI,KAAKm3D,SAAW5/D,EAAIyI,KAAKm3D,mBAAoBkiC,YAAc9hG,EAAI,iBAAmBA,EAAIS,SAASgmC,cAAczmC,GAAK,KAAMyI,KAAKkhC,KAAOrnC,EAAEmG,KAAK41B,UAAWz5B,MAAMF,QAAQ+D,KAAK41B,QAAQ+wM,aAAe3mO,KAAK41B,QAAQ+wM,WAAWnwO,OAAS,IAAMwJ,KAAK41B,QAAQ+wM,WAAa,CAAC3mO,KAAK41B,QAAQ+wM,YACjR,GAAC,CAAA9rO,IAAA,aAAAN,MACD,WAAa,IAKPH,EAAGmC,EAAGjF,EALC8gE,EAAA,KACL7gE,EAAIyI,KAAK41B,QACbp7B,EAAIwF,KAAKkhC,KACT5qC,EAAI0J,KAAKm3D,QACP17D,EAAI,GAERuE,KAAKgnO,eAAiB,CAACjsO,EAAEzE,EAAG,SAAS,kBAAM8hE,EAAKloB,MAAM,IAAGn1C,EAAEP,EAAEuyE,MAAO,SAAS,kBAAM3U,EAAKjoB,MAAM,IAAGp1C,EAAEP,EAAE81L,MAAO,SAAS,SAAA/4L,GACnHA,EAAE4B,SAAWqB,EAAE81L,OAASl4H,EAAKjoB,MAC/B,IAAIp1C,EAAEP,EAAEupG,OAAQ,SAAU3pG,EAAI,SAAA9D,GAC5B,IAAMyE,EAAIq9D,EAAK6uK,eAAezhN,QAAO,SAAAjuB,GACnC,IAAI2vO,EACJ,OAAO3vO,EAAEgD,MAAMyoH,SAAS1sH,EAAE6C,OAAOoB,MAAMiO,iBAAsD,QAAlC0+N,EAAgB3vO,EAAE4vO,kBAA0C,IAAlBD,OAA2B,EAASA,EAAc1hN,QAAO,SAAAjuB,GAAC,OAAIA,EAAEyrH,SAAS1sH,EAAE6C,OAAOoB,MAAMiO,cAAc,IAAEhS,QAAU,CACzN,IACAiF,EAAEjF,SAAWiF,EAAIzD,SAASskC,iBAAiB,kBAAmB7gC,EAAE6c,SAAQ,SAAA/gB,GACtEA,EAAEksD,QAAS,EAAI1oD,EAAEud,SAAQ,SAAA9d,GACvBjD,EAAE23E,UAAUx3C,SAASl9B,EAAED,SAAWhD,EAAEksD,QAAS,EAC/C,GACF,IACA,IAAMrpD,EAAII,EAAEgtC,QAAQxJ,cAAc,aAClCjjC,EAAEvE,OAAS,EAAI4D,GAAKA,EAAE8uC,SAAW9uC,GAAKI,EAAEgtC,QAAQ9tC,YAAYM,EAAE,yBAAD6Y,OAA0Btb,EAAE+uO,KAAK,cAAa,WAC7G,EAAG/pO,EAAI,IAAK,WACV,IAAIhF,EAAIuE,UACNtB,EAAIwF,KACNlH,aAAaxB,GAAIA,EAAIkC,YAAW,WAC9BY,EAAEyB,MAAMrB,EAAGjD,EACb,GAAGgF,EACL,KAAMhF,EAAEokN,eAAiB37M,KAAKgnO,eAAelwO,KAAKiE,EAAEP,EAAEynI,KAAM,SAAS,kBAAM7pE,EAAKgvK,SAAS,IAC3F,GAAC,CAAAvsO,IAAA,OAAAN,MACD,WACE,QAASyF,KAAKm5E,WAAan5E,KAAKkhC,KAAKovJ,MAAMphH,UAAUhmC,OAAO,cAAelpC,KAAKqnO,MAAM,QAASrnO,KACjG,GAAC,CAAAnF,IAAA,OAAAN,MACD,WACE,OAAQyF,KAAKm5E,WAAan5E,KAAKkhC,KAAKovJ,MAAMphH,UAAU58D,IAAI,cAAetS,KAAKqnO,MAAM,QAASrnO,KAC7F,GAAC,CAAAnF,IAAA,QAAAN,MACD,WACEyF,KAAKyjG,aAAezjG,KAAKsnO,sBAAwBtnO,KAAKsnO,oBAAsB,KAAMtnO,KAAKqnO,MAAM,SAC/F,GAAC,CAAAxsO,IAAA,SAAAN,MACD,WACE,OAAOyF,KAAKkhC,KAAKovJ,MAAMphH,UAAUx3C,SAAS,aAC5C,GAAC,CAAA78B,IAAA,UAAAN,MACD,WAAU,IAAAk6E,EAAA,KACJl9E,IAAIuE,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,KAAmBA,UAAU,GACvEkE,KAAKyjG,aAAc,EAAIzjG,KAAKgnO,eAAe1uN,SAAQ,SAAA/gB,GAAC,OAAIkE,EAACI,WAAC,EAADomO,EAAI1qO,GAAE,IAAGA,GAAKd,OAAOwL,KAAKjC,MAAMsY,SAAQ,SAAA/gB,GAAC,cAAWk9E,EAAKl9E,EAAE,GACtH,GAAC,CAAAsD,IAAA,QAAAN,MACD,SAAMhD,GACJ,IADO,IAAAq9E,EAAA,KACEtF,EAAOxzE,UAAUtF,OAAQgE,EAAI,IAAI2B,MAAMmzE,EAAO,EAAIA,EAAO,EAAI,GAAI5iC,EAAO,EAAGA,EAAO4iC,EAAM5iC,IAC/FlyC,EAAEkyC,EAAO,GAAK5wC,UAAU4wC,GAE1B1sC,KAAKunO,eAAehwO,GAAG+gB,SAAQ,SAAA/gB,GAAC,OAAIA,EAACsE,WAAC,EAAGrB,EAACqY,OAAA,CAAE+hE,IAAK,GACnD,GAAC,CAAA/5E,IAAA,KAAAN,MACD,SAAGhD,EAAGiD,GACJ,YAAO,IAAWwF,KAAKunO,eAAehwO,KAAOyI,KAAKunO,eAAehwO,GAAGT,KAAK0D,GAAIwF,KAC/E,GAAC,CAAAnF,IAAA,MAAAN,MACD,SAAIhD,EAAGiD,GACL,IAAMlE,EAAI0J,KAAKunO,eAAehwO,IAAM,GAClCwD,EAAIzE,EAAEwW,QAAQtS,GAChB,OAAQO,GAAKzE,EAAEq/B,OAAO56B,EAAG,GAAIiF,IAC/B,GAAC,CAAAnF,IAAA,eAAAN,MACD,WACEvC,SAASg4C,KAAKt2C,YAAYsG,KAAKkhC,KAAKovJ,OAAQtwL,KAAKyjG,aAAc,CACjE,GAAC,CAAA5oG,IAAA,UAAAN,MACD,WACEyF,KAAKwnO,iBAAkBxnO,KAAKmwC,OAAQnwC,KAAKqnO,MAAM,OAAQrnO,KAAKynO,WAC9D,GAAC,CAAA5sO,IAAA,gBAAAN,MAAA,eAAAmtO,EAAAzC,EAAArC,IAAA6B,MACD,SAAAkD,IAAA,IAAApwO,EAAAiD,EAAAlE,EAAAyE,EAAAU,EAAAmsO,EAAAC,EAAAC,EAAA/xJ,EAAA,YAAA6sJ,IAAA1wL,MAAA,SAAAnS,GAAA,cAAAA,EAAA4G,KAAA5G,EAAApoB,MAAA,OAMwD,OALhDpgB,EAAIyI,KAAKkhC,KACb1mC,EAAIwF,KAAK41B,QACPt/B,EAAI,KACNyE,EAAI,KACJU,EAAI,KACFuE,KAAKinO,eAAiB,GAAI1vO,EAAEiwC,QAAQnJ,UAAY,GAAE0B,EAAApoB,KAAA,EAAS3X,KAAK+nO,YAAW,OAqC9E,GArC8EhoM,EAAA0mC,KAAEnuD,SAAQ,SAAAte,GAEvF,IADA,IAmCCokG,EAnCGhkG,EAAIJ,EAAEguO,WAAahuO,EAAEguO,WAAa,MAAM/hJ,EAAA,WACvC,IAcGnsF,EAdGokG,EAAI+pI,EAAAC,GAEP3rO,GADF6hG,EAAQ1F,EAAewF,EAAM,IACjB,GACVrkG,EAAIukG,EAAM,GAERh1F,EAAIpR,SAASC,cAAc,UACjC,GAAImR,EAAE2+E,MAAQxrF,EAAG6M,EAAEg1B,UAAY,gBAAHvrB,OAAmBtW,GAAK6M,EAAEguM,QAAQ78M,MAAQP,EAAEutB,OAAShrB,EAAGvC,EAAEmtO,YAAc1wO,OAAOoqG,QAAQ7mG,EAAEmtO,YAAY3wO,OAAS,EAAG,CAC3IiF,EAAI,GACJ,IAAK,IAAL0sO,EAAA,EAAAC,EAAoB3xO,OAAOoqG,QAAQ7mG,EAAEmtO,YAAWgB,EAAAC,EAAA5xO,OAAA2xO,IAAE,CAA7C,IAAMtjI,EAAKujI,EAAAD,GAER5wO,EADMmhG,EAAemM,EAAO,GAClB,GAChB7qG,EAAEmtO,WAAW5vO,GAAGyrH,SAASzmH,KAAOd,EAAEjF,OAAS,EAAIiF,EAAE3E,KAAKS,EAAEiR,eAAiB/M,EAAI,CAAClE,EAAEiR,eAClF,CACF,CAEA,GAAIxO,EAAE8gL,QAAU1xK,EAAEguM,QAAQixB,QAAU/wO,EAAE0C,EAAE8gL,MAAOv+K,IAAK,MAAQnC,GAAKP,EAAEm2C,KACjE,GAAI,WAAa51C,EAAG,CAClB,IAAI7C,EAAIS,SAASC,cAAc,YAC/BV,EAAE8mC,UAAYxkC,EAAEm2C,KAAMl2C,EAAIvC,EAAEiwC,OAC9B,MAAO1tC,EAAI9B,SAAS+xH,gBAAgB,6BAA8B,QAAU1xH,aAAa,SAAU,MAAOyB,EAAEzB,aAAa,QAAS,MAAOyB,EAAEzB,aAAa,UAAW,OAAFwa,OAAShZ,EAAEkiD,MAAQliD,EAAEkiD,MAAQ/hD,EAAE+hD,MAAK,KAAAlpC,OAAIhZ,EAAEqkD,OAASrkD,EAAEqkD,OAASlkD,EAAEkkD,SAAWpkD,EAAEukC,UAAYxkC,EAAEm2C,UACvPl2C,EAAI9B,SAASC,cAAc,MAAQI,aAAa,QAAS+Q,EAAEguM,QAAQ78M,OAC1E6O,EAAEoxC,OAAO1gD,GAAIvC,EAAEiwC,QAAQ9tC,YAAY0P,GAAI2sE,EAAKkxJ,eAAenwO,KAAKk/M,EAAc,CAC5Ez7M,MAAOgC,EACPyzC,KAAMl2C,EAAE21G,WACPh0G,EAAEjF,OAAS,GAAK,CACjB2wO,WAAY1rO,KACT2N,EAAEu0B,iBAAiB,SAAS,SAAApmC,GAC/Bw+E,EAAKuxJ,sBAAwB/vO,EAAE29C,cAAc5U,WAAWlC,YAAc7mC,EAAE29C,cAAcg6B,UAAU58D,IAAI,eAAgBvX,EAAIxD,EAAE29C,cAAe6gC,EAAKuxJ,oBAAsBvsO,EAAEq8M,QAAQ78M,MAAOw7E,EAAKuyJ,UAAYxuO,EAAE21G,UAAW15B,EAAK0xJ,WAAa,CACnOpuO,KAAMkD,EACNhC,MAAOw7E,EAAKuxJ,oBACZiB,IAAKxyJ,EAAKuyJ,WACTtuO,EAAE8gL,QAAU/kG,EAAK0xJ,WAAWY,QAAUvuO,EAAEs9M,QAAQixB,SAAUtyJ,EAAKsxJ,MAAM,SAAUtxJ,EAAK0xJ,aAAcnxO,GAAKA,EAAE44E,UAAUhmC,OAAO,eAAgB1uC,EAAEmhN,eAAiB5lI,EAAKqxJ,UAAW9wO,EAAIyE,CACtL,GAEJ,EAlCAmtO,EAAA,EAAAD,EAAmBxxO,OAAOoqG,QAAQ7mG,EAAE+sK,OAAMmhE,EAAAD,EAAAzxO,OAAA0xO,IAAAjiJ,GAmC5C,KAAIzrF,EAAEq2C,eAAgB7wC,KAAKm3D,QAAQ58D,MAAK,CAAAwlC,EAAApoB,KAAA,SAElCpgB,EAAIS,SAASgmC,cAAc,gBAADnrB,OAAiBrY,EAAEq2C,aAAer2C,EAAEq2C,aAAe7wC,KAAKm3D,QAAQ58D,MAAK,OAAQvC,SAASgmC,cAAc,gBAADnrB,OAAiBrY,EAAEq2C,aAAer2C,EAAEq2C,aAAe7wC,KAAKm3D,QAAQ58D,MAAK,OAAQvC,SAASgmC,cAAc,IAADnrB,OAAKrY,EAAEq2C,aAAer2C,EAAEq2C,aAAe7wC,KAAKm3D,QAAQ58D,QACtRQ,EAAmF,QAA9E6sO,EAAyB,OAANrwO,QAAoB,IAANA,OAAe,EAASA,EAAE6/M,QAAQ78M,aAAwC,IAArBqtO,EAA8BA,EAAmB,GACxI,OAANrwO,QAAoB,IAANA,GAAgBA,EAAE23E,UAAU58D,IAAI,eAAgBhc,EAAIiB,EAAGyI,KAAKsnO,oBAAsBvsO,EAAGiF,KAAKm3D,QAAQ58D,OAASyF,KAAKwnO,iBAAiB,yBAAAznM,EAAAuO,OAAA,GAAAq5L,EAAA,UAElJ,SAAAd,IAAA,OAAAa,EAAA7rO,MAAA,KAAAC,UAAA,QAAA+qO,CAAA,CAlDA,IAkDA,CAAAhsO,IAAA,YAAAN,MAAA,eAAAiuO,EAAAvD,EAAArC,IAAA6B,MACD,SAAAgE,IAAA,IAAAlxO,EAAAiD,EAAAlE,EAAAoyO,EAAAC,EAAAC,EAAA,OAAAhG,IAAA1wL,MAAA,SAAA22L,GAAA,cAAAA,EAAAliM,KAAAkiM,EAAAlxN,MAAA,OAIE,IAHMpgB,EAAIyI,KAAK41B,QACbp7B,EAAI,GACFlE,EAAI6Q,EAAE5P,EAAEovO,YACZ+B,EAAA,EAAAC,EAAgBlyO,OAAOwhB,OAAO3hB,GAAEoyO,EAAAC,EAAAnyO,OAAAkyO,IAArBnxO,EAACoxO,EAAAD,GAAsBluO,EAAE1D,KAAKS,EAAEy0D,KAAK,OAAA68K,EAAAlxN,KAAA,EACnChgB,QAAQgC,IAAIa,EAAEyC,KAAI,SAAA1F,GAAC,OAAIkkE,MAAMlkE,GAAG4wC,MAAK,SAAA5wC,GAAC,OAAIA,EAAE+0D,MAAM,GAAC,KAAGnkB,MAAK,SAAA5wC,GAAC,OAAKA,EAAE+gB,SAAQ,SAAA/gB,GACtFjB,EAAEK,eAAeY,EAAEgwB,UAAYhwB,EAAEgwB,OAASjxB,EAAEiB,EAAEgwB,QAAQA,OACxD,IAAIhwB,CAAC,IAAE,cAAAsxO,EAAAjF,OAAA,SAAAiF,EAAApiK,MAAA,wBAAAoiK,EAAAv6L,OAAA,GAAAm6L,EAAA,UACR,SAAAV,IAAA,OAAAS,EAAA3sO,MAAA,KAAAC,UAAA,QAAAisO,CAAA,CATA,IASA,CAAAltO,IAAA,cAAAN,MACD,SAAYhD,GACV,GAAI,sBAAwBA,EAAG,MAAMmB,MAAM,4BAC7C,GAAC,CAAAmC,IAAA,iBAAAN,MACD,WACE,IAAIhD,EAAIuE,UAAUtF,OAAS,QAAsB+C,IAAjBuC,UAAU,GAAmBA,UAAU,GAAKkE,KAAKsnO,oBAC3E9sO,EAAIwF,KAAKm3D,QACf38D,aAAag9M,kBAAoBx3M,KAAKsnO,sBAAwB9sO,EAAED,MAAQhD,EAC1E,IArRJ8xE,GAAAH,EAAAE,EAAA1yE,UAAA2yE,GAAAC,GAAAJ,EAAAE,EAAAE,GAAA7yE,OAAAwD,eAAAmvE,EAAA,aAAAzzB,UAAA,IAqRK/7C,CAAA,CA9JI,GAgKP,OAFG6rO,EA9JG7rO,EAAC,kBACoB,CACvB8nO,MAAO,UACP/lB,eAAe,EACf9qK,aAAc,KACd81L,WAAY,GACZL,KAAM,CACJ,oBAAqB,oBACrB,aAAc,cACd,aAAc,yBACd,WAAY,UAsJP9rO,EAAC,OACd,CA3Qe,E,+BCdf,MASWsuO,EAAGthO,EAAHshO,EAIR,qBAAuBxtO,OAASA,OAAS0E,KAJ9BwH,EAIoC,SAAUshO,GAC1D,SAASthO,EAAEogC,EAAGrrC,EAAGwsO,EAAG5kF,GAClBv8G,EAAEjxC,eAAe4F,KAAOqrC,EAAErrC,GAAK4nJ,EAAEtoJ,MAAM,KAAMktO,GAC/C,CACA,IAAIxsO,EAAI,CAAC,EA6yXT,OA5yXAiL,EAAEjL,EAAG,kBAAmB,IAAI,WAC1B,IACEA,EADEqrC,EAAI,qBAAuBkhM,EAAIA,EAAI,qBAAuBxtO,OAASA,OAAS,CAAC,EAwCjF,OAtCA,SAAWiB,GACTA,EAAEysO,OAAS,6BACXzsO,EAAE0sO,QAAU,aACZ1sO,EAAEy1B,QAAU,QACZz1B,EAAEy2D,IAAMprB,EACRrrC,EAAEs3B,IAAMt3B,EAAEy2D,IAAIh7D,SACduE,EAAEgsO,IAAMhsO,EAAEs3B,KAAOt3B,EAAEs3B,IAAIk2F,mBAAqBxtH,EAAEs3B,IAAIk2F,gBAAgBxtH,EAAEysO,OAAQ,OAAOE,cACnF3sO,EAAE+vH,UAAY/vH,EAAEy2D,IAAIwgB,WAAaj3E,EAAEy2D,IAAIwgB,UAAU84C,WAAa,GAC9D/vH,EAAE4sO,UAAY,IAAM5sO,EAAE+vH,UAAUx/G,QAAQ,UACxCvQ,EAAEmyM,WAAa,IAAMnyM,EAAE+vH,UAAUx/G,QAAQ,WACzCvQ,EAAE6sO,KAAO,uBAAuBvjO,KAAKtJ,EAAE+vH,aAAe/vH,EAAEy2D,IAAIq2K,MAC5D9sO,EAAE+sO,UAAY/sO,EAAE4sO,WAAa,IAAM5sO,EAAE+vH,UAAUx/G,QAAQ,UACvDvQ,EAAEgtO,cAAgB,iCAAiC1jO,KAAKtJ,EAAE+vH,WAC1D/vH,EAAEitO,UAAY,IAAMjtO,EAAE+vH,UAAUx/G,QAAQ,eACxCvQ,EAAEktO,QAAU,EAAIvlO,KAAKi/C,GAAK,IAC1B5mD,EAAEmtO,WAAantO,EAAEmyM,WAAa,EAAIr+L,SAAS9T,EAAE+vH,UAAUr+G,MAAM,YAAY,GAAI,IAC7E1R,EAAEotO,WAAaptO,EAAEy2D,IAAI42K,WACrBrtO,EAAEstO,YAAc,CAAC,UAAW,cAAe,eAAgB,YAC3DttO,EAAE65B,KAAO,WAAa,EACtB75B,EAAEutO,sBAAwB,WACxB,IAAIliM,GAAI,EACR,IAAKrrC,EAAE6sO,KAAM,CACX,IAAIhgO,EAAI3S,OAAOwD,eAAe,CAAC,EAAG,UAAW,CAC3CE,IAAK,WACHytC,GAAI,CACN,IAEFrrC,EAAEy2D,IAAIr1B,kBAAoBphC,EAAEy2D,IAAIjnB,sBAAwBxvC,EAAEy2D,IAAIr1B,iBAAiB,cAAephC,EAAE65B,KAAMhtB,GAAI7M,EAAEy2D,IAAIjnB,oBAAoB,cAAexvC,EAAE65B,KAAMhtB,GAC7J,CACA,OAAOw+B,CACT,CAX0B,GAY1BrrC,EAAEwtO,OAAS,GACXxtO,EAAEytO,YAAc,CAAC,EACjBztO,EAAE0tO,YAAc,CAAC,EACjB1tO,EAAE2tO,YAAc,CAAC,EACjB3tO,EAAE4tO,WAAa,CAChB,CApCD,CAoCG5tO,IAAMA,EAAI,CAAC,IAEPA,CACT,IACAiL,EAAEjL,EAAG,oBAAqB,CAACA,EAAE,qBAAqB,SAAUA,GAC1D,SAASqrC,EAAEhuC,EAAG4C,EAAG1C,EAAGysE,GAClB,IAAI41I,EAAI3/M,EAAI,mBAAqB,qBACjC,KAAO5C,IAAMA,EAAIuiN,EAAI,uBACrB,IAAI1uM,EAAI1S,EAAEnB,GACRC,EAAI4T,EAAI0uM,EAAI,KAAOviN,EAAI,+BAAiCA,EAAI,IAAMA,EAAEwC,WACtE,GAAI,qBAAuBmqE,EAAG,CAC5B,IAAInsE,EAAI,GACRqT,IAAM5T,GAAK,KACXuwO,EAAE7jK,GAAG,SAAU3sE,EAAG4C,GAChBpC,GAAK,QAAUoC,EAAI,KAAO5C,EAC1B6T,IAAM5T,GAAKynI,UAAU9kI,GAAK,IAAM8kI,UAAU1nI,GAC5C,IACAC,GAAKO,CACP,CACAiwO,EAAE9tO,EAAG,eAAgB,CACnB+tO,MAAOxwO,EACP65B,KAAM/5B,EACNR,QAASS,EACTu4D,OAAQmU,IACP,WACD,GAAI/pE,EAAG,MAAM9D,MAAMmB,GACnBvC,EAAE8D,UAAY,IAAMwsC,EAAE2nI,SAASziK,QAAQjT,IAAMuB,QAAQkG,KAAKzH,EAC5D,IACA+tC,EAAE2nI,SAASz4K,KAAK+C,EAClB,CAQA,SAASsqJ,EAAEvqJ,EAAG4C,GACZ,OAAO6T,SAASzW,EAAG4C,GAAK,GAC1B,CACA,SAASkL,EAAE9N,GACT,MAAO,kBAAoBA,CAC7B,CACA,SAAS2wO,EAAE3wO,GAET,MAAO,oBADPA,EAAInD,OAAOC,UAAU0F,SAASxF,KAAKgD,KACF,4BAA8BA,CACjE,CACA,SAAS4wO,EAAE5wO,EAAG4C,GACZ,QAAS5C,GAAK,kBAAoBA,KAAO4C,IAAM+tO,EAAE3wO,GACnD,CACA,SAAS6wO,EAAE7wO,GACT,OAAO4wO,EAAE5wO,IAAM,kBAAoBA,EAAEy5B,QACvC,CACA,SAAS+oI,EAAExiK,GACT,IAAI4C,EAAI5C,GAAKA,EAAEg7B,YACf,SAAU41M,EAAE5wO,GAAG,IAAO6wO,EAAE7wO,KAAO4C,IAAMA,EAAEnD,MAAQ,WAAamD,EAAEnD,KAChE,CACA,SAAS0B,EAAEnB,GACT,MAAO,kBAAoBA,IAAM0F,MAAM1F,IAAM2zL,IAAW3zL,IAAK,IAAYA,CAC3E,CACA,SAASgD,EAAEhD,GACT,MAAO,qBAAuBA,GAAK,OAASA,CAC9C,CACA,SAASrC,EAAEqC,EAAG4C,EAAG1C,GACf,IAAIqiN,EAIJ,OAHAz0M,EAAElL,GAAKI,EAAE9C,GAAKF,EAAEvB,aAAamE,EAAG1C,GAAKF,GAAKA,EAAEm6B,gBAAkBooL,EAAIviN,EAAEm6B,aAAav3B,KAAO,UAAYA,IAAM2/M,EAAIviN,EAAEm6B,aAAav3B,EAAI,UAAY4tO,EAAE5tO,GAAG,SAAUA,EAAG1C,GAC7J8C,EAAEJ,GAAK5C,EAAEvB,aAAayB,EAAG0C,GAAK5C,EAAE4iC,gBAAgB1iC,EAClD,IACOqiN,CACT,CACA,SAAStiN,EAAE2C,EAAG1C,GACZ,IAAIF,EAEJ,IAAKA,KADL4C,IAAMA,EAAI,CAAC,GACD1C,EAAG0C,EAAE5C,GAAKE,EAAEF,GACtB,OAAO4C,CACT,CACA,SAAS2K,IACP,IAAK,IAAI3K,EAAIV,UAAWhC,EAAI0C,EAAEhG,OAAQiX,EAAI,EAAGA,EAAI3T,EAAG2T,IAAK,CACvD,IAAI84D,EAAI/pE,EAAEiR,GACV,GAAI,qBAAuB84D,GAAK,OAASA,EAAG,OAAOA,CACrD,CACF,CACA,SAASD,EAAE9pE,EAAG1C,GACZyC,EAAE6sO,OAAS7sO,EAAEgsO,KAAOzuO,GAAK,qBAAuBA,EAAEumD,UAAYvmD,EAAE0rB,OAAS,iBAAmB,IAAM1rB,EAAEumD,QAAU,KAC9GxmD,EAAE2C,EAAEyyC,MAAOn1C,EACb,CACA,SAASwN,EAAE9K,EAAG1C,GACZ,OAAO,KAAO0C,EAAIA,EAAIsjB,WAAWtjB,EAAEkuO,YAAY5wO,GAAK,IACtD,CAYA,SAASswO,EAAE5tO,EAAG1C,EAAGysE,GACf,IAAK,IAAI3sE,KAAK4C,EAAG/F,OAAOE,eAAeC,KAAK4F,EAAG5C,IAAME,EAAElD,KAAK2vE,GAAK/pE,EAAE5C,GAAI4C,EAAE5C,GAAIA,EAAG4C,EAClF,CACA,SAAShC,EAAEgC,EAAG1C,EAAGysE,GACf,SAAS3sE,EAAEE,EAAGF,GACZ,IAAIqM,EAAIzJ,EAAEuvC,qBAAuBxvC,EAAEouO,4BACnC1kO,GAAKA,EAAErP,KAAK4F,EAAG1C,EAAGF,GAAG,EACvB,CACA,SAAS6T,EAAE84D,GACT,IAAI94D,EACJ,GAAIjR,EAAEi4B,SAAU,CACd,GAAI36B,EAAG,CACL,IAAImM,EAAI,CAAC,EACTA,EAAEnM,IAAK,CACT,MAAOmM,EAAIsgE,EACX6jK,EAAEnkO,GAAG,SAAUzJ,EAAG1C,GAChB,GAAIysE,EAAEzsE,GAAI,IAAK2T,EAAI84D,EAAEzsE,GAAGtD,OAAQiX,KAAM7T,EAAEE,EAAGysE,EAAEzsE,GAAG2T,GAAGtQ,GACrD,GACF,CACF,CACA,IAAIg/M,EAAI,oBAAsB3/M,GAAKA,EAAE9F,WAAa8F,EAClD,GAAI/F,OAAOE,eAAeC,KAAKulN,EAAG,YAAa,CAC7C,IAAI7kN,EAAI6kN,EAAEyuB,SACV9wO,GAAKqiN,EAAI7kN,EAAEwC,IAAM,GAAIysE,GAAKjvE,EAAEwC,GAAKqiN,EAAE32L,QAAO,SAAUhpB,GAClD,OAAO+pE,IAAM/pE,EAAEW,EACjB,IAAIvD,EAAEE,EAAGysE,KAAO94D,EAAEnW,GAAIA,EAAEwC,GAAK,MAAQ2T,EAAEnW,UAAW6kN,EAAEyuB,SACtD,CACF,CACA,SAASP,EAAE7tO,EAAG1C,EAAGysE,EAAGjvE,GAElB,GADAivE,EAAIA,GAAK,CAAC,EACNnsE,EAAEq6F,cAAgBj4F,EAAEm4F,eAAiBn4F,EAAEquO,WAAaruO,IAAMD,GAAI,CAChE,IAAI3C,EAAIQ,EAAEq6F,YAAY,UACtB76F,EAAEw7I,UAAUt7I,GAAG,GAAI,GACnBysE,EAAI1sE,EAAED,EAAG2sE,GACT/pE,EAAEm4F,cAAgBn4F,EAAEm4F,cAAcpuB,GAAK/pE,EAAEquO,UAAU/wO,EAAGysE,EACxD,MAAO,GAAI/pE,EAAEouO,SAAU,CACrBrkK,EAAEptE,QAAUU,EAAE0sE,EAAG,CACfhzB,eAAgB,WACdgzB,EAAEpwB,kBAAmB,CACvB,EACAh9C,OAAQqD,EACRvD,KAAMa,IAERF,EAAI,GACJ,IAAK,IAAI6T,EAAIjR,EAAG2/M,GAAI,EAAI1uM,EAAEm9N,UAAWn0O,OAAOE,eAAeC,KAAK6W,EAAG,aAAeA,EAAEm9N,SAAS9wO,KAAOF,EAAEpD,SAAW2lN,GAAI,GAAKviN,EAAEy0C,QAAQxyC,MAAMjC,EAAG6T,EAAEm9N,SAAS9wO,KAAM2T,EAAIhX,OAAOq8B,eAAerlB,GACxL0uM,GAAKviN,EAAEyP,MAAK,SAAU7M,EAAG1C,GACvB,OAAO0C,EAAE4kD,MAAQtnD,EAAEsnD,KACrB,IACAxnD,EAAE0e,SAAQ,SAAUxe,IAClB,IAAOA,EAAEqD,GAAGvG,KAAK4F,EAAG+pE,IAAMA,EAAEhzB,gBAC9B,GACF,CACAj8C,IAAMivE,EAAEpwB,kBAAoB7+C,EAAEV,KAAK4F,EAAG+pE,EACxC,CACA,IAAIukK,EAAIvuO,EAAEwtO,OACR3vO,EAAImC,EAAEs3B,IACNv8B,EAAIiF,EAAEy2D,KACPprB,IAAMA,EAAI,CAAC,IAAI2nI,SAAW,GAC3BrrK,KAAK6mO,cAAgB,SAAUvuO,GAC7B,OAAQ,IAAM0H,KAAKg/C,IAAIh/C,KAAKi/C,GAAK3mD,GAAK,EACxC,EACA,IAAIA,EAAIL,MAAMzF,UAAU8kC,KAAO,SAAUh/B,EAAG1C,GAC1C,OAAO0C,EAAEg/B,KAAK1hC,EAChB,EAAI,SAAU0C,EAAG1C,GACf,IAAIF,EACF2sE,EAAI/pE,EAAEhG,OACR,IAAKoD,EAAI,EAAGA,EAAI2sE,EAAG3sE,IAAK,GAAIE,EAAE0C,EAAE5C,GAAIA,GAAI,OAAO4C,EAAE5C,EACnD,EACAwwO,EAAE,CACAntO,IAAK,MACLi4B,KAAM,UACNK,KAAM,SACN+gC,OAAQ,SACR36D,KAAM,SACL,SAAUa,EAAG1C,GACdyC,EAAEzC,GAAK,SAAUF,GACf,IAAI2sE,EAEJ,OADA3+B,EAAE,IAAI,OAAI,IAAS2+B,EAAI,CAAC,GAAK,cAAgBzsE,GAAK,aAAe0C,EAAG+pE,IAC7DpqE,MAAMzF,UAAU8F,GAAGX,MAAMjC,EAAG,GAAG4B,MAAM5E,KAAKkF,UAAW,GAC9D,CACF,IACA,IAAIyqE,EACFzsE,EAAI,WACF,IAAI0C,EAAI0H,KAAKgyB,SAAS95B,SAAS,IAAI+tH,UAAU,EAAG,GAAK,IACnDrwH,EAAI,EACN,OAAO,WACL,MAAO,eAAiBysE,EAAI,GAAK/pE,GAAK1C,GACxC,CACF,CANI,GAkON,OA3NAxC,EAAE88B,SAAW98B,EAAE88B,OAAOj3B,GAAG6tO,WAAa,WACpC,IAAIxuO,EAAI,GAAGhB,MAAM5E,KAAKkF,WACtB,GAAIkE,KAAK,GAAI,OAAOxD,EAAE,IAAM,IAAID,EAAEmL,EAAElL,EAAE,IAAMA,EAAEvF,QAAU,UAAS+I,KAAK,GAAIxD,EAAE,GAAIA,EAAE,IAAKwD,MAAQ8qO,EAAEvzO,EAAEyI,KAAK,GAAI,yBAC9G,GACAxD,EAAI,CACFyuO,SAAU,SAAUzuO,EAAG1C,EAAGysE,EAAGjvE,QAC3B,IAAWA,IAAMA,EAAI,CAAC,GACtB,IAAIsC,EAAI,oBAAsB4C,GAAKA,EAAE9F,WAAa8F,EAClD/F,OAAOE,eAAeC,KAAKgD,EAAG,cAAgBA,EAAEgxO,SAAW,CAAC,GAC5DhxO,EAAIA,EAAEgxO,SACNruO,EAAE2uO,OAAS1uO,aAAaD,EAAE2uO,OAAS1uO,EAAE2uO,QAAU3uO,EAAE2uO,OAAOb,QAAU9tO,EAAE2uO,OAAOb,MAAMc,iBAAkB,GACnG,IAAI39N,EAAIjR,EAAEmhC,kBAAoBphC,EAAE8uO,yBAahC,OAZA59N,GAAKA,EAAE7W,KAAK4F,EAAG1C,EAAGysE,IAAGhqE,EAAEutO,uBAAwB,CAC7C37B,aAAS,IAAW72M,EAAE62M,SAAW,IAAMr0M,EAAEgT,QAAQ,SAAWxV,EAAE62M,QAC9DxiB,SAAS,IAEX/xL,EAAEE,KAAOF,EAAEE,GAAK,IAChBF,EAAEE,GAAGhD,KAAK,CACRqG,GAAIopE,EACJnlB,MAAO,kBAAoB9pD,EAAE8pD,MAAQ9pD,EAAE8pD,MAAQmsI,MAEjD3zL,EAAEE,GAAGuP,MAAK,SAAU7M,EAAG1C,GACrB,OAAO0C,EAAE4kD,MAAQtnD,EAAEsnD,KACrB,IACO,WACL5mD,EAAEgC,EAAG1C,EAAGysE,EACV,CACF,EACA+kK,SAAU,SAAU9uO,GAClB,IAAK,IAAI1C,EAAI0C,EAAEhG,OAAQoD,EAAI4C,EAAE,GAAI1C,KAAM0C,EAAE1C,GAAKF,IAAMA,EAAI4C,EAAE1C,IAC1D,OAAOF,CACT,EACA2xO,SAAU,SAAU/uO,GAClB,IAAK,IAAI1C,EAAI0C,EAAEhG,OAAQoD,EAAI4C,EAAE,GAAI1C,KAAM0C,EAAE1C,GAAKF,IAAMA,EAAI4C,EAAE1C,IAC1D,OAAOF,CACT,EACA+kC,KAAMpnC,EACNokK,MAAO,SAAUn/J,EAAG1C,EAAGysE,GACrB,OAAO/pE,EAAI1C,EAAI0C,EAAI+pE,EAAI/pE,EAAI+pE,EAAIzsE,CACjC,EACA0xO,iBAvMF,SAASzC,EAAEnvO,EAAG4C,GACZ,IAAI1C,EAAI,CAAC,EAIT,OAHAswO,EAAExwO,GAAG,SAAUuiN,EAAG1uM,GACZ+8N,EAAE5wO,EAAE6T,IAAI,KAAQ7T,EAAEy5B,UAAY72B,EAAEiR,IAAI0uM,EAAI4sB,EAAEnvO,EAAE6T,GAAIjR,EAAEiR,IAAKhX,OAAOwL,KAAKk6M,GAAG3lN,SAAWsD,EAAE2T,GAAK0uM,KAAYquB,EAAE5wO,EAAE6T,KAAO7T,EAAE6T,KAAOjR,EAAEiR,MAAI3T,EAAE2T,GAAK7T,EAAE6T,GAC7I,IACO3T,CACT,EAkMEhB,aAAc,SAAU0D,GACtBI,EAAEJ,IAAM1D,aAAa0D,EACvB,EACAivO,aAAcnkO,EACdrP,cAAe,SAAUuE,EAAG1C,EAAGysE,EAAGjvE,EAAGC,GAUnC,OATAiF,EAAIpC,EAAEnC,cAAcuE,GACpB1C,GAAKD,EAAE2C,EAAG1C,GACVvC,GAAK+uE,EAAE9pE,EAAG,CACR4lD,QAAS,IACTC,OAAQ,OACRF,OAAQ,MAEVokB,GAAKD,EAAE9pE,EAAG+pE,GACVjvE,GAAKA,EAAEoC,YAAY8C,GACZA,CACT,EACA2yC,IAAKm3B,EACLolK,QAAS9uO,EACT+uO,wBAAyB,SAAUnvO,EAAG1C,GACpCswO,EAAE5tO,GAAG,SAAU5C,EAAG2sE,GAChB3sE,GAAKA,IAAME,GAAKF,EAAEqjF,SAAWrjF,EAAEqjF,iBACxBzgF,EAAE+pE,EACX,GACF,EACAqlK,eAAgB,SAAUpvO,GACxBA,GAAKA,EAAE0jE,eAAiB1jE,EAAE0jE,cAAcjsC,YAAYz3B,EACtD,EACAqvO,MAAO,SAAUrvO,EAAG1C,GAClB,IAAK,IAAIF,EAAI4C,EAAEhG,OAAQoD,KAAM,GAAI4C,EAAE5C,KAAOE,EAAG,CAC3C0C,EAAEm5B,OAAO/7B,EAAG,GACZ,KACF,CACF,EACAnB,MAAOmvC,EACPtqC,OAAQzD,EACRiyO,YAAa,SAAUtvO,EAAG1C,GACxB,IAAIF,EAAI,WAAa,EAGrB,OADAC,EADAD,EAAElD,UAAY,IAAI8F,EACH1C,GACRF,CACT,EACA4hC,KAAMh/B,EACNquO,UAAWR,EACX0B,aAAc,SAAUvvO,GACtB,OAAO0H,KAAKG,IAAI,GAAIH,KAAKwF,MAAMxF,KAAK8zI,IAAIx7I,GAAK0H,KAAK8nO,MACpD,EACAC,kBAAmB,SAAUzvO,EAAG1C,GAC9B,IAAK0C,EAAIA,EAAEyR,MAAM,KAAMzR,EAAEhG,QAAUoG,EAAE9C,IAAK,CACxC,IAAIF,EAAI4C,EAAEvF,QACV,GAAI,qBAAuB2C,GAAK,cAAgBA,EAAG,OAEnD,IAAKgD,EADL9C,EAAIA,EAAEF,KACO,oBAAsBE,GAAK,kBAAoBA,EAAEu5B,UAAYv5B,IAAMxC,EAAG,MACrF,CACA,OAAOwC,CACT,EACAoyO,SApMF,SAAS3zO,EAAEiE,EAAG1C,EAAG2T,GACf,IAAI7T,EAAI2C,EAAE2vO,UAAY3zO,EACtB,GAAI,UAAYuB,EAAG,OAAOA,EAAIoK,KAAKqL,IAAI/S,EAAE6gD,YAAa7gD,EAAE86J,cAAc7pJ,EAAIjR,EAAEwlD,uBAAyBxlD,EAAEwlD,wBAAwBjG,OAAWjiD,GAAK2T,GAAK3T,EAAI,IAAMA,EAAIoK,KAAKwF,MAAM+D,IAAKvJ,KAAKI,IAAI,EAAGxK,GAAKF,EAAE4C,EAAG,gBAAgB,IAAO,IAAM5C,EAAE4C,EAAG,iBAAiB,IAAO,IAClQ,GAAI,WAAa1C,EAAG,OAAOoK,KAAKI,IAAI,EAAGJ,KAAKqL,IAAI/S,EAAE6hD,aAAc7hD,EAAEolF,eAAiBhoF,EAAE4C,EAAG,eAAe,IAAO,IAAM5C,EAAE4C,EAAG,kBAAkB,IAAO,IAElJ,GADAlF,EAAEmkD,kBAAoB7T,EAAE,IAAI,GACxBprC,EAAIlF,EAAEmkD,iBAAiBj/C,OAAG,GAAS,CACrC,IAAI+pE,EAAI/pE,EAAE2/C,iBAAiBriD,GAC3BqN,EAAEsG,EAAG,YAAc3T,KAAOysE,EAAI49E,EAAE59E,GAClC,CACA,OAAOA,CACT,EA2LE1vC,QAAS,SAAUr6B,EAAG1C,EAAGysE,GAIvB,OAHA3+B,EAAE,IAAI,OAAI,EAAQ,CAChB,qBAAsB,sBAEjB9tC,EAAEgT,QAAQtQ,EAAG+pE,EACtB,EACAtqE,QAASsuO,EACT4B,QAAS/vE,EACTgwE,aAAc3B,EACdroO,WAAY,SAAU5F,GACpB,MAAO,oBAAsBA,CAC/B,EACAM,SAAU/B,EACVsB,SAAUmuO,EACV3lN,SAAUnd,EACVzF,KAAM,SAAUzF,GAId,OAHAorC,EAAE,IAAI,OAAI,EAAQ,CAChB,kBAAmB,oBAEdnxC,OAAOwL,KAAKzF,EACrB,EACAw4B,MAAO,WACL,IAAIx4B,EACF1C,EAAIgC,UACJyqE,EAAI,CAAC,EACLjvE,EAAI,SAAUkF,EAAG1C,GAKf,MAJA,kBAAoB0C,IAAMA,EAAI,CAAC,GAC/B4tO,EAAEtwO,GAAG,SAAUF,EAAG2sE,GAChB,cAAgBA,GAAK,gBAAkBA,KAAOikK,EAAE5wO,GAAG,IAAOwiK,EAAExiK,IAAM6wO,EAAE7wO,GAAK4C,EAAE+pE,GAAKzsE,EAAEysE,GAAK/pE,EAAE+pE,GAAKjvE,EAAEkF,EAAE+pE,IAAM,CAAC,EAAG3sE,GAC9G,IACO4C,CACT,GACF,IAAO1C,EAAE,KAAOysE,EAAIzsE,EAAE,GAAIA,EAAIqC,MAAMzF,UAAU8E,MAAM5E,KAAKkD,EAAG,IAC5D,IAAID,EAAIC,EAAEtD,OACV,IAAKgG,EAAI,EAAGA,EAAI3C,EAAG2C,IAAK+pE,EAAIjvE,EAAEivE,EAAGzsE,EAAE0C,IACnC,OAAO+pE,CACT,EACA8lK,sBAAuB,SAAU7vO,EAAG1C,EAAGysE,EAAGjvE,EAAGuC,GAC3C,IAAID,EAAI4C,EAEJpC,EAAIoC,GADR+pE,EAAIp/D,EAAEo/D,EAAG,IAKT,IAHAzsE,IAAMA,EAAID,EAAI,CAAC,EAAG,IAAK,IAAK,EAAG,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAM,CAAC,EAAG,EAAG,IAAK,EAAG,KAAK,IAAOvC,IAAM,IAAMivE,EAAIzsE,EAAIA,EAAE0rB,QAAO,SAAUhpB,GACzH,OAAO,IAAMA,EAAI,CACnB,IAAK,IAAM+pE,IAAMzsE,EAAI,CAAC,EAAIysE,MACrBjvE,EAAI,EAAGA,EAAIwC,EAAEtD,SAAYoD,EAAIE,EAAExC,KAAIuC,GAAKD,EAAI2sE,GAAK/pE,IAAM3C,GAAKO,IAAMN,EAAExC,IAAMwC,EAAExC,EAAI,IAAMwC,EAAExC,KAAO,IAAIA,KACxG,OAAWgQ,EAAE1N,EAAI2sE,GAAIriE,KAAK+c,MAAM/c,KAAK8zI,IAAI,MAAQ9zI,KAAK8nO,MACxD,EACAM,WAAYlC,EACZ5oN,OAAQ,SAAUhlB,GAChB,IAAI1C,EAAIM,EAAEq8B,gBAOV,MAAO,CACLiH,KAPFlhC,EAAIA,EAAE0jE,eAAiB1jE,EAAEw3B,WAAax3B,EAAEwlD,wBAA0B,CAChEtkB,IAAK,EACLwkB,KAAM,EACNnG,MAAO,EACPmC,OAAQ,IAGDxgB,KAAOpmC,EAAE27D,aAAen5D,EAAEgpD,YAAchpD,EAAEkvN,WAAa,GAC9D9mK,KAAM1lD,EAAE0lD,MAAQ5qD,EAAE47D,aAAep5D,EAAEipD,aAAejpD,EAAEyyO,YAAc,GAClExwL,MAAOv/C,EAAEu/C,MACTmC,OAAQ1hD,EAAE0hD,OAEd,EACAsuL,IAAK,SAAUhwO,EAAG1C,EAAGysE,GACnB,OAAOpqE,OAAOrC,GAAK,GAAK,EAAIgrB,OAAOtoB,GAAG4I,QAAQ,IAAK,IAAI5O,QAAQuL,KAAKwkE,GAAK,KAAO/pE,CAClF,EACAiwO,KAAMtlO,EACNulO,KAAMvoF,EACNwoF,eAAgB,SAAUnwO,EAAG1C,EAAGysE,GAC9B,MAAO,KAAK1gE,KAAKrJ,GAAK1C,EAAIgmB,WAAWtjB,GAAK,KAAO+pE,GAAK,GAAKzmD,WAAWtjB,EACxE,EACAm4C,YAAan6C,EACboyO,MAAO,SAAUpwO,GACf,OAAO+tO,EAAE/tO,GAAKA,EAAI,CAACA,EACrB,EACAqwO,WAAY,SAAUrwO,EAAG1C,GACvB,IACEF,EACAtC,EAFEivE,EAAI/pE,EAAEhG,OAGV,IAAKc,EAAI,EAAGA,EAAIivE,EAAGjvE,IAAKkF,EAAElF,GAAGw1O,MAAQx1O,EAKrC,IAJAkF,EAAE6M,MAAK,SAAU7M,EAAG+pE,GAElB,OAAO,KADP3sE,EAAIE,EAAE0C,EAAG+pE,IACQ/pE,EAAEswO,MAAQvmK,EAAEumK,MAAQlzO,CACvC,IACKtC,EAAI,EAAGA,EAAIivE,EAAGjvE,WAAYkF,EAAElF,GAAGw1O,KACtC,EACAC,YAAa,SAAUvwO,EAAG1C,EAAGysE,GAC3B,OAAI,EAAIzsE,EAAUN,WAAWgD,EAAG1C,EAAGysE,IACnC/pE,EAAE5F,KAAK,EAAG2vE,IACF,EACV,EACAymK,UAAW,CACTjuN,YAAa,EACbD,OAAQ,IACRD,OAAQ,IACRd,KAAM,KACNnK,IAAK,MACLtC,KAAM,OACNpH,MAAO,QACPX,KAAM,UAER0jO,UAAWnzO,EACXozO,aAAc,SAAU1wO,GACtB,OAAO+pE,EAAIp/D,EAAE3K,EAAG+pE,EAClB,EACAr0B,KAAM,SAAU11C,EAAG1C,EAAGysE,GACpB,IAAI3sE,EAAI4C,EAAE1C,GACV0C,EAAE1C,GAAK,WACL,IAAI0C,EAAIL,MAAMzF,UAAU8E,MAAM5E,KAAKkF,WACjChC,EAAIgC,UACJxE,EAAI0I,KAON,OANA1I,EAAE61O,QAAU,WACVvzO,EAAEiC,MAAMvE,EAAGwE,UAAUtF,OAASsF,UAAYhC,EAC5C,EACA0C,EAAE6xC,QAAQz0C,GACV4C,EAAI+pE,EAAE1qE,MAAMmE,KAAMxD,GAClBlF,EAAE61O,QAAU,KACL3wO,CACT,CACF,GAGKA,CACT,IACAgL,EAAEjL,EAAG,8BAA+B,IAAI,WACtC,MAAO,CACL6wO,QAAS,CACP3rM,SAAS,EACTxoC,KAAM,KAERo0O,YAAY,EACZC,aAAc,EACdC,WAAY,GACZC,kBAAmB,OACnBC,oBAAoB,EACpBC,QAAS,CAAC,GAAI,GAAI,GAAI,IACtBC,gBAAiB,CACfjM,MAAO,CACLngL,OAAQ,GAEVpE,SAAU,CACR8vF,MAAO,QACPx/H,GAAI,GACJ/F,EAAG,KAGPkmO,mBAAmB,EACnB7xL,MAAO,KACPmC,OAAQ,KACRw/G,YAAa,UACbrB,gBAAiB,UACjBwxE,gBAAiB,UAErB,IACArmO,EAAEjL,EAAG,sBAAuB,CAACA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,GACvF,IAAIw+B,EAAIx+B,EAAEtM,SACRqnJ,EAAI/6I,EAAE4rB,MACNttB,EAAI0B,EAAEsjO,KAiFR,OAhFAtjO,EAAI,WACF,SAASA,EAAEw+B,GACT5nC,KAAKk7J,KAAO,CAACp7J,IAAKA,IAAKA,IAAKA,KAC5BE,KAAK9D,MAAQ0rC,EACb,IAAI6iM,EAAIluO,EAAEs+J,MACV,OAAI4vE,GAAKA,IAAMrhO,EAAU,IAAIqhO,EAAE7iM,GACzB5nC,gBAAgBoJ,OACtBpJ,KAAKu0B,KAAKqT,GADuB,IAAIx+B,EAAEw+B,EAEzC,CAqEA,OApEAx+B,EAAEykC,MAAQ,SAAUtxC,GAClB,OAAOA,EAAI,IAAI6M,EAAE7M,GAAK6M,EAAE0kO,IAC1B,EACA1kO,EAAE1S,UAAU69B,KAAO,SAAUh4B,GAC3B,IAAIkuO,EACJ,GAAI,kBAAoBluO,GAAK,qBAAuBA,EAAEwxO,MAAO/tO,KAAK+tO,MAAQxxO,EAAEwxO,MAAM9wO,KAAI,SAAU1F,GAC9F,OAAO,IAAI6R,EAAE7R,EAAE,GACjB,SAAQ,GAAI,kBAAoBgF,EAAG,CAEjC,GADAyD,KAAK9D,MAAQK,EAAI6M,EAAEqO,MAAMlb,EAAEiM,gBAAkBjM,EACzC,MAAQA,EAAEyZ,OAAO,GAAI,CACvB,IAAIomJ,EAAI7/J,EAAE/F,OACNuE,EAAIsV,SAAS9T,EAAEgI,OAAO,GAAI,IAC9B,IAAM63J,EAAIquE,EAAI,EAAM,SAAJ1vO,IAAiB,IAAS,MAAJA,IAAc,EAAO,IAAJA,EAAS,GAAK,IAAMqhK,IAAMquE,EAAI,EAAM,KAAJ1vO,IAAa,GAAS,KAAJA,IAAa,GAAQ,IAAJA,IAAY,EAAQ,IAAJA,GAAc,GAAJA,IAAW,EAAQ,GAAJA,EAAQ,GAC7K,CACA,IAAK0vO,EAAG,IAAK1vO,EAAIqO,EAAE4kO,QAAQx3O,OAAQuE,MAAQ0vO,GAAI,CAC7C,IAAI7tO,EAAIwM,EAAE4kO,QAAQjzO,IACjBqhK,EAAIx/J,EAAEgP,MAAMwO,KAAK7d,MAAQkuO,EAAI7tO,EAAEixC,MAAMuuH,GACxC,CACF,CACAquE,IAAMzqO,KAAKk7J,KAAOuvE,EACpB,EACArhO,EAAE1S,UAAUyD,IAAM,SAAUoC,GAC1B,IAAIkuO,EAAIzqO,KAAK9D,MACXkgK,EAAIp8J,KAAKk7J,KACX,GAAI,kBAAoBuvE,GAAK,qBAAuBzqO,KAAK+tO,MAAO,CAC9D,IAAIhzO,EAAIopJ,EAAEsmF,GAKV,OAJA1vO,EAAEgzO,MAAQ,GAAGvyO,MAAM5E,KAAKmE,EAAEgzO,OAC1B/tO,KAAK+tO,MAAMz1N,SAAQ,SAAU1b,EAAGrF,GAC9BwD,EAAEgzO,MAAMx2O,GAAK,CAACwD,EAAEgzO,MAAMx2O,GAAG,GAAIqF,EAAEzC,IAAIoC,GACrC,IACOxB,CACT,CACA,OAAOqhK,GAAKx0H,EAAEw0H,EAAE,IAAM,QAAU7/J,IAAMA,GAAK,IAAM6/J,EAAE,GAAK,OAASA,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAMA,EAAE,GAAK,IAAM,MAAQ7/J,EAAI,GAAK6/J,EAAE,GAAK,QAAUA,EAAEr6J,KAAK,KAAO,IAAM0oO,CAChK,EACArhO,EAAE1S,UAAUu3O,SAAW,SAAU1xO,GAC/B,IAAIkuO,EAAIzqO,KAAKk7J,KACb,GAAIl7J,KAAK+tO,MAAO/tO,KAAK+tO,MAAMz1N,SAAQ,SAAUvd,GAC3CA,EAAEkzO,SAAS1xO,EACb,SAAQ,GAAIqrC,EAAErrC,IAAM,IAAMA,EAAG,IAAK,IAAI6/J,EAAI,EAAG,EAAIA,EAAGA,IAAKquE,EAAEruE,IAAM10J,EAAE,IAAMnL,GAAI,EAAIkuO,EAAEruE,KAAOquE,EAAEruE,GAAK,GAAI,IAAMquE,EAAEruE,KAAOquE,EAAEruE,GAAK,KAC3H,OAAOp8J,IACT,EACAoJ,EAAE1S,UAAUw3O,WAAa,SAAU3xO,GAEjC,OADAyD,KAAKk7J,KAAK,GAAK3+J,EACRyD,IACT,EACAoJ,EAAE1S,UAAUy3O,QAAU,SAAU5xO,EAAGkuO,GACjC,IAAIruE,EAAIp8J,KAAKk7J,KACXngK,EAAIwB,EAAE2+J,KACR,OAAKtzH,EAAEw0H,EAAE,KAAQx0H,EAAE7sC,EAAE,MACrBwB,EAAI,IAAMxB,EAAE,IAAM,IAAMqhK,EAAE,IACd,QAAU,QAAUl4J,KAAK+c,MAAMlmB,EAAE,IAAMqhK,EAAE,GAAKrhK,EAAE,KAAO,EAAI0vO,IAAM,IAAMvmO,KAAK+c,MAAMlmB,EAAE,IAAMqhK,EAAE,GAAKrhK,EAAE,KAAO,EAAI0vO,IAAM,IAAMvmO,KAAK+c,MAAMlmB,EAAE,IAAMqhK,EAAE,GAAKrhK,EAAE,KAAO,EAAI0vO,KAAOluO,EAAI,KAAOxB,EAAE,IAAMqhK,EAAE,GAAKrhK,EAAE,KAAO,EAAI0vO,IAAM,IAAM,IAFtMluO,EAAEL,OAAS,MAG9C,EACAkN,EAAEqO,MAAQ,CACR8mJ,MAAO,UACPV,MAAO,WAETz0J,EAAE4kO,QAAU,CAAC,CACXpiO,MAAO,+FACPiiC,MAAO,SAAUtxC,GACf,MAAO,CAACmL,EAAEnL,EAAE,IAAKmL,EAAEnL,EAAE,IAAKmL,EAAEnL,EAAE,IAAKujB,WAAWvjB,EAAE,GAAI,IACtD,GACC,CACDqP,MAAO,kEACPiiC,MAAO,SAAUtxC,GACf,MAAO,CAACmL,EAAEnL,EAAE,IAAKmL,EAAEnL,EAAE,IAAKmL,EAAEnL,EAAE,IAAK,EACrC,IAEF6M,EAAE0kO,KAAO,IAAI1kO,EAAE,IACRA,CACT,CA9EI,GAgFGA,CACT,IACA5B,EAAEjL,EAAG,yBAA0B,IAAI,WACjC,MAAO,CACL89J,OAAQ,kFAAkFpsJ,MAAM,KAEpG,IACAzG,EAAEjL,EAAG,eAAgB,CAACA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,GAChF,IAAIw+B,EAAIrrC,EAAEy2D,IACRmxF,EAAI/6I,EAAEsiO,QACNhkO,EAAI0B,EAAE3Q,MACN8xO,EAAInhO,EAAE9L,OACNktO,EAAIphO,EAAE/M,SACNouO,EAAIrhO,EAAE4rB,MACNonI,EAAIhzJ,EAAEkjO,WACNvxO,EAAIqO,EAAEojO,IACN5vO,EAAIwM,EAAEqjO,KACNl1O,EAAI6R,EAAEwjO,MACN/yO,EAAIuP,EAAE4jO,UACN7lO,EAAI5K,EAAE+sO,UAAY1hM,EAAEwmM,MAAQxmM,EAAEwmM,KAAKC,eAAe33O,UAAU43O,YAC5DhoK,EAAI/pE,EAAE+sO,UAAY1hM,EAAEwmM,OAASxmM,EAAEwmM,KAAKC,eAAe33O,UAAU43O,YA0L/D,OAzLAllO,EAAI,WACF,SAAS9B,EAAEzN,GACTmG,KAAK41B,QAAU,CAAC,EAChB51B,KAAKuuO,iBAAmBvuO,KAAKwuO,QAAS,EACtCxuO,KAAKhD,KAAO4qC,EAAE5qC,KACdgD,KAAKuiB,kBAAoBviB,KAAKyuO,yBAC9BzuO,KAAKk9E,OAAOrjF,EACd,CA+KA,OA9KAyN,EAAE5Q,UAAUyD,IAAM,SAAUN,EAAGtC,GAC7B,GAAIyI,KAAKuuO,kBAAoBvuO,KAAK0uO,eAAgB,CAChD,IAAIn2O,EAAIhB,EAAEiI,UACR8mE,EAAI/tE,EAAIyH,KAAKuiB,kBAAkBhrB,GAIjC,OAHAA,EAAE6qB,QAAQkkD,GACVzsE,EAAItC,EAAE,SAAWsC,KACjBtC,EAAE6qB,QAAQ7pB,GACHsB,CACT,CACA,OAAOmG,KAAKwuO,OAASj3O,EAAE,SAAWsC,KAAOtC,EAAE,MAAQsC,IACrD,EACAyN,EAAE5Q,UAAU4L,IAAM,SAAUzI,EAAGtC,EAAG+uE,GAChC,GAAItmE,KAAKuuO,kBAAoBvuO,KAAK0uO,eAAgB,CAChD,GAAI,iBAAmB70O,GAAK,YAAcA,GAAK,YAAcA,GAAK,IAAMmG,KAAKuiB,kBAAkBhrB,GAAK,KAAM,OAAOA,EAAE,SAAWsC,GAAGysE,GACjI,IAAI/tE,EAAIyH,KAAKuiB,kBAAkBhrB,GAM/B,OALAgB,EAAIhB,EAAEiI,UAAYjH,EAClBhB,EAAE6qB,QAAQ7pB,GACVhB,EAAE,SAAWsC,GAAGysE,GAChBzsE,EAAImG,KAAKuiB,kBAAkBhrB,GAC3BgB,EAAIhB,EAAEiI,UAAY3F,EACXtC,EAAE6qB,QAAQ7pB,EACnB,CACA,OAAOyH,KAAKwuO,QAAUrnO,GAAK,aAAetN,EAAItC,EAAE,SAAWsC,GAAGysE,GAAK/uE,EAAE,MAAQsC,GAAGysE,EAClF,EACAh/D,EAAE5Q,UAAUwmF,OAAS,SAAUrjF,GAC7B,IAAItC,EAAIqF,EAAE/C,GAAKA,EAAE20O,QAAQ,GACzBxuO,KAAK41B,QAAU/7B,EAAI4wO,GAAE,EAAIzqO,KAAK41B,SAAW,CAAC,EAAG/7B,GAC7CmG,KAAKhD,KAAOnD,EAAEmD,MAAQ4qC,EAAE5qC,MAAQA,KAChCgD,KAAK0uO,gBAAkB1uO,KAAKwuO,OAASj3O,IAAMsC,EAAE60O,eAC7C1uO,KAAKuiB,kBAAoBviB,KAAKyuO,yBAC9BzuO,KAAKuuO,iBAAmBh3O,MAAQsC,EAAE0oB,oBAAsB1oB,EAAE80O,SAC5D,EACArnO,EAAE5Q,UAAUk4O,SAAW,SAAU/0O,EAAGtC,EAAG4P,EAAGG,EAAGwjO,EAAG1wO,GAC9C,GAAI4F,KAAKwuO,OAAQ,CACf,IAAIl3O,EAAI0I,KAAKhD,KAAK6T,IAAIhV,MAAM,EAAGC,WAC3BU,EAAIwD,KAAKuiB,kBAAkBjrB,GAC/BA,GAAKkF,EACL,IAAI+pE,EAAIvmE,KAAKuiB,kBAAkBjrB,GAC/BkF,IAAM+pE,EAAIjvE,GAAKivE,EAAI/pE,EAAIA,EAAI,OAASwD,KAAKuiB,kBAAkBjrB,EAAI,OAASgvE,IAAMhvE,GAAK,KACrF,MAAOA,EAAI,IAAI0I,KAAKhD,KAAKnD,EAAGtC,EAAGqF,EAAEuK,EAAG,GAAIvK,EAAE0K,EAAG,GAAI1K,EAAEkuO,EAAG,GAAIluO,EAAExC,EAAG,IAAIoF,UACnE,OAAOlI,CACT,EACAgQ,EAAE5Q,UAAU+3O,uBAAyB,WACnC,IAAI50O,EAAImG,KACNzI,EAAIyI,KAAK41B,QACT0wC,EAAI/uE,EAAEgrB,kBACNpb,EAAI5P,EAAEu2N,QAAUlmL,EAAEkmL,OACpB,IAAK9tN,KAAKwuO,OAAQ,OAAO,SAAU30O,GACjC,OAAO,IAAM,IAAImD,KAAKnD,EAAEuC,YAAYmmB,mBACtC,EACA,GAAIhrB,EAAEo3O,SAAU,CACd,GAAIxnO,EAAG,OAAO,SAAUtN,GACtB,OAAO,KAAOsN,EAAE0nO,GAAGh1O,EAAGtC,EAAEo3O,UAAUjtN,WACpC,EACAha,EAAE,GACJ,CACA,OAAO1H,KAAKwuO,QAAUloK,EAAI,SAAUzsE,GAClC,OAAO,IAAMysE,EAAEzsE,EAAE0D,UACnB,EAAI,WACF,OAAO,KAAO1D,EAAE60O,gBAAkB,EACpC,CACF,EACApnO,EAAE5Q,UAAUujB,WAAa,SAAUpgB,EAAGtC,EAAG+uE,GACvC,IAAK69E,EAAE5sJ,IAAM+H,MAAM/H,GAAI,OAAOgF,EAAEw1G,eAAe5pF,MAAQ5rB,EAAEw1G,eAAe5pF,KAAK1iB,aAAe,GAC5F5L,EAAI+C,EAAE/C,EAAG,qBACT,IAAItB,EAAIyH,KACNmH,EAAI,IAAInH,KAAKhD,KAAKzF,GAClB6C,EAAI4F,KAAK7F,IAAI,QAASgN,GACtB7P,EAAI0I,KAAK7F,IAAI,MAAOgN,GACpB3K,EAAIwD,KAAK7F,IAAI,OAAQgN,GACrBo/D,EAAIvmE,KAAK7F,IAAI,QAASgN,GACtBrN,EAAIkG,KAAK7F,IAAI,WAAYgN,GACzBvN,EAAI2C,EAAEw1G,eAAe5pF,KACrBg0L,EAAIviN,GAAKA,EAAEoZ,SACXvF,EAAI7T,GAAKA,EAAEk1O,cA0Bb,OAzBA3nO,EAAIojO,EAAE,CACJhuO,EAAGkR,EAAIA,EAAEnW,GAAK6kN,EAAE7kN,GAAGiN,OAAO,EAAG,GAC7BkmO,EAAGtuB,EAAE7kN,GACLwC,EAAGiB,EAAEyB,GACLjF,EAAGwD,EAAEyB,EAAG,EAAG,KACX8K,EAAGhQ,EACHkF,EAAG5C,EAAEm1O,YAAYxoK,GACjB6jK,EAAGxwO,EAAEgU,OAAO24D,GACZ3sE,EAAGmB,EAAEwrE,EAAI,GACTvsE,EAAGusE,EAAI,EACP7+D,EAAG5N,EAAEsC,WAAWmI,OAAO,EAAG,GAC1ByqO,EAAGl1O,EACH0wO,EAAGzvO,EAAEX,GACLwC,EAAGxC,EACH4lN,EAAGjlN,EAAEX,EAAI,IAAM,IACf9C,EAAG8C,EAAI,IAAM,GACboN,EAAGzM,EAAEiF,KAAK7F,IAAI,UAAWgN,IACzB5O,EAAG,GAAK6B,EAAI,KAAO,KACnB6rE,EAAG,GAAK7rE,EAAI,KAAO,KACnBgmN,EAAGrlN,EAAEoM,EAAE8nO,cACPhpO,EAAGlL,EAAEmJ,KAAKwF,MAAMnS,EAAI,KAAM,IACzBgF,EAAEytO,aACL5tE,EAAEj1J,GAAG,SAAU3K,EAAG1C,GAChB,MAAQ,IAAMD,EAAEiT,QAAQ,IAAMhT,IAAKD,EAAIA,EAAEuL,QAAQ,IAAMtL,EAAG,oBAAsB0C,EAAIA,EAAE5F,KAAK2B,EAAGhB,GAAKiF,EACrG,IACO8pE,EAAIzsE,EAAE0K,OAAO,EAAG,GAAGgC,cAAgB1M,EAAE0K,OAAO,GAAK1K,CAC1D,EACAyN,EAAE5Q,UAAUw4O,iBAAmB,SAAUr1O,GACvC,OAAO2wO,EAAE3wO,GAAG,GAAMA,EAAe,CAC/B8mN,MADqB9mN,EAAItC,EAAEsC,IACnB,GACRyG,KAAMzG,EAAE,GACRwG,GAAIxG,EAAE,GAEV,EACAyN,EAAE5Q,UAAUy4O,aAAe,SAAU53O,EAAG4P,EAAGm/D,EAAGh/D,GAC5C,IAME1N,EANErB,EAAIyH,KACN5F,EAAI,GACJ9C,EAAI,CAAC,EACLkF,EAAI,IAAIjE,EAAEyE,KAAKmK,GACfo/D,EAAIhvE,EAAE63O,UACNt1O,EAAIvC,EAAEi3C,OAAS,EAGjB,GADAlnC,EAAI1K,EAAE0K,EAAG,GACL68I,EAAEh9I,GAAI,CAMR,GALA5O,EAAE+J,IAAI,eAAgB9F,EAAG+pE,GAAK1sE,EAAEilB,OAAS,EAAIhlB,EAAIoK,KAAKwF,MAAMnR,EAAE4B,IAAI,eAAgBqC,GAAK1C,IACvFysE,GAAK1sE,EAAEilB,QAAUvmB,EAAE+J,IAAI,UAAW9F,EAAG+pE,GAAK1sE,EAAEglB,OAAS,EAAI/kB,EAAIoK,KAAKwF,MAAMnR,EAAE4B,IAAI,UAAWqC,GAAK1C,IAC9FysE,GAAK1sE,EAAEglB,QAAUtmB,EAAE+J,IAAI,UAAW9F,EAAG+pE,GAAK1sE,EAAEkkB,KAAO,EAAIjkB,EAAIoK,KAAKwF,MAAMnR,EAAE4B,IAAI,UAAWqC,GAAK1C,IAC5FysE,GAAK1sE,EAAEkkB,MAAQxlB,EAAE+J,IAAI,QAAS9F,EAAG+pE,GAAK1sE,EAAE+Z,IAAM,EAAI9Z,EAAIoK,KAAKwF,MAAMnR,EAAE4B,IAAI,QAASqC,GAAK1C,IACrFysE,GAAK1sE,EAAE+Z,KAAOrb,EAAE+J,IAAI,OAAQ9F,EAAG+pE,GAAK1sE,EAAEqQ,MAAQ,EAAIhG,KAAKI,IAAI,EAAGxK,EAAIoK,KAAKwF,MAAMnR,EAAE4B,IAAI,OAAQqC,GAAK1C,KAC5FysE,GAAK1sE,EAAEqQ,MAAO,CAChB3R,EAAE+J,IAAI,QAAS9F,EAAG+pE,GAAK1sE,EAAE0P,KAAO,EAAIzP,EAAIoK,KAAKwF,MAAMnR,EAAE4B,IAAI,QAASqC,GAAK1C,IACvE,IAAIqiN,EAAI5jN,EAAE4B,IAAI,WAAYqC,EAC5B,CACA+pE,GAAK1sE,EAAE0P,MAAQhR,EAAE+J,IAAI,WAAY9F,EAAG2/M,EAAIA,EAAIriN,GAC5CysE,IAAM1sE,EAAEyX,OAAS6qM,EAAI5jN,EAAE4B,IAAI,MAAOqC,GAAIjE,EAAE+J,IAAI,OAAQ9F,EAAGjE,EAAE4B,IAAI,OAAQqC,GAAK2/M,EAAI70M,GAAK60M,EAAI70M,GAAK,EAAI,KAChG60M,EAAI5jN,EAAE4B,IAAI,WAAYqC,GACtB8K,EAAI/O,EAAE4B,IAAI,QAASqC,GACnB,IAAIiR,EAAIlV,EAAE4B,IAAI,OAAQqC,GACpBhC,EAAIjC,EAAE4B,IAAI,QAASqC,GAIrB,IAHA2K,EAAI3K,EAAEgD,WACLjH,EAAEg2O,kBAAoBh2O,EAAEi2O,SAAWrqF,EAAE79E,KAAO1sE,EAAI0sE,EAAIn/D,EAAI,EAAItN,EAAEqQ,OAAS3R,EAAEgqB,kBAAkBpb,KAAO5O,EAAEgqB,kBAAkB+jD,IACvHn/D,EAAI3K,EAAEgD,UACDhD,EAAI,EAAG2K,EAAIm/D,GAAIlsE,EAAEtD,KAAKqQ,GAAIA,EAAIo/D,IAAM1sE,EAAE0P,KAAOhR,EAAEq2O,SAASzyB,EAAI3/M,EAAI1C,EAAG,GAAKysE,IAAM1sE,EAAEqQ,MAAQ3R,EAAEq2O,SAASzyB,EAAG70M,EAAI9K,EAAI1C,IAAMF,GAAK2sE,IAAM1sE,EAAE+Z,KAAO2yD,IAAM1sE,EAAEyX,KAAO1X,GAAK2sE,IAAM1sE,EAAEkkB,MAAQ,EAAIjkB,EAAIvB,EAAEq2O,SAASzyB,EAAG70M,EAAGmG,EAAGjT,EAAIgC,EAAI1C,GAAKqN,EAAIo/D,EAAIzsE,EAAIvB,EAAEq2O,SAASzyB,EAAG70M,EAAGmG,EAAIjR,EAAI1C,GAAKysE,IAAM1sE,EAAE+Z,IAAM,EAAI,IAAKpX,IAC3RpC,EAAEtD,KAAKqQ,GACPo/D,GAAK1sE,EAAEkkB,MAAQ,IAAM3jB,EAAE5D,QAAU4D,EAAEke,SAAQ,SAAU9b,GACnD,IAAMA,EAAI,MAAQ,cAAgBjE,EAAE0hB,WAAW,WAAYzd,KAAOlF,EAAEkF,GAAK,MAC3E,GACF,CAKA,OAJApC,EAAE4qO,KAAOuF,EAAEhzO,EAAG,CACZ83O,YAAa/3O,EACbg4O,WAAY/oK,EAAIzsE,IAEXM,CACT,EACAkN,EAAE5Q,UAAU64O,cAAgB,SAAUh4O,EAAG4P,EAAGm/D,EAAGh/D,GAC7C,IAAI/O,EAAIyH,KAAKia,WAAW,oBAAqB9S,GAC3C/M,EAAI,CACF2kB,YAAa,GACbD,OAAQ,GACRD,OAAQ,EACRd,KAAM,EACNnK,IAAK,GAEPtc,EAAI,cACN,IAAKkF,KAAK3C,EAAG,CACX,GAAItC,IAAMsC,EAAEyX,OAAStR,KAAKia,WAAW,KAAM9S,KAAOm/D,GAAK,iBAAmB/tE,EAAEgM,OAAO,GAAI,CACrF,IAAI/H,EAAI,OACR,KACF,CACA,GAAI3C,EAAE2C,GAAKjF,EAAG,CACZiF,EAAIlF,EACJ,KACF,CACA,GAAI8C,EAAEoC,IAAMjE,EAAEgM,OAAOnK,EAAEoC,MAAQ,qBAAqB+H,OAAOnK,EAAEoC,IAAK,MAClE,SAAWA,IAAMlF,EAAIkF,EACvB,CACA,GAAIA,EAAG,IAAI+pE,EAAIvmE,KAAKkvO,iBAAiB5nO,EAAE9K,IAAImkN,KAC3C,OAAOp6I,CACT,EACOj/D,CACT,CAvLI,GAyLG8B,CACT,IACA5B,EAAEjL,EAAG,yBAA0B,CAACA,EAAE,+BAAgCA,EAAE,uBAAwBA,EAAE,mBAAoBA,EAAE,0BAA2BA,EAAE,gBAAiBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,GAClNnhO,EAAIA,EAAEykC,MACN,IAAIjG,EAAI2iM,EAAEv1M,MACRy1M,EAAI,CACFpwE,OAAQlW,EAAEkW,OACVm1E,QAAS,CAAC,SAAU,UAAW,SAAU,WAAY,iBACrDrnN,KAAM,CACJqzE,QAAS,aACT5tF,OAAQ,wFAAwFK,MAAM,KACtG8gO,YAAa,kDAAkD9gO,MAAM,KACrE+E,SAAU,2DAA2D/E,MAAM,KAC3EwhO,aAAc,IACdC,eAAgB,SAASzhO,MAAM,IAC/B0hO,UAAW,aACXC,eAAgB,uBAChBC,aAAc,KAEhBl9M,OAAQ,CAAC,EACT7M,KAAM,CACJ9oB,UAAM,EACNulB,uBAAmB,EACnBosN,cAAU,EACVD,eAAgB,EAChBF,QAAQ,GAEVlE,MAAO/tO,EACPwrF,MAAO,CACLj0D,KAAM,cACNm5G,MAAO,SACP9qF,OAAQ,GACR2tL,aAAc,IAEhBC,SAAU,CACRj8M,KAAM,GACNm5G,MAAO,SACP6iG,aAAc,IAEhBn+L,QAAS,CACPwQ,OAAQ,GACRruB,KAAM,GACNm5G,MAAO,OACP+iG,cAAe,UAEjBC,YAAa,CAAC,EACd3pE,OAAQ,CACNr3H,MAAO,CACLkO,SAAU,WACVy9G,MAAO,YAGXs1E,OAAQ,CACNzuM,SAAS,EACTwrG,MAAO,SACPkjG,cAAc,EACd/xM,UAAW,wBACXgyM,OAAQ,aACRC,eAAgB,WACd,OAAOrwO,KAAK3G,IACd,EACAqkK,YAAa,UACb4vE,aAAc,EACdgD,WAAY,CACVC,YAAa,UACbC,cAAe,WAEjBC,UAAW,CACT71E,MAAO,UACPif,OAAQ,UACR1wC,SAAU,OACVhqF,WAAY,OACZuxL,aAAc,YAEhBC,eAAgB,CACd/1E,MAAO,WAETg2E,gBAAiB,CACfh2E,MAAO,WAETp5F,QAAQ,EACRqvK,kBAAmB,CACjB1zL,SAAU,WACVpB,MAAO,OACPmC,OAAQ,QAEV4yL,cAAc,EACdC,cAAe,EACff,cAAe,SACfviO,EAAG,EACH/F,EAAG,EACHqgF,MAAO,CACL94C,MAAO,CACLkQ,WAAY,UAIlBq8C,QAAS,CACPw1I,WAAY,CACV7xL,WAAY,OACZhC,SAAU,WACVzf,IAAK,OAEPuR,MAAO,CACLkO,SAAU,WACVk/G,gBAAiB,UACjBh8G,QAAS,GACTqzF,UAAW,WAGfsyD,QAAS,CACPvkK,SAAS,EACTwiB,UAAW8kL,EAAER,IACb+E,aAAc,EACd2D,qBAAsB,CACpBlyN,YAAa,yBACbD,OAAQ,sBACRD,OAAQ,mBACRd,KAAM,mBACNnK,IAAK,gBACLtC,KAAM,0BACNpH,MAAO,QACPX,KAAM,MAER2nO,aAAc,GACdC,YAAa,UACb7uG,UAAW,IACXlgF,QAAS,EACTgvL,MAAO,UACPC,QAAQ,EACRzsD,KAAMmkD,EAAEQ,cAAgB,GAAK,GAC7B+H,aAAc,wDACdC,YAAa,uFACbl1E,gBAAiBjzJ,EAAE,WAAW8kO,WAAW,KAAK/zO,MAC9C+kK,YAAa,EACb19F,QAAQ,EACRgwK,gBAAgB,EAChBviM,MAAO,CACL2rH,MAAO,UACPif,OAAQ,UACR1wC,SAAU,OACVsoG,WAAY,UAEdC,SAAS,GAEXC,QAAS,CACPlwM,SAAS,EACTF,KAAM,qCACN4b,SAAU,CACR8vF,MAAO,QACPx/H,GAAI,GACJuiO,cAAe,SACftoO,GAAI,GAENunC,MAAO,CACL4qI,OAAQ,UACRjf,MAAO,UACPzxB,SAAU,OAEZr1G,KAAM,mBAGZ22M,EAAEH,MAAM+C,YAAa,EAErB,IAAIjxE,EAAI,IAAI10J,EAAEkgC,EAAE6iM,EAAE93M,OAAQ83M,EAAE3kN,OAc5B,OAbAvpB,EAAI,CACFw1G,eAAgB04H,EAChBmH,YAAax1E,EACby1E,WAAY,WACV,OAAOpH,CACT,EACAqH,WAAY,SAAU/2O,GAGpB,OAFA6sC,GAAE,EAAI6iM,EAAG1vO,IACLA,EAAE+qB,MAAQ/qB,EAAE43B,UAAQo2M,EAAEjjN,KAAOijN,EAAEjjN,KAAKo3D,OAAOt1C,EAAE6iM,EAAE93M,OAAQ83M,EAAE3kN,KAAM/qB,EAAE43B,OAAQ53B,EAAE+qB,OAASijN,EAAEjjN,KAAOs2I,GAC1FquE,CACT,EAIJ,IACAjjO,EAAEjL,EAAG,uBAAwB,CAACA,EAAE,uBAAwBA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GACrH,IAAInhM,EAAIrrC,EAAEsxC,MACRnmC,EAAI0B,EAAE4pD,IACNu3K,EAAIxB,EAAEjsO,SACN0tO,EAAIzB,EAAEuD,WACR,OAAO,WACL,SAAS/vO,EAAEA,EAAGxB,EAAG6B,GACfoD,KAAKsW,IAAMxW,IACXE,KAAK41B,QAAU76B,EACfiF,KAAK00B,KAAOn4B,EACZyD,KAAKO,KAAO3D,CACd,CAgHA,OA/GAL,EAAE7F,UAAUq7O,QAAU,WACpB,IAAIx1O,EAAIyD,KAAK6tN,MACX9yN,EAAIwB,GAAKA,EAAE,GACbA,EAAIA,GAAKA,EAAE,GACX,IAAIK,EAAIoD,KAAK0D,KAAO,EAClBnM,EAAI,GACN,GAAI,IAAMqF,GAAK7B,GAAKwB,EAClB,GAAIxB,EAAEvE,SAAW+F,EAAE/F,QAAU,EAAIoG,EAAG,IAAK,IAAI/C,EAAI,EAAGA,EAAI0C,EAAE/F,OAAQqD,IAAK,CACrE,IAAK,IAAIsN,EAAIpM,EAAElB,GAAIysE,EAAI/pE,EAAE1C,GAAIyN,EAAI,GAAI/O,EAAI,EAAGA,EAAI+tE,EAAE9vE,OAAQ+B,IAAK,CAC7D,IAAI6xO,EAAIjjO,EAAE5O,GACRiC,EAAI8rE,EAAE/tE,GACRgyO,EAAEH,IAAMG,EAAE/vO,KAAO,MAAQ8rE,EAAE,IAAM,IAAM/tE,GAAK,IAAMA,GAAK+O,EAAE/O,GAAK6xO,EAAIxtO,GAAKpC,EAAI4vO,GAAK9iO,EAAE/O,GAAKiC,CACzF,CACAjD,EAAET,KAAKwQ,EACT,MAAO/P,EAAIgF,OACNhF,EAAIyI,KAAKgyO,KAAO,GACvBhyO,KAAK00B,KAAKiK,KAAK,IAAKpnC,OAAG,GAAQ,EACjC,EACAgF,EAAE7F,UAAUwmF,OAAS,WACnB,IAAI3gF,EAAIyD,KAAK00B,KACX35B,EAAIiF,KAAKO,KACT3D,EAAIoD,KAAK0D,IACTnM,EAAIyI,KAAK41B,QAAQgtB,KACf5iD,KAAKjF,EAAI,UAAWiF,KAAKjF,EAAI,YAAiBwB,EAAEoiC,KAAOpiC,EAAE46D,SAAW56D,EAAEoiC,KAAK5jC,EAAG6B,EAAG,MAAM,GAAML,EAAE0yC,MAAMl0C,GAAK6B,EAAIoD,KAAKqI,KACvH9Q,GAAKA,EAAEX,KAAK2F,EAAGK,EAAGoD,KACpB,EACAzD,EAAE7F,UAAU+rD,IAAM,SAAU25G,EAAGrhK,EAAG6B,GAChC,IAAIrF,EAAIyI,KACNnG,EAAItC,EAAEq+B,QACNzuB,EAAI,SAAUtN,GACZ,OAAOsN,EAAEi9C,SAAe7sD,EAAEqrD,KAAK/oD,EACjC,EACAysE,EAAI5+D,EAAEg8C,uBAAyB,SAAU7pD,GACvCL,WAAWK,EAAG,GAChB,EACAyN,EAAI,WACF,IAAK,IAAIzN,EAAI,EAAGA,EAAI0C,EAAE8pD,OAAO7vD,OAAQqD,IAAK0C,EAAE8pD,OAAOxsD,MAAQ0C,EAAE8pD,OAAO1wB,OAAO97B,IAAK,GAChF0C,EAAE8pD,OAAO7vD,QAAU8vE,EAAEh/D,EACvB,EACF80J,IAAMrhK,GAAKiF,KAAK00B,KAAK,gBAAkB10B,KAAKO,OAASP,KAAKukD,WAAa,IAAIvnD,KAAQgD,KAAKmgC,MAAQi8H,EAAGp8J,KAAK01B,IAAM36B,EAAGiF,KAAKqI,KAAOzL,EAAGoD,KAAK0D,IAAM1D,KAAKmgC,MAAOngC,KAAKsW,IAAM,EAAGnP,EAAEutB,KAAO10B,KAAK00B,KAAMvtB,EAAE5G,KAAOP,KAAKO,KAAM4G,KAAO,IAAM5K,EAAE8pD,OAAOvvD,KAAKqQ,IAAMm/D,EAAEh/D,YAAczN,EAAEo4O,QAAQjyO,KAAKO,MAAO1G,EAAEkrD,UAAY,IAAMtuD,OAAOwL,KAAKpI,EAAEo4O,SAASz7O,QAAUqD,EAAEkrD,SAASnuD,KAAKoJ,KAAK00B,MAChW,EACAn4B,EAAE7F,UAAUksD,KAAO,SAAUrmD,GAC3B,IAAIxB,GAAK,IAAIiC,KACXJ,EAAIoD,KAAK41B,QACTr+B,EAAIyI,KAAK00B,KACT76B,EAAI+C,EAAEmoD,SACN59C,EAAIvK,EAAEujB,SACNmmD,EAAI1pE,EAAEq1O,QACR,GAAI16O,EAAEonC,OAASpnC,EAAE4/D,QAAS56D,GAAI,OAAQ,GAAIA,GAAKxB,GAAKoM,EAAInH,KAAKukD,UAAW,CACtEvkD,KAAK0D,IAAM1D,KAAK01B,IAChB11B,KAAKsW,IAAM,EACXtW,KAAKk9E,SACL,IAAI51E,EAAIg/D,EAAEtmE,KAAKO,OAAQ,EACvBiqO,EAAElkK,GAAG,SAAUzsE,IACb,IAAOA,IAAMyN,GAAI,EACnB,IACAA,GAAKzN,GAAKA,EAAEjD,KAAKW,GACjBgF,GAAI,CACN,MAAOyD,KAAKsW,IAAM1Z,EAAEujD,QAAQplD,EAAIiF,KAAKukD,WAAap9C,GAAInH,KAAK0D,IAAM1D,KAAKmgC,OAASngC,KAAK01B,IAAM11B,KAAKmgC,OAASngC,KAAKsW,IAAKtW,KAAKk9E,SAAU3gF,GAAI,EACrI,OAAOA,CACT,EACAA,EAAE7F,UAAUw7O,SAAW,SAAU31O,EAAGxB,EAAG6B,GACrC,SAASrF,EAAEsC,EAAGtC,GACZ,KAAOsC,EAAErD,OAAS6zO,GAAI,CACpB,IAAI/yO,EAAIuC,EAAE,GACR2C,EAAIjF,EAAE8yO,EAAIxwO,EAAErD,QACdgG,GAAK,MAAQlF,EAAE,KAAOuC,EAAE,GAAK,MAAQ2C,EAAE,GAAK,CAAC,IAAKlF,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAAM,CAAC,IAAKA,EAAE,GAAIA,EAAE,KACtGuC,EAAEw0C,QAAQ/2C,GACVgQ,IAAMhQ,EAAIuC,EAAE09B,MAAO19B,EAAE/C,KAAK+C,EAAEA,EAAErD,OAAS,GAAIc,GAC7C,CACF,CACA,SAASuC,EAAEA,EAAGtC,GACZ,KAAOsC,EAAErD,OAAS6zO,GAAI,GAAiD,OAA7C9yO,EAAIsC,EAAEqK,KAAKwF,MAAM7P,EAAErD,OAAS+B,GAAK,GAAGiD,SAAmB,KAAOjE,EAAE,GAAKA,EAAE,GAAIA,EAAE,GAAKA,EAAE,IAAK+P,EAAG,CACpH,IAAIhQ,EAAIuC,EAAEqK,KAAKwF,MAAM7P,EAAErD,OAAS+B,IAAIiD,QACpC3B,EAAE87B,OAAO97B,EAAErD,OAAS,EAAG,EAAGe,EAAGD,EAC/B,MAAOuC,EAAE/C,KAAKS,EAChB,CACA,IAAI4P,EAAI5K,EAAE41O,OACR7rK,EAAI/pE,EAAE61O,KACRx1O,EAAIA,EAAEpB,QACN,IAAI8L,EAAI/K,EAAE81O,OACR95O,EAAI+O,EAAI,EAAI,EAEd,KADAvM,EAAIA,GAAKA,EAAES,SACH,MAAO,CAACoB,EAAGA,GACnB,GAAIuK,GAAKm/D,GAAKA,EAAE9vE,OAAQ,CACtB,IAAK+F,EAAI,EAAGA,EAAI4K,EAAE3Q,OAAQ+F,IAAK,IAAI4K,EAAE5K,KAAO+pE,EAAE,GAAI,CAChD,IAAI8jK,EAAI7tO,EACR,KACF,CAAO,GAAI4K,EAAE,KAAOm/D,EAAEA,EAAE9vE,OAAS2Q,EAAE3Q,OAAS+F,GAAI,CAC9C6tO,EAAI7tO,EACJ,IAAI/B,GAAI,EACR,KACF,CAAO,GAAI2M,EAAEA,EAAE3Q,OAAS,KAAO8vE,EAAEA,EAAE9vE,OAAS2Q,EAAE3Q,OAAS+F,GAAI,CACzD6tO,EAAIjjO,EAAE3Q,OAAS+F,EACf,KACF,EACA,qBAAuB6tO,IAAMrvO,EAAI,GACnC,CACA,GAAIA,EAAEvE,QAAU+zO,EAAEH,GAAI,CACpB,IAAIC,EAAIztO,EAAEpG,OAAS4zO,EAAI7xO,EACvBiC,GAAKjD,EAAEwD,EAAG6B,GAAI/C,EAAE+C,EAAG7B,KAAOxD,EAAEqF,EAAG7B,GAAIlB,EAAEkB,EAAG6B,GAC1C,CACA,MAAO,CAAC7B,EAAG6B,EACb,EACAL,EAAE7F,UAAU47O,WAAa,WACvB/1O,EAAE7F,UAAU67O,aAAa12O,MAAMmE,KAAMlE,UACvC,EACAS,EAAE7F,UAAU67O,aAAe,WACzBvyO,KAAK00B,KAAKiK,KAAK3+B,KAAKO,KAAMqnC,EAAE5nC,KAAKmgC,OAAOguM,QAAQvmM,EAAE5nC,KAAK01B,KAAM11B,KAAKsW,UAAM,GAAQ,EAClF,EACA/Z,EAAE8pD,OAAS,GACJ9pD,CACT,CAvHO,EAwHT,IACAiL,EAAEjL,EAAG,uCAAwC,CAACA,EAAE,wBAAyBA,EAAE,uBAAuB,SAAUA,EAAG6M,GAC7G,SAASw+B,EAAE/tC,GACT,OAAOuiK,EAAEviK,GAAKkB,EAAE,CACdolB,SAAU,IACVsuB,MAAO,GACN50C,GAAK,CACNsmB,SAAUtmB,EAAI,IAAM,EACpB40C,MAAO,EAEX,CACA,SAAS01G,EAAEtqJ,EAAGtC,GACZ,IAAK,IAAI4P,EAAI5K,EAAE8pD,OAAO7vD,OAAQ2Q,KAAM5K,EAAE8pD,OAAOl/C,GAAGutB,OAAS76B,GAAKtC,GAAKA,IAAMgF,EAAE8pD,OAAOl/C,GAAG5G,OAAShE,EAAE8pD,OAAOl/C,GAAGi9C,SAAU,EACtH,CACA,IAAI18C,EAAI0B,EAAEsiO,QACRnB,EAAInhO,EAAE8iO,SACN1B,EAAIphO,EAAEnN,QACNwuO,EAAIrhO,EAAEtM,SACNs/J,EAAIhzJ,EAAE/M,SACNtB,EAAIqO,EAAE4rB,MACNp4B,EAAIwM,EAAEkjO,WACN/0O,EAAI6R,EAAEqjO,KACR,MAAO,CACLzmL,QAAS,SAAUnsD,EAAGtC,EAAG+uE,GACvB,IAAIn/D,EAEFijO,EACA5vO,EAFAjC,EAAI,GAGN,IAAK6jK,EAAE91F,GAAI,CACT,IAAI+jK,EAAIvuO,UACRwqE,EAAI,CACFnmD,SAAUkqN,EAAE,GACZlqL,OAAQkqL,EAAE,GACVtlL,SAAUslL,EAAE,GAEhB,CACAI,EAAEnkK,EAAEnmD,YAAcmmD,EAAEnmD,SAAW,KAC/BmmD,EAAEnmB,OAAS,oBAAsBmmB,EAAEnmB,OAASmmB,EAAEnmB,OAASj8C,KAAKoiE,EAAEnmB,SAAWj8C,KAAK6mO,cAC9EzkK,EAAE2rK,QAAUl3O,EAAExD,GACdqF,EAAErF,GAAG,SAAUqF,EAAGxC,GAChB+pJ,EAAEtqJ,EAAGO,GACLI,EAAI,IAAI+B,EAAE1C,EAAGysE,EAAGlsE,GAChBgwO,OAAI,EACJ,MAAQhwO,GAAKowO,EAAEjzO,EAAEuC,IAAMU,EAAEqzN,MAAQrzN,EAAE03O,SAASr4O,EAAGA,EAAE24O,UAAWj7O,EAAEuC,GAAIU,EAAEw3O,IAAMz6O,EAAEuC,EAAGqN,EAAI,EAAGijO,EAAI,GAAKvwO,EAAE8kC,KAAOx3B,EAAItN,EAAE8kC,KAAKvkC,IAAM+M,EAAI2Y,WAAWyqN,EAAE1wO,EAAGO,KAAO,EAAG,YAAcA,IAAM7B,EAAI,OAC/K6xO,IAAMA,EAAIxtO,GACV,kBAAoBwtO,GAAKA,EAAEjlO,MAAM,QAAUilO,EAAIA,EAAEhlO,QAAQ,MAAO,KAChE5K,EAAEioD,IAAIt7C,EAAGijO,EAAG7xO,EACd,GACF,EACAk6O,WAAY7qM,EACZ8qM,qBAAsB,SAAU74O,EAAGtC,EAAG+uE,GACpC,IAAIn/D,EAAIygC,EAAErwC,GACRgB,EAAI,EACJgE,EAAI,EAON,OANC+pE,EAAI,CAACA,GAAKzsE,EAAEsxO,QAAQ7yN,SAAQ,SAAUze,GACrCA,EAAI+tC,EAAE/tC,EAAE+7B,QAAQquB,WAChB1rD,EAAIhB,GAAKmQ,EAAEnQ,EAAEk3C,OAAStnC,EAAEsnC,MAAQvqC,KAAKI,IAAI/L,EAAGsB,EAAEsmB,SAAWtmB,EAAE40C,OAC3DlyC,EAAI2H,KAAKqL,IAAIpI,EAAEgZ,SAAUtmB,EAAEsmB,SAC7B,IACAtmB,EAAE8uG,SAASgqI,YAAcp6O,EAAI,GACtB,CACLk2C,MAAOvqC,KAAKI,IAAI,EAAG/L,EAAIgE,GACvB4jB,SAAUjc,KAAKqL,IAAIhX,EAAGgE,GAE1B,EACAq2O,aAAc,SAAU/4O,EAAGsN,GACzBA,EAAEwhG,SAASkqI,gBAAkBt7O,EAAEsC,EAAGsN,EAAEyuB,QAAQ00M,MAAMrmL,WAAW,EAC/D,EACA3V,KAAM61G,EAEV,IACA38I,EAAEjL,EAAG,4BAA6B,CAACA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,GAC7F,IAAIw+B,EAAIrrC,EAAEysO,OACR7kF,EAAI/6I,EAAEu1B,KACNj3B,EAAI0B,EAAEnR,cACNsyO,EAAInhO,EAAE3Q,MACN+xO,EAAIphO,EAAEhH,WACNqoO,EAAIrhO,EAAEyb,SACNu3I,EAAIhzJ,EAAEkjO,WACNvxO,EAAIqO,EAAEwjO,MACNhwO,GAAKwM,EAAI7M,EAAEy2D,IAAI8/K,eAAiBtI,EAAEphO,EAAE2pO,eAAiB3pO,EAAE2pO,aAAa,aAAc,CAChFC,WAAY,SAAUn5O,GACpB,OAAOA,CACT,IAEFtC,EAAIqF,EAAIA,EAAEo2O,WAAW,IAAM,GAC7B,IACE,IAAIn5O,KAAM,IAAImvD,WAAYC,gBAAgB1xD,EAAG,YAC/C,CAAE,MAAO4P,GACPtN,GAAI,CACN,CAwFA,OAvFA2wO,EAAI,WACF,SAASrjO,EAAEtN,GACTmG,KAAKqyC,MAAQ,kBAAoBx4C,EAAImG,KAAKizO,YAAYp5O,GAAKA,CAC7D,CAiFA,OAhFAsN,EAAE+rO,qBAAuB,SAAUr5O,GASjC,OARAuiK,EAAEviK,GAAG,SAAUtC,EAAGgB,GAChB,IAAI+tE,GAAI,GACP,IAAMn/D,EAAEgsO,kBAAkBrmO,QAAQvU,KAAO+tE,GAAI,IAC7C,IAAM,CAAC,aAAc,SAAU,OAAQ,SAAU,OAAOx5D,QAAQvU,KAAO+tE,EAAImkK,EAAElzO,IAAM4P,EAAEisO,kBAAkBz3O,MAAK,SAAU9B,GACrH,OAAO,IAAMtC,EAAEuV,QAAQjT,EACzB,KACAysE,IAAMikK,EAAE,0CAA4ChyO,EAAI,sBAAuBsB,EAAEtB,GACnF,IACOsB,CACT,EACAsN,EAAEksO,eAAiB,SAAUx5O,EAAGtC,GAC9BsC,EAAEwkC,UAAYl3B,EAAEmsO,UAChB/7O,GAAK,IAAI4P,EAAE5P,GAAGg8O,SAAS15O,EACzB,EACAsN,EAAEzQ,UAAU68O,SAAW,SAAU15O,GAsB/B,OArBA,SAAStC,EAAEsC,EAAGysE,GACZ,IAAI/tE,EAkBJ,OAjBAwC,EAAElB,GAAGye,SAAQ,SAAUze,GACrB,IAAIW,EAAIX,EAAEw9D,QACRj9D,EAAIP,EAAE28B,YAAcj6B,EAAEs3B,IAAI0e,eAAe14C,EAAE28B,kBAAe,EAC5D,GAAIh8B,EAAG,GAAI,UAAYA,EAAG,IAAIlD,EAAI8C,OAAO,IAAK,IAAM+M,EAAEqsO,YAAY1mO,QAAQtS,GAAI,CAC5EA,EAAI+B,EAAEs3B,IAAIk2F,gBAAgB,QAAUvvH,EAAIotC,EAAI0+B,EAAEtvC,cAAgB4Q,EAAGptC,GACjE,IAAIgC,EAAI3C,EAAEy/B,YAAc,CAAC,EACzB8iI,EAAEviK,GAAG,SAAUA,EAAGC,GAChB,YAAcA,GAAK,eAAiBA,GAAK,aAAeA,GAAK,gBAAkBA,IAAM0C,EAAE1C,GAAKD,EAC9F,IACAsqJ,EAAE3pJ,EAAG2M,EAAE+rO,qBAAqB12O,IAC5BpC,GAAKI,EAAEd,YAAYU,GACnB7C,EAAEsC,EAAE4sC,UAAY,GAAIjsC,GACpBlD,EAAIkD,CACN,MAAO+vO,EAAE,uCAAyC/vO,EAAI,cACtDlD,GAAKgvE,EAAE5sE,YAAYpC,GACnBiB,EAAIjB,CACN,IACOiB,CACT,CACOhB,CAAEyI,KAAKqyC,MAAOx4C,EACvB,EACAsN,EAAEzQ,UAAUu8O,YAAc,SAAU17O,GAClC,IAAI4P,EAAI,GAER,GADA5P,EAAIA,EAAE+8D,OACFz6D,EAAGtC,GAAI,IAAIyxD,WAAYC,gBAAgBrsD,EAAIA,EAAEo2O,WAAWz7O,GAAKA,EAAG,iBAAkB,CACpF,IAAIgB,EAAImP,EAAE,OACVnP,EAAE8lC,UAAY9mC,EACdA,EAAI,CACFy4C,KAAMz3C,EAEV,CACA,IAAI+tE,EAAI,SAAUzsE,EAAGtC,GACnB,IAAI4P,EAAItN,EAAE46B,SAASjsB,cACjBpO,EAAI,CACFi9D,QAASlwD,GAGb,GADA,UAAYA,IAAM/M,EAAEo8B,YAAc38B,EAAE28B,aAAe,IAC/CrvB,EAAItN,EAAEy/B,WAAY,CACpB,IAAIhiC,EAAI,CAAC,EACT,GAAGghB,QAAQ1hB,KAAKuQ,GAAG,SAAU3K,GAC3BlF,EAAEkF,EAAEnD,MAAQmD,EAAEjC,KAChB,IACAH,EAAEk/B,WAAahiC,CACjB,CACA,GAAIuC,EAAEyhC,WAAW9kC,OAAQ,CACvB,IAAIgG,EAAI,GACR,GAAG8b,QAAQ1hB,KAAKiD,EAAEyhC,YAAY,SAAUzhC,GACtCysE,EAAEzsE,EAAG2C,EACP,IACAA,EAAEhG,SAAW4D,EAAEqsC,SAAWjqC,EAC5B,CACAjF,EAAET,KAAKsD,EACT,EAIA,MAHA,GAAGke,QAAQ1hB,KAAKW,EAAEy4C,KAAK1U,YAAY,SAAUzhC,GAC3C,OAAOysE,EAAEzsE,EAAGsN,EACd,IACOA,CACT,EACAA,EAAEgsO,kBAAoB,2jBAA2jBllO,MAAM,KACvlB9G,EAAEisO,kBAAoB,sCAAsCnlO,MAAM,KAClE9G,EAAEqsO,YAAc,uVAAuVvlO,MAAM,KAC7W9G,EAAEmsO,UAAY/7O,EACP4P,CACT,CArFI,GAuFGqjO,CACT,IACAhjO,EAAEjL,EAAG,0BAA2B,CAACA,EAAE,0BAA2BA,EAAE,uBAAuB,SAAUA,EAAG6M,GAClG,SAASw+B,EAAErrC,EAAGK,EAAGrF,EAAGsC,GAClB0C,GAAKA,GAAK,EACVK,GAAKA,EACL,IAAIuK,EAAIg9I,EAAEh8H,KACRm+C,GAAK/pE,EAAEH,WAAW6R,MAAM,KAAK,IAAM,IAAIA,MAAM,KAAK,GAAGzX,OACrD8Q,EAAI/K,EAAEH,WAAW6R,MAAM,KACvB1V,EAAIqE,EACN,IAAK,IAAMA,EAAGA,EAAIsH,KAAKqL,IAAI+2D,EAAG,SAAS,GAAKkkK,EAAE5tO,IAAe,GAAIA,GAAK0K,EAAE,IAAM,EAAIA,EAAE,GAAI,CACtF,IAAI8iO,EAAIxtO,IAAK0K,EAAE,GACf,GAAK8iO,GAAK9iO,EAAE,KAAOA,EAAE,IAAImsO,cAAcrJ,GAAGn8N,MAAM,KAAK,GAAIrR,EAAIwtO,IAAM9iO,EAAE,GAAKA,EAAE,GAAG2G,MAAM,KAAK,IAAM,EAAG1R,EAAI,GAAKK,GAAK0K,EAAE,GAAKpD,KAAKG,IAAI,GAAIiD,EAAE,KAAKuqB,QAAQj1B,GAAK,EAAG0K,EAAE,GAAK,EACrK,OAHkD1K,EAAI,EAItDwtO,GAAKlmO,KAAKC,IAAImD,EAAE,GAAKA,EAAE,GAAK/K,GAAK2H,KAAKG,IAAI,IAAKH,KAAKI,IAAI1H,EAAG0pE,GAAK,IAAIz0C,QAAQj1B,GAE5E,IAAIpC,EAAI,GADR8rE,EAAIxhD,OAAOs3I,EAAEguE,KACC5zO,OAAS8vE,EAAE9vE,OAAS,EAAI,EAOtC,OANAe,EAAIkzO,EAAElzO,EAAG4P,EAAEsoO,cACX51O,EAAI4wO,EAAE5wO,EAAGsN,EAAE0oO,cACXtzO,GAAK,EAAIA,EAAI,IAAM,KAAO/B,EAAI8rE,EAAE/hE,OAAO,EAAG/J,GAAKX,EAAI,IACnD0C,EAAI,GAAK+K,EAAE,KAAO/O,EAAI,IAAMgE,EAAI+pE,EAAE/hE,OAAO/J,GAAG4K,QAAQ,iBAAkB,KAAOvL,GAC7E+C,IAAML,GAAKhF,EAAI6yO,EAAE5uO,OAAOoB,IACxB0K,EAAE,IAAM,KAAO/K,IAAMA,GAAK,IAAM+K,EAAE,IAC3B/K,CACT,CACA,IAAI4nJ,EAAI5nJ,EAAEw1G,eACRrqG,EAAInL,EAAEq1O,YACNrH,EAAInhO,EAAE6iO,kBACNzB,EAAIphO,EAAEtM,SACN2tO,EAAIrhO,EAAEqjO,KACNrwE,EAAIhzJ,EAAEsjO,KACR,MAAO,CACLzyN,WAAY,SAAU1d,EAAGK,EAAGrF,GAC1B,OAAOmQ,EAAEuS,WAAW1d,EAAGK,EAAGrF,EAC5B,EACAkG,OAAQ,SAAUlB,EAAGK,EAAGrF,GACtB,IAAIsC,EAAI,IACNsN,GAAI,EACJm/D,EAAI,KACJh/D,EAAI,YACJ/O,EAAI4rJ,EAAEh8H,KACNiiN,EAAI7yO,GAAKA,EAAEuuB,MAAQpe,EACrBnQ,EAAIA,GAAKA,EAAEm8O,iBAAmB9rM,EAC9B,IAAK,IAAIptC,EAAI,GAAI+B,GAAI,CACnB,IAAI8tO,EAAI9tO,EAAEuQ,QAAQjT,GAClB,IAAK,IAAMwwO,EAAG,MACd,IAAIS,EAAIvuO,EAAEf,MAAM,EAAG6uO,GACnB,GAAIljO,EAAG,CAGL,GAFA2jO,EAAIA,EAAE78N,MAAM,KACZpU,EAAI0wO,EAAEO,EAAE7zO,SAAW,GAAI2F,GACnBkuO,EAAEt0O,QAAU,kBAAoBqD,EAAG,GAAIixO,EAAIA,EAAE/oO,KAAK,KAAMukE,EAAEzgE,KAAKilO,GAAI,CACrE,IAAI1wO,EAAIiW,UAAUy6N,EAAE3lO,MAAMmC,IAAM,CAAC,GAAI,OAAO,GAAI,IAChD,OAASzN,IAAMA,EAAItC,EAAEsC,EAAGO,EAAG7B,EAAEk3O,cAAe,EAAI3E,EAAEh+N,QAAQ,KAAOvU,EAAEs3O,aAAe,IACpF,MAAOh2O,EAAIuwO,EAAEnwN,WAAW6wN,EAAGjxO,GAC3BW,EAAE1D,KAAK+C,EACT,MAAOW,EAAE1D,KAAKg0O,GACdvuO,EAAIA,EAAEf,MAAM6uO,EAAI,GAChBxwO,GAAKsN,GAAKA,GAAK,IAAM,GACvB,CAEA,OADA3M,EAAE1D,KAAKyF,GACA/B,EAAEuH,KAAK,GAChB,EACAi/L,aAAcp5J,EAElB,IACApgC,EAAEjL,EAAG,qCAAsC,CAACA,EAAE,uBAAuB,SAAUA,GAC7E,IAGEmL,EAHEkgC,EAAIrrC,EAAEo/J,MACRotE,EAAIxsO,EAAEkwO,KACNtoF,EAAI5nJ,EAAEswO,WAqDR,OAnDA,SAAWtwO,GAiDTA,EAAEo3O,WAhDF,SAASvqO,EAAE7M,EAAG6/J,EAAGrhK,GACf,IAQEurE,EARE1pE,EAAIL,EACNhF,EAAIqF,EAAEg3O,YAAcx3E,EACpBviK,EAAI,SAAUA,EAAGtC,GACf,OAAQA,EAAEs8O,MAAQ,IAAMh6O,EAAEg6O,MAAQ,EACpC,EACA1sO,EAAI,SAAUtN,EAAGtC,GACf,OAAOsC,EAAEV,OAAS5B,EAAE4B,MACtB,EAEAmO,GAAI,EACJ/O,EAAI,GACJ6xO,EAAI,EACN,IAAK9jK,EAAI/pE,EAAE/F,OAAQ8vE,KAAM8jK,GAAK7tO,EAAE+pE,GAAG3K,KACnC,GAAIyuK,EAAI7yO,EAAG,CAET,IADA4sJ,EAAE5nJ,EAAG1C,GACAuwO,EAAI9jK,EAAI,EAAG8jK,GAAK7yO,GAAI6yO,GAAK7tO,EAAE+pE,GAAG3K,KAAM2K,IACzC/tE,EAAIgE,EAAEo5B,OAAO2wC,EAAI,EAAG/pE,EAAE/F,OACxB,CAEA,IADA2tJ,EAAE5nJ,EAAG4K,GACA5K,EAAIA,EAAEU,KAAI,SAAUpD,GACvB,MAAO,CACL8hE,KAAM9hE,EAAE8hE,KACR70B,QAAS,CAACjtC,EAAEV,QACZ8zI,MAAO87F,EAAElvO,EAAEozI,MAAO,IAEtB,IAAI3lI,GAAI,CACN,IAAKg/D,EAAI/pE,EAAE/F,OAAQ8vE,KAAM/uE,EAAIgF,EAAE+pE,GAAIzsE,GAAKqK,KAAKqL,IAAI1T,MAAM,EAAGtE,EAAEuvC,SAAW5iC,KAAKI,IAAIzI,MAAM,EAAGtE,EAAEuvC,UAAY,EAAGvvC,EAAE+e,IAAMsxB,EAAE/tC,EAAItC,EAAEokE,KAAOpkE,EAAE01I,MAAO,EAAGmvB,EAAI7kK,EAAEokE,MAEnJ,IADA2K,EAAI/pE,EAAE/F,OACD8Q,GAAI,EAAIg/D,KAAM,EAAIA,GAAK/pE,EAAE+pE,EAAI,GAAGhwD,IAAM/Z,EAAE+pE,EAAI,GAAG3K,KAAOp/D,EAAE+pE,GAAGhwD,MAAQ/Z,EAAE+pE,EAAI,GAAG3K,MAAQp/D,EAAE+pE,GAAG3K,KAAMp/D,EAAE+pE,EAAI,GAAGx/B,QAAUvqC,EAAE+pE,EAAI,GAAGx/B,QAAQj0B,OAAOtW,EAAE+pE,GAAGx/B,SAAUvqC,EAAE+pE,EAAI,GAAG2mE,MAAQ,GAAI1wI,EAAE+pE,EAAI,GAAGhwD,IAAM/Z,EAAE+pE,EAAI,GAAG3K,KAAOygG,IAAM7/J,EAAE+pE,EAAI,GAAGhwD,IAAM8lJ,EAAI7/J,EAAE+pE,EAAI,GAAG3K,MAAOp/D,EAAEo5B,OAAO2wC,EAAG,GAAIh/D,GAAI,EACjR,CAgBA,OAfA1K,EAAE9F,KAAK+E,MAAMe,EAAGrE,GAChB+tE,EAAI,EACJ/pE,EAAEZ,MAAK,SAAU9B,GACf,IAAItC,EAAI,EACR,OAAQsC,EAAEitC,SAAW,IAAInrC,MAAK,WAE5B,OADAiB,EAAE0pE,GAAGhwD,IAAMzc,EAAEyc,IAAM/e,EACf,qBAAuBwD,GAAKmJ,KAAKC,IAAIvH,EAAE0pE,GAAGhwD,IAAM1Z,EAAE0pE,GAAGntE,QAAU4B,GAAU6B,EAAEpB,MAAM,EAAG8qE,EAAI,GAAGhuD,SAAQ,SAAUze,GAC/G,cAAcA,EAAEyc,GAClB,IAAI1Z,EAAEg3O,YAAch3O,EAAEg3O,YAAcx3E,GAAK,GAAKA,EAAGx/J,EAAEg3O,WAAa,GAAKx3E,GAAKhzJ,EAAExM,EAAGw/J,EAAGrhK,IAAI,IACtFxD,GAAKqF,EAAE0pE,GAAG3K,KACV2K,KACO,EACT,GACF,IACA69E,EAAEvnJ,EAAGuK,GACEvK,CACT,CAED,CAlDD,CAkDG8K,IAAMA,EAAI,CAAC,IACPA,CACT,IACAF,EAAEjL,EAAG,kCAAmC,CAACA,EAAE,wCAAyCA,EAAE,6BAA8BA,EAAE,uBAAwBA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,GACjN,IAAIkgC,EAAIrrC,EAAEypD,QACRwkL,EAAIjuO,EAAEk2O,WACNhI,EAAIluO,EAAE+xC,KACN8tH,EAAIjY,EAAEslF,QACN1uO,EAAIopJ,EAAEtwH,IACNj3B,EAAIunJ,EAAE/tH,KACN7+B,EAAI4sJ,EAAEokF,IACN1uO,EAAIsqJ,EAAE6kF,OACN7hO,EAAIg9I,EAAEnxF,IACNsT,EAAI5+D,EAAEujO,SACN3jO,EAAII,EAAEi3B,KACNpmC,EAAImP,EAAEzP,cACNmyO,EAAI1iO,EAAEynC,IACN30C,EAAIkN,EAAEgkO,QACNrB,EAAI3iO,EAAEmkO,MACNf,EAAIpjO,EAAEpK,OACNlD,EAAIsN,EAAEmjO,UACNvzO,EAAIoQ,EAAEzL,QACNO,EAAIkL,EAAEtF,WACNmkE,EAAI7+D,EAAE5K,SACNhD,EAAI4N,EAAEmd,SACNjrB,EAAI8N,EAAEstB,MACNmnL,EAAIz0M,EAAE4kO,WACN7+N,EAAI/F,EAAE+kO,KACNzsB,EAAIt4M,EAAEglO,KACNzmK,EAAIv+D,EAAEqlO,YACN3sB,EAAI14M,EAAEulO,UAsoBR,OAroBA1wO,EAAI,WACF,SAASA,IACPyD,KAAKm3D,aAAU,EACfn3D,KAAK8zO,SAAW,CAAC,EACjB9zO,KAAKqgD,QAAU,EACfrgD,KAAK2oG,cAAW,EAChB3oG,KAAKgpO,OAASnvO,EACdmG,KAAK+zO,oBAAsB,8DAA8D9lO,MAAM,IACjG,CAonBA,OAnnBA1R,EAAE7F,UAAUs9O,eAAiB,SAAUx3O,GAGrC,OAFAA,EAAIiR,EAAEzN,KAAKxD,EAAI,SAAUwD,KAAKxD,GAAIwD,KAAKm3D,QAAUn3D,KAAKm3D,QAAQpjC,aAAav3B,GAAK,KAAM,GACtF,eAAeqJ,KAAKrJ,KAAOA,EAAIsjB,WAAWtjB,IACnCA,CACT,EACAD,EAAE7F,UAAUu9O,eAAiB,SAAUz3O,EAAG1C,EAAGD,GAC3CA,EAAExB,aAAayB,EAAG0C,EACpB,EACAD,EAAE7F,UAAU4b,IAAM,SAAU9V,GAC1B,IAAI1C,EAAIkG,KAAK2oG,SACX9uG,EAAImG,KAAKm3D,QAKX,GAJA36D,IAAMwD,KAAKk0O,YAAc13O,GACzBwD,KAAKm0O,eAAiB33O,GAAKA,EAAE43O,SAC7B,qBAAuBp0O,KAAKq0O,SAAW,SAAWr0O,KAAKm3D,QAAQ1iC,UAAY36B,EAAEw6O,UAAUt0O,MACvFA,KAAKu0O,OAAQ,GACR/3O,GAAKA,EAAEg4O,SAAWx0O,KAAKuhD,OAAQ,IAAIglB,EAAIvmE,KAAKy0O,eAGjD,OAFAluK,IAAM/pE,EAAIA,EAAE26D,QAAUr9D,EAAEylD,KAAK7lD,YAAYG,GACrCmG,KAAK00O,OAAO10O,KAAK00O,QACd10O,IACT,EACAzD,EAAE7F,UAAUuxD,SAAW,SAAUzrD,EAAG1C,GAClC,IAAID,EAAIC,EAAI,GAAKkG,KAAK2+B,KAAK,UAAY,GAMvC,OALAniC,GAAKA,GAAK,IAAIyR,MAAM,MAAMqoD,QAAO,SAAU95D,EAAG1C,GAE5C,OADC,IAAMD,EAAEiT,QAAQhT,IAAM0C,EAAE1F,KAAKgD,GACvB0C,CACT,GAAG3C,EAAI,CAACA,GAAK,IAAIkI,KAAK,KACtBvF,IAAM3C,GAAKmG,KAAK2+B,KAAK,QAASniC,GACvBwD,IACT,EACAzD,EAAE7F,UAAUi+O,aAAe,WACzB30O,KAAK40O,cAAgB50O,KAAK60O,kBAAmB70O,KAAK40O,aAAc,EAClE,EACAr4O,EAAE7F,UAAUu2I,MAAQ,SAAUzwI,EAAG3C,EAAG0sE,GAClC,IAGEjvE,EACAiF,EACA8gB,EALEzjB,EAAI,CAAC,EACPqM,EAAIjG,KAAK2oG,SACTpxG,EAAI0O,EAAE6uO,eAIJt4O,GACEwD,KAAK+0O,aAAev4O,EAAGwD,KAAKg1O,iBAAmBn7O,IAAI0sE,GAAKzsE,EAAEysE,MAAIvmE,KAAKi1O,QAAU39O,EAAIivE,GAAK,WAAY8jK,EAAE9yO,EAAGyI,MAAOzI,EAAET,KAAKkJ,MAAOumE,OAAI,KAC/H/pE,EAAIwD,KAAK+0O,aAAcl7O,EAAImG,KAAKg1O,iBAAkB19O,EAAI0I,KAAKi1O,SAClE1uK,EAAI94D,EAAE84D,EAAGtgE,EAAE3O,GAAI,sBAAwBA,EAAI2O,EAAEivO,aAAU,EAAQjvO,GAC/D3O,EAAIkF,EAAEywI,MACN,IAAI7yI,EAAIoC,EAAEwzO,cAYV,OAXA/pO,GAAKsgE,EAAE94D,GAAK,IAAMjR,EAAEiR,GAAK,GACzBlW,GAAKgvE,EAAE7+D,GAAK,IAAMlL,EAAEkL,GAAK,GACzB,UAAYpQ,EAAIiF,EAAI,EAAI,WAAajF,IAAMiF,EAAI,GAC/CA,IAAM0J,IAAMsgE,EAAExqB,OAASv/C,EAAEu/C,OAAS,IAAMx/C,GACxC3C,EAAEC,EAAI,aAAe,KAAOqK,KAAK+c,MAAMhb,GACvC,WAAa7L,EAAIijB,EAAI,EAAI,WAAajjB,IAAMijB,EAAI,GAChDA,IAAM9lB,IAAMgvE,EAAEroB,QAAU1hD,EAAE0hD,QAAU,IAAM7gC,GAC1CzjB,EAAEC,EAAI,aAAe,KAAOqK,KAAK+c,MAAM1pB,GACvCyI,KAAKA,KAAKm1O,OAAS,UAAY,QAAQv7O,GACvCoG,KAAKm1O,QAAS,EACdn1O,KAAKo1O,UAAYx7O,EACVoG,IACT,EACAzD,EAAE7F,UAAU2+O,YAAc,SAAU74O,GAClC,IAAI1C,EAAI,CACNooD,KAAM,QACN4uJ,OAAQ,SACR9zJ,MAAO,OAETljD,EAAE0C,KAAOwD,KAAKy7L,WAAaj/L,EAAGwD,KAAKm3D,QAAQ9+D,aAAa,cAAeyB,EAAE0C,IAC3E,EACAD,EAAE7F,UAAUsvD,QAAU,SAAUxpD,EAAG1C,EAAGD,GACpC,IAAI0sE,EAAIvmE,KACNpG,EAAI4wO,EAAE/8N,EAAE3T,EAAGkG,KAAK2oG,SAASkqI,iBAAiB,IAY5C,OAXA/4O,EAAIF,EAAE60C,MACNhhC,EAAE1S,EAAE0oD,OAAQ1oD,EAAEu6O,SAAUv6O,EAAEw6O,cAAc,KAAQ37O,EAAEumB,SAAW,GAC7D,IAAMvmB,EAAEumB,UAAYtmB,IAAMD,EAAEmrD,SAAWlrD,GAAIosE,GAAE,WAC3CM,EAAEpP,SAAWvvB,EAAE2+B,EAAG/pE,EAAG5C,EACvB,GAAGE,KAAOkG,KAAK2+B,KAAKniC,OAAG,EAAQ3C,GAAIsiN,EAAE3/M,GAAG,SAAUA,EAAG1C,GACnDF,EAAEgpD,MAAQhpD,EAAEgpD,KAAKhsD,KAAKoJ,KAAMxD,EAAG,CAC7B+D,KAAMzG,EACNwc,IAAK,EACLoe,KAAM10B,MAEV,GAAGA,OACIA,IACT,EACAzD,EAAE7F,UAAU8+O,iBAAmB,SAAUh5O,GACvC,IAAI1C,EAAIkG,KAAKm3D,SACZ,IAAM36D,EAAEsQ,QAAQ,cAAgBtQ,EAAIA,EAAE4I,QAAQ,YAAapF,KAAK2oG,SAAS8sI,YAAY37O,EAAEm1C,MAAMkuK,QAC9F,IAAI52I,EAAI/pE,EAAEyR,MAAM,KAEhB,GADAzR,EAAI+pE,EAAEA,EAAE/vE,OAAS,IACZ+vE,EAAIA,EAAE,KAAO,SAAWA,GAAK49E,EAAEokF,IAAK,CACvCvoO,KAAK01O,QAAS,EACd11O,KAAK21O,QAAU31O,KAAK41O,QACpBrvK,EAAIA,EAAEnhE,QAAQ,qBAAqB,SAAU5I,EAAG1C,EAAGD,GACjD,OAAO,EAAIyuE,OAAOxuE,GAAKD,CACzB,IACAmG,KAAK61O,oBACL,IAAIj8O,EAAImB,EAAEgvH,gBAAgBlwH,EAAG,SAC7ByN,EAAE1N,EAAG,CACH,MAAS,0BACTujN,KAAM3gN,EACNs5O,OAAQt5O,EACR,eAAgB+pE,EAChB,kBAAmB,UAErB,GAAGjuD,QAAQ1hB,KAAKkD,EAAEwhC,YAAY,SAAU9+B,GACtC,IAAI1C,EAAI0C,EAAEm0C,WAAU,GACpB72C,EAAE0iC,iBAAmB,CAAC,OAAQ,SAAU,eAAgB,UAAUlkB,SAAQ,SAAU9b,GAClF,OAAO1C,EAAE0iC,gBAAgBhgC,EAC3B,IACA5C,EAAEF,YAAYI,EAChB,IACA,IAAIvC,EAAIwD,EAAEgvH,gBAAgBlwH,EAAG,SAC7BtC,EAAEi/B,YAAc,SAChB,CAAC,IAAK,KAAKle,SAAQ,SAAU9b,GAC3B,IAAI3C,EAAIC,EAAEi6B,aAAav3B,GACvB3C,GAAKtC,EAAEc,aAAamE,EAAG3C,EACzB,IACAD,EAAEF,YAAYnC,GACduC,EAAE4gD,aAAa9gD,EAAGE,EAAEwmC,WACtB,CACF,EACA/jC,EAAE7F,UAAUioC,KAAO,SAAUniC,EAAG1C,EAAGD,EAAG0sE,GACpC,IAEEtgE,EAEAoX,EACA9gB,EALE3C,EAAIoG,KAAKm3D,QACX5/D,EAAIyI,KAAK+zO,oBAETz8O,EAAI0I,KAGN,GAAI,kBAAoBxD,GAAK,qBAAuB1C,EAAG,CACrD,IAAImzH,EAAIzwH,GACRA,EAAI,CAAC,GACHywH,GAAKnzH,CACT,CASA,MARA,kBAAoB0C,EAAIlF,GAAK0I,KAAKxD,EAAI,WAAawD,KAAKg0O,gBAAgBp9O,KAAKoJ,KAAMxD,EAAG5C,IAAMuiN,EAAE3/M,GAAG,SAAU1C,EAAGD,GAC5GwjB,GAAI,EACJkpD,GAAKkkK,EAAEzqO,KAAMnG,GACbmG,KAAK+1O,aAAe,IAAMx+O,EAAEuV,QAAQjT,KAAOoM,IAAMjG,KAAKg2O,WAAWx5O,GAAIyJ,GAAI,GAAKoX,GAAI,IACjFrd,KAAKi2O,UAAY,MAAQp8O,GAAK,MAAQA,IAAMmG,KAAK40O,aAAc,GAChEv3N,KAAM9gB,EAAIyD,KAAKnG,EAAI,WAAamG,KAAKi0O,gBAAkBr9O,KAAKoJ,KAAMlG,EAAGD,EAAGD,IAAKoG,KAAKqtO,YAAcrtO,KAAKk2O,SAAW,sDAAsDrwO,KAAKhM,IAAMmG,KAAKm2O,cAAct8O,EAAGC,EAAGyC,GAC5M,GAAGyD,MAAOA,KAAK20O,gBACf96O,GAAKA,EAAEjD,KAAKoJ,MACL1I,CACT,EACAiF,EAAE7F,UAAUgqK,KAAO,SAAUlkK,GAC3B,OAAOwD,KAAK2+B,KAAK,YAAaniC,EAAI,OAASwD,KAAK2oG,SAAS38C,IAAM,IAAMxvD,EAAEu/B,GAAK,IAAM,OACpF,EACAx/B,EAAE7F,UAAU0/O,MAAQ,SAAU55O,EAAG1C,GAC/BA,EAAIA,GAAK0C,EAAE65O,aAAe,EAC1B,IAAIx8O,EAAIqK,KAAK+c,MAAMnnB,GAAK,EAAI,EAM5B,OALA0C,EAAEiR,EAAIvJ,KAAKwF,MAAMlN,EAAEiR,GAAKzN,KAAKyN,GAAK,GAAK5T,EACvC2C,EAAEkL,EAAIxD,KAAKwF,MAAMlN,EAAEkL,GAAK1H,KAAK0H,GAAK,GAAK7N,EACvC2C,EAAEu/C,MAAQ73C,KAAKwF,OAAOlN,EAAEu/C,OAAS/7C,KAAK+7C,OAAS,GAAK,EAAIliD,GACxD2C,EAAE0hD,OAASh6C,KAAKwF,OAAOlN,EAAE0hD,QAAUl+C,KAAKk+C,QAAU,GAAK,EAAIrkD,GAC3DW,EAAEgC,EAAE65O,eAAiB75O,EAAE65O,YAAcv8O,GAC9B0C,CACT,EACAD,EAAE7F,UAAU4/O,aAAe,SAAU95O,EAAG1C,EAAGD,GACzC,IACEtC,EACA0O,EACA1J,EACA4K,EACAkW,EACA5P,EACAlV,EACA+tE,EACA1pE,EACA0K,EAEA04M,EAZEz5I,EAAIvmE,KAAK2oG,SAWXyhI,EAAI,GAENhwO,EAAE4F,KAAK2oG,SAAU,eAAgB,CAC/B9mG,KAAM/F,YACL,WAED,GADAU,EAAE+5O,eAAiBtwO,EAAI,iBAAmBzJ,EAAEg6O,iBAAmBvwO,EAAI,kBAC/DA,EAAG,CAsBL,GArBA1J,EAAIC,EAAEyJ,GACNoX,EAAIkpD,EAAEkwK,UACNhpO,EAAIjR,EAAEuxO,MACNnxO,EAAI/C,EAAE68O,gBACNp/O,EAAEiF,KAAOC,EAAEyJ,GAAK1J,EAAI,CAClB8sL,GAAI9sL,EAAE,GACNgtL,GAAIhtL,EAAE,GACN+sL,GAAI/sL,EAAE,GACNitL,GAAIjtL,EAAE,GACNo6O,cAAe,mBAEjB,mBAAqB1wO,GAAKrJ,IAAMpC,EAAE+B,EAAEo6O,iBAAmBxvO,EAAI5K,EAAGA,EAAI3C,EAAE2C,EAAGgqE,EAAEqwK,cAAch6O,EAAGuK,GAAI,CAC5FwvO,cAAe,oBAEjBx6B,EAAE5/M,GAAG,SAAUC,EAAG1C,GAChB,OAASA,GAAKswO,EAAEtzO,KAAKgD,EAAG0C,EAC1B,IACA2/M,EAAE1uM,GAAG,SAAUjR,GACb4tO,EAAEtzO,KAAK0F,EACT,IACA4tO,EAAIA,EAAEroO,KAAK,KACPsb,EAAE+sN,GAAI9iO,EAAI+V,EAAE+sN,GAAGzrM,KAAK,UAAW,CACjCpiC,EAAEw/B,GAAKz0B,EAAI84M,IACX,IAAInzF,EAAI5vG,EAAE+sN,GAAK7jK,EAAEtuE,cAAcgO,GAAG04B,KAAKpiC,GAAG+V,IAAIi0D,EAAEswK,MAChD5pH,EAAE6pH,QAAU3vO,EACZ8lH,EAAE8gH,MAAQ,GACVtgO,EAAE6K,SAAQ,SAAU9b,GAClB,IAAMA,EAAE,GAAGsQ,QAAQ,SAAWvV,EAAIwxO,EAAEl7L,MAAMrxC,EAAE,IAAKjE,EAAIhB,EAAE4C,IAAI,OAAQmsE,EAAI/uE,EAAE4C,IAAI,OAAS5B,EAAIiE,EAAE,GAAI8pE,EAAI,GACpG9pE,EAAI+pE,EAAEtuE,cAAc,QAAQ0mC,KAAK,CAC/Bnd,OAAQhlB,EAAE,GACV,aAAcjE,EACd,eAAgB+tE,IACfh0D,IAAI26G,GACPA,EAAE8gH,MAAMj3O,KAAK0F,EACf,GACF,CACAwjN,EAAI,OAASz5I,EAAEva,IAAM,IAAM1kD,EAAI,IAC/BzN,EAAExB,aAAayB,EAAGkmN,GAClBnmN,EAAEk9O,SAAW3M,EACb5tO,EAAEJ,SAAW,WACX,OAAO4jN,CACT,CACF,CACF,GACF,EACAzjN,EAAE7F,UAAUy4C,IAAM,SAAU3yC,GAC1B,IAAI1C,EAAIkG,KAAKy/C,OACX5lD,EAAI,CAAC,EACL0sE,EAAIvmE,KAAKm3D,QACTv9D,EAAI,CAAC,cAAe,eAAgB,SACpC2C,EAAI,GACJjF,GAAKwC,EAKP,GAJA0C,GAAKA,EAAEo+J,QAAUp+J,EAAE2gN,KAAO3gN,EAAEo+J,OAC5B9gK,GAAKqiN,EAAE3/M,GAAG,SAAUA,EAAG+pE,GACrBzsE,GAAKA,EAAEysE,KAAO/pE,IAAM3C,EAAE0sE,GAAK/pE,EAAGlF,GAAI,EACpC,IACIA,EAAG,CAEL,GADAwC,IAAM0C,EAAIsuO,EAAEhxO,EAAGD,IACX2C,EAAG,GAAI,OAASA,EAAEu/C,OAAS,SAAWv/C,EAAEu/C,aAAc/7C,KAAKg3O,eAAe,GAAI,SAAWzwK,EAAE9xC,SAASjsB,eAAiBhM,EAAEu/C,MAAO,IAAI3hD,EAAI4F,KAAKg3O,UAAYh3B,EAAExjN,EAAEu/C,OAG/J,GAFA/7C,KAAKy/C,OAASjjD,EACdpC,IAAM7C,GAAKyI,KAAK2oG,SAASgqI,kBAAoBn2O,EAAEu/C,MAC3CwqB,EAAEvvC,eAAiBh3B,KAAKgpO,OAAQ,CAClC,IAAI3rN,EAAI,SAAU7gB,EAAG1C,GACnB,MAAO,IAAMA,EAAE0O,aACjB,EACA2zM,EAAE3/M,GAAG,SAAUA,EAAG1C,IACf,IAAMF,EAAEkT,QAAQhT,KAAOyC,GAAKzC,EAAEsL,QAAQ,WAAYiY,GAAK,IAAM7gB,EAAI,IACpE,IACAD,GAAK+K,EAAEi/D,EAAG,QAAShqE,EACrB,MAAO6tO,EAAE7jK,EAAG/pE,GACZwD,KAAKu0O,QAAU,SAAWv0O,KAAKm3D,QAAQ1iC,UAAYz0B,KAAK2oG,SAAS2rI,UAAUt0O,MAAOxD,GAAKA,EAAEy6O,aAAej3O,KAAKw1O,iBAAiBh5O,EAAEy6O,aAClI,CACA,OAAOj3O,IACT,EACAzD,EAAE7F,UAAUwgP,gBAAkB,SAAU16O,GACtC,IAAI1C,EAAIkG,KAAK,gBAEb,GADA,YAAclG,IAAMA,EAAI,GACpB0C,EAAIA,GAAKA,EAAEgM,cAAe,CAC5B,IAAI3O,EAAI2C,EAAE4I,QAAQ,kBAAmB,gBAAgBA,QAAQ,eAAgB,WAAWA,QAAQ,WAAY,QAAQA,QAAQ,YAAa,QAAQA,QAAQ,WAAY,QAAQA,QAAQ,OAAQ,QAAQA,QAAQ,OAAQ,QAAQA,QAAQ,KAAM,IAAI6I,MAAM,KACrP,IAAKzR,EAAI3C,EAAErD,OAAQgG,KAAM3C,EAAE2C,GAAK,GAAKwjN,EAAEnmN,EAAE2C,IAAMiR,EAAE3T,EAAGgG,KACpDtD,EAAI3C,EAAEkI,KAAK,KAAKqD,QAAQ,OAAQ,QAChCpF,KAAKm3D,QAAQ9+D,aAAa,mBAAoBmE,EAChD,CACF,EACAD,EAAE7F,UAAUumF,QAAU,WACpB,IAAIzgF,EAAIwD,KACNlG,EAAI0C,EAAE26D,SAAW,CAAC,EAClBt9D,EAAI2C,EAAEmsG,SACNpiC,EAAIzsE,EAAEq9O,gBACNv9O,EAAIC,EAAEu9O,OAAS,SAAWt9O,EAAE26B,UAAYj4B,EAAE03O,kBAAe,EAG3D,GAFAp6O,EAAEu9O,QAAUv9O,EAAEw9O,WAAax9O,EAAEy9O,YAAcz9O,EAAE09O,YAAc19O,EAAE29O,MAAQ,KACrEhN,EAAEjuO,GACEA,EAAEk7O,UAAYnxK,EAAG,CACnB,IAAIhvE,EAAIiF,EAAEk7O,SACV,GAAGp/N,QAAQ1hB,KAAK2vE,EAAEjqC,iBAAiB,4BAA4B,SAAU9/B,IACtE,EAAIA,EAAEu3B,aAAa,aAAajnB,QAAQvV,EAAE4/D,QAAQp7B,KAAOv/B,EAAEggC,gBAAgB,YAC9E,IACAhgC,EAAEk7O,SAAWngP,EAAE0lF,SACjB,CACA,GAAIzgF,EAAEuxO,MAAO,CACX,IAAKxnK,EAAI,EAAGA,EAAI/pE,EAAEuxO,MAAMv3O,OAAQ+vE,IAAK/pE,EAAEuxO,MAAMxnK,GAAG0W,UAChDzgF,EAAEuxO,MAAMv3O,OAAS,EACjBgG,EAAEuxO,WAAQ,CACZ,CAEA,IADAvxO,EAAEm7O,gBAAgB79O,GACbD,EAAEwzO,YAAc7wO,EAAEo7O,iBAAkBh+O,GAAKA,EAAEy2C,KAAO,IAAMz2C,EAAEy2C,IAAI/U,WAAW9kC,QAASsD,EAAIF,EAAEs6O,YAAa13O,EAAEm7O,gBAAgB/9O,EAAEy2C,YAAaz2C,EAAEy2C,IAAKz2C,EAAIE,EACtJ0C,EAAEy4O,SAAW5K,EAAExwO,EAAEi7O,eAAgBt4O,GACjC2/M,EAAE3/M,GAAG,SAAU1C,EAAGD,GAChB2C,EAAE3C,IAAM2C,EAAE3C,GAAGq6O,cAAgB13O,GAAKA,EAAE3C,GAAGojF,SAAWzgF,EAAE3C,GAAGojF,iBAChDzgF,EAAE3C,EACX,GACF,EACA0C,EAAE7F,UAAUkhP,eAAiB,YAC1B53O,KAAKk2O,SAAW,IAAI59N,SAAQ,SAAU9b,GACrCwD,KAAK23O,gBAAgBn7O,EACvB,GAAGwD,MACHA,KAAKk2O,aAAU,CACjB,EACA35O,EAAE7F,UAAUmhP,gBAAkB,SAAUr7O,EAAG1C,GACzC,IAAID,EAAI2C,EAAEw/B,qBAAqB,QAAQ,GACvC,GAAIniC,GACF,GAAIA,EAAE2iC,gBAAgB,MAAO3iC,EAAE2iC,gBAAgB,MAAO1iC,EAAEq9D,QAAQ9+D,aAAa,KAAM,IAAK2H,KAAK83O,iBAAmBj+O,EAAEmiC,qBAAqB,YAAYxlC,OAAQ,CACzJ,IAAKgG,EAAIwD,KAAK83O,gBAAgB3gL,QAAQ77B,WAAY9+B,EAAEhG,QAASqD,EAAEH,YAAY8C,EAAE,IAC7E3C,EAAEo6B,YAAYj0B,KAAK83O,gBAAgB3gL,QACrC,OACS36D,EAAEu3B,aAAa,OAASv3B,EAAEu3B,aAAa,SAAOv3B,EAAEggC,gBAAgB,MAAOhgC,EAAEggC,gBAAgB,OACpGx8B,KAAK83O,kBAAoB93O,KAAK83O,gBAAkB93O,KAAK83O,gBAAgB76J,UACvE,EACA1gF,EAAE7F,UAAUq7O,QAAU,SAAUv1O,EAAG1C,EAAGD,GACpCvC,EAAEkF,KAAO,kBAAoBA,EAAE,KAAOA,EAAIwD,KAAK2oG,SAASovI,eAAev7O,IAAKwD,KAAKwyO,UAAYh2O,EAAGA,EAAIA,EAAE85D,QAAO,SAAU95D,EAAG1C,EAAGD,GAC3H,OAAOC,GAAKA,EAAEiI,MAAQlI,EAAI2C,EAAI,IAAM,IAAM1C,EAAEiI,KAAK,MAAQjI,GAAK,IAAIsC,UACpE,GAAG,KACH,gBAAgByJ,KAAKrJ,KAAOA,EAAI,SAChCwD,KAAKlG,KAAO0C,IAAM3C,EAAExB,aAAayB,EAAG0C,GAAIwD,KAAKlG,GAAK0C,EACpD,EACAD,EAAE7F,UAAUiwD,QAAU,SAAUnqD,GAC9B,IAAI1C,EAAIkG,KACRlG,EAAEksD,QAAQ,CACR3F,QAAS,GACR,CACDlgC,SAAU1S,EAAEjR,EAAG,KACfuoD,SAAU,WACRjrD,EAAE6kC,KAAK,CACLj3B,GAAI,OACHyoC,MACL,GAEJ,EACA5zC,EAAE7F,UAAU47O,WAAa,SAAU91O,EAAG1C,EAAGD,GACvC,kBAAoB2C,EAAI3C,EAAExB,aAAayB,EAAG0C,GAAKA,GAAKwD,KAAKs2O,aAAa95O,EAAG1C,EAAGD,EAC9E,EACA0C,EAAE7F,UAAUshP,QAAU,SAAUl+O,EAAGD,GACjC,IAAI0sE,EAAIvmE,KAAK2oG,SACX/uG,EAAIoG,KAAKm3D,QACT5/D,EAAIyI,KAAKy/C,OACTnoD,EAAI0I,KAAKq0O,QACTj6O,EAAImsE,EAAE7pC,MACNv1B,EAAIo/D,EAAE0xK,UACN56N,EAAIzjB,EAAEo9B,eAAiBh3B,KAAKgpO,OAC9BnvO,EAAI4T,EAAE5T,EAAGmG,KAAKi2O,SAAU,GACxB,IACE3vK,EADE/tE,EAAIguE,EAAE8mK,WAAazzO,GAAK2C,EAAE7F,UAAUw1O,SAASt1O,KAAKgD,EAAG,aAAerC,GAAKA,EAAE4xI,SAE/E,GAAI3uI,EAAElD,GAAI,CACR,IAAI6kN,EAAI7kN,EAAE8E,YACT,IAAM+/M,EAAErvM,QAAQ,OAASqvM,EAAIA,EAAE/2M,QAAQ,SAAU,MAClD+2M,GAAK,CAAC,GAAItiN,EAAGtB,EAAGyH,KAAKg3O,UAAWz/O,GAAKA,EAAEm5O,aAAcn5O,GAAKA,EAAE4nD,YAAYp9C,MAC1E,CAEA,GADAo6M,IAAMriN,IAAMwsE,EAAIlsE,EAAE+hN,KACb71I,EAAG,CACN,GAAIjpD,GAAKkpD,EAAEosK,UAAW,CACpB,IACE,IAAI/1O,EAAIoD,KAAK01O,QAAU,SAAUl5O,GAC/B,IAAI1C,EAAIF,EAAEokC,cAAc,4BACxBlkC,GAAKswO,EAAEtwO,EAAG,CACRo1C,QAAS1yC,GAEb,EACAA,EAAEI,IAAMA,EAAE,QACV0pE,EAAI1sE,EAAEo+O,QAAUlN,EAAE,CAAC,EAAGlxO,EAAEo+O,WAAa,CACnCj8L,MAAOniD,EAAEyjD,YACTa,OAAQtkD,EAAEykD,cAEZ7hD,EAAEI,IAAMA,EAAE,GACZ,CAAE,MAAOs7O,GAET,GACK5xK,GAAK,EAAIA,EAAEvqB,SAAOuqB,EAAI,CACzBvqB,MAAO,EACPmC,OAAQ,GAEZ,MAAOooB,EAAItmE,KAAKm4O,cAKhB,GAJA5xK,EAAE6wK,QAAUt9O,EAAIwsE,EAAEvqB,MAAOwqB,EAAID,EAAEpoB,OAAQ7gC,IAAMipD,EAAEpoB,OAASqoB,EAAI,CAC1D,UAAW,GACX,UAAW,KACVhuE,GAAK,IAAM,IAAM2L,KAAK+c,MAAMslD,KAAOA,GAAI1sE,IAAMwjB,EAAIxjB,EAAIuiK,EAAG91F,EAAEvqB,MAAQ73C,KAAKC,IAAIoiE,EAAIriE,KAAKy+J,IAAItlJ,IAAMnZ,KAAKC,IAAIrK,EAAIoK,KAAKg/C,IAAI7lC,IAAKipD,EAAEpoB,OAASh6C,KAAKC,IAAIoiE,EAAIriE,KAAKg/C,IAAI7lC,IAAMnZ,KAAKC,IAAIrK,EAAIoK,KAAKy+J,IAAItlJ,MACrL8+L,IAAM,KAAO7kN,GAAK,EAAIgvE,EAAEpoB,QAAS,CACnC,KAAO,IAAM/2C,EAAE3Q,eAAgB4D,EAAE+M,EAAElQ,SACnCmD,EAAE+hN,IAAMh1M,EAAErQ,KAAKqlN,GACf/hN,EAAE+hN,GAAK71I,CACT,CACF,CACA,OAAOA,CACT,EACA/pE,EAAE7F,UAAUw1O,SAAW,SAAU1vO,GAC/B,OAAO2K,EAAEs0C,iBAAiBz7C,KAAKm3D,SAAWn3D,KAAM,IAAIm8C,iBAAiB3/C,EACvE,EACAD,EAAE7F,UAAU+xD,SAAW,SAAUjsD,GAC/B,OAAQ,KAAO,GAAKwD,KAAK2+B,KAAK,UAAU1wB,MAAM,KAAKnB,QAAQtQ,EAC7D,EACAD,EAAE7F,UAAUy5C,KAAO,SAAU3zC,GAM3B,OALAA,EAAIwD,KAAK2+B,KAAK,CACZj3B,GAAI,OACD1H,KAAK2+B,KAAK,CACbqgB,WAAY,WAEPh/C,IACT,EACAzD,EAAE7F,UAAUyhP,YAAc,WACxB,MAAO,CACLj6L,OAAQ,EACRnC,MAAO,EACPtuC,EAAG,EACH/F,EAAG,EAEP,EACAnL,EAAE7F,UAAU69B,KAAO,SAAU/3B,EAAG1C,GAC9BkG,KAAKm3D,QAAU,SAAWr9D,EAAIvB,EAAEuB,GAAKiB,EAAEgvH,gBAAgB/pH,KAAKgpO,OAAQlvO,GACpEkG,KAAK2oG,SAAWnsG,EAChBpC,EAAE4F,KAAM,YACV,EACAzD,EAAE7F,UAAUygC,OAAS,SAAU36B,GAG7B,OAFAwD,KAAKo0O,SAAW53O,EAChBwD,KAAK60O,kBACE70O,IACT,EACAzD,EAAE7F,UAAUi8C,GAAK,SAAUn2C,EAAG1C,GAC5B,IAAID,EAAImG,KAAK8zO,SAGb,OAFIj6O,EAAE2C,IAAI3C,EAAE2C,KACZ3C,EAAE2C,GAAK8pE,EAAEtmE,KAAKm3D,QAAS36D,EAAG1C,GACnBkG,IACT,EACAzD,EAAE7F,UAAU0hP,cAAgB,SAAU57O,EAAG1C,EAAGD,GAC1CmG,KAAKqgD,QAAU7jD,EAAI8rE,OAAOA,OAAO9rE,GAAGq1B,QAAQ,IAC5Ch4B,EAAExB,aAAayB,EAAG0C,EACpB,EACAD,EAAE7F,UAAU2xD,YAAc,SAAU7rD,GAClC,OAAOwD,KAAK2+B,KAAK,SAAU,GAAK3+B,KAAK2+B,KAAK,UAAUv5B,QAAQtL,EAAE0C,GAAK,IAAIiG,OAAO,QAAUjG,EAAI,SAAWA,EAAG,KAAK4I,QAAQ,MAAO,KAAKkvD,OACrI,EACA/3D,EAAE7F,UAAUm/O,kBAAoB,WAC9B,IAAIr5O,EAAIwD,KAAKm3D,QAAQn5B,cAAc,iCACnCxhC,GAAKwD,KAAK23O,gBAAgBn7O,EAC5B,EACAD,EAAE7F,UAAUihP,gBAAkB,SAAUn7O,GACtC,IAAI1C,EAAI0C,EAAEw3B,WACVl6B,GAAKA,EAAEm6B,YAAYz3B,EACrB,EACAD,EAAE7F,UAAU2hP,mBAAqB,SAAU77O,GACzC,IAAI1C,EAAIkG,KAAKm3D,QAAQ4/K,UAAY/2O,KAAK2oG,SAAS8tI,UAAUz2O,KAAKm3D,QAAQ4/K,UAGtE,OAFA/2O,KAAKm3D,QAAQu/K,gBAAkBl6O,EAC/B1C,GAAKA,EAAEg9O,SAAWh9O,EAAEksD,QAAQhmD,KAAK2oG,SAASiuI,cAAcp6O,EAAG1C,EAAEg9O,UACtD92O,IACT,EACAzD,EAAE7F,UAAU4hP,YAAc,SAAU97O,EAAG1C,GACrC,IAAID,EAAImG,KAAKm3D,QACX5/D,EAAIyI,KAAK8zB,KAAO9zB,KAAK8zB,KAAKqjC,QAAUt9D,EACpC0C,EAAI,CACFg8O,WAAY,eAEdjhP,GAAI,EACJ8C,EAAI4F,KAAK83O,gBACTrqO,GAAKrT,EACPN,EAAIF,GAAE,EAAI,CACR6nC,SAAS,EACTnI,WAAY,CACV+yJ,IAAK,EACLr7D,YAAa,MACbunH,WAAY,WAEbz+O,GACH,IAAIujB,EAAIjU,EAAE8pO,qBAAqBp5O,EAAEw/B,YACjC,GAAI98B,GAAK1C,GAAKA,EAAE2nC,QAAS,CACvBrnC,GAAK,OAASA,EAAE+8D,QAAQnjC,YAAcvmB,GAAI,EAAIrT,EAAIA,EAAE6iF,WAAa7iF,GAAK4F,KAAK61O,kBAAkBj/O,KAAKwD,EAAE85O,aACpGl0O,KAAK41B,SAAW51B,KAAK41B,QAAQwsB,UAAY/kC,EAAE+uK,IAAMpsL,KAAK41B,QAAQwsB,SAC9DhoD,IAAM4F,KAAK83O,gBAAkB19O,EAAI4F,KAAK2oG,SAAS1wG,cAAc,YAAaX,GAAI,GAC9E,IAAIiB,EAAI6B,EAAE+8D,QAEV,IADCr9D,EAAI0C,EAAE26D,QAAQpjC,aAAa,QAAUv3B,EAAE26D,QAAQ9+D,aAAa,KAAMyB,EAAIsmN,KACnE3yM,EAAG,IAAKlW,EAAEc,aAAa,IAAK,GAAIkuE,EAAElpD,EAAE+uK,KAAO70L,EAAEc,aAAa,KAAMglB,EAAE+uK,IAAK5vL,EAAI,GAAGhB,MAAM5E,KAAKW,EAAE+jC,YAAa7tB,EAAI,EAAGA,EAAIjR,EAAEhG,OAAQiX,IAAK,CACpI,IAAI64D,EAAI9pE,EAAEiR,GACV64D,EAAEjzC,WAAalsB,EAAEgzD,KAAKq+K,WAAa,UAAYlyK,EAAE7xC,UAAYl8B,EAAEmB,YAAY4sE,EAC7E,CACAhvE,GAAK8C,GAAKA,EAAEkY,IAAI,CACd6kD,QAAS5/D,IAEXgB,EAAEkgP,eAAe,+BAAgC,OAAQz4O,KAAK2oG,SAAS38C,IAAM,IAAMlyD,GACnFU,EAAE6iB,EAAEgvK,MAAQ9zL,EAAEy7B,WAAW37B,aAAa,KAAMglB,EAAEgvK,WAAYhvK,EAAEgvK,IAC5D7xL,EAAE6iB,EAAE+uK,MAAQ7zL,EAAEy7B,WAAW37B,aAAa,KAAMglB,EAAE+uK,WAAY/uK,EAAE+uK,IAC5D+vB,EAAE9+L,GAAG,SAAU7gB,EAAG1C,GAChBvB,EAAEF,aAAakE,EAAEzC,IAAMA,EAAG0C,EAC5B,IACA3C,EAAE2iC,gBAAgB,aAClBx8B,KAAK61O,kBAAkBj/O,KAAKwD,GAC5B4F,KAAK8zB,OAAS9zB,KAAK2oG,SAAS0kI,YAAcrtO,KAAK2+B,KAAK,CAClDw+K,KAAM,OACN,eAAgB,IAElBn9M,KAAKw1O,iBAAmBx1O,KAAK60O,gBAAkBj4O,CACjD,MAAOxC,WAAa4F,KAAK60O,uBAAwB70O,KAAKw1O,iBAAkBx1O,KAAK63O,gBAAgBh+O,EAAG2C,GAAIwD,KAAK60O,kBAAmB70O,KAAK41B,SAAW51B,KAAK41B,QAAQqgN,UAAYj2O,KAAKw1O,iBAAiBx1O,KAAK41B,QAAQqZ,MAAMgoM,cAC9M,OAAOj3O,IACT,EACAzD,EAAE7F,UAAU8qE,OAAS,SAAUhlE,EAAG1C,EAAGD,GACnC,IAWEwjB,EAXEkpD,EAAI,GACN3sE,EAAIoG,KAAKm3D,QACT5/D,EAAIyI,KAAK04O,iBACTn8O,EAAI,CACFq+J,MAAO,UACPpjH,QAASx3C,KAAKm0O,gBAAkB,EAAI,EACpC18L,QAASz3C,KAAKm0O,gBAAkB,EAAI,EACpC9zL,QAAS,IACTtE,MAAO,GAETzkD,GAAI,EAMN,IAJA,IAAOkF,EAAI6gB,EAAI9gB,EAAI,kBAAoBC,IAAM6gB,EAAIytN,EAAEvuO,EAAGC,IACtD6gB,IAAMA,GAAK9lB,GAAK4kN,EAAE9+L,GAAG,SAAU7gB,EAAG1C,GAChC0C,IAAMjF,EAAEuC,KAAOxC,GAAI,EACrB,IAAIA,GAAK0I,KAAK43O,iBAAkB53O,KAAK04O,iBAAmBr7N,GACnDA,GAA8B,IAAKrd,KAAKk2O,QAAS,CACpD,IAAIjwO,EAAIoX,EAAEgjC,QAAUhjC,EAAE0+B,MAClB3hD,EAAI4F,KAAKm0O,eAAiB,aAAe92N,EAAEo6B,QAAU,KAAOp6B,EAAEm6B,QAAU,IAAM,aAAen6B,EAAEm6B,QAAU,KAAOn6B,EAAEo6B,QAAU,IAChI,IAAKl7C,EAAI,EAAGA,GAAK8gB,EAAE0+B,MAAOx/C,IAAK,CAC7B,IAAI4K,EAAIvN,EAAE+2C,WAAU,GAChBljC,EAAI,EAAI4P,EAAE0+B,MAAQ,EAAI,EAAIx/C,EAC9B+K,EAAEH,EAAG,CACH2uO,OAAQt5O,EAAEo+J,OAAS,UACnB,iBAAkB30J,EAAI1J,EACtB,eAAgBkR,EAChB4iM,UAAWj2M,EACX+iN,KAAM,SAERh2M,EAAE9O,aAAa,SAAU8O,EAAE4sB,aAAa,UAAY,IAAM,sBAC1Dl6B,IAAMyN,EAAEH,EAAG,SAAUjD,KAAKI,IAAIgD,EAAEH,EAAG,UAAYsG,EAAG,IAAKtG,EAAEwxO,UAAYlrO,GACrE3T,EAAIA,EAAEq9D,QAAQz9D,YAAYyN,GAAKvN,EAAEo6B,YAAcp6B,EAAEo6B,WAAW0mB,aAAavzC,EAAGvN,GAC5E2sE,EAAEzvE,KAAKqQ,EACT,CACAnH,KAAKk2O,QAAU3vK,CACjB,OAnBQvmE,KAAK43O,iBAoBb,OAAO53O,IACT,EACAzD,EAAE7F,UAAUw5C,KAAO,SAAU1zC,GAC3B,OAAOwD,KAAK2+B,KAAK,CACfqgB,WAAYxiD,EAAI,UAAY,WAEhC,EACAD,EAAE7F,UAAU67O,aAAe,SAAU/1O,EAAG1C,EAAGD,GACzCmG,KAAKlG,GAAK0C,EACVwD,KAAK81O,QAAU91O,KAAK,iBAAmBzD,EAAE7F,UAAU47O,WAAW17O,KAAKoJ,KAAMA,KAAK81O,OAAQ,SAAUj8O,GAAIA,EAAExB,aAAa,eAAgB2H,KAAK,iBAAkBA,KAAK44O,WAAY,GAAM,iBAAmB9+O,GAAK,IAAM0C,GAAKwD,KAAK44O,WAAa/+O,EAAE2iC,gBAAgB,UAAWx8B,KAAK44O,WAAY,GAAM54O,KAAK2oG,SAAS0kI,YAAcrtO,KAAK,kBAAoBnG,EAAExB,aAAa,eAAgB2H,KAAK,iBAAkBA,KAAK44O,WAAY,EACxZ,EACAr8O,EAAE7F,UAAU2/O,YAAc,WACxB,IAAKr2O,KAAK2oG,SAAS0kI,WAAY,OAAOrtO,KAAK,iBAAmB,EAC9D,IAAIxD,EAAIwD,KAAKksO,SAAS,gBACpBpyO,EAAI,EACN,GAAI0C,EAAEsQ,QAAQ,QAAUtQ,EAAEhG,OAAS,EAAGsD,EAAIkmN,EAAExjN,QAAQ,GAAI,KAAOA,EAAG,CAChE,IAAI+pE,EAAIxrE,EAAEgvH,gBAAgBlwH,EAAG,QAC7ByN,EAAEi/D,EAAG,CACHxqB,MAAOv/C,EACP,eAAgB,IAElBwD,KAAKm3D,QAAQnjC,WAAWt6B,YAAY6sE,GACpCzsE,EAAIysE,EAAEyxK,UAAUj8L,MAChBwqB,EAAEvyC,WAAWC,YAAYsyC,EAC3B,CACA,OAAOzsE,CACT,EACAyC,EAAE7F,UAAUs/O,WAAa,SAAUx5O,GACjC,IAAI1C,EAAIkG,KACR,gEAAgEiO,MAAM,KAAKqK,SAAQ,SAAUze,GAC3FC,EAAED,GAAK4T,EAAEjR,EAAE3C,GAAIC,EAAED,GACnB,IACAC,EAAE6kC,KAAK,CACL7kC,EAAGA,EAAE6uG,SAAS6mI,QAAQ11O,EAAEi8O,YAAYj8O,EAAE2T,EAAG3T,EAAE4N,EAAG5N,EAAEiiD,MAAOjiD,EAAEokD,OAAQpkD,IAErE,EACAyC,EAAE7F,UAAUmiP,WAAa,SAAUr8O,GACjCA,IAAMwD,KAAKq0O,iBAAmBr0O,KAAK84O,aAAc94O,KAAKq0O,QAAU73O,EAAGwD,KAAKu0O,OAASv0O,KAAK2oG,SAAS2rI,UAAUt0O,MAC3G,EACAzD,EAAE7F,UAAUqiP,YAAc,SAAUv8O,GAClC,IAAI1C,EAAIkG,KAAKm3D,QACXt9D,EAAIC,EAAEkiC,qBAAqB,SAAS,IAAMjhC,EAAEgvH,gBAAgB/pH,KAAKgpO,OAAQ,SAC3ElvO,EAAE4gD,aAAe5gD,EAAE4gD,aAAa7gD,EAAGC,EAAEwmC,YAAcxmC,EAAEJ,YAAYG,GACjEA,EAAE28B,YAAc1R,OAAOrX,EAAEjR,EAAG,KAAK4I,QAAQ,WAAY,IAAIA,QAAQ,QAAS,KAAKA,QAAQ,QAAS,IAClG,EACA7I,EAAE7F,UAAUsiP,QAAU,WACpB,IAAIx8O,EAAIwD,KAAKm3D,QAEb,OADA36D,EAAEw3B,WAAWt6B,YAAY8C,GAClBwD,IACT,EACAzD,EAAE7F,UAAUg5N,UAAY,SAAUlzN,EAAG1C,GACnC,OAAOkG,KAAK2+B,KAAK,CACfs6M,WAAYz8O,EACZ08O,WAAYp/O,GAEhB,EACAyC,EAAE7F,UAAUy/O,cAAgB,SAAU35O,EAAG1C,EAAGD,GAC1C,IAAI0sE,EAAIvmE,KAAKk2O,QACb,GAAI3vK,EAAG,IAAK,IAAI3sE,EAAI2sE,EAAE/vE,OAAQoD,KAAMC,EAAEjD,KAAK2vE,EAAE3sE,GAAI,WAAa4C,EAAI0H,KAAKI,IAAIxK,GAAKysE,EAAE3sE,GAAG++O,WAAa,GAAI,GAAK,MAAQn8O,EAAIwD,KAAKlG,EAAIA,EAAG0C,EAAG+pE,EAAE3sE,GAC1I,EACA2C,EAAE7F,UAAUm+O,gBAAkB,WAC5B,IAAIr4O,EAAIwD,KAAKm5O,OACXr/O,EAAIkG,KAAKo5O,OACTv/O,EAAImG,KAAKo0O,SACT7tK,EAAIvmE,KAAKi2O,SACTr8O,EAAIoG,KAAKq5O,OACT9hP,EAAIyI,KAAKm3D,QACT56D,EAAIyD,KAAKi5O,YAAc,EACvB3hP,EAAI0I,KAAKk5O,YAAc,EACzBr/O,IAAM0C,GAAKyD,KAAK+7C,MAAOzkD,GAAK0I,KAAKk+C,QACjC3hD,EAAI,CAAC,aAAeA,EAAI,IAAMjF,EAAI,KAClCkD,EAAEZ,IAAM2C,EAAEzF,KAAK,UAAY8C,EAAEmI,KAAK,KAAO,KACzClI,EAAI0C,EAAEzF,KAAK,0BAA4ByvE,GAAKhqE,EAAEzF,KAAK,UAAYyvE,EAAI,IAAM94D,EAAEzN,KAAKs5O,gBAAiB/hP,EAAEw8B,aAAa,KAAM,GAAK,IAAMtmB,EAAEzN,KAAKu5O,gBAAiBhiP,EAAEw8B,aAAa,MAAQ,GAAK,MACpLv5B,EAAEgC,IAAMhC,EAAEV,KAAOyC,EAAEzF,KAAK,SAAW2W,EAAEjR,EAAG,GAAK,IAAMiR,EAAE3T,EAAG,GAAK,KAC9DyC,EAAE/F,QAAUe,EAAEc,aAAa,YAAakE,EAAEwF,KAAK,KACjD,EACAxF,EAAE7F,UAAU8iP,iBAAmB,SAAUh9O,EAAG1C,EAAGD,GAC7C,YAAc2C,EAAI3C,EAAE2iC,gBAAgB1iC,GAAKkG,KAAKlG,KAAO0C,GAAK3C,EAAExB,aAAayB,EAAG0C,GAC5EwD,KAAKlG,GAAK0C,CACZ,EACAD,EAAE7F,UAAU+iP,QAAU,SAAUj9O,GAE9B,MADA,WAAawD,KAAKm3D,QAAQ1iC,WAAa,MAAQj4B,EAAIA,EAAI,KAAO,MAAQA,IAAMA,EAAI,OACzEwD,KAAKg0O,eAAex3O,EAC7B,EACAD,EAAE7F,UAAU+9O,aAAe,SAAUj4O,EAAG1C,GACtC,IAAID,EAAImG,KAAK2oG,SACXpiC,EAAIvmE,KAAKk0O,YACTt6O,GAAK2sE,GAAK1sE,GAAGs9D,SAAWt9D,EAAE0lD,IAC1BhoD,EAAIyI,KAAKm3D,QACXt9D,EAAID,IAAMC,EAAE0lD,IACZ,IAEIliC,EAFA9gB,GAAI,EACJjF,EAAI0I,KAAKu0O,MAIb,GAFA/5O,EAAEgC,IAAMjF,EAAEc,aAAa,eAAgBmE,GAAIA,GAAKA,EAAGwD,KAAKlG,KAAO0C,IAAMlF,GAAI,IAAOkD,EAAEwF,KAAKlG,KAAOvC,EAAEilC,gBAAgB,gBAChHx8B,KAAKlG,GAAK0C,EACNlF,EAAG,CAGL,KAFCkF,EAAIwD,KAAKuhD,SAAWglB,IAAMA,EAAEiuK,SAAU,GAElCn3N,GADLvjB,EAAIF,EAAE0hC,YACK9kC,OAAS,EAAG,GAAK6mB,IAAM9gB,EAAG8gB,IAAK,CAExC/lB,GADAivE,EAAIzsE,EAAEujB,IACA0W,aAAa,gBACnB,IAAI35B,GAAKI,EAAElD,GACPivE,IAAMhvE,IAAO,EAAIiF,GAAKpC,IAAMP,IAAMwjB,GAAGzjB,EAAE8gD,aAAanjD,EAAGuC,EAAEujB,IAAK9gB,GAAI,IAAYyjN,EAAE1oN,IAAMkF,GAAKpC,KAAOI,EAAEgC,IAAM,GAAKA,MAAI5C,EAAE8gD,aAAanjD,EAAGuC,EAAEujB,EAAI,IAAM,MAAO9gB,GAAI,GAClK,CACAA,IAAM3C,EAAE8gD,aAAanjD,EAAGuC,EAAED,EAAI,EAAI,IAAM,MAAO0C,GAAI,EACrD,CACA,OAAOA,CACT,EACOA,CACT,CA7nBI,GA8nBJA,EAAE7F,UAAU,sBAAwB6F,EAAE7F,UAAU67O,aAChDh2O,EAAE7F,UAAUgjP,QAAUn9O,EAAE7F,UAAU+iP,QAClCl9O,EAAE7F,UAAUijP,aAAep9O,EAAE7F,UAAUkjP,sBAAwBr9O,EAAE7F,UAAUmjP,sBAAwBt9O,EAAE7F,UAAUojP,eAAiBv9O,EAAE7F,UAAUqjP,aAAex9O,EAAE7F,UAAUsjP,aAAez9O,EAAE7F,UAAUujP,iBAAmB19O,EAAE7F,UAAUwjP,iBAAmB39O,EAAE7F,UAAUyjP,oBAAsB,SAAU39O,EAAG1C,GACjSkG,KAAKlG,GAAK0C,EACVwD,KAAK40O,aAAc,CACrB,EAEOr4O,CACT,IACAiL,EAAEjL,EAAG,oCAAqC,CAACA,EAAE,qBAAqB,SAAUA,GAC1E,IAAIqrC,EAaJ,OAZA,SAAWA,GAET,IAAIx+B,EADJw+B,EAAEwyM,cAAgB,CAAC,EAEnBxyM,EAAEyyM,gBAAkB,SAAU99O,GAE5B,YADA,IAAWA,IAAMA,EAAI6M,GACdw+B,EAAEwyM,cAAc79O,IAAMqrC,EAAEwyM,cAAchxO,EAC/C,EACAw+B,EAAE0yM,qBAAuB,SAAU5yO,EAAGqhO,EAAGyB,GACvC5iM,EAAEwyM,cAAc1yO,GAAKqhO,EAChB3/N,IAAKohO,IAAGphO,EAAI1B,EAAGnL,EAAEowG,SAAWo8H,EACnC,CACD,CAXD,CAWGnhM,IAAMA,EAAI,CAAC,IACPA,CACT,IACApgC,EAAEjL,EAAG,gCAAiC,CAACA,EAAE,mCAAoCA,EAAE,uBAAuB,SAAUA,EAAG6M,GACjH,IAAIw+B,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUK,EAAGrF,GAQnB,OAPAgF,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUtC,EAAGtC,GACjCsC,EAAEyiE,UAAY/kE,CAChB,GAAK,SAAUsC,EAAGtC,GAChB,IAAK,IAAIgF,KAAKhF,EAAGA,EAAEZ,eAAe4F,KAAO1C,EAAE0C,GAAKhF,EAAEgF,GACpD,EACOA,EAAEK,EAAGrF,EACd,EACA,OAAO,SAAUqF,EAAGrF,GAClB,SAASsC,IACPmG,KAAK40B,YAAch4B,CACrB,CACAL,EAAEK,EAAGrF,GACLqF,EAAElG,UAAY,OAASa,EAAId,OAAOmE,OAAOrD,IAAMsC,EAAEnD,UAAYa,EAAEb,UAAW,IAAImD,EAChF,CACF,CAlBgC,GAmBhCsqJ,EAAI/6I,EAAEsiO,QACNhkO,EAAI0B,EAAE9L,OACNitO,EAAInhO,EAAEtM,SACN0tO,EAAIphO,EAAE4rB,MACNy1M,EAAIrhO,EAAEqjO,KACNrwE,EAAIhzJ,EAAEurC,YACR,OAAO,SAAU55C,GACf,SAAS6B,EAAErF,EAAGsC,EAAG0C,EAAG+pE,EAAGh/D,EAAG/O,EAAG6xO,EAAG5vO,EAAG6vO,EAAGS,GACpC,IAgBIxzO,EAhBA8C,EAAIW,EAAEnE,KAAKoJ,OAASA,KAwBxB,OAvBA5F,EAAEmgP,kBAAoBngP,EAAEogP,cACxBpgP,EAAEqgP,mBAAqBrgP,EAAEogP,cACzBpgP,EAAEm6B,KAAKh9B,EAAG,KACV6C,EAAEi6O,QAAUx6O,EACZO,EAAEqT,EAAIlR,EACNnC,EAAEsN,EAAI4+D,EACNlsE,EAAEsgP,QAAUniP,EACZ6B,EAAEugP,QAAUvQ,EACZhwO,EAAEkqK,SAAW+lE,EACbjwO,EAAEgkC,UAAY0sM,EACd1wO,EAAE6tD,SAAS,WAAa6iL,EAAI,wBAA0B,oBACtDA,GAAK1wO,EAAE6tD,SAAS,cAAgB6iL,GAChC1wO,EAAE05B,KAAOv8B,EAAEu8B,UAAK,EAAQ,EAAG,EAAGt5B,GAAGmkC,KAAK,CACpC4iB,OAAQ,IAGV,kBAAoBj6C,KAAOhQ,EAAI,iBAAiBuO,KAAKyB,KAAOlN,EAAEuuG,SAAS6mI,QAAQloO,MAAQlN,EAAEwgP,UAAYtzO,GACrGlN,EAAEygP,KAAOj+O,EAAEk+O,UACX1gP,EAAEgoD,QAAU,EACZhoD,EAAE2gP,eAAiB,EACnB3gP,EAAE4gP,SAAWzjP,EAAE81O,YAAc/1O,EAC7B8C,EAAE6gP,aAAe,CAAC,EAClB7gP,EAAE8gP,YAAc,EACT9gP,CACT,CA6JA,OA5JAwtC,EAAEhrC,EAAG7B,GACL6B,EAAElG,UAAU2+O,YAAc,SAAU99O,IAClCA,EAAI,CACF2qD,KAAM,EACN4uJ,OAAQ,GACR9zJ,MAAO,GACPzlD,MACIyI,KAAKk7O,cAAgBl7O,KAAKk7O,YAAc3jP,EAAGyI,KAAK66O,MAAQtQ,EAAEvqO,KAAKm7O,WAAan7O,KAAK2+B,KAAK,CAC1FlxB,EAAGzN,KAAKm7O,WAEZ,EACAv+O,EAAElG,UAAU0kP,cAAgB,SAAU7jP,EAAGsC,GACvCmG,KAAK06O,QAAUnjP,EACfyI,KAAKq7O,QAAQxhP,EAAGqK,KAAK+c,MAAM1pB,GAAKyI,KAAKs7O,iBAAmBt7O,KAAKm7O,SAC/D,EACAv+O,EAAElG,UAAU6kP,cAAgB,SAAUhkP,EAAGsC,GACvCmG,KAAK26O,QAAUpjP,EACfyI,KAAKq7O,QAAQxhP,EAAGtC,EAAIyI,KAAKw7O,SAC3B,EACA5+O,EAAElG,UAAU2kP,QAAU,SAAU9jP,EAAGsC,GACjCmG,KAAKu/C,IAAMv/C,KAAKu/C,IAAI5gB,KAAKpnC,EAAGsC,GAAKmG,KAAKi7O,aAAa1jP,GAAKsC,CAC1D,EACA+C,EAAElG,UAAUy4C,IAAM,SAAU53C,GAC1B,GAAIA,EAAG,CACL,IAAIsC,EAAI,CAAC,EACTtC,EAAIizO,EAAEjzO,GACNqF,EAAE6+O,UAAUnjO,SAAQ,SAAU/b,GAC5B,qBAAuBhF,EAAEgF,KAAO1C,EAAE0C,GAAKhF,EAAEgF,UAAWhF,EAAEgF,GACxD,IACAyD,KAAK8zB,KAAKqb,IAAIt1C,GACd,IAAIsN,EAAK,UAAWtN,EACpB,aAAcA,GAAK,eAAgBA,EAAImG,KAAK07O,oBAAsBv0O,GAAKnH,KAAK27O,eAC9E,CACA,OAAOp/O,EAAE7F,UAAUy4C,IAAIv4C,KAAKoJ,KAAMzI,EACpC,EACAqF,EAAElG,UAAUumF,QAAU,WACpBm/E,EAAEp8J,KAAKm3D,QAAS,cAChBilG,EAAEp8J,KAAKm3D,QAAS,cAChBn3D,KAAK8zB,MAAQ9zB,KAAK8zB,KAAKmpD,UACvBj9E,KAAKu/C,MAAQv/C,KAAKu/C,IAAMv/C,KAAKu/C,IAAI09B,WACjC1gF,EAAE7F,UAAUumF,QAAQrmF,KAAKoJ,KAC3B,EACApD,EAAElG,UAAU47O,WAAa,SAAU/6O,EAAGsC,GACpCtC,IAAMyI,KAAKg7O,UAAW,GACtBh7O,KAAKm9M,KAAO5lN,EACZyI,KAAKq7O,QAAQxhP,EAAGtC,EAClB,EACAqF,EAAElG,UAAUshP,QAAU,WACpBh4O,KAAKq0O,SAAW,IAAMr0O,KAAK66O,KAAK9+L,OAAS,IAAM/7C,KAAK66O,KAAK38L,QAAUl+C,KAAK27O,gBACxE,IAAIpkP,EAAIyI,KAAKoiD,QACXvoD,EAAI4wO,EAAEzqO,KAAK8iF,YAAavrF,GAC1B,MAAO,CACLwkD,MAAO/7C,KAAK+7C,MACZmC,OAAQl+C,KAAKk+C,OACbzwC,EAAGzN,KAAK66O,KAAKptO,EAAI5T,EACjB6N,EAAG1H,KAAK66O,KAAKnzO,EAAInQ,EAErB,EACAqF,EAAElG,UAAU4kP,eAAiB,WAC3B,OAAOt7O,KAAK2oG,SAAS0kI,YAAcrtO,KAAKu/C,IAAMv/C,KAAKu/C,IAAI82L,cAAgB,EAAI,GAAKr2O,KAAK,gBAAkBqQ,SAASrQ,KAAK,gBAAiB,IAAM,GAAK,EAAI,CACvJ,EACApD,EAAElG,UAAUklP,aAAe,SAAUrkP,GACnCyI,KAAK67O,cAAgBtkP,CACvB,EACAqF,EAAElG,UAAUg+O,MAAQ,WAClB,IAAIn9O,EAAIyI,KAAKq0O,QACbr0O,KAAK8zB,KAAKxhB,IAAItS,MACdA,KAAK2+B,KAAK,CACR7K,KAAMqwH,EAAE5sJ,GAAKA,EAAI,GACjBkW,EAAGzN,KAAKyN,EACR/F,EAAG1H,KAAK0H,IAEV1H,KAAKu/C,KAAO4kG,EAAEnkJ,KAAK06O,UAAY16O,KAAK2+B,KAAK,CACvC+7M,QAAS16O,KAAK06O,QACdC,QAAS36O,KAAK26O,SAElB,EACA/9O,EAAElG,UAAU8jP,cAAgB,SAAUjjP,EAAGsC,GACvC0wO,EAAEhzO,GAAKA,IAAMyI,KAAKnG,KAAOmG,KAAKnG,GAAKtC,EAAGyI,KAAK07O,qBAAuB17O,KAAKnG,QAAK,CAC9E,EACA+C,EAAElG,UAAUolP,QAAU,SAAUvkP,EAAGsC,GACjCmG,KAAKq7O,QAAQxhP,EAAGtC,EAClB,EACAqF,EAAElG,UAAU8qE,OAAS,SAAUjqE,GAE7B,OADAA,IAAMyI,KAAK2oG,SAAS0kI,aAAertO,KAAK27O,gBAAiB37O,KAAKu/C,KAAOv/C,KAAKu/C,IAAIiiB,OAAOjqE,IAC9EyI,IACT,EACApD,EAAElG,UAAU67O,aAAe,SAAUh7O,EAAGsC,GACtCmG,KAAK81O,OAASv+O,EACdyI,KAAKq7O,QAAQxhP,EAAGtC,EAClB,EACAqF,EAAElG,UAAU,sBAAwB,SAAUa,EAAGsC,GAC/CtC,IAAMyI,KAAKg7O,UAAW,GACtBh7O,KAAK,gBAAkBzI,EACvByI,KAAKq7O,QAAQxhP,EAAGtC,EAClB,EACAqF,EAAElG,UAAU,oBAAsB,SAAUa,GAC1CyI,KAAK0zI,UAAYn8I,CACnB,EACAqF,EAAElG,UAAUmiP,WAAa,SAAUthP,GACjC,qBAAuBA,GAAKyI,KAAK8zB,KAAK6K,KAAK,CACzC7K,KAAMv8B,IAERyI,KAAK07O,mBACP,EACA9+O,EAAElG,UAAUilP,cAAgB,WAC1B,IAAIpkP,EAAIyI,KAAK8zB,KAAKqjC,QAAQloB,MACxBp1C,EAAI,CAAC,EACL0C,EAAIyD,KAAKoiD,QACTkkB,EAAItmE,KAAK66O,KAAOtQ,EAAEvqO,KAAK+7O,eAAiBxR,EAAEvqO,KAAK67O,iBAAmB77O,KAAK0zI,YAAcyQ,EAAEnkJ,KAAK8zB,KAAKugN,SAAWz3O,EAAEk+O,UAAY96O,KAAK8zB,KAAKkkN,UACtIh4O,KAAK+7C,MAAQ/7C,KAAKg8O,iBAClBh8O,KAAKk+C,QAAUl+C,KAAK67O,eAAiBv1K,EAAEpoB,QAAU,GAAK,EAAI3hD,EAC1DhF,EAAIyI,KAAK2oG,SAASszI,YAAY1kP,GAAKA,EAAE4xI,SAAUnpI,KAAK8zB,MACpD9zB,KAAK+6O,eAAiBx+O,EAAI2H,KAAKqL,KAAKvP,KAAK8zB,KAAKooN,kBAAoB3kP,GAAGiF,EAAG8pE,EAAEpoB,QAAUqvI,KACpFvtL,KAAK67O,gBAAkB77O,KAAK+6O,iBAAmB/6O,KAAK67O,cAAgBtkP,EAAE4P,GAAK,GAC3EnH,KAAKg7O,WAAah7O,KAAKu/C,OAAQhjD,EAAIyD,KAAKu/C,IAAMv/C,KAAK46O,UAAY56O,KAAK2oG,SAASuiH,OAAOlrN,KAAK46O,WAAa56O,KAAK2oG,SAAS51C,QAAU9K,UAAU,WAAajoD,KAAKo+B,UAAY,GAAK,yBAA2Bp+B,KAAKo+B,UAAY,eAAiBp+B,KAAKo+B,UAAY,OAAS,KAAM7hC,EAAE+V,IAAItS,OAAQzD,EAAIyD,KAAKs7O,iBAAkBzhP,EAAE4T,EAAIlR,EAAG1C,EAAE6N,GAAK1H,KAAKskK,UAAYtkK,KAAK+6O,eAAiB,GAAKx+O,EAAG1C,EAAEkiD,MAAQ73C,KAAK+c,MAAMjhB,KAAK+7C,OAAQliD,EAAEqkD,OAASh6C,KAAK+c,MAAMjhB,KAAKk+C,QAASl+C,KAAKu/C,IAAI5gB,KAAKj3B,EAAE7N,EAAGmG,KAAKi7O,eAAgBj7O,KAAKi7O,aAAe,CAAC,EACrf,EACAr+O,EAAElG,UAAUglP,kBAAoB,WAC9B,IAAIn/O,EAAIyD,KAAK8zB,KACb9zB,KAAK27O,gBACL,IAAI9hP,EAAImG,KAAKskK,SAAW,EAAItkK,KAAK+6O,eAC/B5zO,EAAIsjO,EAAEzqO,KAAK8iF,YAAa9iF,KAAKoiD,SAC/B+hG,EAAEnkJ,KAAK+7O,eAAiB/7O,KAAK66O,OAAS,WAAa76O,KAAK0zI,WAAa,UAAY1zI,KAAK0zI,aAAevsI,GAAK,CACxG2pM,OAAQ,GACR9zJ,MAAO,GACPh9C,KAAK0zI,YAAc1zI,KAAK+7O,aAAe/7O,KAAK66O,KAAK9+L,QAC/C50C,IAAM5K,EAAEkR,GAAK5T,IAAM0C,EAAEmL,IAAGnL,EAAEoiC,KAAK,IAAKx3B,GAAI5K,EAAE4/O,qBAAuBn8O,KAAK66O,KAAOt+O,EAAEy7O,SAAQ,IAAM,qBAAuBn+O,GAAK0C,EAAEoiC,KAAK,IAAK9kC,IACzI0C,EAAEkR,EAAItG,EACN5K,EAAEmL,EAAI7N,CACR,EACA+C,EAAElG,UAAU0lP,YAAc,SAAU7/O,GAClCyD,KAAK+7O,aAAexR,EAAEhuO,GAAKA,OAAI,CACjC,EACAK,EAAElG,UAAUslP,eAAiB,WAC3B,IAAIz/O,EAAIyD,KAAKoiD,QACXvoD,EAAI4wO,EAAEzqO,KAAK8iF,YAAavmF,GAE1B,OADAA,EAAIkuO,EAAEzqO,KAAK+iF,aAAcxmF,IACjByD,KAAK+7O,cAAgB/7O,KAAK66O,KAAK9+L,OAAS,GAAKliD,EAAI0C,CAC3D,EACAK,EAAElG,UAAUk/O,QAAU,SAAUr5O,GAC9ByD,KAAKyN,EAAIlR,EACTyD,KAAKk7O,cAAgB3+O,GAAKyD,KAAKk7O,YAAcl7O,KAAKg8O,iBAAkBh8O,KAAK,mBAAoB,GAC7FA,KAAKm7O,SAAWj3O,KAAK+c,MAAM1kB,GAC3ByD,KAAK2+B,KAAK,aAAc3+B,KAAKm7O,SAC/B,EACAv+O,EAAElG,UAAUi/O,QAAU,SAAUp5O,GAC9ByD,KAAKw7O,SAAWx7O,KAAK0H,EAAIxD,KAAK+c,MAAM1kB,GACpCyD,KAAK2+B,KAAK,aAAc3+B,KAAKw7O,SAC/B,EACA5+O,EAAEk+O,UAAY,CACZ/+L,MAAO,EACPmC,OAAQ,EACRzwC,EAAG,EACH/F,EAAG,GAEL9K,EAAE6+O,UAAY,8HAA8HxtO,MAAM,KAC3IrR,CACT,CAzLO,CAyLLL,EACJ,IACAiL,EAAEjL,EAAG,+BAAgC,CAACA,EAAE,uBAAuB,SAAUA,GACvE,SAASqrC,EAAErrC,EAAG6/J,EAAGrhK,EAAG6B,EAAGrF,GACrB,IAAIsC,EAAI,GACR,GAAItC,EAAG,CACL,IAAI4P,EAAI5P,EAAE4oC,OAAS,EACjBmmC,EAAIkkK,EAAEjzO,EAAE6C,EAAGW,GACbA,EAAIyvO,EAAEjzO,EAAE6C,EAAGwC,GAAK7B,GAChB,IAAIuM,GAAK/P,EAAEm+B,KAAO,GAAK,KACvB94B,EAAIrF,EAAE8kP,OACN,IAAI9jP,EAAIiyO,EAAEjzO,EAAEo5D,KAAM,KAAOzsD,KAAKC,KAAK5M,EAAEm+B,KAAO,GAAKvuB,EAAI,EAAIjD,KAAKi/C,KAC5DinL,EAAIlmO,KAAKg/C,IAAI/7C,GACb3M,EAAI0J,KAAKy+J,IAAIx7J,GACbkjO,EAAInmO,KAAKg/C,IAAI57C,GACbwjO,EAAI5mO,KAAKy+J,IAAIr7J,GACfH,EAAIqjO,EAAEjzO,EAAE+kP,QAAS,KAAOh1O,EAAIH,EAAIjD,KAAKi/C,GAAK,EAAI,GAC9CtpD,EAAE/C,KAAK,CAAC,IAAKyF,EAAI+pE,EAAI8jK,EAAGhuE,EAAIrhK,EAAIP,GAAI,CAAC,IAAK8rE,EAAGvrE,EAAG,EAAGoM,EAAGqjO,EAAEjzO,EAAE43M,UAAW,GAAI5yM,EAAI+pE,EAAI+jK,EAAGjuE,EAAIrhK,EAAI+vO,IAC5FpjO,EAAE9K,IAAM/C,EAAE/C,KAAKyB,EAAI,CAAC,IAAKgE,EAAIK,EAAIytO,EAAGjuE,EAAIx/J,EAAIkuO,GAAK,CAAC,IAAKvuO,EAAIK,EAAIytO,EAAGjuE,EAAIx/J,EAAIkuO,GAAI,CAAC,IAAKluO,EAAGA,EAAG,EAAGuK,EAAGO,EAAEnQ,EAAE43M,WAAa,EAAI53M,EAAE43M,UAAY,EAAG5yM,EAAIK,EAAIwtO,EAAGhuE,EAAIx/J,EAAIpC,IACzJjC,GAAKsB,EAAE/C,KAAK,CAAC,KACf,CACA,OAAO+C,CACT,CACA,SAASkvO,EAAExsO,EAAG6/J,EAAGrhK,EAAG6B,EAAGrF,GACrB,OAAOA,GAAKA,EAAE6C,EAAI+pJ,EAAE5nJ,EAAG6/J,EAAGrhK,EAAG6B,EAAGrF,GAAK,CAAC,CAAC,IAAKgF,EAAG6/J,GAAI,CAAC,IAAK7/J,EAAIxB,EAAGqhK,GAAI,CAAC,IAAK7/J,EAAIxB,EAAGqhK,EAAIx/J,GAAI,CAAC,IAAKL,EAAG6/J,EAAIx/J,GAAI,CAAC,KAC7G,CACA,SAASunJ,EAAE5nJ,EAAG6/J,EAAGrhK,EAAG6B,EAAGrF,GAErB,MAAO,CAAC,CAAC,IAAKgF,GADdhF,EAAIA,GAAKA,EAAE6C,GAAK,GACKgiK,GAAI,CAAC,IAAK7/J,EAAIxB,EAAIxD,EAAG6kK,GAAI,CAAC,IAAK7/J,EAAIxB,EAAGqhK,EAAG7/J,EAAIxB,EAAGqhK,EAAG7/J,EAAIxB,EAAGqhK,EAAI7kK,GAAI,CAAC,IAAKgF,EAAIxB,EAAGqhK,EAAIx/J,EAAIrF,GAAI,CAAC,IAAKgF,EAAIxB,EAAGqhK,EAAIx/J,EAAGL,EAAIxB,EAAGqhK,EAAIx/J,EAAGL,EAAIxB,EAAIxD,EAAG6kK,EAAIx/J,GAAI,CAAC,IAAKL,EAAIhF,EAAG6kK,EAAIx/J,GAAI,CAAC,IAAKL,EAAG6/J,EAAIx/J,EAAGL,EAAG6/J,EAAIx/J,EAAGL,EAAG6/J,EAAIx/J,EAAIrF,GAAI,CAAC,IAAKgF,EAAG6/J,EAAI7kK,GAAI,CAAC,IAAKgF,EAAG6/J,EAAG7/J,EAAG6/J,EAAG7/J,EAAIhF,EAAG6kK,GAC/Q,CACA,IAAI10J,EAAInL,EAAEmvO,QACRnB,EAAIhuO,EAAEO,SACN0tO,EAAIjuO,EAAEkwO,KACR,MAAO,CACL8P,IAAK30M,EACL40M,QAAS,SAAUjgP,EAAG6/J,EAAGrhK,EAAG6B,EAAGrF,GAC7B,IAAIsC,EAAIqK,KAAKqL,IAAIhY,GAAKA,EAAE6C,GAAK,EAAGW,EAAG6B,GACjCuK,EAAItN,EAAI,EACRysE,EAAI/uE,GAAKA,EAAEmjP,QACbnjP,EAAIA,GAAKA,EAAEojP,SAAW,EACtB,IAAIrzO,EAAI68I,EAAE5nJ,EAAG6/J,EAAGrhK,EAAG6B,EAAG,CACpBxC,EAAGP,IAEL,OAAK0wO,EAAEjkK,IACP/pE,EAAI+pE,GAAKvrE,EAAIxD,EAAI6kK,EAAIj1J,GAAK5P,EAAI6kK,EAAIx/J,EAAIuK,EAAIG,EAAEquB,OAAO,EAAG,EAAG,CAAC,IAAKp5B,EAAIxB,EAAGxD,EAAI,GAAI,CAAC,IAAKgF,EAAIxB,EAAI,EAAGxD,GAAI,CAAC,IAAKgF,EAAIxB,EAAGxD,EAAI,GAAI,CAAC,IAAKgF,EAAIxB,EAAGqhK,EAAIx/J,EAAI/C,IAAMyN,EAAEquB,OAAO,EAAG,EAAG,CAAC,IAAKp5B,EAAIxB,EAAG6B,EAAI,GAAI,CAAC,IAAK0pE,EAAG/uE,GAAI,CAAC,IAAKgF,EAAIxB,EAAG6B,EAAI,GAAI,CAAC,IAAKL,EAAIxB,EAAGqhK,EAAIx/J,EAAI/C,IAAM,GAAK0C,EAAI+pE,EAAI/uE,EAAI6kK,EAAIj1J,GAAK5P,EAAI6kK,EAAIx/J,EAAIuK,EAAIG,EAAEquB,OAAO,EAAG,EAAG,CAAC,IAAKp5B,EAAGhF,EAAI,GAAI,CAAC,IAAKgF,EAAI,EAAGhF,GAAI,CAAC,IAAKgF,EAAGhF,EAAI,GAAI,CAAC,IAAKgF,EAAG6/J,EAAIviK,IAAMyN,EAAEquB,OAAO,EAAG,EAAG,CAAC,IAAKp5B,EAAGK,EAAI,GAAI,CAAC,IAAK0pE,EAAG/uE,GAAI,CAAC,IAAKgF,EAAGK,EAAI,GAAI,CAAC,IAAKL,EAAG6/J,EAAIviK,IAAMtC,GAAKA,EAAIqF,GAAK0pE,EAAI/pE,EAAI4K,GAAKm/D,EAAI/pE,EAAIxB,EAAIoM,EAAIG,EAAEquB,OAAO,EAAG,EAAG,CAAC,IAAK2wC,EAAI,EAAG81F,EAAIx/J,GAAI,CAAC,IAAK0pE,EAAG81F,EAAIx/J,EAAI,GAAI,CAAC,IAAK0pE,EAAI,EAAG81F,EAAIx/J,GAAI,CAAC,IAAKL,EAAI1C,EAAGuiK,EAAIx/J,IAAMrF,GAAK,EAAIA,GAAK+uE,EAAI/pE,EAAI4K,GAAKm/D,EAAI/pE,EAAIxB,EAAIoM,GAAKG,EAAEquB,OAAO,EAAG,EAAG,CAAC,IAAK2wC,EAAI,EAAG81F,GAAI,CAAC,IAAK91F,EAAG81F,EAAI,GAAI,CAAC,IAAK91F,EAAI,EAAG81F,GAAI,CAAC,IAAKrhK,EAAIlB,EAAGuiK,IACxsB90J,GAFWA,CAGpB,EACAm1O,OAAQ,SAAUlgP,EAAG6/J,EAAGrhK,EAAG6B,GACzB,OAAOgrC,EAAErrC,EAAIxB,EAAI,EAAGqhK,EAAIx/J,EAAI,EAAG7B,EAAI,EAAG6B,EAAI,EAAG,CAC3CujC,MAAO,GAAKj8B,KAAKi/C,GACjBztB,IAAK,IAAMxxB,KAAKi/C,GAChBwN,MAAM,GAEV,EACA+rL,QAAS,SAAUngP,EAAG6/J,EAAGrhK,EAAG6B,GAC1B,MAAO,CAAC,CAAC,IAAKL,EAAIxB,EAAI,EAAGqhK,GAAI,CAAC,IAAK7/J,EAAIxB,EAAGqhK,EAAIx/J,EAAI,GAAI,CAAC,IAAKL,EAAIxB,EAAI,EAAGqhK,EAAIx/J,GAAI,CAAC,IAAKL,EAAG6/J,EAAIx/J,EAAI,GAAI,CAAC,KACvG,EACAm2D,KAAMg2K,EACN4T,YAAax4F,EACby4F,OAAQ7T,EACR8T,SAAU,SAAUtgP,EAAG6/J,EAAGrhK,EAAG6B,GAC3B,MAAO,CAAC,CAAC,IAAKL,EAAIxB,EAAI,EAAGqhK,GAAI,CAAC,IAAK7/J,EAAIxB,EAAGqhK,EAAIx/J,GAAI,CAAC,IAAKL,EAAG6/J,EAAIx/J,GAAI,CAAC,KACtE,EACA,gBAAiB,SAAUL,EAAG6/J,EAAGrhK,EAAG6B,GAClC,MAAO,CAAC,CAAC,IAAKL,EAAG6/J,GAAI,CAAC,IAAK7/J,EAAIxB,EAAGqhK,GAAI,CAAC,IAAK7/J,EAAIxB,EAAI,EAAGqhK,EAAIx/J,GAAI,CAAC,KAClE,EAEJ,IACA4K,EAAEjL,EAAG,mCAAoC,CAACA,EAAE,6BAA8BA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GACvI,IAAInhM,EAAIx+B,EAAEyqB,IACRnsB,EAAI0B,EAAE4/N,OACNuB,EAAInhO,EAAE4pD,IACNw3K,EAAIzB,EAAEpqM,KACN8rM,EAAI1B,EAAElkN,SACNu3I,EAAI2sE,EAAEuD,WACNvxO,EAAIguO,EAAE0D,KACR,OAAO,WACL,SAAS7vO,EAAEL,GACT,IAAI1C,EAAI0C,EAAEkjD,OACVz/C,KAAK2oG,SAAWpsG,EAAEosG,SAClB3oG,KAAK88O,WAAavgP,EAClByD,KAAK+7C,MAAQx/C,EAAEy6O,UACfh3O,KAAK+8O,eAAiBljP,GAAKA,EAAEsnD,WAC7BnhD,KAAKi3O,YAAcp9O,GAAKA,EAAEo9O,YAC1Bj3O,KAAKg9O,YAAcnjP,GAAK,aAAeA,EAAE62O,cACzC1wO,KAAKi9O,UAAYpjP,GAAK,WAAaA,EAAE43O,YACrCzxO,KAAKmpI,SAAWtvI,GAAKA,EAAEsvI,QACzB,CAwIA,OAvIAvsI,EAAElG,UAAUwmP,SAAW,WACrB,IAAI3lP,EAAIyI,KAAK88O,WACXjjP,EAAItC,EAAE4/D,QACNhwD,EAAI5P,EAAEoxG,SACNriC,EAAIvrE,EAAExD,EAAE88O,QAAS,IAAIj4O,WACrBQ,GAAK,IAAM0pE,EAAEx5D,QAAQ,KACrBvU,EAAIsB,EAAEyhC,WACRn0B,EAAInH,KAAK+7C,QAAUxkD,EAAEg9O,OAASptO,EAAEo4C,IAChC,IACE/kD,EAAI,CAAC8rE,EAAGtmE,KAAKg9O,SAAUh9O,KAAKi9O,OAAQj9O,KAAK+8O,eAAgB/8O,KAAKi3O,YAAaj3O,KAAKmpI,SAAUnpI,KAAK+7C,OAAOh6C,OACxG,GAAIvH,IAAMjD,EAAE4lP,UAAW,CAGrB,IAFA5lP,EAAE4lP,UAAY3iP,SACPjD,EAAE6lP,YACJ5iP,EAAIjC,EAAE/B,OAAQgE,KAAMX,EAAEo6B,YAAY17B,EAAEiC,IACzCoC,GAAKoD,KAAKg9O,UAAYh9O,KAAK+7C,QAAU,IAAMuqB,EAAEx5D,QAAQ,QAAU9M,KAAKi9O,QAN9D,WAM0Ep3O,KAAKygE,IAAM,KAAOA,IAAMn/D,GAAKA,EAAEzN,YAAYG,GAAIysE,EAAI,IAAI/pE,EAAE+pE,GAAItmE,KAAKq9O,WAAW/2K,EAAEj0B,OAAQi0B,EAAEitK,SAASh8O,EAAE4/D,SAAUn3D,KAAKs9O,YAAat9O,KAAKg9O,WAAa,KAAOnjP,EAAE28B,aAAe,IAAI1pB,QAAQ,WAAavV,EAAEonC,KAAK,QAAS3+B,KAAKu9O,iBAAiBhmP,EAAE88O,SAAW,GAAI,CAAC,OAAQ,UAAWltO,GAAKA,EAAE8sB,YAAYp6B,IAAMA,EAAEH,YAAYkuC,EAAE2K,eAAevyC,KAAKu9O,iBAAiBj3K,KAC5amkK,EAAEzqO,KAAKi3O,cAAgB1/O,EAAEi+O,kBAAoBj+O,EAAEi+O,iBAAiBx1O,KAAKi3O,YACvE,CACF,EACAr6O,EAAElG,UAAU4mP,UAAY,WACtB,IAISh3K,EAJL/pE,EAAIyD,KACNnG,EAAImG,KAAK88O,WACT31O,EAAIqjO,EAAE3wO,EAAEs9D,QAAS,KAEnB,IADAt9D,EAAEqiP,sBAAmB,GACT51K,EAAIzsE,EAAEs9D,QAAQ72B,aAAiB,gBAAgBz6B,KAAKygE,EAAE9vC,aAAe,MAAM38B,EAAEs9D,QAAQljC,YAAYqyC,GAC7G,GAAGhuD,QAAQ1hB,KAAKiD,EAAEs9D,QAAQ76B,iBAAiB,wBAAwB,SAAU/kC,EAAGgB,GAC9EhB,EAAEsqC,aAAetqC,EAAEo4H,kBAAoB,IAAMp3H,GAAK,IAAMhB,EAAEo4H,gBAAgBt8F,WAAax5B,EAAEqiP,iBAAmBriP,EAAE8uG,SAASszI,iBAAY,EAAQ1kP,EAAEo4H,kBAAmB66G,EAAEjzO,EAAG,CACnK80L,GAAI9vL,EAAEihP,cAAcjmP,EAAEsqC,aACtBp0B,EAAGtG,IAEP,IACA,IAAIvK,EAAIoD,KAAK+7C,OAAS,EACtB,GAAIn/C,EAAG,CACL,IAAIrE,EAAI,SAAUhB,EAAGgB,GACjB,IAAI+tE,EAAI/uE,EAAEi/B,aAAe,GACvBp8B,EAAIksE,EAAElhE,QAAQ,YAAa,QAAQ6I,MAAM,KACzC3W,GAAKiF,EAAE0gP,SAAW,EAAI7iP,EAAE5D,QAAU,EAAIqD,EAAEs9D,QAAQ77B,WAAW9kC,QAC3DgG,EAAID,EAAEihP,cAAcjlP,GACpBguE,EAAI,EACJzsE,EAAID,EAAEujP,YACR,GAAI7gP,EAAEygP,SAAU12K,GAAK/pE,EAAEqpC,SAASruC,EAAG+uE,OAAG,EAAQ,EAAGpiE,KAAKI,IAAI,EAAG1H,EAAIyT,SAAS9T,EAAE4sI,UAAY,GAAI,MAAM,SAAU3sI,EAAG1C,GAC7G,OAAO0C,EAAE2tH,UAAU,EAAGrwH,GAAK,QAC7B,SAAQ,GAAIxC,EAAG,CAEb,IADAgvE,EAAI,GACChvE,EAAI,GAAIiB,EAAE+nC,YAAc/nC,EAAE+nC,aAAe/oC,GAAID,EAAER,KAAKyB,EAAE+nC,YAAa/nC,EAAE07B,YAAY17B,EAAE+nC,YACxF,KAAOlmC,EAAE5D,QAAS4D,EAAE5D,SAAW+F,EAAE0gP,QAAU,EAAI12K,IAAMD,EAAExvE,KAAKS,EAAEi/B,aAAe,IAAKj/B,EAAEi/B,YAAcp8B,EAAE2H,KAAK,KAAKqD,QAAQ,MAAO,MAAO7I,EAAEqpC,SAASruC,OAAG,EAAQ6C,EAAG,IAAMmsE,GAAIzsE,GAAS,EAAG8C,GAAG,SAAUJ,EAAG1C,GACjM,OAAOM,EAAEoB,MAAM,EAAG1B,GAAGiI,KAAK,KAAKqD,QAAQ,MAAO,IAChD,IAAItL,EAAID,EAAEujP,YAAa72K,IACvBjvE,EAAEghB,SAAQ,SAAU9b,GAClBjE,EAAEmiD,aAAal+C,EAAGjF,EACpB,IACA+uE,EAAEhuD,SAAQ,SAAUxe,GAClBvB,EAAEmiD,aAAa9S,EAAE2K,eAAez4C,GAAIvC,IACpCuC,EAAI8tC,EAAEmiF,gBAAgBriH,EAAG,UACvB8uB,YAAc,SAChBg0M,EAAE1wO,EAAG,CACHuyL,GAAI7vL,EACJiR,EAAGtG,IAEL5O,EAAEmiD,aAAa5gD,EAAGvC,EACpB,GACF,CACF,EACA6yO,EAAI,SAAU7tO,GACZ,GAAGf,MAAM5E,KAAK2F,EAAE++B,YAAYhjB,SAAQ,SAAU/gB,GAC5CA,EAAE87B,WAAak3M,EAAEpwK,KAAKq+K,UAAYjgP,EAAEhB,EAAGgF,KAAO,IAAMhF,EAAE6mC,UAAUq/M,QAAQ3wO,QAAQ,mBAAqBjT,EAAEujP,YAAc,GAAIhT,EAAE7yO,GAC7H,GACF,EACF6yO,EAAEvwO,EAAEs9D,QACN,CACF,EACAv6D,EAAElG,UAAU8mP,cAAgB,SAAUjhP,GACpC,IAAI1C,EAGJ,OAFA0C,EAAIA,EAAE82B,WAAak3M,EAAEpwK,KAAKq+K,UAAYj8O,EAAE2jE,cAAgB3jE,EACxDyD,KAAK2oG,SAAS0kI,aAAexzO,EAAI0C,GAAK,WAAWsJ,KAAKtJ,EAAE0yC,MAAMk6F,UAAY5sI,EAAE0yC,MAAMk6F,SAAWnpI,KAAKmpI,UAAYnpI,KAAK2oG,SAAS15D,MAAMk6F,UAAY,IACvInpI,KAAK+8O,eAAiB1sO,SAASrQ,KAAK+8O,eAAe3gP,WAAY,IAAM4D,KAAK2oG,SAASszI,YAAYpiP,EAAG0C,GAAKyD,KAAK88O,WAAW3lL,SAAShwD,CACzI,EACAvK,EAAElG,UAAU2mP,WAAa,SAAU9gP,GACjC,IAAI1C,EAAImG,KACNzI,EAAI,SAAU4P,EAAGvK,GACf,IAAIrE,EAAI4O,EAAEmyB,WACV/gC,OAAI,IAAWA,EAAI,CAAC,EAAIA,EACxB,IAAI+tE,EAAIn/D,EAAEs/B,SACRjsC,EAAI2M,EAAEkwD,QACN/vD,EAAIzN,EAAE8uG,SAAS0kI,WACb,MAAQ7yO,GAAK,WAAaA,EAAG8M,EAAI/O,EAAS,MAAI,oBAAsBA,EAAE02C,MAAQ,qBAAuB12C,EAAE02C,OAAS,IAAa,MAAQz0C,GAAK,OAASA,IAAG8M,EAAI/O,EAAS,MAAI,wBAA0BA,EAAE02C,MAAQ,sBAAwB12C,EAAE02C,OAAS,KAClPw7L,EAAElyO,EAAE02C,SAAW12C,EAAE02C,MAAQ12C,EAAE02C,MAAM7pC,QAAQ,qBAAsB,aAC/D,OAAS5K,GAAKjC,EAAS,MAAI,gBAAiB4O,EAAEqvB,YAAc,UAAW55B,EAAIL,EAAEK,EAAI,KAAOA,EAAE45B,cAAgB55B,EAAE45B,YAAc55B,EAAE45B,YAAYpxB,QAAQ,QAAS,MAAQ,MAAQ5K,GAAK8rE,GAAKA,EAAE3qE,MAAK,SAAU9B,GAClM,MAAO,UAAYA,EAAEw9D,OACvB,MAAOlwD,EAAEs/B,SAAW,CAAC,CACnBA,SAAU6/B,EACVjP,QAAS,WAEX,UAAY78D,GAAK,MAAQA,IAAM2M,EAAEkwD,QAAU,SAC3ClwD,EAAEmyB,WAAa/gC,EACf+tE,GAAKA,EAAE9gD,QAAO,SAAU3rB,GACtB,MAAO,UAAYA,EAAEw9D,OACvB,IAAG/+C,QAAQ/gB,EACb,EACFgF,EAAE+b,QAAQ/gB,EACZ,EACAqF,EAAElG,UAAUkvC,SAAW,SAAUrpC,EAAG1C,EAAGsN,EAAGm/D,EAAG1pE,EAAGrE,GAC9C,IAOEguE,EAPEhvE,EAAIyI,KAAK88O,WACXtiP,EAAIjD,EAAEoxG,SACNrhG,EAAI/P,EAAE0+O,SACNl7O,EAAI,GACJX,EAAI+M,EAAI,EAAI,EACZ7P,GAAKuC,GAAKsN,GAAK,IAAI3Q,OACnBgG,EAAIlF,EAEJwC,EAAI,SAAU0C,EAAG1C,GACfA,EAAIA,GAAK0C,EACT,IAAI+pE,EAAIhqE,EAAEy3B,WACV,GAAIuyC,GAAK,qBAAuBxrE,EAAEjB,GAAI,GAAIysE,EAAEm3K,mBAAoB,IAC9D3iP,EAAEjB,GAAKwsE,EAAIC,EAAEm3K,mBAAmB,EAAGv2O,EAAIrN,EAAI,EAAIA,EACjD,CAAE,MAAOmsE,GAET,MAAOzrE,EAAEmjP,eAAiBphP,EAAEi6B,YAAcj+B,EAAEsB,GAAKsN,EAAG3K,GAAIzB,EAAEjB,GAAKwsE,EAAI9rE,EAAEmjP,aAAapmP,EAAGgF,IACrF,OAAOxB,EAAEjB,EACX,EACFvC,EAAE0+O,SAAW,EACb,IAAIr8O,EAAIE,EAAEyC,EAAEi6B,YAAYhgC,QACxB,GAAI8vE,EAAI1sE,EAAIgD,EAAG,CACb,KAAOxC,GAAK9C,GAAIkF,EAAI0H,KAAKuF,MAAMrP,EAAI9C,GAAK,GAAI6P,IAAMo/D,EAAIhuE,EAAE4O,EAAG3K,IAAK5C,EAAIE,EAAE0C,EAAG+pE,GAAKA,EAAE/vE,OAAS,GAAI4D,IAAM9C,EAAI8C,EAAI9C,EAAI,EAAIsC,EAAIgD,EAAItF,EAAIkF,EAAI,EAAIpC,EAAIoC,EAC3I,IAAMlF,EAAIiF,EAAEi6B,YAAc,GAAK38B,GAAKvC,IAAMuC,EAAErD,OAAS,IAAM+F,EAAEi6B,YAAc+vC,GAAKhuE,EAAEsB,GAAKsN,EAAG3K,GAC5F,CACA2K,GAAKA,EAAEwuB,OAAO,EAAGn5B,GACjBjF,EAAE6lP,YAAcxjP,EAChBrC,EAAE0+O,SAAW3uO,CACf,EACA1K,EAAElG,UAAU6mP,iBAAmB,SAAUhhP,EAAG1C,GAI1C,OAHAuiK,EAAEp8J,KAAK2oG,SAASi1I,SAAS,SAAUrmP,EAAG+uE,GACpCzsE,IAAM,IAAMA,EAAEiT,QAAQvV,KAAOgF,EAAIA,EAAEH,WAAWgJ,QAAQ,IAAI3C,OAAOlL,EAAG,KAAM+uE,GAC5E,IACO/pE,CACT,EACOK,CACT,CApJO,EAqJT,IACA4K,EAAEjL,EAAG,mCAAoC,CAACA,EAAE,6BAA8BA,EAAE,uBAAwBA,EAAE,mBAAoBA,EAAE,qCAAsCA,EAAE,mCAAoCA,EAAE,iCAAkCA,EAAE,gCAAiCA,EAAE,oCAAqCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,EAAGC,EAAGC,EAAGruE,GAC/W,IAyBE4yE,EAzBEj0O,EAAIguO,EAAEgB,OACRntO,EAAImsO,EAAEU,QACNlyO,EAAIwxO,EAAEl1M,IACNh6B,EAAIkvO,EAAEr6B,UACNvnM,EAAI4hO,EAAEK,KACN9iK,EAAIyiK,EAAES,SACNliO,EAAIyhO,EAAE3yM,KACN79B,EAAIwwO,EAAEC,OACNoB,EAAIrB,EAAEmB,YACN1vO,EAAIuuO,EAAE/1K,IACNq3K,EAAIjuE,EAAE6uE,SACNH,EAAI1uE,EAAEz9H,KACNvkC,EAAIgiK,EAAEnkK,cACNX,EAAI8kK,EAAEjtH,IACN3yC,EAAI4/J,EAAEsvE,QACNnlK,EAAI61F,EAAEuvE,wBACN7xO,EAAIsiK,EAAE9+J,OACN1D,EAAIwiK,EAAEngK,QACNkgN,EAAI//C,EAAEt/J,SACN2Q,EAAI2uJ,EAAE//J,SACN2jN,EAAI5jD,EAAEv3I,SACNohD,EAAIm2F,EAAEpnI,MACN4S,EAAIw0H,EAAEqwE,KACN36E,EAAIsK,EAAEswE,KACNmR,EAAIzhF,EAAE6wE,UAidR,OA/cAlE,EAAI,WACF,SAAS9iO,EAAEzJ,EAAG1C,EAAGyC,EAAG1C,EAAG0sE,EAAG3sE,EAAGrC,GAC3ByI,KAAK+7C,MAAQ/7C,KAAKgsD,IAAMhsD,KAAKivC,MAAQjvC,KAAKo3O,MAAQp3O,KAAK89O,SAAW99O,KAAKk+C,OAASl+C,KAAKy2O,UAAYz2O,KAAK6yO,gBAAkB7yO,KAAK62O,KAAO72O,KAAK+9O,WAAa/9O,KAAKi4O,UAAYj4O,KAAK08B,MAAQ18B,KAAKg+O,WAAah+O,KAAKu/C,IAAMv/C,KAAK80O,oBAAiB,EACvO90O,KAAKu0B,KAAK/3B,EAAG1C,EAAGyC,EAAG1C,EAAG0sE,EAAG3sE,EAAGrC,EAC9B,CA0bA,OAzbA0O,EAAEvP,UAAU69B,KAAO,SAAU/3B,EAAG1C,EAAGyC,EAAGgqE,EAAG3sE,EAAGyjB,EAAGpX,GAC7C,IAwBI1N,EAxBA6B,EAAI4F,KAAK/H,cAAc,OAAO0mC,KAAK,CACnC3M,QAAS,MACT,MAAS,oBAEXi7F,EAAI7yH,EAAE+8D,QACRlxD,GAAK7L,EAAE+0C,IAAInvC,KAAKksO,SAAS3lK,IACzB/pE,EAAE9C,YAAYuzH,GACd69G,EAAEtuO,EAAG,MAAO,QACX,IAAMA,EAAE6hC,UAAUvxB,QAAQ,UAAYg+N,EAAE79G,EAAG,QAASjtH,KAAKgpO,QAC1DhpO,KAAKo3O,OAAQ,EACbp3O,KAAKu/C,IAAM0tE,EACXjtH,KAAKg+O,WAAa5jP,EAClB4F,KAAK80O,eAAiB,GACtB90O,KAAKgsD,IAAMhsD,KAAKi+O,kBAChBj+O,KAAK/H,cAAc,QAAQqa,MAAM6kD,QAAQz9D,YAAYnC,EAAEg7C,eAAe,kCACtEvyC,KAAK62O,KAAO72O,KAAK/H,cAAc,QAAQqa,MACvCtS,KAAKk+O,UAAY7gO,EACjBrd,KAAK2yO,UAAY/4O,EACjBoG,KAAKqtO,WAAapnO,EAClBjG,KAAKy2O,UAAY,CAAC,EAClBz2O,KAAK08B,MAAQ,CAAC,EACd18B,KAAKi4O,UAAY,GACjBj4O,KAAK89O,SAAW,EAChB99O,KAAKm+O,QAAQrkP,EAAGyC,GAAG,GAEnB1C,GAAK2C,EAAEwlD,yBAA0BloD,EAAI,WACnCxC,EAAEkF,EAAG,CACH0lD,KAAM,EACNxkB,IAAK,IAEPnlC,EAAIiE,EAAEwlD,wBACN1qD,EAAEkF,EAAG,CACH0lD,KAAMh+C,KAAKuF,KAAKlR,EAAE2pD,MAAQ3pD,EAAE2pD,KAAO,KACnCxkB,IAAKx5B,KAAKuF,KAAKlR,EAAEmlC,KAAOnlC,EAAEmlC,IAAM,MAEpC,KAAQ19B,KAAKo+O,cAAgB/T,EAAE7vO,EAAG,SAAUV,GAC9C,EACAmM,EAAEvP,UAAU6pE,WAAa,SAAU/jE,GACjC,OAAO,IAAID,EAAE,CAACC,IAAI+2O,SAASvzO,KAAK62O,KAAK1/K,QACvC,EACAlxD,EAAEvP,UAAUunP,gBAAkB,WAC5B,IAAKpkP,GAAKysE,IAAM/uE,EAAEykC,qBAAqB,QAAQxlC,OAAQ,CACrD,IAAKgG,EAAEwyO,GAAI,CACT,IAAIl1O,EAAI+jP,IACR/jP,EAAI,IAAIyC,EAAE,CAAC,CACT86D,QAAS,MACT/9B,WAAY,CACVyiB,MAAO,EACPmC,OAAQ,GAEVzX,SAAU,CAAC,CACT4wB,QAAS,OACT5wB,SAAU,CAAC,CACT4wB,QAAS,WACT/9B,WAAY,CACVyC,GAAIjiC,GAEN2sC,SAAU,CAAC,CACT4wB,QAAS,OACT/9B,WAAY,CACVyiB,MAAO,EACPmC,OAAQ,QAIb,CACDmZ,QAAS,OACT/9B,WAAY,CACVyC,GAAI,QACJggB,MAAO,EACPmC,OAAQ,EACR,YAAa,QAAUpkD,EAAI,IAC3BqjN,KAAM,0BAGRo2B,SAASh8O,EAAEy4C,MACf14C,EAAEwC,EAAG,CACHqjD,SAAU,QACVzf,IAAK,EACLwkB,KAAM,EACNX,OAAQ,MAEV,IAAIglB,EAAIhvE,EAAE8mP,iBAAiB,EAAG,GAC9BrP,EAAI,WAAazoK,GAAKA,EAAExqC,IACxBxkC,EAAEy4C,KAAK/b,YAAYn6B,EACrB,CACA,GAAIk1O,EAAG,OAAOx0O,EAAEymC,SAASM,KAAKtzB,MAAM,KAAK,GAAG7I,QAAQ,WAAY,IAAIA,QAAQ,aAAc,QAAQA,QAAQ,KAAM,MAClH,CACA,MAAO,EACT,EACAa,EAAEvP,UAAUw1O,SAAW,SAAU1vO,GAC/B,OAAOwD,KAAKivC,MAAQn1C,EAAE,CACpBwkP,WAAY,uEACZn1G,SAAU,QACT3sI,EACL,EACAyJ,EAAEvP,UAAU6nP,SAAW,SAAU/hP,GAC/BwD,KAAKg+O,WAAW7uM,IAAInvC,KAAKksO,SAAS1vO,GACpC,EACAyJ,EAAEvP,UAAU8nP,SAAW,WACrB,OAAQx+O,KAAKg+O,WAAWhG,UAAUj8L,KACpC,EACA91C,EAAEvP,UAAUumF,QAAU,WACpB,IAAIzgF,EAAIwD,KAAK62O,KAOb,OANA72O,KAAKu/C,IAAM,KACXv/C,KAAKg+O,WAAah+O,KAAKg+O,WAAW/gK,UAClC1W,EAAEvmE,KAAKy2O,WAAa,CAAC,GACrBz2O,KAAKy2O,UAAY,KACjBj6O,IAAMwD,KAAK62O,KAAOr6O,EAAEygF,WACpBj9E,KAAKo+O,eAAiBp+O,KAAKo+O,gBACpBp+O,KAAK80O,eAAiB,IAC/B,EACA7uO,EAAEvP,UAAUuB,cAAgB,SAAUuE,GACpC,IAAI1C,EAAI,IAAIkG,KAAKi4D,QAEjB,OADAn+D,EAAEy6B,KAAKv0B,KAAMxD,GACN1C,CACT,EACAmM,EAAEvP,UAAUkgP,cAAgB,SAAUp6O,EAAG1C,GACvC,MAAO,CACL2kP,GAAIjiP,EAAE,GAAKA,EAAE,GAAK,GAAK1C,EAAE2kP,IAAM,GAAKjiP,EAAE,GACtCkiP,GAAIliP,EAAE,GAAKA,EAAE,GAAK,GAAK1C,EAAE4kP,IAAM,GAAKliP,EAAE,GACtCpC,GAAIN,EAAEM,GAAK,GAAKoC,EAAE,GAEtB,EACAyJ,EAAEvP,UAAU49O,UAAY,SAAU93O,GAChC,IAAIiuO,EAAEjuO,GAAG0gP,UACX,EACAj3O,EAAEvP,UAAU++O,YAAc,SAAUj5O,GAKlC,OAJAA,EAAI4M,EAAEykC,MAAMrxC,GAAG0+J,MACb,IAAM,EACR1+J,EAAE,IAAM,IACRA,EAAE,IAAM,GACD,IAAMA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAK,UAAY,SAChD,EACAyJ,EAAEvP,UAAUqrC,OAAS,SAAUvlC,EAAG3C,EAAG0sE,EAAG3sE,EAAGrC,EAAGD,EAAG2O,EAAG7L,EAAG7B,EAAGkV,GACxD,IAAI4P,EAAIrd,KAAKwmE,MAAMhqE,EAAG3C,EAAG0sE,EAAGhuE,OAAG,OAAQ,EAAQkV,OAAG,EAAQ,UACxD64D,EAAItmE,KAAKqtO,WACTpgH,EAAI,EACJkvF,EAAI5kN,EAAI0uE,EAAE1uE,GAAK,CAAC,EAOlB,GANAiF,EAAI2/M,GAAKA,EAAEltK,OAAS,CAAC,EACrBktK,EAAI5/M,EAAE22O,qBAAqB/2B,GAC3B9+L,EAAEshB,KAAKsnC,EAAE,CACP7jB,QAAS,EACThoD,EAAG,GACF+hN,KACE71I,EAAG,CAaN,IAAI1pE,GAZJu/M,EAAIl2I,EAAE,CACJk3I,KAAM,UACN24B,OAAQ,UACR,eAAgB,EAChB7mM,MAAO,CACL2rH,MAAO,UACPif,OAAQ,UACR16H,WAAY,WAEb,CACDlQ,MAAOzyC,GACN2/M,IACOltK,aACHktK,EAAEltK,MAIT,IAAIgxK,GAHJ3oN,EAAI2uE,EAAEk2I,EAAG,CACPgB,KAAM,WACL5gN,EAAE22O,qBAAqB57O,GAAK,CAAC,KACtB23C,aACH33C,EAAE23C,MAQT,IAAI3nC,GAPJrB,EAAIggE,EAAEk2I,EAAG,CACPgB,KAAM,UACNluK,MAAO,CACL2rH,MAAO,UACPz7G,WAAY,SAEb5iD,EAAE22O,qBAAqBjtO,GAAK,CAAC,KACtBgpC,aACHhpC,EAAEgpC,MAMT,IAAIz0C,GALJJ,EAAI6rE,EAAEk2I,EAAG,CACPltK,MAAO,CACL2rH,MAAO,YAERr+J,EAAE22O,qBAAqB94O,GAAK,CAAC,KACtB60C,aACH70C,EAAE60C,KACX,CAeA,OAdAo7L,EAAEhtN,EAAE85C,QAAShwD,EAAI,YAAc,cAAc,WAC3C,IAAM8lH,GAAK5vG,EAAEshO,SAAS,EACxB,IACAtU,EAAEhtN,EAAE85C,QAAShwD,EAAI,WAAa,cAAc,WAC1C,IAAM8lH,GAAK5vG,EAAEshO,SAAS1xH,EACxB,IACA5vG,EAAEshO,SAAW,SAAUniP,GACrB,IAAMA,IAAM6gB,EAAEmsB,MAAQyjF,EAAIzwH,GAC1B6gB,EAAEgrC,YAAY,qDAAqDJ,SAAS,qBAAuB,CAAC,SAAU,QAAS,UAAW,YAAYzrD,GAAK,IACnJ8pE,GAAKjpD,EAAEshB,KAAK,CAACw9K,EAAG7kN,EAAG2O,EAAG7L,GAAGoC,GAAK,IAAI2yC,IAAI,CAACvyC,EAAGqjN,EAAG34M,EAAG9M,GAAGgC,GAAK,GAC1D,EACA8pE,GAAKjpD,EAAEshB,KAAKw9K,GAAGhtK,IAAIr1C,EAAE,CACnB+/K,OAAQ,WACPj9K,IACIygB,EAAEs1B,GAAG,cAAc,SAAUn2C,GAClC,OAAOA,EAAE62C,iBACX,IAAGV,GAAG,SAAS,SAAUn2C,GACvB,IAAMywH,GAAKrzH,EAAEhD,KAAKymB,EAAG7gB,EACvB,GACF,EACAyJ,EAAEvP,UAAUkoP,UAAY,SAAU9kP,EAAGyC,EAAG1C,QACtC,IAAWA,IAAMA,EAAI,SACrB,IAAI0sE,EAAIzsE,EAAE,GACRF,EAAIE,EAAE,GAGR,OAFA0C,EAAE+pE,EAAE,KAAOA,EAAE,KAAO3sE,EAAE,KAAO2sE,EAAE,GAAK3sE,EAAE,GAAKsK,KAAKrK,GAAG0sE,EAAE,IAAMhqE,EAAI,EAAI,GACnEC,EAAE+pE,EAAE,KAAOA,EAAE,KAAO3sE,EAAE,KAAO2sE,EAAE,GAAK3sE,EAAE,GAAKsK,KAAKrK,GAAG0sE,EAAE,IAAMhqE,EAAI,EAAI,GAC5DzC,CACT,EACAmM,EAAEvP,UAAU4hG,KAAO,SAAU97F,GAC3B,IAAID,EAAIyD,KAAKqtO,WAAa,CAAC,EAAI,CAC7BlwB,KAAM,QAGR,OADAvjN,EAAE4C,GAAKD,EAAEzC,EAAI0C,EAAIiR,EAAEjR,IAAM1C,EAAEyC,EAAGC,GACvBwD,KAAK/H,cAAc,QAAQ0mC,KAAKpiC,EACzC,EACA0J,EAAEvP,UAAU+lP,OAAS,SAAUjgP,EAAG1C,EAAGyC,GAUnC,OATAC,EAAIiR,EAAEjR,GAAKA,EAAI,qBAAuBA,EAAI,CAAC,EAAI,CAC7CiR,EAAGjR,EACHkL,EAAG5N,EACHM,EAAGmC,IAELzC,EAAIkG,KAAK/H,cAAc,WACrB29O,QAAU97O,EAAE67O,QAAU,SAAUn5O,EAAG1C,EAAGyC,GACtCA,EAAElE,aAAa,IAAMyB,EAAG0C,EAC1B,EACO1C,EAAE6kC,KAAKniC,EAChB,EACAyJ,EAAEvP,UAAU6lP,IAAM,SAAU//O,EAAG1C,EAAGyC,EAAG1C,EAAG0sE,EAAG3sE,GAQzC,OAPA6T,EAAEjR,IAAa1C,GAAPD,EAAI2C,GAASkL,EAAGnL,EAAI1C,EAAEO,EAAGoC,EAAI3C,EAAE4T,GAAK5T,EAAI,CAC9CwiP,OAAQxiP,EACRsmC,MAAOomC,EACP7wC,IAAK97B,IAEP4C,EAAIwD,KAAKkrN,OAAO,MAAO1uN,EAAG1C,EAAGyC,EAAGA,EAAG1C,IACjCO,EAAImC,EACCC,CACT,EACAyJ,EAAEvP,UAAUq8D,KAAO,SAAUv2D,EAAG1C,EAAGyC,EAAG1C,EAAG0sE,EAAG3sE,GAC1C2sE,EAAI94D,EAAEjR,GAAKA,EAAEpC,EAAImsE,EACjB,IAAIhvE,EAAIyI,KAAK/H,cAAc,QAmB3B,OAlBAuE,EAAIiR,EAAEjR,GAAKA,EAAI,qBAAuBA,EAAI,CAAC,EAAI,CAC7CiR,EAAGjR,EACHkL,EAAG5N,EACHiiD,MAAO73C,KAAKI,IAAI/H,EAAG,GACnB2hD,OAAQh6C,KAAKI,IAAIzK,EAAG,IAEtBmG,KAAKqtO,aAAe,qBAAuBzzO,IAAM4C,EAAE,gBAAkB5C,EAAG4C,EAAIjF,EAAE6+O,MAAM55O,IAAKA,EAAE2gN,KAAO,QAClG52I,IAAM/pE,EAAEpC,EAAImsE,GACZhvE,EAAEukP,QAAU,SAAUt/O,EAAG1C,EAAGyC,GAC1BhF,EAAE6C,EAAIoC,EACNsuO,EAAEvuO,EAAG,CACHsiP,GAAIriP,EACJsiP,GAAItiP,GAER,EACAjF,EAAEwnP,QAAU,WACV,OAAOxnP,EAAE6C,GAAK,CAChB,EACO7C,EAAEonC,KAAKniC,EAChB,EACAyJ,EAAEvP,UAAUynP,QAAU,SAAU3hP,EAAG1C,EAAGyC,GACpCyD,KAAK+7C,MAAQv/C,EACbwD,KAAKk+C,OAASpkD,EACdkG,KAAKg+O,WAAWh4L,QAAQ,CACtBjK,MAAOv/C,EACP0hD,OAAQpkD,GACP,CACD8oD,KAAM,WACJ5iD,KAAK2+B,KAAK,CACRqgN,QAAS,OAASh/O,KAAK2+B,KAAK,SAAW,IAAM3+B,KAAK2+B,KAAK,WAE3D,EACAxe,SAAUynB,EAAErrC,GAAG,QAAM,EAAS,IAEhCyD,KAAKi/O,eACP,EACAh5O,EAAEvP,UAAU6vE,EAAI,SAAU/pE,GACxB,IAAI1C,EAAIkG,KAAK/H,cAAc,KAC3B,OAAOuE,EAAI1C,EAAE6kC,KAAK,CAChB,MAAS,cAAgBniC,IACtB1C,CACP,EACAmM,EAAEvP,UAAU8rC,MAAQ,SAAUhmC,EAAG1C,EAAGyC,EAAG1C,EAAG0sE,EAAG3sE,GAC3C,IAAIrC,EAAI,CACJ2nP,oBAAqB,QAEvB5nP,EAAI,SAAUkF,EAAG1C,GACf0C,EAAEi8O,eAAiBj8O,EAAEi8O,eAAe,+BAAgC,OAAQ3+O,GAAK0C,EAAEnE,aAAa,cAAeyB,EACjH,EACFqiN,EAAEriN,KAAOvC,EAAEkW,EAAI3T,GACfqiN,EAAE5/M,KAAOhF,EAAEmQ,EAAInL,GACf4/M,EAAEtiN,KAAOtC,EAAEwkD,MAAQliD,GACnBsiN,EAAE51I,KAAOhvE,EAAE2mD,OAASqoB,GACpB,IAAIlpD,EAAIrd,KAAK/H,cAAc,SAAS0mC,KAAKpnC,GAMzC,OALAuC,EAAI,SAAUA,GACZxC,EAAE+lB,EAAE85C,QAAS36D,GACb5C,EAAEhD,KAAKymB,EAAGvjB,EACZ,EACAF,GAAKtC,EAAE+lB,EAAE85C,QAAS,8EAA+E56D,EAAI,IAAI/B,EAAE2kP,MAAS9U,EAAE9tO,EAAG,OAAQzC,GAAIyC,EAAEjE,IAAMkE,EAAGD,EAAEwoD,UAAYjrD,EAAE,CAAC,IAAMxC,EAAE+lB,EAAE85C,QAAS36D,GAC7K6gB,CACT,EACApX,EAAEvP,UAAUw0N,OAAS,SAAU3uN,EAAG1C,EAAG0sE,EAAG3sE,EAAGqM,EAAGoX,GAC5C,IAKEzgB,EALErE,EAAIyH,KACNmH,EAAI,iBACJsG,EAAItG,EAAEtB,KAAKtJ,GACX+pE,GAAK74D,IAAMzN,KAAKwvO,QAAQjzO,GAAKA,EAAI,UACjC4/M,EAAI71I,GAAKtmE,KAAKwvO,QAAQlpK,GAExB,GAAI61I,EAAG,CACL,kBAAoBtiN,IAAM+C,EAAIu/M,EAAEvlN,KAAKoJ,KAAKwvO,QAAStrO,KAAK+c,MAAMpnB,GAAK,GAAIqK,KAAK+c,MAAMslD,GAAK,GAAI3sE,GAAK,EAAGqM,GAAK,EAAGoX,IAC3G,IAAI4vG,EAAIjtH,KAAKs4F,KAAK17F,GAClBrE,EAAE80O,YAAcpgH,EAAEtuF,KAAK,OAAQ,QAC/B7kC,EAAEmzH,EAAG,CACH8oH,WAAYzvK,QAAK,EACjB74D,EAAG5T,EACH6N,EAAG6+D,EACHxqB,MAAOniD,EACPskD,OAAQj4C,IAEVoX,GAAKvjB,EAAEmzH,EAAG5vG,EACZ,MAAO,GAAI5P,EAAG,CACZ,IAAInG,EAAI/K,EAAE4I,MAAMgC,GAAG,GACf3M,EAAIyyH,EAAIjtH,KAAKwiC,MAAMl7B,GACvB9M,EAAE4kP,SAAWx3M,EAAEwiM,EAAE9iO,IAAM8iO,EAAE9iO,GAAGy0C,MAAO1+B,GAAKA,EAAE0+B,OAC1CvhD,EAAE6kP,UAAYz3M,EAAEwiM,EAAE9iO,IAAM8iO,EAAE9iO,GAAG42C,OAAQ7gC,GAAKA,EAAE6gC,QAC5C,IAAI8hK,EAAI,SAAUxjN,GAChB,OAAOA,EAAEmiC,KAAK,CACZod,MAAOv/C,EAAEu/C,MACTmC,OAAQ1hD,EAAE0hD,QAEd,EACA,CAAC,QAAS,UAAU5lC,SAAQ,SAAUxe,GACpCU,EAAEV,EAAI,UAAY,SAAUA,EAAGyC,GAC7B,IAAI1C,EAAImG,KAAK,MAAQzD,GACrByD,KAAKzD,GAAKzC,EACV0C,EAAE3C,KAAOwjB,GAAK,WAAaA,EAAEiiO,gBAAkBt/O,KAAK+7C,OAAS/7C,KAAKk+C,SAAWrkD,EAAIqK,KAAK+c,MAAMpnB,EAAIqK,KAAKqL,IAAIvP,KAAK+7C,MAAQ/7C,KAAKo/O,SAAUp/O,KAAKk+C,OAASl+C,KAAKq/O,aAAcr/O,KAAKm3D,SAAWn3D,KAAKm3D,QAAQ9+D,aAAakE,EAAG1C,GAAImG,KAAKg1O,mBAAqBl7O,IAAMkG,KAAKzD,IAAM,GAAK1C,GAAK,EAAGmG,KAAK2+B,KAAK,UAAYpiC,EAAI,CACvS08O,WAAYn/O,GACV,CACFo/O,WAAYp/O,KAEhB,CACF,IACA0C,EAAE3C,IAAMW,EAAEmkC,KAAK,CACblxB,EAAG5T,EACH6N,EAAG6+D,IAEL/rE,EAAE+kP,OAAQ,EACV/iP,EAAEhC,EAAE4kP,WAAa5iP,EAAEhC,EAAE6kP,WAAar/B,EAAExlN,IAAMA,EAAEmkC,KAAK,CAC/Cod,MAAO,EACPmC,OAAQ,IACN9jD,EAAE,MAAO,CACXvB,OAAQ,WACN,IAAI2D,EAAIzB,EAAExC,EAAEwlP,YACZ,IAAM/9O,KAAK+7C,QAAUzkD,EAAE0I,KAAM,CAC3Bm9C,SAAU,WACVzf,IAAK,WACHnmC,EAAEy4C,KAAKt2C,YAAYsG,OACvBoqO,EAAE9iO,GAAK,CACLy0C,MAAO/7C,KAAK+7C,MACZmC,OAAQl+C,KAAKk+C,QAEf1jD,EAAE4kP,SAAWp/O,KAAK+7C,MAClBvhD,EAAE6kP,UAAYr/O,KAAKk+C,OACnB1jD,EAAE28D,SAAW6oJ,EAAExlN,GACfwF,KAAKg0B,YAAch0B,KAAKg0B,WAAWC,YAAYj0B,MAC/CzH,EAAEulP,WACGvlP,EAAEulP,WAAYthP,GAAMA,EAAEgjP,WAAWhjP,EAAE3D,QAC1C,EACAP,IAAKgP,IACHtH,KAAK89O,WACX,CACA,OAAO7wH,CACT,EACAhnH,EAAEvP,UAAU+oP,SAAW,SAAUjjP,EAAG1C,EAAGyC,EAAG1C,GACxC,IAAI0sE,EAAIs3K,IAAM,IACZjkP,EAAIoG,KAAK/H,cAAc,YAAY0mC,KAAK,CACtC5C,GAAIwqC,IACHj0D,IAAItS,KAAK62O,MAKd,OAJAr6O,EAAIwD,KAAK+yD,KAAKv2D,EAAG1C,EAAGyC,EAAG1C,EAAG,GAAGyY,IAAI1Y,IAC/BmiC,GAAKwqC,EACP/pE,EAAEk7O,SAAW99O,EACb4C,EAAEgyC,MAAQ,EACHhyC,CACT,EACAyJ,EAAEvP,UAAUo9B,KAAO,SAAUh6B,EAAGyC,EAAG1C,EAAG0sE,GACpC,IAAI3sE,EAAI,CAAC,EACT,OAAI2sE,IAAMvmE,KAAKk+O,WAAcl+O,KAAK2yO,WAClC/4O,EAAE6T,EAAIvJ,KAAK+c,MAAM1kB,GAAK,GACtB1C,IAAMD,EAAE8N,EAAIxD,KAAK+c,MAAMpnB,IACvB2C,EAAE1C,KAAOF,EAAEk6B,KAAOh6B,GAClBA,EAAIkG,KAAK/H,cAAc,QAAQ0mC,KAAK/kC,KAC/B2sE,GAAKvmE,KAAK2yO,YAAc3yO,KAAKk+O,aAAWpkP,EAAE87O,QAAU,SAAUp5O,EAAG1C,EAAGyC,GACvE,IAAK,IAAuEhF,EAAnEsC,EAAI0C,EAAEy/B,qBAAqB,SAAUuqC,EAAIhqE,EAAEw3B,aAAaj6B,GAAIF,EAAI,EAAMA,EAAIC,EAAErD,OAAQoD,KAAKrC,EAAIsC,EAAED,IAAMm6B,aAAaj6B,KAAOysE,GAAKhvE,EAAEc,aAAayB,EAAG0C,GACzJD,EAAElE,aAAayB,EAAG0C,EACpB,GACO1C,GAT8CkG,KAAK85C,KAAKhgD,EAAGyC,EAAG1C,EAUvE,EACAoM,EAAEvP,UAAUulP,YAAc,SAAUz/O,EAAG1C,GAIrC,OAHA0C,GAAKwD,KAAKqtO,YAAc,KAAKxnO,KAAKrJ,KAAOhC,EAAEihD,iBAAmBj/C,GAAK1C,GAAKA,EAAEm1C,OAASn1C,EAAEm1C,MAAMk6F,UAAYnpI,KAAKivC,OAASjvC,KAAKivC,MAAMk6F,SAAWrvI,GAAK4N,EAAEhR,UAAUw1O,SAASt1O,KAAKkD,EAAG,aAGtK,CACLqN,EAFFrN,EAAI,IADJ0C,EAAI,KAAKqJ,KAAKrJ,GAAKs1J,EAAEt1J,GAAK,IACbA,EAAI,EAAI0H,KAAK+c,MAAM,IAAMzkB,GAGpCA,EAAG0H,KAAK+c,MAAM,GAAKnnB,GACnBwsE,EAAG9pE,EAEP,EACAyJ,EAAEvP,UAAUgpP,QAAU,SAAUljP,EAAG1C,EAAGyC,GACpC,IAAI1C,EAAI2C,EAER,OADA1C,GAAKyC,IAAM1C,EAAIqK,KAAKI,IAAIzK,EAAIqK,KAAKg/C,IAAIppD,EAAI8C,GAAI,IACtC,CACL6Q,GAAIjR,EAAI,EAAI0H,KAAKy+J,IAAI7oK,EAAI8C,GACzB8K,EAAG7N,EAEP,EACAoM,EAAEvP,UAAUqhP,eAAiB,SAAUv7O,GACrC,IAAK,IAAI1C,EAAI,GAAIyC,EAAI,GAAI1C,EAAI,CACzB4wO,EAAG,EACHK,EAAG,EACHN,EAAG,EACHvkO,EAAG,EACHuB,EAAG,EACHm4O,EAAG,EACHv/B,EAAG,EACHpI,EAAG,EACH9qF,EAAG,GACF3mD,EAAI,EAAGA,EAAI/pE,EAAEhG,OAAQ+vE,IAAKy5I,EAAEzjN,EAAE,KAAO4/M,EAAE3/M,EAAE+pE,KAAOhqE,EAAE/F,SAAWqD,EAAE0C,EAAE,GAAGgK,gBAAkB/J,EAAEm5B,OAAO4wC,EAAG,EAAGhqE,EAAE,GAAG6I,QAAQ,IAAK,KAAKA,QAAQ,IAAK,MAAO,kBAAoB5I,EAAE+pE,KAAOhqE,EAAE/F,QAAUsD,EAAEhD,KAAKyF,EAAEf,MAAM,IAAKe,EAAE/F,OAAS,GAAI+F,EAAEzF,KAAK0F,EAAE+pE,IAE1O,OADAzsE,EAAEhD,KAAKyF,EAAEf,MAAM,IACR1B,CACT,EACAmM,EAAEvP,UAAU8vE,MAAQ,SAAUhqE,EAAG1C,EAAGyC,EAAG1C,EAAG0sE,EAAG3sE,EAAGrC,EAAGD,EAAG2O,GACpD,OAAO,IAAIskO,EAAEvqO,KAAMxD,EAAG1C,EAAGyC,EAAG1C,EAAG0sE,EAAG3sE,EAAGrC,EAAGD,EAAG2O,EAC7C,EACAA,EAAEvP,UAAUuoP,cAAgB,WAC1Bj/O,KAAK80O,eAAex8N,SAAQ,SAAU9b,GACpC,OAAOA,EAAEywI,OACX,GACF,EACOhnI,CACT,CA/bI,GAgcJnM,EAAEivO,EAAEryO,UAAW,CACbuhE,QAASvwD,EACTshO,OAAQzwO,EACRqlP,QAAS,CACP,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,UAEPpO,QAAShF,EACToV,KAAMt4O,IAER68I,EAAEm2F,qBAAqB,MAAOvR,GAAG,GAE1BA,CACT,IACAvhO,EAAEjL,EAAG,oCAAqC,CAACA,EAAE,mBAAoBA,EAAE,mCAAoCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GAC9I,IAAInhM,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAU1C,EAAGtC,GAQnB,OAPAgF,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAG1C,GACjC0C,EAAE+/D,UAAYziE,CAChB,GAAK,SAAU0C,EAAG1C,GAChB,IAAK,IAAItC,KAAKsC,EAAGA,EAAElD,eAAeY,KAAOgF,EAAEhF,GAAKsC,EAAEtC,GACpD,EACOgF,EAAE1C,EAAGtC,EACd,EACA,OAAO,SAAUsC,EAAGtC,GAClB,SAASgB,IACPyH,KAAK40B,YAAc/6B,CACrB,CACA0C,EAAE1C,EAAGtC,GACLsC,EAAEnD,UAAY,OAASa,EAAId,OAAOmE,OAAOrD,IAAMgB,EAAE7B,UAAYa,EAAEb,UAAW,IAAI6B,EAChF,CACF,CAlBgC,GAmBhCmP,EAAInL,EAAEmyM,UACN67B,EAAIhuO,EAAE6sO,KACNoB,EAAIjuO,EAAEitO,SACNiB,EAAIluO,EAAEy2D,IACNopG,EAAI2sE,EAAE55L,IACNp0C,EAAIguO,EAAE2C,QACN9uO,EAAImsO,EAAEzrO,OACN/F,EAAIwxO,EAAE0D,KACN5yO,EAAIkvO,EAAE2D,KACR,OAAO,SAAUnwO,GACf,SAAS4K,IACP,OAAO,OAAS5K,GAAKA,EAAEV,MAAMmE,KAAMlE,YAAckE,IACnD,CA0GA,OAzGA4nC,EAAEzgC,EAAG5K,GACL4K,EAAE04O,QAAU,SAAUtjP,GACpB,IAAK,IAAM4K,EAAE24O,gBAAgBhzO,QAAQvQ,GAAI,CACvC4K,EAAE24O,gBAAgBhpP,KAAKyF,GACvB,IAAI1C,EAAIsN,EAAEzQ,UACRa,EAAIgF,EAAE7F,UACRa,EAAEwoP,kBAAoBlmP,EAAEkmP,kBACxBxoP,EAAEyoP,QAAUnmP,EAAEmmP,QACdzoP,EAAE4gP,YAAct+O,EAAEs+O,YAClB5gP,EAAE0oP,oBAAsBpmP,EAAEomP,oBAC1B1oP,EAAE2oP,gBAAkBrmP,EAAEqmP,eACxB,CACA,OAAO3jP,CACT,EACA4K,EAAEzQ,UAAUqpP,kBAAoB,SAAUxjP,EAAG1C,EAAGtC,GAC9CyI,KAAKmgP,OAAS5jP,EAAIhF,EAClByI,KAAKogP,OAASvmP,CAChB,EACAsN,EAAEzQ,UAAUspP,QAAU,SAAUzjP,GAC9B,IAAI1C,EAAI,SAAWmG,KAAKm3D,QAAQE,SAAW96D,GAAK,UAAWA,EACzD4K,EAAI5P,EAAEsC,GAAK0C,EAAEw/C,WAAO,GACtB,GAAIliD,EAAG,QACE0C,EAAEw/C,MACT/7C,KAAKg3O,UAAY7vO,EACjB,IAAIm/D,GAAI,CACV,CAKA,OAJA/pE,GAAK,aAAeA,EAAEm0O,eAAiBn0O,EAAEk1O,WAAa,SAAUl1O,EAAE2B,SAAW,UAC7E8B,KAAKy/C,OAAS7iD,EAAEoD,KAAKy/C,OAAQljD,GAC7B6/J,EAAEp8J,KAAKm3D,QAAS56D,GAChB+pE,GAAKtmE,KAAKigP,sBACHjgP,IACT,EACAmH,EAAEzQ,UAAUyhP,YAAc,WACxB,IAAI57O,EAAIyD,KAAKm3D,QACb,MAAO,CACL1pD,EAAGlR,EAAEu9J,WACLpyJ,EAAGnL,EAAEy9J,UACLj+G,MAAOx/C,EAAE8gD,YACTa,OAAQ3hD,EAAE8hD,aAEd,EACAl3C,EAAEzQ,UAAUupP,oBAAsB,WAChC,GAAIjgP,KAAKu0O,MAAO,CACd,IAAIh4O,EAAIyD,KAAK2oG,SACXpxG,EAAIyI,KAAKm3D,QACThwD,EAAInH,KAAKi5O,YAAc,EACvB3yK,EAAItmE,KAAKk5O,YAAc,EACvBt8O,EAAIoD,KAAKyN,GAAK,EACdq9N,EAAI9qO,KAAK0H,GAAK,EACdtN,EAAI4F,KAAK0zI,WAAa,OACtBp8I,EAAI,CACF4qD,KAAM,EACN4uJ,OAAQ,GACR9zJ,MAAO,GACP5iD,GACFoC,EAAIwD,KAAKy/C,OAeX,GAdAjjD,EAAIA,GAAKA,EAAEi1O,WACXr1E,EAAE7kK,EAAG,CACHwlD,WAAY51C,EACZsxJ,UAAWnyF,KAEZ/pE,EAAE8wO,YAAcrtO,KAAKk2O,SAAWl2O,KAAKk2O,QAAQ59N,SAAQ,SAAU9b,GAC9D4/J,EAAE5/J,EAAG,CACHugD,WAAY51C,EAAI,EAChBsxJ,UAAWnyF,EAAI,GAEnB,IACAtmE,KAAKo0O,UAAY,GAAG97N,QAAQ1hB,KAAKW,EAAE+jC,YAAY,SAAU9+B,GACvDD,EAAE8jP,YAAY7jP,EAAGjF,EACnB,IACI,SAAWA,EAAE8/D,QAAS,CACxB,IAAIkP,EAAIvmE,KAAKi2O,SACXn8O,EAAIkG,KAAKg3O,WAAan9O,EAAEmG,KAAKg3O,WAC7Bp9O,EAAI,CAAC2sE,EAAGnsE,EAAG7C,EAAE8mC,UAAWr+B,KAAKg3O,UAAWh3O,KAAK0zI,WAAW3xI,OACxDo6M,OAAI,EAEN,GADAA,GAAI,EACAriN,IAAMkG,KAAKsgP,aAAc,CAC3B,GAAItgP,KAAK84O,aAAc,IAAIrrO,EAAIzN,KAAK84O,kBAAkB18E,EAAE7kK,EAAG,CACzDwkD,MAAO,GACP01L,WAAYj1O,GAAK,WACfiR,EAAIlW,EAAE8lD,aACTvjD,EAAIkG,KAAKsgP,cAAgB7yO,EAAI3T,KAAO,QAAQ+L,KAAKtO,EAAEi/B,aAAej/B,EAAEqgN,YAAc,aAAergN,EAAE03C,MAAMyhM,gBAAkBt0E,EAAE7kK,EAAG,CAC/HwkD,MAAOtuC,EAAI3T,GAAKysE,EAAIzsE,EAAI,KAAO,OAC/Bo1C,QAAS,QACTuiM,WAAYj1O,GAAK,WACfwD,KAAKsgP,aAAexmP,EAAGqiN,GAAI,EACjC,CACAn8M,KAAKm8O,mBAAqBhgC,EAC1BviN,IAAMoG,KAAKugP,MAAQpkC,EAAI5/M,EAAE0/O,YAAY1kP,EAAE03C,MAAMk6F,SAAU5xI,GAAGiF,GAAIzB,EAAEwrE,IAAMA,KAAOvmE,KAAKwgP,aAAe,IAAMpmP,IAAM4F,KAAKygP,UAAYzgP,KAAKkgP,gBAAgB35K,EAAGjvE,EAAG6kN,GAAIn8M,KAAK+/O,mBAAmBhlP,EAAEwrE,IAAMvmE,KAAK84O,cAAgBvhP,EAAE8lD,YAAa8+J,EAAG7kN,EAAGivE,EAAGnsE,IAC1OgiK,EAAE7kK,EAAG,CACH2qD,KAAMtlD,GAAKoD,KAAKmgP,OAAS,GAAK,KAC9BziN,IAAKotM,GAAK9qO,KAAKogP,OAAS,GAAK,OAE/BpgP,KAAKugP,IAAM3mP,EACXoG,KAAKwgP,YAAcj6K,EACnBvmE,KAAKygP,SAAWrmP,CAClB,CACF,MAAO4F,KAAK0gP,YAAa,CAC3B,EACAv5O,EAAEzQ,UAAUwpP,gBAAkB,SAAU3jP,EAAG1C,EAAGtC,GAC5C,IAAI4P,EAAI,CAAC,EACP5O,EAAIgyO,IAAM,OAAO1kO,KAAK4kO,EAAEj3J,UAAU84C,WAAa,gBAAkBk+G,EAAI,oBAAsB9iO,EAAI,eAAiB+iO,EAAEpB,MAAQ,oBAAiB,EAC7I9wO,IAAM4O,EAAE5O,GAAK4O,EAAEkpM,UAAY,UAAY9zM,EAAI,OAAQ4K,EAAE5O,GAAKmP,EAAI,SAAW,YAAcP,EAAEw5O,gBAAkB,IAAM9mP,EAAI,KAAOtC,EAAI,KAAM6kK,EAAEp8J,KAAKm3D,QAAShwD,GACxJ,EACAA,EAAE24O,gBAAkB,GACb34O,CACT,CA9GO,CA8GLiC,EACJ,IACA5B,EAAEjL,EAAG,qCAAsC,CAACA,EAAE,6BAA8BA,EAAE,mCAAoCA,EAAE,oCAAqCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,GACnM,IAAIv8G,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUK,EAAGrF,GAQnB,OAPAgF,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAGhF,GACjCgF,EAAE+/D,UAAY/kE,CAChB,GAAK,SAAUgF,EAAGhF,GAChB,IAAK,IAAIsC,KAAKtC,EAAGA,EAAEZ,eAAekD,KAAO0C,EAAE1C,GAAKtC,EAAEsC,GACpD,EACO0C,EAAEK,EAAGrF,EACd,EACA,OAAO,SAAUqF,EAAGrF,GAClB,SAASsC,IACPmG,KAAK40B,YAAch4B,CACrB,CACAL,EAAEK,EAAGrF,GACLqF,EAAElG,UAAY,OAASa,EAAId,OAAOmE,OAAOrD,IAAMsC,EAAEnD,UAAYa,EAAEb,UAAW,IAAImD,EAChF,CACF,CAlBgC,GAmBhC0wO,EAAIpmF,EAAExlH,KACN6rM,EAAIrmF,EAAElsJ,cACNwyO,EAAItmF,EAAE7mJ,OACN8+J,EAAIjY,EAAEsoF,KACR,OAAO,SAAU1xO,GACf,SAAS6B,IACP,OAAO,OAAS7B,GAAKA,EAAEc,MAAMmE,KAAMlE,YAAckE,IACnD,CAsGA,OArGA4nC,EAAEhrC,EAAG7B,GACL6B,EAAEijP,QAAU,SAAUtjP,GAEpB,OADC,IAAMK,EAAEkjP,gBAAgBhzO,QAAQvQ,KAAOK,EAAEkjP,gBAAgBhpP,KAAKyF,GAAIA,EAAE7F,UAAUojD,KAAOl9C,EAAElG,UAAUojD,MAC3Fv9C,CACT,EACAK,EAAElG,UAAUojD,KAAO,SAAUviD,EAAGsC,EAAGsN,GACjC,IAAIm/D,EAAItmE,KAAK/H,cAAc,QACzB2E,EAAI0pE,EAAEnP,QACN5+D,EAAI+tE,EAAEqiC,SACN5tG,EAAIxC,EAAE6+O,MACN58O,EAAI,SAAU+B,EAAG1C,GACf,CAAC,UAAW,cAAcye,SAAQ,SAAU/gB,GAC1CgF,EAAEhF,EAAI,UAAY,SAAUD,EAAGkF,EAAG+pE,GAChC,IAAIzsE,EAAIyC,EAAE8zC,IAAM9zC,EAAE8zC,IAAIpB,MAAQp1C,EAC9BuP,EAAE1S,UAAUa,EAAI,UAAUX,KAAKoJ,KAAM1I,EAAGkF,EAAG+pE,GAC3CzsE,IAAMA,EAAE0C,GAAKlF,EACf,CACF,IACAiF,EAAEqkP,cAAe,CACnB,EA+EF,OA9EAt6K,EAAEuyK,WAAa,SAAUh/O,GACvBA,IAAMmG,KAAKq0O,iBAAmBr0O,KAAK66O,YAAa76O,KAAKsgP,aAAc/jP,EAAE82O,eAAerzO,KAAKm3D,QAASilG,EAAEviK,EAAG,KAAMmG,KAAKq0O,QAAUx6O,EAAGysE,EAAEsuK,aAAc,EACjJ,EACA75O,GAAKP,EAAE8rE,EAAGA,EAAEnP,QAAQloB,OACpBq3B,EAAEsvK,QAAUtvK,EAAEqvK,QAAUrvK,EAAE+uK,YAAc/uK,EAAEwzK,eAAiB,SAAUv9O,EAAG1C,GACtE,UAAYA,EAAIysE,EAAEm1H,WAAan1H,EAAEotE,UAAYn3I,EAAI+pE,EAAEzsE,GAAK0C,EACxD+pE,EAAEsuK,aAAc,CAClB,EACAtuK,EAAEquK,aAAe,WACf30O,KAAK40O,cAAgB50O,KAAKigP,sBAAuBjgP,KAAK40O,aAAc,EACtE,EACAtuK,EAAE3nC,KAAK,CACL7K,KAAMv8B,EACNkW,EAAGvJ,KAAK+c,MAAMpnB,GACd6N,EAAGxD,KAAK+c,MAAM9Z,KACbgoC,IAAI,CACLgO,SAAU,aAEZ5kD,EAAE80O,YAAc/mK,EAAEn3B,IAAI,CACpBmvM,WAAYt+O,KAAKivC,MAAMqvM,WACvBn1G,SAAUnpI,KAAKivC,MAAMk6F,WAEvBvsI,EAAEqyC,MAAMwiM,WAAa,SACrBnrK,EAAEn3B,IAAMm3B,EAAE05K,QACVjlP,IAAMurE,EAAEh0D,IAAM,SAAU/V,GACtB,IAAI1C,EAAItB,EAAEgnD,IAAIvrB,WACZz8B,EAAI,GACN,GAAIyI,KAAKk0O,YAAc33O,EAAG,CACxB,IAAIjF,EAAIiF,EAAE8zC,IACV,IAAK/4C,EAAG,CACN,KAAOiF,GAAIhF,EAAET,KAAKyF,GAAIA,EAAIA,EAAE23O,YAC5B38O,EAAEkwC,UAAUnvB,SAAQ,SAAU9b,GAC5B,SAASD,EAAEzC,EAAGyC,GACZC,EAAED,GAAKzC,EACP,eAAiByC,EAAInC,EAAE8nD,KAAOpoD,EAAI,KAAOM,EAAEsjC,IAAM5jC,EAAI,KACrD0C,EAAEo4O,aAAc,CAClB,CACA,IAAI96O,EAAIywO,EAAE/tO,EAAE26D,QAAS,SACnBv9D,EAAI4C,EAAEijD,QAAU,CAAC,EAafrlD,GAZJ9C,EAAIkF,EAAE6zC,IAAM7zC,EAAE6zC,KAAOm6L,EAAE,MAAO1wO,EAAI,CAChCskC,UAAWtkC,QACT,EAAQ,CACVqjD,SAAU,WACV+E,MAAO1lD,EAAEy8O,YAAc,GAAK,KAC5Bv7M,KAAMlhC,EAAE08O,YAAc,GAAK,KAC3BhqM,QAAS1yC,EAAE0yC,QACXmR,QAAS7jD,EAAE6jD,QACXw5H,OAAQjgL,EAAEigL,OACVgnE,cAAejnP,EAAEinP,cACjB7hM,WAAYxiD,EAAEwiD,YACb1nD,GAAKuC,IACEo1C,MACVw7L,EAAEjuO,EAAG,CACHskP,YAAa,SAAUtkP,GACrB,OAAO,SAAU1C,GACfkG,KAAKm3D,QAAQ9+D,aAAa,QAASyB,GACnC0C,EAAE4hC,UAAYtkC,CAChB,CACF,CALa,CAKXxC,GACFq7C,GAAI,WAKF,OAJAp7C,EAAE,GAAG84C,KAAOi2B,EAAE3zB,GAAG92C,MAAM,CACrBs7D,QAAS5/D,EAAE,GAAG84C,IACdyjM,SAAUt3O,EAAEs3O,UACXh4O,WACIU,CACT,EACAy9O,iBAAkB19O,EAClB29O,iBAAkB39O,IAEpBC,EAAEokP,cAAgBpmP,EAAEgC,EACtB,GACF,CACF,MAAOlF,EAAIuC,EAIX,OAHAvC,EAAEoC,YAAYkD,GACd0pE,EAAEiuK,OAAQ,EACVjuK,EAAEo6K,YAAcp6K,EAAE25K,sBACX35K,CACT,GACOA,CACT,EACA1pE,EAAEkjP,gBAAkB,GACbljP,CACT,CA1GO,CA0GLmsO,EACJ,IACAvhO,EAAEjL,EAAG,4BAA6B,IAAI,WACpC,IAAIA,EA8KJ,OA7KA,SAAWA,GACTA,EAAEwkP,oBAAsB,CACtBC,YAAY,EACZC,mBAAe,EACfC,gBAAgB,EAChB3/L,OAAQ,EACR4/L,aAAa,EACblQ,qBAAsB,CACpBlyN,YAAa,CACX4hM,KAAM,cACNvwF,OAAO,GAETtxG,OAAQ,CACN6hM,KAAM,WACNvwF,OAAO,GAETvxG,OAAQ,CACN8hM,KAAM,QACNvwF,OAAO,GAETryG,KAAM,CACJ4iM,KAAM,QACNvwF,OAAO,GAETx8G,IAAK,CACH+sM,KAAM,UAERrvM,KAAM,CACJqvM,KAAM,UAERz2M,MAAO,CACLy2M,KAAM,UAERp3M,KAAM,CACJo3M,KAAM,OAGVygC,WAAW,EACXC,kBAAmB,QACnBC,WAAY,EACZh7E,OAAQ,CACNi7E,kBAAc,EACdC,kBAAmB,GACnB5kF,cAAU,EACVn7H,SAAS,EACTggN,YAAa,GACbvjP,SAAU,UACVkkD,QAAS,EACTs/L,kBAAc,EACdzL,cAAU,EACV0L,aAAc,EACd/+L,KAAM,EACN8uL,SAAS,EACTjkO,EAAG,EACH8zC,OAAQ,EACRtS,MAAO,CACL2rH,MAAO,UACPif,OAAQ,UACR1wC,SAAU,SAGdy4G,WAAY,IACZC,uBAAwB,QACxBC,gBAAiB,EACjBC,kBAAmB,UACnBC,WAAY,IACZxgO,YAAQ,EACRygO,UAAU,EACVC,cAAU,EACVC,gBAAgB,EAChBC,WAAW,EACXC,gBAAgB,EAChBC,eAAe,EACfC,YAAa,EACbC,aAAa,EACbC,WAAY,GACZC,kBAAmB,IACnBC,kBAAmB,UACnBC,aAAc,UACd76J,MAAO,CACLklD,MAAO,SACPgpG,SAAU,EACVvE,SAAS,EACTjkO,EAAG,EACH/F,EAAG,EACHunC,MAAO,CACL2rH,MAAO,YAGX3hK,KAAM,SACN4pP,aAAa,EACbzyL,SAAS,EACT0yL,mBAAoB,UACpBC,mBAAoB,EACpBC,eAAgB,UAChBC,UAAW,UACXC,UAAW,EACXC,cAAe,UACfC,mBAAe,EACfC,UAAW,WAEb9mP,EAAE+mP,oBAAsB,CACtBnB,gBAAgB,EAChBf,WAAW,EACXQ,WAAY,IACZI,WAAY,IACZU,kBAAmB,GACnBJ,eAAe,EACfh8E,OAAQ,CACN74J,GAAI,GAEN+0O,aAAa,EACbz6J,MAAO,CACLkuJ,SAAU,IACVniN,KAAM,UAERyvN,YAAa,CACXt/L,UAAW,CAAC,EACZu/L,cAAc,EACd/hN,SAAS,EACTgiN,MAAM,EACNvlP,SAAU,UACVwlP,UAAW,WAET,OAAOnnP,EADCyD,KAAKikL,KAAKqmD,MAAMoJ,iBACf1zO,KAAK4xB,OAAQ,EACxB,EACAqd,MAAO,CACL2rH,MAAO,UACPzxB,SAAU,OACVhqF,WAAY,OACZ83L,YAAa,iBAGjBmM,cAAe,EACfF,UAAW,GAEb3mP,EAAEonP,uBAAyB,CACzBr9E,OAAQ,CACN74J,GAAI,IAENs6E,MAAO,CACLkuJ,SAAU,MAGd15O,EAAEqnP,wBAA0B,CAC1Bt9E,OAAQ,CACN74J,EAAG,IAELs6E,MAAO,CACLkuJ,SAAU,KAGd15O,EAAEsnP,yBAA2B,CAC3Bv9E,OAAQ,CACNi7E,aAAc,EAAE,IAChB9zO,EAAG,GAEL00C,OAAQ,GACR4lC,MAAO,CACLkuJ,SAAU,IAGd15O,EAAEunP,sBAAwB,CACxBx9E,OAAQ,CACNi7E,aAAc,EAAE,IAChB9zO,EAAG,GAEL00C,OAAQ,GACR4lC,MAAO,CACLkuJ,SAAU,GAGf,CA5KD,CA4KG15O,IAAMA,EAAI,CAAC,IACPA,CACT,IACAiL,EAAEjL,EAAG,qBAAsB,CAACA,EAAE,uBAAuB,SAAUA,GAC7D,IAIEguO,EAJE3iM,EAAIrrC,EAAE0uO,SACRlC,EAAIxsO,EAAE6F,WACN+hJ,EAAI5nJ,EAAE+vO,WACN5kO,EAAInL,EAAEo4C,YAUR,OARA,SAAWp4C,GACTA,EAAEwnP,qBAAuB,SAAUxnP,EAAG6/J,GACpC7/J,EAAEu4D,aAAev4D,EAAEu4D,cAAgB,CAAC,EACpCqvF,EAAEiY,EAAExoH,QAAQ,SAAU74C,EAAG6B,GACvBL,EAAEu4D,aAAal4D,KAAO7B,IAAMwB,EAAEu4D,aAAal4D,KAAO8K,EAAEnL,EAAGK,EAAGL,EAAEu4D,aAAal4D,WAAYL,EAAEu4D,aAAal4D,IAAKmsO,EAAEhuO,KAAOwB,EAAEu4D,aAAal4D,GAAK7B,EAAG6sC,EAAErrC,EAAGK,EAAG7B,IACnJ,GACF,CACD,CAPD,CAOGwvO,IAAMA,EAAI,CAAC,IACPA,CACT,IACA/iO,EAAEjL,EAAG,oBAAqB,CAACA,EAAE,2BAA4BA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GACtH,IAAInhM,EAAIx+B,EAAEqgO,QACR/hO,EAAIqhO,EAAEptE,MACN4uE,EAAIxB,EAAE0C,aACNjB,EAAIzB,EAAE2C,QACNjB,EAAI1B,EAAE4C,wBACNvvE,EAAI2sE,EAAEzrO,OACNvC,EAAIguO,EAAE8B,UACNjuO,EAAImsO,EAAEjsO,SACNvF,EAAIwxO,EAAE/zM,MACNn7B,EAAIkvO,EAAEuD,WACNnlO,EAAI4hO,EAAE0D,KA+QR,OA9QArjO,EAAI,WACF,SAASk9D,EAAE/pE,EAAG1C,EAAGtC,EAAG4P,EAAGm/D,GACrBtmE,KAAKgkP,WAAahkP,KAAKikP,OAAQ,EAC/BjkP,KAAKikL,KAAO1nL,EACZyD,KAAKsW,IAAMzc,EACXmG,KAAK/G,KAAO1B,GAAK,GACjByI,KAAKkkP,WAAa59K,GAAK,CAAC,EACxBtmE,KAAKmkP,eAAiBnkP,KAAKkkP,WAAWC,eACtCnkP,KAAK41B,QAAU51B,KAAKkkP,WAAWtuN,QAC/B76B,EAAEiF,KAAM,QACRzI,GAAK4P,GAAKnH,KAAKokP,UACjB,CAgQA,OA/PA99K,EAAE5vE,UAAU0tP,SAAW,WACrB,IAAIvqP,EAAImG,KACNzI,EAAIsC,EAAEoqL,KACN39G,EAAI/uE,EAAEq+B,QACNp7B,EAAIjD,EAAE+yO,MACND,EAAI9yO,EAAE4vO,WACN2D,EAAIvzO,EAAE8sP,YACNjqP,EAAI7C,EAAEkgB,MACNngB,EAAIuC,EAAEyc,IACN9Z,EAAI2K,EAAEtN,EAAE+7B,SAAW/7B,EAAE+7B,QAAQ0wI,OAAQhgG,EAAEggG,QACvC//F,EAAIhvE,EAAE+sP,cACNxqP,EAAIxC,IAAMivE,EAAE,GACZ3sE,EAAItC,IAAMivE,EAAEA,EAAE/vE,OAAS,GACvB2lN,IAAM3/M,EAAEomD,MAAQ,IAAMpmD,EAAEomD,OAAS,IAAMrrD,EAAEgtP,aAC3Ch+K,EAAIA,EAAEy+J,KACN,IACEhlB,EADEvyM,EAAI5T,EAAE2sE,MAIV,GAFA6jK,EAAIrqO,KAAKkkP,WAAWM,WAAana,EAAIljO,EAAEkjO,EAAE/yO,GAAI8C,EAAE9C,GAAIA,GAAKA,GACxDwzO,GAAKluO,EAAEytO,KAAOA,EAAIE,EAAEO,EAAE2Z,QAAQpa,KAC1B9yO,EAAEmtP,SAAU,GAAIn+K,EAClB,IAAIN,EAAIzrE,EAAEsrB,KAAKopN,iBAAiB5oK,EAAE2qK,sBAAsB3qK,EAAE+9G,MAAQ99G,EAAE8oK,YAAY/3O,IAAMivE,EAAEo+K,WACpF/8M,EAAIq+B,EAAE06I,UACL/jN,EAAEytO,KAAOziM,EAAIrwC,EAAEmtP,SAASE,eAAeva,EAAG/jK,EAAE2qK,sBAAwB,CAAC,IAC5Ep3O,EAAEgrP,QAAU/qP,EACZD,EAAEirP,OAASlrP,EACX,IAAIk4J,EAAI,CACNmyB,KAAM1sL,EACN+yO,MAAO9vO,EACPuqP,oBAAqBn9M,EACrBi9M,QAAS/qP,EACTgrP,OAAQlrP,EACR0c,IAAKhf,EACLssD,KAAM/pD,EACNmrP,iBAAkBz+K,EAClBhsE,MAAO8vO,GAETtvO,EAAEiF,KAAM,cAAe8xJ,GACvB,IAAI1oJ,EAAI,SAAUtP,GAChB,OAAO0C,EAAEknP,UAAYlnP,EAAEknP,UAAU9sP,KAAKkD,EAAGA,GAAK0C,EAAEiB,QAAU3D,EAAEg6B,KAAOv8B,EAAE0tP,sBAAsBruP,KAAKkD,GAAIyC,EAAEkB,OAAOjB,EAAEiB,OAAQ3D,EAAGU,IAAMjD,EAAE0tP,sBAAsBruP,KAAKkD,EAAGA,EAClK,EACAwsE,EAAIl9D,EAAExS,KAAKk7J,EAAGA,GACd,IAAI24E,EAAIxkK,GAAKA,EAAEr9B,KACf/uC,EAAEqrP,aAAeza,EAAI,WACnB,IAAKzqB,EAAI,EAAGA,EAAIyqB,EAAEj0O,OAAQwpN,IAAK,GAAI5jD,EAAEtK,EAAG,CACtCizF,oBAAqBta,EAAEzqB,KACrBvyM,EAAEkxB,KAAK,CACT7K,KAAM1qB,EAAExS,KAAKk7J,EAAGA,KACdrkJ,EAAEuqO,UAAUj8L,MAAQxkD,EAAE4tP,aAAatrP,GAAK,EAAI2C,EAAE4lD,QAAS,OAC3D30C,EAAEkxB,KAAK,CACL7K,KAAM,IAEV,OAAI,EACJqoL,GAAK5kN,EAAE6tP,cAAgBvrP,EAAEwrP,UAAU/+K,EAAG9pE,GACtCguO,EAAE/8N,IAAM5T,EAAEyrP,WAAa73O,GAAKA,EAAE4mO,UAAY/tK,IAAM61I,KAAO1uM,EAAEupO,WAAax6O,EAAEyyC,MAAM8M,OAAStuC,EAAEgyC,OAAO1D,OAAStuC,EAAE0hC,IAAI,CAC7G4M,MAAO,OACLtuC,EAAEkxB,KAAK,CACT7K,KAAMwyC,IACJ74D,EAAEqrO,aAAerrO,EAAEuqO,UAAUj8L,QAAUliD,EAAE2sE,MAAQ/4D,EAAI5T,EAAE0rP,YAAY,CACrE93O,EAAG,EACH/F,EAAG,GACF4+D,EAAG9pE,GAAI3C,EAAEo8O,SAAW,EACzB,EACA3vK,EAAE5vE,UAAU6uP,YAAc,SAAUhpP,EAAG1C,EAAGsN,GACxC,IAAIm/D,EAAItmE,KAAKikL,KACX1rL,EAAI+tE,EAAEgkK,MAER,OADI/tO,EAAIiuO,EAAE3wO,IAAMsN,EAAEs6B,QAAUlpC,EAAEowG,SAAS70E,KAAKj6B,EAAG0C,EAAEkR,EAAGlR,EAAEmL,EAAGP,EAAEuqO,SAASp/N,IAAIg0D,EAAEk/K,YAAc,QAAMjtP,EAAE80O,YAAc9wO,EAAE4yC,IAAI53C,EAAE4P,EAAE8nC,QAAS1yC,EAAEu8O,aAAev8O,EAAEy7O,UAAUj8L,OACvJx/C,CACT,EACA+pE,EAAE5vE,UAAUumF,QAAU,WACpBwtJ,EAAEzqO,KAAMA,KAAKikL,KACf,EACA39G,EAAE5vE,UAAU+uP,YAAc,SAAUlpP,EAAG1C,EAAGtC,EAAG4P,GAC3C,IAAIm/D,EAAItmE,KAAKikL,KACX1rL,EAAI+tE,EAAEgkK,MACNlwO,EAAI+M,GAAK5O,EAAEmtP,gBAAkBntP,EAAEotP,YASjC,OARAppP,EAAI,CACFkR,EAAGlR,EAAIguO,EAAEjkK,EAAEopJ,UAAU71N,EAAItC,EAAG,KAAM,KAAM4P,GAAKm/D,EAAEs/K,QAAUt/K,EAAEpkB,KAAOokB,EAAE9kD,QAAU8kD,EAAE27K,UAAY96O,GAAK5O,EAAEstP,eAAiBttP,EAAEutP,YAAcx/K,EAAEtpB,MAAQspB,EAAEpkB,KAAO,GACvJx6C,EAAGnL,EAAInC,EAAIksE,EAAEwyF,OAASxyF,EAAE9kD,QAAU8kD,EAAE27K,SAAW37K,EAAEpoB,OAAS,GAAKqsL,EAAEnwO,EAAIksE,EAAEopJ,UAAU71N,EAAItC,EAAG,KAAM,KAAM4P,GAAKm/D,EAAEs/K,UAE3Gl+O,EAAIA,EAAEnL,EAAEmL,GAAI,IAAK,KACnB3M,EAAEiF,KAAM,mBAAoB,CAC1BsW,IAAK/Z,IAEAA,CACT,EACA+pE,EAAE5vE,UAAUqvP,iBAAmB,SAAUxpP,EAAG1C,EAAGtC,EAAG4P,EAAGm/D,EAAG1pE,EAAGxC,EAAG9C,GAC5D,IAAIkF,EAAIwD,KAAKikL,KACX19G,EAAI/pE,EAAEwpP,OACNlsP,EAAI0C,EAAEypP,UAAYzpP,EAAE0pP,aAAe1pP,EAAE0pP,aAAahE,SAAW1lP,EAAE0lP,SAC/DtoP,EAAI4C,EAAEmlP,aACNxlC,EAAI3/M,EAAE2pP,aAAe,CACnB14O,EAAG,EACH/F,EAAG,GAEL+F,EAAItG,GAAK3K,EAAE4pP,oBAAsB,GAAK5pP,EAAE6pP,aAAe,WAAa7pP,EAAE8pP,WAAa,GAAK,GACxF/tP,EAAI,CAAC,EACLiC,EAAI8rE,EAAE5+D,EAYR,OAXA8iO,EAAEhwO,KAAOA,EAAI,IAAMgC,EAAEyzM,KAAO14M,EAAE0+O,UAAY,GAAK1+O,EAAEygP,UAAU95L,OAAS,IAAM1hD,EAAEyzM,KAAOkM,EAAEz0M,EAAI,EAAIxD,KAAKg/C,IAAI3rD,EAAE0+O,SAAWruM,IAAMu0K,EAAEz0M,EAAInQ,EAAEygP,SAAQ,EAAI,GAAG95L,OAAS,IACzJ3hD,EAAIA,EAAI+pE,EAAE74D,EAAIA,EAAI0uM,EAAE1uM,GAAK7Q,GAAKuK,EAAIvK,EAAI2pE,GAAKzsE,GAAK,EAAI,GAAK,GACzDD,EAAIA,EAAIW,GAAKoC,IAAMuK,EAAIvK,EAAI2pE,GAAKzsE,EAAI,GAAK,GAAK,GAC9CF,IAAMrC,EAAI6C,GAAK9C,GAAK,GAAKsC,EAAG4C,EAAEylP,WAAa1qP,EAAIqC,EAAIrC,EAAI,GAAIsC,GAAK2C,EAAE6pP,YAAczsP,EAAIrC,GACpFgB,EAAEkV,EAAIlR,EACNhE,EAAEmP,EAAIxD,KAAK+c,MAAMpnB,GACjBkB,EAAEiF,KAAM,wBAAyB,CAC/BsW,IAAK/d,EACL4rP,eAAgBvnP,EAChBoxB,MAAO5zB,IAEF7B,CACT,EACA+tE,EAAE5vE,UAAU6vP,aAAe,WACzB,OAAOvmP,KAAKwmE,MAAQxmE,KAAKwmE,MAAMwxK,UAAUh4O,KAAKikL,KAAKuiE,MAAQ,SAAW,SAAW,CACnF,EACAlgL,EAAE5vE,UAAU+vP,YAAc,SAAUlqP,EAAG1C,EAAGtC,EAAG4P,EAAGm/D,EAAG1pE,GACjD,OAAOA,EAAEgiP,UAAU,CAAC,CAAC,IAAKriP,EAAG1C,GAAI,CAAC,IAAK0C,GAAK+pE,EAAI,GAAK/uE,GAAIsC,GAAKysE,EAAI/uE,EAAI,KAAM4P,EAC9E,EACAm/D,EAAE5vE,UAAUgwP,eAAiB,SAAUnqP,GACrC,IAAI1C,EAAImG,KAAKikL,KACX1sL,EAAIsC,EAAE+7B,QAAQ0wI,OACdhgG,EAAI/pE,EAAEkR,EACN7Q,EAAI/C,EAAEywO,MAAMwb,WACZ/qP,EAAIlB,EAAEywO,MAAMoD,QACZtzO,EAAI+M,EAAEtN,EAAE8sP,UAAWziP,KAAKqL,IAAI1V,EAAEyc,IAAKvb,EAAE,KACvCA,EAAIoM,EAAEtN,EAAE+sP,WAAY1iP,KAAKI,IAAIzK,EAAEgtP,SAAW,EAAIhtP,EAAEyc,IAAMzc,EAAEoG,IAAKrD,EAAI7B,EAAE,KACnE,IAYEuM,EAZEhQ,EAAI0I,KAAKwmE,MACXhqE,EAAIwD,KAAKi2O,SACT1vK,EAAI,CACFrkB,KAAM,EACN4uJ,OAAQ,GACR9zJ,MAAO,GACPnjD,EAAEysP,YAAchvP,EAAEqnC,KAAK,UACzB7kC,EAAIxC,EAAE0gP,UAAUj8L,MAChBniD,EAAIC,EAAEsrP,aAAanlP,MACnBm8M,EAAI,CAAC,EACL1uM,EAAI7T,EACJomN,EAAI,EAEFxjN,GAAK,YAAcjF,EAAE2G,SAAU,EAAI1B,GAAK8pE,EAAIC,EAAIzsE,EAAIM,EAAIkN,EAAIpD,KAAK+c,MAAMqlD,EAAIpiE,KAAKg/C,IAAI1mD,EAAIorC,GAAKxtC,GAAK,EAAIoC,GAAK8pE,EAAIC,EAAIzsE,EAAIiB,IAAMuM,EAAIpD,KAAK+c,OAAOrkB,EAAI0pE,GAAKpiE,KAAKg/C,IAAI1mD,EAAIorC,MAAchrC,EAAI0pE,GAAK,EAAIC,GAAKzsE,EAAGwsE,EAAIC,EAAIzsE,EAAIM,EAAIqT,EAAIlR,EAAEkR,EAAIA,GAAK,EAAI84D,GAAKnsE,EAAIwC,EAAI7B,IAAM0S,EAAI1S,EAAIwB,EAAEkR,EAAIA,EAAI84D,EAAGy5I,GAAK,IAAIvyM,EAAIvJ,KAAKqL,IAAI3V,EAAG6T,IAAQ7T,GAAK,WAAaC,EAAEysP,aAAe/pP,EAAEkR,GAAKuyM,GAAKpmN,EAAI6T,EAAI84D,GAAK3sE,EAAIsK,KAAKqL,IAAIzV,EAAG2T,OAAO3T,EAAI2T,GAAK5T,EAAE0nP,eAAiBjqP,EAAEmoD,QAAU,CAAC,GAAG1D,SAAOz0C,EAAImG,IAChcnG,IAAMtH,KAAKklP,aAAellP,KAAKklP,gBAAkB/oC,EAAEpgK,MAAQ73C,KAAKwF,MAAMpC,GAAK,MAAO/P,EAAE03C,OAAS,CAAC,GAAGyhM,eAAiBv0B,EAAEu0B,aAAe,YAAap5O,EAAE63C,IAAIgtK,IACxJ,EACA71I,EAAE5vE,UAAU2uP,UAAY,SAAU9oP,EAAGhF,GACnC,IAAI4P,EAAInH,KACNsmE,EAAIn/D,EAAEq/D,MACN5pE,EAAIuK,EAAE88K,KACN1rL,EAAIqE,EAAEslP,SACN9nP,GAAI,EAIN,GAHAksE,GAAKA,EAAE+tK,UAAY93O,GAAK4K,EAAEm+O,WAAah/K,EAAGlsE,GAAI,SAAW+M,EAAEq/D,OAAS3sE,EAAE+C,EAAEkqP,OAAO,SAAUtqP,GACvFpC,GAAKoC,EAAEynP,OAASznP,IAAM2K,IAAM3K,EAAEgqE,OAAShqE,EAAEgqE,MAAM6tK,UAAY93O,IAAM4K,EAAEm+O,WAAa9oP,EAAEgqE,MAAOpsE,GAAI,EAAIoC,EAAEuqP,SAAW5/O,EAAEm+O,WAAW0B,UAAWxqP,EAAEgqE,MAC1I,KACKpsE,IAAM+M,EAAE4/O,UAAYzgL,GAAI,CAC3B,IAAIhvE,EAAI6P,EAAE4/O,UAAYzgL,EAAE0gL,GACxB1gL,EAAI1pE,EAAE4pP,MAAQjuP,EAAI,EAAIqE,EAAEm/C,MAAQn/C,EAAEslD,KAAO5qD,EAAEmW,EAC3C7Q,EAAIA,EAAE4pP,MAAQlvP,EAAEoQ,EAAInP,EAAIqE,EAAEm/C,MAAQn/C,EAAEslD,KAAO,EAC3C/6C,EAAEm+O,WAAan+O,EAAEo+O,YAAY,CAC3B93O,EAAG64D,EACH5+D,EAAG9K,GACFL,EAAGhF,GACN4P,EAAEm+O,YAAcn+O,EAAEm+O,WAAW3mN,KAAK,CAChC0hB,QAAS,GAEb,CACF,EACAimB,EAAE5vE,UAAUgyG,OAAS,SAAUnsG,EAAG1C,EAAGtC,GACnC,IAAI+uE,EAAItmE,KAAKikL,KACXrnL,EAAI0pE,EAAEkgL,MACNjuP,EAAIyH,KAAKsW,IACTlc,EAAI+M,EAAEnH,KAAKmkP,eAAgB79K,EAAE69K,gBAE/B/pP,GADA7B,EAAIyH,KAAKylP,YAAY7oP,EAAGrE,EAAG6B,EAAGP,IACxB4T,EACN,IAAInW,EAAIiB,EAAEmP,EACV4+D,EAAI1pE,GAAKxC,IAAMksE,EAAEhwD,IAAMgwD,EAAErmE,MAAQrD,GAAKtF,IAAMgvE,EAAEhwD,KAAO,EAAI,EACzD1Z,EAAIuK,EAAE5P,EAAGyI,KAAKwmE,OAASxmE,KAAKwmE,MAAMygL,WAAY,GAC9C1vP,EAAI4P,EAAE5P,EAAG,GACTyI,KAAKy8E,UAAW,EAChBz8E,KAAKknP,eAAertP,EAAGtC,EAAG+uE,GAC1BtmE,KAAKmnP,WAAW5uP,EAAGhB,EAAG+uE,GACtBtmE,KAAKonP,YAAY7uP,EAAGsB,EAAG+C,EAAGL,GAC1ByD,KAAKikP,OAAQ,EACblpP,EAAEiF,KAAM,cACV,EACAsmE,EAAE5vE,UAAUwwP,eAAiB,SAAU3qP,EAAG1C,EAAGtC,GAC3C,IAAI+uE,EAAItmE,KAAKikL,KACXrnL,EAAI0pE,EAAE1wC,QACNr9B,EAAI,CAAC,EACL6B,EAAI4F,KAAKsW,IACThf,EAAI0I,KAAK/G,KACTuD,EAAI2K,EAAEnH,KAAKmkP,eAAgB79K,EAAE69K,gBAC7B59K,EAAID,EAAEgkK,MAAM3hI,SACZ7uG,EAAIkG,KAAKqnP,SACTztP,EAAIgD,EAAEwmP,cACNjnC,EAAIv/M,EAAEumP,cACN11O,EAAI7Q,EAAEykP,kBACR,UAAYrhP,KAAK/G,OAASW,EAAIgD,EAAEmmP,mBAAoB5mC,EAAIv/M,EAAEkmP,mBAAoBr1O,EAAI7Q,EAAEilP,wBACpF/nP,IAAMwsE,EAAEgkK,MAAM+C,aAAe90O,EAAEu9O,OAAS35B,EAAG5jN,EAAE,gBAAkBqB,GAAK,EAAGrB,EAAE+uP,UAAY75O,GAAInW,IAAMiB,EAAEgpD,OAAS,GAAIhlD,IAAM1C,EAAI,GAAImG,KAAKqnP,SAAWvtP,EAAIysE,EAAE+xB,OAAO35D,KAAKpmC,GAAG0vD,SAAS,eAAiB3wD,EAAIA,EAAI,IAAM,IAAM,aAAagb,IAAIg0D,EAAEihL,YAC9NztP,IAAMvC,EAAI+uE,EAAEkhL,gBAAgB,CAC9BjtP,MAAOH,EAAIoC,EACX0mP,UAAWppP,EAAEu8O,cAAgB9+O,EAC7B0wH,MAAO,OACPtsE,IAAKp/C,MACFzC,EAAEyC,GAAKyD,KAAKikP,MAAQ,OAAS,WAAW,CAC3CnqP,EAAGvC,EACH8oD,QAASxmD,GAEb,EACAysE,EAAE5vE,UAAUywP,WAAa,SAAU5qP,EAAG1C,EAAGtC,GACvC,IAAI+uE,EAAItmE,KAAKikL,KACXrnL,EAAI0pE,EAAE1wC,QACNr9B,EAAI+tE,EAAEgkK,MAAM3hI,SACZvuG,EAAI4F,KAAK/G,KACT3B,EAAIgvE,EAAEmhL,SAASrtP,EAAIA,EAAI,OAAS,QAChCoC,EAAID,EAAEkR,EACRlR,EAAIA,EAAEmL,EACN,IAAI6+D,EAAIp/D,EAAEvK,EAAE,UAAYxC,EAAI,YAAc,mBAAoBA,GAAKksE,EAAEohL,QAAU,EAAI,GACnF9qP,EAAIA,EAAE,UAAYxC,EAAI,YAAc,kBACpC,IAAIN,EAAIkG,KAAKykO,KACX7qO,GAAKE,EACPxC,IAAMgvE,EAAE27K,WAAa3qP,EAAE,IAAMA,EAAE,IAAKwC,IAAMkG,KAAKykO,KAAO3qO,EAAIvB,EAAE+/F,OAAOrwC,SAAS,eAAiB7tD,EAAIA,EAAI,IAAM,IAAM,QAAQkY,IAAIg0D,EAAEqhL,WAAYrhL,EAAEgkK,MAAM+C,YAAcvzO,EAAE6kC,KAAK,CACtKm3M,OAAQl5O,EACR,eAAgB2pE,KACbzsE,EAAEF,EAAI,OAAS,WAAW,CAC7BE,EAAGkG,KAAKymP,YAAYjqP,EAAGD,EAAGjF,EAAE,GAAIwC,EAAEu8O,cAAgB9+O,EAAG+uE,EAAEkgL,MAAOjuP,GAC9D8nD,QAASxmD,IAEb,EACAysE,EAAE5vE,UAAU0wP,YAAc,SAAU7qP,EAAG1C,EAAGtC,EAAG+uE,GAC3C,IAAI/tE,EAAIyH,KAAKikL,KACXlpL,EAAIxC,EAAEiuP,MACNpsP,EAAI7B,EAAEq9B,QACNt+B,EAAI0I,KAAKwmE,MACThqE,EAAIpC,EAAEksK,OACN//F,EAAI/pE,EAAEomD,KACRrqD,EAAI4O,EAAEnH,KAAKmkP,eAAgB5rP,EAAE4rP,gBAC7B,IAAIrqP,EAAIyC,EAAEkR,EACVlR,EAAIA,EAAEmL,EACN,IAAI9N,GAAI,EACRtC,GAAKsF,EAAE9C,KAAOxC,EAAE0vP,GAAKzqP,EAAIyD,KAAK+lP,iBAAiBjsP,EAAGyC,EAAGjF,EAAGyD,EAAGyB,EAAGjE,EAAG+tE,EAAGC,GAAIvmE,KAAK6kP,UAAY7kP,KAAK8kP,SAAW1qP,EAAEioP,gBAAkBriP,KAAK8kP,SAAW9kP,KAAK6kP,UAAYzqP,EAAEkoP,cAAgB1oP,GAAI,GAAMmB,GAAKyB,EAAEomD,MAAQpmD,EAAEy5O,UAAYp8O,GAAK,IAAMtC,GAAKyI,KAAK0mP,eAAenqP,GAAIgqE,GAAKD,EAAIC,IAAM3sE,GAAI,GAAKA,GAAKgD,EAAEL,EAAEmL,IAAMnL,EAAE8jD,QAAU9oD,EAAGD,EAAE0I,KAAKgkP,WAAa,OAAS,WAAWznP,GAAIyD,KAAKgkP,YAAa,IAAO1sP,EAAEqnC,KAAK,KAAM,MAAO3+B,KAAKgkP,YAAa,GACla,EACA19K,EAAE5vE,UAAUkxP,kBAAoB,WAC9B,IAAIrrP,EAAIyD,KAAKwmE,MACX3sE,EAAImG,KAAKikL,KACT1sL,EAAIsC,EAAEqoP,SACR,GAAI3lP,IAAMyD,KAAKikP,MAAO,CACpB,IAAI39K,EAAIzsE,EAAE2sP,MAAQjvP,EAAIsC,EAAEqoD,KAAOroD,EAAEkiD,MAAQliD,EAAEqoD,KAAO3lD,EAAEyqP,GAAGv5O,EACvDlW,EAAIsC,EAAE2sP,MAAQjqP,EAAEyqP,GAAGt/O,EAAInQ,EAAIsC,EAAEkiD,MAAQliD,EAAE6jC,IAAM7jC,EAAE6jC,IAC/CnhC,EAAEypD,QAAQ,CACRv4C,EAAG64D,EACH5+D,EAAGnQ,EACH8oD,QAAS,QACR,EAAQ9jD,EAAE0gF,gBACNj9E,KAAKwmE,KACd,CACA3sE,EAAEguP,SAAU,EACZ7nP,KAAKwmE,MAAQxmE,KAAKslP,kBACXtlP,KAAKslP,UACd,EACOh/K,CACT,CA5QI,GA8QGl9D,CACT,IACA5B,EAAEjL,EAAG,oBAAqB,CAACA,EAAE,wCAAyCA,EAAE,6BAA8BA,EAAE,uBAAwBA,EAAE,0BAA2BA,EAAE,sBAAuBA,EAAE,mBAAoBA,EAAE,qBAAsBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,EAAGC,EAAGC,GAC1R,IAAIruE,EAAI7/J,EAAEk2O,WACR13O,EAAIopJ,EAAEpyC,eACNn1G,EAAI8K,EAAEq8O,qBACNxsP,EAAIgzO,EAAEd,QACN5vO,EAAI4wO,EAAEa,SACNnkO,EAAIsjO,EAAEc,SACNjlK,EAAImkK,EAAE9uE,MACNr0J,EAAImjO,EAAEgB,aACNlzO,EAAIkyO,EAAEiB,QACNtB,EAAIK,EAAEkB,wBACNnxO,EAAIiwO,EAAEoB,MACNxB,EAAII,EAAEhyO,MACNqyO,EAAIL,EAAEntO,OACNlD,EAAIqwO,EAAEI,UACNvzO,EAAImzO,EAAEsB,aACNvvO,EAAIiuO,EAAExuO,QACNsqE,EAAIkkK,EAAE3tO,SACNhD,EAAI2wO,EAAE5lN,SACNjrB,EAAI6wO,EAAEz1M,MACNmnL,EAAIsuB,EAAE4B,sBACN5+N,EAAIg9N,EAAE6B,WACNtsB,EAAIyqB,EAAEgC,KACNxmK,EAAIwkK,EAAEkC,eACN/kM,EAAI6iM,EAAE91L,YACNm9G,EAAI24E,EAAEmC,MACNiR,EAAIpT,EAAEsC,YAu+BR,OAt+BAxwO,EAAI,WACF,SAASA,EAAEC,EAAG1C,GACZkG,KAAKmhP,YAAcnhP,KAAK+7C,MAAQ/7C,KAAKowD,QAAUpwD,KAAK8nP,YAAc9nP,KAAK+nP,iBAAmB/nP,KAAK4lP,OAAS5lP,KAAKgmP,OAAShmP,KAAK09B,IAAM19B,KAAK8mP,MAAQ9mP,KAAKmmP,YAAcnmP,KAAKskP,cAAgBtkP,KAAKmkP,eAAiBnkP,KAAKukP,aAAevkP,KAAKgoP,WAAahoP,KAAKiwM,KAAOjwM,KAAKmrO,OAASnrO,KAAKg9C,MAAQh9C,KAAKioP,mBAAqBjoP,KAAKsW,IAAMtW,KAAKkoP,kBAAoBloP,KAAKmoP,WAAanoP,KAAKooP,wBAA0BpoP,KAAKqoP,kBAAoBroP,KAAKsoP,YAActoP,KAAKuoP,QAAUvoP,KAAK41B,QAAU51B,KAAKwhB,OAASxhB,KAAKyX,MAAQzX,KAAKwoP,gBAAkBxoP,KAAKyoP,WAAazoP,KAAK0oP,kBAAoB1oP,KAAKuP,IAAMvP,KAAK2oP,eAAiB3oP,KAAKsE,IAAMtE,KAAKC,IAAMD,KAAKkiD,KAAOliD,KAAKqwO,eAAiBrwO,KAAK4oP,UAAY5oP,KAAKimP,SAAWjmP,KAAKk+C,OAASl+C,KAAK6oP,iBAAmB7oP,KAAK8oP,SAAW9oP,KAAK80D,aAAe90D,KAAK+oP,KAAO/oP,KAAKgpP,kBAAoBhpP,KAAKsqO,MAAQtqO,KAAKmnO,WAAannO,KAAK84J,OAAS94J,KAAKipP,oBAAiB,EAC31BjpP,KAAKu0B,KAAK/3B,EAAG1C,EACf,CA+9BA,OA99BAyC,EAAE7F,UAAU69B,KAAO,SAAU/3B,EAAG1C,GAC9B,IAAIyC,EAAIzC,EAAEovP,IACVlpP,KAAKsqO,MAAQ9tO,EACbwD,KAAKwmP,MAAQhqP,EAAE43O,WAAap0O,KAAKmpP,SAAW5sP,EAAIA,EAChDyD,KAAK0nP,QAAUnrP,EACfyD,KAAK+oP,KAAO/oP,KAAK+oP,OAASxsP,EAAI,QAAU,SACxCnC,EAAE4F,KAAM,OAAQ,CACd8nP,YAAahuP,IAEfkG,KAAKiiP,SAAWjiC,EAAElmN,EAAEmoP,SAAUjiP,KAAKiiP,UACnCjiP,KAAKiwM,KAAO+P,EAAElmN,EAAEm2M,KAAMjwM,KAAKiwM,KAAMjwM,KAAKwmP,MAAQxmP,KAAKiiP,SAAW,EAAI,EAAIjiP,KAAKiiP,SAAW,EAAI,GAC1FjiP,KAAK8xO,WAAWh4O,GAChB,IAAID,EAAImG,KAAK41B,QACXr+B,EAAIsC,EAAEysK,OACN1sK,EAAIC,EAAEZ,KACR+G,KAAK8nP,YAAchuP,EACnBkG,KAAKwoP,gBAAkB,EACvBxoP,KAAKkiP,SAAWliC,EAAEnmN,EAAEqoP,SAAUliP,KAAKkiP,UACnCliP,KAAKowD,QAAUv2D,EAAEu2D,QACjBpwD,KAAKmhP,YAActnP,EAAEsnP,YACrBnhP,KAAK8oP,SAAW,aAAelvP,IAAK,IAAOC,EAAEstO,WAC7CnnO,KAAKmnO,WAAattO,EAAEstO,YAAcnnO,KAAK8oP,SACvC9oP,KAAKyX,QAAUzX,KAAKyX,MAAQ,GAAIzX,KAAKyX,MAAMxV,KAAO,CAAC,GACnDjC,KAAKooP,wBAA0B,CAAC,EAChCpoP,KAAKioP,qBAAuBjoP,KAAKqkP,YACjCrkP,KAAKimP,SAAW1tP,EAAEsB,EAAEuvP,UACpBppP,KAAK8mP,MAAQ,CAAC,EACd9mP,KAAK4oP,UAAY,GACjB5oP,KAAKyoP,WAAa,CAAC,EACnBzoP,KAAKqoP,kBAAoB,GACzBroP,KAAKipP,eAAiB,CAAC,EACvBjpP,KAAKC,IAAM,EACXD,KAAKqpP,SAAWrpP,KAAKspP,aAAezvP,EAAEwvP,UAAYxvP,EAAE0vP,QACpDvpP,KAAKowH,MAAQv2H,EAAEu2H,MACfpwH,KAAKwhB,OAAS3nB,EAAE2nB,QAAU,EAC1BxhB,KAAKuP,IAAMvP,KAAKsE,IAAM,KACtBxK,EAAIkmN,EAAEnmN,EAAE2vP,UAAW13F,EAAEt1J,EAAEo5B,QAAQowK,QAAQyjD,YAAYltP,EAAI,EAAI,IAC3DyD,KAAKwpP,WAAY,IAAO1vP,EAAI,CAAC,EAAIA,GAChC,IAAM0C,EAAEktP,KAAK58O,QAAQ9M,QAAUzD,EAAIC,EAAEktP,KAAK/zN,OAAOn5B,EAAEmtP,MAAMnzP,OAAQ,EAAGwJ,MAAQxD,EAAEktP,KAAK5yP,KAAKkJ,MAAOxD,EAAEwD,KAAK+oP,MAAMjyP,KAAKkJ,OAClHA,KAAKmrO,OAASnrO,KAAKmrO,QAAU,GAC7B3uO,EAAE43O,WAAap0O,KAAKmpP,SAAW5sP,GAAK,qBAAuByD,KAAKkiP,WAAaliP,KAAKkiP,UAAW,GAC7FliP,KAAK4pP,cAAgBrjL,EAAEhvE,EAAE0+O,UAAY1+O,EAAE0+O,cAAW,EAClDr5O,EAAEoD,KAAMnG,GACRO,EAAE4F,KAAM,YACV,EACAzD,EAAE7F,UAAUo7O,WAAa,SAAUt1O,GACjCwD,KAAK41B,QAAUh8B,EAAEwP,EAAE23O,oBAAqB,UAAY/gP,KAAK+oP,MAAQ3/O,EAAEk6O,oBAAqB,CAACl6O,EAAE06O,sBAAuB16O,EAAEw6O,wBAAyBx6O,EAAEy6O,yBAA0Bz6O,EAAEu6O,wBAAwB3jP,KAAKiwM,MAAOr2M,EAAEmB,EAAEiF,KAAK+oP,MAAOvsP,IAC/NpC,EAAE4F,KAAM,kBAAmB,CACzB8nP,YAAatrP,GAEjB,EACAD,EAAE7F,UAAUuuP,sBAAwB,SAAUzoP,GAC5C,IAAI1C,EAAIkG,KAAKikL,KACbznL,EAAIwD,KAAKsqO,MAAMoJ,gBACf,IAAIn3O,EAAIgqE,EAAEvmE,KAAKzF,OAASyF,KAAKzF,MAAQuF,IACnCjG,EAAIC,EAAEwwO,MAAMxkN,KACZvuB,EAAIyI,KAAK+kP,oBACTnrP,EAAImB,EAAEotB,KACN7wB,EAAIsC,EAAE81O,eACR91O,EAAIA,EAAEiwP,wBAA0B,IAChC,IAAIvjL,EAAIxsE,EAAEuqP,YAAcngP,KAAKC,IAAI5H,GAAKzC,EAAEyqP,aACtCp9O,EAAI7P,GAAKA,EAAEd,OACb,GAAIsD,EAAEqtO,WAAY,IAAI/sO,EAAI,GAAK4F,KAAKzF,WAAW,GAAIhD,EAAG6C,EAAIP,EAAEogB,WAAW1iB,EAAGgF,QAAQ,GAAI4K,GAAK,KAAOm/D,EAAG,KAAOn/D,KAAO,qBAAuB/M,GAA4BksE,IAAxBxsE,EAAIoK,KAAKG,IAAIzK,EAAGuN,EAAI,KAAc,IAAM,GAAK5K,EAAIzC,GAAK,OAASxC,EAAE6P,IAAM,IAAM5K,IAAMnC,EAAIoC,EAAED,EAAIzC,GAAI,GAAKxC,EAAE6P,IAEtP,MADA,qBAAuB/M,IAAMA,EAAI,KAAO8J,KAAKC,IAAI5H,GAAKC,EAAED,GAAI,GAAKC,EAAED,GAAI,OAAG,EAAQ,KAC3EnC,CACT,EACAmC,EAAE7F,UAAUozP,kBAAoB,WAC9B,IAEEvtP,EAFEC,EAAIwD,KACNlG,EAAI0C,EAAE8tO,MAERlwO,EAAE4F,KAAM,oBAAqB,MAAM,WACjCxD,EAAEqsP,kBAAmB,EACrBrsP,EAAEutP,QAAUvtP,EAAEwtP,QAAUxtP,EAAEu0B,UAAY,KACtCv0B,EAAEytP,eAAiBztP,EAAEkrP,QACrBlrP,EAAE0tP,UAAY1tP,EAAE0tP,SAASC,cACzB3tP,EAAE2uO,OAAO7yN,SAAQ,SAAUze,GACzB,GAAIA,EAAEu2D,UAAYt2D,EAAE87B,QAAQ00M,MAAMmD,mBAAoB,CACpD,IAAIl2O,EAAIsC,EAAE+7B,QACRh8B,EAAIrC,EAAEw5B,UAGR,GAFAv0B,EAAEqsP,kBAAmB,EACrBrsP,EAAEyrP,oBAAsB,GAAKruP,IAAMA,EAAI,MACnC4C,EAAEkrP,SACJ,IAAInwP,EAAIsC,EAAEuwP,OAAS5zP,OAAQ,CACzBe,EAAIiF,EAAE6nP,YAAc9sP,EAAEiuB,OAAOhpB,EAAE6tP,uBAAyB9yP,EAExD,IAAID,GADJiF,EAAI1C,EAAEywP,aAAa/yP,IACTgY,IACN+2D,EAAI/pE,EAAE+H,IACViiE,EAAEjvE,IAAMA,aAAa0F,OAASzF,EAAIA,EAAEiuB,OAAO+gD,GAA2BjvE,GAAvBiF,EAAI1C,EAAEywP,aAAa/yP,IAAUgY,IAAK+2D,EAAI/pE,EAAE+H,KACvF/M,EAAEf,SAAWgG,EAAEutP,QAAU7lP,KAAKqL,IAAIywM,EAAExjN,EAAEutP,QAASzyP,GAAIA,GAAIkF,EAAEwtP,QAAU9lP,KAAKI,IAAI07M,EAAExjN,EAAEwtP,QAAS1jL,GAAIA,GAC/F,OACSzsE,EAAIA,EAAE0wP,gBAAiBhkL,EAAE1sE,EAAEkwP,WAAazyP,EAAIuC,EAAEkwP,QAASvtP,EAAEutP,QAAU7lP,KAAKqL,IAAIywM,EAAExjN,EAAEutP,QAASzyP,GAAIA,IAAKivE,EAAE1sE,EAAEmwP,WAAa1jL,EAAIzsE,EAAEmwP,QAASxtP,EAAEwtP,QAAU9lP,KAAKI,IAAI07M,EAAExjN,EAAEwtP,QAAS1jL,GAAIA,IAAK/tE,EAAEqB,KAAO4C,EAAEu0B,UAAYn3B,KAAKrC,EAAE0yP,eAAiBztP,EAAEyrP,sBAAoBzrP,EAAEytP,eAAgB,EACjR,CACF,GACF,IACA7vP,EAAE4F,KAAM,yBACV,EACAzD,EAAE7F,UAAUg5N,UAAY,SAAUlzN,EAAG1C,EAAGyC,EAAG1C,EAAGtC,EAAGqC,GAC/C,IAAItC,EAAI0I,KAAKkmP,cAAgBlmP,KAC3BsmE,EAAIzsE,GAAKvC,EAAEqkD,IAAMrkD,EAAEqkD,IAAIpsC,IAAMjY,EAAEiY,IAC/BnV,EAAI9C,EAAEkxP,gBACRjxP,GAAKD,EAAEkzP,WAAalzP,EAAEmzP,YAAcnzP,EAAEmzP,WAAWC,WAAapzP,EAAE+sP,aAAe9sP,IAAMD,EAAEqzP,QACvF,IAAIxjP,EAAI,EACNvK,EAAI,EAMN,OALA/C,EAAIA,GAAKvC,EAAEqkD,IAAMrkD,EAAEqkD,IAAIqqM,OAAS1uP,EAAE0uP,UAC5BnsP,EAAIvC,EAAE0uP,QACZzpP,IAAM4K,IAAM,EAAGvK,EAAItF,EAAE2I,KACrB3I,EAAE4qP,WAAsBtlP,IAATuK,IAAM,IAAa7P,EAAEszP,QAAUtzP,EAAE2I,MAChDnG,GAAK0C,GAAKA,EAAI2K,EAAIvK,EAAIxC,GAAKP,EAAIysE,EAAG/uE,IAAMiF,EAAIlF,EAAEqzP,QAAQnuP,MAAQjF,IAAMiF,EAAIlF,EAAEuzP,QAAQruP,IAAKA,EAAI+pE,EAAED,GAAKn/D,GAAK3K,EAAI8pE,GAAKzsE,EAAI+C,EAAIuK,EAAI/M,GAAKmsE,EAAE3sE,GAAKC,EAAID,EAAI,QAAK,GAC9I4C,CACT,EACAD,EAAE7F,UAAUo0P,SAAW,SAAUtuP,EAAG1C,GAClC,OAAOkG,KAAK0vN,UAAUlzN,GAAG,GAAKwD,KAAKwmP,MAAO,MAAM,IAAO1sP,EAAI,EAAIkG,KAAKsW,IACtE,EACA/Z,EAAE7F,UAAUk5M,QAAU,SAAUpzM,EAAG1C,GACjC,OAAOkG,KAAK0vN,UAAUlzN,GAAK1C,EAAI,EAAIkG,KAAKsW,MAAM,GAAKtW,KAAKwmP,MAAO,MAAM,EACvE,EACAjqP,EAAE7F,UAAU8wP,gBAAkB,SAAUhrP,GACtC,SAAS1C,EAAE0C,EAAG1C,EAAGyC,GAEf,OADI,SAAWxB,GAAKyB,EAAI1C,GAAK0C,EAAID,KAAGxB,EAAIyB,EAAI8pE,EAAE9pE,EAAG1C,EAAGyC,GAAK6tO,GAAI,GACtD5tO,CACT,CACA,IAYEhC,EACAswO,EACAxjO,EACA80J,EACAguE,EAhBE7tO,EAAIyD,KACNnG,EAAI0C,EAAE+tO,MACN/yO,EAAIgF,EAAE2lD,KACNtoD,EAAI2C,EAAEmhC,IACNpmC,EAAIkF,EAAEm/C,IACNx0C,EAAI3K,EAAEjC,MACNqC,EAAIJ,EAAE0mP,UACNz1O,EAAInW,GAAKuC,EAAE6rP,gBAAkB7rP,EAAE8rP,YAC/BxpC,EAAI7kN,GAAKuC,EAAEgsP,eAAiBhsP,EAAEisP,WAC9B7/O,EAAI1J,EAAEqpP,OACNrtP,EAAIiE,EAAEuuP,gBACNhwP,EAAIyB,EAAEyrH,MAsBR,OAhBAzrH,EAAI,CACFjC,MAAO4M,EACP+7O,UAAWtmP,EACX++C,IAAKrkD,EACL2wH,MAAOltH,EACPiwP,YAAaxuP,EAAEwuP,YACfD,gBAAiBxyP,GAEnB6B,EAAE4F,KAAM,kBAAmBxD,GAAG,SAAUA,GACtCjE,EAAIynN,EAAEznN,EAAGgE,EAAEmzN,UAAUvoN,EAAG,KAAM,KAAM7P,IACpCiB,EAAI+tE,EAAE/tE,GAAI,IAAK,KACfiC,EAAI8M,EAAIpD,KAAK+c,MAAM1oB,EAAI0N,GACvB6kO,EAAI1uE,EAAIl4J,KAAK+c,MAAMxT,EAAIlV,EAAI0N,GAC3BsgE,EAAEhuE,GAAKgE,EAAEiqP,OAAS1b,EAAIlxO,EAAGwiK,EAAI3uJ,EAAIlR,EAAEu8J,OAAQt+J,EAAI8M,EAAIxN,EAAEU,EAAGjD,EAAGA,EAAIgF,EAAEw/C,SAAWvhD,EAAIjD,EAAG+P,EAAI60M,EAAI5/M,EAAEygD,MAAO8tL,EAAI1uE,EAAItiK,EAAEgxO,EAAGlxO,EAAGA,EAAI2C,EAAE2hD,UAAYksL,GAAI,EAAIrvO,GAAI,GAClJyB,EAAE87F,KAAO8xI,IAAMrvO,EAAI,KAAOlB,EAAE8uG,SAASi2I,UAAU,CAAC,CAAC,IAAKpkP,EAAGswO,GAAI,CAAC,IAAKxjO,EAAG80J,IAAKx/J,GAAK,EAClF,IACOJ,EAAE87F,IACX,EACA/7F,EAAE7F,UAAUu0P,uBAAyB,SAAUzuP,EAAG1C,EAAGyC,GACnD,IAAI1C,EAAIyN,EAAEpD,KAAKwF,MAAM5P,EAAI0C,GAAKA,GAC9BD,EAAI+K,EAAEpD,KAAKuF,KAAKlN,EAAIC,GAAKA,GACzB,IACE+pE,EADEhvE,EAAI,GAGR,GADA+P,EAAEzN,EAAI2C,KAAO3C,IAAM0sE,EAAI,IACnBvmE,KAAKkrP,OAAQ,MAAO,CAACpxP,GACzB,IAAKA,EAAID,EAAGC,GAAKyC,IACfhF,EAAET,KAAKgD,IACPA,EAAIwN,EAAExN,EAAI0C,EAAG+pE,MACH3sE,IACV,IAAIA,EAAIE,EAEV,OAAOvC,CACT,EACAgF,EAAE7F,UAAUy0P,qBAAuB,WACjC,IAAI3uP,EAAIwD,KAAK41B,QACb,OAAO,IAAOp5B,EAAEisP,WAAazoC,EAAExjN,EAAEksP,kBAAmB,SAAU,IAAOlsP,EAAEisP,WAAa,KAAOjsP,EAAEksP,iBAC/F,EACAnsP,EAAE7F,UAAU00P,sBAAwB,WAClC,IAAI5uP,EAAIwD,KAAK41B,QACX97B,EAAIkG,KAAKskP,cACT/nP,EAAIyD,KAAK0oP,kBACT7uP,EAAImG,KAAKkoP,mBAAqB,EAC9B3wP,EAAIyI,KAAKuP,IAAM1V,EAEb0sE,GADJ1sE,EAAImG,KAAKsE,IAAMzK,GACHtC,EACVqC,EAAI,GACN,GAAI2sE,GAAKA,EAAIhqE,EAAIyD,KAAKC,IAAM,EAAG,CAC7B,IAAI3I,EAAI0I,KAAKqkP,YACb,GAAI/sP,EAAG0I,KAAKsoP,YAAYhwO,SAAQ,SAAU9b,EAAG1C,EAAGD,GAC9CC,GAAKF,EAAE9C,KAAK+E,MAAMjC,EAAGtC,EAAE+zP,oBAAoB9uP,EAAG1C,EAAEC,EAAI,GAAID,EAAEC,IAAI,GAChE,SAAQ,GAAIkG,KAAK0kP,UAAY,SAAW1kP,KAAKmrP,uBAAwBvxP,EAAIA,EAAEiZ,OAAO7S,KAAKmvO,aAAanvO,KAAK0kP,SAAS4G,0BAA0B/uP,GAAIhF,EAAGsC,EAAG2C,EAAE+lP,mBAAmB,IAAK/lP,EAAIjF,GAAKuC,EAAE,GAAKvC,GAAKgF,EAAGC,GAAK3C,GAAK2C,IAAM5C,EAAE,GAAI4C,GAAKD,EAAG3C,EAAE9C,KAAK0F,EAC/O,CAEA,OADA,IAAM5C,EAAEpD,QAAUwJ,KAAKurP,UAAU3xP,GAC1BA,CACT,EACA2C,EAAE7F,UAAU80P,kBAAoB,WAC9B,IAKE5xP,EACAtC,EACAgvE,EACAlsE,EAREoC,EAAIwD,KAAK41B,QACX97B,EAAIkG,KAAKqkP,YACT9nP,EAAIyD,KAAKuP,IACThY,EAAIyI,KAAKsE,IACTiiE,EAAI,EAUN,GALAvmE,KAAK0nP,SAAW,qBAAuB1nP,KAAKqpP,WAAavvP,IAAMvB,EAAEiE,EAAE+S,MAAQhX,EAAEiE,EAAE8H,MAAQ/L,EAAEiE,EAAEkN,QAAUnR,EAAEiE,EAAEivP,SAAWzrP,KAAKqpP,SAAW,MAAQrpP,KAAKmrO,OAAO7yN,SAAQ,SAAU9b,GAGxK,GAFA8pE,EAAI9pE,EAAE4tP,MACNhwP,EAAIoC,EAAEkvP,WAAa,EAAIplL,EAAE9vE,OAAS,EAC9B,EAAI8vE,EAAE9vE,OAAQ,IAAKoD,EAAIQ,EAAG,EAAIR,EAAGA,IAAStC,EAAIgvE,EAAE1sE,GAAK0sE,EAAE1sE,EAAI,KAAK2sE,GAAKjvE,EAAIivE,KAAGA,EAAIjvE,EACtF,IAAI0I,KAAKqpP,SAAWnlP,KAAKqL,IAAI,EAAIg3D,EAAGvmE,KAAKgqP,QAAUhqP,KAAK+pP,WACpDxyP,EAAIgF,EAAIyD,KAAKqpP,SAAU,CACzB,IAAIzsP,EAAIoD,KAAKgqP,QAAUhqP,KAAK+pP,SAAW/pP,KAAKqpP,SACxC57O,EAAIzN,KAAKqpP,SACTltC,GAAK1uM,EAAIlW,EAAIgF,GAAK,EACtB4/M,EAAI,CAAC5/M,EAAI4/M,EAAG6D,EAAExjN,EAAE+S,IAAKhT,EAAI4/M,IACzBv/M,IAAMu/M,EAAE,GAAKn8M,KAAKqkP,YAAcrkP,KAAKqkP,YAAYsH,QAAQ3rP,KAAK+pP,SAAW/pP,KAAK+pP,SAE9ExyP,EAAI,EADJgF,EAAI1C,EAAEsiN,IACG1uM,EAAGuyM,EAAExjN,EAAE8H,IAAK/H,EAAIkR,IACzB7Q,IAAMrF,EAAE,GAAKuC,EAAIA,EAAE6xP,QAAQ3rP,KAAKgqP,SAAWhqP,KAAKgqP,UAChDzyP,EAAI4P,EAAE5P,IACFgF,EAAIkR,IAAM0uM,EAAE,GAAK5kN,EAAIkW,EAAG0uM,EAAE,GAAK6D,EAAExjN,EAAE+S,IAAKhY,EAAIkW,GAAIlR,EAAI1C,EAAEsiN,GAC5D,CACAn8M,KAAKuP,IAAMhT,EACXyD,KAAKsE,IAAM/M,CACb,EACAgF,EAAE7F,UAAUk1P,WAAa,WACvB,IAAIpvP,EAMJ,OALAwD,KAAKmnO,WAAa3qO,EAAI,EAAIwD,KAAKmrO,OAAO7yN,SAAQ,SAAUxe,GACtD,IAAIyC,EAAIzC,EAAEkvP,kBACRnvP,EAAIC,EAAEs2D,UAAYt2D,EAAEwwO,MAAM10M,QAAQ00M,MAAMmD,oBACzC3zO,EAAE+xP,iBAAmBtzP,EAAEgE,IAAM1C,IAAM2C,EAAIjE,EAAEiE,GAAK0H,KAAKqL,IAAI/S,EAAGD,GAAKA,EAClE,IACOC,CACT,EACAD,EAAE7F,UAAUo1P,QAAU,SAAUhyP,GAC9B,IAAIyC,EAAIC,EAAEwD,KAAKmnO,YACbttO,EAAI0C,EAAIyD,KAAKmnO,WAAannO,KAAKyX,MAC/BlgB,EAAIuC,EAAE87B,QAAQnoB,EAGhB,GAFA3T,EAAEqxO,OAAO4gB,gBAAiB,EAC1BxzP,EAAEhB,KAAOA,EAAIyI,KAAK41B,QAAQitN,YAActmP,EAAI1C,EAAEiT,QAAQhT,EAAET,MAAQ2mN,EAAEnmN,EAAEoI,KAAKnI,EAAET,OAAQ,GAAKS,EAAEqxO,OAAO6gB,kBAC5F,IAAMz0P,GACT,IAAKgF,EAAG,IAAIgqE,EAAI1sE,EAAErD,YACb+vE,EAAIhvE,EAEX,MADA,qBAAuBgvE,IAAMvmE,KAAKyX,MAAM8uD,GAAKzsE,EAAET,KAAM2G,KAAKyX,MAAMxV,KAAKnI,EAAET,MAAQktE,GACxEA,CACT,EACAhqE,EAAE7F,UAAUu1P,YAAc,WACxB,IAAIzvP,EAAIwD,KACNlG,EAAIkG,KAAKyX,MACX,EAAI3d,EAAEtD,SAAWC,OAAOwL,KAAKnI,EAAEmI,MAAMqW,SAAQ,SAAU9b,UAC9C1C,EAAEmI,KAAKzF,EAChB,IAAI1C,EAAEtD,OAAS,EAAGwJ,KAAKqpP,SAAWrpP,KAAKspP,cAAetpP,KAAKmrO,QAAU,IAAI7yN,SAAQ,SAAUxe,GACzFA,EAAE4xP,WAAa,KACV5xP,EAAEoyP,SAAUpyP,EAAEqyP,cAAa3vP,EAAE8H,IAAMJ,KAAKI,IAAI9H,EAAE8H,IAAKxK,EAAEswP,MAAM5zP,OAAS,GAAIsD,EAAEoyD,cAAepyD,EAAEsyP,kBAChGtyP,EAAE7D,KAAKqiB,SAAQ,SAAU/b,EAAG1C,GAC1B,GAAI0C,GAAKA,EAAEq5B,SAAW,qBAAuBr5B,EAAElD,KAAM,CACnD,IAAI9B,EAAIiF,EAAEsvP,QAAQvvP,GAClB,qBAAuBhF,GAAKA,IAAMgF,EAAEkR,IAAMlR,EAAEkR,EAAIlW,EAAGuC,EAAEswP,MAAMvwP,GAAKtC,EAClE,CACF,GACF,IACF,EACAgF,EAAE7F,UAAU21P,mBAAqB,WAC/B,IAAI7vP,EAAIwD,KACNzD,EAAIC,EAAE8H,IAAM9H,EAAE+S,IACd1V,EAAI2C,EAAE0pP,aACN3uP,IAAMiF,EAAE2qO,WACR5gK,EAAI/pE,EAAEkrP,QACN9tP,EAAI4C,EAAE8vP,gBAAkB,EACxBh1P,EAAI,EACJgvE,EAAI,EACJn/D,EAAI3K,EAAEwpP,OACR,GAAIz/K,GAAKhvE,GAAKqC,EAAG,CACf,IAAIgD,EAAIJ,EAAEovP,aACV/xP,GAAKvC,EAAIuC,EAAE0yP,eAAgBjmL,EAAIzsE,EAAEquP,mBAAqB1rP,EAAE2uO,OAAO7yN,SAAQ,SAAU/b,GAC/E,IAAI1C,EAAItC,EAAI,EAAIgvE,EAAIy5I,EAAEzjN,EAAEq5B,QAAQuyN,WAAYvrP,EAAG,GAAKJ,EAAE8vP,gBAAkB,EACtEnlP,EAAI5K,EAAEq5B,QAAQ42N,eAChB5yP,EAAIsK,KAAKI,IAAI1K,EAAGC,GACX2C,EAAE0uP,SAAU3zP,IAAGgF,EAAIA,EAAEspC,GAAG,WAAa0gC,EAAIA,EAAGjvE,EAAI4M,KAAKI,IAAIhN,EAAGiF,GAAKzC,EAAEqN,GAAK,EAAItN,EAAI,GAAIysE,EAAIpiE,KAAKI,IAAIgiE,EAAG/pE,GAAK,OAAS4K,EAAI,EAAItN,GACjI,IACAA,EAAI2C,EAAEuI,SAAWvI,EAAEuI,QAAQ0nP,OAAS7vP,EAAIJ,EAAEuI,QAAQ0nP,MAAQ7vP,EAAI,EAC9DJ,EAAE+vP,eAAiBj1P,GAAKuC,EACxB2C,EAAE0rP,kBAAoB5hL,GAAKzsE,EAC3B2C,EAAE2rP,WAAajkP,KAAKqL,IAAI3V,EAAG4C,EAAE0uP,QAAU3zP,EAAI,EAAIgF,GAC/CgqE,IAAM/pE,EAAEwsP,kBAAoBpsP,EAC9B,CACAJ,EAAEurP,iBAAmBvrP,EAAEwpP,OAAS7+O,EAAI3K,EAAEkwP,aAAelwP,EAAEyD,KAAO1D,EAAI+pE,GAAK,GACvE9pE,EAAEopP,OAASppP,EAAEgqP,MAAQhqP,EAAE0lD,KAAO1lD,EAAEs8J,OAChCt8J,EAAEgsP,gBAAkBrhP,EAAI7P,EACxB8C,EAAE4F,KAAM,0BACV,EACAzD,EAAE7F,UAAUi2P,aAAe,WACzB,OAAO3sP,KAAKsE,IAAMtE,KAAKowH,KACzB,EACA7zH,EAAE7F,UAAUk2P,gBAAkB,SAAUpwP,GACtC,IAAI1C,EAAIkG,KAAKsqO,MACX/tO,EAAIyD,KAAKqkP,YACTxqP,EAAImG,KAAK41B,QACTr+B,EAAIyI,KAAK0nP,QACT9tP,EAAIoG,KAAKimP,SACT3/K,EAAIzsE,EAAE6oP,kBACNv7O,EAAInH,KAAKmnO,WACTvqO,EAAIoD,KAAKiqP,cACTx8O,EAAI5T,EAAE+nP,WACN37O,EAAIpM,EAAEmoP,WACNjnP,EAAIwrE,EAAE1sE,EAAE0qP,eAAiB,GAAK1qP,EAAE0qP,aAAe1qP,EAAE0qP,kBAAe,EAChE/pP,EAAI+rE,EAAEvmE,KAAK+wB,WAAa/wB,KAAK+wB,UAAY,KAC3C/wB,KAAK0kP,UAAYv9O,GAAKvN,GAAKoG,KAAK6sP,gBAChC,IAAI/hB,EAAI9qB,EAAEhgN,KAAK8sP,QAASjzP,EAAE0V,KACtB6sJ,EAAI4jD,EAAEhgN,KAAK+sP,QAASlzP,EAAEyK,KAC1B,GAAI1K,EAAG,CACLoG,KAAKkmP,aAAepsP,EAAEkG,KAAK+oP,MAAMlvP,EAAEuvP,UACnC,IAAIhf,EAAIpqO,KAAKkmP,aAAa8G,cAC1BhtP,KAAKuP,IAAMywM,EAAEoqB,EAAE76N,IAAK66N,EAAE2f,SACtB/pP,KAAKsE,IAAM07M,EAAEoqB,EAAE9lO,IAAK8lO,EAAE4f,SACtBnwP,EAAEZ,OAAS+G,KAAKkmP,aAAatwN,QAAQ38B,MAAQoxO,EAAE,GAAI,EAAGvwO,EACxD,KAAO,CACL,GAAI8C,GAAKrE,EAAEiC,GAAI,GAAIwF,KAAK+pP,SAAWvvP,EAAG4vO,EAAI5vO,EAAGyL,EAAI,OAAO,GAAIjG,KAAKgqP,SAAWxvP,EAAG,CAC7E,IAAIyrE,EAAIzrE,EACRiT,EAAI,CACN,CACAzN,KAAKuP,IAAMywM,EAAE8qB,EAAGV,EAAGpqO,KAAK+pP,SACxB/pP,KAAKsE,IAAM07M,EAAE5jD,EAAGn2F,EAAGjmE,KAAKgqP,QAC1B,CAYA,GAXAztP,IAAMyD,KAAKioP,qBAAuBzrP,GAAK,GAAK0H,KAAKqL,IAAIvP,KAAKuP,IAAKywM,EAAEhgN,KAAK+pP,QAAS/pP,KAAKuP,OAAS86N,EAAE,GAAI,EAAGvwO,GAAIkG,KAAKuP,IAAMjI,EAAE/K,EAAEovP,QAAQ3rP,KAAKuP,KAAM,IAAKvP,KAAKsE,IAAMgD,EAAE/K,EAAEovP,QAAQ3rP,KAAKsE,KAAM,KACnLtE,KAAKowH,OAAS73H,EAAEyH,KAAKsE,OAAStE,KAAK8sP,QAAU9sP,KAAKuP,IAAMu7N,EAAI5mO,KAAKI,IAAItE,KAAK+pP,QAAS/pP,KAAK2sP,gBAAiB3sP,KAAK+sP,QAAU3wF,EAAIp8J,KAAKsE,IAAKtE,KAAKowH,MAAQ,MACnJh2H,EAAE4F,KAAM,iBACRA,KAAKitP,eAAiBjtP,KAAKitP,gBAC3BjtP,KAAKwrP,sBACHrkP,GAAKnH,KAAKssP,gBAAkBtsP,KAAKkqP,UAAYlqP,KAAKkqP,SAASgD,eAAiBtzP,IAAMrB,EAAEyH,KAAKuP,MAAQhX,EAAEyH,KAAKsE,OAASxK,EAAIkG,KAAKsE,IAAMtE,KAAKuP,QAAUhX,EAAEuyO,IAAM7kO,IAAMjG,KAAKuP,KAAOzV,EAAImM,IAAK1N,EAAE6jK,IAAM3uJ,IAAMzN,KAAKsE,KAAOxK,EAAI2T,IAClN84D,EAAEvmE,KAAK8sP,WAAavmL,EAAE1sE,EAAEszP,UAAYtzP,EAAEszP,QAAUntP,KAAKuP,MAAQvP,KAAKuP,IAAMu7N,EAAIjxO,EAAEszP,SAAU5mL,EAAE1sE,EAAE6P,SAAW1J,KAAKuP,IAAMrL,KAAKI,IAAItE,KAAKuP,IAAK1V,EAAE6P,SACvI68D,EAAEvmE,KAAK+sP,WAAaxmL,EAAE1sE,EAAEuzP,UAAYvzP,EAAEuzP,QAAUptP,KAAKsE,MAAQtE,KAAKsE,IAAM83J,EAAIviK,EAAEuzP,SAAU7mL,EAAE1sE,EAAE4xP,WAAazrP,KAAKsE,IAAMJ,KAAKqL,IAAIvP,KAAKsE,IAAKzK,EAAE4xP,WACzI7uP,GAAKrE,EAAEyH,KAAK+pP,WAAavvP,EAAIA,GAAK,GAAIjC,EAAEuyO,IAAM9qO,KAAKuP,IAAM/U,GAAKwF,KAAK+pP,SAAWvvP,EAAIwF,KAAKuP,IAAMvP,KAAK41B,QAAQyzN,SAAWnlP,KAAKqL,IAAI/U,EAAGwF,KAAKsE,IAAMtE,KAAKqpP,UAAY7uP,GAAKjC,EAAE6jK,IAAMp8J,KAAKsE,IAAM9J,GAAKwF,KAAKgqP,SAAWxvP,IAAMwF,KAAKsE,IAAMtE,KAAK41B,QAAQyzN,SAAWnlP,KAAKI,IAAI9J,EAAGwF,KAAKuP,IAAMvP,KAAKqpP,UAAY7uP,IAC3R+rE,EAAEvmE,KAAKuP,MAAQg3D,EAAEvmE,KAAKsE,OAAStE,KAAKsqO,MAAM+iB,OAASrtP,KAAKuP,IAAMvP,KAAKsE,MAAQ/L,EAAEyH,KAAK41B,QAAQrmB,KAAOvP,KAAKsE,IAAMtE,KAAKuP,IAAMhX,EAAEyH,KAAK41B,QAAQtxB,OAAStE,KAAKuP,IAAMvP,KAAKsE,MAC/JtE,KAAKukP,aAAevkP,KAAKuP,MAAQvP,KAAKsE,KAAO,qBAAuBtE,KAAKuP,KAAO,qBAAuBvP,KAAKsE,IAAM,EAAI1K,GAAKoG,KAAKkmP,eAAiBnrP,GAAKurE,IAAMtmE,KAAKkmP,aAAatwN,QAAQ8sN,kBAAoB3nP,EAAIiF,KAAKkmP,aAAa3B,aAAevkC,EAAEjlN,EAAGiF,KAAKgoP,YAAchoP,KAAKsE,IAAMtE,KAAKuP,KAAOrL,KAAKI,IAAItE,KAAKgoP,WAAa,EAAG,QAAK,EAAQ7gP,EAAI,GAAKnH,KAAKsE,IAAMtE,KAAKuP,KAAO+2D,EAAIpiE,KAAKI,IAAItE,KAAKC,IAAKqmE,IAC5X/uE,IAAMiF,EAAG,CACX,IAAIorC,EAAI5nC,KAAKuP,OAASvP,KAAK27C,KAAO37C,KAAK27C,IAAIpsC,MAAQvP,KAAKsE,OAAStE,KAAK27C,KAAO37C,KAAK27C,IAAIr3C,KACtFtE,KAAKmrO,OAAO7yN,SAAQ,SAAU9b,GAC5BA,EAAE8wP,UAAY9wP,EAAE+wP,eAAiB/wP,EAAE+wP,gBACnC/wP,EAAE0vD,YAAYtkB,EAChB,IACAxtC,EAAE4F,KAAM,kBAAmB,CACzBwtP,kBAAmB5lN,GAEvB,CACA5nC,KAAKqsP,qBACLjyP,EAAE4F,KAAM,0BACRA,KAAKmoP,aAAeptP,IAAMiF,KAAKukP,aAAergP,KAAKI,IAAItE,KAAKmoP,WAAYnoP,KAAKukP,eAC7E/nP,EAAIwjN,EAAEnmN,EAAE4zP,gBAAiBztP,KAAK0kP,WAAa1kP,KAAKmrO,OAAOxvO,MAAK,SAAUa,GACpE,OAAOA,EAAEqvP,eACX,IAAK7rP,KAAKgpP,kBAAoB,IAC7BjuP,GAAKiF,KAAKukP,aAAe/nP,IAAMwD,KAAKukP,aAAe/nP,GACpDwD,KAAK0kP,UAAY1kP,KAAKqkP,aAAetpP,IAAMiF,KAAKukP,aAAepoC,EAAEn8M,KAAKukP,kBAAc,EAAQjtP,EAAE0I,KAAKukP,cAAevkC,EAAEnmN,EAAEonP,cAAe,GAAKjhP,KAAKukP,mBAAgB,IAAWvkP,KAAKgoP,cAAehoP,KAAKgoP,aACnMhoP,KAAKgoP,aAAehoP,KAAKukP,aAAevkP,KAAK0tP,YAC7C1tP,KAAK2tP,kBACP,EACApxP,EAAE7F,UAAUi3P,iBAAmB,WAC7B,IAAInxP,EAAIwD,KAAK41B,QACX97B,EAAI0C,EAAE8nP,cACN/nP,EAAIyD,KAAKmrP,uBACTtxP,EAAImG,KAAK4tP,qBACTr2P,EAAI,cAAgByI,KAAK+oP,KACzBxiL,GAAKhvE,IAAMsC,IAAM2C,EAAEgmP,YACrB3oP,GAAKtC,IAAMsC,IAAM2C,EAAE4kP,UACnB7pP,EAAIiF,EAAEqxP,eACN7tP,KAAKmkP,eAAiBnkP,KAAKmnO,YAAc,YAAc3qO,EAAEmmP,mBAAqB,IAAM3iP,KAAKukP,aAAe,GAAK,EAC7GvkP,KAAK0oP,kBAAoB,SAAWnsP,GAAKyD,KAAKukP,aAAevkP,KAAKukP,aAAe,EAAIhoP,EACrFyD,KAAKkrP,OAASlrP,KAAKuP,MAAQvP,KAAKsE,KAAO/L,EAAEyH,KAAKuP,OAASvP,KAAKgoP,aAAe33O,SAASrQ,KAAKuP,IAAK,MAAQvP,KAAKuP,MAAO,IAAO/S,EAAEykP,eAC3HjhP,KAAKskP,cAAgB/nP,EAAIzC,GAAKA,EAAE0B,SAC/Be,IAAMyD,KAAK+E,SAAW/E,KAAK+E,QAAQ0rI,cAAgBzwI,KAAKsE,IAAMtE,KAAKuP,KAAOvP,KAAKukP,aAAergP,KAAKI,IAAI,EAAItE,KAAKC,IAAK,MAAQ1D,EAAIyD,KAAK0kP,SAAW1kP,KAAKmvO,aAAanvO,KAAK0kP,SAAS4G,0BAA0BtrP,KAAKukP,aAAc/nP,EAAEkM,OAAQ1I,KAAKuP,IAAKvP,KAAKsE,IAAK9H,EAAE+lP,YAAaviP,KAAK+E,SAAW/E,KAAK+E,QAAQ0rI,UAAWzwI,KAAKgpP,mBAAmB,GAAMhpP,KAAKqkP,YAAcrkP,KAAKqkP,YAAYgH,oBAAoBrrP,KAAKukP,aAAcvkP,KAAKuP,IAAKvP,KAAKsE,KAAOtE,KAAKirP,uBAAuBjrP,KAAKukP,aAAcvkP,KAAKuP,IAAKvP,KAAKsE,MAAQ/H,EAAI,CAACyD,KAAKuP,IAAKvP,KAAKsE,KAAM+lO,EAAE,IAAI,EAAIrqO,KAAKsqO,QAAS/tO,EAAE/F,OAASwJ,KAAKC,MAAQ1D,EAAI,CAACA,EAAE,GAAIA,EAAEg7B,QAAU,KAAOh7B,EAAE,KAAOA,EAAE/F,OAAS,GAAKwJ,KAAKskP,cAAgB/nP,EAAGhF,IAAMA,EAAIA,EAAEsE,MAAMmE,KAAM,CAACA,KAAKuP,IAAKvP,KAAKsE,UAAYtE,KAAKskP,cAAgB/nP,EAAIhF,GAC/tByI,KAAKsoP,YAAc/rP,EAAEf,MAAM,GAC3BwE,KAAKurP,UAAUhvP,EAAGgqE,EAAG1sE,GACrBmG,KAAKimP,WAAajmP,KAAKkrP,QAAU,EAAI3uP,EAAE/F,SAAWwJ,KAAKmnO,aAAennO,KAAKmrO,OAAOxvO,MAAK,SAAUa,GAC/F,OAAOA,EAAEqpC,GAAG,YAAc,YAAcrpC,EAAEo5B,QAAQ42N,cACpD,MAAOxsP,KAAKuP,KAAO,GAAIvP,KAAKsE,KAAO,IAAKxK,GAAKvC,GAAKyI,KAAK8tP,oBACvD1zP,EAAE4F,KAAM,wBACV,EACAzD,EAAE7F,UAAU60P,UAAY,SAAU/uP,EAAG1C,EAAGyC,GACtC,IAAI1C,EAAI2C,EAAE,GACRjF,EAAIiF,EAAEA,EAAEhG,OAAS,GACjB+vE,GAAKvmE,KAAKwqP,WAAaxqP,KAAKusP,gBAAkB,EAEhD,GADAnyP,EAAE4F,KAAM,cACHA,KAAKimP,SAAU,CAClB,GAAInsP,IAAK,MAAcD,EAAGmG,KAAKuP,IAAM1V,OAAO,KAAOmG,KAAKuP,IAAMg3D,EAAI/pE,EAAE,IAAKA,EAAEvF,QAC3E,GAAIsF,EAAGyD,KAAKsE,IAAM/M,OAAO,KAAOyI,KAAKsE,IAAMiiE,EAAI/pE,EAAEA,EAAEhG,OAAS,IAAKgG,EAAE+6B,MACnE,IAAM/6B,EAAEhG,QAAU+B,EAAEsB,KAAOmG,KAAK41B,QAAQ0uN,eAAiB9nP,EAAE1F,MAAMS,EAAIsC,GAAK,EAC5E,CACF,EACA0C,EAAE7F,UAAUq3P,cAAgB,WAC1B,IAEExxP,EAFEC,EAAI,CAAC,EACP1C,EAAIkG,KAAK41B,QAOX,OALA,IAAO51B,KAAKsqO,MAAM10M,QAAQ00M,MAAM0W,YAAclnP,EAAEknP,aAAc,IAAOlnP,EAAE0oP,cAAe,IAAO1oP,EAAEsnP,YAAcphP,KAAKqkP,aAAerkP,KAAKsqO,MAAMtqO,KAAK+oP,MAAMzwO,SAAQ,SAAUxe,GACvK,IAAID,EAAIC,EAAE87B,QACV/7B,EAAI,CAACC,EAAE0sP,MAAQ3sP,EAAEqoD,KAAOroD,EAAE6jC,IAAK7jC,EAAEkiD,MAAOliD,EAAEqkD,OAAQrkD,EAAEm0P,MAAMjsP,OAC1DjI,EAAEqxO,OAAO30O,SAAWgG,EAAE3C,GAAK0C,GAAI,EAAKC,EAAE3C,GAAK,EAC7C,IACO0C,CACT,EACAA,EAAE7F,UAAUm2P,cAAgB,WAC1B,IAAIrwP,EAAIwD,KAAK41B,QACX97B,EAAI0C,EAAEkmP,kBACNnmP,EAAIC,EAAEwrP,YACPzvP,EAAEiE,EAAE+nP,gBAAkBhoP,GAAKyD,KAAKC,IAAMnG,IAAMkG,KAAK6mP,WAAa7mP,KAAKqkP,aAAe7nP,EAAEgmP,aAAehmP,EAAE4kP,YAAc7kP,EAAI,IACvHA,GAAKyD,KAAK+tP,kBAAoBxxP,EAAI2H,KAAKuF,KAAKzJ,KAAKC,IAAMnG,GAAK,GAC7D,EAAIyC,IAAMyD,KAAKiuP,aAAe1xP,EAAGA,EAAI,GACrCyD,KAAKgoP,WAAazrP,CACpB,EACAA,EAAE7F,UAAUo3P,iBAAmB,WAC7B,IAAItxP,EAAIwD,KAAK41B,QACX97B,EAAIkG,KAAKukP,aACThoP,EAAIyD,KAAKskP,cACTzqP,EAAImG,KAAKgoP,WACTzwP,EAAIyI,KAAKiuP,aACTr0P,EAAI2C,GAAKA,EAAE/F,OACXc,EAAI0oN,EAAEhgN,KAAK+wB,UAAW/wB,KAAKiqP,cAAgB,EAAI,MACjD,GAAIjqP,KAAKstC,WAAai5B,EAAEvmE,KAAKuP,MAAQg3D,EAAEvmE,KAAKsE,KAAM,CAChD,GAAI1K,EAAIC,EAAG,CACT,KAAO0C,EAAE/F,OAASqD,GAAI0C,EAAE/F,OAAS,GAAKwJ,KAAKuP,MAAQjY,EAAIiF,EAAEzF,KAAKwQ,EAAE/K,EAAEA,EAAE/F,OAAS,GAAKsD,IAAMyC,EAAE8xC,QAAQ/mC,EAAE/K,EAAE,GAAKzC,IAC3GkG,KAAKgmP,SAAWpsP,EAAI,IAAMC,EAAI,GAC9BmG,KAAKuP,IAAM/S,EAAEgmP,YAAcjmP,EAAE,GAAK2H,KAAKqL,IAAIvP,KAAKuP,IAAKhT,EAAE,IACvDyD,KAAKsE,IAAM9H,EAAE4kP,UAAY7kP,EAAEA,EAAE/F,OAAS,GAAK0N,KAAKI,IAAItE,KAAKsE,IAAK/H,EAAEA,EAAE/F,OAAS,GAC7E,MAAOoD,EAAIC,IAAMmG,KAAKukP,cAAgB,EAAGvkP,KAAK2tP,oBAC9C,GAAIp1P,EAAEhB,GAAI,CACR,IAAKuC,EAAI0C,EAAID,EAAE/F,OAAQsD,MAAO,IAAMvC,GAAK,IAAMuC,EAAI,GAAK,GAAKvC,GAAK,EAAIuC,GAAKA,EAAI0C,EAAI,IAAMD,EAAEo5B,OAAO77B,EAAG,GACrGkG,KAAKiuP,kBAAe,CACtB,CACF,CACF,EACA1xP,EAAE7F,UAAUw3P,SAAW,WACrB,IAAI1xP,GAAI,EACN1C,GAAI,EACNkG,KAAKmrO,OAAO7yN,SAAQ,SAAU/b,GAC5BC,EAAIA,GAAKD,EAAE4vP,aAAe5vP,EAAEsrP,QAC5B/tP,EAAIA,GAAKyC,EAAEotP,OAASptP,EAAEotP,MAAM9B,UAAW,CACzC,IACA7nP,KAAKmuP,cACL,IAAI5xP,EAAIyD,KAAKC,OAASD,KAAK27C,KAAO37C,KAAK27C,IAAI17C,KAC3C1D,GAAKC,GAAK1C,GAAKkG,KAAKimP,UAAYjmP,KAAKouP,aAAepuP,KAAK8sP,WAAa9sP,KAAK27C,KAAO37C,KAAK27C,IAAImxM,UAAY9sP,KAAK+sP,WAAa/sP,KAAK27C,KAAO37C,KAAK27C,IAAIoxM,UAAY/sP,KAAK+tP,iBAAmB/tP,KAAKkqP,UAAYlqP,KAAKkqP,SAASmE,cAAeruP,KAAKouP,aAAc,EAAIpuP,KAAK8pP,oBAAqB9pP,KAAK4sP,kBAAmB5sP,KAAK6nP,UAAY7nP,KAAK6nP,QAAUtrP,GAAKyD,KAAKuP,OAASvP,KAAK27C,KAAO37C,KAAK27C,IAAIpsC,MAAQvP,KAAKsE,OAAStE,KAAK27C,KAAO37C,KAAK27C,IAAIr3C,OAAStE,KAAKkqP,UAAYlqP,KAAKkqP,SAASoE,cACpc9xP,GAAKwD,KAAKuuP,eAAiBvuP,KAAKuuP,aAAa1G,SAAU,GACvDztP,EAAE4F,KAAM,gBACV,EACAzD,EAAE7F,UAAU83P,YAAc,SAAUhyP,EAAG1C,EAAGyC,EAAG1C,EAAGtC,GAC9C,IAAIgvE,EAAIvmE,KACNpG,EAAI2sE,EAAE+jK,MACR/tO,EAAIyjN,EAAEzjN,GAAG,GACTgqE,EAAE4kK,OAAO7yN,SAAQ,SAAU9b,UAClBA,EAAEiyP,MACX,IACAl3P,EAAIuzO,EAAEvzO,EAAG,CACPgY,IAAK/S,EACL8H,IAAKxK,IAEPM,EAAEmsE,EAAG,cAAehvE,GAAG,WACrBgvE,EAAEumL,QAAUtwP,EACZ+pE,EAAEwmL,QAAUjzP,EACZysE,EAAEmoL,UAAYn3P,EACdgF,GAAK3C,EAAE+0P,OAAO90P,EAChB,GACF,EACA0C,EAAE7F,UAAU8qD,KAAO,SAAUhlD,EAAG1C,GAC9B,IAAIyC,EAAIyD,KACNnG,EAAImG,KAAK+pP,QACTxyP,EAAIyI,KAAKgqP,QACTzjL,EAAIvmE,KAAK41B,QACTh8B,EAAIsK,KAAKqL,IAAI1V,EAAGmmN,EAAEz5I,EAAEh3D,IAAK1V,IACzBvC,EAAI4M,KAAKI,IAAI/M,EAAGyoN,EAAEz5I,EAAEjiE,IAAK/M,IAa3B,OARA6C,EAAE4F,KAAM,OAJRxD,EAAI,CACFoyP,OAAQpyP,EACRqyP,OAAQ/0P,IAES,SAAU0C,GAC3B,IAAI1C,EAAI0C,EAAEoyP,OACRroL,EAAI/pE,EAAEqyP,OACJ/0P,IAAMyC,EAAEgT,KAAOg3D,IAAMhqE,EAAE+H,MAAK/H,EAAEuyP,mBAAqBv2P,EAAEsB,KAAOC,EAAIF,IAAME,EAAIF,GAAIE,EAAIxC,IAAMwC,EAAIxC,IAAKiB,EAAEhB,KAAOgvE,EAAI3sE,IAAM2sE,EAAI3sE,GAAI2sE,EAAIjvE,IAAMivE,EAAIjvE,KAAMiF,EAAEwyP,WAAa,qBAAuBj1P,GAAK,qBAAuBysE,EAAGhqE,EAAEiyP,YAAY10P,EAAGysE,GAAG,OAAI,EAAQ,CACvP/yB,QAAS,UAEXh3C,EAAEwyP,QAAS,CACb,IACOxyP,EAAEwyP,MACX,EACAzyP,EAAE7F,UAAUy3P,YAAc,WACxB,IAAI3xP,EAAIwD,KAAKsqO,MACXxwO,EAAIkG,KAAK41B,QACTr5B,EAAIzC,EAAE4jF,SAAW,CAAC,EAAG,EAAG,EAAG,GAC3B7jF,EAAImG,KAAKwmP,MACTjvP,EAAIyI,KAAK+7C,MAAQ73C,KAAK+c,MAAMglD,EAAE+5I,EAAElmN,EAAEiiD,MAAOv/C,EAAEyyP,UAAY1yP,EAAE,GAAKA,EAAE,IAAKC,EAAEyyP,YACvE1oL,EAAIvmE,KAAKk+C,OAASh6C,KAAK+c,MAAMglD,EAAE+5I,EAAElmN,EAAEokD,OAAQ1hD,EAAE0yP,WAAa3yP,EAAE,GAAKA,EAAE,IAAKC,EAAE0yP,aAC1Et1P,EAAIoG,KAAK09B,IAAMx5B,KAAK+c,MAAMglD,EAAE+5I,EAAElmN,EAAE4jC,IAAKlhC,EAAE2yP,QAAU5yP,EAAE,IAAKC,EAAE0yP,WAAY1yP,EAAE2yP,UAC1Er1P,EAAIkG,KAAKkiD,KAAOh+C,KAAK+c,MAAMglD,EAAE+5I,EAAElmN,EAAEooD,KAAM1lD,EAAE4yP,SAAW7yP,EAAE,IAAKC,EAAEyyP,UAAWzyP,EAAE4yP,WAC1EpvP,KAAK84J,OAASt8J,EAAEmpP,YAAcp/K,EAAI3sE,EAClCoG,KAAKg9C,MAAQxgD,EAAEspP,WAAavuP,EAAIuC,EAChCkG,KAAKC,IAAMiE,KAAKI,IAAIzK,EAAItC,EAAIgvE,EAAG,GAC/BvmE,KAAKsW,IAAMzc,EAAIC,EAAIF,CACrB,EACA2C,EAAE7F,UAAUs2P,YAAc,WACxB,IAAIxwP,EAAIwD,KAAKqkP,YACb,MAAO,CACL90O,IAAK/S,EAAI8K,EAAE9K,EAAEioP,QAAQzkP,KAAKuP,MAAQvP,KAAKuP,IACvCjL,IAAK9H,EAAI8K,EAAE9K,EAAEioP,QAAQzkP,KAAKsE,MAAQtE,KAAKsE,IACvCylP,QAAS/pP,KAAK+pP,QACdC,QAAShqP,KAAKgqP,QACd8C,QAAS9sP,KAAK8sP,QACdC,QAAS/sP,KAAK+sP,QAElB,EACAxwP,EAAE7F,UAAU24P,aAAe,SAAU7yP,GACnC,IAAI1C,EAAIkG,KAAKqkP,YACX9nP,EAAIzC,EAAIA,EAAE2qP,QAAQzkP,KAAKuP,KAAOvP,KAAKuP,IAGrC,OAFAzV,EAAIA,EAAIA,EAAE2qP,QAAQzkP,KAAKsE,KAAOtE,KAAKsE,IACnC,OAAS9H,IAAK,MAAcA,EAAIA,EAAID,EAAIgxL,MAAa/wL,EAAIA,EAAI1C,EAAIyC,EAAIC,EAAIA,EAAID,EAAIzC,EAAI0C,IAAMA,EAAI1C,GACxFkG,KAAK0vN,UAAUlzN,EAAG,EAAG,EAAG,EAAG,EACpC,EACAD,EAAE7F,UAAU44P,eAAiB,SAAU9yP,GACrC,IAAI1C,GAAKkmN,EAAExjN,EAAG,GAAK,GAAKwD,KAAKiwM,KAAO,KAAO,IAO3C,OAHA71M,EAAE4F,KAAM,iBAHRxD,EAAI,CACFywI,MAAO,WAEoB,SAAUzwI,GACrC,GAAK1C,GAAK,IAAMA,EAAI0C,EAAEywI,MAAQ,QAAU,IAAMnzI,GAAK,IAAMA,IAAM0C,EAAEywI,MAAQ,OAC3E,IACOzwI,EAAEywI,KACX,EACA1wI,EAAE7F,UAAU+wP,SAAW,SAAUjrP,GAC/B,IAAI1C,EAAIkG,KAAK41B,QACXr5B,EAAIyjN,EAAElmN,EAAE,SAAW0C,EAAI,YAAc,kBAAmB,SAAWA,GAAKwD,KAAK0nP,UAAY1nP,KAAKmnO,WAAa,EAAI,GAC/GttO,EAAIC,EAAE,SAAW0C,EAAI,aAAe,mBACtC,GAAID,GAAK1C,EAAG,CACV,WAAaC,EAAE0C,EAAI,cAAgB3C,GAAKA,GACxC,IAAItC,EAAI,CAACsC,EAAG0C,EACd,CAKA,OADAnC,EAAE4F,KAAM,gBAHRxD,EAAI,CACFirP,SAAUlwP,IAGLiF,EAAEirP,QACX,EACAlrP,EAAE7F,UAAU64P,aAAe,WACzB,IAAI/yP,EAAIwD,KAAKskP,eAAiBtkP,KAAKskP,cAAc,IAAM,EACvD,OAAOtkP,KAAKsqO,MAAM3hI,SAASszI,YAAYj8O,KAAK41B,QAAQ0wI,OAAOr3H,MAAMk6F,SAAUnpI,KAAK8mP,MAAMtqP,IAAMwD,KAAK8mP,MAAMtqP,GAAGgqE,MAC5G,EACAjqE,EAAE7F,UAAUg3P,SAAW,WACrB,IAcE9wP,EACA6Q,EAfEjR,EAAIwD,KAAK41B,QAAQ0wI,OACnBxsK,EAAIkG,KAAKwmP,MACTjqP,EAAIyD,KAAKukP,aACT1qP,EAAImG,KAAKC,OAASD,KAAKmnO,WAAa,EAAI,GAAKnnO,KAAKsE,IAAMtE,KAAKuP,KAAOhT,GACpE3C,EAAI4C,EAAEy5O,SACN3+O,EAAI0I,KAAKuvP,eACTjpL,EAAIpiE,KAAKI,IAAItE,KAAKsE,IAAMtE,KAAKuP,IAAK,GAClCpI,EAAI,SAAU3K,GACZ,IAAI1C,EAAI0C,GAAK3C,GAAK,GAGlB,OAFAC,EAAI,EAAIA,EAAIoK,KAAKuF,KAAK3P,GAAK,GACvByC,EAAI+pE,GAAKinH,MAAa/wL,GAAK+wL,MAAa1zL,GAAKysE,IAAMxsE,EAAIoK,KAAKuF,KAAK68D,EAAI/pE,IAClE+K,EAAExN,EAAIyC,EACf,EACAnC,EAAImC,EAGJ4/M,EAAI7zI,OAAOknL,UACb,GAAI11P,EAAG,CACL,IAAK0C,EAAEmlP,eAAiBnlP,EAAEomD,KAAM,GAAI2jB,EAAE3sE,GAAI,IAAIrB,EAAI,CAACqB,QAAQC,EAAI2C,EAAEglP,oBAAsBjpP,EAAIiE,EAAE+kP,cAC7FhpP,GAAKA,EAAE+f,SAAQ,SAAU9b,GACvB,GAAIA,IAAM5C,GAAK4C,IAAM,IAAMA,GAAK,IAAMA,EAAG,CAEvC,IAAI1C,GADJ2T,EAAItG,EAAEjD,KAAKC,IAAI7M,EAAE6P,EAAIjD,KAAKy+J,IAAIprK,EAAIiF,MACtB0H,KAAKC,IAAI3H,EAAI,KACzB1C,EAAIqiN,IAAMA,EAAIriN,EAAG8C,EAAIJ,EAAGpC,EAAIqT,EAC9B,CACF,GACF,MAAOjR,EAAEomD,OAASxoD,EAAI+M,EAAE7P,EAAE6P,IAG1B,OAFAnH,KAAKuhP,aAAehpP,EACpByH,KAAK4pP,cAAgB5pC,EAAEpjN,EAAG2pE,EAAE3sE,GAAKA,EAAI,GAC9BQ,CACT,EACAmC,EAAE7F,UAAUyuP,aAAe,SAAU3oP,GACnC,IAAI1C,EAAIkG,KAAKsqO,MACX/tO,EAAIyD,KAAKwmP,MACT3sP,EAAImG,KAAK41B,QAAQ0wI,OACjB/uK,EAAI2M,KAAKI,IAAItE,KAAKskP,cAAc9tP,QAAUwJ,KAAKmnO,WAAa,EAAI,GAAI,GACpEvtO,EAAIE,EAAEqoD,OAAO,GACf,GAAI3lD,GAAK+pE,EAAE/pE,EAAEizP,WAAY,OAAOjzP,EAAEizP,UAClC,GAAIlzP,GAAK,EAAI1C,EAAE+oD,KAAM,OAAO/oD,EAAEo8O,SAAW,GAAKj2O,KAAK2hP,cAAgB,GAAK3hP,KAAKC,IAAM1I,EACnF,IAAKgF,EAAG,CAEN,QAAI,KADJC,EAAI3C,EAAEo1C,MAAM8M,OACM,OAAO1rC,SAASyU,OAAOtoB,GAAI,IAC7C,GAAI5C,EAAG,OAAOA,EAAIE,EAAE4zO,QAAQ,EAC9B,CACA,MAAO,IAAM5zO,EAAEgsP,UACjB,EACAvpP,EAAE7F,UAAUg5P,eAAiB,WAC3B,IAAIlzP,EAAIwD,KAAKsqO,MACX/tO,EAAIC,EAAEmsG,SACN9uG,EAAImG,KAAKskP,cACT/sP,EAAIyI,KAAK8mP,MACTvgL,EAAIvmE,KAAK41B,QAAQ0wI,OACjB1sK,EAAI2sE,EAAEt3B,MACN33C,EAAI0I,KAAKwmP,MACTlgL,EAAItmE,KAAKmlP,eACTh+O,EAAIjD,KAAKI,IAAI,EAAGJ,KAAK+c,MAAMqlD,EAAI,EAAIC,EAAEnkB,UACrChoD,EAAI,CAAC,EACLwC,EAAIoD,KAAKuvP,eACT9hP,EAAI7T,EAAE82O,aACNv0B,EAAI,EAQN,GAPAriN,EAAEysE,EAAE0vK,YAAc77O,EAAE67O,SAAW1vK,EAAE0vK,UAAY,GAC7Cp8O,EAAEye,SAAQ,SAAU9b,IAClBA,EAAIjF,EAAEiF,IACJ8oP,YAAc9oP,EAAEorP,oBAClBprP,GAAKA,EAAEgqE,OAAShqE,EAAEgqE,MAAMsyK,aAAe38B,IAAMA,EAAI3/M,EAAEgqE,MAAMsyK,aAC3D,IACA94O,KAAK2oP,eAAiBxsC,EAClBn8M,KAAKuhP,aAAcplC,EAAIh1M,GAAKg1M,EAAIv/M,EAAEuK,EAAI/M,EAAE67O,SAAWj2O,KAAK4pP,cAAgB5pP,KAAK4pP,cAAgB,OAAO,GAAItjL,EAAG,CAC7G,IAAI/tE,EAAI4O,EACR,IAAKsG,EAAG,CACN,IAAI1S,EAAI,OACR,IAAKoM,EAAItN,EAAErD,QAASc,GAAK6P,KAAM,CAC7B,IAAI64M,EAAInmN,EAAEsN,IACN64M,EAAIzoN,EAAEyoN,GAAGx5I,SAAOw5I,EAAEvgK,QAAU,aAAeugK,EAAEvgK,OAAOixL,aAAe1wB,EAAE7wK,IAAI,CAC3EuhM,aAAc,SACX1wB,EAAE84B,aAAexyK,GAAK05I,EAAE7wK,IAAI,CAC/B4M,MAAOuqB,EAAI,OACT05I,EAAEg4B,UAAU95L,OAASl+C,KAAKC,IAAMpG,EAAErD,QAAUoG,EAAEuK,EAAIvK,EAAE0pE,KAAO05I,EAAE2vC,qBAAuB,YAC1F,CACF,CACF,CACAv1P,EAAE67O,WAAa19O,EAAI4jN,EAAI,GAAK3/M,EAAEmpP,YAAc,IAAMnpP,EAAEmpP,YAAcxpC,EAAG1uM,IAAM1S,EAAI,cAC3EiF,KAAKsmP,WAAa//K,EAAE0mE,OAASjtI,KAAKsvP,eAAetvP,KAAK4pP,kBAAgBxvP,EAAE6yI,MAAQjtI,KAAKsmP,YACzFzsP,EAAEye,SAAQ,SAAU9b,GAClB,IAAI1C,GAAK0C,EAAIjF,EAAEiF,KAAOA,EAAEgqE,MACtBjqE,EAAI3C,EAAEmiD,MACNliD,EAAI,CAAC,EACPC,IAAMA,EAAE6kC,KAAKvkC,GAAIoC,EAAE0oP,aAAe1oP,EAAE0oP,eAAiB3sP,IAAMgE,GAAK,WAAa3C,EAAE63O,aAAel5O,EAAIuB,EAAEg/O,cAAgB,SAAWh/O,EAAEq9D,QAAQE,UAAYx9D,EAAEkiD,MAAQxjD,EAAI,KAAMkV,IAAM5T,EAAE62O,aAAe52O,EAAE61P,sBAAwB50P,GAAIjB,EAAEq1C,IAAIt1C,IAAMC,EAAE2lD,QAAU3lD,EAAE2lD,OAAO1D,QAAUliD,EAAEkiD,QAAUx/C,GAAKzC,EAAEq1C,IAAI,CAC9R4M,MAAO,cACEjiD,EAAE61P,qBAAsBnzP,EAAEy5O,SAAW77O,EAAE67O,SACpD,GAAGj2O,MACHA,KAAKmmP,YAAc5pP,EAAEmjP,QAAQ9iP,EAAEJ,EAAGwD,KAAK4pP,eAAiB,EAAG,IAAM5pP,KAAKiwM,KACxE,EACA1zM,EAAE7F,UAAU42C,QAAU,WACpB,OAAOttC,KAAKmrO,OAAOxvO,MAAK,SAAUa,GAChC,OAAOA,EAAE8wC,SACX,KAAMttC,KAAK41B,QAAQwsN,WAAa7pP,EAAEyH,KAAKuP,MAAQhX,EAAEyH,KAAKsE,IACxD,EACA/H,EAAE7F,UAAUk5P,SAAW,SAAUpzP,GAC/B,IAKElF,EALEwC,EAAIkG,KAAKsqO,MAAM3hI,SACjBpsG,EAAIyD,KAAKwmP,MACT3sP,EAAImG,KAAKiiP,SACT1qP,EAAIyI,KAAK41B,QAAQmyD,MACjBxhB,EAAIvmE,KAAKsqO,MAAM+C,WAEjBrtO,KAAK6vP,aAAev4P,EAAIC,EAAEm8I,aAAep8I,GAAKiF,EAAI,CAChDuzP,IAAK,OACLp/E,OAAQ,SACR31I,KAAM,SACJ,CACF+0N,IAAKj2P,EAAI,QAAU,OACnB62K,OAAQ,SACR31I,KAAMlhC,EAAI,OAAS,UAClBtC,EAAE01I,QAASjtI,KAAK6vP,UAAY/1P,EAAEg6B,KAAKv8B,EAAEu8B,MAAQ,GAAI,EAAG,EAAGv8B,EAAEm6O,SAAS/yM,KAAK,CACxE4iB,OAAQ,EACR00L,SAAU1+O,EAAE0+O,SACZhpG,MAAO31I,IACN2wD,SAAS,yBAA0Bse,GAAKvmE,KAAK6vP,UAAU1gN,IAAIv1C,EAAErC,EAAE03C,QAASjvC,KAAK6vP,UAAUv9O,IAAItS,KAAK2nP,WAAY3nP,KAAK6vP,UAAU5L,OAAQ,GACtI19K,GAAKhvE,EAAE03C,MAAM8M,OAAS/7C,KAAK6mP,UAAY7mP,KAAK6vP,UAAU1gN,IAAI,CACxD4M,MAAO/7C,KAAKC,IAAM,OAEpBD,KAAK6vP,UAAUrzP,EAAI,OAAS,QAAQA,EACtC,EACAD,EAAE7F,UAAUq5P,aAAe,SAAUvzP,GACnC,IAAI1C,EAAIkG,KAAK8mP,MACbhtP,EAAE0C,GAAK1C,EAAE0C,GAAG4nP,WAAatqP,EAAE0C,GAAK,IAAIguO,EAAExqO,KAAMxD,EAC9C,EACAD,EAAE7F,UAAUs5P,UAAY,WACtB,IAAIxzP,EAAIwD,KACNlG,EAAIkG,KACJzD,EAAIzC,EAAEwwO,MACNzwO,EAAIC,EAAE0sP,MACNjvP,EAAIuC,EAAE87B,QACN2wC,EAAIzsE,EAAEm2M,KACNr2M,EAAIE,EAAEgtP,MACNxvP,EAAIwC,EAAEwqP,cACNh+K,EAAIxsE,EAAEivP,KACN5hP,EAAIrN,EAAEm2P,WACNrzP,EAAIL,EAAEosG,SACNwzG,EAAI5/M,EAAE63O,WAAat6O,EAAEqvP,QAAU,CAAC,EAAG,EAAG,EAAG,GAAG5iL,GAAKA,EACjDxrE,EAAIjB,EAAEwzC,UACN9yC,EAAIjD,EAAEwwF,MACN+iJ,EAAIvzO,EAAE+uK,OACNlK,EAAI7/J,EAAE2zP,WACR3zP,EAAIA,EAAE4zP,WACN,IAEElqL,EAFE3+D,EAAI,EAAE,EAAG,EAAG,GAAI,GAAGi/D,GACrB6jK,EAAI7yO,EAAE6mC,UAENisM,EAAI,EACJ+lB,EAAK,EACLC,EAAK,EAGP,GAFAv2P,EAAEw2P,SAAWrqL,EAAIlrE,GAAKxD,EAAE6qP,UACxBtoP,EAAE6nP,aAAe7nP,EAAE0sP,OAAS1b,EAAE6W,mBAAgB,GACzC7nP,EAAE6tP,UAAW,CAChB,IAAI//M,EAAI,SAAU9tC,EAAGyC,EAAG1C,GACtB,OAAO+C,EAAE2pE,EAAEzsE,GAAG6kC,KAAK,CACjB4iB,OAAQ1nD,IACPouD,SAAS,cAAgBqe,EAAE99D,cAAgBjM,EAAI,KAAOC,EAAEqqP,SAAW,yBAA2BtqP,EAAI,IAAM,KAAO6tO,GAAK,KAAK93N,IAAInL,EAClI,EACArN,EAAEytP,UAAY3/M,EAAE,OAAQ,QAASrwC,EAAE+pP,YACnCxnP,EAAE6tP,UAAY//M,EAAE,OAAQ,GAAIrwC,EAAEgqD,QAC9BznD,EAAE0rP,WAAa59M,EAAE,cAAe,UAAWkjM,EAAEvpL,OAC/C,CAYA,GAXAxmD,GAAKjB,EAAEmsP,UAAY3uP,EAAEghB,SAAQ,SAAU9b,GACrC1C,EAAEi2P,aAAavzP,EACjB,IAAI1C,EAAE41P,iBAAkB51P,EAAEssP,oBAAsB,IAAM7/K,GAAK,IAAMA,GAAK,CACpE,EAAG,OACH,EAAG,SACHA,KAAOzsE,EAAEwsP,WAAYtmC,EAAE8qB,EAAE4W,aAAc,WAAa5nP,EAAEwsP,YAAkB,KAAMxsP,EAAEssP,sBAAwB9uP,EAAEghB,SAAQ,SAAU9b,GAC5H6zP,EAAKnsP,KAAKI,IAAI1K,EAAE4C,GAAG+pP,eAAgB8J,EACrC,IAAIv2P,EAAE6nP,eAAiB0O,GAAMv2P,EAAE6nP,cAAe7nP,EAAEusP,YAAcgK,GAAMv2P,EAAEmoP,UAAY,EAAI,IAAMx0O,EAAE7T,GAAG,SAAU4C,EAAG1C,GAC5G0C,EAAEygF,iBACKrjF,EAAEE,EACX,IACIU,GAAKA,EAAEs5B,OAAQ,IAAOt5B,EAAEinC,UAAY3nC,EAAE81P,SAAS3pL,GAAIA,IAAK,IAAOzrE,EAAEknP,cAAe,CAClF5nP,EAAEy2P,YAAclmB,EAAIvwO,EAAE+1P,UAAU7X,UAAUn+O,EAAI,SAAW,SACzD,IAAIi4J,EAAIt3J,EAAEgnB,OACV4uO,EAAK73P,EAAEu5J,GAAK,EAAIkuD,EAAExlN,EAAE2nD,OAAQtoD,EAAI,EAAI,GACtC,CACAC,EAAE02P,aACF12P,EAAE0nB,OAASla,EAAI04M,EAAEzoN,EAAEiqB,OAAQ46I,EAAE71F,GAAK61F,EAAE71F,IAAMhvE,EAAE4qD,QAAU,GAAK,GAC3DroD,EAAEqsP,YAAcrsP,EAAEqsP,aAAe,CAC/B14O,EAAG,EACH/F,EAAG,GAELlN,EAAI,IAAM+rE,GAAKzsE,EAAEy1P,eAAepoP,EAAI,IAAMo/D,EAAIzsE,EAAEqsP,YAAYz+O,EAAI,EAChE3M,EAAImJ,KAAKC,IAAIksP,GAAMD,EACnBC,IAAOt1P,EAAIA,EAAIP,EAAI8M,GAAKzN,EAAImmN,EAAE8qB,EAAEpjO,EAAG5N,EAAEqsP,YAAYz+O,EAAI,EAAIJ,GAAKwjO,EAAEr9N,IAChE3T,EAAE22P,gBAAkBzwC,EAAEluD,EAAG/2J,GACzBjB,EAAE42P,wBAA0B52P,EAAE62P,mBAAqB72P,EAAE42P,sBAAsB92P,EAAGtC,IAC9E,cAAgBgvE,IAAMzsE,EAAImG,KAAKynP,SAAS,QAASrrF,EAAE71F,GAAKriE,KAAKI,IAAI83J,EAAE71F,IAAKzsE,EAAE22P,iBAAmB,GAAKpmB,EAAI/iO,EAAIxN,EAAE0nB,OAAQzmB,EAAGzD,GAAKA,EAAEd,QAAUqD,EAAIA,EAAE,GAAKyN,EAAIxN,EAAE0nB,OAAS,GAAIjqB,GAAKuC,EAAE82P,UAAYr5P,EAAEiqB,OAAS,EAAI,EAAItd,KAAKwF,MAAM5P,EAAE82P,SAASva,cAAgB,GAAI95O,EAAE4/M,GAAKj4M,KAAKI,IAAI/H,EAAE4/M,GAAI5kN,IAC5Q6C,EAAE4F,KAAM,iBACV,EACAzD,EAAE7F,UAAUm6P,YAAc,SAAUr0P,GAClC,IAAI1C,EAAIkG,KAAKsqO,MACX/tO,EAAIyD,KAAKiiP,SACTpoP,EAAImG,KAAKwhB,OACTjqB,EAAIyI,KAAKwmP,MACTjgL,EAAIvmE,KAAKkiD,MAAQ3lD,EAAIyD,KAAK+7C,MAAQ,GAAKliD,EAGzC,OAFAA,EAAIC,EAAE6rP,YAAc3lP,KAAK84J,QAAUv8J,EAAIyD,KAAKk+C,OAAS,GAAKrkD,EAC1D0C,IAAMC,IAAM,GACL1C,EAAE6uG,SAASi2I,UAAU,CAAC,CAAC,IAAKrnP,EAAIyI,KAAKkiD,KAAOqkB,EAAGhvE,EAAIsC,EAAImG,KAAK09B,KAAM,CAAC,IAAKnmC,EAAIuC,EAAEgsP,WAAa9lP,KAAKg9C,MAAQupB,EAAGhvE,EAAIsC,EAAIC,EAAE6rP,YAAc3lP,KAAK84J,SAAUt8J,EAC3J,EACAD,EAAE7F,UAAU85P,WAAa,WACvBxwP,KAAK4wP,WAAa5wP,KAAK4wP,SAAW5wP,KAAKsqO,MAAM3hI,SAASrQ,OAAOrwC,SAAS,wBAAwB31C,IAAItS,KAAK2nP,WAAY3nP,KAAKsqO,MAAM+C,YAAcrtO,KAAK4wP,SAASjyN,KAAK,CAC7Jm3M,OAAQ91O,KAAK41B,QAAQqtN,UACrB,eAAgBjjP,KAAK41B,QAAQstN,UAC7B3hM,OAAQ,IAEZ,EACAhlD,EAAE7F,UAAUo6P,iBAAmB,WAC7B,IAAIt0P,EAAIwD,KAAKwmP,MACX1sP,EAAIkG,KAAKkiD,KACT3lD,EAAIyD,KAAK09B,IACT7jC,EAAImG,KAAKC,IACT1I,EAAIyI,KAAK41B,QAAQmyD,MACjBxhB,EAAI/pE,EAAI1C,EAAIyC,EACZ3C,EAAIoG,KAAKiiP,SACT3qP,EAAI0I,KAAKwhB,OACT8kD,EAAI/uE,EAAEkW,EACNtG,EAAI5P,EAAEmQ,EACN9K,EAAIoD,KAAK6vP,UACTpiP,EAAIzN,KAAKsqO,MAAM3hI,SAASszI,YAAY1kP,EAAE03C,MAAMk6F,SAAUvsI,GAexD,OAdAA,EAAIsH,KAAKI,IAAI1H,EAAEo7O,QAAQ,KAAM,GAAG95L,OAASzwC,EAAEtG,EAAI,EAAG,GAClDtN,EAAI,CACFi2P,IAAKvpL,GAAK/pE,EAAI,EAAI3C,GAClB62K,OAAQnqG,EAAI1sE,EAAI,EAChBkhC,KAAMwrC,GAAK/pE,EAAI3C,EAAI,IACnBtC,EAAE01I,OACJnzI,GAAK0C,EAAID,EAAIyD,KAAKk+C,OAASpkD,IAAM0C,EAAI,GAAK,IAAM5C,GAAK,EAAI,GAAKoG,KAAKywP,gBAAkB,EAAE7zP,EAAGA,EAAG6Q,EAAE64D,GAAI1pE,GAAGoD,KAAKiwM,MAC3GzzM,EAAI,CACFiR,EAAGjR,EAAI3C,EAAIysE,EAAIxsE,GAAKF,EAAIoG,KAAK+7C,MAAQ,GAAKzkD,EAAIgvE,EAC9C5+D,EAAGlL,EAAI1C,EAAIqN,GAAKvN,EAAIoG,KAAKk+C,OAAS,GAAK5mD,EAAIuC,EAAIsN,GAEjD/M,EAAE4F,KAAM,wBAAyB,CAC/B+wP,cAAev0P,IAEVA,CACT,EACAD,EAAE7F,UAAUs6P,gBAAkB,SAAUx0P,EAAG1C,GACzC,IAAIyC,EAAIyD,KAAKyoP,WACblsP,EAAEC,KAAOD,EAAEC,GAAK,IAAIguO,EAAExqO,KAAMxD,EAAG,UAC/B1C,GAAKyC,EAAEC,GAAGynP,OAAS1nP,EAAEC,GAAGksG,OAAO,MAAM,GACrCnsG,EAAEC,GAAGksG,OAAO,MAAM,EAAI,EACxB,EACAnsG,EAAE7F,UAAUu6P,WAAa,SAAUz0P,EAAG1C,EAAGyC,GACvC,IAAI1C,EAAImG,KAAK8mP,QACR9mP,KAAKimP,UAAYzpP,GAAKwD,KAAKuP,KAAO/S,GAAKwD,KAAKsE,KAAOtE,KAAKqkL,MAAQrkL,KAAKqkL,KAAK6sE,YAAUr3P,EAAE2C,KAAO3C,EAAE2C,GAAK,IAAIguO,EAAExqO,KAAMxD,IAAKD,GAAK1C,EAAE2C,GAAGynP,OAASpqP,EAAE2C,GAAGksG,OAAO5uG,GAAG,GAAK,GAAID,EAAE2C,GAAGksG,OAAO5uG,GACnL,EACAyC,EAAE7F,UAAUgyG,OAAS,WACnB,IAgBEphG,EACA8iO,EAjBE5tO,EAAIwD,KACNlG,EAAI0C,EAAE8tO,MACN/tO,EAAIC,EAAE6nP,YACNxqP,EAAI2C,EAAEo5B,QACNr+B,EAAIiF,EAAEypP,SACNrsP,EAAI4C,EAAE8nP,cACNhtP,EAAIkF,EAAEqzP,UACNvpL,EAAI9pE,EAAEsqP,MACN3/O,EAAI3K,EAAEisP,WACN7rP,EAAIJ,EAAEysP,eACN9sC,EAAItiN,EAAE0pP,YACNhrP,EAAIsB,EAAEs3P,mBACNp2P,EAAIyB,EAAE2nP,eACNnkC,EAAIxjN,EAAEo0P,SACNp2P,EAAIgC,EAAE8zP,SACNxlB,EAAI1uE,EAAEtiK,EAAE6uG,SAASkqI,iBAUnB,GAPAr2O,EAAEosP,UAAUpyP,OAAS,EACrBgG,EAAE+rP,SAAU,EACZ,CAACjiL,EAAGn/D,EAAGvK,GAAG0b,SAAQ,SAAU9b,GAC1BiR,EAAEjR,GAAG,SAAUA,GACbA,EAAEigF,UAAW,CACf,GACF,IACIjgF,EAAE8wC,WAAa/1C,EAAG,CACpB,IAAI0uE,EAAIzpE,EAAE8tO,MAAM8mB,aAAe50P,EAAEm/C,KAAO4qB,EAAE/pE,EAAEm/C,IAAIpsC,KAChD/S,EAAEksP,oBAAsBlsP,EAAE2qO,YAAc3qO,EAAE4uP,wBAAwB9yO,SAAQ,SAAUxe,GAClF0C,EAAEw0P,gBAAgBl3P,EAAGmsE,EACvB,IACArsE,EAAEpD,SAAWoD,EAAE0e,SAAQ,SAAUxe,EAAGyC,GAClCC,EAAEy0P,WAAWn3P,EAAGyC,EAAG0pE,EACrB,IAAIlrE,IAAM,IAAMyB,EAAE+S,KAAO/S,EAAE0uP,UAAY5kL,GAAG,KAAOA,GAAG,GAAK,IAAIkkK,EAAEhuO,GAAI,EAAG,MAAM,IAAM8pE,GAAG,GAAGoiC,QAAQ,KAChGnwG,GAAKqB,EAAE0e,SAAQ,SAAUze,EAAGtC,GAC1B6yO,EAAI,qBAAuBxwO,EAAErC,EAAI,GAAKqC,EAAErC,EAAI,GAAKwD,EAAIyB,EAAE8H,IAAMvJ,EAC7D,IAAMxD,EAAI,GAAKsC,EAAI2C,EAAE8H,KAAO8lO,GAAK5tO,EAAE8H,KAAOxK,EAAEuzP,OAAStyP,EAAIA,KAAO6B,EAAE/C,KAAO+C,EAAE/C,GAAK,IAAI0wO,EAAE8mB,eAAe70P,IAAK8K,EAAIzN,EAAIkB,EAAG6B,EAAE/C,GAAG+7B,QAAU,CAClIt1B,KAAM/D,EAAIA,EAAEkoP,QAAQn9O,GAAKA,EACzBjH,GAAI9D,EAAIA,EAAEkoP,QAAQra,GAAKA,EACvBxvE,MAAOriK,EACP6lC,UAAW,6BACVxhC,EAAE/C,GAAG6uG,SAAU9rG,EAAE/C,GAAG4iF,UAAW,EACpC,IACAjgF,EAAE4oP,eAAiB5oP,EAAE4oP,cAAe,GAAKvrP,EAAEy3P,WAAa,IAAIz+O,OAAOhZ,EAAE03P,WAAa,IAAIj5O,SAAQ,SAAUxe,GACtG0C,EAAEg1P,kBAAkB13P,EACtB,IACF,CACA,CAACwsE,EAAGn/D,EAAGvK,GAAG0b,SAAQ,SAAU9b,GAC1B,IAAID,EAAI,GACN1C,EAAIixO,EAAE3qN,SACR1S,EAAEjR,GAAG,SAAUA,EAAG1C,GAChB0C,EAAEigF,WAAajgF,EAAEksG,OAAO5uG,GAAG,EAAI,GAAI0C,EAAEigF,UAAW,EAAIlgF,EAAEzF,KAAKgD,GAC7D,IACA+jP,GAAE,WACA,IAAK,IAAI/jP,EAAIyC,EAAE/F,OAAQsD,KAAM0C,EAAED,EAAEzC,MAAQ0C,EAAED,EAAEzC,IAAI2iF,WAAajgF,EAAED,EAAEzC,IAAImjF,iBAAkBzgF,EAAED,EAAEzC,IAC9F,GAAG0C,IAAMI,GAAK9C,EAAEs3P,aAAev3P,EAAIA,EAAI,EACzC,IACAmmN,IAAMA,EAAEA,EAAEyxC,SAAW,UAAY,QAAQ,CACvC33P,EAAGkG,KAAK6wP,YAAY7wC,EAAEq2B,iBACpBr2B,EAAEyxC,UAAW,EAAIzxC,EAAExlN,EAAI,OAAS,QAAQA,IAC5ClD,GAAKkD,IAAMX,EAAI2C,EAAEs0P,mBAAoBvqL,EAAE1sE,EAAE6N,IAAMpQ,EAAEA,EAAE2sP,MAAQ,OAAS,WAAWpqP,GAAIvC,EAAE2sP,OAAQ,IAAO3sP,EAAEqnC,KAAK,KAAM,MAAOrnC,EAAE2sP,OAAQ,IAClI9nC,GAAKA,EAAE16K,SAAWjlC,EAAE0tP,UAAY1tP,EAAE0tP,SAASwH,oBAC3Cl1P,EAAEm/C,IAAM,CACN17C,IAAKzD,EAAEyD,IACPqE,IAAK9H,EAAE8H,IACPiL,IAAK/S,EAAE+S,IACPy2O,OAAQxpP,EAAEwpP,OACV+G,QAASvwP,EAAEuwP,QACXD,QAAStwP,EAAEswP,SAEbtwP,EAAEqrP,SAAU,EACZztP,EAAE4F,KAAM,cACV,EACAzD,EAAE7F,UAAUi4P,OAAS,WACnB3uP,KAAKowD,UAAYpwD,KAAK0oG,SAAU1oG,KAAKqoP,kBAAkB/vO,SAAQ,SAAU9b,GACvEA,EAAEksG,QACJ,KACA1oG,KAAKmrO,OAAO7yN,SAAQ,SAAU9b,GAC5BA,EAAEqrP,SAAU,CACd,GACF,EACAtrP,EAAE7F,UAAUi7P,aAAe,WACzB,OAAO3xP,KAAK4xP,WAAar1P,EAAEq1P,SAC7B,EACAr1P,EAAE7F,UAAUumF,QAAU,SAAUzgF,GAC9B,IAAI1C,EAAIkG,KACNzD,EAAIzC,EAAEuuP,kBACNxuP,EAAImG,KAAK80D,aAQX,GAPA16D,EAAE4F,KAAM,UAAW,CACjB6xP,WAAYr1P,IAEdA,GAAKorC,EAAE9tC,GACP,CAACA,EAAEgtP,MAAOhtP,EAAE2uP,WAAY3uP,EAAEmvP,gBAAgB3wO,SAAQ,SAAU9b,GAC1D4tO,EAAE5tO,EACJ,IACID,EAAG,IAAKC,EAAID,EAAE/F,OAAQgG,KAAMD,EAAEC,GAAGygF,UAIrC,IAAK,IAAI1lF,IAHT,oEAAoE0W,MAAM,KAAKqK,SAAQ,SAAU9b,GAC/F1C,EAAE0C,KAAO1C,EAAE0C,GAAK1C,EAAE0C,GAAGygF,UACvB,IACcnjF,EAAEsuP,wBAAyBtuP,EAAEsuP,wBAAwB7wP,GAAKuC,EAAEsuP,wBAAwB7wP,GAAG0lF,UACrGxvE,EAAE3T,GAAG,SAAU0C,EAAGD,IACf,IAAMzC,EAAE63P,eAAe7kP,QAAQvQ,WAAazC,EAAEyC,EACjD,IACAyD,KAAK80D,aAAej7D,CACtB,EACA0C,EAAE7F,UAAUo7P,cAAgB,SAAUt1P,EAAG1C,GACvC,IAGEysE,EAHEhqE,EAAIyD,KAAKwpP,UACX3vP,EAAImmN,EAAEzjN,GAAKA,EAAEqoL,MAAM,GACnBrtL,EAAIyI,KAAKsqO,MAET1wO,EAAIoG,KAAK+xP,MAMX,GALA33P,EAAE4F,KAAM,gBAAiB,CACvBzI,EAAGiF,EACHi7O,MAAO39O,IAET0C,IAAMA,EAAIwD,KAAK+xP,OAAS/xP,KAAK+xP,MAAMx6P,GAC/BgF,IAAK,KAAQhE,EAAEuB,KAAOD,GAAI,CAE5B,GADAA,EAAItB,EAAEuB,KAAOysE,EAAIy5I,EAAE,cAAgBhgN,KAAK+oP,KAAOjvP,EAAEk4P,aAAe,KAAMhyP,KAAK0nP,QAAU5tP,EAAEm4P,MAAQjyP,KAAKC,IAAMnG,EAAEo4P,QAAU3rL,EAAI/pE,IAAMwD,KAAKwmP,MAAQhqP,EAAE21P,OAASnyP,KAAKsW,IAAMtW,KAAKC,IAAMzD,EAAE41P,OAASpyP,KAAKsW,KAC1L/d,EAAEguE,GAAI,CACR,IAAIjvE,EAAI,CACNiD,MAAOT,IAAMkG,KAAK0nP,QAAU5tP,EAAE2T,EAAIuyM,EAAElmN,EAAEu4P,OAAQv4P,EAAE4N,IAChDqjP,gBAAiBxkL,GAEnBhvE,EAAE81P,OAASviB,EAAExzO,EAAG,CACdg7P,aAAa,EACbH,OAAQ31P,GAAKA,EAAE21P,OACfC,OAAQ51P,GAAKA,EAAE41P,OACf3a,MAAO39O,IAETxC,EAAI0I,KAAKwnP,gBAAgBlwP,IAAM,IACjC,CACA,IAAKiB,EAAEjB,GAEL,YADA0I,KAAKuyP,gBAGP14P,EAAImG,KAAKmnO,aAAennO,KAAK6mP,SAC7BjtP,IAAMoG,KAAK+xP,MAAQn4P,EAAIrC,EAAEoxG,SAASrQ,OAAOrwC,SAAS,8CAAgDpuD,EAAI,YAAc,UAAY0C,EAAE6hC,WAAa,KAAKO,KAAK,CACvJ4iB,OAAQy+J,EAAEzjN,EAAEglD,OAAQ,KACnBjvC,MAAO/a,EAAE81O,aAAezzO,EAAE+kC,KAAK,CAChCm3M,OAAQv5O,EAAEq+J,QAAU/gK,EAAIkvO,EAAEl7L,MAAM,WAAWqgM,WAAW,KAAK/zO,MAAQ,WACnE,eAAgB6lN,EAAEzjN,EAAEw/C,MAAO,KAC1B5M,IAAI,CACL,iBAAkB,SAChB5yC,EAAEi2P,WAAa54P,EAAE+kC,KAAK,CACxB2oN,UAAW/qP,EAAEi2P,cAEf54P,EAAEs2C,OAAOvR,KAAK,CACZ7kC,EAAGxC,IAELuC,IAAM0C,EAAEw/C,OAASniD,EAAE+kC,KAAK,CACtB,eAAgB3+B,KAAKgmP,SAEvBhmP,KAAK+xP,MAAMx6P,EAAIiF,CACjB,MAAOwD,KAAKuyP,gBACZn4P,EAAE4F,KAAM,qBAAsB,CAC5BzI,EAAGiF,EACHi7O,MAAO39O,GAEX,EACAyC,EAAE7F,UAAU67P,cAAgB,WAC1BvyP,KAAK+xP,OAAS/xP,KAAK+xP,MAAM5hN,OACzB/1C,EAAE4F,KAAM,qBACV,EACAzD,EAAE7F,UAAUk3P,mBAAqB,WAC/B,IAAIpxP,EAAIwD,KAAKsqO,MAAM10M,QAAQ00M,MAAM8C,QACjC,SAAU5wO,GAAKA,EAAEilC,SAAW,IAAI57B,KAAKrJ,EAAEvD,MACzC,EACAsD,EAAE7F,UAAU2zP,sBAAwB,SAAU7tP,GAC5C,OAAO+pE,EAAE/pE,IAAM,EAAIA,CACrB,EACAD,EAAE7F,UAAUwmF,OAAS,SAAU1gF,EAAG1C,GAChC,IAAIyC,EAAIyD,KAAKsqO,MACb9tO,EAAI5C,EAAEoG,KAAK8nP,YAAatrP,GACxBwD,KAAKi9E,SAAQ,GACbj9E,KAAKu0B,KAAKh4B,EAAGC,GACbD,EAAEk2P,YAAa,EACfzyC,EAAElmN,GAAG,IAAOyC,EAAEoyP,QAChB,EACApyP,EAAE7F,UAAUwyC,OAAS,SAAU1sC,GAC7B,IAAK,IAAI1C,EAAIkG,KAAKsqO,MAAO/tO,EAAIyD,KAAK+oP,KAAMlvP,EAAImG,KAAKmrO,OAAQ5zO,EAAIsC,EAAErD,OAAQe,KAAMsC,EAAEtC,IAAMsC,EAAEtC,GAAG2xC,QAAO,GACjG1uC,EAAEV,EAAE4vP,KAAM1pP,MACVxF,EAAEV,EAAEyC,GAAIyD,MACRlG,EAAEyC,GAAG+b,SAAQ,SAAU9b,EAAG1C,GACxB0C,EAAEo5B,QAAQ5H,MAAQxxB,EAAEsrP,YAAY95N,MAAQl0B,CAC1C,IACAkG,KAAKi9E,UACLnjF,EAAE24P,YAAa,EACfzyC,EAAExjN,GAAG,IAAO1C,EAAE60P,QAChB,EACApyP,EAAE7F,UAAUg8P,SAAW,SAAUl2P,EAAG1C,GAClCkG,KAAKk9E,OAAO,CACV6K,MAAOvrF,GACN1C,EACL,EACAyC,EAAE7F,UAAUi8P,cAAgB,SAAUn2P,EAAG1C,GACvCkG,KAAKk9E,OAAO,CACViqJ,WAAY3qO,GACX1C,EACL,EACAyC,EAAEw1G,eAAiB3oG,EAAE23O,oBACrBxkP,EAAEq1P,UAAY,+CAA+C3jP,MAAM,KAC5D1R,CACT,CAp+BI,GAs+BGA,CACT,IACAiL,EAAEjL,EAAG,4BAA6B,CAACA,EAAE,uBAAuB,SAAUA,GACpE,IAIEguO,EAJE3iM,EAAIrrC,EAAE0uO,SACRlC,EAAIxsO,EAAEwvO,aACN5nF,EAAI5nJ,EAAE8vO,sBACN3kO,EAAInL,EAAEywO,UAyCR,OAvCA,SAAWzwO,GACT,SAAS6M,IACP,OAAOpJ,KAAKsqO,MAAMxkN,KAAKqpN,aAAatzO,MAAMmE,KAAKsqO,MAAMxkN,KAAMhqB,UAC7D,CACA,SAASsgK,EAAE7/J,GACT,aAAeA,EAAEurP,YAAY7uP,KAAO+G,KAAK0kP,cAAW,EAAS1kP,KAAK0kP,WAAa1kP,KAAK0kP,SAAW,IAAI9nP,EAAEoD,MACvG,CACA,IAAIjF,EAAI,GACRwB,EAAEsjP,QAAU,SAAUtjP,GAEpB,OADC,IAAMxB,EAAE+R,QAAQvQ,KAAOxB,EAAEjE,KAAKyF,GAAIA,EAAEq1P,UAAU96P,KAAK,YAAayF,EAAE7F,UAAUy4O,aAAe/lO,EAAGw+B,EAAErrC,EAAG,OAAQ6/J,IACrG7/J,CACT,EACA,IAAIK,EAAI,WACN,SAASL,EAAEA,GACTyD,KAAKikL,KAAO1nL,CACd,CAoBA,OAnBAA,EAAE7F,UAAU40P,0BAA4B,SAAU/uP,EAAGhF,GACnD,IAAIsC,EAAItC,GAAK,CAAC,CAAC,cAAe,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,MAAO,CAAC,SAAU,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,KAAM,CAAC,SAAU,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,KAAM,CAAC,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAAM,CAAC,MAAO,CAAC,EAAG,IAAK,CAAC,OAAQ,CAAC,EAAG,IAAK,CAAC,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,IAAK,CAAC,OAAQ,OACzPA,EAAIsC,EAAEA,EAAErD,OAAS,GACjB,IAEEuE,EAFEoM,EAAIO,EAAEnQ,EAAE,IACVqF,EAAIrF,EAAE,GAER,IAAKwD,EAAI,EAAGA,EAAIlB,EAAErD,SAAYe,EAAIsC,EAAEkB,GAAIoM,EAAIO,EAAEnQ,EAAE,IAAKqF,EAAIrF,EAAE,KAAIsC,EAAEkB,EAAI,IAAMwB,IAAM4K,EAAIvK,EAAEA,EAAEpG,OAAS,GAAKkR,EAAE7N,EAAEkB,EAAI,GAAG,KAAO,IAAIA,KAG7H,OAFAoM,IAAMO,EAAE6B,MAAQhN,EAAI,EAAI4K,IAAMvK,EAAI,CAAC,EAAG,EAAG,IAElC,CACLwyO,UAAWjoO,EACXqnC,MAHFjyC,EAAI4nJ,EAAE5nJ,EAAI4K,EAAGvK,EAAG,SAAWrF,EAAE,GAAK2M,KAAKI,IAAIykO,EAAExsO,EAAI4K,GAAI,GAAK,GAIxDw9O,SAAUptP,EAAE,GAEhB,EACAgF,EAAE7F,UAAUkuP,eAAiB,SAAUroP,EAAGhF,GACxC,IAAIsC,EAAImG,KAAKikL,KACb,OAAOpqL,EAAEmvP,kBAAoBnvP,EAAEywO,MAAMxkN,KAAKypN,cAAc11O,EAAEmvP,kBAAmBzsP,EAAG1C,EAAE+7B,QAAQ2sN,YAAahrP,IAAMA,EAAEgS,KAAOhS,EAAEqc,GAC1H,EACOrX,CACT,CAxBQ,GAyBRA,EAAEq2P,UAAYh2P,CACf,CAtCD,CAsCG2tO,IAAMA,EAAI,CAAC,IACPA,CACT,IACA/iO,EAAEjL,EAAG,+BAAgC,CAACA,EAAE,uBAAuB,SAAUA,GACvE,IAIEguO,EAJE3iM,EAAIrrC,EAAE0uO,SACRlC,EAAIxsO,EAAEwvO,aACN5nF,EAAI5nJ,EAAE8vO,sBACN3kO,EAAInL,EAAEkwO,KAyDR,OAvDA,SAAWlwO,GACT,SAAS6M,EAAE7M,GACT,IAAI1C,EAAImG,KAAKqkP,YACb,gBAAkB9nP,EAAEurP,YAAY7uP,KAAO+G,KAAKqkP,iBAAc,EAASxqP,IAAMmG,KAAKqkP,YAAc,IAAIznP,EAAEoD,MACpG,CACA,SAASo8J,IACP,IAAI7/J,EAAIyD,KAAKqkP,YACb9nP,IAAMyD,KAAK2qP,QAAU,SAAU9wP,GAC7B,OAAO0C,EAAEkoP,QAAQ5qP,EACnB,EAAGmG,KAAK6qP,QAAU,SAAUhxP,GAC1B,OAAO0C,EAAEovP,QAAQ9xP,EACnB,EACF,CACA,IAAIkB,EAAI,GACRwB,EAAEsjP,QAAU,SAAUtjP,GAEpB,OADC,IAAMxB,EAAE+R,QAAQvQ,KAAOxB,EAAEjE,KAAKyF,GAAIA,EAAEq1P,UAAU96P,KAAK,eAAgB8wC,EAAErrC,EAAG,OAAQ6M,GAAIw+B,EAAErrC,EAAG,YAAa6/J,IAChG7/J,CACT,EACA,IAAIK,EAAI,WACN,SAASL,EAAEA,GACTyD,KAAKikL,KAAO1nL,CACd,CA8BA,OA7BAA,EAAE7F,UAAU20P,oBAAsB,SAAU9uP,EAAGhF,EAAG+uE,EAAG1pE,GACnD,IAAI/C,EAAImG,KAAKikL,KACX98K,EAAItN,EAAEoG,IACNlF,EAAIlB,EAAE+7B,QACNwmI,EAAI,GAEN,GADAx/J,IAAMoD,KAAK6yP,uBAAoB,GAC3B,IAAMt2P,EAAGA,EAAI2H,KAAK+c,MAAM1kB,GAAI6/J,EAAIviK,EAAEoxP,uBAAuB1uP,EAAGhF,EAAG+uE,QAAQ,GAAI,KAAO/pE,EAAG,CACvF,IACEnC,EADE0wO,EAAI5mO,KAAKwF,MAAMnS,GAEjBD,EAAIyD,OAAI,EACV,IAAKoM,EAAI,GAAK5K,EAAI,CAAC,EAAG,EAAG,GAAK,IAAMA,EAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIuuO,EAAIxkK,EAAI,IAAMhvE,EAAGwzO,IAAK,CAC3G,IAAItuO,EAAI2K,EAAE3Q,OACV,IAAK4D,EAAI,EAAGA,EAAIoC,IAAMlF,EAAG8C,IAAK,CAC5B,IAAImsE,EAAIvmE,KAAK2rP,QAAQ3rP,KAAKykP,QAAQ3Z,GAAK3jO,EAAE/M,IACzCmsE,EAAIhvE,KAAOqF,GAAK7B,GAAKurE,IAAM,qBAAuBvrE,GAAKqhK,EAAEtlK,KAAKiE,GAC9DA,EAAIurE,IAAMhvE,GAAI,GACdyD,EAAIwrE,CACN,CACF,CACF,MAAOhvE,EAAIyI,KAAKykP,QAAQltP,GAAI+uE,EAAItmE,KAAKykP,QAAQn+K,GAAI/pE,EAAIK,EAAI/C,EAAEsxP,uBAAyBpwP,EAAEwpP,aAAchoP,EAAImL,EAAE,SAAWnL,EAAI,KAAOA,EAAGyD,KAAK6yP,kBAAmB93P,EAAE2nP,mBAAqB9lP,EAAI,EAAI,IAAM0pE,EAAI/uE,KAAOqF,EAAIuK,EAAItN,EAAEyqP,cAAc9tP,OAAS2Q,IAAM,IAAK5K,EAAI4nJ,EAAE5nJ,OAAG,EAAQwsO,EAAExsO,IAAK6/J,EAAIviK,EAAEoxP,uBAAuB1uP,EAAGhF,EAAG+uE,GAAGrpE,IAAI+C,KAAK2rP,SAAU/uP,IAAMoD,KAAK6yP,kBAAoBt2P,EAAI,GAE3W,OADAK,IAAM/C,EAAE0qP,aAAehoP,GAChB6/J,CACT,EACA7/J,EAAE7F,UAAU+tP,QAAU,SAAUloP,GAC9B,OAAO2H,KAAKG,IAAI,GAAI9H,EACtB,EACAA,EAAE7F,UAAUi1P,QAAU,SAAUpvP,GAC9B,OAAO2H,KAAK8zI,IAAIz7I,GAAK2H,KAAK8nO,IAC5B,EACOzvO,CACT,CAlCQ,GAmCRA,EAAEq2P,UAAYh2P,CACf,CAtDD,CAsDG2tO,IAAMA,EAAI,CAAC,IACPA,CACT,IACA/iO,EAAEjL,EAAG,iDAAkD,CAACA,EAAE,uBAAuB,SAAUA,GACzF,IAGEmL,EAHEkgC,EAAIrrC,EAAEsvO,MACR9C,EAAIxsO,EAAEe,OACN6mJ,EAAI5nJ,EAAEO,SAwFR,OAtFA,SAAWP,GACT,IACEkuO,EADErhO,EAAI,GAER7M,EAAEsjP,QAAU,SAAUtjP,EAAGK,GAGvB,OAFA6tO,IAAMA,EAAIluO,IACT,IAAM6M,EAAE0D,QAAQlQ,KAAOwM,EAAEtS,KAAK8F,GAAImsO,EAAEnsO,EAAElG,UAAW0lK,EAAE1lK,YAC7CkG,CACT,EACA,IAAIw/J,EAAI,WACN,SAAS7/J,IAAK,CA0Ed,OAzEAA,EAAE7F,UAAUo8P,gBAAkB,SAAUv2P,EAAGhF,EAAGsC,QAC5C,IAAWA,IAAMA,EAAImG,KAAK41B,SAC1B,IAAIzuB,EAAInH,KAAKwnP,gBAAgB,CACzBjtP,MAAOhD,EACP0wH,OAAO,EACP+iI,YAAanxP,EAAEmxP,cAEjB1kL,EAAI,GACJ1pE,EAAIoD,KAAKwmP,MAQX,GAPAjvP,GAAK4sJ,EAAEnkJ,KAAKuP,OAAS40I,EAAEnkJ,KAAKsE,MAAQ/H,EAAIyD,KAAKuP,KAAOhY,EAAIyI,KAAKuP,KAAOhT,EAAIyD,KAAKsE,KAAO/M,EAAIyI,KAAKsE,IAC7F/H,EAAIyD,KAAKwnP,gBAAgB,CACvBjtP,MAAOgC,EACP0rH,OAAO,EACP+iI,YAAanxP,EAAEmxP,cAEjBnxP,EAAI,EACA0C,GAAK4K,EAAG,CACV,GAAI5P,EAAG,CACL,IAAIgB,EAAIgE,EAAEH,aAAe+K,EAAE/K,WAC3BvC,EAAI,CACN,CACA,IAAKtC,EAAI,EAAGA,EAAIgF,EAAE/F,OAAQe,GAAK,EAAG,CAChC,IAAIwD,EAAIwB,EAAEhF,GACRiD,EAAI+B,EAAEhF,EAAI,GACV6kK,EAAIj1J,EAAE5P,GACNuzO,EAAI3jO,EAAE5P,EAAI,GACZ,MAAQwD,EAAE,IAAM,MAAQA,EAAE,IAAM,MAAQP,EAAE,IAAM,MAAQA,EAAE,IAAM,MAAQ4hK,EAAE,IAAM,MAAQA,EAAE,IAAM,MAAQ0uE,EAAE,IAAM,MAAQA,EAAE,KAAOluO,GAAKw/J,EAAE,KAAOrhK,EAAE,IAAMqhK,EAAE,IAAMviK,EAAGixO,EAAE,IAAMjxO,GAAK+C,GAAKw/J,EAAE,KAAOrhK,EAAE,KAAOqhK,EAAE,IAAMviK,EAAGixO,EAAE,IAAMjxO,GAAIysE,EAAExvE,KAAK,CAAC,IAAKiE,EAAE,GAAIA,EAAE,IAAK,CAAC,IAAKP,EAAE,GAAIA,EAAE,IAAK,CAAC,IAAKswO,EAAE,GAAIA,EAAE,IAAK,CAAC,IAAK1uE,EAAE,GAAIA,EAAE,IAAK,CAAC,OACjT91F,EAAEysL,OAASx6P,CACb,CACF,CACA,OAAO+tE,CACT,EACA/pE,EAAE7F,UAAUs8P,YAAc,SAAUz2P,GAClC,OAAOyD,KAAKwxP,kBAAkBj1P,EAAG,YACnC,EACAA,EAAE7F,UAAUu8P,YAAc,SAAU12P,GAClC,OAAOyD,KAAKwxP,kBAAkBj1P,EAAG,YACnC,EACAA,EAAE7F,UAAU86P,kBAAoB,SAAUj1P,EAAGhF,GAC3C,IAAIsC,EAAImG,KACNmH,EAAInH,KAAK8nP,YACTxhL,EAAI,IAAImkK,EAAEzqO,KAAMzD,GAElB,GADAyD,KAAKowD,UAAYkW,EAAIA,EAAEoiC,UACnBpiC,EAAG,CAIL,GAHAtmE,KAAKolP,eAAiBplP,KAAKolP,cAAe,GAAKj+O,EAAEmqP,WAAa,IAAIz+O,OAAO1L,EAAEoqP,WAAa,IAAIj5O,SAAQ,SAAU/b,GAC5G1C,EAAE23P,kBAAkBj1P,EACtB,KACIhF,EAAG,CACL,IAAIqF,EAAIuK,EAAE5P,IAAM,GAChBqF,EAAE9F,KAAKyF,GACP4K,EAAE5P,GAAKqF,CACT,CACAoD,KAAKqoP,kBAAkBvxP,KAAKwvE,EAC9B,CACA,OAAOA,CACT,EACA/pE,EAAE7F,UAAUw8P,qBAAuB,SAAU32P,GAC3C,IAAIhF,EAAIyI,KAAKqoP,kBACXxuP,EAAImG,KAAK41B,QACTzuB,EAAInH,KAAK8nP,YACX,GAAIvwP,EAAG,CACL,IAAK,IAAI+uE,EAAI/uE,EAAEf,OAAQ8vE,KAAM/uE,EAAE+uE,GAAGvqC,KAAOx/B,GAAKhF,EAAE+uE,GAAG2W,UACnD,CAACpjF,EAAEy3P,WAAa,GAAInqP,EAAEmqP,WAAa,GAAIz3P,EAAE03P,WAAa,GAAIpqP,EAAEoqP,WAAa,IAAIj5O,SAAQ,SAAUze,GAC7F,IAAKysE,EAAIzsE,EAAErD,OAAQ8vE,MAAOzsE,EAAEysE,IAAM,CAAC,GAAGvqC,KAAOx/B,GAAKqrC,EAAE/tC,EAAGA,EAAEysE,GAC3D,GACF,CACF,EACA/pE,EAAE7F,UAAUy8P,eAAiB,SAAU52P,GACrCyD,KAAKkzP,qBAAqB32P,EAC5B,EACAA,EAAE7F,UAAU08P,eAAiB,SAAU72P,GACrCyD,KAAKkzP,qBAAqB32P,EAC5B,EACOA,CACT,CA5EQ,EA6ET,CArFD,CAqFGmL,IAAMA,EAAI,CAAC,IACPA,CACT,IACAF,EAAEjL,EAAG,6CAA8C,CAACA,EAAE,kDAAmDA,EAAE,uBAAuB,SAAUA,EAAG6M,GAC7I,IAAIw+B,EAAIx+B,EAAEkiO,SACRnnF,EAAI/6I,EAAEmiO,SACN7jO,EAAI0B,EAAEsiO,QACNnB,EAAInhO,EAAEuiO,wBACNnB,EAAIphO,EAAEyiO,MACNpB,EAAIrhO,EAAEyhO,UACNzuE,EAAIhzJ,EAAE4rB,MACNj6B,EAAIqO,EAAEkjO,WACN1vO,EAAIwM,EAAEqjO,KAwGR,OAvGArjO,EAAI,WACF,SAAS7R,EAAEgF,EAAGhF,GACZyI,KAAKikL,KAAO1nL,EACZhF,IAAMyI,KAAK41B,QAAUr+B,EAAGyI,KAAK+7B,GAAKxkC,EAAEwkC,GACtC,CA+FA,OA9FAxkC,EAAEsoP,QAAU,SAAUhmP,GACpB,OAAO0C,EAAEsjP,QAAQtoP,EAAGsC,EACtB,EACAtC,EAAEb,UAAUgyG,OAAS,WACnB+hI,EAAEzqO,KAAM,UACR,IAAIzD,EAAIyD,KACNzI,EAAIgF,EAAE0nL,KACN39G,EAAI/uE,EAAEivP,MACNl/O,EAAI/P,EAAE8sP,YACN9rP,EAAIgE,EAAEq5B,QACNw0M,EAAI7xO,EAAEqiK,MACNpgK,EAAIoC,EAAErE,EAAEgpD,OAAQ,GAChB3Z,EAAIrvC,EAAEq7C,OACNk3L,EAAI,CAAC,EACL1wO,EAAI7C,EAAE+yO,MAAM3hI,SACZrxG,EAAIiB,EAAEiuE,MACNhqE,EAAID,EAAEiqE,MACND,EAAIhuE,EAAE8H,GACNvG,EAAIvB,EAAE+H,KACN1G,EAAIrB,EAAEgC,MACN4hN,EAAI5/M,EAAE82P,QACN5lP,EAAI,GACJuyM,EAAIt4M,EAAE5N,IAAM4N,EAAE6+D,GAChB94D,EAAI/F,EAAE9N,GACN,IAAIqsE,GAAKk2I,EACPiE,EAAI,CACF,MAAS,oBAAsBJ,EAAI,QAAU,UAAYznN,EAAE6lC,WAAa,KAE1E0zH,EAAIkuD,EAAI,QAAU,QAOpB,GANA14M,IAAMxN,EAAIwN,EAAEqkP,QAAQ7xP,GAAIysE,EAAIj/D,EAAEqkP,QAAQplL,GAAI3sE,EAAI0N,EAAEqkP,QAAQ/xP,IACxDrC,EAAE+yO,MAAM+C,aAAe5/N,GAAK2yM,EAAE01B,OAAS1L,GAAK,UAAWhqB,EAAE,gBAAkBxjN,EAAErE,EAAEwjD,MAAO,GAAIxjD,EAAEi6P,YAAcpyC,EAAEknC,UAAY/uP,EAAEi6P,YAAcxyC,IAAMI,EAAEjD,KAAOitB,GAAK,UAAW7xO,EAAE2mK,cAAgBkhD,EAAE01B,OAASv9O,EAAEmlK,YAAa0iD,EAAE,gBAAkB7nN,EAAE2mK,eACzO4rE,EAAEvpL,OAAS/mD,EACXs3J,GAAK,IAAMt3J,GACV8M,EAAI/P,EAAE6wP,wBAAwBt2F,MAAQv6J,EAAE6wP,wBAAwBt2F,GAAKxqJ,EAAIlN,EAAEmsE,EAAE,QAAUurF,GAAGnzH,KAAKmsM,GAAGx4N,OACnG2zD,IAAM1pE,EAAE82P,QAAUl3C,EAAI/hN,EAAEk+F,OAAO35D,KAAKyhL,GAAG9tM,IAAIhL,IACvCmG,EAAGA,EAAIlW,EAAEiwP,gBAAgB,CAC3BjtP,MAAOX,EACPspP,UAAW/mC,EAAEk6B,cACb2U,YAAazyP,EAAEyyP,kBACT,KAAIhrC,EAAuC,OAApCvyM,EAAIlW,EAAEu7P,gBAAgBh5P,EAAGysE,EAAGhuE,EAAc,CAkBzD,OAjBCgE,EAAE+2P,aAAe1rN,IAAM7sC,EAAE6sC,GAAG,SAAUprC,EAAG1C,GACxCqiN,EAAExpK,GAAG74C,GAAG,SAAU0C,GAChBorC,EAAE9tC,GAAG+B,MAAMU,EAAG,CAACC,GACjB,GACF,IAAID,EAAE+2P,aAAc,IACnBrtL,IAAMk2I,EAAEriN,IAAM2T,GAAKA,EAAEjX,OAAS2lN,EAAEx9K,KAAK,CACpC7kC,EAAG2T,IACA0uM,IAAM1uM,GAAK0uM,EAAEjsK,MAAK,GAAKisK,EAAEn2J,QAAQ,CACpClsD,EAAG2T,KACC0uM,EAAEriN,IAAMqiN,EAAEhsK,OAAQ3zC,IAAMD,EAAEiqE,MAAQhqE,EAAIA,EAAEygF,aAC9C3lF,IAAMoQ,EAAEpQ,EAAEw8B,OAASpsB,EAAEpQ,EAAEosP,aAAej2O,GAAKA,EAAEjX,QAAU,EAAIe,EAAEwkD,OAAS,EAAIxkD,EAAE2mD,SAAWzwC,EAAEslP,QAAUz7P,EAAI8kK,EAAE,CACvGnvB,MAAO3mE,GAAK05I,GAAK,SACjBvyM,EAAG64D,GAAK05I,GAAK,EAAI,GACjBgwB,eAAgB1pK,GAAK05I,GAAK,SAC1Bt4M,EAAG4+D,EAAI05I,EAAI,GAAK,GAAKA,EAAI,GAAK,EAC9Bi2B,SAAU3vK,IAAM05I,GAAK,IACpB1oN,GAAI0I,KAAKonP,YAAY9vP,EAAGmW,EAAGuyM,EAAGxlN,IAAMgC,GAAKA,EAAE2zC,OACvC5zC,CACT,EACAhF,EAAEb,UAAU0wP,YAAc,SAAU7qP,EAAGhF,EAAG+uE,EAAG1pE,GAC3C,IAAI/C,EAAImG,KAAKikL,KACX98K,EAAItN,EAAEywO,MAAM3hI,SACZ5tG,EAAIiF,KAAKwmE,MACXzrE,IAAMiF,KAAKwmE,MAAQzrE,EAAIoM,EAAE2sB,KAAK9zB,KAAKuzP,aAAah3P,GAAI,EAAG,EAAGA,EAAEm1O,SAAS/yM,KAAK,CACxEsuG,MAAO1wI,EAAEm3I,WAAan3I,EAAE0wI,MACxBgpG,SAAU15O,EAAE05O,SACZ,MAAS,oBAAsB3vK,EAAI,OAAS,QAAU,WAAa/pE,EAAE6hC,WAAa,IAClFmjB,OAAQ3kD,IACP0V,MAAOzY,EAAEywO,MAAM+C,YAActyO,EAAEo0C,IAAIitH,EAAE,CACtCs0E,aAAc,YACbn0O,EAAE0yC,SACLryC,EAAIrF,EAAEi8P,SAAW,CAACj8P,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAI+uE,EAAI/uE,EAAE,GAAG,GAAKA,EAAE,GAAG,IACvDA,EAAIA,EAAEk8P,SAAW,CAACl8P,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAI+uE,EAAI/uE,EAAE,GAAG,GAAKA,EAAE,GAAG,IACvD+uE,EAAI69E,EAAEvnJ,GACNuK,EAAIg9I,EAAE5sJ,GACNwD,EAAEkyI,MAAM1wI,GAAG,EAAI,CACbkR,EAAG64D,EACH5+D,EAAGP,EACH40C,MAAOnU,EAAEhrC,GAAK0pE,EACdpoB,OAAQtW,EAAErwC,GAAK4P,IAEjBpM,EAAE0gM,YAAc,SAAW1gM,EAAE0gM,YAAc1gM,EAAEo0C,IAAI,CAC/C4M,OAAQ,KAAOhhD,EAAEk7O,SAAWp8O,EAAEqkD,QAAUnjD,EAAEq6O,UAAU1tO,EAAI7N,EAAE6jC,KAAO7jC,EAAEkiD,OAAShhD,EAAEq6O,UAAU3nO,EAAI5T,EAAEqoD,OAAS,OAEzGnnD,EAAEm1C,MAAK,EACT,EACA34C,EAAEb,UAAU68P,aAAe,SAAUh3P,GACnC,OAAOmL,EAAEnL,EAAEmnP,WAAannP,EAAEmnP,UAAU9sP,KAAKoJ,MAAQzD,EAAEu3B,IACrD,EACAv8B,EAAEb,UAAUumF,QAAU,WACpButJ,EAAExqO,KAAKikL,KAAKokE,kBAAmBroP,aACxBA,KAAKikL,KACZsmD,EAAEvqO,KACJ,EACOzI,CACT,CApGI,GAuGG6R,CACT,IACA5B,EAAEjL,EAAG,kBAAmB,CAACA,EAAE,2BAA4BA,EAAE,mBAAoBA,EAAE,sCAAuCA,EAAE,qCAAsCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,GAC3M,IAAIkgC,EAAIrrC,EAAEkB,OACR+sO,EAAIphO,EAAEyqB,IACN42M,EAAI1B,EAAE4K,WACNv3E,EAAI10J,EAAEujO,SACNlwO,EAAI2M,EAAEi0J,MACN/+J,EAAI8K,EAAEynC,IACN53C,EAAImQ,EAAEgkO,QACN7xO,EAAI6N,EAAEkkO,eACNzkO,EAAIO,EAAEpK,OACNgpE,EAAI5+D,EAAEmjO,UACNvjO,EAAII,EAAEzL,QACN1D,EAAImP,EAAE5K,SACNstO,EAAI1iO,EAAEmd,SACNrqB,EAAIkN,EAAEstB,MACNq1M,EAAI3iO,EAAE+kO,KACN3B,EAAIpjO,EAAEklO,MACNxyO,EAAIsN,EAAEqlO,YA4iBR,OA3iBAxwO,EAAI,WACF,SAASA,EAAEC,EAAGD,GACZyD,KAAK0zP,aAAc,EACnB1zP,KAAKy8C,eAAY,EACjBz8C,KAAKypP,WAAa,GAClBzpP,KAAK48J,SAAW,EAChB58J,KAAKw+O,UAAW,EAChBx+O,KAAK2zP,UAAW,EAChB3zP,KAAK0D,IAAM,CAAC,EACZ1D,KAAK41B,QAAU,CAAC,EAChB51B,KAAK4zP,SAAU,EACf5zP,KAAKsqO,MAAQ9tO,EACbwD,KAAKu0B,KAAK/3B,EAAGD,EACf,CA2hBA,OA1hBAA,EAAE7F,UAAUm9P,YAAc,WACxB,IAAIr3P,EAAIwD,KAAKsqO,MACb9tO,EAAEmsG,SAASpoC,WAAW,CACpBlJ,QAAS,SACT/9B,WAAY,CACVyC,GAAI,eAAiBv/B,EAAEwxB,MACvBqyB,QAAS,IAEX5Z,SAAU,CAAC,CACT4wB,QAAS,iBACT/9B,WAAY,CACV,GAAM,cACNw6N,aAAc,IAEf,CACDz8L,QAAS,WACT/9B,WAAY,CACV8yJ,GAAI,EACJC,GAAI,IAEL,CACDh1H,QAAS,sBACT5wB,SAAU,CAAC,CACT4wB,QAAS,UACT/9B,WAAY,CACVrgC,KAAM,SACNwzP,MAAO,OAGV,CACDp1L,QAAS,UACT5wB,SAAU,CAAC,CACT4wB,QAAS,eACR,CACDA,QAAS,cACT/9B,WAAY,CACV,GAAM,sBAKhB,EACA/8B,EAAE7F,UAAUq9P,cAAgB,SAAUv3P,GACpC,OAAOA,EAAES,KAAI,SAAUT,GACrB,IAAID,EAAIC,EAAE2uO,OAAO6oB,eACjB,OAAQz3P,GAAGC,EAAEi7O,MAAMwc,cAAgB,SAAW,cAAgBz3P,EAAEi7O,MAAMyc,kBAAkBt9P,KAAK4F,EAAEi7O,MAAOl7O,GAAGC,EAAEi7O,MAAMwc,cAAgB,SAAW,WAAa,GAC3J,GACF,EACA13P,EAAE7F,UAAUy9P,WAAa,SAAU33P,GACjCwD,KAAKsqO,MAAMa,OAAO7yN,SAAQ,SAAU/b,GAClC,IAAIzC,EAAIyC,GAAKA,EAAE63P,GACft6P,KAAOA,EAAE2iF,UAAYjgF,EAAID,EAAE63P,GAAKt6P,EAAEmjF,UAAYnjF,EAAE2iF,UAAW,EAC7D,GACF,EACAlgF,EAAE7F,UAAU29P,iBAAmB,SAAU73P,GACvC,IAAID,EAAIyD,KAAKksP,QAAUphB,EAAE9qO,MACrBlG,EAAI,CAAC0C,EAAE83P,6BAA6B/3P,EAAE,KAG1C,OAFAzC,EAAIA,EAAE+Y,OAAOrW,EAAEu3P,cAAcx3P,KAC3BzF,KAAK0F,EAAE83P,6BAA6B/3P,EAAE,IAAI,IACrCzC,CACT,EACAyC,EAAE7F,UAAUumF,QAAU,WACpBj9E,KAAKwmE,QAAUxmE,KAAKwmE,MAAQxmE,KAAKwmE,MAAMyW,WACvCj9E,KAAKiO,OAASjO,KAAKo0P,KAAOp0P,KAAKm0P,YAAW,GAAKn0P,KAAKo0P,GAAKp0P,KAAKo0P,GAAGn3K,WACjEj9E,KAAK2oG,WAAa3oG,KAAK2oG,SAAW3oG,KAAK2oG,SAAS1rB,UAAWpjF,EAAEmG,KAAKy8C,YAClE/0C,EAAE5O,aAAakH,KAAKu0P,WACpB7sP,EAAE5O,aAAakH,KAAKw0P,eACtB,EACAj4P,EAAE7F,UAAUylG,UAAY,SAAU3/F,EAAGD,GACnC,IAKE+pE,EACAlsE,EANEN,EAAIkG,KAAKsqO,MACXzwO,EAAIC,EAAE26P,QACNl9P,EAAIuC,EAAEs6O,SACN7tK,EAAIzsE,EAAEq1P,QACN73P,EAAIwC,EAAEs1P,SAGNjoP,EAAI,EACJvK,EAAI,EASN,OARAJ,EAAIsuO,EAAEtuO,GACNwD,KAAK00P,eAAiBn4P,GAAK,qBAAuBA,EAAE41P,SAAW51P,EAAI1C,EAAEg+M,UAAUt7M,IAAK1C,EAAI,CAAC0C,EAAE41P,OAAS76P,EAAGiF,EAAE61P,OAAS7rL,IAAM/pE,EAAE,GAAGm4P,WAAa96P,EAAI2C,EAAE,GAAGm4P,YAAcn4P,EAAE8b,SAAQ,SAAU9b,GACnL8pE,EAAI9pE,EAAE2uO,OAAOypB,MACbx6P,EAAIoC,EAAE2uO,OAAOwe,MACbxiP,GAAK3K,EAAEy1P,OAAS,EAChBr1P,GAAKJ,EAAEq4P,SAAWr4P,EAAEq4P,SAAWr4P,EAAEs4P,UAAY,IAAM,EAAIt4P,EAAE01P,OAAS,EAClE93P,GAAKksE,IAAM/uE,GAAK4P,GAAKo/D,EAAIzsE,EAAEo1P,WAAa90P,EAAE6F,IAAM7F,EAAEkc,IAAK1Z,GAAKtF,EAAIwC,EAAEm1P,UAAY3oL,EAAErmE,IAAMqmE,EAAEhwD,MAAQnP,GAAK/M,EAAEkc,IAAMhf,EAAGsF,GAAK0pE,EAAEhwD,IAAMiwD,GAC/H,IAAIp/D,GAAK3K,EAAEhG,OAAQoG,GAAKJ,EAAEhG,OAAQqD,EAAI,CAACtC,EAAIuC,EAAEm1P,UAAYryP,EAAIuK,EAAG5P,EAAIuC,EAAEo1P,WAAa/nP,EAAIvK,GAAIoD,KAAKqxO,QAAU,EAAI70O,EAAEhG,QAAU+F,IAAMhF,EAAIsC,EAAE,GAAK0C,EAAE41P,OAAS76P,EAAIuC,EAAE,GAAK0C,EAAE61P,OAAS7rL,IACrK1sE,EAAEoD,IAAIiH,KAAK+c,MACpB,EACA1kB,EAAE7F,UAAUq+P,SAAW,WACrB,IAcEx8P,EAdEiE,EAAIwD,KACNzD,EAAIyD,KAAKsqO,MAAM+C,WACfvzO,EAAIkG,KAAK41B,QACT/7B,EAAImG,KAAKiO,OAASjO,KAAK0zP,YACvBp8P,EAAI,WAAaC,EAAEuC,EAAEskC,WAAa,IAAMtkC,EAAEskC,UAAY,IACtDkoC,EAAIxsE,EAAEm1C,MAAM4xM,iBAAmB7gP,KAAK00P,eAAiB56P,EAAE03O,eAAiB,OAAS,QACjFp3O,EAAI,WACFoC,EAAEw4P,WAAY,CAChB,EACA7tP,EAAI,SAAU5K,GACZ,IAAIzC,EAAI0C,EAAE8tO,MAAM2qB,YAChBz4P,EAAEw4P,UAAYx4P,EAAE04P,wBAA0B14P,EAAE8tO,MAAMmqB,QAAQU,QAAQ54P,EAAE65C,cAAe,uBAC9E55C,EAAEw4P,WAAal7P,GAAKA,EAAEs7P,YAAYt7P,EAAEs7P,YAC3C,EAEAr6P,EAAIiF,KAAKsqO,MAAM3hI,SACjB,GAAInsG,EAAEgqE,MAAO,CACX,IAAIhsE,GAAKgC,EAAEgqE,MAAM/d,SAAS,qBACzB5uD,IAAMW,IAAMX,GAAKW,IAAMgC,EAAEygF,SAC5B,CACA,IAAKj9E,KAAKwmE,MAAO,CACf,GAAIxmE,KAAK4zP,QAAS,CAChBp5P,EAAIwF,KAAKsqO,MAAM10M,QAAQ00M,MAAMr7L,MAC7B,IAAI67L,EAAI3mF,EAAEk2F,kBACVr6O,KAAKy8C,UAAYlkD,EAAI6Q,EAAEyqB,IAAI57B,cAAc,OACzCM,EAAE6lC,UAAY,+BACdxhC,EAAErE,EAAG,CACH4kD,SAAU,WACVzf,IAAK,MACLmjN,cAAev6K,EACf/kB,OAAQr9C,KAAKI,IAAItE,KAAK41B,QAAQqZ,MAAMsS,QAAU,GAAI/mD,GAAKA,EAAE+mD,QAAU,GAAK,KAE1E66G,EAAE7jK,EAAG,aAAc6B,GACnBgiK,EAAE7jK,EAAG,aAAc4O,GACnBiC,EAAEyqB,IAAImc,KAAKt2C,YAAYnB,GACvByH,KAAK2oG,SAAW5tG,EAAI,IAAI+vO,EAAEvyO,EAAG,EAAG,EAAGiC,OAAG,OAAQ,EAAQO,EAAEsyO,WAC1D,CAaA,GAZAxzO,EAAImG,KAAKwmE,MAAQzrE,EAAEwrE,EAAEjvE,IAAM0I,KAAKwmE,MAAQzrE,EAAEyrE,MAAM,GAAI,EAAG,EAAG1sE,EAAEs3O,WAAO,OAAQ,EAAQt3O,EAAE43O,aAAS,EAAQp6O,GAAGqnC,KAAK,CAC5GyjB,QAAStoD,EAAEsoD,QACXhoD,EAAGN,EAAEwzO,eACH/wO,GAAKyD,KAAKwmE,MAAM7nC,KAAK,CACvBw+K,KAAMrjN,EAAEuiK,gBACR,eAAgBviK,EAAEolK,cACjB/vH,IAAIr1C,EAAEm1C,OAAOE,IAAI,CAClB0xM,cAAev6K,IACd9E,OAAO1nE,EAAE0nE,SACZjlE,GAAKzC,EAAE0nE,SAAWxhE,KAAK6zP,cAAe7zP,KAAKwmE,MAAM7nC,KAAK,CACpDnZ,OAAQ,oBAAsBxlB,KAAKsqO,MAAMt8M,MAAQ,OAE/CxxB,EAAEo3P,UAAYp3P,EAAEyR,MAAO,CACzB,IAAIm8N,EAAIpqO,KAAKwmE,MACXl/D,EAAI8iO,EAAEwL,QACNhuM,EAAIwiM,EAAEuL,QACRvL,EAAEwL,QAAU,SAAUr5O,GACpB+K,EAAE1Q,KAAKwzO,EAAG5tO,EAAEogK,UACZrkK,EAAE02C,MAAMiT,KAAO3lD,EAAI,IACrB,EACA6tO,EAAEuL,QAAU,SAAUp5O,GACpBqrC,EAAEhxC,KAAKwzO,EAAG5tO,EAAEogK,UACZrkK,EAAE02C,MAAMvR,IAAMnhC,EAAI,IACpB,CACF,CACAyD,KAAKwmE,MAAM7zB,GAAG,aAAcv4C,GAAGu4C,GAAG,aAAcxrC,GAAGw3B,KAAK,CACtD4iB,OAAQ,IACPjvC,KACL,CACA,OAAOtS,KAAKwmE,KACd,EACAjqE,EAAE7F,UAAU+uP,YAAc,SAAUjpP,EAAGD,EAAGzC,GACxC,IAcEgxO,EAdEjxO,EAAImG,KAAKsqO,MACX/yO,EAAIyI,KAAK48J,SACTr2F,EAAI,CAAC,EACLjvE,EAAIuC,EAAEu6O,UAAYt6O,EAAEqN,GAAK,EACzBm/D,EAAItmE,KAAK4zP,QACTx5P,EAAIksE,EAAIkkK,EAAE/zM,gBAAgBmtD,YAAc,EAAIrsF,EAAIsC,EAAEisP,WAClD3+O,EAAIm/D,EAAIpiE,KAAKI,IAAIkmO,EAAEx6L,KAAK4xC,aAAc4oJ,EAAE/zM,gBAAgBmrD,aAAc4oJ,EAAEx6L,KAAKqO,aAAcmsL,EAAE/zM,gBAAgB4nB,aAAcmsL,EAAE/zM,gBAAgBorD,cAAgBhoF,EAAE8rP,YAC/J/oP,EAAI/C,EAAE46P,QAAQY,mBACd98P,EAAI,SAAUguE,GACZ,IAAI3sE,EAAI,MAAQ2sE,EAChB,MAAO,CAACA,EAAG3sE,EAAIQ,EAAI+M,EAAGvN,EAAI4C,EAAID,GAAGsW,OAAOyzD,EAAI,CAAC1sE,EAAI4C,EAAII,EAAEu8O,OAAS58O,EAAIK,EAAEw8O,OAAQx/O,EAAIgD,EAAEslD,KAAO3qD,GAAKuC,EAAEm4P,MAAQp4P,EAAEu1P,UAAYxyP,EAAEu8O,OAASv8O,EAAE8gC,IAAMnmC,GAAKuC,EAAEo4P,MAAQr4P,EAAEs1P,SAAWvyP,EAAEw8O,OAAQ,EAAGx/O,EAAIQ,EAAI+M,GAAK,CAACvN,EAAI4C,EAAID,EAAG3C,EAAIE,EAAEm4P,MAAQp4P,EAAEu1P,SAAWt1P,EAAEo4P,MAAQr4P,EAAEs1P,QAASv1P,EAAIC,EAAEu1P,SAAWv1P,EAAEs1P,QAASv1P,EAAIC,EAAEu1P,SAAWv1P,EAAEo1P,UAAYp1P,EAAEs1P,QAAUt1P,EAAEq1P,YACxU,EACAn0P,EAAIxC,EAAE,KACNiC,EAAIjC,EAAE,KAERA,IAAMuB,EAAEw7P,UACPz7P,EAAEwzP,OAASxzP,EAAEo7P,aAAep7P,EAAEo7P,YAAYL,OAAS/6P,EAAEo7P,YAAYL,MAAM1S,WAAa3pP,GAAKA,GAC1F,IAAI6jK,GAAKp8J,KAAK00P,eAAiBrqB,EAAEvwO,EAAEy7P,SAAU17P,EAAEu6O,WAAa77O,GAC1D6xO,EAAI,SAAU5tO,EAAGD,EAAGzC,EAAGD,EAAGD,EAAGQ,EAAG+M,GAC9B,IAAIsG,EAAI64D,EAAI,MAAQ9pE,EAAIjF,EAAIqF,EAAEw8O,OAAS7hP,EAAIqF,EAAEu8O,OAAS5hP,EACpD4kN,GAAKriN,EAAID,GAAK,EACdtB,EAAIsB,EAAID,EAAIrC,EACZ8lB,EAAIzjB,EAAIrC,EAAIsC,EAAI0C,EAChBxB,EAAInB,EAAI6T,EAAI3T,EAAIqiN,EAElB,GADAviN,EAAIA,EAAI6T,EAAI0uM,EACR//C,GAAK/+I,EAAGkpD,EAAE/pE,GAAK5C,OAAO,IAAKwiK,GAAK7jK,EAAGguE,EAAE/pE,GAAKzB,OAAO,GAAIxC,EAAGguE,EAAE/pE,GAAK0H,KAAKqL,IAAIpI,EAAItN,EAAG,EAAIkB,EAAIzD,EAAIyD,EAAIA,EAAIzD,OAAQ,KAAI+lB,EAAsD,OAAO,EAA1DkpD,EAAE/pE,GAAK0H,KAAKI,IAAIlK,EAAGR,EAAItC,EAAIwC,EAAIyC,EAAI3C,EAAIA,EAAItC,EAAiB,CACpL,EACAgQ,EAAI,SAAU9K,EAAGD,EAAGzC,EAAGD,EAAGD,GACxB,IAAItC,EAEJ,OADAsC,EAAIrC,GAAKqC,EAAI2C,EAAIhF,EAAID,GAAI,EAAKivE,EAAE/pE,GAAK5C,EAAIE,EAAI,EAAI,EAAIF,EAAI2C,EAAI1C,EAAI,EAAI0C,EAAI1C,EAAI,EAAID,EAAIE,EAAI,EAClFxC,CACT,EACA+lB,EAAI,SAAU7gB,GACZ,IAAID,EAAIxB,EACRA,EAAIP,EACJA,EAAI+B,EACJuuO,EAAItuO,CACN,EACAw7M,EAAI,YACF,IAAOoyB,EAAEvuO,MAAM,EAAGd,IAAK,IAAOuM,EAAEzL,MAAM,EAAGrB,IAAMswO,IAAMztN,GAAE,GAAK26L,KAAO8yB,EAAIvkK,EAAE94D,EAAI84D,EAAE7+D,EAAI,GAAK2V,GAAE,GAAK26L,IACjG,EAGF,OAFCn+M,EAAEu6O,UAAY,EAAIp0O,KAAKC,MAAQod,IAChC26L,IACOzxI,CACT,EACAhqE,EAAE7F,UAAUy5C,KAAO,SAAU3zC,GAC3B,IAAID,EAAIyD,KACR0H,EAAE5O,aAAakH,KAAKu0P,WACpB/3P,EAAI6tO,EAAE7tO,EAAGwD,KAAK41B,QAAQ0sG,WACtBtiI,KAAKw+O,WAAax+O,KAAKu0P,UAAYn6P,GAAE,WACnCmC,EAAEw4P,WAAWpuM,QAAQnqD,OAAI,EAASA,GAClCD,EAAEiiP,UAAW,CACf,GAAGhiP,GACL,EACAD,EAAE7F,UAAU69B,KAAO,SAAU/3B,EAAGD,GAC9ByD,KAAKsqO,MAAQ9tO,EACbwD,KAAK41B,QAAUr5B,EACfyD,KAAKypP,WAAa,GAClBzpP,KAAK0D,IAAM,CACT+J,EAAG,EACH/F,EAAG,GAEL1H,KAAKw+O,UAAW,EAChBx+O,KAAKiO,MAAQ1R,EAAE0R,QAAUzR,EAAE43O,WAAa53O,EAAE6wP,MAC1CrtP,KAAKqxO,OAAS90O,EAAE80O,QAAUrxO,KAAKiO,MAC/BjO,KAAK4zP,QAAUvpB,EAAE9tO,EAAEq3P,WAAYp3P,EAAEg5P,oBAAsBh5P,EAAEi5P,mBAC3D,EACAl5P,EAAE7F,UAAUw+P,qBAAuB,WACjC,QAASl1P,KAAK00P,gBAAkB10P,KAAK41B,QAAQ47M,eAC/C,EACAj1O,EAAE7F,UAAUg/P,kBAAoB,WAC9B,SAAU11P,KAAKk1P,yBAA2Bl1P,KAAKg1P,UACjD,EACAz4P,EAAE7F,UAAUm+E,KAAO,SAAUr4E,EAAGD,EAAGzC,EAAGD,GACpC,IAAItC,EAAIyI,KACNumE,EAAIhvE,EAAEmM,IACN9J,GAAI,IAAOrC,EAAEq+B,QAAQquB,YAAc1sD,EAAEinP,WAAa,EAAIt6O,KAAKC,IAAI3H,EAAI+pE,EAAE94D,IAAM,EAAIvJ,KAAKC,IAAI5H,EAAIgqE,EAAE7+D,IAC9FpQ,EAAIC,EAAEm9P,eAAiB,EAAIn9P,EAAE0I,IAC/BkH,EAAEo/D,EAAG,CACH94D,EAAG7T,GAAK,EAAI2sE,EAAE94D,EAAIjR,GAAK,EAAIA,EAC3BkL,EAAG9N,GAAK2sE,EAAE7+D,EAAInL,GAAK,EAAIA,EACvBm+O,QAASpjP,OAAI,EAASsC,GAAK,EAAI2sE,EAAEm0K,QAAU5gP,GAAK,EAAIA,EACpD6gP,QAASrjP,OAAI,EAASsC,GAAK2sE,EAAEo0K,QAAU9gP,GAAK,EAAIA,IAElDtC,EAAEw9P,WAAWp2N,KAAK4nC,GAClBhvE,EAAEo+P,cACF/7P,IAAM8N,EAAE5O,aAAakH,KAAKw0P,gBAAiBx0P,KAAKw0P,eAAiBh7P,YAAW,WAC1EjC,GAAKA,EAAEs9E,KAAKr4E,EAAGD,EAAGzC,EAAGD,EACvB,GAAG,IACL,EACA0C,EAAE7F,UAAUkiE,QAAU,SAAUp8D,EAAGD,GACjC,IAAIzC,EAAIkG,KAAKsqO,MACXzwO,EAAImG,KAAK41B,QACTr+B,EAAIuzO,EAAEtuO,GACN+pE,EAAIhvE,EAAE,GACND,EAAI,GACJ8C,EAAIP,EAAE6pP,WAAa1jP,KAAKq0P,iBACxBltP,EAAInH,KAAKqxO,OACTz0O,EAAI9C,EAAEuzO,WACN90O,EAAI,CAAC,EACP,GAAIsB,EAAE4nC,QAAS,CACb/5B,EAAE5O,aAAakH,KAAKu0P,WACpBv0P,KAAK0zP,eAAiBpsP,EAAE9K,IAAMA,EAAE2uO,QAAU3uO,EAAE2uO,OAAO0gB,iBACnD7rP,KAAK00P,eAAiB10P,KAAKiO,OAASs4D,EAAE4kK,OAAO6oB,eAAeU,cAE5D,IAAI35P,GADJyB,EAAIwD,KAAKm8F,UAAU3/F,EAAGD,IACZ,GACR/B,EAAIgC,EAAE,GAYR,GAXA2K,GAAKnH,KAAK0zP,aAAe55P,EAAE26P,QAAQmB,mBAAmBr+P,GAAIA,EAAE+gB,SAAQ,SAAU9b,GAC5EA,EAAEmiP,SAAS,SACXrnP,EAAER,KAAK0F,EAAEq5P,iBACX,KAAIt9P,EAAI,CACNkV,EAAG84D,EAAEi+K,SACL98O,EAAG6+D,EAAE7+D,IACFwkP,OAAS50P,GAAKiB,EAAIguE,EAAEsvL,iBACzB71P,KAAKC,IAAM3I,EAAEd,OACb4D,EAAIA,EAAExD,KAAK2B,EAAGyH,MACdmH,EAAIo/D,EAAE4kK,OACNnrO,KAAK48J,SAAWytE,EAAEljO,EAAE6sP,eAAep3F,SAAU,KACzC,IAAOxiK,EAAG4F,KAAKmwC,WAAY,CAC7B,GAAInwC,KAAKiO,OAASjO,KAAK0zP,YAAa1zP,KAAK81P,YAAY17P,EAAG7C,OAAQ,CAC9D,IAAI6kK,EAAIrhK,EACNqvO,EAAI5vO,EAEN,GADA+B,GAAKzC,EAAE26P,QAAQsB,gBAAkB35F,EAAI7/J,EAAE41P,OAASr4P,EAAEs1P,SAAUhlB,EAAI7tO,EAAE61P,OAASt4P,EAAEq1P,UACzEr1P,EAAEuzP,QAAS,IAAOlmP,EAAEyuB,QAAQ8qI,OAAQnpK,EAAEoE,MAAK,SAAUa,GACvD,OAAOA,EAAE2uO,OAAO6qB,kBAAkB55F,EAAGguE,EACvC,IAcE,YADApqO,KAAKmwC,OAbH5zC,EAAIyD,KAAK+0P,WAAYl7P,EAAEo1C,MAAM8M,QAAUn/C,GAAKL,EAAE4yC,IAAI,CACpD4M,MAAO/7C,KAAKsqO,MAAM2rB,WAAWl6M,MAAQ,OACnCx/C,EAAEoiC,KAAK,CACT7K,KAAM15B,GAAKA,EAAE2H,KAAO3H,EAAE2H,KAAK,IAAM3H,IAC/BmC,EAAE8rD,YAAY,2BAA2BJ,SAAS,oBAAsBoiL,EAAE9jK,EAAE2vL,WAAY/uP,EAAE+uP,aAAct5P,GAAKL,EAAEoiC,KAAK,CACtHm3M,OAAQj8O,EAAE6jK,aAAen3F,EAAEq0F,OAASzzJ,EAAEyzJ,OAAS,YAC7C56J,KAAK26G,eAAe,CACtBs3I,MAAOl3P,EACPm3P,MAAO13P,EACP86P,SAAU/uL,EAAE+uL,SACZC,QAAShvL,EAAEgvL,QACXpuP,EAAG3K,EAAE,IAAM,GAKf,CACAwD,KAAKw+O,UAAYx+O,KAAKwmE,OAASxmE,KAAKwmE,MAAM7nC,KAAK,CAC7C0hB,QAAS,IACRnQ,OACHlwC,KAAKw+O,UAAW,CAClB,CACAl4K,EAAEtmE,KAAM,UACV,CACF,EACAzD,EAAE7F,UAAUo/P,YAAc,SAAUt5P,EAAGD,GACrC,SAASzC,EAAE0C,EAAGD,EAAGzC,EAAGvC,EAAGgvE,GAGrB,YAFA,IAAWA,IAAMA,GAAI,GACrBzsE,GAAKyC,EAAI27O,EAAI,EAAI3N,EAAG/tO,EAAIzB,EAAEyB,EAAIjF,EAAI,EAAG0oN,EAAE/9J,KAAM+9J,EAAEjjK,MAAQzlD,GAAKsC,EAAE+5P,QAAUuC,EAAI,MAAQ55P,GAAKwsO,EAA8BvsO,EAAIzB,EAA/ByB,EAAI+pE,EAAI/pE,EAAIjF,EAAImQ,EAAIlL,EAAIkL,EAAY6+D,EAAI/pE,EAAIyjN,EAAE/9J,KAAM+9J,EAAEjjK,QAC3I,CACLvvC,EAAGjR,EACHkL,EAAGnL,EAEP,CACA,IAAI1C,EAAImG,KACNzI,EAAIsC,EAAEywO,MACN/jK,EAAI1sE,EAAEywO,MACNhzO,EAAIivE,EAAEu/K,WACNx/K,EAAIC,EAAEo/K,YACNvrP,EAAImsE,EAAE2oL,WACNtyP,EAAI2pE,EAAE6oL,SACN72P,EAAIguE,EAAE4oL,QACN30P,EAAI+rE,EAAEkuL,QACN3pB,EAAIvkK,EAAEkvL,kBACR3qB,OAAI,IAAWA,EAAI,EAAIA,EACvB,IAAI1uE,EAAI71F,EAAEivL,kBACRluP,EAAIi/D,EAAE6vL,mBAKJxuN,GAJJtgC,OAAI,IAAWA,EAAI,CACjBy7C,WAAY,EACZD,UAAW,GACTx7C,GACMy7C,WACVz7C,EAAIA,EAAEw7C,UACN,IAAI15C,EAAIm9D,EAAE8mK,WACR3lO,EAAI7N,EAAE+iK,SACNv/I,EAAIxjB,EAAE+7B,QACNoiL,EAAIn+M,EAAE+7B,QAAQygO,WACdp2C,EAAIpmN,EAAE+5P,SAAW,kBAAoBx3F,EAAIouE,EAAE/zM,gBAAgBurB,wBAA0B,CACnFE,KAAMta,EACNoV,MAAOpV,EAAItwC,EACXomC,IAAKp2B,EACLwxJ,OAAQxxJ,EAAIg/D,GAEd4mD,EAAIrzH,EAAEk7P,WACN33O,EAAIpd,KAAK2oG,UAAYpxG,EAAEoxG,SACvBuvI,KAAO3gP,EAAEoyP,MAAM,KAAOpyP,EAAEoyP,MAAM,GAAG1H,UAE/BkU,GADJ5+P,EAAIiD,EAAE66P,oBACInzM,KACV3qD,EAAIA,EAAEmmC,IACN,IAAIqrM,EAAIxwO,EAAI+O,EACVgvP,EAAK,EACL/rB,EAAInwO,EAAI0wO,EACVV,EAAE5tO,KAAOA,EAAI,EAAC,EAAIA,IAClBA,EAAIA,EAAEhB,MAAM,EAAGe,EAAE/F,OAAS,GAAG8/D,QAAO,SAAU95D,EAAGjF,EAAGgvE,GAClD,IAAI,IAAOhvE,GAAK,KAAOA,EAAG,CAOxB,IAAIqC,GANJ2sE,EAAIhqE,EAAEgqE,EAAI,IAAM,CACd2qE,UAAU,EACV+gH,MAAO11P,EAAE,GAAG01P,MACZC,MAAO93P,EACP+wO,OAAQ,CAAC,IAEDj6F,SACR55I,EAAIsC,EAAIC,EAAI0sE,EAAE4kK,OAChB5zO,EAAIA,EAAE6E,WACN,IAAIkqE,EAAIhvE,EAAE88P,GACRjtP,EAAIo/D,EAAE2qE,SACJzjI,EAAI84D,EAAE4kK,OACNhvB,EAAI,oBAAsBkuB,EAAE9jK,EAAE2vL,WAAYzoP,EAAEyoP,WAAY,QAqB5D,GApBA5vL,IAAMA,EAAI,CACRlkB,QAAS/kC,EAAE+kC,QACXhoD,EAAGijB,EAAEiwN,cACJlkO,IAAMk9D,EAAE62I,KAAO9/L,EAAEg/I,gBAAiB/1F,EAAE,gBAAkBjpD,EAAE6hJ,aAAc54F,EAAIlpD,EAAEopD,MAAM,GAAI,EAAG,EAAGnpD,EAAElW,EAAI,cAAgB,cAAU,OAAQ,EAAQkW,EAAEq0N,SAASzpL,UAAU9gD,EAAI,6BAA+B,IAAM,0BAA4Bg1M,GAAGx9K,KAAK2nC,GAAGh0D,IAAI46G,IACxP5mD,EAAEmW,UAAW,EACbnW,EAAE3nC,KAAK,CACL7K,KAAMv8B,IAER6R,GAAKk9D,EAAEn3B,IAAI9xB,EAAE4xB,OAAOuyB,OAAOnkD,EAAEmkD,QAAQ7iC,KAAK,CACxCm3M,OAAQz4N,EAAEqgJ,aAAen3F,EAAEq0F,OAASntJ,EAAEmtJ,OAAS,YAIjDrjK,GADA4P,GADA7P,EAAIA,EAAE88P,GAAK9tL,GACL0xK,WACAj8L,MAAQzkD,EAAE++O,cAChBz8O,IAAM08P,EAAKnvP,EAAE+2C,OAAQqsL,GAAK+rB,EAAIpe,IAAMnP,GAAKutB,IAEzC7oP,OAAI,KADJA,EAAI84D,EAAE0rL,OACa,EAAIxkP,EAEvB0uM,OAAI,KADJA,EAAI51I,EAAE2rL,OACa,EAAI/1C,EACvB71I,EAAIC,EAAE4kK,OACF5kK,EAAE2qE,SAAU,CACdzjI,EAAI7Q,EAAI6Q,EACR,IAAIjT,EAAIjC,EAAI6B,EAAI,CAClB,KAAO,CACL,IAAI4lN,EAAI15I,EAAEqjL,MACR7e,EAAIxkK,EAAEsuL,MACRnnP,EAAIuyM,EAAE1pM,IAAMvb,EAAE0S,GAAI/F,EAAGs4M,EAAE//M,IAAMyH,GAC7B4+D,EAAE0vL,kBAAkB,EAAGlrB,EAAEx0N,IAAM/d,EAAI4jN,EAAG,CACpCo6C,SAAS,MACJ/7P,EAAIswO,EAAEx0N,IAAM6lM,EACrB,CACA1uM,EAAI1S,EAAE0S,EAAGwyM,EAAE/9J,KAAOx6C,EAAGu4M,EAAEjjK,MAAQt1C,GAC/B,kBAAoBlN,GAAK2M,EAAIA,EAAE+2C,OAAS,EAAGi+J,EAAInE,EAAIA,EAAEphN,KAAKiD,EAAGtC,EAAG4P,EAAGo/D,GAAKzsE,EAAE2T,EAAGjT,EAAGZ,EAAGrC,GAAIiF,EAAE1F,KAAK,CAC5Fm2I,MAAO+qE,EAAI,OAAI,EACf0iC,QAASjtO,EACTktO,QAASngP,EACTg8P,SAAUj/P,EACVkgP,MAAOlxK,EACPstK,KAAMxJ,EAAEluB,EAAE03B,KAAMj6O,EAAI,EAAI,GACxB+hE,KAAMx0D,EACNhO,OAAQgjN,EAAEz0M,EACV0sP,GAAI98P,EACJmW,EAAG0uM,EAAE1uM,KACDnW,EAAEmlF,UAAW,CACrB,CACA,OAAOjgF,CACT,GAAG,KACFw7M,GAAKx7M,EAAEb,MAAK,SAAUa,GACrB,IAAID,GAAK1C,EAAE+5P,QAAUuC,EAAI,GAAK35P,EAAEk+O,QAChC,OAAOn+O,EAAI0jN,EAAE/9J,MAAQ3lD,EAAIC,EAAEg6P,SAAWv2C,EAAEjjK,OAAazgD,EAAI45P,EAAIl2C,EAAE/9J,KAAO1lD,EAAEg6P,UAAYv2C,EAAEjjK,MAAQzgD,EAAIA,CACpG,MAAOC,EAAIA,EAAES,KAAI,SAAUT,GACzB,IAAID,EAAIzC,EAAE0C,EAAEk+O,QAASl+O,EAAEm+O,QAASn+O,EAAEi7O,MAAMvmG,SAAU10I,EAAEg6P,UAAU,GAC9D,OAAOrvP,EAAE3K,EAAG,CACVrD,OAAQoD,EAAEmL,EACV+F,EAAGlR,EAAEkR,GAET,KACA5T,EAAEs6P,aACF1pB,EAAEjuO,EAAG+tO,GACL,IAAIpmF,EAAIgyG,EACNM,EAAKN,EACP35P,EAAE8b,SAAQ,SAAU9b,GAClB,IAAID,EAAIC,EAAEiR,EACR3T,EAAI0C,EAAEg6P,UACRh6P,EAAIA,EAAE00I,YACAr3I,EAAE+5P,SAAWuC,EAAI55P,EAAI4nJ,IAAMA,EAAIgyG,EAAI55P,IAAKC,GAAK3C,EAAE+5P,SAAWzvG,EAAIrqJ,EAAI28P,IAAOA,EAAKN,EAAI55P,GAC1F,IACAC,EAAE8b,SAAQ,SAAU9b,GAClB,IAAID,EAAIC,EAAEiR,EACR3T,EAAI0C,EAAEk+O,QACNnjP,EAAIiF,EAAE8Z,IACNiwD,EAAI/pE,EAAEi7O,MAAMvmG,SAQd,GAPA35I,EAAI,CACFynD,WAAY,qBAAuBznD,EAAI,SAAW,UAClDkW,EAAGlR,EACHmL,EAAGnQ,EAAIwxO,EACP2R,QAAS5gP,EACT6gP,QAASn+O,EAAEm+O,SAET9gP,EAAE+5P,SAAWr3P,EAAIzC,EAAG,CACtB,IAAIF,EAAIu8P,EAAIhyG,EACZ,EAAIvqJ,IAAM2sE,IAAMhvE,EAAEkW,EAAIlR,EAAI3C,EAAGrC,EAAEmjP,QAAU5gP,EAAIF,GAAI2sE,IAAMhvE,EAAEkW,GAAKgpP,EAAKtyG,GAAK,EAAG5sJ,EAAEmjP,QAAU5gP,EAAIF,GAC7F,CACA4C,EAAE43P,GAAGz1N,KAAKpnC,EACZ,IACAiF,EAAI3C,EAAE4iD,UACNquL,EAAIjxO,EAAE8uG,SACN9uG,EAAE+5P,SAAWp3P,GAAKsuO,IAAMvkK,EAAI2mD,EAAE8qH,UAAWlN,EAAEqT,QAAQ53K,EAAExqB,MAAQwqB,EAAE94D,EAAG84D,EAAEroB,OAASqoB,EAAE7+D,GAAG,GAAKlL,EAAEyyC,MAAMiT,KAAOiiG,EAAI,KAAM3nJ,EAAEyyC,MAAMvR,IAAMnmC,EAAI,KACpI,EACAgF,EAAE7F,UAAUi/P,YAAc,WACxB,GAAI31P,KAAK00P,gBAAkB10P,KAAK41B,QAAQ47M,eAAgBxxO,KAAK02P,SAAW12P,KAAK02P,QAAQz5K,cAAe,CAClG,IAAIzgF,EAAIwD,KAAKsqO,MACX/tO,EAAIyD,KAAKwmE,MACT1sE,EAAIkG,KAAKqxO,OAAS70O,EAAEm6P,YAAcn6P,EAAEo6P,WACtC,GAAIr6P,GAAKzC,EAAG,CACV,IAAID,EAAI,CACN4T,EAAG,EACH/F,EAAG,EACHq0C,MAAO,EACPmC,OAAQ,GAEVpkD,EAAIkG,KAAKm8F,UAAUriG,GACnB,IAAIvC,EAAIgF,EAAEy7O,UACVl+O,EAAE,IAAM0C,EAAE4yP,SAAW7yP,EAAE08O,WACvBn/O,EAAE,IAAM0C,EAAE2yP,QAAU5yP,EAAE28O,WACtBr/O,EAAE4T,EAAIvJ,KAAKqL,IAAI,EAAGzV,EAAE,IACpBD,EAAE6N,EAAIxD,KAAKqL,IAAI,EAAGzV,EAAE,IACpBD,EAAEkiD,MAAQ,EAAIjiD,EAAE,GAAKoK,KAAKI,IAAIJ,KAAKC,IAAIrK,EAAE,IAAKvC,EAAEwkD,MAAQjiD,EAAE,IAAMoK,KAAKI,IAAIJ,KAAKC,IAAIrK,EAAE,IAAKvC,EAAEwkD,OAC3FliD,EAAEqkD,OAAS,EAAIpkD,EAAE,GAAKoK,KAAKI,IAAIJ,KAAKC,IAAIrK,EAAE,IAAKvC,EAAE2mD,OAASh6C,KAAKC,IAAIrK,EAAE,KAAOoK,KAAKI,IAAIJ,KAAKC,IAAIrK,EAAE,IAAKvC,EAAE2mD,QACvGl+C,KAAK02P,QAAU12P,KAAK02P,QAAQ/3N,KAAK9kC,IAAMmG,KAAK02P,QAAUn6P,EAAEosG,SAAS51C,KAAKl5D,GAAGouD,SAAS,sBAAsB31C,IAAI/V,GAAIC,EAAE6wO,YAAcrtO,KAAK02P,QAAQ/3N,KAAK,CAChJw+K,KAAM,kBAEV,CACF,CACF,EACA5gN,EAAE7F,UAAUmgQ,iBAAmB,SAAUr6P,GACvC,OAAOA,EAAE4I,QAAQ,0BAA2B,6BAA6BA,QAAQ,yCAA0C,2CAC7H,EACA7I,EAAE7F,UAAU49P,6BAA+B,SAAU93P,EAAGD,GACtD,IAAIzC,EAAI0C,EAAE2uO,OACRtxO,EAAIC,EAAEk6P,eACNz8P,EAAIuC,EAAE6vP,MACNpjL,EAAIhvE,GAAKA,EAAEmtP,SACbntP,EAAI,CACFu/P,SAAUv6P,EACVw6P,YAAav6P,GAEf,IAAIlF,EAAIuC,EAAEm9P,YACR58P,EAAIP,EAAE0C,EAAI,eAAiB,gBAY7B,OAXA+pE,EAAEtmE,KAAM,kBAAmBzI,GAAG,SAAUgF,GACtCgqE,IAAMjvE,GAAKiB,EAAEiE,EAAE3B,OAASvD,EAAIivE,EAAEq+K,eAAepoP,EAAE3B,IAAKhB,EAAEo3O,uBACtD1qK,GAAKjvE,IAAMkF,EAAEi7O,OAASj7O,EAAEi7O,MAAMwf,iBAAmB,CAAC,QAAQ3+O,SAAQ,SAAU9b,GAC1EpC,EAAIA,EAAEgL,QAAQ,UAAY5I,EAAI,IAAK,UAAYA,EAAI,IAAMlF,EAAI,IAC/D,IACAwC,EAAEwwO,MAAM+C,aAAejzO,EAAI4F,KAAK62P,iBAAiBz8P,IACjDmC,EAAEu3B,KAAO8T,EAAExtC,EAAG,CACZq9O,MAAOj7O,EACP2uO,OAAQrxO,GACPkG,KAAKsqO,MACV,IACO/yO,EAAEu8B,IACX,EACAv3B,EAAE7F,UAAUwmF,OAAS,SAAU1gF,GAC7BwD,KAAKi9E,UACLziF,GAAE,EAAIwF,KAAKsqO,MAAM10M,QAAQowK,QAAQ8hD,YAAatrP,GAC9CwD,KAAKu0B,KAAKv0B,KAAKsqO,MAAO9vO,GAAE,EAAIwF,KAAK41B,QAASp5B,GAC5C,EACAD,EAAE7F,UAAUikH,eAAiB,SAAUn+G,GACrC,IAAID,EAAIyD,KAAKsqO,MACXxwO,EAAIkG,KAAK41B,QACT/7B,EAAI0C,EAAEk4P,QACNl9P,EAAIyI,KAAK+0P,WACXl7P,EAAIA,EAAEw7P,mBACN,IAAI/9P,GAAKwC,EAAEu8P,YAAcr2P,KAAKylP,aAAa7uP,KAAKoJ,KAAMzI,EAAEwkD,MAAOxkD,EAAE2mD,OAAQ1hD,GACvE8pE,EAAI9pE,EAAEy1P,MAAQ11P,EAAE6yP,SAClB5yP,EAAIA,EAAE01P,MAAQ31P,EAAE4yP,QACZnvP,KAAK4zP,UACP95P,EAAIA,EAAEolK,YAAc,EAAIl/J,KAAK48J,SAC7B58J,KAAK2oG,SAASw1I,QAAQ5mP,EAAEwkD,MAAQjiD,EAAGvC,EAAE2mD,OAASpkD,GAAG,GAC7C,IAAMD,EAAEs/O,QAAU,IAAMt/O,EAAEu/O,SAAQx8O,EAAEoD,KAAKy8C,UAAW,CACtD4zJ,UAAW,SAAWx2M,EAAEs/O,OAAS,KAAOt/O,EAAEu/O,OAAS,MACjD9yK,GAAKzsE,EAAEs/O,OAAQ38O,GAAK3C,EAAEu/O,QAC1B9yK,GAAKzsE,EAAEqoD,KAAO5qD,EAAEmW,EAChBjR,GAAK3C,EAAE6jC,IAAMpmC,EAAEoQ,GAEjB1H,KAAK60E,KAAK3wE,KAAK+c,MAAM3pB,EAAEmW,GAAIvJ,KAAK+c,MAAM3pB,EAAEoQ,GAAK,GAAI4+D,EAAG9pE,EACtD,EACOD,CACT,CAziBI,GA2iBGA,CACT,IACAiL,EAAEjL,EAAG,uBAAwB,CAACA,EAAE,6BAA8BA,EAAE,wCAAyCA,EAAE,0BAA2BA,EAAE,2BAA4BA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,GACjN,IAAIkgC,EAAIx+B,EAAEqpO,WACRjI,EAAIzB,EAAEh3H,eACN04H,EAAItmF,EAAE1mJ,OACN2+J,EAAI10J,EAAEujO,SACNlwO,EAAI2M,EAAEgkO,QACN9uO,EAAI8K,EAAEmkO,MACNt0O,EAAImQ,EAAEpK,OACNzD,EAAI6N,EAAEmjO,UACN1jO,EAAIO,EAAEukO,kBACN3lK,EAAI5+D,EAAEzL,QACNqL,EAAII,EAAEtF,WACN7J,EAAImP,EAAE5K,SACNstO,EAAI1iO,EAAErL,SACN7B,EAAIkN,EAAEstB,MACNq1M,EAAI3iO,EAAE4kO,WACNxB,EAAIpjO,EAAE+kO,KACNryO,EAAIsN,EAAEqlO,YACNz1O,EAAIoQ,EAAEitC,YACNn4C,EAAIkL,EAAEulO,UAoWR,OAnWA7jO,EAAI,WACF,SAASm9D,IACPvmE,KAAKk2P,WAAal2P,KAAKwkP,cAAW,EAClCxkP,KAAKi0P,aAAe,QACpBj0P,KAAK+7B,QAAK,EACV/7B,KAAKk3P,QAAS,EACdl3P,KAAKs2L,WAAat2L,KAAK41B,QAAU51B,KAAK3G,UAAO,EAC7C2G,KAAK2hC,UAAW,EAChB3hC,KAAK4xB,MAAQ5xB,KAAKmrO,YAAS,EAC3BnrO,KAAKowD,SAAU,EACfpwD,KAAKyN,OAAI,CACX,CAqVA,OApVA84D,EAAE7vE,UAAUygQ,qBAAuB,WACjC,IAAI36P,EAAIwD,KACNzD,EAAI,CACFkR,EAAGjR,EAAE46P,UACL/2M,QAAS,GAEXxmD,EAAI2C,EAAE66P,oBACRx9P,EAAEy9P,SAASh/O,SAAQ,SAAUxe,GAC3B0C,EAAE1C,GAAK0C,EAAE1C,GAAGksD,QAAQ,cAAgBlsD,EAAI,CACtC2T,EAAGjR,EAAE1C,GAAGs9P,UACR1vP,EAAGlL,EAAE1C,GAAGy9P,UACRl3M,QAAS,GACP9jD,EACN,IACA1C,EAAEy0N,OAAOh2M,SAAQ,SAAU/b,GACzBC,EAAED,GAAG+b,SAAQ,SAAU/b,GACrBA,EAAE46D,SAAW56D,EAAEypD,QAAQzuD,EAAE,CACvBkW,EAAGjR,EAAE46P,WACJ76P,EAAEg7P,UAAY,CACf9pP,EAAGlR,EAAE66P,UACL1vP,EAAGnL,EAAEg7P,WACH,CAAC,GACP,GACF,GACF,EACAhxL,EAAE7vE,UAAU8gQ,aAAe,SAAUh7P,EAAGD,GACtC,IAAIzC,EAAIkG,KAAKmrO,OACXtxO,EAAIC,EAAE87B,QAAQ6hO,aAAe39P,EAAE29P,YAWjC,OAVAj7P,EAAI+pE,EAAE7vE,UAAUghQ,gBAAgB9gQ,KAAKoJ,KAAMxD,GAC3CjF,EAAEyI,KAAMxD,GACRwD,KAAK41B,QAAU51B,KAAK41B,QAAUr+B,EAAEyI,KAAK41B,QAASp5B,GAAKA,EACnDA,EAAE6jL,cAAgBrgL,KAAKqgL,MACvB7jL,EAAEm7P,mBAAqB33P,KAAK23P,WAC5B99P,IAAMmG,KAAK0H,EAAI6+D,EAAE7vE,UAAUu1O,kBAAkBr1O,KAAKoJ,KAAMnG,IACxDmG,KAAKi0P,cAAgBj0P,KAAKk3P,OAASpsB,EAAE9qO,KAAKf,UAAYe,KAAKf,UAAW,OAASe,KAAKyN,IAAMlV,EAAEyH,KAAK0H,KAAO,OAAS,QACjH1H,KAAK2hC,WAAa3hC,KAAKwpC,MAAQ,UAC/B,SAAUxpC,MAAQ,qBAAuBzD,GAAKzC,EAAE6vP,OAAS7vP,EAAE6vP,MAAMb,WAAa9oP,KAAKyN,EAAI3T,EAAE6vP,MAAMmC,QAAQ9rP,OACvG,qBAAuBA,KAAKyN,GAAK3T,EAAIkG,KAAKyN,EAAI,qBAAuBlR,EAAIzC,EAAEkyP,gBAAkBzvP,EAAIhE,EAAEiE,EAAEiR,IAAM3T,EAAE87B,QAAQgiO,iBAAmB53P,KAAKyN,EAAI3T,EAAEkyP,cAAcxvP,EAAEiR,IAC5JzN,IACT,EACAumE,EAAE7vE,UAAUumF,QAAU,WACpB,SAASzgF,IAEP,IAAK2K,KADD5K,EAAEs7P,SAAWt7P,EAAEu7P,WAAav7P,EAAEo7P,cAAYrgQ,EAAEiF,GAAIA,EAAEw7P,mBAC5Cx7P,EAAGA,EAAE4K,GAAK,IACtB,CACA,IAAI5K,EAAIyD,KACNnG,EAAI0C,EAAE4uO,OACN5zO,EAAIsC,EAAEywO,MACRzwO,EAAIA,EAAE+7B,QAAQoiO,YACd,IAEE7wP,EAFEo/D,EAAIhvE,EAAEo/P,YACRrwL,EAAI1+B,EAAErrC,EAAE4uO,OAAOb,MAAM3hI,SAASkqI,iBAEhCt2O,EAAE07P,YAAc1gQ,EAAE24O,OAAOgoB,YAAY37P,GACrCgqE,IAAMhqE,EAAEoiP,WAAY/hP,EAAE2pE,EAAGhqE,GAAIgqE,EAAE/vE,SAAWe,EAAEo/P,YAAc,OACtDp6P,IAAMhF,EAAEq/P,YAAYr6P,EAAE64P,aAC1Bv7P,GAAKA,EAAE4nC,SAAWzhC,KAAKm3P,uBAAwB/8P,EAAEoC,EAAG8pE,EAAEnmD,WAAa3jB,IACnEjF,EAAE4gQ,YACJ,EACA5xL,EAAE7vE,UAAUqhQ,gBAAkB,SAAUv7P,GACtC,IAAID,EAAIyD,MACRxD,EAAID,EAAE86P,kBAAkB76P,IACtB86P,SAASh/O,SAAQ,SAAU9b,GAC3BD,EAAEC,GAAKD,EAAEC,GAAGygF,SACd,IACAzgF,EAAE8xN,OAAOh2M,SAAQ,SAAU9b,GACzBD,EAAEC,GAAG8b,SAAQ,SAAU9b,GACrBA,EAAE26D,SAAW36D,EAAEygF,SACjB,WACO1gF,EAAEC,EACX,GACF,EACA+pE,EAAE7vE,UAAU0hQ,eAAiB,SAAU57P,EAAGD,EAAGhF,GAC3C,IAAIuC,EAAIkG,KACNumE,EAAIvmE,KAAKmrO,OAAOv1M,SACjB2wC,EAAEkxK,MAAM7jM,OAAOp3C,IAAM1C,EAAE87B,SAAW97B,EAAE87B,QAAQge,QAAU95C,EAAE87B,QAAQge,OAAOp3C,KAAO1C,EAAEu+P,eACjF,UAAY77P,GAAK+pE,EAAE+xL,mBAAqB/gQ,EAAI,SAAUiF,GACpD1C,EAAE2iC,QAAU3iC,EAAE2iC,OAAO,KAAMjgC,EAAEm6C,SAAWn6C,EAAEs6C,SAAWt6C,EAAEy6C,SACzD,GACAp9C,EAAEC,EAAG0C,EAAGD,EAAGhF,EACb,EACAgvE,EAAE7vE,UAAU6hQ,aAAe,WACzB,MAAO,oBAAsBv4P,KAAK2hC,SAAW,2BAA6B,KAAO3hC,KAAKs1P,SAAW,uBAAyB,KAAOt1P,KAAKk3P,OAAS,yBAA2B,KAAO,qBAAuBl3P,KAAKk2P,WAAa,qBAAuBl2P,KAAKk2P,WAAa,KAAOl2P,KAAK41B,QAAQwI,UAAY,IAAMp+B,KAAK41B,QAAQwI,UAAY,KAAOp+B,KAAK0nB,MAAQ1nB,KAAK0nB,KAAK0W,UAAY,IAAMp+B,KAAK0nB,KAAK0W,UAAUh5B,QAAQ,sBAAuB,IAAM,GAC7a,EACAmhE,EAAE7vE,UAAU2gQ,kBAAoB,SAAU76P,GACxC,IAMEjF,EANEgF,EAAIyD,KACNlG,EAAI,GACJD,EAAI,CACFy9P,SAAU,GACVhpC,OAAQ,IASZ,KANA9xN,EAAIA,GAAK,CACPq7P,QAAS,EACTC,UAAW,IAEXD,SAAW/9P,EAAEhD,KAAK,UAAW,eAAgB,eAC/C0F,EAAEs7P,WAAah+P,EAAEhD,KAAK,YAAa,iBAAkB,aAChDS,EAAIuC,EAAEtD,OAAQe,KAAM,CACvB,IAAIgvE,EAAIzsE,EAAEvC,GACVgF,EAAEgqE,IAAM1sE,EAAEy9P,SAASxgQ,KAAKyvE,EAC1B,CAKA,MAJA,CAAC,YAAa,aAAajuD,SAAQ,SAAUxe,GAC3C,IAAIvC,EAAIuC,EAAI,IACZ0C,EAAE1C,IAAMyC,EAAEhF,IAAMsC,EAAEy0N,OAAOx3N,KAAKS,EAChC,IACOsC,CACT,EACA0sE,EAAE7vE,UAAUm/P,eAAiB,WAC3B,MAAO,CACLpoP,EAAGzN,KAAKwkP,SACR98O,EAAG1H,KAAK0H,EACRkzJ,MAAO56J,KAAK46J,MACZs7F,WAAYl2P,KAAKk2P,WACjBr7P,IAAKmF,KAAK3G,MAAQ2G,KAAKwkP,SACvBrZ,OAAQnrO,KAAKmrO,OACbsM,MAAOz3O,KACPs2L,WAAYt2L,KAAKs2L,WACjB1kK,MAAO5xB,KAAK4xB,OAAS5xB,KAAKw4P,WAE9B,EACAjyL,EAAE7vE,UAAUu1O,kBAAoB,SAAUzvO,GACxC,GAAIA,EAAG,OAAO,IAAMA,EAAEsQ,QAAQ,WAAa3F,EAAE3K,EAAGwD,KAAK41B,SAAW51B,KAAKxD,EACvE,EACA+pE,EAAE7vE,UAAU+hQ,QAAU,WACpB,IAAIj8P,EAAIwD,KAAKmrO,OACX5uO,EAAIC,EAAEk8P,MACRl8P,EAAIA,EAAEm8P,UAAY,IAClB,IAAI9+P,EACFtC,EAAI,EACN,IAAKsC,EAAI0C,EAAEhF,GAAIyI,KAAKxD,IAAM3C,EAAEU,OAAQV,EAAI0C,IAAIhF,GAG5C,OAFAyI,KAAK44P,gBAAkB54P,KAAK44P,cAAgB54P,KAAK46J,OACjD56J,KAAK46J,MAAQ/gK,GAAKA,EAAE+gK,QAAU56J,KAAK41B,QAAQglI,MAAQ/gK,EAAE+gK,MAAQ56J,KAAK44P,cAC3D/+P,CACT,EACA0sE,EAAE7vE,UAAUmiQ,gBAAkB,WAC5B,OAAQ74P,KAAK63P,UAAY73P,KAAK63P,QAAQ9hB,YAAc/1O,KAAK63P,QAAQ1gM,QAAQ1iC,aAAez0B,KAAK84P,SAC/F,EACAvyL,EAAE7vE,UAAU69B,KAAO,SAAUh4B,EAAGhF,EAAGgvE,GAOjC,OANAvmE,KAAKmrO,OAAS5uO,EACdyD,KAAKw3P,aAAajgQ,EAAGgvE,GACrBvmE,KAAK+7B,GAAKhhC,EAAEiF,KAAK+7B,IAAM/7B,KAAK+7B,GAAKv/B,IACjCwD,KAAK+4P,eACLx8P,EAAE+tO,MAAM6tB,aACRt+P,EAAEmG,KAAM,aACDA,IACT,EACAumE,EAAE7vE,UAAUghQ,gBAAkB,SAAUl7P,GACtC,IAAID,EAAIyD,KAAKmrO,OACXrxO,EAAIyC,EAAEq5B,QAAQ3zB,KACdpI,EAAIC,GAAKyC,EAAEy8P,eAAiB,CAAC,KAC7BzhQ,EAAIsC,EAAErD,OACNc,EAAI,CAAC,EACL8C,EAAI,EACJ+M,EAAI,EACN,GAAI5O,EAAEiE,IAAM,OAASA,EAAGlF,EAAEuC,EAAE,IAAM2C,OAAO,GAAI8pE,EAAE9pE,GAAI,KAAM1C,GAAK0C,EAAEhG,OAASe,IAAuB,YAAjBgF,SAAWC,EAAE,IAAqBlF,EAAE+B,KAAOmD,EAAE,GAAK,WAAaD,IAAMjF,EAAEmW,EAAIjR,EAAE,IAAKpC,KAAM+M,EAAI5P,GAAIuC,GAAK,qBAAuB0C,EAAEpC,KAAO,EAAIP,EAAEsN,GAAG2F,QAAQ,KAAOy5D,EAAE7vE,UAAUuiQ,kBAAkB3hQ,EAAGkF,EAAEpC,GAAIP,EAAEsN,IAAM7P,EAAEuC,EAAEsN,IAAM3K,EAAEpC,IAAKA,IAAK+M,QAAS,kBAAoB3K,IAAMlF,EAAIkF,EAAGA,EAAEm7P,aAAep7P,EAAE28P,iBAAkB,GAAK18P,EAAE28P,SAAW58P,EAAE68P,kBAAmB,IACva,OAAO9hQ,CACT,EACAivE,EAAE7vE,UAAUqiQ,aAAe,WACzB,IAAIv8P,EAAIwD,KAAKmrO,OACX5uO,EAAIC,EAAE8tO,MAAM+C,WACVxzO,EAAI2C,EAAE8tO,MAAM10M,QAAQ00M,MAAMiD,WAE9B,UADOvtO,KAAK44P,cACRp8P,EAAEo5B,QAAQyjO,aAAc,CAC1B,IAAK98P,EAAG,CAEN,IAAIhF,GADJsC,EAAI2C,EAAEo5B,QAAQykI,QAAU79J,EAAE8tO,MAAM10M,QAAQykI,QAC9B79J,EAAE88P,cACZz/P,EAAIA,EAAErD,MACR,CACA+F,EAAIC,EAAE88P,aACN98P,EAAE88P,eACF98P,EAAE88P,eAAiBz/P,IAAM2C,EAAE88P,aAAe,EAC5C,MAAO/8P,IAAMhF,EAAIiF,EAAEo+J,OAAQr+J,EAAIC,EAAE05P,WACjCl2P,KAAKk2P,WAAaprB,EAAE9qO,KAAK41B,QAAQsgO,WAAY35P,GAC7CyD,KAAK46J,MAAQkwE,EAAE9qO,KAAK41B,QAAQglI,MAAOrjK,EACrC,EACAgvE,EAAE7vE,UAAUuiQ,kBAAoB,SAAUz8P,EAAGD,EAAG1C,GAK9C,OAJAA,EAAEoU,MAAM,KAAKqoD,QAAO,SAAU95D,EAAG1C,EAAGD,EAAGtC,GAErC,OADAiF,EAAE1C,GAAKvC,EAAEf,OAAS,IAAMqD,EAAI0C,EAAI6tO,EAAE5tO,EAAE1C,IAAI,GAAM0C,EAAE1C,GAAK,CAAC,EAC/C0C,EAAE1C,EACX,GAAG0C,GACIA,CACT,EACA+pE,EAAE7vE,UAAUw9P,iBAAmB,SAAU13P,GACvC,IAAID,EAAIyD,KAAKmrO,OACXrxO,EAAIyC,EAAEy3P,eACNn6P,EAAIixO,EAAEhxO,EAAEy/P,cAAe,IACvBhiQ,EAAIuC,EAAE0/P,aAAe,GACrBjzL,EAAIzsE,EAAE2/P,aAAe,GAOvB,OANAl9P,EAAE+tO,MAAM+C,aAAe7wO,EAAID,EAAE+tO,MAAMtkC,QAAQ6wD,iBAAiBr6P,KAC3DD,EAAEy8P,eAAiB,CAAC,MAAM1gP,SAAQ,SAAU/b,GAC3CA,EAAI,UAAYA,GACZhF,GAAKgvE,KAAG/pE,EAAIA,EAAE4I,QAAQ3C,OAAOlG,EAAI,IAAK,KAAMhF,EAAIgF,EAAI,IAAMgqE,IAC9D/pE,EAAIA,EAAE4I,QAAQ3C,OAAOlG,EAAI,IAAK,KAAMA,EAAI,MAAQ1C,EAAI,KACtD,IACO4wO,EAAEjuO,EAAG,CACVi7O,MAAOz3O,KACPmrO,OAAQnrO,KAAKmrO,QACZ5uO,EAAE+tO,MACP,EACA/jK,EAAE7vE,UAAUwmF,OAAS,SAAU1gF,EAAGD,EAAG1C,EAAGtC,GACtC,SAASuC,IACPysE,EAAEixL,aAAah7P,GACf,IAAI1C,EAAIF,GAAK2sE,EAAEmzL,gBACf5/P,EAAI,OAASysE,EAAE7+D,GAAK5N,EAAIA,EACxBF,GAAKE,IAAMysE,EAAEsxL,QAAUj+P,EAAEqjF,iBAAkB1W,EAAEmzL,iBAC7CtvB,EAAE5tO,GAAG,KAAQ5C,GAAKA,EAAEu9D,SAAW36D,GAAKA,EAAE28P,QAAU,qBAAuB38P,EAAE28P,OAAOjuC,SAAW3kJ,EAAEsxL,QAAUj+P,EAAEqjF,WAAYzgF,GAAKA,EAAEm7P,YAAcpxL,EAAEuxL,YAAcvxL,EAAEuxL,UAAYvxL,EAAEuxL,UAAU76K,WAAY1W,EAAEozL,YAAcpzL,EAAEozL,UAAYpzL,EAAEozL,UAAU18K,YAC1O91E,EAAIo/D,EAAEv4C,MACN12B,EAAEsiQ,qBAAqBrzL,EAAGp/D,GAC1B/M,EAAEnE,KAAKkR,GAAKijO,EAAEhwO,EAAEnE,KAAKkR,IAAI,IAAOijO,EAAE5tO,GAAG,GAAM+pE,EAAE3wC,QAAUk1M,EAAEtuO,EAAGpC,EAAEnE,KAAKkR,IACnE7P,EAAEuwP,QAAUvwP,EAAE60P,aAAc,GAC3B70P,EAAEuiQ,UAAYviQ,EAAEwiQ,qBAAuBxzL,EAAEmsL,YAAa,GACvD,UAAYr4P,EAAE2/P,aAAezzL,EAAE0zL,eAAgB,GAC/Cz9P,GAAK+pE,EAAEqoL,OAAO90P,EAChB,CACA,IAKEsN,EALEo/D,EAAIvmE,KACN1I,EAAIivE,EAAE4kK,OACNvxO,EAAI2sE,EAAEsxL,QACNvxL,EAAIhvE,EAAEgzO,MACNlwO,EAAI9C,EAAEs+B,QAERr5B,EAAIuuO,EAAEvuO,GAAG,IACT,IAAOhF,EAAIuC,IAAMysE,EAAE6xL,eAAe,SAAU,CAC1CxiO,QAASp5B,GACR1C,EACL,EACAysE,EAAE7vE,UAAUwyC,OAAS,SAAU1sC,EAAGD,GAChCyD,KAAKmrO,OAAO8uB,YAAYj6P,KAAKmrO,OAAOl1O,KAAK6W,QAAQ9M,MAAOxD,EAAGD,EAC7D,EACAgqE,EAAE7vE,UAAU+lC,OAAS,SAAUjgC,EAAGD,GAChC,IAAIzC,EAAIkG,KACNnG,EAAIC,EAAEqxO,OACN5zO,EAAIsC,EAAEywO,MACRtqO,KAAKk6P,gBAAkB19P,EAAIsuO,EAAEtuO,GAAI1C,EAAE6nC,UACnC7nC,EAAEs+P,eAAe57P,EAAI,SAAW,WAAY,CAC1C29P,WAAY59P,IACX,WACDzC,EAAE6nC,SAAW7nC,EAAE87B,QAAQ+L,SAAWnlC,EAClC3C,EAAE+7B,QAAQ3/B,KAAK4D,EAAE5D,KAAK6W,QAAQhT,IAAMA,EAAE87B,QACtC97B,EAAE6kP,SAASniP,GAAK,UAChBD,GAAKhF,EAAE6iQ,oBAAoB9hP,SAAQ,SAAU9b,GAC3C,IAAID,EAAIC,EAAE2uO,OACV3uO,EAAEmlC,UAAYnlC,IAAM1C,IAAM0C,EAAEmlC,SAAWnlC,EAAEo5B,QAAQ+L,UAAW,EAAIplC,EAAEq5B,QAAQ3/B,KAAKsG,EAAEtG,KAAK6W,QAAQtQ,IAAMA,EAAEo5B,QAASp5B,EAAEmiP,SAASpnP,EAAEo/P,aAAep6P,EAAEq5B,QAAQykO,oBAAsB,WAAa,IAAK79P,EAAE47P,eAAe,YAChN,GACF,WACOp4P,KAAKk6P,eACd,EACA3zL,EAAE7vE,UAAUwnN,YAAc,SAAU1hN,GAClC,IAAID,EAAIyD,KAAKmrO,OAAOb,MAClBxwO,EAAIyC,EAAEk4P,QACRj4P,EAAIA,EAAI1C,EAAE+9M,UAAUr7M,GAAK1C,EAAEwgQ,6BAA6Bt6P,KAAMzD,EAAE63O,UAChEt6O,EAAEygQ,gBAAgB/9P,EAAGwD,KACvB,EACAumE,EAAE7vE,UAAU0+P,WAAa,WACvB,IAAI54P,EAAIwD,KAAKmrO,OAAOb,MACpBtqO,KAAKo4P,eAAe,YACpBp4P,KAAKmrO,OAAOv1M,QAAQykO,sBAAwB79P,EAAEm6P,aAAe,IAAIr+O,SAAQ,SAAU9b,GACjFA,EAAEmiP,UACJ,IACAniP,EAAEm6P,YAAcn6P,EAAEo6P,WAAa,IACjC,EACArwL,EAAE7vE,UAAU2hQ,aAAe,WACzB,IAAKr4P,KAAKw6P,kBAAmB,CAC3B,IAAIh+P,EAAIwD,KACNzD,EAAI/B,EAAEgC,EAAE2uO,OAAOv1M,QAAQ6hN,MAAOj7O,EAAEo5B,SAASge,OAC3Cp3C,EAAEo3C,OAASr3C,EACX8tO,EAAE9tO,GAAG,SAAUA,EAAGzC,GAChBwN,EAAE/K,IAAM6/J,EAAE5/J,EAAG1C,EAAGyC,EAClB,IACAyD,KAAKw6P,mBAAoB,CAC3B,CACF,EACAj0L,EAAE7vE,UAAUioP,SAAW,SAAUniP,EAAG+pE,GAClC,IAWE6jK,EAXEtwO,EAAIkG,KAAKmrO,OACX7zO,EAAI0I,KAAKwpC,MACT5vC,EAAIE,EAAE87B,QAAQ6kO,OAAOj+P,GAAK,WAAa,CAAC,EACxC8pE,EAAIkkK,EAAEyF,YAAYn2O,EAAEb,MAAMkgQ,QAAUr/P,EAAE87B,QAAQujO,OAC9C/+P,EAAIksE,IAAK,IAAOA,EAAE7kC,QAClBt6B,EAAIm/D,GAAKA,EAAEm0L,QAAUn0L,EAAEm0L,OAAOj+P,GAAK,WAAa,CAAC,EACjDI,GAAI,IAAOuK,EAAEs6B,QACb1mC,EAAIiF,KAAKm5P,QAAU,CAAC,EACpB3+P,EAAIV,EAAEwwO,MACNluE,EAAI91F,GAAKxsE,EAAE4gQ,cACXpzP,EAAIxN,EAAE6gQ,KAEN/yN,EAAI9tC,EAAE8gQ,mBAER,MADAp+P,EAAIA,GAAK,MACGwD,KAAKwpC,QAAU+8B,GAAKvmE,KAAK2hC,UAAY,WAAanlC,IAAK,IAAO5C,EAAE6nC,SAAWjlC,IAAMI,GAAKxC,IAAK,IAAO+M,EAAEs6B,UAAYjlC,GAAKzB,EAAE0/P,QAAU1/P,EAAE0/P,OAAOj+P,KAAM,IAAOzB,EAAE0/P,OAAOj+P,GAAGilC,SAAU,CAGvL,GAFAzhC,KAAKwpC,MAAQhtC,EACb4/J,IAAMguE,EAAItwO,EAAE4gQ,cAAc16P,KAAMxD,IAC5BwD,KAAK63P,UAAY73P,KAAK05P,gBAAiB,CAGzC,GAFApiQ,GAAK0I,KAAK63P,QAAQxvM,YAAY,oBAAsB/wD,GACpDkF,GAAKwD,KAAK63P,QAAQ5vM,SAAS,oBAAsBzrD,IAC5ChC,EAAE6yO,WAAY,CACjB,IAAIhD,EAAIvwO,EAAE+gQ,aAAa76P,KAAMxD,GACzB6gB,EAAIytN,EAAEtwO,EAAEo7B,QAAQ00M,MAAMrmL,UAAWrqD,EAAEqqD,WACvCnqD,EAAE87B,QAAQykO,qBAAuB9hQ,EAAE8xO,EAAEhqL,YAAcrgD,KAAK23P,YAAc,IAAIr/O,SAAQ,SAAU9b,GAC1FA,GAAKA,EAAEwpD,QAAQ,CACb3F,QAASgqL,EAAEhqL,SACVhjC,EACL,IAAIrd,KAAK25P,WAAa35P,KAAK25P,UAAU3zM,QAAQ,CAC3C3F,QAASgqL,EAAEhqL,SACVhjC,IACHrd,KAAK63P,QAAQ7xM,QAAQqkL,EAAGhtN,EAC1B,CACA+sN,GAAKpqO,KAAK63P,QAAQ7xM,QAAQokL,EAAGU,EAAEtwO,EAAEo7B,QAAQ00M,MAAMrmL,UAAW98C,EAAE88C,UAAWqiB,EAAEriB,YACzErc,GAAKA,EAAEuI,MACT,MACM3zC,GAAK2K,IACP7P,EAAIyD,EAAEmwN,QAAUpxN,EAAEoxN,OAClBtjL,GAAKA,EAAEkzN,gBAAkBxjQ,IAAMswC,EAAIA,EAAEq1C,WACjCmtJ,IAAOxiM,EAAGA,EAAE2+B,EAAI,UAAY,QAAQ,CACtC94D,EAAG28N,EAAE38N,EACL/F,EAAG0iO,EAAE1iO,IACCpQ,IAAMwC,EAAE8gQ,mBAAqBhzN,EAAIptC,EAAEmuG,SAASuiH,OAAO5zN,EAAG8yO,EAAE38N,EAAG28N,EAAE1iO,EAAG0iO,EAAEruL,MAAOquL,EAAElsL,QAAQ5rC,IAAIxY,EAAEihQ,aAAcnzN,EAAEkzN,cAAgBxjQ,KAChIkD,EAAE6yO,YAAczlM,GAAK,aAAe5nC,KAAKwpC,OAAS5B,EAAEjJ,KAAK7kC,EAAE+gQ,aAAa76P,KAAMxD,KAEjForC,IAAMA,EAAEprC,GAAKwD,KAAKg7P,SAAW,OAAS,UAAWpzN,EAAEuvB,QAAQsgL,MAAQz3O,KAAM4nC,EAAEqgB,SAASjoD,KAAKu4P,gBAAgB,IAE3G3+P,EAAIA,EAAE+gQ,KACNvwB,GAAKxiM,EAAI5nC,KAAK63P,SAAWjwN,IAAMA,EAAEoX,YAAc,UAC/CplD,GAAKA,EAAE+hE,MAAQ/zB,GAAK,WAAawiM,IAAMpqO,KAAKi7P,WAAa3zP,IAAMxN,EAAE6gQ,KAAOrzP,EAAI9M,EAAEmuG,SAASrQ,OAAOhmF,IAAIs1B,EAAEssM,cAAe5sO,EAAE4oC,OAAOq2B,EAAI,UAAY,QAAQ,CAClJzsE,EAAGkG,KAAKk7P,SAASthQ,EAAE+hE,QACjBr0D,EAAEq3B,KAAK,CACT,MAAS,oCAAsCmsM,EAAE9qO,KAAKk2P,WAAYp8P,EAAEo8P,aAAel2P,KAAKo+B,UAAY,IAAMp+B,KAAKo+B,UAAY,IAC3H4gB,WAAYorL,EACZ7oL,QAAS,IACPj6C,EAAEmwO,MAAQz3O,KAAMxF,EAAE6yO,YAAc/lO,EAAEq3B,KAAKpnC,EAAE,CAC3C4lN,KAAMn9M,KAAK46J,OAAS9gK,EAAE8gK,MACtB,eAAgBhhK,EAAEymD,SACjB9jD,EAAE22O,qBAAqBt5O,EAAE0/B,YAAc,CAAC,MAAQhyB,GAAKA,EAAEmwO,OAASnwO,EAAEmwO,MAAMyjB,UAAY5zP,EAAE0+C,QAAQ,CAC/FlsD,EAAGwN,EAAEmwO,MAAMyjB,SAAS,IACnB,KAAM5zP,EAAE6oC,MACXt2C,EAAEmG,KAAM,gBAAiB,CACvBwpC,MAAOhtC,GAEX,CACF,EACA+pE,EAAE7vE,UAAUwkQ,SAAW,SAAU1+P,GAC/B,OAAOwD,KAAKmrO,OAAOb,MAAM3hI,SAAS6mI,QAAQiN,OAAOv4O,KAAKwF,MAAM1J,KAAKiyP,OAASz1P,EAAGwD,KAAKkyP,MAAQ11P,EAAG,EAAIA,EAAG,EAAIA,EAC1G,EACO+pE,CACT,CAjWI,GAmWGn9D,CACT,IACA5B,EAAEjL,EAAG,kBAAmB,CAACA,EAAE,uBAAwBA,EAAE,mBAAoBA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,GACzI,IAAIv8G,EAAIrrC,EAAEsxC,MACR08L,EAAInhO,EAAE2gO,OACNS,EAAIphO,EAAEgtB,KACNq0M,EAAItmF,EAAE8mF,SACN7uE,EAAIjY,EAAExlH,KACN5jC,EAAIopJ,EAAEh1G,IACNvyC,EAAIunJ,EAAEunF,QACNn0O,EAAI4sJ,EAAE7mJ,OACNzD,EAAIsqJ,EAAE3oH,KACNr0B,EAAIg9I,EAAE0mF,UACNvkK,EAAI69E,EAAErnJ,SACNwK,EAAI68I,EAAE9nJ,SACN9D,EAAI4rJ,EAAEmoF,WACNlC,EAAIjmF,EAAE3iI,OACNhnB,EAAI2pJ,EAAEsoF,KACNpC,EAAIlmF,EAAEyoF,MAmjBR,OAljBArwO,EAAI,WACF,SAASA,EAAEA,EAAG1C,GACZmG,KAAKm7P,eAAiB,CAAC,EACvBn7P,KAAKo7P,UAAY,GACjBp7P,KAAKq7P,eAAgB,EACrBr7P,KAAKs7P,eAAiB,GACtBt7P,KAAKsqO,MAAQ/tO,EACbyD,KAAKu7P,YAAa,EAClBv7P,KAAK41B,QAAU/7B,EACfmG,KAAKu0B,KAAKh4B,EAAG1C,EACf,CAqiBA,OApiBA0C,EAAE7F,UAAUk/P,mBAAqB,SAAUr5P,GACzC,IACEC,EADE3C,EAAI,IAEP0C,GAAK,IAAI+b,SAAQ,SAAU/b,GAC1BC,EAAID,EAAE4uO,OACNtxO,EAAE/C,KAAK0F,GACPA,EAAE0pP,cAAgBrsP,EAAE/C,KAAK0F,EAAE0pP,cAC3B1pP,EAAEg/P,eAAiB3hQ,EAAIA,EAAEgZ,OAAOrW,EAAEg/P,eAClCh/P,EAAEi/P,iBAAmB5hQ,EAAE/C,KAAK0F,EAAEi/P,gBAChC,IACAz7P,KAAKsqO,MAAMa,OAAO7yN,SAAQ,SAAU9b,IACjC,IAAM3C,EAAEiT,QAAQtQ,GAAKA,EAAEmiP,SAAS,YAAY,GAAMniP,EAAEo5B,QAAQykO,qBAAuB79P,EAAEk/P,oBAAoB,WAC5G,GACF,EACAn/P,EAAE7F,UAAUumF,QAAU,WACpB,IAAIpjF,EAAImG,KACRA,KAAKs7P,eAAehjP,SAAQ,SAAU/b,GACpC,OAAOA,GACT,IACAyD,KAAKs7P,eAAiB,GACtBlyP,EAAE+gO,aAAe5tO,EAAEo/P,wBAA0Bp/P,EAAEo/P,sBAAwBp/P,EAAEo/P,yBAA0Bp/P,EAAEq/P,yBAA2Br/P,EAAEq/P,uBAAyBr/P,EAAEq/P,2BAC7J3nL,cAAcp6E,EAAE26P,gBAChBj8P,EAAEsB,GAAG,SAAU0C,EAAGC,GAChB3C,EAAE2C,QAAK,CACT,GACF,EACAD,EAAE7F,UAAUquL,KAAO,SAAUxoL,GAC3B,IAAI1C,EAAImG,KAAKsqO,MACX9tO,EAAI3C,EAAE+7B,QAAQ00M,MACd/yO,EAAIyI,KAAK67P,QACT/hQ,EAAIkG,KAAK87P,SACTliQ,EAAIC,EAAEu1P,SACN9oL,EAAIzsE,EAAEs1P,QACNhoP,EAAItN,EAAEo1P,UACN70P,EAAIP,EAAEq1P,WACNtyP,EAAIoD,KAAK+7P,YAAc,EACvBxjQ,EAAIyH,KAAKg8P,YAAc,EACvBjhQ,EAAIuM,EAAE9K,EAAE4wO,SAAW5wO,EAAE4wO,SAAW5wO,EAAE4wO,QAAQ3rM,QAAUjlC,EAAE4wO,QACtD5yO,EAAIgC,EAAEy/P,QAAU1/P,EAAEC,EAAEy/P,OAAS,OAC7B7/F,EAAI7/J,EAAE41P,OACN/nB,EAAI7tO,EAAE61P,OACNtnB,EAAI9qO,KAAKk8P,gBACX,KAAKpxB,IAAMA,EAAEv4J,SAAW6pF,EAAIxiK,EAAIwiK,EAAIxiK,EAAIwiK,EAAIxiK,EAAIuN,IAAMi1J,EAAIxiK,EAAIuN,GAAIijO,EAAI9jK,EAAI8jK,EAAI9jK,EAAI8jK,EAAI9jK,EAAIlsE,IAAMgwO,EAAI9jK,EAAIlsE,GAAI4F,KAAKu7P,WAAar3P,KAAKu+J,KAAKv+J,KAAKG,IAAIzH,EAAIw/J,EAAG,GAAKl4J,KAAKG,IAAI9L,EAAI6xO,EAAG,IAAK,GAAKpqO,KAAKu7P,YAAY,CACtM,IAAIlxB,EAAIxwO,EAAEsiQ,aAAav/P,EAAIhD,EAAGrB,EAAI+tE,EAAG,CACnC81L,iBAAiB,KAElBviQ,EAAEigQ,qBAAuBjgQ,EAAEwiQ,UAAYr8P,KAAKs8P,QAAUt8P,KAAKu8P,QAAUlyB,GAAK7vO,GAAKswO,IAAM9qO,KAAKk8P,gBAAkBpxB,EAAIjxO,EAAE8uG,SAAS51C,KAAKn5D,EAAG0sE,EAAG/uE,EAAI,EAAI4P,EAAGrN,EAAI,EAAIM,EAAG,GAAGukC,KAAK,CACnK,MAAS,8BACT4iB,OAAQ,IACPjvC,MAAOzY,EAAEwzO,YAAcvC,EAAEnsM,KAAK,CAC/Bw+K,KAAM3gN,EAAEggQ,qBAAuB50N,EAAE,WAAWsmM,WAAW,KAAK/zO,SAE9D2wO,GAAKvzO,IAAMA,EAAI6kK,EAAIx/J,EAAGkuO,EAAEnsM,KAAK,CAC3Bod,MAAO73C,KAAKC,IAAI5M,GAChBkW,GAAI,EAAIlW,EAAI,EAAIA,GAAKqF,KAEvBkuO,GAAKhxO,IAAMvC,EAAI6yO,EAAI7xO,EAAGuyO,EAAEnsM,KAAK,CAC3Buf,OAAQh6C,KAAKC,IAAI5M,GACjBmQ,GAAI,EAAInQ,EAAI,EAAIA,GAAKgB,KAEvB8xO,IAAMS,GAAK/vO,GAAKlB,EAAE4iQ,IAAIlgQ,EAAGC,EAAE4wO,QAC7B,CACF,EACA7wO,EAAE7F,UAAU+vL,UAAY,SAAUlqL,GAChC,IAAI1C,EAAImG,KAAKsqO,MACbzwO,EAAE6iQ,YAAcngQ,EAAEtD,KAClBY,EAAE8iQ,aAAc,EAChB9iQ,EAAEkiQ,WAAa/7P,KAAK+7P,WAAax/P,EAAE41P,OACnCt4P,EAAEmiQ,WAAah8P,KAAKg8P,WAAaz/P,EAAE61P,MACrC,EACA71P,EAAE7F,UAAUuwL,KAAO,SAAU1qL,GAC3B,IAAI1C,EAAImG,KACNxD,EAAIwD,KAAKsqO,MACT/jK,EAAIvmE,KAAK48P,WACX,GAAI58P,KAAKk8P,gBAAiB,CACxB,IAAIpiQ,EAAIkG,KAAKk8P,gBACXtiQ,EAAIE,EAAE6kC,KAAO7kC,EAAE6kC,KAAK,KAAO7kC,EAAE2T,EAC7BrT,EAAIN,EAAE6kC,KAAO7kC,EAAE6kC,KAAK,KAAO7kC,EAAE4N,EAC7BnP,EAAIuB,EAAE6kC,KAAO7kC,EAAE6kC,KAAK,SAAW7kC,EAAEiiD,MACjCvhD,EAAIV,EAAE6kC,KAAO7kC,EAAE6kC,KAAK,UAAY7kC,EAAEokD,OAClCk+G,EAAI,CACF1mH,cAAen5C,EACfotP,MAAO,GACPiL,MAAO,GACPnnP,EAAG7T,EACH8N,EAAGtN,EACH2hD,MAAOxjD,EACP2lD,OAAQ1jD,GAEV4vO,IAAM5tO,EAAE6/P,SACNr8P,KAAKu7P,YAAch1L,KAAG/pE,EAAEktP,KAAKpxO,SAAQ,SAAU9b,GACjD,GAAIA,EAAE2kP,aAAevkP,EAAEJ,EAAE+S,OAASg3D,GAAK1sE,EAAE,CACvC8vP,MAAO,QACPiL,MAAO,SACPp4P,EAAEusP,SAAWziL,EAAE1sE,IAAM0sE,EAAElsE,GAAI,CAC3B,IAAIN,EAAI0C,EAAEgqP,MACRjvP,EAAI,aAAegF,EAAEtD,KAAOuD,EAAEgsP,gBAAkB,EAChDlxP,EAAIkF,EAAEozM,SAAS91M,EAAIF,EAAIQ,GAAK7C,GAC9BuC,EAAI0C,EAAEozM,SAAS91M,EAAIF,EAAIrB,EAAI6B,EAAII,GAAKjD,GACpC6kK,EAAE5/J,EAAEusP,MAAMjyP,KAAK,CACbmtL,KAAMznL,EACN+S,IAAKrL,KAAKqL,IAAIjY,EAAGwC,GACjBwK,IAAKJ,KAAKI,IAAIhN,EAAGwC,KAEnBswO,GAAI,CACN,CACF,IAAIA,GAAKjjO,EAAE3K,EAAG,YAAa4/J,GAAG,SAAU7/J,GACtCC,EAAEglD,KAAKjqD,EAAEgF,EAAGgqE,EAAI,CACdtiB,WAAW,GACT,MACN,KACAqiB,EAAE9pE,EAAEwxB,SAAWhuB,KAAKk8P,gBAAkBl8P,KAAKk8P,gBAAgBj/K,WAC3D1W,GAAKvmE,KAAK68P,aACZ,CACArgQ,GAAK8pE,EAAE9pE,EAAEwxB,SAAWjzB,EAAEyB,EAAEigD,UAAW,CACjCo9H,OAAQr9K,EAAEksL,UACRlsL,EAAEmgQ,YAAc,GAAK38P,KAAKu7P,WAAY/+P,EAAEkgQ,YAAc18P,KAAKu7P,WAAav7P,KAAK48P,YAAa,EAAI58P,KAAKo7P,UAAY,GACrH,EACA7+P,EAAE7F,UAAUomQ,mBAAqB,SAAUvgQ,EAAG1C,EAAG2C,GAC/C,IAIIlF,EAJAC,EAAIyI,KAAKsqO,MACXxwO,EAAIvC,EAAEq/P,WAER,OADAr/P,EAAIA,EAAEyuM,QACFlsM,GAAKvC,GAAKA,EAAEm+P,oBAA4B57P,GAE5CyC,EAAE+b,SAAQ,SAAU/b,GAClB,IAAIzC,IAAMyC,EAAEsvP,iBAAmBhyP,IAAM,EAAI0C,EAAEq5B,QAAQmnO,mBAAmBjwP,QAAQ,KAE9E,GADAvQ,EAAIA,EAAEygQ,YAAYxgQ,EAAG1C,IAChBA,EAAIwN,EAAE/K,GAAG,IAAOA,EAAE4uO,WAAarxO,GAAKwN,EAAEhQ,GAAG,IAAM,CAClDwC,EAAIxC,EAAE2lQ,MAAQ1gQ,EAAE0gQ,MAChB,IAAI1lQ,EAAID,EAAE0oM,KAAOzjM,EAAEyjM,KACjBz5H,GAAKhqE,EAAE4uO,OAAO9qD,OAAS9jL,EAAE4uO,OAAO9qD,MAAM9+H,SAAWjqD,EAAE6zO,OAAO9qD,OAAS/oL,EAAE6zO,OAAO9qD,MAAM9+H,QACpFznD,EAAI,GAAK,IAAMA,GAAKD,EAAIC,EAAI,IAAMvC,EAAIA,EAAI,IAAMgvE,EAAIA,EAAIjvE,EAAE6zO,OAAOn9M,MAAQzxB,EAAE4uO,OAAOn9M,OAAS,EAAI,EACjG,CACAl0B,IAAMxC,EAAIiF,EACZ,IACOjF,EACT,EACAiF,EAAE7F,UAAU4jQ,6BAA+B,SAAU/9P,EAAG1C,GACtD,IAAI2C,EAAID,EAAE4uO,OACR5zO,EAAIiF,EAAEmtP,MACRntP,EAAIA,EAAEo4P,MACN,IAAI96P,EAAIyC,EAAE2gQ,UACV,GAAI3lQ,GAAKiF,EAAG,CACV,IAAIlF,EAAIkD,EAAE+B,EAAE+6C,QAAS/6C,EAAE01P,OACrB9qP,EAAI5K,EAAE21P,OAAS,EAEjB,OADA31P,EAAE4gQ,QAAUrjQ,GAAKwsE,EAAExsE,EAAE2T,IAAM64D,EAAExsE,EAAE4N,KAAOpQ,EAAIwC,EAAE2T,EAAGtG,EAAIrN,EAAE4N,GAC9C7N,EAAI,CACTs4P,OAAQ31P,EAAEyD,IAAMzD,EAAE8Z,IAAMnP,EACxBirP,OAAQ76P,EAAE0I,IAAM1I,EAAE+e,IAAMhf,GACtB,CACF66P,OAAQ76P,EAAIC,EAAE+e,IACd87O,OAAQjrP,EAAI3K,EAAE8Z,IAElB,CACA,GAAIxc,GAAKA,EAAE2T,GAAK3T,EAAE4N,EAAG,MAAO,CAC1ByqP,OAAQr4P,EAAE2T,EACV2kP,OAAQt4P,EAAE4N,EAEd,EACAnL,EAAE7F,UAAU2+P,iBAAmB,WAC7B,GAAIr1P,KAAKo9P,cAAe,OAAOp9P,KAAKo9P,cACpC,IAAI7gQ,EAAIyD,KAAKsqO,MAAM7tL,UACjB5iD,EAAIuwO,EAAE7tO,GACRyD,KAAKo9P,cAAgB,CACnBl7M,KAAMroD,EAAEqoD,KACRxkB,IAAK7jC,EAAE6jC,IACPy7M,OAAQ,EACRC,OAAQ,GAEV,IAAI58O,EAAID,EAAE8gD,YAGV,OAFA9gD,EAAIA,EAAE8hD,aACN,EAAI7hD,GAAK,EAAID,IAAMyD,KAAKo9P,cAAcjkB,OAASt/O,EAAEkiD,MAAQv/C,EAAGwD,KAAKo9P,cAAchkB,OAASv/O,EAAEqkD,OAAS3hD,GAC5FyD,KAAKo9P,aACd,EACA7gQ,EAAE7F,UAAU2mQ,eAAiB,SAAU9gQ,GACrC,IAAI1C,EAAI,CACN8vP,MAAO,GACPiL,MAAO,IAQT,OANA50P,KAAKsqO,MAAMof,KAAKpxO,SAAQ,SAAU9b,GAChC3C,EAAE2C,EAAEkrP,QAAU,QAAU,SAAS5wP,KAAK,CACpCmtL,KAAMznL,EACNjC,MAAOiC,EAAEozM,QAAQrzM,EAAEC,EAAEgqP,MAAQ,SAAW,YAE5C,IACO3sP,CACT,EACA0C,EAAE7F,UAAU4mQ,aAAe,SAAU/gQ,EAAGhF,EAAGiF,EAAG+pE,EAAGzsE,EAAGF,GAClD,IAAItC,EAAI,GACRivE,KAAOA,IAAMhqE,GACb,IAAI+pE,EAAI,CACN6rL,OAAQv4P,EAAIA,EAAEu4P,YAAS,EACvBC,OAAQx4P,EAAIA,EAAEw4P,YAAS,EACvB/gB,OAAQv3O,GAEVqN,EAAEnH,KAAM,qBAAsBsmE,GAC9B,IAAIlsE,EAAI7C,IAAMA,EAAEgmQ,eAAiB,CAAChmQ,GAAKiF,EAAEgpB,QAAO,SAAUhpB,GACxD,OAAO8pE,EAAE9gD,OAAS8gD,EAAE9gD,OAAOhpB,GAAKA,EAAE4zD,YAAct2D,GAAK0C,EAAEghQ,cAAgBhjQ,EAAEgC,EAAEo5B,QAAQ6nO,qBAAqB,IAAOjhQ,EAAE+gQ,cACnH,IACI3gQ,EAAI2pE,IAAM3sE,EAAI2C,EAAIyD,KAAK88P,mBAAmB1iQ,EAAGN,EAAGF,GAcpD,OAbArC,EAAIqF,GAAKA,EAAEuuO,OACXvuO,IAAM9C,IAAMvC,EAAEs0P,iBAAmBzxP,EAAIoC,EAAEgpB,QAAO,SAAUhpB,GACtD,OAAO8pE,EAAE9gD,OAAS8gD,EAAE9gD,OAAOhpB,GAAKA,EAAE4zD,YAAct2D,GAAK0C,EAAEghQ,cAAgBhjQ,EAAEgC,EAAEo5B,QAAQ6nO,qBAAqB,KAAQjhQ,EAAEqvP,eACpH,KAAMvzO,SAAQ,SAAU9b,GACtB,IAAID,EAAI1C,EAAE2C,EAAE0vP,QAAQ,SAAU1vP,GAC5B,OAAOA,EAAEiR,IAAM7Q,EAAE6Q,IAAMjR,EAAE06P,MAC3B,IACA5vP,EAAE/K,KAAOC,EAAE8tO,MAAMozB,aAAenhQ,EAAIC,EAAEmhQ,SAASphQ,IAAKjF,EAAER,KAAKyF,GAC7D,IAAMjF,EAAER,KAAK8F,IAIbuK,EAAEnH,KAAM,oBAHRsmE,EAAI,CACFswL,WAAYh6P,IAGP,CACLg6P,WAAYtwL,EAAEswL,WACd3B,YAAa19P,EACbo/P,YAAar/P,EAEjB,EACAiF,EAAE7F,UAAUknQ,kBAAoB,SAAUrhQ,GACxCA,EAAIA,EAAEpD,OACN,IAAK,IAAIU,EAAG0C,IAAM1C,GAAIA,EAAI0C,EAAEk7O,MAAOl7O,EAAIA,EAAEy3B,WACzC,OAAOn6B,CACT,EACA0C,EAAE7F,UAAUmnQ,kBAAoB,SAAUthQ,GACxCA,EAAIA,EAAE65C,eAAiB75C,EAAEw7C,UACzB,IAAIl+C,EAAImG,KAAKsqO,MAAM2qB,YACnBj1P,KAAK+1P,eAAgB,GACdl8P,IAAM0C,GAAK1C,EAAE0jQ,gBAAkBv9P,KAAKm1P,QAAQ54P,EAAG,uBAAyByD,KAAKm1P,QAAQ54P,EAAG,qBAAuB1C,EAAEm0B,QAAUhuB,KAAKm1P,QAAQ54P,EAAG,uBAAwB1C,EAAEu7P,YAC9K,EACA74P,EAAE7F,UAAUy+P,QAAU,SAAU54P,EAAG1C,GACjC,IAAK,IAAI2C,EAAGD,GAAI,CACd,GAAIC,EAAI4/J,EAAE7/J,EAAG,SAAU,CACrB,IAAK,IAAMC,EAAEsQ,QAAQjT,GAAI,OAAO,EAChC,IAAK,IAAM2C,EAAEsQ,QAAQ,wBAAyB,OAAO,CACvD,CACAvQ,EAAIA,EAAEy3B,UACR,CACF,EACAz3B,EAAE7F,UAAU69B,KAAO,SAAUh4B,EAAG1C,GAC9BmG,KAAK41B,QAAU/7B,EACfmG,KAAKsqO,MAAQ/tO,EACbyD,KAAKq7P,iBAAmBxhQ,EAAEywO,MAAM12L,SAAW/5C,EAAEywO,MAAM12L,OAAOkC,OAC1D91C,KAAKo7P,UAAY,GACjBp7P,KAAKm7P,eAAiB,CAAC,EACvBpyB,IAAMxsO,EAAEypM,QAAU,IAAI+iC,EAAExsO,EAAG1C,EAAEmsM,SAAUhmM,KAAK89P,gBAAkBtjQ,EAAEX,EAAEmsM,QAAQ83D,iBAAiB,IAC3F99P,KAAK+9P,cACP,EACAxhQ,EAAE7F,UAAUmhN,UAAY,SAAUt7M,EAAG1C,GACnC,IAAI2C,EAAID,EAAEy7C,QACRuuB,EAAI/pE,EAAIA,EAAEhG,OAASgG,EAAEipB,KAAK,GAAKjrB,EAAEgC,EAAEk6C,eAAgBn6C,EAAEm6C,gBAAgB,GAAKn6C,EAM5E,OALA1C,IAAMA,EAAImG,KAAKq1P,oBACf74P,EAAI+pE,EAAExvB,MAAQl9C,EAAEqoD,KAChBqkB,EAAIA,EAAEvvB,MAAQn9C,EAAE6jC,IAChBlhC,GAAK3C,EAAEs/O,OACP5yK,GAAK1sE,EAAEu/O,OACA7hP,EAAEgF,EAAG,CACV41P,OAAQjuP,KAAK+c,MAAMzkB,GACnB41P,OAAQluP,KAAK+c,MAAMslD,IAEvB,EACAhqE,EAAE7F,UAAUsnQ,iBAAmB,SAAUzhQ,GACvC,IAAI1C,EAAImG,KAAKsqO,MACX9tO,EAAI3C,EAAE+8P,WACRr6P,EAAIyD,KAAK63M,UAAUt7M,GACnB,IAAIgqE,EAAI1sE,EAAEu1P,SACRt1P,EAAID,EAAEs1P,QACRt1P,EAAE8iQ,cAAgBngQ,GAAKwD,KAAKm1P,QAAQ54P,EAAEpD,OAAQ,uBAAyBgO,EAAE3K,EAAE2uO,OAAQ,QAAS5zO,EAAEgF,EAAG,CAC/Fk7O,MAAOj7O,KACJ3C,EAAE+8P,YAAcp6P,EAAE47P,eAAe,QAAS77P,KAAOhF,EAAEgF,EAAGyD,KAAKq9P,eAAe9gQ,IAAK1C,EAAEsiQ,aAAa5/P,EAAE41P,OAAS5rL,EAAGhqE,EAAE61P,OAASt4P,EAAG,CAC7HsiQ,iBAAiB,KACbj1P,EAAEtN,EAAG,QAAS0C,IACtB,EACAA,EAAE7F,UAAUunQ,qBAAuB,SAAU1hQ,GAC3C,IAAI1C,EAAI,KAAiC,GAAzB0C,EAAE86C,SAAW96C,EAAEwlC,SAC/BxlC,EAAIyD,KAAK63M,UAAUt7M,GACf6M,EAAEslM,WAAa,IAAMnyM,EAAEwlC,QAAQ/hC,KAAKk+P,qBAAqB3hQ,IACzD,qBAAuBA,EAAEwlC,QAAUloC,KAAGmG,KAAKm+P,WAAW5hQ,GAAI1C,GAAK0C,EAAEg3C,gBAAkBh3C,EAAEg3C,iBAAkBvzC,KAAKymL,UAAUlqL,GAC5H,EACAA,EAAE7F,UAAU0nQ,sBAAwB,SAAUvkQ,GAC5C,IAAItC,EAAIgzO,EAAE/vO,EAAE+B,EAAE8hQ,iBAAkB,IAC9B7hQ,EAAIwD,KAAKsqO,MAAMtkC,QACjBxpM,GAAKA,EAAE04P,wBAA0Bl1P,KAAKm1P,QAAQt7P,EAAEu8C,cAAe,kCAAoCv8C,EAAImG,KAAK63M,UAAUh+M,GAAItC,IAAMsC,EAAEu8C,eAAiBv8C,EAAEk+C,aAAexgD,EAAEk9P,QAAQ/xN,QAASnrC,EAAEk9P,QAAQ2I,mBAAgB,GAAS5gQ,IAAMA,EAAEgiP,UAAYx+O,KAAK0iC,QACrP,EACAnmC,EAAE7F,UAAU4nQ,sBAAwB,SAAU/hQ,UACrCyD,KAAKo9P,aACd,EACA7gQ,EAAE7F,UAAUwnQ,qBAAuB,SAAU3hQ,GAC3C,IAAI1C,EAAImG,KAAKsqO,MACb/tO,EAAIyD,KAAK63M,UAAUt7M,GACnByD,KAAKu+P,qBACLhiQ,EAAEg3C,iBAAmBh3C,EAAEy5C,aAAc,IACpC,cAAgBn8C,EAAE6iQ,aAAe18P,KAAKw+P,YAAYjiQ,KAAOyD,KAAK+kL,KAAKxoL,GACpE1C,EAAE4kQ,WAAaz+P,KAAKm1P,QAAQ54P,EAAEpD,OAAQ,wBAA0BU,EAAEsiQ,aAAa5/P,EAAE41P,OAASt4P,EAAEu1P,SAAU7yP,EAAE61P,OAASv4P,EAAEs1P,QAAS,CAC1HiN,iBAAiB,MACZp8P,KAAKm1P,QAAQ54P,EAAEpD,OAAQ,yBAA2B6G,KAAK0iC,OAAM,EAAI,GAAK1iC,KAAKu6P,gBAAgBh+P,GACpG,EACAA,EAAE7F,UAAUgoQ,mBAAqB,SAAU7kQ,GACzC,IAAItC,EAAIgzO,EAAE/vO,EAAE+B,EAAE8hQ,iBAAkB,IAChC9mQ,GAAKA,EAAEk9P,QAAQxtE,KAAKptL,EACtB,EACA0C,EAAE7F,UAAUioQ,qBAAuB,SAAUpiQ,GACvCyD,KAAKw+P,YAAYjiQ,GAAIyD,KAAKk+P,qBAAqB3hQ,GAAQyD,KAAKuyE,MAAMh2E,EACxE,EACAA,EAAE7F,UAAUkoQ,sBAAwB,SAAUriQ,GACxCyD,KAAKw+P,YAAYjiQ,GAAIyD,KAAKi+P,qBAAqB1hQ,IAAQyD,KAAKm+P,WAAW5hQ,GAAIyD,KAAKuyE,MAAMh2E,GAAG,GAC/F,EACAA,EAAE7F,UAAUmoQ,oBAAsB,SAAUtiQ,GAC1C,IAAI1C,EAAImG,KAAKsqO,MACX9tO,EAAIwD,KAAKo9P,cACX7gQ,EAAIyD,KAAK63M,UAAUt7M,EAAGC,GACtB,IAAIjF,EAAIsC,EAAEmsM,SACTxpM,GAAKjF,GAAKA,EAAEm+P,qBAAuB77P,EAAEsiQ,aAAa5/P,EAAE41P,OAASt4P,EAAEu1P,SAAU7yP,EAAE61P,OAASv4P,EAAEs1P,QAAS,CAC9FiN,iBAAiB,KACbp8P,KAAKm1P,QAAQ54P,EAAEpD,OAAQ,uBAAyB6G,KAAK0iC,OAC7D,EACAnmC,EAAE7F,UAAUooQ,kBAAoB,SAAUjlQ,GACxC,IAAItC,EAAIgzO,EAAE/vO,EAAE+B,EAAE8hQ,iBAAkB,IAChC9mQ,GAAKA,EAAEk9P,QAAQxtE,KAAKptL,EACtB,EACA0C,EAAE7F,UAAUqoQ,MAAQ,SAAUxiQ,GAC5B,IAAI1C,EAAImG,KACNxD,EAAI3C,EAAEywO,MACN/jK,EAAI1sE,EAAEuhQ,UACNthQ,EAAIyC,EAAEy7C,SAAW,GACjBp+C,EAAIE,EAAEtD,OACN8vE,EAAIzsE,EAAEshQ,eACNv+P,EAAI/C,EAAEmlQ,QACNzmQ,EAAI,CAAC,EACL6B,EAAI,IAAMR,IAAMC,EAAEs7P,QAAQ54P,EAAEpD,OAAQ,uBAAyBqD,EAAE4uO,iBAAmBvxO,EAAEwhQ,eACpFtgQ,EAAI,CAAC,EACLqhK,EAAIviK,EAAEqiQ,gBACR,EAAItiQ,EAAIC,EAAEolQ,WAAY,EAAK,IAAMrlQ,GAAKoG,KAAK89P,kBAAoBjkQ,EAAEolQ,WAAY,GAC7EriQ,GAAK/C,EAAEolQ,YAAc7kQ,IAAK,IAAOmC,EAAEk6C,YAAcl6C,EAAEg3C,iBACnD,GAAGt2C,IAAIrG,KAAKkD,GAAG,SAAU0C,GACvB,OAAO3C,EAAEg+M,UAAUr7M,EACrB,IACA,eAAiBD,EAAEtD,MAAQ,GAAGqf,QAAQ1hB,KAAKkD,GAAG,SAAU0C,EAAGD,GACzDgqE,EAAEhqE,GAAK,CACL41P,OAAQ31P,EAAE21P,OACVC,OAAQ51P,EAAE41P,OAEd,IAAI9rL,EAAE74D,EAAI,CAAC84D,EAAE,GAAG4rL,OAAQ5rL,EAAE,IAAMA,EAAE,GAAG4rL,QAAS7rL,EAAE5+D,EAAI,CAAC6+D,EAAE,GAAG6rL,OAAQ7rL,EAAE,IAAMA,EAAE,GAAG6rL,QAAS51P,EAAEktP,KAAKpxO,SAAQ,SAAU/b,GAC/G,GAAIA,EAAE4kP,YAAa,CACjB,IAAIrnP,EAAI0C,EAAE0iQ,OAAO3iQ,EAAEiqP,MAAQ,IAAM,KAC/B3sP,EAAI0C,EAAEisP,gBACNjxP,EAAIgF,EAAEuuP,SAAS5mP,KAAKqL,IAAI/U,EAAE+B,EAAEq5B,QAAQrmB,IAAKhT,EAAEwtP,SAAUxtP,EAAEwtP,UACvDxjL,EAAIhqE,EAAEuuP,SAAS5mP,KAAKI,IAAI9J,EAAE+B,EAAEq5B,QAAQtxB,IAAK/H,EAAEytP,SAAUztP,EAAEytP,UACvDpwP,EAAIsK,KAAKI,IAAI/M,EAAGgvE,GAClBzsE,EAAEyV,IAAMrL,KAAKqL,IAAIhT,EAAE+Z,IAAKpS,KAAKqL,IAAIhY,EAAGgvE,GAAK1sE,GACzCC,EAAEwK,IAAMJ,KAAKI,IAAI/H,EAAE+Z,IAAM/Z,EAAE0D,IAAKrG,EAAIC,EACtC,CACF,IAAIA,EAAEuD,KAAM,GAAMvD,EAAEikQ,iBAAmB,IAAMlkQ,EAAIoG,KAAKu6P,gBAAgB1gQ,EAAEg+M,UAAUt7M,IAAMgqE,EAAE/vE,SAAW2Q,EAAE3K,EAAG,WAAY,CACpHk5C,cAAen5C,IACd,WACD6/J,IAAMviK,EAAEqiQ,gBAAkB9/F,EAAI7kK,EAAE,CAC9B0lF,QAASutJ,EACTj4J,OAAO,GACN/1E,EAAE04O,UACLr7O,EAAEslQ,eAAe54L,EAAGzsE,EAAGvB,EAAG6jK,EAAGrhK,EAAGurE,GAChCzsE,EAAE+iQ,WAAahgQ,EACf/C,EAAEgjQ,YAAYtkQ,EAAGwC,EACnB,IAAIlB,EAAEuD,MAAQvD,EAAEuD,KAAM,EAAI4C,KAAK0iC,OAAM,EAAI,IAC3C,EACAnmC,EAAE7F,UAAUyoQ,eAAiB,SAAU5iQ,EAAG1C,EAAG2C,EAAGjF,EAAGuC,EAAGF,GACpDoG,KAAK67P,SAAW77P,KAAKo/P,yBAAwB,EAAI7iQ,EAAG1C,EAAG2C,EAAGjF,EAAGuC,EAAGF,GAChEoG,KAAK87P,UAAY97P,KAAKo/P,yBAAwB,EAAI7iQ,EAAG1C,EAAG2C,EAAGjF,EAAGuC,EAAGF,EACnE,EACA2C,EAAE7F,UAAU0oQ,wBAA0B,SAAU7iQ,EAAG1C,EAAG2C,EAAGjF,EAAGuC,EAAGF,EAAG0sE,EAAGn/D,GACnE,IAAIo/D,EAAIvmE,KAAKsqO,MACXhzO,EAAIiF,EAAI,IAAM,IACdK,EAAIL,EAAI,IAAM,IACdhE,EAAI,QAAUqE,EACdxC,EAAImC,EAAI,QAAU,SAClBxB,EAAIwrE,EAAE,QAAUhqE,EAAI,OAAS,QAC7B/B,EAAI+rE,EAAE6tK,SACN3mO,EAAI84D,EAAE24L,OAAO3iQ,EAAI,IAAM,KACvB6/J,EAAI,IAAMviK,EAAErD,OACZ2lN,EAAItiN,EAAE,GAAGtB,GACT6xO,GAAKhuE,GAAKviK,EAAE,GAAGtB,GACjBsB,EAAI,WACF,kBAAoB+tC,GAAK,GAAK1jC,KAAKC,IAAIg4M,EAAIiuB,KAAOU,EAAI3jO,GAAKjD,KAAKC,IAAI87M,EAAIr4K,GAAK1jC,KAAKC,IAAIg4M,EAAIiuB,IAC1F/sN,GAAKtiB,EAAIklN,GAAK6qB,EAAI3uB,EAClB70M,EAAIi/D,EAAE,QAAUhqE,EAAI,QAAU,WAAauuO,CAC7C,EACA,IAAIxjO,EACF+V,EACAytN,EAAI3jO,GAAK,EACT84M,EAAIzjN,EAAE,GAAGjE,GACTqvC,GAAKw0H,GAAK5/J,EAAE,GAAGjE,GAGjB,GAFAsB,KACA2C,EAAI6gB,GACI5P,EAAE8B,IAAK,CACb/S,EAAIiR,EAAE8B,IACN,IAAI86N,GAAI,CACV,MAAO7tO,EAAI8K,EAAImG,EAAEnJ,MAAQ9H,EAAIiR,EAAEnJ,IAAMgD,EAAG+iO,GAAI,GAC5CA,GAAKpqB,GAAK,IAAMA,EAAI35I,EAAEhvE,GAAG,IAAK,kBAAoBswC,IAAMA,GAAK,IAAMA,EAAI0+B,EAAEhvE,GAAG,KAAMuC,KAAOysE,EAAEhvE,GAAK,CAAC2oN,EAAGr4K,GACpGptC,IAAMZ,EAAEtC,GAAK+lB,EAAItiB,EAAGnB,EAAEQ,GAAKkN,GAC3B1N,EAAIY,EAAI,EAAIswO,EAAIA,EAChBhxO,EAAEM,GAAKkN,EACPxN,EAAExC,GAAKkF,EACPjF,EAAEiD,EAAI+B,EAAI,SAAW,SAAW,QAAUK,GAAKkuO,EAC/CvzO,EAAE,YAAcqF,GAAKhD,EAAImB,GAAKklN,EAAIrmN,EAAIuiN,EACxC,EACA5/M,EAAE7F,UAAUgsC,MAAQ,SAAUnmC,EAAG1C,GAC/B,IAAI2C,EAAIwD,KAAKsqO,MACX/yO,EAAIiF,EAAEy4P,YACNn7P,EAAI0C,EAAEo6P,WACNh9P,EAAI4C,EAAEm6P,YACNrwL,EAAI9pE,EAAEwpM,QACN1uM,EAAIgvE,GAAKA,EAAE+qK,OAASz3O,EAAIE,EAC1ByC,GAAKjF,GAAK+yO,EAAE/yO,GAAGghB,SAAQ,SAAU9b,GAC/BA,EAAE2uO,OAAOk0B,aAAe,qBAAuB7iQ,EAAEy1P,QAAU11P,GAAI,EACjE,IACIA,EAAG+pE,GAAKhvE,GAAK+yO,EAAE/yO,GAAGd,SAAW8vE,EAAE1N,QAAQthE,GAAIgvE,EAAE+qK,QAAUz3O,EAAIA,EAAE0e,SAAQ,SAAU9b,GACjFA,EAAEmiP,SAASniP,EAAEgtC,OAAO,GACpBhtC,EAAE2uO,OAAOk0B,cAAgB7iQ,EAAE2uO,OAAOwe,MAAMH,WAAahtP,EAAE2uO,OAAOwe,MAAMmI,cAAc,KAAMt1P,GAAIA,EAAE2uO,OAAOypB,MAAMpL,WAAahtP,EAAE2uO,OAAOypB,MAAM9C,cAAc,KAAMt1P,GAC7J,IAAK1C,IAAMA,EAAE6kP,SAAS7kP,EAAE0vC,OAAO,GAAKhtC,EAAEktP,KAAKpxO,SAAQ,SAAU9b,GAC3DA,EAAEgtP,WAAa1vP,EAAEqxO,OAAO3uO,EAAEusP,QAAUvsP,GAAKA,EAAEs1P,cAAc,KAAMh4P,EACjE,OACMA,GAAGA,EAAEs7P,aACTx7P,GAAKA,EAAE0e,SAAQ,SAAU9b,GACvBA,EAAEmiP,UACJ,IACIpnP,GAAGA,EAAE69P,aACT9uL,GAAKA,EAAEn2B,KAAKt2C,GACZmG,KAAKs/P,iBAAmBt/P,KAAKs/P,eAAiBt/P,KAAKs/P,kBACnD9iQ,EAAEktP,KAAKpxO,SAAQ,SAAU9b,GACvBA,EAAE+1P,eACJ,IACAvyP,KAAKu/P,OAAS/iQ,EAAEm6P,YAAcn6P,EAAEo6P,WAAa,KAEjD,EACAr6P,EAAE7F,UAAU6jQ,gBAAkB,SAAUhjQ,EAAG+uE,GACzC,IAAI9pE,EAAIwD,KAAKsqO,MACX/jK,EAAI/pE,EAAEwpM,SAAWxpM,EAAEwpM,QAAQpwK,QAAQ6L,QAAUjlC,EAAEwpM,aAAU,EACzDlsM,IAAIysE,GAAIA,EAAE8qK,OACVz3O,EAAI0sE,GAAK9pE,EAAEo6P,WACXt/P,EAAIsC,GAAKA,EAAEuxO,QAAU3uO,EAAEy4P,YAEzBr7P,GADA0sE,EAAItmE,KAAKs9P,aAAa1jQ,EAAGtC,EAAGkF,EAAE2uO,SAAU5zO,GAAK,cAAgBA,EAAE0B,UAAYqtE,GAAKhvE,GAAKA,EAAEkmQ,aAAex9P,KAAK+1P,eAAgBj8P,EAAGvC,IACxHq/P,WACNt/P,EAAIgvE,EAAE2uL,YACN,IAAI9tP,EAAIm/D,EAAEqwL,YAGV,GAFArwL,EAAIhvE,GAAKA,EAAE08P,eAAeU,gBAAkBp9P,EAAE08P,eAAe/lP,MAC7DnU,EAAIA,GAAKxC,IAAMA,EAAEu0P,gBACbjyP,IAAMA,IAAM4C,EAAEo6P,YAAcrwL,GAAKA,EAAEi4K,UAAW,CAUhD,IATChiP,EAAEm6P,aAAe,IAAIr+O,SAAQ,SAAU9b,IACrC,IAAM2K,EAAE2F,QAAQtQ,IAAMA,EAAEmiP,UAC3B,IACIniP,EAAEy4P,cAAgB39P,GAAGA,EAAE4mN,cAC3Bl+M,KAAK41P,mBAAmBzuP,IACvBA,GAAK,IAAImR,SAAQ,SAAU9b,GAC1BA,EAAEmiP,SAAS,QACb,IACAniP,EAAEo6P,YAAcp6P,EAAEo6P,WAAWwB,eAAe,aACvCx+P,EAAEuxO,OAAQ,OACf3uO,EAAEm6P,YAAcxvP,EAChB3K,EAAEo6P,WAAah9P,EACfA,EAAEw+P,eAAe,aACjB7xL,GAAKA,EAAE3N,QAAQ9+D,EAAIqN,EAAIvN,EAAGrC,EAC5B,MAAO+uE,GAAKC,IAAMA,EAAEi4K,WAAa5kP,EAAI2sE,EAAE41B,UAAU,CAAC,CAAC,GAAI5kG,GAAIiF,EAAE2/P,aAAaviQ,EAAE,GAAIA,EAAE,GAAI,CACpFwiQ,iBAAiB,KACb71L,EAAEo0C,eAAe,CACrBs3I,MAAOr4P,EAAE,GACTs4P,MAAOt4P,EAAE,MAEXoG,KAAKs/P,iBAAmBt/P,KAAKs/P,eAAiB70B,EAAEjuO,EAAEigD,UAAUvlB,cAAe,aAAa,SAAU16B,GAChG,IAAI1C,EAAIywO,EAAEhuO,EAAE8hQ,iBACRvkQ,GAAGA,EAAE26P,QAAQoK,oBAAoBriQ,EACvC,IAAIwD,KAAKs7P,eAAexkQ,KAAKkJ,KAAKs/P,iBAClC9iQ,EAAEktP,KAAKpxO,SAAQ,SAAU/b,GACvB,IACEgqE,EADEzsE,EAAIU,GAAG+B,EAAEitP,WAAa,CAAC,GAAG5kE,MAAM,GAEpC9qL,KAAOysE,EAAI/pE,EAAEo6P,aAAerwL,EAAE4kK,OAAO5uO,EAAEwsP,QAAUxsP,IAAMgqE,EAAI1sE,EAAEsN,GAAG,SAAU3K,GACxE,OAAOA,EAAE2uO,OAAO5uO,EAAEwsP,QAAUxsP,CAC9B,MACAgqE,IAAMzsE,EAAIyC,EAAEu1P,cAAcv6P,EAAGgvE,GAAKhqE,EAAEg2P,eACtC,GACF,EACAh2P,EAAE7F,UAAUmmQ,YAAc,SAAUtgQ,EAAG1C,GACrC,IAAI2C,EAAIwD,KAAKsqO,MACb9tO,EAAE2uO,OAAO7yN,SAAQ,SAAU/gB,GACzB,IAAIuC,EAAIyC,GAAKhF,EAAEioQ,aACfjoQ,EAAE8oL,QAAU9oL,EAAEoyP,OAASpyP,EAAEoyP,MAAMxI,aAAe3kP,EAAE6/P,WAAa9kQ,EAAE8oL,MAAM1hJ,KAAK7kC,GAAIvC,EAAEwjQ,cAAgBxjQ,EAAEwjQ,YAAYp8N,KAAK7kC,GAAIvC,EAAEwjQ,YAAYr6F,KAAK7mK,EAAI2C,EAAEijP,SAAW,OAAQloP,EAAEkoQ,iBAAmBloQ,EAAEkoQ,gBAAgB9gO,KAAK7kC,GACjN,IACA0C,EAAEijP,SAAS9gN,KAAK9kC,GAAK2C,EAAEkjQ,QACzB,EACAnjQ,EAAE7F,UAAUqnQ,aAAe,WACzB,IAAIlkQ,EAAImG,KACNzI,EAAIyI,KAAKsqO,MAAM7tL,UACfjgD,EAAIjF,EAAE2/B,cACR3/B,EAAEooQ,YAAc3/P,KAAKi+P,qBAAqBnjQ,KAAKkF,MAC/CzI,EAAEigP,YAAcx3O,KAAKk+P,qBAAqBpjQ,KAAKkF,MAC/CzI,EAAE8/O,QAAUr3O,KAAKg+P,iBAAiBljQ,KAAKkF,MACvCA,KAAKs7P,eAAexkQ,KAAK2zO,EAAElzO,EAAG,aAAcyI,KAAKs+P,sBAAsBxjQ,KAAKkF,QAC5EA,KAAKs7P,eAAexkQ,KAAK2zO,EAAElzO,EAAG,aAAcyI,KAAKo+P,sBAAsBtjQ,KAAKkF,QAC5EzD,EAAEo/P,wBAA0Bp/P,EAAEo/P,sBAAwBlxB,EAAEjuO,EAAG,UAAWwD,KAAK8+P,kBAAkBhkQ,KAAKkF,QAClG,IAAK,IAAIumE,EAAIvmE,KAAKsqO,MAAMs1B,SAAS1/L,cAAeqG,GAAK,SAAWA,EAAElP,SAAUr3D,KAAKs7P,eAAexkQ,KAAK2zO,EAAElkK,EAAG,UAAU,kBAC3G1sE,EAAEujQ,aACX,KAAK72L,EAAIA,EAAErG,cACX92D,EAAEugO,WAAa3pO,KAAKs7P,eAAexkQ,KAAK2zO,EAAElzO,EAAG,aAAcyI,KAAK4+P,sBAAsB9jQ,KAAKkF,MAAO,CAChGmuM,SAAS,KACNnuM,KAAKs7P,eAAexkQ,KAAK2zO,EAAElzO,EAAG,YAAayI,KAAK2+P,qBAAqB7jQ,KAAKkF,MAAO,CACpFmuM,SAAS,KACN5xM,EAAEq/P,yBAA2Br/P,EAAEq/P,uBAAyBnxB,EAAEjuO,EAAG,WAAYwD,KAAK0+P,mBAAmB5jQ,KAAKkF,MAAO,CAChHmuM,SAAS,KAEb,EACA5xM,EAAE7F,UAAU6nQ,mBAAqB,WAC/B,IAAI1kQ,EAAImG,KAAKsqO,MACX/yO,EAAI6R,EAAE2gO,OAAOvvO,EAAE+B,EAAE8hQ,iBAAkB,IACjC9mQ,GAAKA,IAAMsC,GAAGtC,EAAEk9P,QAAQ2J,sBAAsB,CAChDhoN,eAAe,IAEjB7+C,GAAKA,EAAEmlQ,cAAgBngQ,EAAE8hQ,gBAAkBxkQ,EAAEm0B,MAC/C,EACAzxB,EAAE7F,UAAU67E,MAAQ,SAAUh2E,EAAG1C,GAC/B,IAAI2C,EAAIwD,KAAKsqO,MAGb,GADAtqO,KAAKu+P,qBACD,IAAMhiQ,EAAEy7C,QAAQxhD,OAClB,GAAI+F,EAAIyD,KAAK63M,UAAUt7M,GAASC,EAAE2/P,aAAa5/P,EAAE41P,OAAS31P,EAAE4yP,SAAU7yP,EAAE61P,OAAS51P,EAAE2yP,QAAS,CAC1FiN,iBAAiB,MACX5/P,EAAEiiQ,SAAU,CAElB,GADA5kQ,GAAKmG,KAAKu6P,gBAAgBh+P,GACtB,cAAgBA,EAAEtD,KAEpB,IAAIa,KADJD,EAAImG,KAAKo7P,WACC,IAAK,GAAKl3P,KAAKu+J,KAAKv+J,KAAKG,IAAIxK,EAAE,GAAGs4P,OAAS51P,EAAE41P,OAAQ,GAAKjuP,KAAKG,IAAIxK,EAAE,GAAGu4P,OAAS71P,EAAE61P,OAAQ,IAEvG53P,EAAEV,GAAG,IAAOkG,KAAK++P,MAAMxiQ,EACzB,MAAO1C,GAAKmG,KAAK0iC,aACZ,IAAMnmC,EAAEy7C,QAAQxhD,QAAUwJ,KAAK++P,MAAMxiQ,EAC9C,EACAA,EAAE7F,UAAU8nQ,YAAc,SAAUjiQ,GAClC,SAAUyD,KAAKsqO,MAAM10M,QAAQ00M,MAAMsD,oBAAsBrxO,EAAEy7C,SAAW,IAAMz7C,EAAEy7C,QAAQxhD,OACxF,EACA+F,EAAE7F,UAAUynQ,WAAa,SAAU5hQ,GACjC,IAAI1C,EAAImG,KAAKsqO,MACX9tO,EAAI3C,EAAE+7B,QAAQ00M,MAChBzwO,EAAIA,EAAEu6O,SACN,IAAI78O,EAAIiF,EAAEqjQ,UAAY,GACtB,QAAQh6P,KAAKtJ,EAAEtD,QAAU1B,EAAIiD,EAAEgC,EAAEsjQ,UAAWvoQ,IAC5CyI,KAAKs8P,MAAQ//P,EAAI,IAAIsJ,KAAKtO,GAC1ByI,KAAKu8P,MAAQ//P,EAAI,IAAIqJ,KAAKtO,GAC1ByI,KAAK67P,QAAUt/P,IAAM1C,GAAK2C,GAAK3C,EAC/BmG,KAAK87P,SAAWt/P,IAAM3C,GAAK0C,GAAK1C,EAChCmG,KAAKg/P,QAAUziQ,GAAKC,CACtB,EACOD,CACT,CAhjBI,GAkjBGA,CACT,IACAiL,EAAEjL,EAAG,oBAAqB,CAACA,EAAE,mBAAoBA,EAAE,mBAAoBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GAC9G,SAASnhM,IACP,IAAIrrC,EAAI,GAWR,OAVAA,EAAEkpB,KAAO,SAAUlpB,GACjB,OAAOyD,KAAKzD,EACd,EACA1C,EAAEysE,GAAG,SAAUzsE,GACb0C,EAAEzF,KAAK,CACLigD,MAAOl9C,EAAEk9C,MACTC,MAAOn9C,EAAEm9C,MACT79C,OAAQU,EAAEV,QAEd,IACOoD,CACT,CACA,SAASmL,EAAEnL,EAAG1C,EAAGtC,EAAG+uE,GAClB,IAAIn/D,EAAIqjO,EAAEphO,EAAEi1P,iBAAmBv+P,KAC/B,UAAYvD,EAAEo7C,aAAep7C,EAAEo7C,cAAgBp7C,EAAEwjQ,uBAAyB54P,IAAMA,EAAIA,EAAEstP,QAASnuL,EAAE/pE,GAAI4K,EAAEtN,GAAG,CACxGZ,KAAM1B,EACN4B,OAAQoD,EAAE24C,cACV3B,eAAgB6oH,EAChBpkH,QAASpQ,MAEb,CACA,IAAI2iM,EAAIvqO,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAU1C,EAAGtC,GAQnB,OAPAgF,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAG1C,GACjC0C,EAAE+/D,UAAYziE,CAChB,GAAK,SAAU0C,EAAG1C,GAChB,IAAK,IAAItC,KAAKsC,EAAGA,EAAElD,eAAeY,KAAOgF,EAAEhF,GAAKsC,EAAEtC,GACpD,EACOgF,EAAE1C,EAAGtC,EACd,EACA,OAAO,SAAUsC,EAAGtC,GAClB,SAAS+uE,IACPtmE,KAAK40B,YAAc/6B,CACrB,CACA0C,EAAE1C,EAAGtC,GACLsC,EAAEnD,UAAY,OAASa,EAAId,OAAOmE,OAAOrD,IAAM+uE,EAAE5vE,UAAYa,EAAEb,UAAW,IAAI4vE,EAChF,CACF,CAlBgC,GAmBhCkkK,EAAIjuO,EAAEwtO,OACNU,EAAIluO,EAAEs3B,IACNuoI,EAAI7/J,EAAE65B,KACNr7B,EAAIwB,EAAEy2D,IACNp2D,EAAImsO,EAAEkC,SACN1zO,EAAIwxO,EAAE55L,IACNt1C,EAAIkvO,EAAEuD,WACNnlO,EAAI4hO,EAAEp0L,YACN2xB,EAAI,CAAC,EACLh/D,IAAMvM,EAAE44E,aACV,OAAO,SAAU95E,GACf,SAAStB,IACP,OAAO,OAASsB,GAAKA,EAAEgC,MAAMmE,KAAMlE,YAAckE,IACnD,CAgDA,OA/CAuqO,EAAEhyO,EAAGsB,GACLtB,EAAEu2M,WAAa,WACb,QAASvyM,EAAEotO,WAAa5uO,EAAE44E,eAAiB54E,EAAE64E,eAC/C,EACAr7E,EAAE7B,UAAUspQ,cAAgB,SAAUzjQ,GACpCA,EAAEyD,KAAKsqO,MAAM7tL,UAAWn1C,EAAI,cAAgB,gBAAiBtH,KAAKigQ,wBAClE1jQ,EAAEyD,KAAKsqO,MAAM7tL,UAAWn1C,EAAI,cAAgB,gBAAiBtH,KAAKkgQ,wBAClE3jQ,EAAEkuO,EAAGnjO,EAAI,YAAc,cAAetH,KAAKmgQ,oBAC7C,EACA5nQ,EAAE7B,UAAUumF,QAAU,WACpBj9E,KAAKggQ,cAAc74P,GACnBtN,EAAEnD,UAAUumF,QAAQrmF,KAAKoJ,KAC3B,EACAzH,EAAE7B,UAAU69B,KAAO,SAAUh4B,EAAG+pE,GAC9BzsE,EAAEnD,UAAU69B,KAAK39B,KAAKoJ,KAAMzD,EAAG+pE,GAC/BtmE,KAAKg/P,SAAWznQ,EAAEgF,EAAEkgD,UAAW,CAC7B,mBAAoB,OACpB,eAAgB,QAEpB,EACAlkD,EAAE7B,UAAUupQ,uBAAyB,SAAU1jQ,GAC7CmL,EAAEnL,EAAG,wBAAyB,cAAc,SAAUA,GACpD+pE,EAAE/pE,EAAEm7C,WAAa,CACfX,MAAOx6C,EAAEw6C,MACTC,MAAOz6C,EAAEy6C,MACT79C,OAAQoD,EAAE24C,cAEd,GACF,EACA38C,EAAE7B,UAAUwpQ,uBAAyB,SAAU3jQ,GAC7CmL,EAAEnL,EAAG,uBAAwB,aAAa,SAAUA,GAClD+pE,EAAE/pE,EAAEm7C,WAAa,CACfX,MAAOx6C,EAAEw6C,MACTC,MAAOz6C,EAAEy6C,OAEXsvB,EAAE/pE,EAAEm7C,WAAWv+C,SAAWmtE,EAAE/pE,EAAEm7C,WAAWv+C,OAASoD,EAAE24C,cACtD,GACF,EACA38C,EAAE7B,UAAUypQ,oBAAsB,SAAU5jQ,GAC1CmL,EAAEnL,EAAG,qBAAsB,YAAY,SAAUA,UACxC+pE,EAAE/pE,EAAEm7C,UACb,GACF,EACAn/C,EAAE7B,UAAUqnQ,aAAe,WACzBlkQ,EAAEnD,UAAUqnQ,aAAannQ,KAAKoJ,OAC7BA,KAAKg/P,SAAWh/P,KAAK89P,kBAAoB99P,KAAKggQ,cAAcpjQ,EAC/D,EACOrE,CACT,CApDO,CAoDL6Q,EACJ,IACA5B,EAAEjL,EAAG,wBAAyB,CAACA,EAAE,wCAAyCA,EAAE,2BAA4BA,EAAE,mBAAoBA,EAAE,wBAAyBA,EAAE,sCAAuCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,GAClP,IAAI3iM,EAAIrrC,EAAEk2O,WACRhI,EAAIluO,EAAEq2O,aACNx2E,EAAIhzJ,EAAE3L,OACRlB,EAAIwsO,EAAEr6B,UACN,IAAI3zM,EAAIguO,EAAEc,YACVd,EAAIA,EAAE/1K,IACN,IAAIp2D,EAAI8K,EAAEisO,WACRp8O,EAAIgzO,EAAEU,SACNpxO,EAAI0wO,EAAEtyO,cACNkP,EAAIojO,EAAEp7L,IACNm3B,EAAIikK,EAAEmB,QACNpkO,EAAIijO,EAAEqB,eACNrzO,EAAIgyO,EAAE/uM,KACN4uM,EAAIG,EAAEM,UACNrwO,EAAI+vO,EAAEztO,SACNutO,EAAIE,EAAEv1M,MACN81M,EAAIP,EAAEkC,KACNryO,EAAImwO,EAAEoC,eACNr1O,EAAIizO,EAAEsC,WACNrwO,EAAI+tO,EAAEwC,YA0eR,OAzeArlO,EAAI6iO,EAAEr4L,KACNq4L,EAAI,WACF,SAAShuO,EAAEC,EAAGD,GACZyD,KAAKogQ,SAAW,GAChBpgQ,KAAKqgQ,aAAergQ,KAAKu/C,SAAM,EAC/Bv/C,KAAKkvC,SAAU,EACflvC,KAAKqgL,WAAQ,EACbrgL,KAAKq9C,YAAcr9C,KAAKsgQ,eAAiBtgQ,KAAKugQ,aAAevgQ,KAAKwgQ,YAAcxgQ,KAAKygQ,aAAezgQ,KAAK0gQ,eAAiB1gQ,KAAK2gQ,UAAY3gQ,KAAK4gQ,MAAQ5gQ,KAAK6gQ,MAAQ7gQ,KAAK8gQ,cAAgB9gQ,KAAK+gQ,iBAAmB/gQ,KAAK+rK,WAAa/rK,KAAKghQ,aAAe,EACxPhhQ,KAAK41B,QAAU,CAAC,EAChB51B,KAAKoiD,QAAU,EACfpiD,KAAK2iM,MAAQ,GACb3iM,KAAKihQ,WAAY,EACjBjhQ,KAAKkhQ,iBAAc,EACnBlhQ,KAAKmhQ,YAAcnhQ,KAAKohQ,eAAiBphQ,KAAKqhQ,YAAcrhQ,KAAKshQ,YAActhQ,KAAKuhQ,aAAe,EACnGvhQ,KAAKsqO,MAAQ9tO,EACbwD,KAAKu0B,KAAK/3B,EAAGD,EACf,CA8cA,OA7cAA,EAAE7F,UAAU69B,KAAO,SAAU/3B,EAAGD,GAC9ByD,KAAKsqO,MAAQ9tO,EACbwD,KAAK8xO,WAAWv1O,GAChBA,EAAEklC,UAAYzhC,KAAK0oG,SAAUnxG,EAAEyI,KAAKsqO,MAAO,aAAa,WACtDtqO,KAAKkwO,OAAOsxB,oBACd,IAAIxhQ,KAAKihQ,UAAYjhQ,KAAKyhQ,cAAgBlqQ,EAAEyI,KAAKsqO,MAAO,UAAU,WAChEtqO,KAAKkwO,OAAOwxB,qBACZ1hQ,KAAKkwO,OAAOyxB,eACd,IAAK3hQ,KAAKyhQ,eAAiBzhQ,KAAKyhQ,gBAClC,EACAllQ,EAAE7F,UAAUo7O,WAAa,SAAUt1O,GACjC,IAAID,EAAIuuO,EAAEtuO,EAAE4lD,QAAS,GACrBpiD,KAAK41B,QAAUp5B,EACfwD,KAAKsqO,MAAM+C,aAAertO,KAAKywO,UAAYj0O,EAAEi0O,UAAWzwO,KAAK4wO,gBAAkBvG,EAAErqO,KAAKywO,UAAWj0O,EAAEo0O,kBACnG5wO,KAAK8gQ,cAAgBtkQ,EAAEskQ,eAAiB,EACxC9gQ,KAAK+gQ,iBAAmBvkQ,EAAEukQ,kBAAoB,EAC9C/gQ,KAAKoiD,QAAU7lD,EACfyD,KAAKghQ,aAAezkQ,EAAI,EACxByD,KAAKshQ,YAAcx2B,EAAEtuO,EAAE8kQ,YAAa,IACpCthQ,KAAK2iM,MAAQ,GACb3iM,KAAKihQ,UAAY,cAAgBzkQ,EAAE4zO,SAAWpwO,KAAKsqO,MAAM8J,SACzDp0O,KAAKskK,cAAW,CAClB,EACA/nK,EAAE7F,UAAUwmF,OAAS,SAAU1gF,EAAGD,GAChC,IAAI1C,EAAImG,KAAKsqO,MACbtqO,KAAK8xO,WAAWzH,GAAE,EAAIrqO,KAAK41B,QAASp5B,IACpCwD,KAAKi9E,UACLpjF,EAAEmgQ,cAAgBngQ,EAAE44P,YAAa,EACjC3nB,EAAEvuO,GAAG,IAAO1C,EAAE80P,SACdvkB,EAAEpqO,KAAM,cACV,EACAzD,EAAE7F,UAAUkrQ,aAAe,SAAUplQ,EAAGD,GAEtC,GADAC,EAAEqlQ,YAAYtlQ,EAAI,cAAgB,YAAY,kCACzCyD,KAAKsqO,MAAM+C,WAAY,CAC1B,IAAIxzO,EAAImG,KAAK41B,QACX97B,EAAI0C,EAAEy7P,WACN1gQ,EAAIiF,EAAEslQ,WACNv7L,EAAI/pE,EAAEulQ,aACNz7L,EAAItmE,KAAK4wO,gBAAgBh2E,MAC3B/gK,EAAI0C,EAAI1C,EAAE42O,UAAU71E,MAAQt0F,EAC5B,IAAI1sE,EAAI2C,GAAIC,EAAEo+J,OAAat0F,EACzBn/D,EAAI3K,EAAEo5B,SAAWp5B,EAAEo5B,QAAQujO,OAC3B7hQ,EAAI,CACF6lN,KAAMvjN,GAEVE,GAAKA,EAAEq1C,IAAI,CACTguK,KAAMtjN,EACN+gK,MAAO/gK,IAETtC,GAAKA,EAAEonC,KAAK,CACVm3M,OAAQl8O,IAEV2sE,IAAMp/D,GAAKo/D,EAAEy7L,WAAa1qQ,EAAIkF,EAAEq+P,eAAgBt+P,IAAMjF,EAAEw+O,OAASx+O,EAAE6lN,KAAO72I,IAAKC,EAAE5nC,KAAKrnC,GACxF,CACA8yO,EAAEpqO,KAAM,oBAAqB,CAC3BylB,KAAMjpB,EACN4zD,QAAS7zD,GAEb,EACAA,EAAE7F,UAAUirQ,cAAgB,WAC1B3hQ,KAAKogQ,SAAS9nP,QAAQtY,KAAKiiQ,aAAcjiQ,MACzCA,KAAKsqO,MAAM43B,YAAcliQ,KAAKwhQ,oBAChC,EACAjlQ,EAAE7F,UAAUurQ,aAAe,SAAUzlQ,GACnC,IAAID,EAAIyD,KACNnG,EAAImG,KAAK41B,QACT97B,EAAID,EAAEk3O,cACNx5O,GAAKsC,EAAEsoQ,IACP57L,EAAI/pE,EAAE4lQ,eACRvoQ,EAAI0sE,EAAE,GACNA,EAAIA,EAAE,GACN,IAAIp/D,EAAI3K,EAAE6lC,SACR/qC,EAAIkF,EAAEqlQ,YACRvqQ,GAAKA,EAAE6/D,UAAYr9D,EAAI,CACrBm/O,WAAY1hP,EAAIsC,EAAImG,KAAKwgQ,YAAc3mQ,EAAI,EAAIC,EAAI,EACnDo/O,WAAY3yK,GACXhvE,EAAI,WACL6yO,EAAE7tO,EAAG,oBAAqB,CACxBkpB,KAAMjpB,GAEV,EAAG8pE,EAAEhvE,EAAE4hP,YAAc5hP,EAAE0uD,QAAQlsD,OAAG,EAAQvC,IAAMD,EAAEqnC,KAAK7kC,GAAIvC,MAC3D4P,IAAMA,EAAEsG,EAAI5T,EAAGsN,EAAEO,EAAI6+D,EACvB,EACAhqE,EAAE7F,UAAUwhQ,YAAc,SAAU17P,GAClC,IAAID,EAAIC,EAAE6lC,SACV,CAAC,aAAc,aAAc,eAAgB,eAAe/pB,SAAQ,SAAU/b,GAC5EC,EAAED,KAAOC,EAAED,GAAKC,EAAED,GAAG0gF,UACvB,IACA1gF,GAAK+K,EAAE9K,EAAE6lC,SACX,EACA9lC,EAAE7F,UAAUumF,QAAU,WACpB,SAASzgF,EAAEA,GACTwD,KAAKxD,KAAOwD,KAAKxD,GAAKwD,KAAKxD,GAAGygF,UAChC,CACAj9E,KAAKqiQ,cAAc/pP,SAAQ,SAAU/b,GACnC,CAAC,aAAc,eAAe+b,QAAQ9b,EAAGD,EAC3C,IACA,6CAA6C0R,MAAM,KAAKqK,QAAQ9b,EAAGwD,MACnEA,KAAKkvC,QAAU,IACjB,EACA3yC,EAAE7F,UAAU8qQ,mBAAqB,WAC/B,IAAIhlQ,EAAIwD,KAAKqgL,OAASrgL,KAAKqgL,MAAM+0D,UAC/B74O,EAAIyD,KAAKsiQ,YAActiQ,KAAKygQ,aAC5B5mQ,EAAImG,KAAKqhQ,YACX,GAAI7kQ,EAAG,CACL,IAAIjF,EAAIiF,EAAE08O,WACVl5O,KAAKogQ,SAAS9nP,SAAQ,SAAUxe,GAC9B,IAAIysE,EAAIzsE,EAAEuoC,SACV,GAAIkkC,EAAG,CACL,IAAID,EAAI/uE,EAAIsC,EAAI0sE,EAAE7+D,GAAK1H,KAAKuiQ,cAAgB,GAAK,EACjDp7P,EAAEo/D,EAAG,CACHrkB,KAAM1lD,EAAEy8O,WAAan/O,EAAE0oQ,eAAiBj8L,EAAE94D,EAAI,GAAK,KACnDiwB,IAAK4oC,EAAI,KACTp3B,QAASlvC,KAAKihQ,WAAa36L,EAAI/uE,EAAI,GAAK+uE,EAAI/uE,EAAIgF,EAAI,EAAI,GAAK,QAEjE,CACF,GAAGyD,KACL,CACF,EACAzD,EAAE7F,UAAU+rQ,YAAc,WACxB,IAAIjmQ,EAAIwD,KAAK41B,QACXr5B,EAAIyD,KAAKoiD,QACTvoD,EAAI2C,EAAEurF,MACNxwF,EAAI,EACNsC,EAAEi6B,OAAS9zB,KAAK+nF,QAAU/nF,KAAK+nF,MAAQ/nF,KAAKsqO,MAAM3hI,SAASniC,MAAM3sE,EAAEi6B,KAAMv3B,EAAI,EAAGA,EAAI,EAAG,KAAM,KAAM,KAAMC,EAAEk1O,QAAS,KAAM,gBAAgB/yM,KAAK,CAC7I4iB,OAAQ,IACNvhD,KAAKsqO,MAAM+C,YAAcrtO,KAAK+nF,MAAM54C,IAAIt1C,EAAEo1C,OAAQjvC,KAAK+nF,MAAMz1E,IAAItS,KAAKqgL,QAASxmL,EAAEkiD,OAAS/7C,KAAK+nF,MAAM54C,IAAI,CAC3G4M,MAAO/7C,KAAKsgQ,eAAiB,OACD/oQ,GAA1BiF,EAAIwD,KAAK+nF,MAAMiwJ,WAAiB95L,OAAQl+C,KAAKq9C,YAAc7gD,EAAEu/C,MAAO/7C,KAAKqgQ,aAAa1hO,KAAK,CAC7Fu6M,WAAY3hP,KAEdyI,KAAKqhQ,YAAc9pQ,CACrB,EACAgF,EAAE7F,UAAUgsQ,QAAU,SAAUlmQ,GAC9B,IAAID,EAAIyD,KAAK41B,QACbp5B,EAAEy7P,WAAWt5N,KAAK,CAChB7K,KAAMv3B,EAAEomQ,YAAcvmG,EAAE7/J,EAAEomQ,YAAanmQ,EAAGwD,KAAKsqO,OAAS/tO,EAAE8zO,eAAez5O,KAAK4F,IAElF,EACAD,EAAE7F,UAAUksQ,WAAa,SAAUpmQ,GACjC,IAAID,EAAIyD,KAAKsqO,MACXzwO,EAAI0C,EAAEosG,SACN7uG,EAAIkG,KAAK41B,QACTr+B,EAAIyI,KAAKshQ,YACT/6L,EAAIzsE,EAAEi3O,eAAiB,EACvBzqK,EAAItmE,KAAKywO,UACTtpO,EAAInH,KAAK4wO,gBACTt5O,EAAI,eAAiBwC,EAAEs2O,OAAStF,EAAEhxO,EAAE+oQ,aAAc,IAAM,EACxDjmQ,GAAK9C,EAAEqoQ,IACP5pQ,GAAKiE,EAAE2uO,OACPpwO,GAAKxC,GAAKiE,EAAE2uO,OAAO23B,iBAAmBtmQ,EAAE2uO,OAAS3uO,EACjDpC,EAAIW,EAAE66B,QACNp7B,EAAIwF,KAAK+iQ,uBAAyB3oQ,GAAKA,EAAE4oQ,aACzC5mG,EAAItiK,EAAE43O,QACNpqO,EAAI9K,EAAEo5B,QAAQwI,UACd/gB,EAAI7gB,EAAEy7P,WACR79P,EAAI7C,EAAIgvE,EAAIjvE,GAAKkD,EAAI,GAAK,GAC1B6iB,IAAM7gB,EAAEqlQ,YAAchoQ,EAAE0sE,EAAE,eAAete,SAAS,cAAgBltD,EAAE9B,KAAO,4BAA8BuD,EAAE05P,YAAc5uP,EAAI,IAAMA,EAAI,KAAO/O,EAAI,sBAAwBiE,EAAEwxB,MAAQ,KAAK2Q,KAAK,CAC5L4iB,OAAQ,IACPjvC,IAAItS,KAAKkhQ,aAAc1kQ,EAAEy7P,WAAa56O,EAAIxjB,EAAEi6B,KAAK,GAAIl3B,EAAIrF,EAAIgvE,GAAKA,EAAGvmE,KAAKskK,UAAY,EAAGlI,GAAI7/J,EAAE8wO,YAAchwN,EAAE8xB,IAAIk7L,EAAE7tO,EAAE4zD,QAAUkW,EAAIn/D,IAAKkW,EAAEshB,KAAK,CAClJsuG,MAAOrwI,EAAI,OAAS,QACpB2kD,OAAQ,IACPjvC,IAAI9V,EAAEqlQ,aAAc7hQ,KAAKskK,WAAatkK,KAAKi8O,YAAcpiP,EAAEoiP,YAAY1/O,EAAE8wO,WAAa,GAAK/mK,EAAE6iE,SAAU9rH,GAAIrd,KAAKskK,SAAWtkK,KAAKi8O,YAAY31K,EAAI,EAAItmE,KAAK8gQ,cAAezjP,EAAEshB,KAAK,IAAK3+B,KAAKskK,UAAWtkK,KAAKuhQ,aAAeznQ,EAAEynQ,cAAgBvhQ,KAAKi8O,YAAY31K,EAAGxsE,EAAEg3O,eAAiB9wO,KAAKshQ,YAAcx2B,EAAEhxO,EAAEwnQ,YAAap9P,KAAKI,IAAItE,KAAKuhQ,aAAc,KAAMnnQ,EAAI4F,KAAKshQ,YAAc/6L,EAAIjvE,GAAKkD,EAAI,GAAK,GAAIoC,GAAKygB,EAAEshB,KAAK,IAAK3+B,KAAKshQ,YAAc/6L,KAAMxrE,EAAE+nQ,iBAAiB9iQ,KAAMxD,GAAIwD,KAAKijQ,eAAiBjjQ,KAAKijQ,cAAczmQ,EAAG6gB,EAAG++I,IAC7f5hK,IAAMgC,EAAE6lC,UAAYriC,KAAK+iQ,uBAAyB/iQ,KAAK+iQ,sBAAsBvmQ,GAC7EwD,KAAK4hQ,aAAaplQ,EAAGA,EAAE4zD,UACtB7zD,EAAE8wO,YAAc/mK,EAAEvqB,OAAS1+B,EAAE8xB,IAAI,CAChC4M,OAAQjiD,EAAEqlO,WAAan/N,KAAKmhQ,aAAe5kQ,EAAE05P,WAAWl6M,OAAS3hD,EAAI,OAEvE4F,KAAK0iQ,QAAQlmQ,GACbD,EAAI8gB,EAAE26N,UACNn+O,EAAImG,KAAKi8O,aAAej8O,KAAKi8O,YAAY90O,GAAK,EAC9C3K,EAAE2iO,UAAY3iO,EAAEgmQ,eAAiB1oQ,EAAEqlO,WAAa3iO,EAAE0mQ,iBAAmB3mQ,EAAEw/C,MAAQ3hD,EAC/E4F,KAAKugQ,aAAer8P,KAAKI,IAAItE,KAAKugQ,aAAc/jQ,EAAE2iO,WAClDn/N,KAAKohQ,gBAAkB5kQ,EAAE2iO,UACzBn/N,KAAK+rK,WAAavvK,EAAEuvK,WAAa7nK,KAAK+c,MAAMzkB,EAAE2mQ,mBAAqB5mQ,EAAE2hD,OAAS,IAAMrkD,EAAI0C,EAAE2hD,OAASrkD,GACrG,EACA0C,EAAE7F,UAAU0sQ,WAAa,SAAU5mQ,GACjC,IAAID,EAAIyD,KAAK41B,QACX/7B,EAAImG,KAAKoiD,QACTtoD,EAAI,eAAiByC,EAAE6zO,OACvB74O,EAAIiF,EAAEuvK,WACNxlG,EAAIvmE,KAAK+gQ,iBACTz6L,EAAItmE,KAAK8gQ,cACT35P,EAAIrN,EAAIgxO,EAAEvuO,EAAEsmQ,aAAc,IAAM,EAChCvrQ,EAAI0I,KAAKsgQ,eACX/jQ,EAAIA,EAAE4zO,cAAgBnwO,KAAKohQ,eAAiB9pQ,EAAI0I,KAAKugQ,aAAe/jQ,EAAE2iO,UACtErlO,GAAKkG,KAAK6gQ,MAAQhnQ,EAAI0C,EAAIjF,IAAM0I,KAAK6gQ,MAAQhnQ,EAAGmG,KAAK0gQ,iBAAmB1gQ,KAAK4gQ,OAASt6L,EAAItmE,KAAK0gQ,eAAiBn6L,GAAIvmE,KAAK0gQ,eAAiB,GAC1I1gQ,KAAK2gQ,UAAYr6L,EAAItmE,KAAK4gQ,MAAQr6L,EAClCvmE,KAAK0gQ,eAAiBx8P,KAAKI,IAAI/M,EAAGyI,KAAK0gQ,gBACvClkQ,EAAE4lQ,eAAiB,CAACpiQ,KAAK6gQ,MAAO7gQ,KAAK4gQ,OACrC9mQ,EAAIkG,KAAK6gQ,OAAStkQ,GAAKyD,KAAK4gQ,OAASt6L,EAAI/uE,EAAIgvE,EAAGvmE,KAAK0gQ,eAAiBnpQ,GACtEyI,KAAKq9C,YAAcr9C,KAAKmhQ,aAAej9P,KAAKI,KAAKxK,EAAIkG,KAAK6gQ,MAAQhnQ,GAAK2C,EAAE6lC,SAAW,EAAIl7B,GAAK5K,GAAK1C,EAAGmG,KAAKq9C,YAC5G,EACA9gD,EAAE7F,UAAU2rQ,YAAc,WACxB,IAAI7lQ,EAAI,GAQR,OAPAwD,KAAKsqO,MAAMa,OAAO7yN,SAAQ,SAAU/b,GAClC,IAAI1C,EAAI0C,GAAKA,EAAEq5B,QACfr5B,GAAKuuO,EAAEjxO,EAAEwpQ,cAAc/8L,EAAEzsE,EAAEuvP,gBAAiB,GAAQ,KAAQ5sP,EAAIA,EAAEqW,OAAOtW,EAAE+mQ,cAAgB,UAAYzpQ,EAAEkgQ,WAAax9P,EAAEtG,KAAOsG,IACjI,IACA6tO,EAAEpqO,KAAM,mBAAoB,CAC1BogQ,SAAU5jQ,IAELA,CACT,EACAD,EAAE7F,UAAU6sQ,aAAe,WACzB,IAAI/mQ,EAAIwD,KAAK41B,QACb,OAAO51B,KAAKihQ,UAAYzkQ,EAAEywI,MAAMj3H,OAAO,GAAK,KAAOxZ,EAAEyiM,SAAW,GAAKziM,EAAEywI,MAAMj3H,OAAO,GAAKxZ,EAAEwzO,cAAch6N,OAAO,GAAKxZ,EAAE4zO,OAAOp6N,OAAO,EACvI,EACAzZ,EAAE7F,UAAU8sQ,cAAgB,SAAUhnQ,EAAGD,GACvC,IAAI1C,EAAImG,KAAKsqO,MACXxwO,EAAIkG,KAAK41B,QACTr+B,EAAIyI,KAAKujQ,eACXhsQ,GAAK,CAAC,eAAgB,eAAgB,eAAgB,gBAAgB+gB,SAAQ,SAAUiuD,EAAGp/D,GACzFo/D,EAAE1gE,KAAKtO,KAAO+uE,EAAE9pE,EAAE2K,MAAQtN,EAAEkB,EAAEoM,IAAMjD,KAAKI,IAAIzK,EAAEkB,EAAEoM,IAAKtN,EAAEq2O,QAAQ/oO,EAAI,GAAK,EAAI,eAAiB,eAAiB,CAAC,GAAI,GAAI,EAAG,GAAGA,GAAKrN,EAAEqN,EAAI,EAAI,IAAM,KAAO2jO,EAAEhxO,EAAEqoD,OAAQ,IAAM5lD,EAAE4K,IAAMtN,EAAE02P,YAAYppP,IAAM,IAC1M,GACF,EACA5K,EAAE7F,UAAUgrQ,mBAAqB,WAC/B,IAAIllQ,EAAIwD,KAAKsqO,MACX/tO,EAAI,GACJ1C,EAAI,SAAWmG,KAAK41B,QAAQq3G,MAC9BjtI,KAAKogQ,SAAS9nP,SAAQ,SAAUxe,GAC9B,IAAIvC,EACAgvE,EAAI1sE,EACR,GAAIC,EAAE86P,MAAO,CACX96P,EAAE6vP,MAAM/zN,QAAQssN,WAAa37K,GAAKA,GAClCzsE,EAAEoyP,SAAW30P,EAAIgB,EAAEguE,EAAIzsE,EAAEoyP,OAASpyP,EAAEoyP,OAAO1wP,MAAM,GAAGisC,WAAW,SAAUjrC,GACvE,OAAOhC,EAAEgC,EAAE01P,MACb,KACA3rL,EAAIvmE,KAAK8gQ,cAAgBhnQ,EAAEm+P,WAAWjgB,UAAU95L,OAASl+C,KAAK+gQ,iBAC9D,IAAIz6L,EAAIxsE,EAAE86P,MAAMl3N,IAAMlhC,EAAE2yP,QACxBr1P,EAAEs2D,SAAW74D,EAAIA,EAAIA,EAAE26P,MAAQp4P,EAAE86P,MAAM12M,OAAQ3mD,GAAK+uE,EAAI,GAAKC,GAAKhvE,EAAI+uE,EAAIxsE,EAAE86P,MAAM12M,OAClF3hD,EAAEzF,KAAK,CACLqC,OAAQ5B,EACRokE,KAAM4K,EACN9gD,KAAM3rB,GAEV,CACF,GAAGkG,MACHpD,EAAEL,EAAGC,EAAE0yP,YAAY52O,SAAQ,SAAU/b,GACnCA,EAAEkpB,KAAK28O,iBAAmB7lQ,EAAEkpB,KAAK28O,eAAe,GAAK5lQ,EAAE2yP,QAAU3yP,EAAEkxO,QAAQ,GAAKnxO,EAAE+Z,IACpF,GACF,EACA/Z,EAAE7F,UAAUgyG,OAAS,WACnB,IAAIlsG,EAAIwD,KAAKsqO,MACX/tO,EAAIC,EAAEmsG,SACN9uG,EAAImG,KAAK41B,QACTr+B,EAAIyI,KAAKoiD,QACTmkB,EAAIvmE,KAAKqiQ,cACT/7L,EAAItmE,KAAKqgL,MACTl5K,EAAInH,KAAKu/C,IACXv/C,KAAK6gQ,MAAQtpQ,EACbyI,KAAK4gQ,MAAQ5gQ,KAAKghQ,aAClBhhQ,KAAK2gQ,UAAY3gQ,KAAKq9C,YAAc,EACpCr9C,KAAKmhQ,YAAc/mQ,EAAEP,EAAEkiD,MAAOv/C,EAAEy5P,WAAWl6M,MAAQxkD,GACnD,IAAIqF,EAAIJ,EAAEy5P,WAAWl6M,MAAQ,EAAIxkD,EAAIsC,EAAE4T,GACtC,EAAI,CAAC,KAAM,MAAMX,QAAQ9M,KAAKujQ,eAAep5I,UAAU,EAAG,MAAQvtH,GAAK,GACxEoD,KAAKsgQ,eAAiBtgQ,KAAKmhQ,aAAevkQ,EAC1C0pE,IAAMtmE,KAAKqgL,MAAQ/5G,EAAI/pE,EAAEgqE,EAAE,UAAUte,SAASpuD,EAAEukC,WAAa,IAAIO,KAAK,CACpE4iB,OAAQ,IACPjvC,MAAOtS,KAAKqgQ,aAAe9jQ,EAAEgqE,IAAI5nC,KAAK,CACvC4iB,OAAQ,IACPjvC,IAAIg0D,GAAItmE,KAAKkhQ,YAAc3kQ,EAAEgqE,IAAIj0D,IAAItS,KAAKqgQ,eAC7CrgQ,KAAKyiQ,cACLnrQ,EAAEivE,GAAG,SAAU/pE,EAAGD,GAChB,OAAQC,EAAEo5B,SAAWp5B,EAAEo5B,QAAQ6tO,aAAe,IAAMlnQ,EAAEq5B,SAAWr5B,EAAEq5B,QAAQ6tO,aAAe,EAC5F,IACA5pQ,EAAEqoP,UAAY37K,EAAE9+B,UAChBznC,KAAKogQ,SAAW75L,EAChBvmE,KAAKkvC,QAAUtyC,IAAM2pE,EAAE/vE,OACvBwJ,KAAK+rK,WAAa/rK,KAAKohQ,eAAiBphQ,KAAKugQ,aAAevgQ,KAAK0gQ,eAAiB,EAClFn6L,EAAEjuD,QAAQtY,KAAK4iQ,WAAY5iQ,MAC3BumE,EAAEjuD,QAAQtY,KAAKojQ,WAAYpjQ,MAC3BumE,GAAKvmE,KAAKmhQ,aAAenhQ,KAAKq9C,aAAe9lD,EAC7C,IAAIgB,EAAIyH,KAAK2gQ,UAAY3gQ,KAAK0gQ,eAAiB1gQ,KAAKqhQ,YACpD9oQ,EAAIyH,KAAK0mP,eAAenuP,GACxBA,GAAKhB,EACL4P,IAAMnH,KAAKu/C,IAAMp4C,EAAI5K,EAAEw2D,OAAO9K,SAAS,yBAAyBtpB,KAAK,CACnEvkC,EAAGP,EAAEyzO,eACJh7N,IAAIg0D,GAAIn/D,EAAE88O,OAAQ,GACrBznP,EAAE6wO,YAAclmO,EAAEw3B,KAAK,CACrBm3M,OAAQj8O,EAAE6jK,YACV,eAAgB7jK,EAAEqlK,aAAe,EACjCi+C,KAAMtjN,EAAEwiK,iBAAmB,SAC1B76F,OAAO3nE,EAAE2nE,QACZ,EAAI+E,GAAK,EAAIhuE,IAAM4O,EAAEA,EAAE88O,MAAQ,OAAS,WAAW98O,EAAEivO,MAAMx/O,KAAK,CAAC,EAAG,CAClE6W,EAAG,EACH/F,EAAG,EACHq0C,MAAOwqB,EACProB,OAAQ3lD,GACP4O,EAAEkvO,gBAAiBlvO,EAAE88O,OAAQ,GAChC98O,EAAEvK,EAAI,OAAS,UACfJ,EAAE6wO,YAAc,SAAW/mK,EAAE4lK,SAAS,aAAe3lK,EAAIhuE,EAAI,GAC7DyH,KAAKwgQ,YAAcj6L,EACnBvmE,KAAKygQ,aAAeloQ,EACpBqE,GAAKoD,KAAKitI,QACVjtI,KAAKihQ,WAAajhQ,KAAK2hQ,gBACvBv3B,EAAEpqO,KAAM,cACV,EACAzD,EAAE7F,UAAUu2I,MAAQ,SAAUzwI,QAC5B,IAAWA,IAAMA,EAAIwD,KAAKsqO,MAAM2rB,YAChC,IAAI15P,EAAIyD,KAAKsqO,MACXzwO,EAAImG,KAAK41B,QACT97B,EAAI0C,EAAEkL,EACR,eAAe7B,KAAK7F,KAAKujQ,iBAAmB,EAAIhnQ,EAAEg0P,YAAY,GAAKz2P,GAAKyC,EAAEg0P,YAAY,GAAK,eAAe1qP,KAAK7F,KAAKujQ,iBAAmB,EAAIhnQ,EAAEg0P,YAAY,KAAOz2P,GAAKyC,EAAEg0P,YAAY,IACnLz2P,IAAM0C,EAAEkL,IAAMlL,EAAI6tO,EAAE7tO,EAAG,CACrBkL,EAAG5N,KAELkG,KAAKqgL,MAAMpzC,MAAMo9F,EAAExwO,EAAG,CACpBkiD,MAAO/7C,KAAKwgQ,YACZtiN,OAAQl+C,KAAKygQ,aACbzwB,cAAehwO,KAAKihQ,UAAY,MAAQpnQ,EAAEm2O,iBACxC,EAAIxzO,EACV,EACAD,EAAE7F,UAAUgwP,eAAiB,SAAUlqP,GACrC,IAwBE6gB,EACA+sN,EAzBE7tO,EAAIyD,KACNnG,EAAImG,KAAKsqO,MACTxwO,EAAID,EAAE8uG,SACNpxG,EAAIyI,KAAK41B,QACT2wC,EAAIhvE,EAAEmQ,EACN4+D,EAAI,QAAU/uE,EAAEy4O,cAChB7oO,EAAInH,KAAKoiD,QACT9qD,EAAIC,EAAE+wK,UACN1rK,EAAIrF,EAAE+4O,WACN/3O,EAAIuyO,EAAEluO,EAAEqnD,WAAW,GACnBlpD,EAAI6B,EAAE8mQ,WAAa,GACnBtpQ,EAAI4F,KAAK2iM,MACTnoM,EAAIwF,KAAKogQ,SACThkG,EAAI,SAAU5/J,GACZ,kBAAoBA,EAAIorC,EAAEjJ,KAAK,CAC7Buf,OAAQ1hD,IACLorC,IAAMrrC,EAAEkjP,SAAW73M,EAAEq1C,UAAW1gF,EAAE8jQ,aAAa3/F,QACpDnkK,EAAE8jQ,aAAahwN,MAAQ9zC,EAAE8jQ,aAAahwN,IAAIpB,MAAMyxH,KAAOlkK,EAAI,QAAU2K,EAAI,cAAgBA,EAAI3K,GAAK,QAAU,OAC9G,EACA8K,EAAI,SAAU9K,GAGZ,OAFAD,EAAEC,GAAK1C,EAAE2iP,OAAO,EAAG,EAAG,IAAM1hP,GAAG20N,UAAU30N,EAAI,EAAGA,EAAI,GAAGuX,IAAI2tM,GAC3DpmN,EAAEwzO,YAAc9wO,EAAEC,GAAGmiC,KAAK,OAAQ,sBAC3BpiC,EAAEC,EACX,EAGF+pE,EAAI1sE,EAAEo8P,WAAW/3M,QAAUooB,GAAKC,EAAIA,GAAKp/D,EACzC,IAAI84M,EAAIjgN,KAAK2jQ,IACX/7N,EAAI5nC,KAAKy/O,SAsBX,MArBA,eAAiBloP,EAAE64O,QAAU,WAAa74O,EAAEy4O,eAAiBz4O,EAAE0nM,WAAa14H,GAAK,GACjFjvE,IAAMivE,EAAIriE,KAAKqL,IAAIg3D,EAAGjvE,IACtB8C,EAAE5D,OAAS,EACXgG,GAAK,EAAI+pE,GAAK/pE,EAAI+pE,IAAK,IAAO3pE,EAAE6kC,SAAWzhC,KAAKsiQ,WAAajlP,EAAInZ,KAAKI,IAAIiiE,EAAI,GAAKvmE,KAAKqhQ,YAAcl6P,EAAG,GAAInH,KAAK4jQ,YAAc94B,EAAE9qO,KAAK4jQ,YAAa,GAAI5jQ,KAAK6jQ,WAAarnQ,EAAGhC,EAAE8d,SAAQ,SAAU9b,EAAGD,GAClM,IAAI1C,EAAI2C,EAAE4lQ,eAAe,GACvBtoQ,EAAIoK,KAAK+c,MAAMzkB,EAAEy7P,WAAWjgB,UAAU95L,QACtC3mD,EAAI6C,EAAE5D,SACHe,GAAKsC,EAAIO,EAAE7C,EAAI,GAAK8lB,IAAM+sN,GAAKvwO,KAAOO,EAAE7C,EAAI,MAAI6C,EAAEtD,KAAKszO,GAAKvwO,GAAItC,KACrEiF,EAAEsnQ,OAASvsQ,EAAI,EACf6yO,IAAM5vO,EAAE+B,EAAI,GAAGunQ,OAASvsQ,EAAI,GAC5BgF,IAAM/B,EAAEhE,OAAS,GAAKqD,EAAIC,EAAIM,EAAE7C,EAAI,GAAK8lB,GAAKvjB,GAAKujB,IAAMjjB,EAAEtD,KAAK+C,GAAI2C,EAAEsnQ,OAASvsQ,GAC/EsC,IAAMuwO,IAAMA,EAAIvwO,EAClB,IAAI+tC,IAAMA,EAAIrrC,EAAEkjP,SAAW3lP,EAAE2lP,SAAS,EAAGt4O,EAAG,KAAM,GAAI5K,EAAE8jQ,aAAa3/F,KAAK94H,IAAKw0H,EAAE/+I,GAAI4iM,IAAMjgN,KAAK2jQ,IAAM1jD,EAAInmN,EAAEysE,IAAI5nC,KAAK,CACnH4iB,OAAQ,IACPjvC,IAAItS,KAAKqgL,OAAQrgL,KAAKijK,GAAKnpK,EAAEoxN,OAAO,WAAY,EAAG,EAAGnwN,EAAGA,GAAGuX,IAAI2tM,GAAI34M,EAAE,aAAaqrC,GAAG,SAAS,WAChGp2C,EAAEsvK,QAAQ,EAAGtzK,EACf,IAAIyH,KAAK+jQ,MAAQjqQ,EAAEg6B,KAAK,GAAI,GAAI,IAAIm0B,SAAS,gCAAiCpuD,EAAEwzO,YAAcrtO,KAAK+jQ,MAAM50N,IAAIvyC,EAAEqyC,OAAQjvC,KAAK+jQ,MAAMzxP,IAAI2tM,GAAIjgN,KAAKkjK,KAAOppK,EAAEoxN,OAAO,gBAAiB,EAAG,EAAGnwN,EAAGA,GAAGuX,IAAI2tM,GAAI34M,EAAE,eAAeqrC,GAAG,SAAS,WAC/Np2C,EAAEsvK,OAAO,EAAGtzK,EACd,KAAKgE,EAAEsvK,OAAO,GAAIrvK,EAAI+pE,GAAK05I,IAAM7jD,IAAKp8J,KAAK2jQ,IAAM1jD,EAAEhjI,UAAWj9E,KAAKkhQ,YAAYviO,KAAK,CAClFu6M,WAAY,IACVl5O,KAAKsiQ,WAAa,GACf9lQ,CACT,EACAD,EAAE7F,UAAUm1K,OAAS,SAAUtvK,EAAG1C,GAChC,IAAIC,EAAIkG,KACNzI,EAAIyI,KAAKsqO,MACT/jK,EAAIvmE,KAAK2iM,MACTr8H,EAAIC,EAAE/vE,OACN2Q,EAAInH,KAAKsiQ,WACThrQ,EAAI0I,KAAK41B,QAAQ06M,WACjB12O,EAAIoG,KAAK+jQ,MACTnnQ,EAAIoD,KAAKoiD,QACT7pD,EAAIyH,KAAK4jQ,YAAcrnQ,EACzBhE,EAAI+tE,IAAM/tE,EAAI+tE,GACd,EAAI/tE,IAAM,qBAAuBsB,GAAK4wO,EAAE5wO,EAAGtC,GAAIyI,KAAK2jQ,IAAIhlO,KAAK,CAC3Ds6M,WAAYr8O,EACZs8O,WAAY/xO,EAAInH,KAAKoiD,QAAU,EAAIpiD,KAAKqhQ,YACxCriN,WAAY,YACV,CAACh/C,KAAKijK,GAAIjjK,KAAKgkQ,WAAW1rP,SAAQ,SAAU9b,GAC9CA,EAAEmiC,KAAK,CACL,MAAS,IAAMpmC,EAAI,iCAAmC,gCAE1D,IAAIqB,EAAE+kC,KAAK,CACT7K,KAAMv7B,EAAI,IAAM+tE,IACd,CAACtmE,KAAKkjK,KAAMljK,KAAKikQ,aAAa3rP,SAAQ,SAAU9b,GAClDA,EAAEmiC,KAAK,CACLlxB,EAAG,GAAKzN,KAAK+jQ,MAAM/rB,UAAUj8L,MAC7B,MAASxjD,IAAM+tE,EAAI,iCAAmC,gCAE1D,GAAGtmE,MAAOzI,EAAE81O,aAAertO,KAAKijK,GAAGtkI,KAAK,CACtCw+K,KAAM,IAAM5kN,EAAIjB,EAAEk5O,cAAgBl5O,EAAEi5O,cAClCvwO,KAAKgkQ,UAAU70N,IAAI,CACrB0qI,OAAQ,IAAMthL,EAAI,UAAY,YAC5ByH,KAAKkjK,KAAKvkI,KAAK,CACjBw+K,KAAM5kN,IAAM+tE,EAAIhvE,EAAEk5O,cAAgBl5O,EAAEi5O,cAClCvwO,KAAKikQ,YAAY90N,IAAI,CACvB0qI,OAAQthL,IAAM+tE,EAAI,UAAY,aAC3BtmE,KAAKuiQ,cAAgBh8L,EAAEhuE,EAAI,GAAKyH,KAAKghQ,aAAchhQ,KAAKkhQ,YAAYl7M,QAAQ,CAC/EkzL,WAAYl5O,KAAKuiQ,eACfviQ,KAAK4jQ,YAAcrrQ,EAAGyH,KAAKwhQ,qBAAsBjlQ,EAAIqrC,EAAEkjM,EAAEjxO,EAAGtC,EAAEoxG,SAASkqI,iBAAiB,IAAMr2O,GAAE,WAClG4tO,EAAEtwO,EAAG,cAAe,CAClB8pQ,YAAarrQ,GAEjB,GAAGgE,EAAE4jB,UACP,EACA5jB,EAAE7F,UAAUusQ,cAAgB,SAAUzmQ,EAAGD,EAAG1C,GAC1C,IAAIC,EAAIkG,KACNzI,EAAIuC,EAAEwwO,MAAM3hI,SAASq1I,WACrBz3K,EAAI/pE,aAAa2nJ,EACjB79E,EAAI,sBAAwBC,EAAI,QAAU,UAAY,UACtDp/D,EAAIrN,EAAEwwO,MAAM+C,WACZ/1O,EAAI,SAAUiF,GACZzC,EAAEsmQ,SAAS9nP,SAAQ,SAAUze,GAC3B2C,IAAM3C,GAAK,CAACA,GAAGgZ,OAAOhZ,EAAE2hQ,cAAgB,IAAIljP,SAAQ,SAAU9b,GAC5DA,EAAEmiP,SAASpiP,GAAIgqE,EACjB,GACF,GACF,GACD1sE,EAAI,CAAC0C,EAAGC,EAAEulQ,cAAgB,CAACvlQ,EAAEqlQ,cAAcvpP,SAAQ,SAAUze,GACxDA,GAAGA,EAAE84C,GAAG,aAAa,WACvBn2C,EAAE4zD,SAAW94D,EAAE,YACfkF,EAAEmiP,SAAS,SACXniP,EAAE4zD,SAAW74D,EAAE0wD,SAASqe,GACxBn/D,GAAK5K,EAAE4yC,IAAIr1C,EAAE87B,QAAQ+6M,eACvB,IAAGh+L,GAAG,YAAY,WAChB74C,EAAEwwO,MAAM+C,YAAc9wO,EAAE4yC,IAAIk7L,EAAE7tO,EAAE4zD,QAAUt2D,EAAE22O,UAAY32O,EAAE82O,kBAC1Dt5O,EAAE,IACFC,EAAE8wD,YAAYie,GACd9pE,EAAEmiP,UACJ,IAAGhsM,GAAG,SAAS,SAAUp2C,GACvB,IAAI1C,EAAI,WACN2C,EAAE0nQ,YAAc1nQ,EAAE0nQ,aAClB5sQ,EAAEkF,EAAE4zD,QAAU,WAAa,GAC7B,EACA74D,EAAE8wD,YAAYie,GACd/pE,EAAI,CACF4nQ,aAAc5nQ,GAEhBC,EAAE47P,eAAiB57P,EAAE47P,eAAe,kBAAmB77P,EAAG1C,GAAKuwO,EAAE5tO,EAAG,kBAAmBD,EAAG1C,EAC5F,GACF,GACF,EACA0C,EAAE7F,UAAUqsQ,sBAAwB,SAAUvmQ,GAC5CA,EAAE6lC,SAAWxoC,EAAE,QAAS,CACtBZ,KAAM,WACNmlC,UAAW,6BACXsD,QAASllC,EAAEmlC,SACXyiO,eAAgB5nQ,EAAEmlC,UACjB3hC,KAAK41B,QAAQi7M,kBAAmB7wO,KAAKsqO,MAAM7tL,WAC9CllD,EAAEiF,EAAE6lC,SAAU,SAAS,SAAU9lC,GAC/B6tO,EAAE5tO,EAAE2uO,QAAU3uO,EAAG,gBAAiB,CAChCklC,QAASnlC,EAAEpD,OAAOuoC,QAClBjc,KAAMjpB,IACL,WACDA,EAAEigC,QACJ,GACF,GACF,EACOlgC,CACT,CA9dI,IA+dH,gBAAgBsJ,KAAKkjO,EAAEv1J,WAAau1J,EAAEv1J,UAAU84C,YAAc/vH,IAAMmL,EAAE6iO,EAAE7zO,UAAW,gBAAgB,SAAU8F,EAAGD,GAC/G,IAAI1C,EAAImG,KACNlG,EAAI,WACFyC,EAAE6lQ,gBAAkB5lQ,EAAE5F,KAAKiD,EAAG0C,EAChC,EACFzC,IACAD,EAAEwqQ,cAAgB7qQ,WAAWM,EAC/B,IAEOywO,CACT,IACA/iO,EAAEjL,EAAG,gCAAiC,CAACA,EAAE,mBAAoBA,EAAE,0BAA2BA,EAAE,wBAAyBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,GAC/J,IAIEiY,EAJEx0H,EAAIx+B,EAAE2oG,eACRw4H,EAAIpmF,EAAE1rJ,MACN+xO,EAAIrmF,EAAE2nF,YACNrB,EAAItmF,EAAEnvH,MAmCR,OAjCA,SAAWj6B,GACT,SAAS6B,EAAEL,EAAG1C,GACZ,IAAItC,EAAIqwC,EAAEqoM,aAAe,CAAC,EACxB3pK,EAAIzsE,EAAEk4G,eACRl4G,EAAEnD,UAAU4tQ,aAAezqQ,EAAEnD,UAAU4tQ,WAAav7B,GACpDlvO,EAAEnD,UAAUuC,KAAOsD,EACnB+pE,IAAM/uE,EAAEgF,GAAK+pE,GACbvrE,EAAEkvO,YAAY1tO,GAAK1C,CACrB,CACAkB,EAAEkvO,YAAc1tO,EAAE0tO,YAClBlvO,EAAEwpQ,UAAY,SAAUhoQ,EAAG1C,QACzB,IAAWA,IAAMA,EAAI,CAAC,GACtB,IAAItC,EAAIgF,EAAEq5B,QAAQ00M,MAClB/yO,EAAIsC,EAAEZ,MAAQ1B,EAAE0B,MAAQ1B,EAAEi2O,mBAAqB,GAC/C,IAAIlnK,EAAIvrE,EAAEkvO,YAAY1yO,GAMtB,OALAwD,GAAKwvO,EAAE,IAAI,EAAIhuO,EAAG,CAChBioQ,iBAAkBjtQ,IAGpB,oBADAA,EAAI,IAAI+uE,GACgB/xC,MAAQh9B,EAAEg9B,KAAKh4B,EAAG1C,GACnCtC,CACT,EACAwD,EAAE0pQ,mBAAqB7nQ,EACvB7B,EAAE2pQ,WAAa,SAAUnoQ,EAAG1C,EAAGsN,EAAGm/D,EAAG81F,GACnC,IAAI7kK,EAAIqwC,EAAEqoM,aAAe,CAAC,EAM1B,OALAp2O,EAAIA,GAAK,GACTtC,EAAEgF,GAAKkuO,EAAElzO,EAAEsC,GAAIsN,GACfvK,EAAEL,EAAGiuO,EAAEzvO,EAAEkvO,YAAYpwO,IAAM,WAAa,EAAGysE,IAC3CvrE,EAAEkvO,YAAY1tO,GAAG7F,UAAUuC,KAAOsD,EAClC6/J,IAAMrhK,EAAEkvO,YAAY1tO,GAAG7F,UAAU4tQ,WAAa95B,EAAEzB,EAAG3sE,IAC5CrhK,EAAEkvO,YAAY1tO,EACvB,CACD,CAhCD,CAgCG6/J,IAAMA,EAAI,CAAC,IACPA,CACT,IACA50J,EAAEjL,EAAG,sBAAuB,CAACA,EAAE,wCAAyCA,EAAE,qBAAsBA,EAAE,2BAA4BA,EAAE,sBAAuBA,EAAE,mBAAoBA,EAAE,yBAA0BA,EAAE,qBAAsBA,EAAE,0BAA2BA,EAAE,mBAAoBA,EAAE,qCAAsCA,EAAE,iCAAkCA,EAAE,oCAAqCA,EAAE,gBAAiBA,EAAE,qBAAsBA,EAAE,+BAA+B,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,EAAGC,EAAGC,EAAGruE,EAAGrhK,EAAG6B,EAAGrF,EAAGsC,EAAGsN,EAAGm/D,GACrgB,IAAIh/D,EAAI/K,EAAEypD,QACRztD,EAAIgE,EAAEk2O,WACNrI,EAAI7tO,EAAEq2O,aACNp4O,EAAIuuO,EAAE/nC,aACNp5J,EAAIu8G,EAAE4/F,qBACNjZ,EAAIpjO,EAAEqiO,OACN3vO,EAAIsN,EAAEmsB,IACNv8B,EAAIoQ,EAAEmiO,YACNrtO,EAAIkL,EAAE6gO,IACNhiK,EAAI7+D,EAAEsrD,IACNl5D,EAAI2wO,EAAE14H,eACNn4G,EAAI6wO,EAAEmH,YACNz1B,EAAIv/M,EAAEqtO,YACNx8N,EAAItG,EAAE8jO,SACNjrB,EAAI74M,EAAEw3B,KACNsnC,EAAI9+D,EAAEqkO,iBACNprB,EAAIj5M,EAAElP,cACN65J,EAAI3qJ,EAAEgoC,IACN0uM,EAAI12O,EAAEukO,QACNsD,EAAI7nO,EAAEykO,eACN3lO,EAAIkB,EAAE0kO,MACN5+G,EAAI9lH,EAAE1O,MACN+O,EAAIL,EAAE7J,OACNqnQ,EAAKx9P,EAAEq0B,KACPmkN,EAAIx4O,EAAE0jO,UACN+5B,EAAKz9P,EAAE+kO,SACP7uN,EAAIlW,EAAElL,QACN+7M,EAAI7wM,EAAErK,SACNmjN,EAAI94M,EAAE9K,SACN6wH,EAAI/lH,EAAE0d,SACNzH,EAAIjW,EAAE6tB,MACNkjN,EAAI/wO,EAAEmlO,WACN6pB,EAAIhvP,EAAEslO,KACNo4B,EAAK19P,EAAEulO,KACP4pB,EAAKnvP,EAAEwlO,eACPm4B,EAAK39P,EAAEwtC,YACPowN,EAAK59P,EAAEylO,MACP6pB,EAAKtvP,EAAE4lO,YACPi4B,EAAK79P,EAAE8lO,UA2/BT,OA1/BA1wO,EAAI,WACF,SAASA,EAAEC,EAAGD,EAAG1C,GACfmG,KAAKmrO,OAASnrO,KAAK4/P,SAAW5/P,KAAK2oG,SAAW3oG,KAAKy0P,QAAUz0P,KAAKm4P,WAAan4P,KAAKivP,UAAYjvP,KAAKmvP,QAAUnvP,KAAKovP,SAAWpvP,KAAKkvP,WAAalvP,KAAKk1O,QAAUl1O,KAAK41B,QAAU51B,KAAK0zO,gBAAkB1zO,KAAKmiD,OAASniD,KAAKkwO,OAASlwO,KAAKilQ,gBAAkBjlQ,KAAKkiQ,WAAaliQ,KAAKguB,MAAQhuB,KAAK80D,aAAe90D,KAAKy8C,UAAYz8C,KAAKs5P,aAAet5P,KAAK0/P,QAAU1/P,KAAK8lP,WAAa9lP,KAAK2lP,YAAc3lP,KAAKk/P,OAASl/P,KAAKkwP,WAAalwP,KAAK0pP,UAAO,EACjb1pP,KAAKklQ,YAAc,CAAC,EACpBllQ,KAAK40P,MAAQ50P,KAAK2pP,MAAQ3pP,KAAK8nP,YAAc9nP,KAAKuwP,YAAcvwP,KAAK8lB,KAAO9lB,KAAKmlQ,cAAgBnlQ,KAAKi2P,WAAaj2P,KAAK0tO,aAAU,EAClI1tO,KAAKolQ,QAAQ5oQ,EAAGD,EAAG1C,EACrB,CAq+BA,OAp+BA0C,EAAE+tO,MAAQ,SAAU9tO,EAAG3C,EAAGC,GACxB,OAAO,IAAIyC,EAAEC,EAAG3C,EAAGC,EACrB,EACAyC,EAAE7F,UAAU0uQ,QAAU,SAAU5oQ,EAAGD,EAAG1C,GACpCqzH,EAAE1wH,IAAMA,EAAEi4B,UAAYz0B,KAAK4/P,SAAWpjQ,EAAGwD,KAAKu0B,KAAKh4B,EAAG1C,IAAMmG,KAAKu0B,KAAK/3B,EAAGD,EAC3E,EACAA,EAAE7F,UAAU69B,KAAO,SAAU/3B,EAAGD,GAC9B,IAAIhF,EAAIiF,EAAEyzO,aAAe,CAAC,EAC1B0P,EAAE3/O,KAAM,OAAQ,CACd6B,KAAM/F,YACL,WACD,IAAIyqE,EAAInpD,EAAEtjB,EAAG0C,GACX8pE,EAAIC,EAAE+jK,MACR4N,EAAE3xK,EAAE0pK,aAAa,SAAUzzO,EAAGD,GAC5B0jN,EAAEzjN,KAAOA,EAAEwpM,QAAUzuM,EAAEgF,IAAM6gB,EAAE7lB,EAAEgF,GAAGypM,eAAY,EAClD,IACAz/H,EAAEy/H,QAAQ8hD,YAActrP,EAAE8tO,OAAS9tO,EAAE8tO,MAAMqI,WAAan2O,EAAEwpM,QAAQ8hD,aAAetrP,EAAEwpM,QACnFhmM,KAAK8nP,YAActrP,EACnBwD,KAAKmiD,OAAS,GACdniD,KAAK0tO,QAAU,GACf1tO,KAAKk/P,OAAS,CACZ/3P,EAAG,CAAC,EACJygC,EAAG,CAAC,GAEN5nC,KAAKilQ,gBAAkB,GACvBjlQ,KAAKhE,SAAWO,EAChByD,KAAKkiQ,WAAa,EAClBliQ,KAAK41B,QAAU2wC,EACfvmE,KAAK0pP,KAAO,GACZ1pP,KAAKmrO,OAAS,GACdnrO,KAAK8lB,KAAOtpB,EAAEspB,MAAQrvB,OAAOwL,KAAKzF,EAAEspB,MAAMtvB,OAAS,IAAIqD,EAAE2C,EAAEspB,MAAQpe,EAAEoe,KACrE9lB,KAAK0zO,gBAAkBptK,EAAEotK,iBAAmBl5O,EAC5CwF,KAAKqtO,WAAa/mK,EAAE+mK,WACpBrtO,KAAK85P,mBAAqBxzL,EAAE++L,SAC5BrlQ,KAAKguB,MAAQ88M,EAAEt0O,OACfs0O,EAAEh0O,KAAKkJ,MACP0H,EAAEyiO,aACFviM,EAAE5nC,KAAMsmE,GACRtmE,KAAK2pP,MAAQ,GACb3pP,KAAK40P,MAAQ,GACb50P,KAAKm4P,WAAan4P,KAAKs5P,aAAet5P,KAAKmlQ,cAAgB,EAC3DxlB,EAAE3/O,KAAM,aACRA,KAAKslQ,aACP,GACF,EACA/oQ,EAAE7F,UAAU6uQ,WAAa,SAAU/oQ,GACjC,IAAID,EAAIyD,KAAK41B,QAAQ00M,MACrB/tO,EAAIC,EAAEvD,MAAQsD,EAAEtD,MAAQsD,EAAEixO,kBAC1B,IAAI3zO,EAAIsiN,EAAE5/M,GAMV,OALA1C,GAAKozH,EAAE,IAAI,EAAIjtH,KAAM,CACnBwkQ,iBAAkBjoQ,IAGpB,oBADAA,EAAI,IAAI1C,GACgB06B,MAAQh4B,EAAEg4B,KAAKv0B,KAAMxD,GACtCD,CACT,EACAA,EAAE7F,UAAU8uQ,cAAgB,WAC1BxlQ,KAAKylQ,wBAAwBntP,SAAQ,SAAU9b,GAC7CA,EAAE0vP,QAAU1vP,EAAEvG,OAASuG,EAAEkpQ,oBAAsBlpQ,EAAE03F,QAAQ13F,EAAEo5B,QAAQ3/B,MAAM,EAC3E,GACF,EACAsG,EAAE7F,UAAU+uQ,sBAAwB,WAClC,OAAOzlQ,KAAKmrO,OAAOt4N,SAASxJ,MAAK,SAAU7M,EAAGD,GAC5C,OAAOC,EAAEg/P,aAAahlQ,QAAU+F,EAAEi/P,aAAahlQ,OAAS+F,EAAEi/P,aAAahlQ,OAASgG,EAAEg/P,aAAahlQ,OAAS,CAC1G,GACF,EACA+F,EAAE7F,UAAUivQ,YAAc,SAAUnpQ,GAClC,IAAID,EAAIyD,KAAKmrO,OACb3uO,EAAIA,GAAK,EACT,IAAK,IAAI3C,EAAI0C,EAAE/F,OAAQgG,EAAI3C,IAAK2C,EAAGD,EAAEC,KAAOD,EAAEC,GAAGwxB,MAAQxxB,EAAGD,EAAEC,GAAGnD,KAAOkD,EAAEC,GAAGyjJ,UAC/E,EACA1jJ,EAAE7F,UAAUylQ,aAAe,SAAU3/P,EAAGD,EAAG1C,QACzC,IAAWA,IAAMA,EAAI,CAAC,GACtB,IAAIC,EAAIkG,KAAKo0O,SACX78O,EAAIyI,KAAKk1O,QACT3uK,EAAIvmE,KAAKovP,SACT9oL,EAAItmE,KAAKmvP,QACThoP,EAAInH,KAAK4lQ,kBACTtuQ,EAAI,EACFsF,EAAI,EACR/C,EAAEuiQ,iBAAmBp8P,KAAKo2P,qBAAoD9+P,GAA7BsF,EAAIoD,KAAKo2P,oBAA0BrzM,WAAYnmD,EAAIA,EAAEkmD,WACtG,IAAIlpD,EAAIC,EAAEsxO,OASV,GARA5zO,EAAIsC,EAAEuiQ,iBAAmBj1P,GAAK5P,EAG9BiF,EAAI,CACFiR,EAHFtG,EAAItN,EAAEu6O,SAAW73O,EAAIC,EAInBkL,EAHFnL,EAAI1C,EAAEu6O,SAAW53O,EAAID,EAInB4/P,cAAc,IAEXtiQ,EAAE08P,QAAS,CACd,IAAIh+P,EAAIqB,IAAME,EAAIF,EAAEg7P,MAAQh7P,EAAE+vP,QAAU,CACtCrzO,IAAKiwD,EACLtmE,IAAKstL,MAEPpmL,EAAItN,EAAEgsQ,gBAAkBttQ,EAAE+d,IAAMnP,EAAIo/D,EAAIp/D,IACnCjD,KAAKI,IAAIhN,EAAIivE,EAAGhuE,EAAE+d,MAAQnP,GAAKjD,KAAKqL,IAAIjY,EAAIivE,EAAIhvE,EAAEwkD,MAAOxjD,EAAE+d,IAAM/d,EAAE0H,OAASzD,EAAE2/P,cAAe,EACpG,CAMA,OALCtiQ,EAAEisQ,SAAWtpQ,EAAE2/P,eAAiBriQ,EAAIF,IAAME,EAAIF,EAAE+vP,MAAQ/vP,EAAEg7P,QAAU,CACnEt+O,IAAKgwD,EACLrmE,IAAKstL,MACJ1zL,EAAIA,EAAEgsQ,gBAAkB/rQ,EAAEwc,IAAM/Z,EAAI+pE,EAAI/pE,IAAQ2H,KAAKI,IAAI1H,EAAI0pE,EAAGxsE,EAAEwc,MAAQzc,GAAKqK,KAAKqL,IAAI3S,EAAI0pE,EAAI/uE,EAAE2mD,OAAQpkD,EAAEwc,IAAMxc,EAAEmG,OAASzD,EAAE2/P,cAAe,IACjJxc,EAAE3/O,KAAM,oBAAqBxD,GACtBA,EAAE2/P,YACX,EACA5/P,EAAE7F,UAAUi4P,OAAS,SAAUnyP,GAC7BmjP,EAAE3/O,KAAM,gBACR,IAAIzD,EAAIyD,KAAK85P,mBAAqB95P,KAAK0pP,KAAO1pP,KAAK+lQ,WAAa,GAC9DlsQ,EAAImG,KAAKmrO,OACTrxO,EAAIkG,KAAKy0P,QACTl9P,EAAIyI,KAAKkwO,OACT3pK,EAAIvmE,KAAK8nP,YAAY5X,OACrB5pK,EAAItmE,KAAK2oG,SACTxhG,EAAIm/D,EAAEk4K,WACNlnP,EAAI,GACJsF,EAAIoD,KAAKyyP,WACT74P,EAAIoG,KAAKg6P,cAKX,IAJAh6P,KAAKgmQ,eAAiBhmQ,KAAKgmQ,eAAc,GACzC57B,IAAEpqO,KAAKoxP,aAAc50P,EAAQwD,MAC7BmH,GAAKnH,KAAKimQ,mBACVjmQ,KAAKkmQ,eACA1pQ,EAAI3C,EAAErD,OAAQgG,KAAM,CACvB,IAAIjE,EAAIsB,EAAE2C,GACV,GAAIjE,EAAEq9B,QAAQs0N,UAAY3xP,EAAEq9B,QAAQuwO,iBAAkB,CACpD,IAAIprQ,GAAI,EACR,GAAIxC,EAAEsvP,QAAS,CACb,IAAIxqO,GAAI,EACR,KACF,CACF,CACF,CACA,GAAIA,EAAG,IAAK7gB,EAAI3C,EAAErD,OAAQgG,MAAMjE,EAAIsB,EAAE2C,IAAMo5B,QAAQs0N,WAAa3xP,EAAEsvP,SAAU,GAC7EhuP,EAAEye,SAAQ,SAAU9b,GAClBA,EAAEqrP,UAAY,UAAYrrP,EAAEo5B,QAAQmkO,YAAc,oBAAsBv9P,EAAE4pQ,cAAgB5pQ,EAAE4pQ,eAAgBxsQ,GAAI,GAAM2sE,IAAMA,EAAE8pK,gBAAkB9pK,EAAEo8L,eAAiB/oQ,GAAI,IACvK4C,EAAE2vP,aAAexM,EAAEnjP,EAAG,cACxB,IACA5C,GAAKrC,GAAKA,EAAEq+B,QAAQ6L,UAAYlqC,EAAEmxG,SAAU1oG,KAAKg6P,eAAgB,GACjEj/P,GAAKiF,KAAKqmQ,YACV9pQ,EAAE+b,SAAQ,SAAU9b,GAClBA,EAAEyvP,cACFzvP,EAAE0xP,UACJ,IACAluP,KAAKsmQ,aACL/pQ,EAAE+b,SAAQ,SAAU9b,GAClBA,EAAEqrP,UAAYjrP,GAAI,EACpB,IACAL,EAAE+b,SAAQ,SAAU9b,GAClB,IAAID,EAAIC,EAAE+S,IAAM,IAAM/S,EAAE8H,IACxB9H,EAAE+pQ,SAAWhqQ,IAAMC,EAAE+pQ,OAAShqQ,EAAGjF,EAAER,MAAK,WACtC6oP,EAAEnjP,EAAG,mBAAoBgL,EAAEhL,EAAEkyP,UAAWlyP,EAAEwwP,uBACnCxwP,EAAEkyP,SACX,MACC9xP,GAAK7B,IAAMyB,EAAEmyP,QAChB,IACA/xP,GAAKoD,KAAKwmQ,eACV7mB,EAAE3/O,KAAM,WACRnG,EAAEye,SAAQ,SAAU9b,IACjBI,GAAKJ,EAAEqrP,UAAYrrP,EAAE4zD,SAAW5zD,EAAEmyP,SACnCnyP,EAAE2vP,aAAc,CAClB,IACAryP,GAAKA,EAAE4oC,OAAM,GACb4jC,EAAEs5K,OACFD,EAAE3/O,KAAM,UACR2/O,EAAE3/O,KAAM,UACRmH,GAAKnH,KAAKimQ,kBAAiB,GAC3B3uQ,EAAEghB,SAAQ,SAAU9b,GAClBA,EAAE5F,MACJ,GACF,EACA2F,EAAE7F,UAAUyD,IAAM,SAAUqC,GAC1B,SAASD,EAAEA,GACT,OAAOA,EAAEw/B,KAAOv/B,GAAKD,EAAEq5B,SAAWr5B,EAAEq5B,QAAQmG,KAAOv/B,CACrD,CACA,IAAK,IAAI3C,EAAImG,KAAKmrO,OAAQrxO,EAAI6qQ,EAAG3kQ,KAAK0pP,KAAMntP,IAAMooQ,EAAG3kQ,KAAKmrO,OAAQ5uO,GAAIhF,EAAI,GAAIuC,GAAKvC,EAAIsC,EAAErD,OAAQe,IAAKuC,EAAI6qQ,EAAG9qQ,EAAEtC,GAAG20P,QAAU,GAAI3vP,GAChI,OAAOzC,CACT,EACAyC,EAAE7F,UAAU+vQ,QAAU,WACpB,IAAIjqQ,EAAIwD,KACNzD,EAAIyD,KAAK41B,QACT/7B,EAAI0C,EAAEotP,MAAQob,EAAGxoQ,EAAEotP,OAAS,CAAC,GAC/BptP,EAAIA,EAAEq4P,MAAQmQ,EAAGxoQ,EAAEq4P,OAAS,CAAC,GAC7BjV,EAAE3/O,KAAM,WACRnG,EAAEye,SAAQ,SAAU9b,EAAGD,GACrBC,EAAEwxB,MAAQzxB,EACVC,EAAE0sP,KAAM,CACV,IACA3sP,EAAE+b,SAAQ,SAAU9b,EAAGD,GACrBC,EAAEwxB,MAAQzxB,CACZ,IACA1C,EAAEgZ,OAAOtW,GAAG+b,SAAQ,SAAU/b,GAC5B,IAAI6M,EAAE5M,EAAGD,EACX,IACAojP,EAAE3/O,KAAM,eACV,EACAzD,EAAE7F,UAAU0jQ,kBAAoB,WAC9B,OAAOp6P,KAAKmrO,OAAO70K,QAAO,SAAU95D,EAAGD,GAIrC,OAHAA,EAAEmqQ,sBAAsBpuP,SAAQ,SAAU/b,GACxC45P,EAAE55P,EAAE29P,gBAAiB39P,EAAEolC,WAAanlC,EAAE1F,KAAKyF,EAC7C,IACOC,CACT,GAAG,GACL,EACAD,EAAE7F,UAAUiwQ,kBAAoB,WAC9B,OAAO3mQ,KAAKmrO,OAAO3lN,QAAO,SAAUhpB,GAClC,OAAOA,EAAEmlC,QACX,GACF,EACAplC,EAAE7F,UAAUg8P,SAAW,SAAUl2P,EAAGD,EAAG1C,GACrCmG,KAAK4mQ,iBAAiB,QAASpqQ,GAC/BwD,KAAK4mQ,iBAAiB,WAAYrqQ,GAClCyD,KAAK4mQ,iBAAiB,eAAW,GACjC5mQ,KAAKkmQ,aAAarsQ,EACpB,EACA0C,EAAE7F,UAAUkwQ,iBAAmB,SAAUpqQ,EAAGD,GAC1C,IAAI1C,EAAImG,KACNlG,EAAI,UAAY0C,EAAI,CAClBo+J,MAAO,UACPzxB,SAAUnpI,KAAK41B,QAAQixO,QAAU,OAAS,QACxC,CACFjsG,MAAO,WAEX9gK,EAAIkG,KAAK41B,QAAQp5B,GAAK4gB,GAAGpd,KAAKqtO,YAAc,CAC1Cp+L,MAAOn1C,GACNkG,KAAK41B,QAAQp5B,GAAID,GACpB,IAAIhF,EAAIyI,KAAKxD,GACbjF,GAAKgF,IAAMyD,KAAKxD,GAAKjF,EAAIA,EAAE0lF,WAC3BnjF,IAAMvC,KAAMA,EAAIyI,KAAK2oG,SAAS70E,KAAKh6B,EAAEg6B,KAAM,EAAG,EAAGh6B,EAAE43O,SAAS/yM,KAAK,CAC/DsuG,MAAOnzI,EAAEmzI,MACT,MAAS,cAAgBzwI,EACzB+kD,OAAQznD,EAAEynD,QAAU,IACnBjvC,OAAS4qE,OAAS,SAAU3gF,GAC7B1C,EAAE,CACAkuF,MAAO,WACPgoJ,SAAU,cACVp+L,QAAS,cACTn1C,IAAID,EACR,EAAGyD,KAAKqtO,YAAc91O,EAAE43C,IAAIr1C,EAAEm1C,OAAQjvC,KAAKxD,GAAKjF,EAClD,EACAgF,EAAE7F,UAAUwvQ,aAAe,SAAU1pQ,GACnC,IAAID,EAAI,CAAC,EAAG,EAAG,GACb1C,EAAImG,KAAK2oG,SACT7uG,EAAIkG,KAAKi2P,WACX,CAAC,QAAS,WAAY,WAAW39O,SAAQ,SAAU9b,GACjD,IAII2K,EAJA5P,EAAIyI,KAAKxD,GACX+pE,EAAIvmE,KAAK41B,QAAQp5B,GACjB8pE,EAAIC,EAAEypK,eAAiB,MAGzB,GAFAxzO,EAAI,UAAYA,EAAI,QAAU8pE,GAAK,EAAI,EAAI,QAAUA,EAAI/pE,EAAE,GAAK,EAAI,EAEhEhF,EAAG,CACLyI,KAAKqtO,aAAelmO,EAAIo/D,EAAEt3B,OAASs3B,EAAEt3B,MAAMk6F,UAC3ChiI,EAAItN,EAAEoiP,YAAY90O,EAAG5P,GAAGiF,EACxBjF,EAAE43C,IAAI,CACJ4M,OAAQwqB,EAAExqB,OAASjiD,EAAEiiD,OAASwqB,EAAEupK,aAAe,IAAM,OAEvD,IAAIx4O,EAAI4M,KAAK+c,MAAM1pB,EAAEygP,QAAQzxK,EAAEmrK,SAASxzL,QACxC3mD,EAAE01I,MAAMzlI,EAAE,CACRE,EAAG,WAAa4+D,EAAIn/D,EAAI3K,EAAI2K,EAC5B+2C,OAAQ5mD,GACPivE,IAAI,EAAI,cACXA,EAAE04H,WAAa,QAAU34H,EAAI/pE,EAAE,GAAK2H,KAAKuF,KAAKlN,EAAE,GAAKjF,GAAK,WAAagvE,IAAM/pE,EAAE,GAAK2H,KAAKuF,KAAKlN,EAAE,GAAKjF,IACvG,CACF,GAAG0I,MACHzD,EAAE,IAAM,SAAWyD,KAAK41B,QAAQmyD,MAAMioJ,eAAiB,SAAWzzO,EAAE,IAAMyD,KAAK41B,QAAQmyD,MAAM5lC,QAC7F5lD,EAAE,IAAM,WAAayD,KAAK41B,QAAQ+b,QAAQq+L,gBAAkBzzO,EAAE,IAAMyD,KAAK41B,QAAQ+b,QAAQwQ,QACzF,IAAI5qD,GAAKyI,KAAKuwP,aAAevwP,KAAKuwP,YAAYxuP,KAAK,OAASxF,EAAEwF,KAAK,KACnE/B,KAAKuwP,YAAch0P,EACnBojP,EAAE3/O,KAAM,sBACPA,KAAKyyP,YAAcl7P,IAAMyI,KAAKyyP,WAAazyP,KAAKg6P,cAAgBziQ,EAAGyI,KAAKoxP,aAAe+E,EAAE35P,GAAG,IAAOwD,KAAKyyP,YAAczyP,KAAK2uP,SAC9H,EACApyP,EAAE7F,UAAUowQ,aAAe,WACzB,IAAItqQ,EAAIwD,KAAK41B,QAAQ00M,MACnB/tO,EAAIC,EAAEu/C,MACRv/C,EAAIA,EAAE0hD,OACN,IAAIrkD,EAAImG,KAAK4/P,SACb/hB,EAAEthP,KAAOyD,KAAKwjI,eAAiBohI,EAAG/qQ,EAAG,UACrCgkP,EAAErhP,KAAOwD,KAAK+mQ,gBAAkBnC,EAAG/qQ,EAAG,WACtCmG,KAAK8lP,WAAa5hP,KAAKI,IAAI,EAAG/H,GAAKyD,KAAKwjI,gBAAkB,KAC1DxjI,KAAK2lP,YAAczhP,KAAKI,IAAI,EAAGgyP,EAAG95P,EAAGwD,KAAK8lP,cAAgB,EAAI9lP,KAAK+mQ,gBAAkB/mQ,KAAK+mQ,gBAAkB,KAC9G,EACAxqQ,EAAE7F,UAAUuvQ,iBAAmB,SAAUzpQ,GACvC,IAAID,EAAIyD,KAAK4/P,SACb,GAAIpjQ,EAAG,KAAOD,GAAKA,EAAE0yC,OAAQ1yC,EAAEyqQ,cAAgBl1G,EAAEv1J,EAAGA,EAAEyqQ,oBAAqBzqQ,EAAEyqQ,aAAczqQ,EAAE0qQ,iBAAmB7sQ,EAAE41C,KAAK/b,YAAY13B,GAAIA,EAAE0qQ,gBAAiB,GAAK1qQ,EAAIA,EAAEy3B,gBAAgB,KAAOz3B,GAAKA,EAAE0yC,QACjM70C,EAAE41C,KAAKtY,SAASn7B,IAAMA,EAAEy3B,aAAez3B,EAAE0qQ,gBAAiB,EAAI7sQ,EAAE41C,KAAKt2C,YAAY6C,KAC7E,SAAWqoQ,EAAGroQ,EAAG,WAAW,IAAOA,EAAE2qQ,kBAAgB3qQ,EAAEyqQ,YAAc,CACvE93N,QAAS3yC,EAAE0yC,MAAMC,QACjBgP,OAAQ3hD,EAAE0yC,MAAMiP,OAChBhgD,SAAU3B,EAAE0yC,MAAM/wC,UACjB1B,EAAI,CACL0yC,QAAS,QACThxC,SAAU,UACT3B,IAAMyD,KAAK4/P,WAAapjQ,EAAE0hD,OAAS,GAAI4zG,EAAEv1J,EAAGC,GAAID,EAAE8gD,aAAe9gD,EAAE0yC,MAAM8S,YAAY,UAAW,QAAS,eAC5GxlD,EAAIA,EAAEy3B,cACI55B,EAAE41C,QAEhB,EACAzzC,EAAE7F,UAAUywQ,aAAe,SAAU3qQ,GACnCwD,KAAKy8C,UAAUre,UAAY,yBAA2B5hC,GAAK,GAC7D,EACAD,EAAE7F,UAAU0wQ,aAAe,WACzB,IAGE7gM,EAHEhqE,EAAIyD,KAAK41B,QACX/7B,EAAI0C,EAAE+tO,MACNxwO,EAAIkrQ,IAEJ79P,EAAInH,KAAK4/P,SACXz4P,IAAMnH,KAAK4/P,SAAWz4P,EAAItN,EAAE+lQ,UAC5B1yI,EAAE/lH,KAAOnH,KAAK4/P,SAAWz4P,EAAI/M,EAAE0hC,eAAe30B,IAC9CA,GAAK8lH,EAAE,IAAI,EAAIjtH,MACf,IAAI1I,EAAIutQ,EAAG7kD,EAAE74M,EAAG,0BAChB6wM,EAAE1gN,IAAMwzO,EAAExzO,IAAMwzO,EAAExzO,GAAG85P,aAAetmB,EAAExzO,GAAG2lF,UACzC+iI,EAAE74M,EAAG,wBAAyBnH,KAAKguB,OACnC7mB,EAAEk3B,UAAYioC,EAAEgtK,UAChBz5O,EAAEwtQ,WAAalgQ,EAAEk2C,aAAer9C,KAAKimQ,mBACrCjmQ,KAAK8mQ,eACLxvQ,EAAI0I,KAAK8lP,WACT,IAAIlpP,EAAIoD,KAAK2lP,YAwBb,GAvBA7zF,EAAE3qJ,EAAG,CACHjJ,SAAU,WAEZ8B,KAAKqtO,aAAe9mK,EAAI/+D,EAAE,CACxB21C,SAAU,WACVj/C,SAAU,SACV69C,MAAOzkD,EAAI,KACX4mD,OAAQthD,EAAI,KACZ82I,UAAW,OACXvyF,WAAY,SACZI,OAAQ,EACR,8BAA+B,gBAC/B+lN,WAAY,OACZ,eAAgB,eAChBC,QAAS,QACR1tQ,EAAEo1C,OAAS,CAAC,IACfjvC,KAAKy8C,UAAY3iD,EAAIsmN,EAAE,MAAO,CAC5BrkL,GAAIjiC,GACHysE,EAAGp/D,GACNnH,KAAK0oL,QAAU5uL,EAAEm1C,MAAM4qI,OACvB75K,KAAK2oG,SAAW,IAAK9uG,EAAE8uG,WAAansG,EAAIzB,EAAEs/O,gBAAgBxgP,EAAE8uG,UAAYpxG,GAAGuC,EAAGxC,EAAGsF,OAAG,EAAQ/C,EAAE84O,UAAWp2O,EAAEirQ,WAAajrQ,EAAEirQ,UAAUtpB,UAAWl+O,KAAKqtO,YACpJjD,OAAE,EAAQpqO,MACVA,KAAKmnQ,aAAattQ,EAAEukC,WAChBp+B,KAAKqtO,WAAY,IAAK,IAAIzzO,KAAK2C,EAAEs6O,KAAM72O,KAAK2oG,SAASpoC,WAAWhkE,EAAEs6O,KAAKj9O,SAASoG,KAAK2oG,SAAS41I,SAAS1kP,EAAEo1C,OAC7GjvC,KAAK2oG,SAASo1I,WAAa/9O,KAAKguB,MAChC2xN,EAAE3/O,KAAM,oBACV,EACAzD,EAAE7F,UAAU4vQ,WAAa,SAAU9pQ,GACjC,IAAID,EAAIyD,KAAK0tO,QACX7zO,EAAImG,KAAKmiD,OACTroD,EAAIkG,KAAKuwP,YACXvwP,KAAKynQ,eACL3tQ,EAAE,KAAO+jP,EAAEhkP,EAAE,MAAQmG,KAAKmvP,QAAUjrP,KAAKI,IAAItE,KAAKmvP,QAASr1P,EAAE,GAAKyC,EAAE,KACpEzC,EAAE,KAAO+jP,EAAEhkP,EAAE,MAAQmG,KAAKihK,aAAe/8J,KAAKI,IAAItE,KAAKihK,aAAcnnK,EAAE,GAAKyC,EAAE,KAC9EyD,KAAKkwO,QAAUlwO,KAAKkwO,OAAOhhM,SAAWlvC,KAAKkwO,OAAOszB,cAAc3pQ,EAAG0C,GACnEojP,EAAE3/O,KAAM,cACRxD,GAAKwD,KAAK0nQ,gBACZ,EACAnrQ,EAAE7F,UAAUgxQ,eAAiB,WAC3B,IAAIlrQ,EAAIwD,KACNzD,EAAIC,EAAE0zP,WAAa,CAAC,EAAG,EAAG,EAAG,GAC7Br2P,EAAI2C,EAAEupQ,UACNjsQ,EAAI0C,EAAE2lD,OACN5qD,EAAI,SAAUiF,GACZA,EAAE8b,SAAQ,SAAU9b,GAClBA,EAAE4zD,SAAW5zD,EAAEwzP,WACjB,GACF,EACFxzP,EAAEs9P,mBAAqBviQ,EAAEiF,EAAEktP,MAAQ7vP,GAAKA,EAAErD,QAAUe,EAAEsC,GACtDvC,EAAEghB,SAAQ,SAAUze,EAAGtC,GACrBsmP,EAAE/jP,EAAEvC,MAAQiF,EAAE3C,IAAM0C,EAAEhF,GACxB,IACAiF,EAAEmrQ,cACJ,EACAprQ,EAAE7F,UAAUo0E,OAAS,SAAUtuE,GAC7B,IAAID,EAAIyD,KACNnG,EAAI0C,EAAEq5B,QAAQ00M,MACdxwO,EAAIyC,EAAEqjQ,SACNroQ,EAAIsmP,EAAEhkP,EAAEkiD,QAAU8hM,EAAEhkP,EAAEqkD,QACtBooB,EAAIzsE,EAAEkiD,OAAS6oN,EAAG9qQ,EAAG,SACvBD,EAAIA,EAAEqkD,QAAU0mN,EAAG9qQ,EAAG,UACtBA,EAAI0C,EAAIA,EAAErD,OAASotE,SACZhqE,EAAEk4P,QAAQ2I,cACZ7lQ,GAAMgF,EAAEqrQ,aAActhM,IAAKzsE,GAAMC,IAAMysE,GAAKzsE,IAAMM,IACjDksE,IAAM/pE,EAAEinI,gBAAkB3pI,IAAM0C,EAAEwqQ,kBAAiB5/P,EAAErO,aAAayD,EAAEsrQ,eAAgBtrQ,EAAEsrQ,cAAgBpR,GAAG,WAC3Gl6P,EAAEkgD,WAAalgD,EAAE4hP,aAAQ,OAAQ,GAAQ,EAC3C,GAAG3hP,EAAI,IAAM,IACbD,EAAEinI,eAAiBl9D,EACnB/pE,EAAEwqQ,gBAAkBltQ,EAExB,EACA0C,EAAE7F,UAAUoxQ,UAAY,SAAUtrQ,GAChC,IAAID,EAAIyD,MACR,IAAOxD,GAAKwD,KAAK+nQ,cAAe,IAAOvrQ,GAAKwD,KAAK+nQ,eAAiB/nQ,KAAK+nQ,aAAe/nQ,KAAK+nQ,iBAAmB/nQ,KAAK+nQ,aAAet6P,EAAE84D,EAAG,UAAU,SAAU/pE,GACzJD,EAAEq5B,SAAWr5B,EAAEuuE,OAAOtuE,EACxB,IAAIiR,EAAEzN,KAAM,UAAWA,KAAK+nQ,cAC9B,EACAxrQ,EAAE7F,UAAUynP,QAAU,SAAU3hP,EAAGD,EAAG1C,GACpC,IAAIC,EAAIkG,KACNzI,EAAIuC,EAAE6uG,SACR7uG,EAAEooQ,YAAc,EAChB93B,EAAEvwO,EAAGC,GACLD,EAAItC,EAAEs7O,gBACN/4O,EAAE4rP,eAAiB5rP,EAAE6rP,YACrB7rP,EAAE+rP,cAAgB/rP,EAAEgsP,WACpB,qBAAuBtpP,IAAM1C,EAAE87B,QAAQ00M,MAAMvuL,MAAQv/C,GACrD,qBAAuBD,IAAMzC,EAAE87B,QAAQ00M,MAAMpsL,OAAS3hD,GACtDzC,EAAEgtQ,eACFhtQ,EAAEuzO,aAAexzO,EAAIyN,EAAIwqJ,GAAGh4J,EAAE2iD,UAAW,CACvCV,MAAOjiD,EAAEgsP,WAAa,KACtB5nM,OAAQpkD,EAAE6rP,YAAc,MACvB9rP,GACHC,EAAE6tQ,cAAa,GACfpwQ,EAAE4mP,QAAQrkP,EAAEgsP,WAAYhsP,EAAE6rP,YAAa9rP,GACvCC,EAAE4vP,KAAKpxO,SAAQ,SAAU9b,GACvBA,EAAEqrP,SAAU,EACZrrP,EAAE0xP,UACJ,IACAp0P,EAAEkgQ,eAAgB,EAClBlgQ,EAAE24P,YAAa,EACf34P,EAAEosQ,eACFpsQ,EAAEwsQ,aACFxsQ,EAAE60P,OAAO90P,GACTC,EAAE4rP,eAAiB,KACnB/F,EAAE7lP,EAAG,UACL28P,GAAG,WACD38P,GAAK6lP,EAAE7lP,EAAG,YAAa,MAAM,aACzBA,EAAEooQ,UACN,GACF,GAAG3pQ,EAAEsB,GAAGsmB,SACV,EACA5jB,EAAE7F,UAAUixQ,aAAe,SAAUnrQ,GACnC,IAOElF,EACAsF,EACAhD,EACArB,EAVEgE,EAAIyD,KAAKo0O,SACXv6O,EAAImG,KAAK2oG,SACT7uG,EAAIkG,KAAK8lP,WACTvuP,EAAIyI,KAAK2lP,YACTp/K,EAAIvmE,KAAK41B,QAAQ00M,MACjBhkK,EAAItmE,KAAK0tO,QACTvmO,EAAInH,KAAKmwP,WAKXnwP,KAAKovP,SAAW93P,EAAI4M,KAAK+c,MAAMjhB,KAAKovP,UACpCpvP,KAAKmvP,QAAUvyP,EAAIsH,KAAK+c,MAAMjhB,KAAKmvP,SACnCnvP,KAAKivP,UAAYr1P,EAAIsK,KAAKI,IAAI,EAAGJ,KAAK+c,MAAMnnB,EAAIxC,EAAI0I,KAAKwjF,cACzDxjF,KAAKkvP,WAAa32P,EAAI2L,KAAKI,IAAI,EAAGJ,KAAK+c,MAAM1pB,EAAIqF,EAAIoD,KAAKihK,eAC1DjhK,KAAKgoQ,UAAYzrQ,EAAIhE,EAAIqB,EACzBoG,KAAKioQ,UAAY1rQ,EAAI3C,EAAIrB,EACzByH,KAAKkoQ,gBAAkB3hM,EAAE2hM,iBAAmB,EAC5CloQ,KAAKi2P,WAAap8P,EAAEo8P,WAAa,CAC/BxoP,EAAG64D,EAAE,GACL5+D,EAAG4+D,EAAE,GACLvqB,MAAOjiD,EAAIwsE,EAAE,GAAKA,EAAE,GACpBpoB,OAAQ3mD,EAAI+uE,EAAE,GAAKA,EAAE,IAEvBtmE,KAAKk1O,QAAUr7O,EAAEq7O,QAAU,CACzBznO,EAAGnW,EACHoQ,EAAG9K,EACHm/C,MAAOniD,EACPskD,OAAQ3lD,GAEVgE,EAAI,EAAI2H,KAAKwF,MAAM1J,KAAKkoQ,gBAAkB,GAC1CpuQ,EAAIoK,KAAKuF,KAAKvF,KAAKI,IAAI/H,EAAG4K,EAAE,IAAM,GAClC5P,EAAI2M,KAAKuF,KAAKvF,KAAKI,IAAI/H,EAAG4K,EAAE,IAAM,GAClCnH,KAAK0/P,QAAU,CACbjyP,EAAG3T,EACH4N,EAAGnQ,EACHwkD,MAAO73C,KAAKwF,MAAM1J,KAAKgoQ,UAAY9jQ,KAAKI,IAAI/H,EAAG4K,EAAE,IAAM,EAAIrN,GAC3DokD,OAAQh6C,KAAKI,IAAI,EAAGJ,KAAKwF,MAAM1J,KAAKioQ,UAAY/jQ,KAAKI,IAAI/H,EAAG4K,EAAE,IAAM,EAAI5P,KAE1EiF,IAAMwD,KAAK0pP,KAAKpxO,SAAQ,SAAU9b,GAChCA,EAAE2xP,cACF3xP,EAAE6vP,oBACJ,IAAIxyP,EAAEolP,iBACNU,EAAE3/O,KAAM,oBAAqB,CAC3BmoQ,SAAU3rQ,GAEd,EACAD,EAAE7F,UAAU+wQ,aAAe,WACzB9nB,EAAE3/O,KAAM,gBACR,IAAIxD,EAAIwD,KACNzD,EAAIC,EAAEo5B,QAAQ00M,MAChB,CAAC,SAAU,WAAWhyN,SAAQ,SAAUze,GACtC,IAAIC,EAAIyC,EAAE1C,GACRtC,EAAI0oN,EAAEnmN,GAAKA,EAAI,CAACA,EAAGA,EAAGA,EAAGA,GAC3B,CAAC,MAAO,QAAS,SAAU,QAAQwe,SAAQ,SAAUxe,EAAGysE,GACtD/pE,EAAE3C,GAAG0sE,GAAK4vL,EAAE55P,EAAE1C,EAAIC,GAAIvC,EAAEgvE,GAC1B,GACF,IACAjvE,EAAEghB,SAAQ,SAAU/b,EAAG1C,GACrB2C,EAAED,GAAK45P,EAAE35P,EAAE2lD,OAAOtoD,GAAI2C,EAAEkxO,QAAQ7zO,GAClC,IACA2C,EAAE0zP,WAAa,CAAC,EAAG,EAAG,EAAG,GACzB1zP,EAAE2zP,WAAa,CAAC,EAAG,EAAG,EAAG,EAC3B,EACA5zP,EAAE7F,UAAU8vQ,aAAe,WACzB,IAmBEp8B,EAnBE5tO,EAAIwD,KAAK41B,QAAQ00M,MACnB/tO,EAAIyD,KAAK2oG,SACT9uG,EAAImG,KAAK8lP,WACThsP,EAAIkG,KAAK2lP,YACTpuP,EAAIyI,KAAKqtO,WACT9mK,EAAIvmE,KAAKooQ,YACT9hM,EAAI9pE,EAAE6/J,gBACNl1J,EAAI3K,EAAE6rQ,oBACN/wQ,EAAIkF,EAAE8rQ,oBACN1rQ,EAAIoD,KAAKovP,SACTx1P,EAAIoG,KAAKmvP,QACT52P,EAAIyH,KAAKivP,UACTl0P,EAAIiF,KAAKkvP,WACT7xO,EAAIrd,KAAKk1O,QACT96O,EAAI4F,KAAKy/O,SACTjlP,EAAIwF,KAAK0/P,QACTtjG,EAAIp8J,KAAKuoQ,gBACTtoD,EAAIjgN,KAAKwoQ,eACTlhQ,EAAItH,KAAKyoQ,WAET39B,EAAI,UAEN,GADA1uE,IAAMp8J,KAAKuoQ,gBAAkBnsG,EAAI7/J,EAAEw2D,OAAO9K,SAAS,yBAAyB31C,MAAOw4N,EAAI,QACnFvzO,EAAG,IAAIkW,EAAI28N,EAAIhuE,EAAEi6E,mBAEnBjM,GADA38N,EAAIjR,EAAE0iK,aAAe,IACZ1iK,EAAEglE,OAAS,EAAI,GACxB8E,EAAI,CACF62I,KAAM72I,GAAK,SAET74D,GAAK2uJ,EAAE,mBAAiB91F,EAAEwvK,OAASt5O,EAAEkhK,YAAap3F,EAAE,gBAAkB74D,GAC1E2uJ,EAAEz9H,KAAK2nC,GAAG9E,OAAOhlE,EAAEglE,QAErB46F,EAAE0uE,GAAG,CACHr9N,EAAG28N,EAAI,EACP1iO,EAAG0iO,EAAI,EACPruL,MAAOliD,EAAIuwO,EAAI38N,EAAI,EACnBywC,OAAQpkD,EAAIswO,EAAI38N,EAAI,EACpBrT,EAAGoC,EAAE8wO,eAEPxC,EAAI,UACJ7qB,IAAM6qB,EAAI,OAAQ9qO,KAAKwoQ,eAAiBvoD,EAAI1jN,EAAEw2D,OAAO9K,SAAS,8BAA8B31C,OAC5F2tM,EAAE6qB,GAAGztN,GACL9lB,IAAM0oN,EAAEthL,KAAK,CACXw+K,KAAMh2M,GAAK,SACVq6D,OAAOhlE,EAAEksQ,YAAapxQ,IAAMivE,GAAKjvE,IAAMivE,EAAE5nC,KAAK,SAAW4nC,EAAE5nC,KAAK,OAAQrnC,GAAIivE,EAAEvgB,QAAQ3oC,IAAMrd,KAAKooQ,YAAc7rQ,EAAEimC,MAAMlrC,EAAGsF,EAAGhD,EAAGrB,EAAGwC,GAAGuX,QACzIlY,EAAIA,EAAE4rD,QAAQ,CACZjK,MAAOvhD,EAAEuhD,MACTmC,OAAQ1jD,EAAE0jD,SACPl+C,KAAKy/O,SAAWljP,EAAEkjP,SAASjlP,GAChCswO,EAAI,UACJxjO,IAAMwjO,EAAI,OAAQ9qO,KAAKyoQ,WAAanhQ,EAAI/K,EAAEw2D,OAAO9K,SAAS,0BAA0BtpB,KAAK,CACvF4iB,OAAQ,IACPjvC,OACH/a,GAAK+P,EAAEq3B,KAAK,CACVm3M,OAAQt5O,EAAEqxO,gBACV,eAAgBrxO,EAAE0rQ,iBAAmB,EACrC/qD,KAAM,SAER71M,EAAEwjO,GAAGxjO,EAAE8uO,MAAM,CACX3oO,EAAG7Q,EACH8K,EAAG9N,EACHmiD,MAAOxjD,EACP2lD,OAAQnjD,IACNuM,EAAE+uO,gBACNr2O,KAAKyyP,YAAa,EAClB9S,EAAE3/O,KAAM,oBACV,EACAzD,EAAE7F,UAAUiyQ,eAAiB,WAC3B,IAGE7uQ,EACAvC,EACAgvE,EALE/pE,EAAIwD,KACNzD,EAAIC,EAAEo5B,QAAQ00M,MACdzwO,EAAI2C,EAAEo5B,QAAQu1M,OAIhB,CAAC,WAAY,UAAW,SAAS7yN,SAAQ,SAAUguD,GAGjD,IAFA/uE,EAAI4kN,EAAE5/M,EAAEtD,MAAQsD,EAAEixO,mBAClBjnK,EAAIhqE,EAAE+pE,IAAM/uE,GAAKA,EAAEb,UAAU4vE,GACxBxsE,EAAID,GAAKA,EAAErD,QAAS+vE,GAAKzsE,MAAOvC,EAAI4kN,EAAEtiN,EAAEC,GAAGb,QAAU1B,EAAEb,UAAU4vE,KAAOC,GAAI,GACjF/pE,EAAE8pE,GAAKC,CACT,GACF,EACAhqE,EAAE7F,UAAUkyQ,WAAa,WACvB,IAAIpsQ,EAAIwD,KACNzD,EAAIC,EAAE2uO,OACR5uO,EAAE+b,SAAQ,SAAU9b,GAClBA,EAAEg/P,aAAahlQ,OAAS,CAC1B,IACA+F,EAAE+b,SAAQ,SAAU/b,GAClB,IAAI1C,EAAI0C,EAAEq5B,QAAQwzN,SAClBl8H,EAAErzH,KAAOA,EAAI,cAAgBA,EAAI2C,EAAE2uO,OAAO5uO,EAAEyxB,MAAQ,GAAKxxB,EAAErC,IAAIN,KAAOA,EAAEqsP,eAAiB3pP,IAAM1C,EAAE2hQ,aAAa1kQ,KAAKyF,GAAIA,EAAE2pP,aAAersP,EAAGA,EAAE6rQ,oBAAsBnpQ,EAAEssQ,wBAAyBtsQ,EAAE6zD,QAAU+lM,EAAE55P,EAAEq5B,QAAQw6B,QAASv2D,EAAE+7B,QAAQw6B,QAAS7zD,EAAE6zD,SACtP,IACAuvL,EAAE3/O,KAAM,kBACV,EACAzD,EAAE7F,UAAUoyQ,aAAe,WACzB9oQ,KAAKmrO,OAAO7yN,SAAQ,SAAU9b,GAC5BA,EAAEkzN,YACFlzN,EAAEksG,QACJ,GACF,EACAnsG,EAAE7F,UAAUqyQ,aAAe,WACzB,IAAIvsQ,EAAIwD,KACNzD,EAAIC,EAAEo5B,QAAQ0wI,OAChB/pK,EAAE4hF,OAAS5hF,EAAE4hF,MAAM7lE,SAAQ,SAAUze,GACnC,IAAIC,EAAI0N,EAAEjL,EAAE0yC,MAAOp1C,EAAEo1C,OACnB13C,EAAIstQ,EAAG/qQ,EAAEooD,MAAQ1lD,EAAE4yP,SACnB7oL,EAAIs+L,EAAG/qQ,EAAE4jC,KAAOlhC,EAAE2yP,QAAU,UACvBr1P,EAAEooD,YACFpoD,EAAE4jC,IACTlhC,EAAEmsG,SAAS70E,KAAKj6B,EAAEigD,KAAMviD,EAAGgvE,GAAG5nC,KAAK,CACjC4iB,OAAQ,IACPpS,IAAIr1C,GAAGwY,KACZ,GACF,EACA/V,EAAE7F,UAAUgyG,OAAS,WACnB,IAAIlsG,EAAIwD,KAAK0pP,KACXntP,EAAIyD,KAAK+lQ,UACTlsQ,EAAImG,KAAK2oG,SACT7uG,EAAIkG,KAAK41B,QACTr+B,EAAI,SAAUiF,GACZA,EAAE8b,SAAQ,SAAU9b,GAClBA,EAAE4zD,SAAW5zD,EAAEksG,QACjB,GACF,EACAniC,EAAI,EACNvmE,KAAK0yP,WACL1yP,KAAKkwO,OAAS,IAAI3F,EAAEvqO,KAAMlG,EAAEo2O,QAC5BlwO,KAAKqmQ,WAAarmQ,KAAKqmQ,YACvBrmQ,KAAKsmQ,YAAW,GAChBtmQ,KAAK2nQ,eACL7tQ,EAAIkG,KAAKivP,UACTzyP,EAAEb,MAAK,SAAUa,GACf,GAAIA,EAAEgqP,OAAShqP,EAAE4zD,SAAW5zD,EAAEo5B,QAAQ0wI,OAAO7kI,SAAWjlC,EAAE2uO,OAAO30O,OAAQ,OAAO+vE,EAAI,IAAI,CAC1F,IACA,IAAID,EAAItmE,KAAKkvP,WAAahrP,KAAKI,IAAItE,KAAKkvP,WAAa3oL,EAAG,GACxD/pE,EAAE8b,SAAQ,SAAU9b,GAClBA,EAAE0xP,UACJ,IACAluP,KAAK0nQ,iBACL,IAAIvgQ,EAAI,IAAMrN,EAAIkG,KAAKivP,UACrB33P,EAAI,KAAOgvE,EAAItmE,KAAKkvP,YAClB/nP,GAAK7P,KAAGkF,EAAE8b,SAAQ,SAAU9b,IAC7BA,EAAEgqP,OAASr/O,IAAM3K,EAAEgqP,OAASlvP,IAAMkF,EAAEowP,iBAAgB,EACvD,IAAI5sP,KAAKsmQ,cACTtmQ,KAAKwmQ,eACLxmQ,KAAK85P,mBAAqBviQ,EAAEiF,GAAKD,GAAKA,EAAE/F,QAAUe,EAAEgF,GACpDyD,KAAKgpQ,cAAgBhpQ,KAAKgpQ,YAAcnvQ,EAAE0sE,EAAE,gBAAgB5nC,KAAK,CAC/D4iB,OAAQ,IACPjvC,OACHtS,KAAK8oQ,eACL9oQ,KAAK+oQ,eACL/oQ,KAAKipQ,aACLjpQ,KAAKgmQ,eAAiBhmQ,KAAKgmQ,gBAC3BhmQ,KAAKoxP,aAAc,CACrB,EACA70P,EAAE7F,UAAUuyQ,WAAa,SAAUzsQ,GACjC,IAAID,EAAIyD,KACNnG,EAAIujB,GAAE,EAAIpd,KAAK41B,QAAQ+7M,QAASn1O,GAClC3C,EAAE4nC,UAAYzhC,KAAK2xO,UAAY3xO,KAAK2xO,QAAU3xO,KAAK2oG,SAAS70E,KAAKj6B,EAAEi6B,MAAQ9zB,KAAKkpQ,YAAc,IAAK,EAAG,GAAGjhN,SAAS,sBAAsBtV,GAAG,SAAS,WAClJ94C,EAAE0nC,OAASglC,EAAEtlC,SAASM,KAAO1nC,EAAE0nC,KACjC,IAAG5C,KAAK,CACNsuG,MAAOpzI,EAAEsjD,SAAS8vF,MAClB1rF,OAAQ,IACNhlD,EAAE8wO,YAAcrtO,KAAK2xO,QAAQxiM,IAAIt1C,EAAEo1C,OAAQjvC,KAAK2xO,QAAQr/N,MAAM26H,MAAMpzI,EAAEsjD,UAAWn9C,KAAK2xO,QAAQz0J,OAAS,SAAU1gF,GACnHD,EAAEo1O,QAAUp1O,EAAEo1O,QAAQ10J,UACtB1gF,EAAE0sQ,WAAWzsQ,EACf,EACF,EACAD,EAAE7F,UAAUumF,QAAU,WACpB,IAKE1W,EALE/pE,EAAIwD,KACNzD,EAAIC,EAAEktP,KACN7vP,EAAI2C,EAAE2uO,OACNrxO,EAAI0C,EAAEigD,UACNllD,EAAIuC,GAAKA,EAAEk6B,WAOb,IALA2rN,EAAEnjP,EAAG,WACLA,EAAEmsG,SAASgqI,UAAY1sO,EAAE6kO,EAAGtuO,GAAKsuO,EAAEtuO,EAAEwxB,YAAS,EAC9CtmB,EAAEyiO,aACF3tO,EAAEojQ,SAASpjO,gBAAgB,yBAC3BsoO,EAAGtoQ,GACE+pE,EAAIhqE,EAAE/F,OAAQ+vE,KAAMhqE,EAAEgqE,GAAKhqE,EAAEgqE,GAAG0W,UAErC,IADAj9E,KAAKmpQ,UAAYnpQ,KAAKmpQ,SAASlsL,SAAWj9E,KAAKmpQ,SAASlsL,UACnD1W,EAAI1sE,EAAErD,OAAQ+vE,KAAM1sE,EAAE0sE,GAAK1sE,EAAE0sE,GAAG0W,UACrC,kKAAkKhvE,MAAM,KAAKqK,SAAQ,SAAU/b,GAC7L,IAAI1C,EAAI2C,EAAED,GACV1C,GAAKA,EAAEojF,UAAYzgF,EAAED,GAAK1C,EAAEojF,UAC9B,IACAnjF,IAAMA,EAAEukC,UAAYioC,EAAEgtK,UAAWwxB,EAAGhrQ,GAAIvC,GAAKy3O,EAAEl1O,IAC/Co+O,EAAE17O,GAAG,SAAUD,EAAG1C,UACT2C,EAAE3C,EACX,GACF,EACA0C,EAAE7F,UAAU4uQ,YAAc,WACxB,IAAI9oQ,EAAIwD,KACNzD,EAAIC,EAAEo5B,QACHp5B,EAAE4sQ,kBAAmB5sQ,EAAE4sQ,oBAC1B5sQ,EAAE4qQ,eACF5qQ,EAAEirQ,eACFjrQ,EAAEmrQ,eACFnrQ,EAAEmsQ,iBACFnsQ,EAAEiqQ,WACDppP,EAAE9gB,EAAE4uO,QAAU5uO,EAAE4uO,OAAS,IAAI7yN,SAAQ,SAAU/b,GAC9CC,EAAE+oQ,WAAWhpQ,EACf,IACAC,EAAEosQ,aACFpsQ,EAAEgpQ,gBACF7lB,EAAEnjP,EAAG,gBACL4/J,IAAMouE,EAAE17B,aAAetyM,EAAEi4P,QAAU,IAAIjqB,EAAEhuO,EAAGD,GAAKC,EAAEi4P,QAAU,IAAIr4F,EAAE5/J,EAAGD,IACtEC,EAAEksG,SACFlsG,EAAEi4P,QAAQY,mBACL74P,EAAEmsG,SAASm1I,UAAathP,EAAEgjP,WAAWhjP,EAAE3D,SAC5C2D,EAAEypQ,kBAAiB,GAEvB,EACA1pQ,EAAE7F,UAAUmC,OAAS,WACnBmH,KAAKq4M,UAAUxlM,OAAO,CAAC7S,KAAKhE,WAAWsc,SAAQ,SAAU9b,GACvDA,GAAK,qBAAuBwD,KAAKguB,OAASxxB,EAAEX,MAAMmE,KAAM,CAACA,MAC3D,GAAGA,MACH2/O,EAAE3/O,KAAM,QACR2/O,EAAE3/O,KAAM,UACR69O,EAAE79O,KAAKguB,QAAUhuB,KAAK8nQ,UAAU9nQ,KAAK41B,QAAQ00M,MAAMx/J,QACnD9qE,KAAKw/O,WAAY,CACnB,EACAjjP,EAAE7F,UAAU2yQ,UAAY,SAAU7sQ,EAAGD,EAAG1C,GACtC,IACEtC,EADEuC,EAAIkG,KAcR,OAZAxD,IAAMD,EAAI45P,EAAE55P,GAAG,GAAKojP,EAAE7lP,EAAG,YAAa,CACpC87B,QAASp5B,IACR,WACDjF,EAAIuC,EAAEyrQ,WAAW/oQ,GACjB1C,EAAEkgQ,eAAgB,EAClBlgQ,EAAE8uQ,aACFrxQ,EAAEmuQ,oBAAsBnuQ,EAAE28F,QAAQ13F,EAAEvG,MAAM,GAC1C0pP,EAAE7lP,EAAG,iBAAkB,CACrBqxO,OAAQ5zO,IAEVgF,GAAKzC,EAAE60P,OAAO90P,EAChB,KACOtC,CACT,EACAgF,EAAE7F,UAAU4yQ,QAAU,SAAU9sQ,EAAGD,EAAG1C,EAAGC,GACvC,OAAOkG,KAAKupQ,WAAWhtQ,EAAI,QAAU,QAAS,CAC5C0nL,KAAMznL,EACNmyP,OAAQ90P,EACRoqD,UAAWnqD,GAEf,EACAyC,EAAE7F,UAAU8yQ,aAAe,SAAUhtQ,EAAGD,EAAG1C,GACzC,OAAOmG,KAAKupQ,WAAW,YAAa,CAClCtlF,KAAMznL,EACNmyP,OAAQpyP,EACR0nD,UAAWpqD,GAEf,EACA0C,EAAE7F,UAAU6yQ,WAAa,SAAU/sQ,EAAGD,GAMpC,OALAC,EAAI,IAAI4M,EAAEpJ,KAAMod,EAAE7gB,EAAE0nL,KAAM,CACxBj2J,MAAOhuB,KAAKxD,GAAGhG,OACf0yP,IAAK,UAAY1sP,KAEnB25P,EAAE55P,EAAEoyP,QAAQ,IAAO3uP,KAAK2uP,OAAOpyP,EAAE0nD,WAC1BznD,CACT,EACAD,EAAE7F,UAAU+yQ,YAAc,SAAUjtQ,GAClC,IAAID,EAAIyD,KACNnG,EAAI0C,EAAEq5B,QACN97B,EAAID,EAAE2hG,QACNjkG,EAAI,WACFgvE,GAAKurF,EAAEvrF,EAAG,CACRrkB,KAAM3lD,EAAE6yP,SAAW,KACnB1xN,IAAKnhC,EAAE4yP,QAAU,KACjBpzM,MAAOx/C,EAAE0yP,UAAY,KACrB/wM,OAAQ3hD,EAAE2yP,WAAa,MAE3B,EACA3oL,EAAIhqE,EAAEmtQ,WACNviQ,EAAI5K,EAAEotQ,YACRpjM,IAAMhqE,EAAEmtQ,WAAanjM,EAAI65I,EAAE,MAAO,CAChChiL,UAAW,gDACV,KAAM7hC,EAAEkgD,YACXt1C,IAAM5K,EAAEotQ,YAAcxiQ,EAAIi5M,EAAE,OAAQ,CAClChiL,UAAW,4BACV,KAAMmoC,GAAI94D,EAAElR,EAAG,SAAUhF,IAC5BgvE,EAAEnoC,UAAY,qBACdkoC,EAAE+sK,eAAelsO,EAAGgvP,EAAE35P,EAAG3C,EAAEsuB,KAAKqzE,QAAS,KACzCj/F,EAAE8wO,aAAev7E,EAAEvrF,EAAG/+D,EAAE1N,EAAEm1C,MAAO,CAC/BsS,OAAQ,MACLuwG,EAAE3qJ,EAAGrN,EAAEk3O,YAAaz0O,EAAEqtQ,eAAiB93G,EAAEvrF,EAAG,CAC/ClmB,QAAS,EACTnR,QAAS,KACP5nC,EAAEi/D,EAAG,CACPlmB,QAASvmD,EAAEm1C,MAAMoR,SAAW,IAC3B,CACDlgC,SAAUrmB,EAAE+vQ,cAAgB,MAE9BttQ,EAAEqtQ,cAAe,EACjBryQ,GACF,EACAgF,EAAE7F,UAAUozQ,YAAc,WACxB,IAAIttQ,EAAIwD,KAAK41B,QACXr5B,EAAIyD,KAAK0pQ,WACXntQ,IAAMA,EAAE6hC,UAAY,+CAAgDp+B,KAAKqtO,YAAc/lO,EAAE/K,EAAG,CAC1F8jD,QAAS,GACR,CACDlgC,SAAU3jB,EAAEg/F,QAAQuuK,cAAgB,IACpChlN,SAAU,WACR+sG,EAAEv1J,EAAG,CACH2yC,QAAS,QAEb,KAEFlvC,KAAK4pQ,cAAe,CACtB,EACArtQ,EAAE7F,UAAUwmF,OAAS,SAAU1gF,EAAGD,EAAGzC,EAAGvC,GACtC,IASEqF,EACArE,EAVEguE,EAAIvmE,KACNsmE,EAAI,CACFqrK,QAAS,aACT5pJ,MAAO,WACPgoJ,SAAU,cACVp+L,QAAS,cAEXxqC,EAAI3K,EAAEwtQ,oBACN1yQ,EAAI,GAGNqoP,EAAEp5K,EAAG,SAAU,CACb3wC,QAASp5B,IAEX2K,GAAKo/D,EAAEy/L,eAAc,GAAI,GACzBxpQ,EAAIypE,EAAEzpE,EAAG+pE,EAAE3wC,SACX2wC,EAAEuhL,YAAc1qO,EAAEmpD,EAAEuhL,YAAatrP,GACjC,IAAIzB,EAAIyB,EAAE8tO,MACV,GAAIvvO,EAAG,CAIL,GAHAqiB,GAAE,EAAImpD,EAAE3wC,QAAQ00M,MAAOvvO,GACvB,cAAeA,GAAKwrE,EAAE4gM,aAAapsQ,EAAEqjC,WACrC,WAAYrjC,GAAKwrE,EAAEuhM,UAAU/sQ,EAAE+vE,QAC3B,aAAc/vE,GAAK,UAAWA,GAAK,SAAUA,EAAG,CAClDwrE,EAAEoiM,iBACF,IAAItrP,GAAI,CACV,CACA,eAAgBtiB,IAAMsiB,GAAI,GAC1B,WAAYtiB,GAAK6sC,EAAE5nC,KAAMjF,GACzBm9O,EAAEn9O,GAAG,SAAUyB,EAAGD,IACf,IAAMgqE,EAAE0jM,yBAAyBn9P,QAAQ,SAAWvQ,KAAOK,GAAI,IAC/D,IAAM2pE,EAAE2jM,qBAAqBp9P,QAAQvQ,KAAOgqE,EAAEksL,YAAa,IAC3D,IAAMlsL,EAAE4jM,mBAAmBr9P,QAAQvQ,KAAO4K,EAAIo/D,EAAEksL,YAAa,EAAKl6P,GAAI,EACzE,KACCguE,EAAE8mK,YAActyO,EAAEk0C,OAASs3B,EAAEoiC,SAAS41I,SAASh4K,EAAE3wC,QAAQ00M,MAAMr7L,OAAS,CAAC,EAC5E,EACCs3B,EAAE8mK,YAAc7wO,EAAE69J,SAAWr6J,KAAK41B,QAAQykI,OAAS79J,EAAE69J,QACtD79J,EAAEspB,OAAS9lB,KAAK8lB,OAASlsB,IAAMoG,KAAK8lB,KAAO,IAAIjsB,EAAE2C,EAAEspB,OAAQ1I,GAAE,EAAImpD,EAAE3wC,QAAQ9P,KAAMtpB,EAAEspB,OACnFoyN,EAAE17O,GAAG,SAAUD,EAAG1C,GACZ0sE,EAAE1sE,IAAM,oBAAsB0sE,EAAE1sE,GAAGqjF,OAAQ3W,EAAE1sE,GAAGqjF,OAAO3gF,GAAG,GAAa,oBAAsBgqE,EAAED,EAAEzsE,IAAK0sE,EAAED,EAAEzsE,IAAI0C,GAAQ,WAAa1C,IAAM,IAAM0sE,EAAE6jM,sBAAsBt9P,QAAQjT,IAAMujB,GAAE,EAAImpD,EAAE3wC,QAAQ/7B,GAAI2C,EAAE3C,IAC/M,UAAYA,IAAM,IAAM0sE,EAAE0jM,yBAAyBn9P,QAAQjT,KAAO+C,GAAI,EACxE,IACAoD,KAAKoqQ,sBAAsB9xP,SAAQ,SAAU/b,GAC3C,GAAIC,EAAED,GAAI,CACR,IAAI1C,EAAI,GACR0sE,EAAEhqE,GAAG+b,SAAQ,SAAU9b,EAAGD,GACxBC,EAAEo5B,QAAQy0O,YAAcxwQ,EAAE/C,KAAKq/P,EAAE35P,EAAEo5B,QAAQ5H,MAAOzxB,GACpD,IACAwoQ,EAAGvoQ,EAAED,IAAI+b,SAAQ,SAAU9b,EAAGjF,GAC5B,IACE4P,EADEm/D,EAAIu3K,EAAErhP,EAAEu/B,IAEZuqC,IAAMn/D,EAAIo/D,EAAEpsE,IAAIqC,EAAEu/B,MACjB50B,GAAKo/D,EAAEhqE,KAAO4K,EAAIo/D,EAAEhqE,GAAG1C,EAAIA,EAAEtC,GAAKA,KAAO+uE,GAAKu3K,EAAE12O,EAAEyuB,QAAQmG,MAAQ50B,OAAI,GACvEA,GAAKA,EAAE4hP,OAASxsP,IAAM4K,EAAE+1E,OAAO1gF,GAAG,GAAK1C,IAAMqN,EAAEmjQ,SAAU,KACxDnjQ,GAAKrN,GAAKysE,EAAEgkM,oBAAoBhuQ,KAAOgqE,EAAEgkM,oBAAoBhuQ,GAAG,GAAGV,MAAM0qE,EAAG,CAAC/pE,GAAGqW,OAAO0zD,EAAEgkM,oBAAoBhuQ,GAAG,IAAM,IAAIsW,OAAO,EAAC,KAAMy3P,SAAU,EACrJ,IACAxwQ,GAAKysE,EAAEhqE,GAAG+b,SAAQ,SAAU9b,GAC1BA,EAAE8tQ,SAAW9tQ,EAAEo5B,QAAQy0O,kBAAoB7tQ,EAAE8tQ,QAAUhzQ,EAAER,KAAK0F,EAChE,GACF,CACF,IACAlF,EAAEghB,SAAQ,SAAU9b,GAClBA,EAAE8tO,OAAS9tO,EAAE0sC,QAAU1sC,EAAE0sC,QAAO,EAClC,IACA7rB,GAAKkpD,EAAEmjL,KAAKpxO,SAAQ,SAAU9b,GAC5BA,EAAE0gF,OAAO,CAAC,GAAG,EACf,IACAtgF,GAAK2pE,EAAEk/L,wBAAwBntP,SAAQ,SAAU9b,GAC/CA,EAAE8tO,OAAS9tO,EAAE0gF,OAAO,CAAC,GAAG,EAC1B,GAAGl9E,MACHqd,EAAItiB,GAAKA,EAAEghD,MACXhhD,EAAIA,IAAMmyH,EAAEnyH,EAAEmjD,QAAUo4M,EAAGv7P,EAAEmjD,OAAQ7gC,GAAKkpD,EAAEu/K,YAAc/qP,EAAEmjD,QAC5D3lD,GAAKy/M,EAAE36L,IAAMA,IAAMkpD,EAAEu/K,YAAc9tC,EAAEj9M,IAAMA,IAAMwrE,EAAEo/K,YAAcp/K,EAAE43K,QAAQ9gO,EAAGtiB,EAAGxD,GAAK4+P,EAAE55P,GAAG,IAAOgqE,EAAEooL,OAAOp3P,GAC3GooP,EAAEp5K,EAAG,cAAe,CAClB3wC,QAASp5B,EACTmyP,OAAQpyP,EACR0nD,UAAW1sD,GAEf,EACAgF,EAAE7F,UAAU8zQ,YAAc,SAAUhuQ,EAAGD,GACrCyD,KAAK4mQ,iBAAiB,WAAYpqQ,GAClCwD,KAAKkmQ,aAAa3pQ,EACpB,EACAA,EAAE7F,UAAU+zQ,WAAa,SAAUjuQ,EAAGD,GACpCyD,KAAK4mQ,iBAAiB,UAAWpqQ,GACjCwD,KAAKkmQ,aAAa3pQ,EACpB,EACAA,EAAE7F,UAAUg0Q,cAAgB,WAC1B,SAASluQ,IACPD,EAAEouQ,SACJ,CACA,IAAIpuQ,EAAIyD,KACNnG,EAAIC,EAAEquB,KACN5wB,EAAIgF,EAAEq5B,QAAQ00M,MAAMqD,gBACpBpnK,EAAIhvE,EAAEmqO,MACNp7J,EAAIC,EAAEk0L,OACNtzP,EAAI,UAAY5P,EAAEqzQ,YAAc,eAAiBrzQ,EAAEqzQ,WAAa,KAAO,oBACzEjrB,EAAE3/O,KAAM,sBAAuB,MAAM,WACnCzD,EAAEoxO,gBAAkBpxO,EAAEosG,SAAS5mE,OAAOloC,EAAE81O,UAAW,KAAM,KAAMnzO,EAAG+pE,EAAGD,GAAKA,EAAEzS,OAAOl1B,KAAK,CACtFsuG,MAAO11I,EAAE4lD,SAAS8vF,MAClBllD,MAAOluF,EAAE+1O,iBACR3nL,SAAS,yBAAyB31C,MAAM26H,MAAM11I,EAAE4lD,UAAU,EAAIh2C,EACnE,IACAw4O,EAAE3/O,KAAM,qBACV,EACAzD,EAAE7F,UAAUi0Q,QAAU,WACpBhrB,EAAE3/O,KAAM,YAAa,CACnB6qQ,gBAAgB,GACf7qQ,KAAKwhD,KACV,EACAjlD,EAAE7F,UAAU8qD,KAAO,SAAUhlD,GAC3B,IAIE+pE,EAJEhqE,EAAIyD,KACNnG,EAAI0C,EAAEk4P,QACN36P,EAAIyC,EAAE63O,SAAWv6O,EAAEkiQ,WAAaliQ,EAAEmiQ,WAClCzkQ,GAAI,GAELiF,GAAKA,EAAEquQ,gBAAkBtuQ,EAAEmtP,KAAKpxO,SAAQ,SAAU9b,GACjD+pE,EAAI/pE,EAAEglD,MACR,IAAI3nD,EAAEolQ,WAAY,GAAMziQ,EAAEmtP,MAAM92O,OAAOrW,EAAEo4P,OAAOt8O,SAAQ,SAAU9b,GAChE,IAAI8pE,EAAI9pE,EAAEynL,KACR98K,EAAI5K,EAAE63O,SAAW9tK,EAAEpkB,KAAOokB,EAAE5oC,IAC5BpmC,EAAIiF,EAAE63O,SAAWjtO,EAAIm/D,EAAEvqB,MAAQ50C,EAAIm/D,EAAEpoB,OACrCthD,EAAI0pE,EAAEohL,QACN9tP,GAAI,IACDgD,GAAK9C,GAAKqN,GAAKrN,GAAKxC,GAAKsF,IAAMihP,EAAE/jP,MAAIF,GAAI,GAC9CC,EAAE+C,EAAI,QAAU,UAAYhD,IAAM2sE,EAAID,EAAE9kB,KAAKhlD,EAAE+S,IAAK/S,EAAE8H,KAAMgiE,EAAEyoL,aAAex3P,GAAI,GACnF,IACA,IAAI+uE,EAAI/pE,EAAEoxO,gBACVp2O,IAAM+uE,EAAI/pE,EAAEmuQ,iBAAmBnzQ,GAAK0oN,EAAE35I,KAAO/pE,EAAEoxO,gBAAkBrnK,EAAE2W,WACnE1W,GAAKhqE,EAAEoyP,OAAOwH,EAAE55P,EAAEq5B,QAAQ00M,MAAMrmL,UAAWznD,GAAKA,EAAEynD,UAAW,IAAM1nD,EAAE47P,YACvE,EACA57P,EAAE7F,UAAU+lQ,IAAM,SAAUjgQ,EAAGD,GAC7B,IAAI1C,EAAImG,KACNlG,EAAID,EAAE88P,YACRp6P,EAAI,kBAAoBA,EAAIA,EAAI,CAC9BklC,QAASllC,EACTtD,KAAM,KAER,IAAI1B,EAAIsC,EAAE+7B,QAAQ00M,MAChB/jK,EAAI1sE,EAAE+7B,QAAQk1O,eAAiBjxQ,EAAE+7B,QAAQk1O,cAAcrpO,QACzDlqC,GAAKA,EAAE61O,UAAY71O,EAAE61O,QAAU7wO,GAC/B,IACE4K,EADEm/D,EAAI/pE,EAAEtD,KAEV0mP,EAAE3/O,KAAM,MAAO,CACb01C,cAAel5C,IACd,WACD1C,GAAKA,EAAEwe,SAAQ,SAAU9b,GACvBA,EAAEmiP,UACJ,IACA,IAAIpiP,EAAI1C,EAAE8vP,MACV,OAASrjL,EAAI/pE,EAAIA,EAAEsW,OAAOhZ,EAAE+6P,OAAS,MAAQtuL,IAAM/pE,EAAI1C,EAAE+6P,OACzD,IAAIr9P,EAAI,CAAC,EACTgF,EAAE+b,SAAQ,SAAU/b,GAClB,GAAIA,EAAEq5B,QAAQsrN,iBAAmB3kP,EAAEq5B,QAAQy0O,WAAY,CACrD,IAAIvwQ,EAAIyC,EAAEiqP,MACRlvP,EAAIkF,EAAE1C,EAAI,SAAW,UAEnB8C,EAAI/C,EADRC,EAAIA,EAAI,aAAe,cAErBF,EAAI2C,EAAEgwP,gBAAkB,EACxBh0P,EAAIgE,EAAE2lP,WAAaroP,EAAEu6O,WAAa73O,EAAE2lP,UAAYroP,EAAEu6O,UAAY,EAAI,EAClEr5O,EAAIwB,EAAEywP,cACN3vO,EAAI9gB,EAAEqzM,QAAQhzM,EAAItF,GAAG,GAAMsC,EAAIrB,EAC/B6B,EAAImC,EAAEqzM,QAAQhzM,EAAIL,EAAE0D,IAAM3I,GAAG,IAAOsC,EAAIrB,GAAKgE,EAAEmrP,SAAWnrP,EAAE2rP,mBAAqB,GACjF1tP,EAAIJ,EAAIijB,EACV9kB,EAAIgE,EAAEqxP,qBACNhxP,EAAIpC,EAAIJ,EAAIijB,EACZA,EAAI7iB,EAAI6iB,EAAIjjB,EACZ,IAAIgiK,EAAI7/J,EAAEgyP,cACTh2P,GAAKgE,EAAEmrP,SAAWtrF,IAAMA,EAAEyrF,SAAWtrP,EAAE4uO,OAAO7yN,SAAQ,SAAU9b,GAC/D,IAAID,EAAIC,EAAEuuQ,kBAAiB,GAC3BxuQ,EAAIC,EAAEwwP,YAAYzwP,EAAEyuQ,OAAO,GAC3B5uG,IAAMA,EAAI,CACR6uG,SAAU3iM,OAAOknL,UACjB0b,UAAW5iM,OAAOknL,YAEpBx3C,EAAEz7M,EAAEwtP,UAAY/xC,EAAEz7M,EAAEytP,WAAa5tF,EAAE6uG,SAAW/mQ,KAAKqL,IAAI4mP,EAAE35P,EAAEo5B,QAAQ7E,UAAWw8J,KAAWhxL,EAAEwtP,QAAS3tF,EAAE6uG,UAAW7uG,EAAE8uG,SAAWhnQ,KAAKI,IAAI6xP,EAAE35P,EAAEo5B,QAAQ7E,WAAW,KAAYx0B,EAAEytP,QAAS5tF,EAAE8uG,UACzL,IACA3yQ,EAAI2L,KAAKqL,IAAI4mP,EAAE/5F,GAAKA,EAAE6uG,SAAUlwQ,EAAEgvP,SAAUnwP,EAAImB,EAAEwU,IAAMhT,EAAEqzM,QAAQrzM,EAAEuuP,SAAS/vP,EAAEwU,KAAOhT,EAAEisP,kBACxFpuP,EAAI8J,KAAKI,IAAI6xP,EAAE/5F,GAAKA,EAAE8uG,SAAUnwQ,EAAEivP,SAAUpwP,EAAImB,EAAEuJ,IAAM/H,EAAEqzM,QAAQrzM,EAAEuuP,SAAS/vP,EAAEuJ,KAAO/H,EAAEisP,kBACxFjsP,EAAEgyP,aAAenyF,EACjB7/J,EAAEiuP,YAAyB,GAAX5wP,EAAIrB,EAAIqE,KAAaygB,GAAKzjB,EAAGgD,EAAIrE,GAAe,GAAXqB,EAAIyjB,EAAIjjB,KAAaijB,EAAIjjB,EAAGwC,GAAKhD,GAAI2C,EAAE4uO,OAAO30O,QAAUoG,IAAM7B,EAAEwU,KAAO8N,IAAMtiB,EAAEuJ,KAAO1H,GAAKrE,GAAK8kB,GAAKjjB,IAAMmC,EAAEiyP,YAAY5xP,EAAGygB,GAAG,GAAI,EAAI,CAC1Lm2B,QAAS,QACP35C,EAAE8zO,iBAAmBpnK,GAAK3pE,IAAMrE,GAAK8kB,IAAMjjB,IAAMksE,EAAEnhE,MAAM,OAAStL,EAAE6wQ,gBAAiBnuQ,EAAEwyP,YAAa,GAAK5nP,GAAI,GAAK5P,EAAEuC,GAAKxC,EAC/H,CACF,IACA4gP,EAAE3gP,GAAG,SAAUiF,EAAGD,GAChB1C,EAAE0C,GAAKC,CACT,IACA2K,GAAKtN,EAAE80P,QAAO,GACd78F,EAAEj4J,EAAE4iD,UAAW,CACbo9H,OAAQ,QAEZ,GACF,EACOt9K,CACT,CA5+BI,GA6+BJiL,EAAEjL,EAAE7F,UAAW,CACb2hN,UAAW,GACXkyD,oBAAqB,CACnB5gB,MAAO,CAACptP,EAAE7F,UAAU4yQ,QAAS,EAAC,IAC9B1U,MAAO,CAACr4P,EAAE7F,UAAU4yQ,QAAS,EAAC,IAC9Bn+B,OAAQ,CAAC5uO,EAAE7F,UAAU2yQ,YAEvBe,sBAAuB,CAAC,QAAS,QAAS,UAC1CF,qBAAsB,iJAAiJj8P,MAAM,KAC7Kk8P,mBAAoB,iHAAiHl8P,MAAM,KAC3Ig8P,yBAA0B,iGAAiGh8P,MAAM,OAG5H1R,CACT,IACAiL,EAAEjL,EAAG,8BAA+B,CAACA,EAAE,uBAAuB,SAAUA,GACtE,IAEE4nJ,EAFEv8G,EAAIrrC,EAAEy4B,MACR+zM,EAAIxsO,EAAEkwO,KA8BR,OA5BA,SAAWlwO,GACTA,EAAE4uQ,eAAiB,SAAU5uQ,GAC3B,IAAI6M,EAAIpJ,KAAK41B,QACX60M,EAAIluO,EAAE+kQ,YACNllG,EAAI7/J,EAAEglQ,aACNxmQ,EAAIqhK,EAAI,EACRx/J,EAAIoD,KAAKsqO,MAAM3hI,SACfpxG,EAAIyI,KAAK6hQ,YACXtlQ,EAAIA,EAAE+nK,SAAWpgK,KAAK+c,MAAM,GAAK1kB,EAAE0/O,YAAYz/O,GAC/C,IAAI3C,EAAI,CAAC,EACPsN,EAAIiC,EAAE+vP,OACRn5P,KAAKsqO,MAAM+C,aAAexzO,EAAI,CAC5B,eAAgBuP,EAAE85O,WAAa,GAC9B95O,EAAEopP,YAAc34P,EAAEytP,UAAYl+O,EAAEopP,YACnCxyP,KAAK8hQ,WAAallQ,EAAE07F,KAAK,CAAC,CAAC,IAAK,EAAG/7F,GAAI,CAAC,IAAKkuO,EAAGluO,KAAK0rD,SAAS,oBAAoBtpB,KAAK9kC,GAAGyY,IAAI/a,GAC9F4P,IAAK,IAAOA,EAAEs6B,SAAWgpM,IAAMrhO,EAAIlF,KAAKqL,IAAIw5N,EAAE5hO,EAAEikQ,OAAQrwQ,GAAIA,GAAI,IAAMiF,KAAKkrN,OAAOp+M,QAAQ,SAAW3F,EAAIygC,EAAEzgC,EAAG,CAC5G40C,MAAOqgH,EACPl+G,OAAQk+G,IACNhzJ,EAAI,GAAIpJ,KAAK+hQ,aAAet3B,EAAI7tO,EAAEsuN,OAAOlrN,KAAKkrN,OAAQuf,EAAI,EAAIrhO,EAAG7M,EAAI6M,EAAG,EAAIA,EAAG,EAAIA,EAAGjC,GAAG8gD,SAAS,oBAAoB31C,IAAI/a,GAAIkzO,EAAEu3B,UAAW,EACjJ,EACAzlQ,EAAE8uQ,cAAgB,SAAU9uQ,EAAGqrC,GAC7B,IAAIx+B,EAAI7M,EAAEglQ,aACRnlG,EAAI7/J,EAAEq5B,QAAQk7M,aAChBlpM,EAAEm6N,aAAe/hQ,KAAKsqO,MAAM3hI,SAAS51C,KAAKqpG,GAAK7/J,EAAE+kQ,YAAcl4P,GAAK,EAAI,EAAG7M,EAAE+nK,SAAWl7J,EAAI,EAAGgzJ,EAAIhzJ,EAAI7M,EAAE+kQ,YAAal4P,EAAG2/N,EAAExsO,EAAEq5B,QAAQ01O,aAAcliQ,EAAI,IAAI6+C,SAAS,oBAAoBtpB,KAAK,CAC3L4iB,OAAQ,IACPjvC,IAAIs1B,EAAEi6N,YACX,CACD,CA3BD,CA2BG19G,IAAMA,EAAI,CAAC,IACPA,CACT,IACA38I,EAAEjL,EAAG,gCAAiC,IAAI,WACxC,MAAO,CACL2mP,UAAW,EACXoV,kBAAkB,EAClBliB,OAAO,EACP4sB,cAAc,EACd/+M,UAAW,CACT9jC,SAAU,KAEZyzB,OAAQ,CAAC,EACTulN,OAAQ,CACNoS,iBAAkB,EAClBtoB,UAAW,UACXC,UAAW,EACXkoB,OAAQ,EACR3Q,OAAQ,CACN+Q,OAAQ,CACNvnN,WAAW,GAEb4P,MAAO,CACL5P,UAAW,CACT9jC,SAAU,IAEZshB,SAAS,EACTgqO,WAAY,EACZC,cAAe,GAEjBjvO,OAAQ,CACNkvO,UAAW,UACX1oB,UAAW,UACXC,UAAW,KAIjBzL,MAAO,CACL7jM,OAAQ,CAAC,GAEX+jN,WAAY,CACV1zM,UAAW,CAAC,EACZgpF,MAAO,SACPx+F,OAAO,EACPi1M,UAAW,WACT,IAAInnP,EAAIyD,KAAKmrO,OAAOb,MAAMoJ,gBAC1B,MAAO,kBAAoB1zO,KAAK0H,EAAI,GAAKnL,EAAEyD,KAAK0H,GAAI,EACtD,EACA06C,QAAS,EACTnT,MAAO,CACLk6F,SAAU,OACVhqF,WAAY,OACZy7G,MAAO,WACPq8E,YAAa,gBAEfjH,cAAe,SACfviO,EAAG,EACH/F,EAAG,GAELkkQ,cAAe,IACfvrN,QAAS,EACT8nM,WAAY,EACZ8B,eAAe,EACfwQ,OAAQ,CACN+Q,OAAQ,CACNvnN,WAAW,GAEb4P,MAAO,CACL5P,UAAW,CACT9jC,SAAU,IAEZurP,cAAe,EACfvS,OAAQ,CAAC,EACTwB,KAAM,CACJh/L,KAAM,GACNtb,QAAS,MAGb5jB,OAAQ,CACNwnB,UAAW,CACT9jC,SAAU,IAGd0rP,SAAU,CACR5nN,UAAW,CACT9jC,SAAU,IAEZkgC,QAAS,KAGbk9M,gBAAgB,EAChBuO,eAAgB,IAChB/O,mBAAoB,IAExB,IACAv1P,EAAEjL,EAAG,wBAAyB,CAACA,EAAE,wCAAyCA,EAAE,0BAA2BA,EAAE,sBAAuBA,EAAE,mBAAoBA,EAAE,+BAAgCA,EAAE,wBAAyBA,EAAE,iCAAkCA,EAAE,iCAAkCA,EAAE,mCAAoCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,EAAGC,EAAGC,EAAGruE,EAAGrhK,GAC7X,IAAI6B,EAAIL,EAAEk2O,WACRl7O,EAAIgF,EAAEq2O,aACN/4O,EAAIuP,EAAE2oG,eACN5qG,EAAI4hO,EAAEgb,qBACNz9K,EAAI69E,EAAEwlF,SACNriO,EAAI68I,EAAEokF,IACNhwO,EAAI4rJ,EAAEnxF,IACNo3K,EAAIK,EAAER,YACNzvO,EAAIO,EAAEkwO,SACNrjM,EAAI7sC,EAAEuwO,SACNR,EAAI/vO,EAAEwwO,SACNnxO,EAAIW,EAAE4gK,MACNrkK,EAAIyD,EAAEywO,iBACNhvO,EAAIzB,EAAE0wO,aACNllK,EAAIxrE,EAAE2wO,QACN5xO,EAAIiB,EAAE8wO,MACNjyO,EAAImB,EAAEtC,MACN0jN,EAAIphN,EAAEuC,OACNmQ,EAAI1S,EAAEygC,KACNwkL,EAAIjlN,EAAE8vO,UACN5kK,EAAIlrE,EAAEkxO,kBACN7rB,EAAIrlN,EAAEkB,QACN61J,EAAI/2J,EAAE+B,SACN+gP,EAAI9iP,EAAE8pB,SACNmqN,EAAIj0O,EAAEi6B,MACN/uB,EAAIlL,EAAEuxO,WACNr/G,EAAIlyH,EAAE0xO,KACNjlO,EAAIzM,EAAE45C,YACNgwN,EAAK5pQ,EAAE6xO,MACP+S,EAAI5kP,EAAEgyO,YA+qCR,OA9qCAxwO,EAAI,WACF,SAASA,IACPyD,KAAK04P,MAAQ14P,KAAK40P,MAAQ50P,KAAK2pP,MAAQ3pP,KAAK8nP,YAAc9nP,KAAKg0P,eAAiBh0P,KAAK+rQ,eAAiB/rQ,KAAKgsQ,eAAiBhsQ,KAAKksP,OAASlsP,KAAK41B,QAAU51B,KAAKw7P,aAAex7P,KAAKguB,MAAQhuB,KAAKs7P,eAAiBt7P,KAAK80D,aAAe90D,KAAK/J,KAAO+J,KAAKsqO,MAAQtqO,KAAKW,QAAK,CACzQ,CAwpCA,OAvpCApE,EAAE7F,UAAU69B,KAAO,SAAUh4B,EAAGC,GAC9BwjN,EAAEhgN,KAAM,OAAQ,CACd41B,QAASp5B,IAEX,IAAI3C,EAAImG,KACNlG,EAAIyC,EAAE4uO,OACRnrO,KAAKs7P,eAAiB,GACtBzhQ,EAAEywO,MAAQ/tO,EACV1C,EAAE+7B,QAAU/7B,EAAEi4O,WAAWt1O,GACzBA,EAAI3C,EAAE+7B,QACN/7B,EAAE2hQ,aAAe,GACjB3hQ,EAAEoyQ,WACF9vD,EAAEtiN,EAAG,CACHR,KAAMmD,EAAEnD,KACRmwC,MAAO,GACP4mB,SAAS,IAAO5zD,EAAE4zD,QAClBzuB,UAAU,IAAOnlC,EAAEmlC,WAErBx6B,EAAEnH,KAAMxD,GACR,IAQI+pE,EARAhvE,EAAIiF,EAAEo3C,QACNr8C,GAAKA,EAAEu+C,OAASt5C,EAAEi7O,OAASj7O,EAAEi7O,MAAM7jM,QAAUp3C,EAAEi7O,MAAM7jM,OAAOkC,OAASt5C,EAAE87P,oBAAkB/7P,EAAE6uO,iBAAkB,GACjHvxO,EAAEqyQ,WACFryQ,EAAEsyQ,YACFtyQ,EAAEuyQ,eAAe9zP,SAAQ,SAAU/b,GACjC1C,EAAE0C,EAAI,UAAY1C,EAAE0C,EAAI,QAAU,GACpC,IACA1C,EAAEwlQ,cAAgB9iQ,EAAEu9P,oBAAqB,GAEzChgQ,EAAEtD,SAAW+vE,EAAIzsE,EAAEA,EAAEtD,OAAS,IAC9BqD,EAAE8G,GAAKssH,EAAE1mD,GAAKA,EAAE5lE,IAAK,GAAK,EAC1B9G,EAAEwmD,QAAUxmD,EAAE+7B,QAAQyqB,QACtB9jD,EAAEopQ,YAAY3lQ,KAAKo7C,OAAOthD,IAC1B0C,EAAEw7P,aAAex7P,EAAEw7P,YAAYv2N,QAAU5nC,EAAEgvQ,wBAA0BhvQ,EAAEqyP,QAAUryP,EAAE5D,MAAQ4D,EAAEq6F,QAAQ13F,EAAEvG,MAAM,GAC7G+pN,EAAEhgN,KAAM,YACV,EACAzD,EAAE7F,UAAUmvC,GAAK,SAAUtpC,GACzB,OAAO6tO,EAAE7tO,IAAMyD,gBAAgBoqO,EAAE7tO,EACnC,EACAA,EAAE7F,UAAU0kD,OAAS,SAAU7+C,GAC7B,IACE1C,EADE2C,EAAIwD,KAAK41B,QAAQ5H,MAErB,GAAI8jI,EAAEt1J,GAAI,CACR,IAAK3C,EAAI0C,EAAE/F,OAAQqD,KAAM,GAAI2C,GAAKywH,EAAE1wH,EAAE1C,GAAG+7B,QAAQ5H,MAAOzxB,EAAE1C,GAAG8G,IAAK,CAChEpE,EAAEo5B,OAAO97B,EAAI,EAAG,EAAGmG,MACnB,KACF,EACC,IAAMnG,GAAK0C,EAAE8xC,QAAQruC,MACtBnG,GAAK,CACP,MAAO0C,EAAEzF,KAAKkJ,MACd,OAAOitH,EAAEpzH,EAAG0C,EAAE/F,OAAS,EACzB,EACA+F,EAAE7F,UAAUu1Q,SAAW,WACrB,IAGEnyQ,EAHEyC,EAAIyD,KACNxD,EAAID,EAAEq5B,QACN/7B,EAAI0C,EAAE+tO,MAERtqB,EAAEhgN,KAAM,WAAY,MAAM,YACvBzD,EAAE8vQ,WAAa,IAAI/zP,SAAQ,SAAU/gB,GACpC,IAAIgvE,EAAI,EACR1sE,EAAEtC,GAAG+gB,SAAQ,SAAUze,GACrBC,EAAID,EAAE+7B,SACFp5B,EAAEjF,KAAOgvE,IAAMzsE,EAAEuwQ,YAAc,qBAAuB7tQ,EAAEjF,IAAMiF,EAAEjF,KAAOuC,EAAEiiC,IAAM,qBAAuBv/B,EAAEjF,IAAM,IAAMuC,EAAEk0B,SAAOzxB,EAAE6+C,OAAOvhD,EAAEsxO,QAAS5uO,EAAEhF,GAAKsC,EAAGA,EAAEguP,SAAU,GAC3K/tP,EAAEuwQ,YAAc9jM,GAClB,IACAhqE,EAAEhF,IAAMgF,EAAE+vQ,eAAiB/0Q,GAAKqC,EAAE,IAAI,EAAIC,EAC5C,GACF,IACAmmN,EAAEhgN,KAAM,gBACV,EACAzD,EAAE7F,UAAUkjQ,qBAAuB,SAAUr9P,EAAGC,GAC9C,IAAI3C,EAAI0C,EAAE4uO,OACRrxO,EAAIgC,UACJvE,EAAIu6J,EAAEt1J,GAAK,SAAU1C,GACnB,IAAIvC,EAAI,MAAQuC,GAAKD,EAAE0yQ,QAAU1yQ,EAAE0yQ,QAAQhwQ,GAAKA,EAAEzC,GAClDD,EAAEC,EAAI,QAAQ0C,GAAKjF,CACrB,EAAI,SAAUgF,GACZJ,MAAMzF,UAAU8F,GAAGX,MAAMhC,EAAE0C,EAAI,QAASJ,MAAMzF,UAAU8E,MAAM5E,KAAKkD,EAAG,GACxE,EACFD,EAAEuyQ,eAAe9zP,QAAQ/gB,EAC3B,EACAgF,EAAE7F,UAAU42C,QAAU,WACpB,OAAOttC,KAAKowD,SAAW,qBAAuBpwD,KAAKgqP,SAAW,qBAAuBhqP,KAAK+pP,SAAW/pP,KAAKowD,SAAWpwD,KAAKgrQ,OAAS,EAAIhrQ,KAAKgrQ,MAAMx0Q,MACpJ,EACA+F,EAAE7F,UAAUs1P,cAAgB,SAAUzvP,GACpC,IAKE+pE,EALE9pE,EAAIwD,KAAK41B,QACX/7B,EAAI2C,EAAEgwQ,kBACN1yQ,EAAI0C,EAAEo7P,eACNrgQ,EAAIyI,KAAKsqO,MAAMxkN,KACfygD,EAAIvmE,KAAK0rP,WAMX,OAJAnlL,EAAI0mD,EAAE1mD,EAAG/pE,EAAEiwQ,WAAY,GACvBzsQ,KAAK0sQ,cAAgBpmM,EAAI2mD,EAAEjtH,KAAK0sQ,cAAelwQ,EAAEkwQ,cAAe,GAChE5yQ,GAAKg4J,EAAEv1J,KAAO+pE,GAAK/pE,GACnB1C,IAAM2C,EAAI,IAAIjF,EAAEyF,KAAKupE,GAAI,QAAU1sE,EAAItC,EAAE+K,IAAI,OAAQ9F,EAAGjF,EAAE4C,IAAI,OAAQqC,GAAK8pE,GAAK,UAAYzsE,EAAItC,EAAE+K,IAAI,QAAS9F,EAAGjF,EAAE4C,IAAI,QAASqC,GAAK8pE,GAAK,SAAWzsE,GAAKtC,EAAE+K,IAAI,WAAY9F,EAAGjF,EAAE4C,IAAI,WAAYqC,GAAK8pE,GAAIA,EAAI9pE,EAAEgD,UAAY+mE,GACzNzsE,GAAKg4J,EAAEv1J,GAAWgqE,EAAID,GAC1BtmE,KAAK0rP,WAAanlL,EAAID,EACfC,EACT,EACAhqE,EAAE7F,UAAUmyQ,sBAAwB,WAClC,IAAItsQ,EAAIyD,KAAK41B,QACbumL,EAAEn8M,KAAM,CACN+rP,gBAAgB,EAChB4gB,QAAQ,EACRjH,oBAAoB,EACpBkH,SAAS,IAEXrmM,EAAEhqE,EAAE4rP,cAAgB5rP,EAAE4rP,WAAa,EACrC,EACA5rP,EAAE7F,UAAUo7O,WAAa,SAAUv1O,GACjC,IAAIC,EAAIwD,KAAKsqO,MACXxwO,EAAI0C,EAAEo5B,QACNr+B,EAAIuC,EAAEm2O,YACN3pK,EAAI9pE,EAAEsrP,aAAe,CAAC,EACxBvrP,EAAIyyO,EAAEzyO,GACNC,EAAIA,EAAE6wO,WACN,IAAIlmO,EAAI,CACN8oO,YAAa14O,EACbuwP,YAAavrP,GAEfyjN,EAAEhgN,KAAM,aAAcmH,GACtB,IAAI7P,EAAI6P,EAAE8oO,YAAYjwO,KAAK/G,MACzB2D,EAAI0pE,EAAE2pK,aAAe,CAAC,EAmBxB,OAlBAjwO,KAAK8nP,YAAc3gP,EAAE2gP,YACrBxhL,EAAI0oK,EAAE13O,EAAGC,EAAE4zO,OAAQ7kK,EAAE2pK,aAAe3pK,EAAE2pK,YAAYjwO,KAAK/G,MAAOsD,GAC9DyD,KAAKg0P,eAAiBhlB,EAAEn1O,EAAEmsM,QAASnsM,EAAEo2O,YAAY9E,QAAUtxO,EAAEo2O,YAAY9E,OAAOnlC,QAASnsM,EAAEo2O,YAAYjwO,KAAK/G,MAAM+sM,QAASlsM,EAAEksM,QAAQ8hD,YAAavwP,EAAE4zO,QAAU5zO,EAAE4zO,OAAOnlC,QAASzuM,EAAEyI,KAAK/G,MAAM+sM,QAASzpM,EAAEypM,SACxMhmM,KAAKu9P,eAAiBtwI,EAAE1wH,EAAEghQ,eAAgB3gQ,EAAEoD,KAAK/G,OAAS2D,EAAEoD,KAAK/G,MAAMskQ,eAAgB3gQ,EAAEuuO,QAAUvuO,EAAEuuO,OAAOoyB,kBAAgBv9P,KAAKg0P,eAAe3iB,QAAWrxO,KAAK6rP,kBAAuBvlL,EAAEi3L,gBACzL,OAASjmQ,EAAE6hQ,eAAiB7yL,EAAE6yL,OAC9Bn5P,KAAK24P,SAAWryL,EAAEqyL,SAClBphQ,EAAIyI,KAAK04P,OAASpyL,EAAEoyL,OAAS,IAAIl9P,SAChC8qE,EAAEumM,gBAAkBvmM,EAAEwmM,mBAAqBxmM,EAAEoyL,QAAU5+P,EAAI,CAC1DS,MAAO+rE,EAAEtmE,KAAK24P,SAAW,cAAgBryL,EAAEv1C,WAAa,EACxDqN,UAAW,uBACV5hC,IAAM1C,EAAE8gK,MAAQt0F,EAAEumM,cAAe/yQ,EAAE6xQ,UAAYrlM,EAAEwmM,mBAAoBv1Q,EAAET,KAAKgD,IAC/EvC,EAAEf,QAAU+vE,EAAEhvE,EAAEA,EAAEf,OAAS,GAAG+D,QAAUhD,EAAET,KAAK0F,EAAI,CAAC,EAAI,CACtDo+J,MAAO56J,KAAK46J,MACZ+wG,UAAW3rQ,KAAK2rQ,YAElB3rD,EAAEhgN,KAAM,kBAAmB,CACzB41B,QAAS0wC,IAEJA,CACT,EACA/pE,EAAE7F,UAAUupJ,QAAU,WACpB,OAAOhzB,EAAEjtH,KAAK41B,QAAQv8B,KAAM,WAAa2G,KAAKguB,MAAQ,GACxD,EACAzxB,EAAE7F,UAAUq2Q,UAAY,SAAUxwQ,EAAGC,EAAG3C,GACtC,IAAIC,EAAIkG,KAAKsqO,MACX/yO,EAAIyI,KAAK8nP,YACTxhL,EAAI/pE,EAAI,QACR4K,EAAI5K,EAAI,UACRjF,EAAIuC,EAAIA,EAAErD,OAASy2H,EAAEnzH,EAAE87B,QAAQ00M,MAAM/tO,EAAI,SAAUzC,EAAEyC,EAAI,UAC3D,IAAKC,EAAG,CACN,IAAII,EAAIqwH,EAAE11H,EAAE+uE,GAAI/uE,EAAE,IAAM+uE,IACxBC,EAAE3pE,KAAO9C,EAAEqxO,OAAO30O,SAAWsD,EAAEqN,GAAK,GAAI5P,EAAE,IAAM+uE,GAAK1pE,EAAI9C,EAAEqN,GAAK7P,EAAGwC,EAAEqN,IAAM,GAC3EtN,IAAM2C,EAAI3C,EAAE+C,GACd,CACA,qBAAuBA,IAAMoD,KAAKsmE,GAAK1pE,GACvCoD,KAAKzD,GAAKC,CACZ,EACAD,EAAE7F,UAAUw1Q,SAAW,WACrBlsQ,KAAKsqO,MAAM+C,WAAartO,KAAK+sQ,UAAU,SAAW/sQ,KAAK41B,QAAQyjO,aAAer5P,KAAK46J,MAAQ,UAAY56J,KAAK+sQ,UAAU,QAAS/sQ,KAAK41B,QAAQglI,OAAS/gK,EAAEo2O,YAAYjwO,KAAK/G,MAAM2hK,MAAO56J,KAAKsqO,MAAM10M,QAAQykI,OAC1M,EACA99J,EAAE7F,UAAUgwQ,oBAAsB,WAChC,OAAQ1mQ,KAAKgtQ,eAAiBhtQ,KAAKksP,OAASlsP,KAAK/J,OAAS,EAC5D,EACAsG,EAAE7F,UAAUy1Q,UAAY,WACtBnsQ,KAAK+sQ,UAAU,SAAU/sQ,KAAK41B,QAAQujO,OAAOjuC,OAAQlrN,KAAKsqO,MAAM10M,QAAQ45M,QAC1E,EACAjzO,EAAE7F,UAAUu2Q,eAAiB,SAAU1wQ,EAAGC,GACxC,IAIE8pE,EACAn/D,EALEtN,EAAI0C,EAAEw/B,GACRjiC,EAAIyC,EAAEkR,EACNlW,EAAIyI,KAAKksP,OACT3lL,EAAIvmE,KAAK41B,QAAQoiO,YAGnB,GAAIn+P,GAAG0sE,EAAIvmE,KAAKsqO,MAAMnwO,IAAIN,cAAiB0wO,IAAMjkK,EAAIC,QAAQ,IAAIvmE,KAAKkmP,cAAgBlmP,KAAK0lQ,oBAAsB1lQ,KAAK41B,QAAQgiO,kBAAoBtxL,EAAI,SAAU9pE,GAC9J,OAAQA,EAAE8tQ,SAAW9tQ,EAAEwxB,QAAUzxB,EAAEyxB,KACrC,EAAGu4C,GAAKA,EAAE2mM,YAAc5mM,EAAI,SAAU9pE,GACpC,OAAQA,EAAE8tQ,SAAW9tQ,EAAEnD,OAASkD,EAAElD,IACpC,EAAI2G,KAAK41B,QAAQgiO,iBAAmBtxL,EAAI,SAAU9pE,GAChD,OAAQA,EAAE8tQ,SAAW9tQ,EAAEo5B,QAAQnoB,IAAMlR,EAAEkR,CACzC,KAAI64D,EAAI74D,EAAElW,EAAG+uE,KAAQ,OACrB,GAAIA,EAAG,CACL,IAAIhvE,EAAIgvE,GAAKA,EAAEt4C,MACf,qBAAuB12B,IAAM6P,GAAI,EACnC,CAIA,MAHA,qBAAuB7P,GAAKw6J,EAAEh4J,KAAOxC,EAAI0I,KAAKoqP,MAAMt9O,QAAQhT,EAAG0C,KAC9D,IAAMlF,GAAK,qBAAuBA,GAAK0I,KAAKmtQ,UAAY71Q,EAAIA,GAAK0I,KAAKotQ,UAAY91Q,EAAI0I,KAAKotQ,UAAY91Q,IACvG6P,GAAK2qJ,EAAEx6J,IAAMC,EAAED,IAAMC,EAAED,GAAGgzQ,UAAYhzQ,OAAI,GACpCA,CACT,EACAiF,EAAE7F,UAAU22Q,WAAa,SAAU9wQ,EAAGC,GACpC,IAMEI,EACAhD,EACArB,EAREsB,EAAImG,KAAK41B,QACX97B,EAAID,EAAEm+P,YACNzgQ,EAAIyI,KAAKksP,OACT5lL,EAAI,GACJn/D,EAAInH,KAAK+rP,eACTz0P,EAAIiF,EAAE/F,SAAWe,EAAEf,OAInBuE,GAAI,EAWN,GAVAiF,KAAK0rP,WAAa,KAClBnvP,EAAE+b,SAAQ,SAAU/b,EAAGC,GACrB,IAAI5C,EAAI2sE,EAAEhqE,IAAMyD,KAAKskQ,WAAW5tQ,UAAUghQ,gBAAgB9gQ,KAAK,CAC3Du0O,OAAQnrO,MACPzD,IAAM,CAAC,EACVxB,EAAInB,EAAE6T,EACJ7T,EAAEmiC,IAAM+1H,EAAE/2J,KACwB,KAAhCnB,EAAIoG,KAAKitQ,eAAerzQ,EAAGrB,KAAgB,qBAAuBqB,EAAI0sE,EAAExvE,KAAKyF,GAAKhF,EAAEqC,IAAM2C,IAAM1C,EAAE5D,KAAK2D,IAAMrC,EAAEqC,GAAGsjF,OAAO3gF,GAAG,EAAI,MAAM,GAAKhF,EAAEqC,GAAG0wQ,SAAU,EAAInjQ,IAAM5O,EAAIqB,EAAI,IAAMrC,EAAEqC,KAAOrC,EAAEqC,GAAG0wQ,SAAU,KAAMhzQ,GAAKkF,IAAM5C,GAAKE,GAAKA,EAAE2nC,SAAWzhC,KAAKstQ,kBAAgB1wQ,GAAI,IAC1Q0pE,EAAExvE,KAAKyF,EAChB,GAAGyD,MACCpD,EAAG,IAAKL,EAAIhF,EAAEf,OAAQ+F,MAAO3C,EAAIrC,EAAEgF,MAAQ3C,EAAE0wQ,SAAW1wQ,EAAEsvC,QAAUtvC,EAAEsvC,QAAO,EAAI1sC,QAASlF,GAAKwC,GAAKA,EAAE2nC,QAAU1mC,GAAI,GAAMwB,EAAE+b,SAAQ,SAAU/b,EAAGC,GACnJD,IAAMhF,EAAEiF,GAAGkL,GAAKnQ,EAAEiF,GAAG0gF,QAAU3lF,EAAEiF,GAAG0gF,OAAO3gF,GAAG,EAAI,MAAM,EAC1D,IAAI+pE,EAAE9vE,OAAS,GAIf,OAHAe,EAAE+gB,SAAQ,SAAU/b,GAClBA,IAAMA,EAAE+tQ,SAAU,EACpB,MACKvvQ,IACLurE,EAAEhuD,SAAQ,SAAU/b,GAClByD,KAAKutQ,SAAShxQ,GAAG,EAAI,KAAM,MAAM,EACnC,GAAGyD,MACH,OAASA,KAAK0rP,YAAc1rP,KAAKoqP,OAASpqP,KAAKoqP,MAAM5zP,SAAWwJ,KAAK0rP,WAAa9jN,EAAE5nC,KAAKoqP,OAAQpqP,KAAKgsP,kBAC/F,EACT,EACAzvP,EAAE7F,UAAUw9F,QAAU,SAAU33F,EAAGC,EAAG3C,EAAGC,GACvC,IAAIvC,EAAIyI,KACNumE,EAAIhvE,EAAE20P,OACN5lL,EAAIC,GAAKA,EAAE/vE,QAAU,EACrB2Q,EAAI5P,EAAEq+B,QACNt+B,EAAIC,EAAE+yO,MACN1tO,EAAIuK,EAAE6wP,YACNz/P,EAAIhB,EAAEoyP,MACN5uP,EAAIoM,EAAE2kQ,eACN1xQ,EAAI4F,KAAKoqP,MACT/sO,EAAIrd,KAAKgrQ,MACTxwQ,EAAIjD,EAAEyhQ,cACRx+P,EAAIA,GAAKA,EAAEhE,OACX,IACE8Q,EADE80J,EAAIj1J,EAAElF,KAERmoO,EAAI,EACJU,EAAI,EACJr9N,EAAI,KAEFm6B,GADJrrC,EAAIA,GAAK,IACC/F,OAIV,GAHAgG,EAAIywH,EAAEzwH,GAAG,GACTI,GAAKA,EAAE6kC,UAAYllC,EAAIyD,KAAKwtQ,SAASjxQ,KACrC,IAAOzC,GAAK8tC,GAAK0+B,IAAM/uE,EAAE41Q,UAAY51Q,EAAEy1Q,gBAAkBz1Q,EAAE64D,UAAY74D,EAAEk2Q,mBAAqBnmQ,EAAItH,KAAKqtQ,WAAW9wQ,EAAG1C,KAChHyN,EAAG,CAMN,GALA/P,EAAEm0P,WAAa,KACfn0P,EAAE+hQ,aAAe,EACjBt5P,KAAKosQ,eAAe9zP,SAAQ,SAAU/b,GACpChF,EAAEgF,EAAI,QAAQ/F,OAAS,CACzB,IACIuE,GAAK6sC,EAAI7sC,EACX,GAAI0S,EAAIlW,EAAEm2Q,mBAAmBnxQ,GAAIu1J,EAAErkJ,GAAI,IAAK5T,EAAI,EAAGA,EAAI+tC,EAAG/tC,IAAKO,EAAEP,GAAKmG,KAAKgsP,gBAAiB3uO,EAAExjB,GAAK0C,EAAE1C,QAAQ,GAAIumN,EAAE3yM,GACjH,GAAIjT,EACF,GAAIiT,EAAEjX,SAAWgE,EAAG,IAAKX,EAAI,EAAGA,EAAI+tC,EAAG/tC,IAAKO,EAAEP,GAAKmG,KAAKgsP,gBAAiB3uO,EAAExjB,GAAK0C,EAAE1C,QAAQ,IAAKA,EAAI,EAAGA,EAAI+tC,EAAG/tC,IAAKC,EAAIyC,EAAE1C,GAAIO,EAAEP,GAAKC,EAAE,GAAIujB,EAAExjB,GAAKC,EAAE0B,MAAM,EAAGhB,EAAI,QAC1J,GAAI4hK,IAA8CguE,EAAI,IAA5CA,EAAIhuE,EAAEtvJ,QAAQ,MAAuCs9N,EAAI,EAAGU,EAAI,IAA5CA,EAAI1uE,EAAEtvJ,QAAQ,MAAuCg+N,EAAI,GAAI,IAAMr9N,EAAEjX,SAAWs0O,EAAI,GAAIV,IAAMU,EAAG,IAAKjxO,EAAI,EAAGA,EAAI+tC,EAAG/tC,IAAKO,EAAEP,GAAKmG,KAAKgsP,gBAAiB3uO,EAAExjB,GAAK0C,EAAE1C,GAAGixO,QAAQ,IAAKjxO,EAAI,EAAGA,EAAI+tC,EAAG/tC,IAAKC,EAAIyC,EAAE1C,GAAIO,EAAEP,GAAKC,EAAEswO,GAAI/sN,EAAExjB,GAAKC,EAAEgxO,QAClQlxO,EAAE,IAAI,EAAItC,QACZ,IAAKuC,EAAI,EAAGA,EAAI+tC,EAAG/tC,IAAK,qBAAuB0C,EAAE1C,KAAOC,EAAI,CACjEqxO,OAAQ5zO,GACPA,EAAE+sQ,WAAW5tQ,UAAU8gQ,aAAa37P,MAAM/B,EAAG,CAACyC,EAAE1C,KAAMtC,EAAEqiQ,qBAAqB9/P,EAAGD,IAInF,IAHAwjB,GAAKwgO,EAAExgO,EAAE,KAAOzjB,EAAE,IAAI,EAAItC,GAC1BC,EAAEtB,KAAO,GACTsB,EAAEq+B,QAAQ3/B,KAAOsB,EAAEuwP,YAAY7xP,KAAOsG,EACjC1C,EAAIysE,EAAGzsE,KAAM0sE,EAAE1sE,IAAM0sE,EAAE1sE,GAAGojF,SAAW1W,EAAE1sE,GAAGojF,UAC/C1kF,IAAMA,EAAE8wP,SAAW9wP,EAAE+wP,cACrB/xP,EAAEswP,QAAUvwP,EAAEm7P,YAAa,EAC3Bl7P,EAAE40P,cAAgB5lL,EAClB1sE,GAAI,CACN,CACA,UAAYsN,EAAE4yP,aAAe/5P,KAAKksD,cAAelsD,KAAKosP,kBACtD5vP,GAAKlF,EAAEq3P,OAAO90P,EAChB,EACA0C,EAAE7F,UAAU82Q,SAAW,SAAUjxQ,GAC/B,IAAIC,EAAIwD,KACNnG,EAAI2C,EAAEo5B,QAAQoiO,YAAY2V,SAAW,IACrC7zQ,EAAI,SAAUyC,EAAGC,GACf,OAAO+pE,EAAE/pE,IAAMD,EAAE+nQ,WAAW5tQ,UAAUghQ,gBAAgB9gQ,KAAK,CACzDu0O,OAAQ5uO,GACPC,IAAM,CAAC,CACZ,EAoBF,OAnBAD,EAAE+b,SAAQ,SAAUze,EAAGtC,GACrBgF,EAAEhF,GAAKuC,EAAE0C,EAAG3C,GACZ0C,EAAEhF,GAAGy2B,MAAQz2B,CACf,GAAGyI,MACHzD,EAAEsW,SAASxJ,MAAK,SAAU9M,EAAGC,GAG3B,OAFAD,EAAI0pE,EAAEpsE,EAAG0C,IACTC,EAAIypE,EAAEpsE,EAAG2C,IACED,GAAK,EAAIC,EAAID,EAAI,EAAI,CAClC,IAAG+b,SAAQ,SAAU/b,EAAGC,GACtBD,EAAEkR,EAAIjR,CACR,GAAGwD,MACHxD,EAAEg/P,cAAgBh/P,EAAEg/P,aAAaljP,SAAQ,SAAU9b,GACjD,IAAI3C,EAAI2C,EAAEo5B,QACRr+B,EAAIsC,EAAE5D,KACR4D,EAAEm+P,aAAen+P,EAAEm+P,YAAYv2N,UAAYlqC,IAAMA,EAAE+gB,SAAQ,SAAUze,EAAG0sE,GACtEhvE,EAAEgvE,GAAKzsE,EAAE0C,EAAG3C,GACZ0C,EAAEgqE,KAAOhvE,EAAEgvE,GAAG94D,EAAIlR,EAAEgqE,GAAG94D,EAAGlW,EAAEgvE,GAAGv4C,MAAQu4C,EACzC,IAAI/pE,EAAE03F,QAAQ38F,GAAG,GACnB,IACOgF,CACT,EACAA,EAAE7F,UAAUq0Q,iBAAmB,SAAUxuQ,GACvC,IAAIC,EAAIwD,KAAK2pP,MACX9vP,EAAImG,KAAK41B,QACT97B,EAAID,EAAE+xQ,cACNr0Q,EAAIgF,GAAKyD,KAAK4tQ,oBAAsB/zQ,EAAE+zQ,mBACtCrnM,EAAIvmE,KAAKq/P,YACX9iQ,EAAIC,GAAKA,EAAEquP,QACXhxP,KAAO2C,IAAMA,EAAE6nP,aACf,IAAI/9K,EAAI,EACNn/D,EAAInH,KAAKoqP,MACT9yP,EAAI0I,KAAKgrQ,MACTpuQ,EAAIoD,KAAK+rP,eACPxzP,GAAI,EACJwC,EAAIoM,EAAE3Q,OACV,GAAIgG,EAAG,CAEL,IAAIpC,GADJ7B,EAAIiE,EAAEwwP,eACIz9O,IACN8N,EAAI9kB,EAAE+L,IACV/L,EAAIiE,EAAE2qO,aAAe3qO,EAAEib,MAAMjhB,MAC/B,CACA,GAAI+vE,GAAKvmE,KAAK2sQ,SAAWp1Q,KAAOuC,GAAKiB,EAAIjB,GAAKkG,KAAKstP,WAAY,GAAInmP,EAAEpM,EAAI,GAAKX,GAAK+M,EAAE,GAAKkW,EAAGlW,EAAI,GAAI7P,EAAI,QAAQ,GAAI0I,KAAKgrQ,QAAU7jQ,EAAE,GAAK/M,GAAK+M,EAAEpM,EAAI,GAAKsiB,GAAI,CAC7J,IAAI7iB,EAAIwF,KAAK6tQ,SAAS7tQ,KAAKoqP,MAAOpqP,KAAKgrQ,MAAO5wQ,EAAGijB,GACjDlW,EAAI3M,EAAE4vP,MACN9yP,EAAIkD,EAAEwwQ,MACN1kM,EAAI9rE,EAAE2lC,MACN3lC,GAAI,CACN,CACA,IAAKV,EAAIqN,EAAE3Q,QAAU,IAAKsD,GAAI,GAAqD,GAAjD0C,EAAI3C,EAAI0C,EAAE4K,EAAErN,IAAMyC,EAAE4K,EAAErN,EAAI,IAAMqN,EAAErN,GAAKqN,EAAErN,EAAI,MAAc,qBAAuBsiK,GAAK5/J,EAAI4/J,GAAI,IAAIA,EAAI5/J,OAAO,EAAIA,GAAKI,IAAMrE,IAAMqB,EAAE,IAAI,EAAIoG,KAAKsqO,OAAQ1tO,GAAI,GAChM,MAAO,CACLwtP,MAAOjjP,EACP6jQ,MAAO1zQ,EACP61Q,QAAS3yQ,EACT4yQ,UAAW9mM,EACX0iL,kBAAmB5sF,EAEvB,EACA7/J,EAAE7F,UAAUw1D,YAAc,SAAU3vD,GAClC,IAAIC,EAAIwD,KAAK2pP,MACb,GAAI3pP,KAAKq/P,cAAgBr/P,KAAK6nP,UAAYrrP,EAAEqrP,UAAY7nP,KAAK40P,MAAM/M,UAAYtrP,EAAG,OAAO,EACzFA,EAAIyD,KAAK+qQ,mBACT/qQ,KAAKmtQ,QAAU5wQ,EAAE4wQ,QACjBntQ,KAAKotQ,UAAY7wQ,EAAE6wQ,UACnBptQ,KAAKgsQ,eAAiBzvQ,EAAE6tP,MACxBpqP,KAAK+rQ,eAAiBxvQ,EAAEyuQ,MACxBhrQ,KAAKgpP,kBAAoBhpP,KAAK8tQ,eAAiBvxQ,EAAEysP,kBACjDhpC,EAAEhgN,KAAM,mBACV,EACAzD,EAAE7F,UAAUm3Q,SAAW,SAAUtxQ,EAAGC,EAAG3C,EAAGC,EAAGvC,GAC3C,IACE+uE,EADEC,EAAIhqE,EAAE/F,OAER2Q,EAAI,EACJ7P,EAAIivE,EAEN,IADAhvE,EAAI01H,EAAE11H,EAAGyI,KAAK+tQ,cACTznM,EAAI,EAAGA,EAAIC,EAAGD,IAAK,GAAI/pE,EAAE+pE,IAAMzsE,EAAG,CACrCsN,EAAIjD,KAAKI,IAAI,EAAGgiE,EAAI/uE,GACpB,KACF,CACA,IAAKsC,EAAIysE,EAAGzsE,EAAI0sE,EAAG1sE,IAAK,GAAI0C,EAAE1C,GAAKC,EAAG,CACpCxC,EAAIuC,EAAItC,EACR,KACF,CACA,MAAO,CACL6yP,MAAO7tP,EAAEf,MAAM2L,EAAG7P,GAClB0zQ,MAAOxuQ,EAAEhB,MAAM2L,EAAG7P,GAClB6oC,MAAOh5B,EACPuuB,IAAKp+B,EAET,EACAiF,EAAE7F,UAAU01P,eAAiB,WAC3B,IAAI7vP,EAAIyD,KAAK41B,QACXp5B,EAAID,EAAEtG,KACN4D,EAAImG,KAAKgsQ,eACTlyQ,EAAIkG,KAAK+rQ,eACTx0Q,EAAIyI,KAAKskQ,WACT/9L,EAAI1sE,EAAErD,OACN8vE,EAAItmE,KAAKotQ,WAAa,EACtBjmQ,EAAInH,KAAKgtQ,eACT11Q,EAAIiF,EAAE0F,KACNrF,EAAI,GACNL,EAAIA,EAAEyxQ,cAAgBzxQ,EAAEyxQ,aAAaC,SAAW3nM,EAAI,EACpD,IAAI1sE,EACFrB,EACAwC,EAAIiF,KAAK/J,KACX,IAAK8E,IAAMoM,EAAG,CACZ,IAAI/M,EAAI,GACRA,EAAE5D,OAASgG,EAAEhG,OACbuE,EAAIiF,KAAK/J,KAAOmE,CAClB,CAEA,IADA9C,GAAK6P,IAAMnH,KAAK41B,QAAQ3zB,MAAO,GAC1B1J,EAAI,EAAGA,EAAIguE,EAAGhuE,IAAK,CAEtB,GADA6B,EAAIksE,EAAI/tE,EACJ4O,EAAG,CACL,IAAI3M,GAAI,IAAIjD,GAAIg9B,KAAKv0B,KAAM,CAACnG,EAAEtB,IAAIsa,OAAO8xP,EAAG7qQ,EAAEvB,MAC9CiC,EAAE0zQ,UAAYluQ,KAAKmuQ,SAAS5xQ,EAAIhE,GAChCiC,EAAE0zQ,UAAUt4O,UAAYp7B,EAAEo7B,QAAUp7B,EAAE0zQ,UAAUt4O,QAASumL,EAAE3hN,EAAGA,EAAE0zQ,UAAUt4O,gBAAiBp7B,EAAEm9P,WAC/F,MAAQn9P,EAAIO,EAAEX,KAAO,qBAAuBoC,EAAEpC,KAAOW,EAAEX,GAAKI,GAAI,IAAIjD,GAAIg9B,KAAKv0B,KAAMxD,EAAEpC,GAAIP,EAAEtB,KAC3FiC,IAAMA,EAAEwzB,MAAQ7mB,EAAI5K,EAAIhE,EAAI6B,EAAGwC,EAAErE,GAAKiC,EACxC,CAEA,GADAwF,KAAK41B,QAAQ3zB,KAAO3K,EAChByD,IAAMwrE,KAAO3sE,EAAImB,EAAEvE,SAAW2Q,GAAI,IAAK5O,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKA,IAAM+tE,GAAKn/D,IAAM5O,GAAKguE,GAAIxrE,EAAExC,KAAOwC,EAAExC,GAAGw/P,kBAAmBh9P,EAAExC,GAAG05P,WAAQ,GACtIjyP,KAAK/J,KAAO8E,EACZiF,KAAKksP,OAAStvP,EACdojN,EAAEhgN,KAAM,sBACV,EACAzD,EAAE7F,UAAU4zP,aAAe,SAAU/tP,GACnC,MAAO,CACLgT,IAAKu7N,EAAEvuO,GACP+H,IAAKsjC,EAAErrC,GAEX,EACAA,EAAE7F,UAAUs2P,YAAc,SAAUzwP,EAAGC,GACrC,IAAI3C,EAAImG,KAAK2pP,MACX7vP,EAAIkG,KAAK40P,MACTr9P,EAAIyI,KAAKgsQ,gBAAkBhsQ,KAAKoqP,MAChC7jL,EAAI,GACJD,EAAItmE,KAAK+rP,eAAiB/rP,KAAK+tQ,aAAe,EAChDj0Q,IAAIA,GAAIA,EAAEmuP,mBACV,IAAI9gP,EACF7P,EAAI,EACJsF,EAAI,EACJhD,EAAI,EAEFrB,GADJgE,EAAIA,GAAKyD,KAAKouQ,cAAgBpuQ,KAAK+rQ,gBAAkB,IAC3Cv1Q,OACV,GAAIqD,EAAG,CACL,IAAIkB,EAAIlB,EAAEmzP,cACV11P,EAAIyD,EAAEwU,IACN3S,EAAI7B,EAAEuJ,GACR,CACA,IAAK6C,EAAI,EAAGA,EAAI5O,EAAG4O,IAAK,CACtB,IAAI/M,EAAI7C,EAAE4P,GACVpM,EAAIwB,EAAE4K,GACN,IAAI3M,GAAKs3J,EAAE/2J,IAAMqlN,EAAErlN,MAAQA,EAAEvE,QAAU,EAAIuE,IAAMjB,GAEjD,GADAM,EAAIoC,GAAKwD,KAAK4tQ,oBAAsB5tQ,KAAK41B,QAAQg4O,oBAAsB5tQ,KAAKmtQ,UAAYtzQ,IAAMtC,EAAE4P,EAAIm/D,IAAMlsE,IAAM9C,IAAMC,EAAE4P,EAAIm/D,IAAMlsE,IAAMwC,EACpIpC,GAAKJ,EAAG,GAAII,EAAIO,EAAEvE,OAAQ,KAAOgE,KAAMs3J,EAAE/2J,EAAEP,MAAQ+rE,EAAE3sE,KAAOmB,EAAEP,SAAS+rE,EAAE3sE,KAAOmB,CACtF,CASA,OARAwB,EAAI,CACF8xQ,YAAa9nM,EACbwjL,QAASjf,EAAEvkK,GACXyjL,QAASpiN,EAAE2+B,IAEby5I,EAAEhgN,KAAM,mBAAoB,CAC1BsuQ,aAAc/xQ,IAETA,CACT,EACAA,EAAE7F,UAAU6zP,cAAgB,WAC1B,IAAIhuP,EAAIyD,KAAKgtP,cAGb,OAFAhtP,KAAK+pP,QAAUxtP,EAAEwtP,QACjB/pP,KAAKgqP,QAAUztP,EAAEytP,QACVztP,CACT,EACAA,EAAE7F,UAAUg3Q,mBAAqB,SAAUnxQ,GACzC,IAAK,IAAIC,EAAID,EAAE/F,OAAQqD,EAAI,EAAGC,EAAI,KAAM,OAASA,GAAKD,EAAI2C,GAAI1C,EAAIyC,EAAE1C,GAAIA,IACxE,OAAOC,CACT,EACAyC,EAAE7F,UAAUg5N,UAAY,WACtB1vN,KAAKgsQ,gBAAkBhsQ,KAAKksD,cAC5BlsD,KAAKosP,iBACL,IAaE9kP,EACA8iO,EAdE7tO,EAAIyD,KAAK41B,QACX/7B,EAAI0C,EAAE2tP,SACNpwP,EAAIkG,KAAK2pP,MACTpyP,EAAIuC,EAAEqtO,WACN7gK,EAAItmE,KAAK0lQ,mBACTv+P,EAAInH,KAAK40P,MACTt9P,EAAI0I,KAAKksP,OACTtvP,EAAItF,EAAEd,OACNoD,EAAIoG,KAAKuuQ,yBACTh2Q,IAAMqB,EACNmB,EAAIwB,EAAEw0B,UACNv2B,EAAI+B,EAAEiyQ,mBAAqBzzQ,EAAI,EAC/BqhK,EAAIp8J,KAAK24P,UAAY,IAGrB7tB,EAAIxiK,OAAOknL,UACb,IAAKloP,EAAI,EAAGA,EAAI1K,EAAG0K,IAAK,CACtB,IAAImG,EAAInW,EAAEgQ,GACRsgC,EAAIn6B,EAAEA,EACNrE,OAAI,EACJ+yM,OAAI,EACJkuB,EAAI58N,EAAE/F,EACN+iO,EAAIh9N,EAAEqiP,IACNpoP,EAAI7N,GAAKsN,EAAE+iP,UAAY/iP,EAAE+iP,SAASukB,QAAQzuQ,KAAK0uQ,WAAarkC,GAAK7vO,EAAI,EAAIO,GAAK,IAAM,IAAMiF,KAAK2uQ,UAGjG,IAFIxnQ,EAAE8gP,qBAAuB9gP,EAAEkjP,sBAAsBhgB,IAAMvwO,EAAEmuP,qBAAuBnuP,EAAEuwP,sBAAsBziN,MAAIn6B,EAAEypP,QAAS,GAC3HzpP,EAAEwkP,MAAQ7nB,EAAI5tO,EAAEpC,EAAEN,EAAE41N,UAAU9nL,EAAG,EAAG,EAAG,EAAG,EAAGhuC,EAAG,UAAYoG,KAAK/G,OAAQ,IAAK,MAC1EY,GAAKmG,KAAKowD,SAAW1oD,GAAKA,EAAEkgC,GAAI,CAClC,IAAImhM,EAAI/oO,KAAK4uQ,kBAAkB7lC,EAAGnhM,EAAG5nC,KAAKguB,OAC1CvgB,EAAEypP,SAAqB/6C,GAAV/yM,EAAI1B,EAAEkgC,IAAUskN,OAAOnjB,EAAEluO,KACxC,CAUA,GATAulN,EAAEjE,KAAOsuB,EAAItuB,EAAE,GAAIkuB,EAAIluB,EAAE,GAAIsuB,IAAMjwO,GAAKuuO,EAAEluO,MAAQ6M,EAAEkgC,GAAGxjB,OAASqmN,EAAIx9G,EAAE6kC,EAAE/2J,IAAMA,EAAGoM,EAAEoI,MAAOpI,EAAE8gP,oBAAsB,GAAKxd,IAAMA,EAAI,MAAOh9N,EAAEmkB,MAAQnkB,EAAE+qP,WAAapvP,EAAEwoB,MAAOnkB,EAAE6oL,WAAaltL,EAAEwoB,OAASnkB,EAAE/F,EAAI0B,EAAEwoB,MAAQ,IAAKnkB,EAAE4kP,OAAShoB,EAAGrqO,KAAK6uQ,iBAAmBzlQ,EAAEkpD,UAAUtyD,KAAK8uQ,cAAgB,EAAG9uQ,KAAK+uQ,MAAQ,IAChTthQ,EAAEuhQ,QAAUzoM,EAAEkkK,GAAKrwO,EAAE+M,EAAEuoN,UAAU+a,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,KAAO,KAC9DzqO,KAAKivQ,aAAe5kC,EAAIrqO,KAAKivQ,WAAWC,YAAY7kC,EAAG/iO,IACvDmG,EAAEykP,WAAQ,EACVpgG,EAAEu4E,IAA2C,qBAApCjhO,EAAIjC,EAAEuoN,UAAU2a,GAAG,GAAI,GAAI,GAAI,MAAkC58N,EAAEykP,MAAQ93P,EAAEgP,GAAI,IAAK,MAC/FqE,EAAEutP,SAAWh7P,KAAKmvQ,cAAc1hQ,GAChCA,EAAE6pC,QAAU/+C,EAAIiE,EAAE1C,EAAE41N,UAAU9nL,EAAG,EAAG,EAAG,EAAG,EAAGhuC,IAAMwwO,EACnD38N,EAAE6nP,SAAW7nP,EAAE2uJ,IAAM7/J,EAAE6/J,EAAI,cAAgBrhK,GAAK,GAChD0S,EAAE+2O,SAAWjtP,GAAK,qBAAuBA,EAAEkW,EAAEA,GAAKlW,EAAEkW,EAAEA,GAAKA,EAAEA,GACxDA,EAAEypP,SAAU,IAAOzpP,EAAE2iD,QAAS,CACjC,qBAAuB+zF,IAAM2mF,EAAI5mO,KAAKqL,IAAIu7N,EAAG5mO,KAAKC,IAAIimO,EAAIjmF,KAC1D,IAAIA,EAAIimF,CACV,CACA38N,EAAEia,KAAO1nB,KAAK04P,MAAMliQ,OAASiX,EAAEgrP,eAAY,GAC1ChrP,EAAEoqP,SAAW73P,KAAKqgL,OAAS/5G,IAAM74D,EAAEw2O,OAAQ,EAC9C,CACAjkP,KAAKovQ,oBAAsBtkC,EAC3B9qB,EAAEhgN,KAAM,iBACV,EACAzD,EAAE7F,UAAU24Q,eAAiB,SAAU9yQ,EAAGC,EAAG3C,GAC3C,IAAIC,EAAIkG,KAAKsqO,MACb,OAAQ/tO,GAAKyD,KAAKksP,QAAU,IAAI1mO,QAAO,SAAUjpB,GAC/C,QAAOC,IAAM1C,EAAEqiQ,aAAa5/P,EAAE01P,MAAO11P,EAAE21P,MAAO,CAC5C9d,SAAUt6O,EAAEs6O,cACJ,IAAO73O,EAAE6zD,UAAYv2D,IAAM0C,EAAE26P,OACzC,GACF,EACA36P,EAAE7F,UAAU44Q,WAAa,WACvB,IAAI/yQ,EAAIyD,KAAKsqO,MACX9tO,EAAIwD,KAAK2pP,MACT9vP,EAAImG,KAAK40P,MACT96P,EAAIk1O,EAAEzyO,EAAEmjQ,SAGV,OAFAljQ,GAAKA,EAAEyD,MAAQ1D,EAAEyrQ,YAAcluQ,EAAEiiD,MAAQv/C,EAAEyD,KAC3CpG,GAAKA,EAAEoG,MAAQ1D,EAAE0rQ,YAAcnuQ,EAAEokD,OAASrkD,EAAEoG,KACrCnG,CACT,EACAyC,EAAE7F,UAAU64Q,iBAAmB,WAC7B,OAAOvvQ,KAAKwvQ,eAAiBxvQ,KAAK41B,QAAQ+zN,OAAS,GAAK,KAAO3pP,KAAK41B,QAAQg/N,OAAS,EACvF,EACAr4P,EAAE7F,UAAU+4Q,QAAU,WACpB,IAAIlzQ,EAAIyD,KAAKsqO,MACX9tO,EAAIwD,KAAKqgL,MACTxmL,EAAImG,KAAK+6P,YACTjhQ,EAAIyC,EAAE2oQ,YACR3oQ,EAAIA,EAAEosG,SACN,IAAIpxG,EAAIyI,KAAKsvQ,aACX/oM,EAAIvmE,KAAKuvQ,mBACTjpM,EAAIxsE,EAAEysE,GACRD,EAAIA,EAAEtgB,QAAQzuD,GAAKuC,EAAEysE,GAAKD,EAAI/pE,EAAEkjP,SAASloP,GACzCiF,GAAKA,EAAEkkK,MAAK,IAAO1gK,KAAK41B,QAAQ8qI,UAAO,EAASp6F,GAChDzsE,GAAKA,EAAE6mK,MACT,EACAnkK,EAAE7F,UAAUsvD,QAAU,SAAUzpD,GAC9B,IAAIC,EAAIwD,KAAKsqO,MACXzwO,EAAImG,KAAKqgL,MACTvmL,EAAIkG,KAAK+6P,YACTxjQ,EAAIiF,EAAE43O,SACN7tK,EAAI3pE,EAAEoD,KAAK41B,QAAQquB,WACnBqiB,EAAI,CAACtmE,KAAKuvQ,mBAAoBhpM,EAAEpmD,SAAUomD,EAAEpmB,OAAQomB,EAAE93B,OAAO1sC,OAC7DoF,EAAI3K,EAAE0oQ,YAAY5+L,GAClBhvE,EAAIkF,EAAE0oQ,YAAY5+L,EAAI,KACxB,GAAI/pE,GAAK1C,EAAG0sE,EAAIvmE,KAAKsvQ,aAAcnoQ,EAAIA,EAAEw3B,KAAK,SAAU4nC,EAAEroB,SAAWqoB,EAAExqB,MAAQ,EAAGxkD,IAAMgvE,EAAE94D,EAAIjR,EAAE0yP,YAAa/nP,EAAI3K,EAAEmsG,SAAS82I,SAASl5K,GAAI/pE,EAAE0oQ,YAAY5+L,GAAKn/D,EAAG7P,EAAIkF,EAAEmsG,SAAS82I,SAAS,CACrLhyO,EAAGlW,GAAKiF,EAAEwrQ,WAAa,GAAK,IAAM,GAClCtgQ,EAAGnQ,GAAKiF,EAAE4yP,UAAY5yP,EAAE2yP,QACxBpzM,MAAO,GACPmC,OAAQ3mD,EAAIiF,EAAEspP,WAAatpP,EAAEmpP,cAC3BnpP,EAAE0oQ,YAAY5+L,EAAI,KAAOhvE,GAAIuC,EAAE6mK,KAAKv5J,GAAIrN,GAAKA,EAAE4mK,KAAKppK,QAAQ,GAAI6P,IAAMA,EAAEshD,SAAS,wBAAyB,CAC5GjsD,EAAIwD,KAAKsvQ,aACT,IAAI11Q,EAAI2sE,EAAE3jB,KACV9oD,GAAKA,EAAEq9D,QAAQ77B,WAAW9kC,SAAW+vE,EAAE3jB,KAAO,SAAUrmD,EAAGC,GACzD5C,GAAKA,EAAEiC,MAAMW,EAAGV,WAChBxE,GAAKA,EAAE6/D,SAAW7/D,EAAEqnC,KAAKniC,EAAE+D,KAAM,UAAY/D,EAAE+D,KAAOhE,EAAI,GAAKA,EACjE,GACA4K,EAAE8gD,SAAS,wBAAwBjC,QAAQxpD,EAAG+pE,EAChD,CACF,EACAhqE,EAAE7F,UAAUg5Q,aAAe,WACzB,IAAInzQ,EAAIyD,KACRA,KAAKyvQ,UACLxpQ,EAAEjG,KAAKsqO,MAAM46B,aAAa,SAAU1oQ,EAAG3C,EAAGC,GACxC0C,IAAMD,EAAE+tO,MAAM7tL,UAAUze,cAAc,oBAAsBxhC,EAAEu/B,GAAK,SAAWv/B,EAAEygF,iBAAkBnjF,EAAED,GACtG,IACAmG,KAAK2vQ,mBAAoB,EACzB3vD,EAAEhgN,KAAM,eACV,EACAzD,EAAE7F,UAAUk5Q,WAAa,WACvB,IAMEtpM,EACAn/D,EAPE5K,EAAIyD,KAAKksP,OACX1vP,EAAIwD,KAAKsqO,MACTzwO,EAAImG,KAAK41B,QAAQujO,OACjBr/P,EAAIkG,KAAKA,KAAK6vQ,eAAiB7vQ,KAAK+6P,YACpCxjQ,EAAIyI,KAAK2pP,MACTpjL,EAAI0mD,EAAEpzH,EAAE4nC,UAAUlqC,IAAKA,EAAEsvP,WAAgB,KAAM7mP,KAAKovQ,qBAAuBv1Q,EAAE0xQ,iBAAmB1xQ,EAAEuxQ,QAGpG,IAAI,IAAOvxQ,EAAE4nC,SAAWzhC,KAAKo5P,iBAAkB,IAAK9yL,EAAI,EAAGA,EAAI/pE,EAAE/F,OAAQ8vE,IAAK,CAC5E,IAAIhvE,EAAIiF,EAAE+pE,GACN1pE,GAAKuK,EAAI7P,EAAEugQ,SAAW,UAAY,OAClCj+P,EAAItC,EAAE6hQ,QAAU,CAAC,EACjB5gQ,IAAMjB,EAAE6hQ,OACZ,IAAK5yL,GAAK,qBAAuB3sE,EAAE6nC,SAAW7nC,EAAE6nC,WAAanqC,EAAE4/P,SAAU,IAAO5/P,EAAE84D,QAAS,CACzF,IAAIr1D,EAAIkyH,EAAErzH,EAAEsxN,OAAQlrN,KAAKkrN,OAAQ,QAC7B9wN,EAAI4F,KAAK06P,cAAcpjQ,EAAGA,EAAEqqC,UAAY,UAC5C3hC,KAAK0lQ,qBAAuBpuQ,EAAE8/P,UAAY7/P,EAAE2qP,WAAa9nP,EAAE2hD,OAAS,GAAKxkD,EAAEwkD,OAC3E,IAAIvhD,GAAI,IAAOlD,EAAE0jQ,SACjB7zP,EAAIA,EAAE3M,EAAI,OAAS,QAAQA,GAAGwrD,QAAQ5rD,GAAKI,IAAM,GAAKJ,EAAE2hD,OAAS,IAAMzkD,EAAEw4Q,YAAcx4Q,EAAEugQ,QAAU1wP,EAAI3K,EAAEmsG,SAASuiH,OAAOnwN,EAAGX,EAAEqT,EAAGrT,EAAEsN,EAAGtN,EAAE2hD,MAAO3hD,EAAE8jD,OAAQ3lD,EAAIqB,EAAIC,GAAGyY,IAAIxY,GAAIkG,KAAK0lQ,oBAAsBlpQ,EAAE40P,cAAgBjqP,EAAEw3B,KAAK,CAC9NlxB,EAAGnW,EAAE8/P,YACHx6P,EAAI,YACRuK,GAAK,YAAcvK,GAAKuK,EAAE3M,EAAI,OAAS,QAAQA,GAAGwrD,QAAQ5rD,GACtD+M,IAAM3K,EAAE6wO,YAAYlmO,EAAEvK,GAAGoD,KAAK66P,aAAavjQ,EAAGA,EAAEqqC,UAAY,WAChEx6B,GAAKA,EAAE8gD,SAAS3wD,EAAEihQ,gBAAgB,EACpC,MAAOpxP,IAAM7P,EAAEugQ,QAAU1wP,EAAE81E,UAC7B,CACF,EACA1gF,EAAE7F,UAAUgkQ,cAAgB,SAAUn+P,EAAGC,GACvC,IAAI3C,EAAImG,KAAK41B,QACX97B,EAAID,EAAEs/P,OACN5hQ,EAAIgF,EAAE48P,QAAU,CAAC,EACjB5yL,EAAIhvE,EAAE2zN,QAAUpxN,EAAEoxN,OAClB5kJ,EAAI2mD,EAAE11H,EAAE6zQ,OAAQtxQ,EAAEsxQ,QASpB,OARA5uQ,IAAM1C,EAAIA,EAAE2gQ,OAAOj+P,GAAIA,EAAIjF,EAAEkjQ,QAAUljQ,EAAEkjQ,OAAOj+P,GAAI8pE,EAAI2mD,EAAEzwH,GAAKA,EAAE4uQ,OAAQtxQ,GAAKA,EAAEsxQ,OAAQ9kM,GAAKxsE,GAAKA,EAAE2xQ,YAAc,KAClHlvQ,EAAEuzQ,SAAWvpM,GAAK,IAAMA,EAAEz5D,QAAQ,OAClCvQ,EAAEuzQ,WAAaxpM,EAAI,GACnB/pE,EAAI,CACFkR,EAAG5T,EAAEu8O,MAAQlyO,KAAKwF,MAAMnN,EAAE01P,MAAQ3rL,GAAK/pE,EAAE01P,MAAQ3rL,EACjD5+D,EAAGnL,EAAE21P,MAAQ5rL,GAEfA,IAAM/pE,EAAEw/C,MAAQx/C,EAAE2hD,OAAS,EAAIooB,GACxB/pE,CACT,EACAA,EAAE7F,UAAUmkQ,aAAe,SAAUt+P,EAAGC,GACtC,IAAI3C,EAAImG,KAAK41B,QAAQujO,OACnBr/P,EAAIyC,GAAKA,EAAEq5B,QACXr+B,EAAIuC,GAAKA,EAAEq/P,QAAU,CAAC,EACtB5yL,EAAIzsE,GAAKA,EAAE8gK,MACXt0F,EAAI/pE,GAAKA,EAAEq+J,MACXzzJ,EAAI5K,GAAKA,EAAEmrB,MAAQnrB,EAAEmrB,KAAKkzI,MAC1BtjK,EAAI0I,KAAK46J,MAaX,OAZAr+J,EAAI0wH,EAAE11H,EAAE2rP,UAAWrpP,EAAEqpP,WACrBppP,EAAI,EACJxC,EAAIivE,GAAKp/D,GAAKm/D,GAAKhvE,EACnBivE,EAAIhvE,EAAEo0Q,WAAa9xQ,EAAE8xQ,WAAar0Q,EAClCgvE,EAAI/uE,EAAE0rP,WAAappP,EAAEopP,WAAa3rP,EAClCkF,EAAIA,GAAK,SACT3C,EAAIA,EAAE4gQ,OAAOj+P,IAAM,CAAC,EACpBA,EAAIjF,EAAEkjQ,QAAUljQ,EAAEkjQ,OAAOj+P,IAAM,CAAC,EAChCD,EAAI0wH,EAAEzwH,EAAE0mP,UAAWrpP,EAAEqpP,UAAW3mP,EAAI0wH,EAAEzwH,EAAEkvQ,cAAe7xQ,EAAE6xQ,cAAe,IACxEnlM,EAAI/pE,EAAEmvQ,WAAa9xQ,EAAE8xQ,WAAaplM,EAG3B,CACLuvK,OAHFxvK,EAAI9pE,EAAEymP,WAAappP,EAAEopP,WAAa38K,EAIhC,eAAgB/pE,EAChB4gN,KAAM52I,EACNlmB,QALFvmD,EAAImzH,EAAEzwH,EAAE6jD,QAASxmD,EAAEwmD,QAASvmD,GAO9B,EACAyC,EAAE7F,UAAUumF,QAAU,SAAU1gF,GAC9B,IAKE4K,EACA7P,EACAsF,EAPEJ,EAAIwD,KACNnG,EAAI2C,EAAE8tO,MACN/yO,EAAI,mBAAmBsO,KAAKtN,EAAEi7E,UAAU84C,WACxC/lD,EAAI/pE,EAAEvG,MAAQ,GAWhB,IANA+pN,EAAExjN,EAAG,WACLwD,KAAK+vQ,aAAaxzQ,IACjBC,EAAE6vQ,WAAa,IAAI/zP,SAAQ,SAAU/b,IACnCK,EAAIJ,EAAED,KAAOK,EAAEuuO,SAAWrxO,EAAE8C,EAAEuuO,OAAQ3uO,GAAII,EAAEirP,QAAUjrP,EAAEwxP,aAAc,EACzE,IACA5xP,EAAEy7P,YAAcz7P,EAAE8tO,MAAM4F,OAAOgoB,YAAY17P,GACtC2K,EAAIo/D,EAAE/vE,OAAQ2Q,MAAO7P,EAAIivE,EAAEp/D,KAAO7P,EAAE2lF,SAAW3lF,EAAE2lF,UACtDzgF,EAAEwzQ,OAASxzQ,EAAEwzQ,MAAM13P,SAAQ,SAAU/b,GACnC,OAAOA,EAAE0gF,SACX,IACAliF,EAAEjC,aAAa0D,EAAEyzQ,kBACjBhqQ,EAAEzJ,GAAG,SAAUD,EAAGC,GAChBD,aAAa6/J,IAAM7/J,EAAE2zQ,SAAyD3zQ,EAAzChF,GAAK,UAAYiF,EAAI,OAAS,YACrE,IACA3C,EAAEo7P,cAAgBz4P,IAAM3C,EAAEo7P,iBAAc,GACxCn7P,EAAED,EAAEsxO,OAAQ3uO,GACZ3C,EAAE8rQ,cACF1/P,EAAEzJ,GAAG,SAAU3C,EAAGC,GAChByC,GAAK,aAAezC,UAAY0C,EAAE1C,EACpC,GACF,EACAyC,EAAE7F,UAAUy5Q,WAAa,WACvB,IAUEv2Q,EACArB,EACAwC,EACAP,EACA4hK,EACA3uJ,EACAnG,EACA8iO,EAjBE7tO,EAAIyD,KACNxD,EAAIwD,KAAKsqO,MACTzwO,EAAI2C,EAAEmsG,SACN7uG,EAAIkG,KAAK04P,MACTnhQ,EAAIyI,KAAKgwQ,OAAS,GAClBzpM,EAAIvmE,KAAKowQ,MACT9pM,EAAItmE,KAAKgkF,KACT78E,EAAIjD,KAAKI,IAAI9H,EAAEspP,WAAYtpP,EAAEmpP,aAC7BruP,EAAI0I,MAAMA,KAAK24P,UAAY,KAAO,QAClC/7P,EAAIJ,EAAE43O,SASNtJ,GAAI,EACN,GAAIhxO,EAAEtD,SAAW+vE,GAAKD,IAAMhvE,GAAK,qBAAuBA,EAAEiY,IAAK,CAC7D,IAAIq4B,EAAItwC,EAAE4qP,SACN94O,EAAI9R,EAAEkvP,MACVjgL,IAAMvmE,KAAKqwQ,UAAY9pM,EAAEp2B,OACzBm2B,GAAKA,EAAEn2B,OACP,IAAIgsK,EAAI7kN,EAAE01P,cACVlzP,EAAEwe,SAAQ,SAAUxe,EAAGujB,GACrBzjB,EAAIguC,EAAIx+B,EAAI5M,EAAEyyP,UAAY,EAAI7lP,EAAI,EAAI9R,EAAEwzP,SAAS3uC,EAAE5sM,MAAQ,EAC3D3V,EAAIQ,EAAE6yH,EAAE10H,EAAGqB,GAAI,EAAGuN,GAClB5O,EAAI6B,EAAE8J,KAAK+c,MAAM3pB,EAAEwzP,SAAS79H,EAAEnzH,EAAES,MAAO4hN,EAAE73M,MAAM,IAAO,GAAI,EAAG6C,GAC7D2jO,IAAMlxO,EAAIrB,EAAIjB,EAAEwzP,SAAS3uC,EAAE73M,MAC3B9J,EAAI0J,KAAKC,IAAIvK,EAAIrB,GACjB6jK,EAAIl4J,KAAKqL,IAAI3V,EAAGrB,GAChBkV,EAAIvJ,KAAKI,IAAI1K,EAAGrB,GAChBjB,EAAEowP,SAAW3sP,EAAI,CACf0S,EAAG7Q,EAAI6Q,EAAI2uJ,EACX10J,EAAG,EACHq0C,MAAOvhD,EACP0jD,OAAQ/2C,GACPiC,IAAMrO,EAAE0S,EAAIjR,EAAE0yP,WAAan0P,EAAE0S,KAAO1S,EAAI,CACzC0S,EAAG,EACH/F,EAAG9K,EAAI6Q,EAAI2uJ,EACXrgH,MAAO50C,EACP+2C,OAAQ1jD,GACP4O,IAAMrO,EAAE2M,EAAIlL,EAAEyyP,UAAYl0P,EAAE2M,IAC/B9K,GAAK/C,EAAEy2Q,QAAUv1Q,EAAIzD,EAAEowP,QAAU,CAC/Bj6O,EAAG,EACH/F,EAAGkgC,EAAIw0H,EAAI3uJ,EACXywC,OAAQnjD,EAAEghD,MACVA,MAAOv/C,EAAEspP,YACP,CACFr4O,EAAG1S,EAAE2M,EAAIlL,EAAE4yP,SAAW5yP,EAAEy5P,WAAWxoP,EACnC/F,EAAG,EACHq0C,MAAOhhD,EAAEmjD,OACTA,OAAQ1hD,EAAEmpP,cAEZpuP,EAAE8lB,GAAK9lB,EAAE8lB,GAAG2oC,QAAQjrD,GAAKxD,EAAE8lB,GAAKxjB,EAAE4lP,SAAS1kP,GAC3CuM,EAAI/K,EAAE,aAAe8gB,GACrB+sN,EAAI7tO,EAAE,cAAgB8gB,GACtBkpD,GAAK6jK,GAAKA,EAAE1pE,KAAKnpK,EAAE8lB,IACnBipD,GAAKh/D,GAAKA,EAAEo5J,KAAKnpK,EAAE8lB,IACnBytN,EAAIhxO,EAAES,MAAQ4hN,EAAE73M,IAChB/H,EAAEg0Q,YAAc,IAAMh4Q,IAAMA,OAAI,EAClC,IACAyH,KAAKgwQ,MAAQz4Q,CACf,MAAOgF,EAAE6zD,UAAYmW,GAAKA,EAAEr2B,MAAK,GAAKo2B,GAAKA,EAAEp2B,MAAK,GACpD,EACA3zC,EAAE7F,UAAU85Q,aAAe,SAAUj0Q,GACnC,SAASC,IACP,CAAC,QAAS,eAAe8b,SAAQ,SAAU9b,GACzC3C,EAAE2C,KAAO1C,EAAE6uG,SAAS2nK,OAASz2Q,EAAE2C,GAAGmiC,KAAK,CACrCod,MAAOliD,EAAE+6P,MAAM30P,IACfi+C,OAAQrkD,EAAE8vP,MAAM1pP,MACdpG,EAAE2C,GAAGu/C,MAAQliD,EAAE+6P,MAAM30P,IAAKpG,EAAE2C,GAAG0hD,OAASrkD,EAAE8vP,MAAM1pP,IAAKpG,EAAE2C,GAAG26B,QAAOt9B,EAAE42Q,gBAAsBl0Q,GAC/F,GACF,CACA,IAAI1C,EAAImG,KACNlG,EAAID,EAAEywO,MACRzwO,EAAE8vP,QAAU9vP,EAAEyhQ,eAAexkQ,KAAK0D,EAAEV,EAAG,SAAU0C,IAAKA,IAAK3C,EAAE22Q,aAAeh0Q,EAC9E,EACAD,EAAE7F,UAAUg6Q,UAAY,SAAUn0Q,EAAGC,EAAG3C,EAAGC,EAAGvC,GAC5C,IAAI+uE,EAAItmE,KAAKzD,GACX4K,GAAKm/D,EASP,OARAzsE,EAAI,CACFmlD,WAAYnlD,EACZ0nD,OAAQznD,GAAK,IAEf,qBAAuBkG,KAAKqgD,SAAWrgD,KAAKsqO,MAAM+C,YAAc,aAAertO,KAAKwpC,QAAU3vC,EAAEwmD,QAAUrgD,KAAKqgD,SAC/Gl5C,IAAMnH,KAAKzD,GAAK+pE,EAAItmE,KAAKsqO,MAAM3hI,SAASpiC,IAAIj0D,IAAI/a,IAChD+uE,EAAEre,SAAS,cAAgBzrD,EAAI,sBAAwBwD,KAAKguB,MAAQ,eAAiBhuB,KAAK/G,KAAO,YAAcstE,EAAEvmE,KAAKk2P,YAAc,oBAAsBl2P,KAAKk2P,WAAa,IAAM,KAAOl2P,KAAK41B,QAAQwI,WAAa,KAAOkoC,EAAE7d,SAAS,sBAAwB,sBAAwB,KAAK,GAC1R6d,EAAE3nC,KAAK9kC,GAAGsN,EAAI,OAAS,WAAWnH,KAAKw/P,cAChCl5L,CACT,EACA/pE,EAAE7F,UAAU8oQ,WAAa,WACvB,IAAIjjQ,EAAIyD,KAAKsqO,MACX9tO,EAAIwD,KAAK2pP,MACT9vP,EAAImG,KAAK40P,MAEX,OADAr4P,EAAE63O,WAAa53O,EAAI3C,EAAGA,EAAImG,KAAK2pP,OACxB,CACL1Q,WAAYz8O,EAAIA,EAAE0lD,KAAO3lD,EAAE6yP,SAC3BlW,WAAYr/O,EAAIA,EAAE6jC,IAAMnhC,EAAE4yP,QAC1BhW,OAAQ,EACRC,OAAQ,EAEZ,EACA78O,EAAE7F,UAAUq5Q,aAAe,SAAUxzQ,GACnCA,GAAKiL,EAAExH,MACPA,KAAKs7P,eAAe9kQ,SAAWwJ,KAAKs7P,eAAehjP,SAAQ,SAAU/b,GACnEA,GACF,IAAIyD,KAAKs7P,eAAe9kQ,OAAS,EACnC,EACA+F,EAAE7F,UAAUgyG,OAAS,WACnB,IAAInsG,EAAIyD,KACNxD,EAAID,EAAE+tO,MACNzwO,EAAI0C,EAAEq5B,QACN97B,EAAI8C,EAAE/C,EAAEoqD,WACR1sD,EAAIgF,EAAE6zD,QAAU,UAAY,SAC5BmW,EAAI1sE,EAAE0nD,OACN+kB,EAAI/pE,EAAE60P,YACNjqP,EAAI3K,EAAEwsQ,YACN1xQ,EAAIkF,EAAE43O,SACR53O,GAAKD,EAAEozQ,mBAAqBnzQ,EAAEmsG,SAASyuI,MAAQt9O,EAAEqmB,SAAW,EAC5D6/L,EAAEhgN,KAAM,UACR,IAAIpG,EAAI2C,EAAEm0Q,UAAU,QAAS,SAAUn5Q,EAAGgvE,EAAGp/D,GAC7C5K,EAAEw+P,YAAcx+P,EAAEm0Q,UAAU,cAAe,UAAWn5Q,EAAGgvE,EAAGp/D,IAC5D,IAAOtN,EAAE6mK,MAAQnkK,EAAEkzQ,UACnBlzQ,EAAEypD,SAAWxpD,GAAKD,EAAEypD,SAAQ,GAC5BpsD,EAAEw6O,WAAWnnH,EAAE1wH,EAAEo0Q,WAAYp0Q,EAAE8iQ,cAAe/nQ,EAC9CiF,EAAEq0Q,YAAcr0Q,EAAEq0Q,YAAar0Q,EAAE4zQ,cACjC5zQ,EAAE6zD,SAAW7zD,EAAEqzQ,aACfrzQ,EAAEs0Q,gBAAkBt0Q,EAAEs0Q,iBACtBt0Q,EAAEu0Q,cAAgBv0Q,EAAEu0Q,eACpBv0Q,EAAEo5P,cAAe,IAAOp5P,EAAEq5B,QAAQ6nO,qBAAuBlhQ,EAAEo5P,cAC3Dp5P,EAAEi0Q,aAAal5Q,GACfiF,EAAEypD,SAAWxpD,GAAKD,EAAEypD,UACpBsgB,IAAM9pE,GAAK1C,EAAE20C,QAAUjyC,GAAK1C,EAAE20C,OAAQlyC,EAAE0zQ,iBAAmBtwB,GAAE,WAC3DpjP,EAAEmzQ,cACJ,GAAGlzQ,GAAK,IACRD,EAAEsrP,SAAU,EACZtrP,EAAE60P,aAAc,EAChBpxC,EAAEzjN,EAAG,cACP,EACAA,EAAE7F,UAAUi4P,OAAS,WACnB,IAAIpyP,EAAIyD,KAAKsqO,MACX9tO,EAAIwD,KAAK6nP,SAAW7nP,KAAKmsP,YACzBtyP,EAAImG,KAAKqgL,MACTvmL,EAAIkG,KAAK2pP,MACTpyP,EAAIyI,KAAK40P,MACX/6P,IAAM0C,EAAE63O,UAAYv6O,EAAE8kC,KAAK,CACzBod,MAAOx/C,EAAE0yP,UACT/wM,OAAQ3hD,EAAE2yP,aACRr1P,EAAEmsD,QAAQ,CACZizL,WAAYhsH,EAAEnzH,GAAKA,EAAEooD,KAAM3lD,EAAE6yP,UAC7BlW,WAAYjsH,EAAE11H,GAAKA,EAAEmmC,IAAKnhC,EAAE4yP,YAE9BnvP,KAAK0vN,YACL1vN,KAAK0oG,SACLlsG,UAAYwD,KAAKyuP,MACnB,EACAlyP,EAAE7F,UAAUsmQ,YAAc,SAAUzgQ,EAAGC,GACrC,IAAI3C,EAAImG,KAAK2pP,MACX7vP,EAAIkG,KAAK40P,MACTr9P,EAAIyI,KAAKsqO,MAAM8J,SACjB,OAAOp0O,KAAK+wQ,aAAa,CACvBz5N,QAAS//C,EAAIsC,EAAEoG,IAAM1D,EAAE61P,OAASv4P,EAAEyc,IAAM/Z,EAAE41P,OAASt4P,EAAEyc,IACrD47O,MAAO36P,EAAIuC,EAAEmG,IAAM1D,EAAE41P,OAASr4P,EAAEwc,IAAM/Z,EAAE61P,OAASt4P,EAAEwc,KAClD9Z,EAAGD,EACR,EACAA,EAAE7F,UAAUs6Q,YAAc,SAAUz0Q,GAClC,SAASC,EAAED,EAAGzC,EAAGvC,GACf,IAAIgvE,EAAIhqE,GAAKA,EAAE/F,OACf,GAAI+vE,EAAG,CACL,IAAID,EAAIzsE,EAAEo3Q,YAAYn3Q,EAAIvC,GAK1B,OAJAgF,EAAE8M,MAAK,SAAU9M,EAAGC,GAClB,OAAOD,EAAE+pE,GAAK9pE,EAAE8pE,EAClB,IAEO,CACLmxK,MAAOl7O,EAFTgqE,EAAIriE,KAAKwF,MAAM68D,EAAI,IAGjBrkB,KAAM1lD,EAAED,EAAEf,MAAM,EAAG+qE,GAAIzsE,EAAI,EAAGvC,GAC9BylD,MAAOxgD,EAAED,EAAEf,MAAM+qE,EAAI,GAAIzsE,EAAI,EAAGvC,GAEpC,CACF,CACAyI,KAAKkxQ,gBAAiB,EACtB,IAAIr3Q,EAAImG,KACNlG,GAAK,EAAID,EAAE+7B,QAAQmnO,mBAAmBjwP,QAAQ,KAAO,EAAI,SACpDjT,EAAE40P,OACT9O,GAAE,WACA9lP,EAAE40P,OAASjyP,EAAE3C,EAAEw1Q,eAAe,MAAOx1Q,EAAE2jQ,aAAc1jQ,EAAGA,GACxDD,EAAEq3Q,gBAAiB,CACrB,GAAGr3Q,EAAE+7B,QAAQu7O,OAAS50Q,GAAK,eAAiBA,EAAEtD,KAAO,EAAI,EAC3D,EACAsD,EAAE7F,UAAUq6Q,aAAe,SAAUx0Q,EAAGC,EAAG3C,GAiBzC,IAAItC,EAAIyI,KACNsmE,EAAItmE,KAAKixQ,YAAY,GACrB9pQ,EAAInH,KAAKixQ,YAAY,GACrB35Q,EAAIkF,EAAI,QAAU,OAGpB,GAFAA,GAAK,EAAIjF,EAAEq+B,QAAQmnO,mBAAmBjwP,QAAQ,KAAO,EAAI,EACzD9M,KAAKyuP,QAAUzuP,KAAKkxQ,gBAAkBlxQ,KAAKgxQ,YAAYn3Q,GACnDmG,KAAKyuP,OAAQ,OAtBjB,SAAS30P,EAAEyC,EAAGC,EAAG3C,EAAG+C,GAClB,IAAIhD,EAAI4C,EAAEi7O,MACRl/O,EAAIhB,EAAE05Q,YAAYp3Q,EAAI+C,GACtB7B,EAAInB,EACJQ,EAAImsE,EAAEhqE,EAAE+pE,KAAOC,EAAE3sE,EAAE0sE,IAAMpiE,KAAKG,IAAI9H,EAAE+pE,GAAK1sE,EAAE0sE,GAAI,GAAK,KAClD9rE,EAAI+rE,EAAEhqE,EAAE4K,KAAOo/D,EAAE3sE,EAAEuN,IAAMjD,KAAKG,IAAI9H,EAAE4K,GAAKvN,EAAEuN,GAAI,GAAK,KASxD,OARA3M,GAAKJ,GAAK,IAAMI,GAAK,GACrBZ,EAAEomM,KAAOz5H,EAAE/rE,GAAK0J,KAAKu+J,KAAKjoK,GAAK8tE,OAAOknL,UACtC51P,EAAEqjQ,MAAQ12L,EAAEnsE,GAAK8J,KAAKu+J,KAAKroK,GAAKkuE,OAAOknL,UAGvCp1P,EAAI,GAFJ7B,EAAIgE,EAAEhE,GAAKqB,EAAErB,IAED,QAAU,OACtBiE,EAFAhC,EAAI,EAAIjC,EAAI,OAAS,WAEcwC,GAA1BP,EAAIV,EAAEyC,EAAGC,EAAEhC,GAAIX,EAAI,EAAG+C,IAAUtF,GAAKyD,EAAEzD,GAAKkD,EAAIZ,GACzD4C,EAAEpC,IAAM8J,KAAKu+J,KAAKlqK,EAAIA,GAAKwC,EAAEzD,KAAiCyD,GAA1BwB,EAAIzC,EAAEyC,EAAGC,EAAEpC,GAAIP,EAAI,EAAG+C,IAAUtF,GAAKyD,EAAEzD,GAAKiF,EAAIxB,GAC7EA,CACT,CAOwBjB,CAAEyC,EAAGyD,KAAKyuP,OAAQjyP,EAAGA,EAC/C,EACAD,EAAE7F,UAAU63Q,uBAAyB,WACnC,IAAIhyQ,EAAIyD,KAAK41B,QACXp5B,EAAID,EAAE4rP,WACNtuP,EAAImG,KAAK2pP,MAGX,MADA,aADAptP,EAAIA,EAAEiwP,kBACcjwP,EAAI1C,EAAEqoP,UAAY,GAAK,IACpCpwF,EAAEv1J,GAAKA,GAAKC,GAAK3C,EAAEsuP,YAAc,CAC1C,EACA5rP,EAAE7F,UAAUy4Q,cAAgB,SAAU5yQ,GACpC,IAAIC,EAAIwD,KAAKsqO,MACXzwO,EAAImG,KAAK2pP,MACT7vP,EAAIkG,KAAK40P,MACX,MAAO,qBAAuBr4P,EAAE21P,OAAS,qBAAuB31P,EAAE01P,OAAS,GAAK11P,EAAE21P,OAAS31P,EAAE21P,QAAUp4P,EAAIA,EAAEmG,IAAMzD,EAAE0yP,aAAe,GAAK3yP,EAAE01P,OAAS11P,EAAE01P,QAAUp4P,EAAIA,EAAEoG,IAAMzD,EAAEyyP,UAChL,EACA1yP,EAAE7F,UAAUi/P,YAAc,WACxB,IAAIp5P,EAAIyD,KACNxD,EAAID,EAAEq5B,QACN/7B,EAAI2C,EAAE40Q,YACNt3Q,EAAI,GAAG+Y,OAAOhZ,EAAI0C,EAAE80Q,SAAW90Q,EAAE+0Q,WACjC/5Q,EAAIgF,EAAE+tO,MACN/jK,EAAIhvE,EAAEk9P,QACNttP,EAAI5P,EAAEoxG,SACNrxG,EAAIC,EAAEq+B,QAAQowK,QAAQphB,KACtBhrL,EAAI2C,EAAEm6P,QACN95P,EAAI,SAAUJ,GACRjF,EAAE09P,cAAgB14P,GAAGA,EAAE2hN,aAC7B,EACA3lN,EAAI,qBAAuB+O,EAAI,KAAQ,MAAQ,IACjD1N,EAAIA,EAAE+kC,KAAK,CACT7kC,EAAGA,IACAyC,EAAE6zQ,QAAU7zQ,EAAEm6P,QAAUvvP,EAAEmxF,KAAKx+F,GAAG6kC,KAAK,CAC1CqgB,WAAYziD,EAAE6zD,QAAU,UAAY,SACpC7O,OAAQ,IACP0G,SAASpuD,EAAI,0BAA4B,2BAA2ByY,IAAI/V,EAAE8jL,OAAQ9oL,EAAE81O,YAAc9wO,EAAEm6P,QAAQ/3N,KAAK,CAClH,iBAAkB,QAClB,kBAAmB,QACnBm3M,OAAQv9O,EACR4kN,KAAMtjN,EAAItB,EAAI,OACd,eAAgBgE,EAAE6zQ,MAAM/5B,eAAiBx8O,EAAI,EAAI,EAAIvC,KACnD,CAACiF,EAAEm6P,QAASn6P,EAAEw+P,YAAax+P,EAAEkjQ,iBAAiBnnP,SAAQ,SAAU/b,GAC9DA,IAAMA,EAAE0rD,SAAS,sBAAsBtV,GAAG,YAAa/1C,GAAG+1C,GAAG,YAAY,SAAUp2C,GACrFgqE,EAAEs3L,kBAAkBthQ,EACtB,IAAIC,EAAEq9K,SAAWtiL,EAAE81O,YAAc9wO,EAAE4yC,IAAI,CACrC0qI,OAAQr9K,EAAEq9K,SACRvzG,IAAI/pE,EAAEo2C,GAAG,aAAc/1C,EAC7B,KACAojN,EAAEhgN,KAAM,mBACV,EACAzD,EAAE7F,UAAU62Q,SAAW,SAAUhxQ,EAAGC,EAAG3C,EAAGC,EAAGvC,GAC3C,IAAIgvE,EAAIvmE,KAAK41B,QACX0wC,EAAItmE,KAAK/J,KACTkR,EAAInH,KAAKsqO,MACThzO,EAAI0I,KAAK2pP,MACXryP,EAAIA,GAAKA,EAAEwxP,UAAYxxP,EAAEmgB,MACzB,IAEElf,EAFEqB,EAAI2sE,EAAEtwE,KACR2G,EAAIoD,KAAKoqP,MAEX5tP,EAAIywH,EAAEzwH,GAAG,GACT,IAAIzB,EAAI,CACNowO,OAAQnrO,MAEVA,KAAKskQ,WAAW5tQ,UAAU8gQ,aAAa37P,MAAMd,EAAG,CAACwB,IACjD,IAAInC,EAAIW,EAAE0S,EACNjT,EAAIoC,EAAEpG,OACV,GAAIwJ,KAAK+rP,gBAAkB3xP,EAAIwC,EAAEpC,EAAI,GAAI,IAAKjC,GAAI,EAAIiC,GAAKoC,EAAEpC,EAAI,GAAKJ,GAAII,IAC1EwF,KAAK45P,qBAAqB7+P,EAAG,SAAUP,EAAG,EAAG,GAC7CwF,KAAK45P,qBAAqB7+P,EAAGP,GAC7BlD,GAAKyD,EAAE1B,OAAS/B,EAAE8C,GAAKW,EAAE1B,MACzBO,EAAE+7B,OAAOn7B,EAAG,EAAG+B,GACfhE,IAAMyH,KAAK/J,KAAK0/B,OAAOn7B,EAAG,EAAG,MAAOwF,KAAKksD,eACzC,UAAYqa,EAAEwzL,YAAc/5P,KAAKosP,iBACjCvyP,IAAMysE,EAAE,IAAMA,EAAE,GAAGp9B,OAASo9B,EAAE,GAAGp9B,QAAO,IAAOo9B,EAAErvE,QAAS+I,KAAK45P,qBAAqB7+P,EAAG,SAAUnB,EAAE3C,WACnG,IAAOM,GAAKyoN,EAAEhgN,KAAM,WAAY,CAC9By3O,MAAO18O,IAETiF,KAAKmsP,YAAcnsP,KAAK6nP,SAAU,EAClCrrP,GAAK2K,EAAEwnP,OAAO70P,EAChB,EACAyC,EAAE7F,UAAUujQ,YAAc,SAAU19P,EAAGC,EAAG3C,GACxC,IAAIC,EAAIkG,KACNumE,EAAIzsE,EAAE7D,KACNqwE,EAAIC,EAAEhqE,GACN4K,EAAIrN,EAAEoyP,OACN50P,EAAIwC,EAAEwwO,MACN1tO,EAAI,WACFuK,GAAKA,EAAE3Q,SAAW+vE,EAAE/vE,QAAU2Q,EAAEwuB,OAAOp5B,EAAG,GAC1CgqE,EAAE5wC,OAAOp5B,EAAG,GACZzC,EAAE87B,QAAQ3/B,KAAK0/B,OAAOp5B,EAAG,GACzBzC,EAAE8/P,qBAAqBtzL,GAAK,CAC1B6kK,OAAQrxO,GACP,SAAUyC,EAAG,GAChB+pE,GAAKA,EAAE2W,UACPnjF,EAAE+tP,SAAU,EACZ/tP,EAAEqyP,aAAc,EAChB3vP,GAAKlF,EAAEq3P,QACT,EACFp3P,EAAEsC,EAAGvC,GACLkF,EAAIywH,EAAEzwH,GAAG,GACT8pE,EAAIA,EAAE8xL,eAAe,SAAU,KAAMx7P,GAAKA,GAC5C,EACAL,EAAE7F,UAAUwyC,OAAS,SAAU3sC,EAAGC,EAAG3C,EAAGC,GACtC,SAASvC,IACPgvE,EAAE0W,QAAQnjF,GACVwsE,EAAE0zL,cAAgB1zL,EAAEmsL,YAAa,EACjCnsL,EAAEsiM,aACF37I,EAAE1wH,GAAG,IAAO+pE,EAAEqoL,OAAOnyP,EACvB,CACA,IAAI+pE,EAAIvmE,KACNsmE,EAAIC,EAAE+jK,OACR,IAAOzwO,EAAImmN,EAAEz5I,EAAG,SAAU,KAAMhvE,GAAKA,GACvC,EACAgF,EAAE7F,UAAUwmF,OAAS,SAAU3gF,EAAGC,GAChCD,EAAIjF,EAAEiF,EAAGyD,KAAK8nP,aACd9nC,EAAEhgN,KAAM,SAAU,CAChB41B,QAASr5B,IAEX,IAUExB,EAVElB,EAAImG,KACNlG,EAAID,EAAEywO,MACN/yO,EAAIsC,EAAEiuP,YACNvhL,EAAI1sE,EAAE03Q,aAAe13Q,EAAEZ,KACvBqtE,EAAIxsE,EAAE87B,QAAQq6M,YACd9oO,EAAIijO,EAAE7jK,GAAG7vE,UACTkG,EAAI/C,EAAE81Q,mBAAqB,CACzB1rN,WAAW,GAEb1rD,EAAI,CAAC,EAEL6B,EAAI,CAAC,eAAgB,kBAAmB,cACxCI,EAAI+B,EAAEtD,MAAQ1B,EAAE0B,MAAQa,EAAE87B,QAAQ00M,MAAMrxO,KACxCmjK,IAAMp8J,KAAKstQ,gBAAkB9yQ,GAAKA,IAAMwF,KAAK/G,MAAQ,qBAAuBsD,EAAEkwQ,YAAc,qBAAuBlwQ,EAAEmwQ,eAAiB,qBAAuBnwQ,EAAEq7P,gBAAkB/9P,EAAE23Q,iBAAiB,iBAAmB33Q,EAAE23Q,iBAAiB,eAAiB33Q,EAAE23Q,iBAAiB,kBAAoB33Q,EAAE23Q,iBAAiB,sBAAwB33Q,EAAE23Q,iBAAiB,SAkBlW,GAjBAh3Q,EAAIA,GAAK+rE,EACT61F,IAAMhiK,EAAEtD,KAAK,OAAQ,cAAe,SAAU,iBAAkB,iBAAkB,aAAc,UAAW,mBAAoB,kBAAmB,QAAS,QAAS,SAAU,SAAU,UAAW,OAAQ,OAAQ,OAAQ,SAAS,IAAOyF,EAAE6zD,SAAWh2D,EAAEtD,KAAK,OAAQ,SAAU+C,EAAEuyQ,eAAe9zP,SAAQ,SAAU/b,GAClTnC,EAAEtD,KAAKyF,EAAI,OACb,IAAIA,EAAEtG,OAASsG,EAAEy7P,aAAe77C,EAAEtiN,EAAE+7B,QAAQoiO,YAAaz7P,EAAEy7P,aAAch4P,KAAKk0F,QAAQ33F,EAAEtG,MAAM,KAC9FsG,EAAIyyO,EAAEz3O,EAAGqF,EAAG,CACVoxB,MAAO,qBAAuBz2B,EAAEy2B,MAAQn0B,EAAEm0B,MAAQz2B,EAAEy2B,MACpDy+O,WAAYx/I,EAAE3mD,GAAKA,EAAE6kK,QAAU7kK,EAAE6kK,OAAOshC,WAAYl1Q,EAAEk1Q,WAAY5yQ,EAAEuwP,MAAM,MACxEhuF,GAAK,CACPnmK,KAAM4D,EAAE+7B,QAAQ3/B,MACfsG,GACH6/J,GAAK7/J,EAAEtG,OAASsG,EAAEtG,KAAO4D,EAAE+7B,QAAQ3/B,OACnCmE,EAAI,CAAC,QAAS,cAAe,kBAAmB,kBAAkByY,OAAOzY,IACvEke,SAAQ,SAAU/b,GAClBnC,EAAEmC,GAAK1C,EAAE0C,UACF1C,EAAE0C,EACX,IACA+pE,GAAI,EACA8jK,EAAE5vO,IACJ,GAAI8rE,EAAI9rE,IAAMX,EAAEZ,KAAMY,EAAEqvC,QAAO,GAAI,GAAI,GAAI,GAAKo9B,EAAG,GAAI7vE,OAAO4lE,eAAgB5lE,OAAO4lE,eAAexiE,EAAGuwO,EAAE5vO,GAAG9D,eAAgB,CAE1H,IAAKqE,KADL6B,EAAInG,OAAOE,eAAeC,KAAKiD,EAAG,aAAeA,EAAE+wO,SACzCzjO,EAAGtN,EAAEkB,QAAK,EACpBohN,EAAEtiN,EAAGuwO,EAAE5vO,GAAG9D,WACVkG,EAAI/C,EAAE+wO,SAAWhuO,SAAW/C,EAAE+wO,QAChC,OACKhxO,EAAE,IAAI,EAAIE,EAAG,CAClB0qQ,iBAAkBhqQ,IAMpB,GAJAJ,EAAEke,SAAQ,SAAU/b,GAClB1C,EAAE0C,GAAKnC,EAAEmC,EACX,IACA1C,EAAE06B,KAAKz6B,EAAGyC,GACN6/J,GAAKp8J,KAAKksP,OAAQ,CACpB,IAAIz+O,EAAI5T,EAAE+7B,SACV,IAAOnoB,EAAE2iD,SAAW73D,EAAEs/P,QAAU,EAAGt/P,EAAEu/P,UAAY,GAAKj+P,EAAEq/P,kBAAoB38P,EAAIkR,EAAE0rP,OAAQhyP,EAAIsG,EAAEkqP,YAAap7P,IAAK,IAAOA,EAAEklC,UAAYlqC,EAAE4hQ,QAAU5hQ,EAAE4hQ,OAAOjuC,UAAY3uN,EAAE2uN,SAAW3yN,EAAEs/P,QAAU,GAAI1wP,IAAK,IAAOA,EAAEs6B,UAAYlpC,EAAEu/P,UAAY,IAC7O93P,KAAKksP,OAAO5zO,SAAQ,SAAU/b,GAC5BA,GAAKA,EAAE4uO,SAAW5uO,EAAEw8P,eAAgBtiQ,OAAOwL,KAAK1J,GAAG/B,QAAU+F,EAAEw7P,gBAAgBx/P,IAAI,IAAOkV,EAAE41P,cAAgB9mQ,EAAE07P,YAAcn+P,EAAEo2O,OAAOgoB,YAAY37P,GACnJ,GAAGyD,KACL,CACAnG,EAAE03Q,YAAchrM,EAChBzsE,EAAE8uQ,aACFtiM,GAAKzsE,EAAE2hQ,aAAahlQ,SAAWqD,EAAEsyP,aAAc,GAC/CnsC,EAAEhgN,KAAM,eACRitH,EAAEzwH,GAAG,IAAO1C,EAAE60P,SAAOvyF,QAAI,EAC3B,EACA7/J,EAAE7F,UAAU+6Q,QAAU,SAAUl1Q,GAC9ByD,KAAK3G,KAAO2G,KAAK41B,QAAQv8B,KAAO2G,KAAK8nP,YAAYzuP,KAAOkD,EACxDyD,KAAKsqO,MAAM0vB,eAAgB,CAC7B,EACAz9P,EAAE7F,UAAU86Q,iBAAmB,SAAUj1Q,GACvC,IAAIC,EAAIwD,KAAK41B,QAAQr5B,GACnB1C,EAAImG,KAAKsqO,MAAM10M,QAAQq6M,YACvBn2O,EAAIkG,KAAK8nP,YAAYvrP,GACvB,OAAOzC,EAAI0C,IAAM1C,EAAI0C,IAAMywH,EAAEpzH,GAAKA,EAAEmG,KAAK/G,OAASY,EAAEmG,KAAK/G,MAAMsD,GAAI1C,GAAKA,EAAEsxO,QAAUtxO,EAAEsxO,OAAO5uO,GAAIC,EACnG,EACAD,EAAE7F,UAAUwnN,YAAc,WACxB,IAAI3hN,EAAIyD,KAAKsqO,MACX9tO,EAAID,EAAE04P,YACR14P,EAAEk4P,QAAQ8J,qBACN/hQ,GAAKA,IAAMwD,MAAMxD,EAAE44P,aACvBp1P,KAAK41B,QAAQge,OAAO89N,WAAa1xD,EAAEhgN,KAAM,aACzCA,KAAK2+O,SAAS,SACdpiP,EAAE04P,YAAcj1P,IAClB,EACAzD,EAAE7F,UAAU0+P,WAAa,WACvB,IAAI74P,EAAIyD,KAAK41B,QACXp5B,EAAIwD,KAAKsqO,MACTzwO,EAAI2C,EAAEwpM,QACNlsM,EAAI0C,EAAEo6P,WACRp6P,EAAEy4P,YAAc,KACZn7P,GAAGA,EAAEs7P,aACTp1P,MAAQzD,EAAEq3C,OAAO+9N,UAAY3xD,EAAEhgN,KAAM,aACpCnG,GAAKmG,KAAKu9P,gBAAkB1jQ,EAAEw3O,SAAWrxO,KAAK6rP,iBAAmBhyP,EAAEs2C,OACpE3zC,EAAE2uO,OAAO7yN,SAAQ,SAAU/b,GACzBA,EAAEoiP,SAAS,IAAI,EACjB,GACF,EACApiP,EAAE7F,UAAUioP,SAAW,SAAUpiP,EAAGC,GAClC,IAAI3C,EAAImG,KACNlG,EAAID,EAAE+7B,QACNr+B,EAAIsC,EAAEu2Q,MACN7pM,EAAIzsE,EAAEugQ,oBACN/zL,EAAIxsE,EAAE2gQ,OACNtzP,EAAI8lH,EAAE3mD,EAAE/pE,GAAK,WAAa+pE,EAAE/pE,GAAK,UAAU0nD,UAAWpqD,EAAEywO,MAAM10M,QAAQ00M,MAAMrmL,WAC5E3sD,EAAIwC,EAAEopP,UACNtmP,EAAI,EACJhD,EAAIE,EAAEumD,QAER,GADA9jD,EAAIA,GAAK,GACL1C,EAAE2vC,QAAUjtC,IAAM,CAAC1C,EAAEwmL,MAAOxmL,EAAEkhQ,YAAalhQ,EAAE4lQ,iBAAiBnnP,SAAQ,SAAU9b,GAClFA,IAAM3C,EAAE2vC,OAAShtC,EAAE6rD,YAAY,qBAAuBxuD,EAAE2vC,OAAQjtC,GAAKC,EAAEyrD,SAAS,qBAAuB1rD,GACzG,IAAI1C,EAAE2vC,MAAQjtC,GAAI1C,EAAEywO,MAAM+C,YAAa,CACrC,GAAI/mK,EAAE/pE,KAAM,IAAO+pE,EAAE/pE,GAAGklC,QAAS,OAEjC,GADAllC,IAAMjF,EAAIgvE,EAAE/pE,GAAG2mP,WAAa5rP,GAAKgvE,EAAE/pE,GAAGmvQ,eAAiB,GAAI9xQ,EAAIqzH,EAAE3mD,EAAE/pE,GAAG8jD,QAASzmD,IAC3ErC,IAAMA,EAAE+vP,UAAW,IAAKxtP,EAAI,CAC9B,eAAgBxC,GACfC,EAAEyuD,QAAQlsD,EAAGqN,GAAItN,EAAE,cAAgB+C,IAAK/C,EAAE,cAAgB+C,GAAGopD,QAAQlsD,EAAGqN,GAAIvK,GAAK,EACpF2pE,GAAK,CAAC1sE,EAAEwmL,MAAOxmL,EAAEkhQ,YAAalhQ,EAAE4lQ,gBAAiB5lQ,EAAE+3Q,eAAet5P,SAAQ,SAAU/b,GAClFA,GAAKA,EAAEypD,QAAQ,CACb3F,QAASzmD,GACRuN,EACL,GACF,CACA3K,GAAK+pE,GAAK1sE,EAAEqyP,QAAUryP,EAAE6hQ,oBAAoBn/P,QAAK,EACnD,EACAA,EAAE7F,UAAUglQ,oBAAsB,SAAUn/P,GAC1CyD,KAAKksP,OAAO5zO,SAAQ,SAAU9b,GAC5BA,EAAEmiP,UAAYniP,EAAEmiP,SAASpiP,EAC3B,GACF,EACAA,EAAE7F,UAAUwtQ,WAAa,SAAU3nQ,EAAGC,GACpC,IAAI3C,EAAImG,KACNlG,EAAID,EAAEywO,MACN/yO,EAAIsC,EAAEo+P,WACN1xL,EAAIzsE,EAAE87B,QAAQ00M,MAAMmD,mBACpBnnK,EAAIzsE,EAAEu2D,QACNjpD,GAAKtN,EAAEu2D,QAAU7zD,EAAI1C,EAAE+7B,QAAQw6B,QAAUv2D,EAAEiuP,YAAY13L,QAAU,qBAAuB7zD,GAAK+pE,EAAI/pE,GAAK,OAAS,OACjH,CAAC,QAAS,kBAAmB,cAAe,UAAW,MAAM+b,SAAQ,SAAU/b,GACzE1C,EAAE0C,IAAI1C,EAAE0C,GAAG4K,IACjB,IACIrN,EAAEm7P,cAAgBp7P,IAAMC,EAAE88P,YAAc98P,EAAE88P,WAAWzrB,UAAYtxO,GAAGA,EAAEu7P,aAC1E79P,GAAKuC,EAAEo2O,OAAO0xB,aAAa/nQ,EAAG0C,GAC9B1C,EAAEguP,SAAU,EACZhuP,EAAE+7B,QAAQs0N,UAAYpwP,EAAEqxO,OAAO7yN,SAAQ,SAAU/b,GAC/CA,EAAEq5B,QAAQs0N,UAAY3tP,EAAE6zD,UAAY7zD,EAAEsrP,SAAU,EAClD,IACAhuP,EAAE2hQ,aAAaljP,SAAQ,SAAU9b,GAC/BA,EAAE0nQ,WAAW3nQ,GAAG,EAClB,IACAgqE,IAAMzsE,EAAE24P,YAAa,GACrBzyC,EAAEnmN,EAAGsN,IACL,IAAO3K,GAAK1C,EAAE60P,QAChB,EACApyP,EAAE7F,UAAUw5C,KAAO,WACjBlwC,KAAKkkQ,YAAW,EAClB,EACA3nQ,EAAE7F,UAAUy5C,KAAO,WACjBnwC,KAAKkkQ,YAAW,EAClB,EACA3nQ,EAAE7F,UAAU+lC,OAAS,SAAUlgC,GAC7ByD,KAAK2hC,SAAWplC,EAAIyD,KAAK41B,QAAQ+L,SAAW,qBAAuBplC,GAAKyD,KAAK2hC,SAAWplC,EACxFyD,KAAKqiC,WAAariC,KAAKqiC,SAASX,QAAUnlC,GAC1CyjN,EAAEhgN,KAAMzD,EAAI,SAAW,WACzB,EACAA,EAAE7F,UAAUs/P,kBAAoB,SAAUz5P,EAAGC,EAAG3C,GAI9C,YAHA,IAAWA,IAAMA,EAAI,CAAC,GACtBA,EAAEsxO,OAASnrO,KACXnG,EAAEuiQ,iBAAkB,EACbp8P,KAAKsqO,MAAM6xB,aAAa5/P,EAAGC,EAAG3C,EACvC,EACA0C,EAAEw1G,eAAiBy4H,EACZjuO,CACT,CA5pCI,GA6pCJ4/M,EAAE5/M,EAAE7F,UAAW,CACb21Q,UAAW,CAAC,QAAS,SACrBtjB,KAAM,SACNuQ,aAAc,EACdyU,aAAc,EACdvQ,aAAa,EACbsF,iBAAkBp7P,EAAEyjQ,eACpB9L,aAAa,EACb4R,YAAa,CAAC,UAAW,SACzB7E,eAAgB,CAAC,IAAK,KACtB9H,WAAY/5B,EACZwhB,gBAAgB,EAChB4gB,QAAQ,IAEVliC,EAAEU,OAAS5uO,EAGJA,CACT,IACAiL,EAAEjL,EAAG,mCAAoC,CAACA,EAAE,wCAAyCA,EAAE,qBAAsBA,EAAE,uBAAwBA,EAAE,yBAA0BA,EAAE,qCAAsCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,GAC3P,IAAI3iM,EAAIrrC,EAAE+xC,KACRm8L,EAAIF,EAAEU,SACN7uE,EAAImuE,EAAEtyO,cACN8C,EAAIwvO,EAAEv1M,MACNp4B,EAAI2tO,EAAEkC,KACRhC,EAAE1B,EAAG,qBAAqB,SAAUxsO,GAClC,IAAI1C,EAAImG,KAAK41B,QAAQ00M,MAAMunC,mBACzBt6Q,EAAIsC,GAAKA,EAAEmiD,SAEb,GADAniD,EAAIA,GAAKA,EAAEqwL,WACNlqL,KAAK2oG,SAASgqI,UAAW,CAC5B,GAAIp7O,GACF,GAAIyI,KAAKw1P,kBAAoBj+P,EAAI2M,KAAKI,IAAI,EAAG/M,EAAIyI,KAAK8lP,YAAa,CACjE9lP,KAAK4lQ,kBAAoB5lQ,KAAK2oG,SAASi9J,kBAAoB7qQ,EAAEiF,KAAKk1O,SAClEl1O,KAAKk1O,QAAQn5L,MAAQ/7C,KAAKivP,WAAa13P,EACvCyI,KAAKo0O,SAAWp0O,KAAK0/P,QAAQxhN,QAAU3mD,EAAIyI,KAAK0/P,QAAQ3jN,OAASxkD,EACjE,IAAI+uE,EAAI,CACN,EAAG,CACDjtE,KAAM,QACNkB,MAAOhD,GAGb,OACKsC,IAAMmG,KAAKy1P,kBAAoBl+P,EAAI2M,KAAKI,IAAI,EAAGzK,EAAImG,KAAK2lP,gBAAkB3lP,KAAK4lQ,kBAAoB5lQ,KAAK2oG,SAASi9J,kBAAoB7qQ,EAAEiF,KAAKk1O,SAAUl1O,KAAKk1O,QAAQh3L,OAASl+C,KAAKkvP,YAAc33P,EAAGyI,KAAKo0O,SAAWp0O,KAAK0/P,QAAQ3jN,OAASxkD,EAAIyI,KAAK0/P,QAAQxhN,QAAU3mD,EAAG+uE,EAAI,CAC/Q,EAAG,CACDjtE,KAAM,SACNkB,MAAOhD,KAGX+uE,IAAM/pE,EAAE4rQ,UAAYnoQ,KAAK0pP,KAAKpxO,SAAQ,SAAU/b,GAC9C+pE,EAAE/pE,EAAE0zM,MAAQ1zM,EAAEirP,gBAAkB,WAC9B,IAAI3tP,EAAIysE,EAAE/pE,EAAE0zM,MAAM52M,KAChB9B,EAAIyI,KAAKnG,GACXmG,KAAKnG,GAAKtC,EAAI+uE,EAAE/pE,EAAE0zM,MAAM11M,MACxB,IAAI4M,EAAIiC,EAAE1S,UAAU8wP,gBAAgB3rP,MAAMmE,KAAMlE,WAEhD,OADAkE,KAAKnG,GAAKtC,EACH4P,CACT,GAAK5K,EAAE4xP,cAAe5xP,EAAE8vP,qBAC1B,GACF,CACF,IACA5hB,EAAE1B,EAAG,UAAU,WACb/oO,KAAKw1P,mBAAqBx1P,KAAKy1P,mBAAqBz1P,KAAK8xQ,gBAAkB9xQ,KAAK8xQ,iBAAkB9xQ,KAAK+xQ,cAAgB/xQ,KAAKgyQ,UAAYhyQ,KAAK+xQ,YAC/I,IACAhpC,EAAEryO,UAAUo7Q,eAAiB,WAC3B,IAAIv1Q,EAAIyD,KACNnG,EAAI,CACFo4Q,wBAAyB,QACzBxsN,UAAW,SACXC,UAAW,UAEf1lD,KAAKw1P,oBAAsB37P,EAAE4rD,UAAY,QACzCzlD,KAAKy1P,oBAAsB57P,EAAE6rD,UAAY,QACzC1lD,KAAKkyQ,gBAAkB91G,EAAE,MAAO,CAC9Bh+H,UAAW,+BACV,CACD+e,SAAU,YACTn9C,KAAK4/P,UACR5/P,KAAKo2P,mBAAqBh6F,EAAE,MAAO,CACjCh+H,UAAW,wBACVvkC,EAAGmG,KAAKkyQ,iBACXznC,EAAEzqO,KAAKo2P,mBAAoB,UAAU,WACnC75P,EAAEk4P,gBAAkBl4P,EAAEk4P,QAAQ2I,aAChC,IACAp9P,KAAKmyQ,eAAiB/1G,EAAE,MAAO,CAC7Bh+H,UAAW,8BACV,KAAMp+B,KAAKo2P,oBACdp2P,KAAKmyQ,eAAez4Q,YAAYsG,KAAKy8C,WACrCz8C,KAAK8xQ,eAAiB,IACxB,EACA/oC,EAAEryO,UAAU07Q,kBAAoB,WAC9B,IAGE9rM,EAHE/pE,EAAIyD,KAAKy8C,UACX5iD,EAAImG,KAAKqyQ,cACTlrQ,EAAI,yTAAyT8G,MAAM,KAErUjO,KAAKw1P,oBAAsBx1P,KAAKo0O,SAAW9tK,EAAI,oBAAsBtmE,KAAKw1P,mBAAqBx1P,KAAKo0O,UAAqCp0O,KAAKy1P,oBAAsBz1P,KAAKo0O,SAA1D9tK,EAAI,oBAA2FtmE,KAAKy1P,mBAAqBz1P,KAAKo0O,WAAa9tK,EAAI,qBAC9PA,GAAKn/D,EAAErQ,KAAKwvE,EAAI,gCAAiCA,EAAI,+CACrDn/D,EAAEmR,SAAQ,SAAU/gB,GAClB,GAAG+gB,QAAQ1hB,KAAK2F,EAAE+/B,iBAAiB/kC,IAAI,SAAUgF,IAC9CA,EAAEy6B,eAAiBn9B,EAAEmvO,OAASnvO,EAAE0lD,IAAM1lD,EAAE0lD,IAAIvrB,YAAYt6B,YAAY6C,GACrEA,EAAE0yC,MAAM4xM,cAAgB,MAC1B,GACF,GACF,EACA9X,EAAEryO,UAAUq7Q,WAAa,WACvB,IAAIx1Q,GAAKyD,KAAKgyQ,SACZn4Q,EAAImG,KAAK41B,QAAQ00M,MACjBnjO,EAAItN,EAAEg4Q,mBACNvrM,EAAI5+D,EAAE2yO,kBACR99O,GAAKyD,KAAKgyQ,SAAW51G,EAAE,MAAO,CAC5Bh+H,UAAW,oBACV,CACD+e,SAAU,WACVj/C,SAAU,SACV2iP,cAAe,OACft/L,QAAS1nD,EAAEo1C,OAASp1C,EAAEo1C,MAAMsS,QAAU,GAAK,EAC3C7jB,IAAK,GACJ,MAAM,GAAK19B,KAAKo2P,oBAAsBp2P,KAAKo2P,mBAAmBpiO,WAAW0mB,aAAa16C,KAAKgyQ,SAAUhyQ,KAAKo2P,oBAAqBp2P,KAAK4/P,SAAS3wN,MAAM/wC,SAAW,UAAW8B,KAAKqyQ,cAAgBx4Q,EAAI,IAAIysE,EAAEtmE,KAAKgyQ,SAAUhyQ,KAAK8lP,WAAY9lP,KAAK2lP,YAAa3lP,KAAK41B,QAAQ00M,MAAMr7L,OAAQjvC,KAAKsyQ,eAAiBz4Q,EAAEy+F,OAAO35D,KAAK,CAC1Tw+K,KAAMn9M,KAAK41B,QAAQ00M,MAAMjuE,iBAAmB,OAC5C,eAAgBz/J,EAAEuK,EAAEk5C,QAAS,KAC7BkB,QAAS,IACR0G,SAAS,8BAA8B31C,MAAOm4N,EAAEzqO,KAAM,qBAAsBA,KAAKoyQ,mBAAoB3nC,EAAEzqO,KAAM,iBAAkBA,KAAKoyQ,mBAAoB3nC,EAAEzqO,KAAM,oBAAqBA,KAAKoyQ,oBAAsBpyQ,KAAKqyQ,cAAcl0B,QAAQn+O,KAAK8lP,WAAY9lP,KAAK2lP,cAChQ3lP,KAAKuyQ,iBAAmBh2Q,KAAGyD,KAAKuyQ,iBAAkB,EAAIvyQ,KAAKoyQ,qBAC/Dv4Q,EAAImG,KAAK8lP,YAAc9lP,KAAKw1P,mBAAqB,GACjDlvL,EAAItmE,KAAK2lP,aAAe3lP,KAAKy1P,mBAAqB,GAClD7tN,EAAE5nC,KAAKy8C,WACPz8C,KAAKy8C,UAAUxN,MAAM8M,MAAQliD,EAAI,KACjCmG,KAAKy8C,UAAUxN,MAAMiP,OAASooB,EAAI,KAClCtmE,KAAK2oG,SAASq1I,WAAWr/M,KAAK,CAC5Bod,MAAOliD,EACPqkD,OAAQooB,EACR04K,QAAS,CAAC,EAAG,EAAGnlP,EAAGysE,GAAGvkE,KAAK,OAE7B/B,KAAKuoQ,gBAAgB5pO,KAAK,CACxBod,MAAOliD,EACPqkD,OAAQooB,IAEVtmE,KAAKo2P,mBAAmBnnN,MAAMiP,OAASl+C,KAAK2lP,YAAc,KAC1DppP,IAAM4K,EAAEqrQ,kBAAoBxyQ,KAAKo2P,mBAAmBrzM,WAAa/iD,KAAKw1P,kBAAoBruP,EAAEqrQ,iBAAkBrrQ,EAAEsrQ,kBAAoBzyQ,KAAKo2P,mBAAmBtzM,UAAY9iD,KAAKy1P,kBAAoBtuP,EAAEsrQ,kBACnMnsM,EAAItmE,KAAKkwP,WACT3zP,EAAIyD,KAAKmvP,QAAU7oL,EAAE,GAAK,EAC1Bn/D,EAAInH,KAAKovP,SAAW9oL,EAAE,GAAK,EAC3BzsE,EAAImG,KAAKmvP,QAAUnvP,KAAKkvP,WAAa5oL,EAAE,GAAK,EAC5CA,EAAItmE,KAAKovP,SAAWpvP,KAAKivP,UAAY3oL,EAAE,GAAK,EAC5C,IAAIvrE,EAAIiF,KAAKovP,SAAWpvP,KAAKivP,WAAajvP,KAAKw1P,mBAAqB,GAClEj9P,EAAIyH,KAAKmvP,QAAUnvP,KAAKkvP,YAAclvP,KAAKy1P,mBAAqB,GAClEl5P,EAAIyD,KAAKw1P,kBAAoB,CAAC,CAAC,IAAK,EAAGj5P,GAAI,CAAC,IAAKyD,KAAKovP,SAAW,EAAG7yP,GAAI,CAAC,IAAKyD,KAAKovP,SAAW,EAAGv1P,GAAI,CAAC,IAAK,EAAGA,GAAI,CAAC,KAAM,CAAC,IAAKkB,EAAGwB,GAAI,CAAC,IAAKyD,KAAK8lP,WAAYvpP,GAAI,CAAC,IAAKyD,KAAK8lP,WAAYjsP,GAAI,CAAC,IAAKkB,EAAGlB,GAAI,CAAC,MAAQmG,KAAKy1P,kBAAoB,CAAC,CAAC,IAAKtuP,EAAG,GAAI,CAAC,IAAKA,EAAGnH,KAAKmvP,QAAU,GAAI,CAAC,IAAK7oL,EAAGtmE,KAAKmvP,QAAU,GAAI,CAAC,IAAK7oL,EAAG,GAAI,CAAC,KAAM,CAAC,IAAKn/D,EAAG5O,GAAI,CAAC,IAAK4O,EAAGnH,KAAK2lP,aAAc,CAAC,IAAKr/K,EAAGtmE,KAAK2lP,aAAc,CAAC,IAAKr/K,EAAG/tE,GAAI,CAAC,MAAQ,CAAC,CAAC,IAAK,EAAG,IAC1a,iBAAmByH,KAAK0yQ,eAAiB1yQ,KAAKsyQ,eAAe3zO,KAAK,CAChE7kC,EAAGyC,GAEP,EACAkuO,EAAErhO,EAAG,aAAa,WAChBpJ,KAAKsqO,MAAMioC,iBAAkB,CAC/B,IACA9nC,EAAEtmF,EAAG,QAAQ,WACXnkJ,KAAKsqO,MAAMioC,iBAAkB,CAC/B,GAEF,IACA/qQ,EAAEjL,EAAG,4BAA6B,CAACA,EAAE,wCAAyCA,EAAE,qBAAsBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GAC7I,IAMEhuO,EANE6sC,EAAIrrC,EAAEm2O,qBACRhrO,EAAIqhO,EAAEkC,SACNV,EAAIxB,EAAE4C,wBACNnB,EAAIzB,EAAE8B,UACNJ,EAAI1B,EAAEjsO,SACNs/J,EAAI2sE,EAAEuD,WA0FR,OAxFA,SAAW/vO,GACT,SAAShF,IACP,IAAIgF,EAAIyD,KAAKkqP,SACb,GAAI3tP,EAAG,CACL,IAAI1C,EAAI0C,EAAEkyQ,OACVryG,EAAEviK,GAAG,SAAU0C,EAAGhF,GAChBgzO,EAAEhuO,GACF1C,EAAEtC,GAAK,IACT,IACAgF,GAAKA,EAAEo2Q,iBAAmBp2Q,EAAEo2Q,gBAAgB11L,SAC9C,CACF,CACA,SAASpjF,IACPmG,KAAKkqP,WAAalqP,KAAKkqP,SAAW,IAAI5jL,EAAEtmE,MAC1C,CACA,IAAImH,EAAI,GACR5K,EAAEsjP,QAAU,SAAUtjP,GAEpB,OADC,IAAM4K,EAAE2F,QAAQvQ,KAAO4K,EAAErQ,KAAKyF,GAAImL,EAAEnL,EAAG,OAAQ1C,GAAI6N,EAAEnL,EAAG,UAAWhF,IAC7DgF,CACT,EACA,IAAI+pE,EAAI,WACN,SAAS/pE,EAAEA,GACTyD,KAAK4yQ,UAAY,CAAC,EAClB5yQ,KAAKyuQ,OAAS,CAAC,EACfzuQ,KAAK6yQ,cAAgB,EACrB7yQ,KAAKikL,KAAO1nL,CACd,CA0DA,OAzDAA,EAAE7F,UAAUyzP,YAAc,WACxB,IAIEhjP,EAJE5K,EAAIyD,KAAKikL,KACXpqL,EAAI0C,EAAE4uO,OACN5zO,EAAIgF,EAAEq5B,QAAQusN,eACd77K,EAAIzsE,EAAErD,OAER,IAAK+F,EAAEmrP,QAAS,CAEd,IADA1nP,KAAKktP,eAAgB,EAChB/lP,EAAIm/D,EAAGn/D,KAAM,CAChB,IAAIvK,EAAI/C,EAAEtC,EAAI4P,EAAIm/D,EAAIn/D,EAAI,GAC1BvK,EAAEk2Q,mBACFl2Q,EAAEm2Q,kBACJ,CACA,IAAK5rQ,EAAI,EAAGA,EAAIm/D,EAAGn/D,IAAKtN,EAAEsN,GAAG6rQ,eAC7BxoC,EAAEjuO,EAAG,mBACP,CACF,EACAA,EAAE7F,UAAU43P,YAAc,WACxB,IAAKtuP,KAAKikL,KAAKyjE,QAAS,CACtB,GAAI1nP,KAAK4yQ,UAAW,IAAIr2Q,EAAIyD,KAAKyuQ,OAASzuQ,KAAK4yQ,UAC/Cx2G,EAAE7/J,GAAG,SAAUA,GACb6/J,EAAE7/J,GAAG,SAAUA,GACbA,EAAE02Q,WAAa12Q,EAAEq1B,KACnB,GACF,GACF,CACF,EACAr1B,EAAE7F,UAAU23P,YAAc,WACxB,IAAI9xP,EAAIyD,KACNnG,EAAI0C,EAAEkyQ,OACRlyQ,EAAE0nL,KAAKyjE,SAAWtrF,EAAEviK,GAAG,SAAUA,GAC/BuiK,EAAEviK,GAAG,SAAUtC,EAAG+uE,GAChBmkK,EAAElzO,EAAE+yQ,UAAY/yQ,EAAE+yQ,QAAU/tQ,EAAEs2Q,eAAiBt7Q,EAAE0lF,iBAAkBpjF,EAAEysE,KAAO/uE,EAAEq6B,MAAQ,KAAMr6B,EAAE07Q,WAAa,KAC7G,GACF,GACF,EACA12Q,EAAE7F,UAAUg7P,kBAAoB,WAC9B,IAAIn1P,EAAIyD,KAAKikL,KACXpqL,EAAI0C,EAAE+tO,MACN/yO,EAAIsC,EAAE8uG,SACNriC,EAAItmE,KAAKyuQ,OACXlyQ,EAAIqrC,EAAE/tC,EAAG0C,EAAEq5B,QAAQ2tN,aAAehnP,EAAEq5B,QAAQ2tN,YAAYt/L,YAAa,GACrE,IAAI98C,EAAInH,KAAK2yQ,gBAAkB3yQ,KAAK2yQ,iBAAmBp7Q,EAAEgvE,EAAE,gBAAgB5nC,KAAK,CAC9EqgB,WAAY,UACZuC,OAAQ,EACRlB,QAAS,IACR/tC,MACHnL,EAAEuoN,UAAU71N,EAAEu1P,SAAUv1P,EAAEs1P,SAC1B/yF,EAAE91F,GAAG,SAAU/pE,GACb6/J,EAAE7/J,GAAG,SAAUA,GACbA,EAAEmsG,OAAOvhG,EACX,GACF,IACAA,EAAE6+C,QAAQ,CACR3F,QAAS,GACR9jD,EACL,EACOA,CACT,CAjEQ,GAkERA,EAAEq2P,UAAYtsL,CACf,CAvFD,CAuFGvrE,IAAMA,EAAI,CAAC,IACPA,CACT,IACAyM,EAAEjL,EAAG,yBAA0B,CAACA,EAAE,qBAAsBA,EAAE,uBAAwBA,EAAE,2BAA4BA,EAAE,mBAAoBA,EAAE,yBAA0BA,EAAE,6BAA8BA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,EAAGC,GACrP,IAAI5iM,EAAImhM,EAAEtrO,OACR2+J,EAAIouE,EAAEiB,aACN1wO,EAAIyvO,EAAEkB,QACN9uO,EAAI4tO,EAAEmB,wBACNp0O,EAAIizO,EAAEvuO,QACNpC,EAAI2wO,EAAE1tO,SACNqK,EAAIqjO,EAAE8B,WACNhmK,EAAIkkK,EAAEiC,KACNnlO,EAAI,WACF,SAAS/K,EAAEA,EAAG1C,EAAGtC,EAAG+uE,EAAGn/D,GACrB,IAAI7P,EAAIiF,EAAE+tO,MAAM8J,SAChBp0O,KAAKikL,KAAO1nL,EACZyD,KAAKkzQ,WAAa37Q,EAClByI,KAAK41B,QAAU/7B,EAAIA,GAAK,CAAC,EACzBmG,KAAKyN,EAAI64D,EACTtmE,KAAK4xB,MAAQ,KACb5xB,KAAKksP,OAAS,CAAC,EACflsP,KAAKmzQ,gBAAiB,EACtBnzQ,KAAKgC,MAAQmF,EACbnH,KAAKozQ,WAAapzQ,KAAKqzQ,UAAY,EACnCrzQ,KAAK+0O,aAAe,CAClB9nG,MAAOpzI,EAAEozI,QAAU31I,EAAIC,EAAI,OAAS,QAAU,UAC9Cy4O,cAAen2O,EAAEm2O,gBAAkB14O,EAAI,SAAWC,EAAI,SAAW,OACjEmQ,EAAG7N,EAAE6N,EACL+F,EAAG5T,EAAE4T,GAEPzN,KAAK0zI,UAAY75I,EAAE65I,YAAcp8I,EAAIC,EAAI,QAAU,OAAS,SAC9D,CAkDA,OAjDAgF,EAAE7F,UAAUumF,QAAU,WACpBrgF,EAAEoD,KAAMA,KAAKikL,KACf,EACA1nL,EAAE7F,UAAUgyG,OAAS,SAAUnsG,GAC7B,IAAI1C,EAAImG,KAAKikL,KAAKqmD,MAChB/yO,EAAIyI,KAAK41B,QACTzuB,EAAI5P,EAAEkG,OACR0J,EAAIA,EAAIygC,EAAEzgC,EAAGnH,KAAMnG,GAAKtC,EAAEmsP,UAAU9sP,KAAKoJ,MACzCA,KAAKwmE,MAAQxmE,KAAKwmE,MAAM7nC,KAAK,CAC3B7K,KAAM3sB,EACN63C,WAAY,YACRh/C,KAAKwmE,MAAQ3sE,EAAE8uG,SAASniC,MAAMr/D,EAAG,KAAM,KAAM5P,EAAE65O,MAAO,KAAM,KAAM75O,EAAEm6O,SAAS,EAAI,gBAAiBvqO,EAAI,CAC1G/M,EAAG7C,EAAE+1O,cAAgB,EACrBx5M,KAAM3sB,EACN8uO,SAAU1+O,EAAE0+O,SACZ7zL,QAASkkB,EAAE/uE,EAAE6qD,QAAS,GACtBpD,WAAY,UACXnlD,EAAEwzO,aAAelmO,EAAEg2M,KAAO5lN,EAAE8kK,gBAAiBl1J,EAAE2uO,OAASv+O,EAAEmmK,YAAav2J,EAAE,gBAAkB5P,EAAE2nK,YAAal/J,KAAKwmE,MAAMr3B,IAAI53C,EAAE03C,QAASjvC,KAAKwmE,MAAM7nC,KAAKx3B,GAAInH,KAAKwmE,MAAM+tK,OAASv0O,KAAKwmE,MAAMl0D,IAAI/V,IAC9LyD,KAAKwmE,MAAM8sM,UAAYz5Q,EAAEouQ,SAC3B,EACA1rQ,EAAE7F,UAAU47D,UAAY,SAAU/1D,EAAGhF,EAAG4P,EAAGvK,EAAGrE,GAC5C,IAAIjB,EAAI0I,KAAKikL,KACXznL,EAAIlF,EAAEgzO,MACR1tO,EAAItF,EAAEo4N,UAAUp4N,EAAE4yP,SAASgD,cAAgB,IAAMtwP,GAAQoD,KAAK4xB,MAAO,EAAG,EAAG,EAAG,GAC9EzqB,EAAI7P,EAAEo4N,UAAUvoN,GAAQ,GACxBA,EAAIpM,EAAE6B,IAAMsH,KAAKC,IAAIvH,EAAIuK,GACzB5K,EAAI+pE,EAAE/tE,EAAGiE,EAAEmtP,MAAM,GAAGj6B,UAAU1vN,KAAKyN,IAAMlR,EACzCjF,EAAIyD,EAAE6B,IAAMoD,KAAKuzQ,YAAY/2Q,EAAGwD,KAAMzD,EAAGK,EAAGrF,EAAG4P,EAAG7P,GAClDC,EAAIyI,KAAKwmE,MACTr/D,EAAInH,KAAKkzQ,WACT32Q,EAAI,YAAc+pE,EAAEtmE,KAAK41B,QAAQ13B,SAAU,WAC3C,IAAIqoE,EAAIvmE,KAAK0zI,UACbn8I,GAAKD,IAAMiB,EAAIhB,EAAEygP,UAAWp7O,EAAIrF,EAAE6qD,QAASmkB,EAAI,SAAWA,EAAI/pE,EAAE43O,UAAYx3O,EAAIA,EAAI,UAAY2pE,EAAIhuE,EAAEwjD,MAAQv/C,EAAE43O,UAAY,WAAa7tK,EAAIhuE,EAAEwjD,MAAQ,EAAIv/C,EAAE43O,SAAWjtO,EAAI5O,EAAEwjD,MAAQn/C,GAAKA,EAAIrE,EAAEwjD,MAAQ,EAAG50C,EAAI3K,EAAE43O,SAAW77O,EAAE2lD,OAAS,EAAI/2C,GAAKvK,EAAIrE,EAAE2lD,OAAQl+C,KAAK+0O,aAAatnO,EAAI64D,EAAEtmE,KAAK41B,QAAQnoB,EAAG,GAAIzN,KAAK+0O,aAAartO,EAAI4+D,EAAEtmE,KAAK41B,QAAQluB,EAAG,GAAIpQ,EAAEmW,GAAK84D,EAAGjvE,EAAEoQ,GAAKP,EAAG5P,EAAE01I,MAAMjtI,KAAK+0O,aAAc,KAAMz9O,GAAIkF,EAAE2/P,aAAa5kQ,EAAE69O,UAAU3nO,EAAI84D,EAAIvmE,KAAK+0O,aAAatnO,EAAGlW,EAAE69O,UAAU1tO,EAAIP,EAAInH,KAAK+0O,aAAartO,GAAKnQ,EAAE24C,QAAU34C,EAAE69O,UAAU1tO,GAAK,KAAMnL,GAAI,GAAKA,GAAKmL,EAAEhR,UAAU88Q,iBAAiB58Q,KAAKoJ,KAAKikL,KAAM1sL,EAAGyI,KAAK+0O,aAAcx9O,EAAE69O,UAAW78O,EAAGjB,GAAIC,EAAEonC,KAAK,CAChoBlxB,EAAGlW,EAAE69O,UAAU3nO,EACf/F,EAAGnQ,EAAE69O,UAAU1tO,IACb4+D,GAAG/pE,GAAKyD,KAAK41B,QAAQ6tN,MAAM,MAASjnP,EAAI3C,EAAEtC,EAAEkW,IAAM5T,EAAEtC,EAAEmQ,IAAMlL,EAAE2/P,aAAa5kQ,EAAEkW,EAAI7Q,EAAIrF,EAAEwkD,MAAOxkD,EAAEmQ,IAAMlL,EAAE2/P,aAAa5kQ,EAAEkW,EAAI7Q,EAAGrF,EAAEmQ,KAAOnQ,EAAE44C,QAC/I,EACA5zC,EAAE7F,UAAU68Q,YAAc,SAAUh3Q,EAAG1C,EAAGtC,EAAG+uE,EAAGn/D,EAAG7P,EAAGkF,GACpD,IAAI+pE,EAAI1sE,EAAEoqL,KAAKi+D,SACbpoP,EAAIyC,EAAE63O,SACNx3O,EAAIJ,EAAE0hD,OAAS1hD,EAAE8Z,KAAOxc,EAAIyC,EAAE6yP,SAAW7yP,EAAE4yP,SAE7C,OADAt1P,EAAIA,EAAEq5Q,aAAe3sM,IAAM1sE,EAAEq5Q,YAAc3sM,EACpC,CACL94D,EAAG3T,EAAID,EAAIysE,EAAI9pE,EAAEwgD,MAAQspB,EAAIhvE,EAAIkF,EAAE8Z,IAAM/Z,EAAE6yP,SAAW73P,EAAIgF,EAAEotP,MAAM,GAAG/D,OAASrpP,EAAE6yP,SAChF1nP,EAAG5N,EAAI0C,EAAE0hD,OAAS3mD,EAAI4P,EAAItN,EAAI+C,EAAI0pE,EAAIhvE,EAAIsF,EAAI0pE,EAC9CvqB,MAAOjiD,EAAIxC,EAAI6P,EACf+2C,OAAQpkD,EAAIqN,EAAI7P,EAEpB,EACOiF,CACT,CAtEI,GA8JN,OAvFA6M,EAAE1S,UAAU2vQ,UAAY,WACtB,IAAI9pQ,EAAIyD,KACNnG,EAAI0C,EAAE63O,SACR73O,EAAEq4P,MAAMt8O,SAAQ,SAAU/b,GACxBA,EAAE2tP,UAAY3tP,EAAE2tP,SAASukB,QAAUlyQ,EAAEssP,mBAAqBtsP,EAAE2tP,SAAS0oB,UAAYr2Q,EAAE2tP,SAASukB,OAC9F,IACAlyQ,EAAE4uO,OAAO7yN,SAAQ,SAAU/gB,GACzB,IAAI4P,EAAI5P,EAAEoyP,OAASpyP,EAAEoyP,MAAM/zN,SAAW,CAAC,GACtCr+B,EAAEq+B,QAAQs0N,WAAY,IAAO3yP,EAAE64D,UAAW,IAAO7zD,EAAEq5B,QAAQ00M,MAAMmD,qBAAuBl2O,EAAEo3Q,SAAW,CAACp3Q,EAAE0B,KAAMqtE,EAAE/uE,EAAEq+B,QAAQ5zB,MAAO,IAAKnI,EAAIsN,EAAEu2B,IAAMv2B,EAAE+6C,KAAMroD,EAAIsN,EAAE+2C,OAAS/2C,EAAE40C,OAAOh6C,OACrL,GACF,EACAwoO,EAAEsV,QAAQtjP,GACVmL,EAAEhR,UAAUq8Q,iBAAmB,WAC7B,IAAIx2Q,EAAIyD,KAAK40P,MAAM1K,SACnBlqP,KAAK41B,QAAQuwO,mBAAqBnmQ,KAAK6lC,GAAG,WAAa7lC,KAAK6lC,GAAG,kBAAoB7lC,KAAK41B,QAAQs0N,UAAY,EAAIlqP,KAAKsqO,MAAMa,OAAO30O,OAASkR,EAAEhR,UAAUo8Q,iBAAiBl8Q,KAAKoJ,KAAM,SAAWzD,GAAK4K,EAAE5K,EAAEkyQ,QAAQ,SAAU50Q,EAAGtC,GAC1N,UAAYA,EAAEiE,OAAO,KAAO2L,EAAEtN,GAAG,SAAU0C,GACzC,OAAOA,EAAE0gF,SACX,WAAW1gF,EAAEkyQ,OAAOl3Q,GACtB,GACF,EACAmQ,EAAEhR,UAAUo8Q,iBAAmB,SAAUv2Q,GACvC,IAAI1C,EAAI0C,GAAKyD,KAAK41B,QAAQs0N,SAC1B,GAAIrwP,KAAM,IAAOmG,KAAKowD,UAAW,IAAOpwD,KAAKsqO,MAAM10M,QAAQ00M,MAAMmD,oBAAqB,CACpF,IAAItmO,EAAInH,KAAKgsQ,eACXpvQ,EAAIoD,KAAK+rQ,eACTxzQ,EAAI,GACJ6B,EAAIwC,EAAEpG,OACNc,EAAI0I,KAAK41B,QACTp5B,EAAIlF,EAAEy5B,UACNw1C,EAAID,EAAEhvE,EAAEk3Q,oBAAsBhyQ,EAAG,GACnClF,EAAIA,EAAE0K,MAEN,IAKEyoO,EACA/iO,EANE5N,EAAI,KADRyC,EAAIA,EAAIyD,KAAK/G,KAAO,IAAMY,EAAImG,KAAK2uQ,UAEjC/0Q,EAAIoG,KAAK0uQ,UACT9mO,EAAI5nC,KAAK40P,MACTnnP,EAAIm6B,EAAEsiN,SAASukB,OACfrlQ,EAAIw+B,EAAEsiN,SAAS0oB,UAIjB,IADAhrO,EAAEsiN,SAAS2oB,eAAiB,EACvBnrQ,EAAI,EAAGA,EAAItN,EAAGsN,IAAK,CACtB,IAAIqhO,EAAI5hO,EAAEO,GACNy8I,EAAIvnJ,EAAE8K,GACN8iO,EAAIxqO,KAAK4uQ,kBAAkBpkC,EAAGzB,EAAG/oO,KAAKguB,OACtCu8M,EAAIC,EAAE3vO,IACNoyH,GAAKw9G,EAAI7wO,GAAKuqJ,GAAK59E,EAAI,EAAI/pE,IAAM1C,EAAIyC,EACzCkR,EAAEw/G,KAAOx/G,EAAEw/G,GAAK,CAAC,GACjBx/G,EAAEw/G,GAAG87G,KAAO3/N,EAAE6jH,IAAM7jH,EAAE6jH,GAAG87G,IAAMt7N,EAAEw/G,GAAG87G,GAAK3/N,EAAE6jH,GAAG87G,GAAIt7N,EAAEw/G,GAAG87G,GAAGn3M,MAAQ,MAAQnkB,EAAEw/G,GAAG87G,GAAK,IAAIzhO,EAAEsgC,EAAGA,EAAEhS,QAAQ2tN,YAAa9Y,EAAG1B,EAAGzxO,IAC1H21H,EAAIx/G,EAAEw/G,GAAG87G,GACT,OAAS5kF,GAAKl3B,EAAEi/H,OAAO3hB,GAAKt9G,EAAEi/H,OAAOlsP,KAAKguB,OAAS,CAACs4C,EAAE2mD,EAAEgmJ,WAAY1sM,IAAKxrE,EAAEkyH,EAAEgmJ,cAAgBhmJ,EAAE7oG,KAAOmmN,GAAIt9G,EAAEq9I,QAAU1iO,EAAEsiN,SAAS2oB,cAAe,EAAIroC,EAAEx8M,QAAS,IAAOhuB,KAAKyzQ,eAAiBxmJ,EAAEi/H,OAAO3hB,GAAG,GAAKt9G,EAAEi/H,OAAOlsP,KAAKguB,MAAQ,IAAM+6M,EAAI,MAAM,KAAO97G,EAAEi/H,OAAO3hB,GAAKt9G,EAAEi/H,OAAOlsP,KAAKguB,OAAS,KAC/R,YAAcn0B,GAAK4wO,EAAIA,EAAIluO,EAAIzC,EAAGF,GAAK6T,EAAEg9N,IAAMh9N,EAAEg9N,GAAG1B,IAAM0B,EAAIh9N,EAAEg9N,GAAG1B,GAAI97G,EAAEr7F,MAAQ64M,EAAE74M,MAAQ1tB,KAAKI,IAAImmO,EAAE74M,MAAOq7F,EAAEr7F,OAAS1tB,KAAKC,IAAIggJ,IAAM,GAAKl3B,EAAEr7F,MAAQwqI,EAAEnvC,EAAEr7F,OAAS1tB,KAAKC,IAAIggJ,IAAM,KAAO,UAAYtqJ,GAAKtC,EAAE4sJ,KAAOA,EAAIA,EAAE,IAAK,OAASA,IAAMl3B,EAAEr7F,OAASq7F,EAAEr7F,OAAS,GAAK,IAAMq7F,EAAEr7F,MAAQwqI,EAAEnvC,EAAEr7F,OAASuyH,GAAK,IAC1Sl3B,EAAEgmJ,WAAa,UAAYp5Q,GAAKozH,EAAEr7F,OAAS,GAAK,EAAI00C,EAAE2mD,EAAEgmJ,WAAY1sM,IAAM49E,GAAK,GAC/E,OAASA,IAAMl3B,EAAEi/H,OAAO3hB,GAAGzzO,KAAKm2H,EAAEgmJ,YAAa16Q,EAAEmP,GAAKulH,EAAEgmJ,WAAYhmJ,EAAEkmJ,gBAAiB,EACzF,CACA,YAAct5Q,IAAM+tC,EAAEsiN,SAASgD,eAAgB,GAC/C,UAAYrzP,IAAMmG,KAAKouQ,aAAe71Q,GACtCqvC,EAAEsiN,SAAS0oB,UAAY,CAAC,CAC1B,CACF,EACAlrQ,EAAEhR,UAAUs8Q,aAAe,WACzB,IAIE7rQ,EAJE5K,EAAIyD,KACNnG,EAAI0C,EAAEoyQ,SACNp3Q,EAAIgF,EAAEq4P,MAAM1K,SAASukB,OACrBnoM,EAAI/pE,EAAEyvQ,eAENpvQ,EAAIL,EAAEq5B,QAAQs0N,SAChB3tP,EAAEK,EAAI,YAAc,CAAC/C,EAAG,IAAMA,GAAGye,SAAQ,SAAUze,GACjD,IAAK,IAAkB0sE,EAAGzsE,EAAjB0C,EAAI8pE,EAAE9vE,OAAcgG,KAAU+pE,EAAID,EAAE9pE,GAAI2K,EAAI5K,EAAEqyQ,kBAAkBznQ,EAAGo/D,EAAGhqE,EAAEyxB,MAAOn0B,IAAIC,GAAKysE,EAAIhvE,EAAEsC,IAAMtC,EAAEsC,GAAG0sE,KAAOA,EAAE2lL,OAAO/kP,EAAEtM,OAAM0B,EAAEK,EAAI,WAAW9C,EAAGysE,EAAG/pE,EACnK,GACF,EACAkL,EAAEhR,UAAUg9Q,eAAiB,SAAUn3Q,EAAG1C,EAAGtC,GAC3CsC,EAAIA,EAAE+3B,MAAQ,IAAM/3B,EAAE+3B,MAAQ,EAC9Br1B,EAAE,GAAK6/J,EAAE7/J,EAAE,GAAK1C,GAChB0C,EAAE,GAAK6/J,EAAE7/J,EAAE,GAAK1C,GAChBmG,KAAKouQ,aAAa72Q,GAAKgF,EAAE,EAC3B,EACAmL,EAAEhR,UAAUk4Q,kBAAoB,SAAUryQ,EAAG1C,EAAGtC,EAAG+uE,GAOjD,OANCvrE,EAAEwB,IAAMA,EAAEkR,IAAM5T,GAAKysE,GAAK/pE,EAAE1B,MAAQyrE,EAAI/pE,EAAI,CAC3CkR,EAAG5T,EACHm0B,MAAO,EACPnzB,IAAKyrE,GACH/pE,EAAEyxB,QACNzxB,EAAE1B,IAAM,CAACtD,EAAGsC,EAAG0C,EAAEyxB,OAAOjsB,OACjBxF,CACT,EACA4nJ,EAAEwvH,UAAYrsQ,EAEP68I,EAAEwvH,SACX,IACAnsQ,EAAEjL,EAAG,4BAA6B,CAACA,EAAE,yBAA0BA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GAC1I,IAAInhM,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUqrC,EAAGw0H,GAQnB,OAPA7/J,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAGK,GACjCL,EAAE+/D,UAAY1/D,CAChB,GAAK,SAAUL,EAAGK,GAChB,IAAK,IAAIrF,KAAKqF,EAAGA,EAAEjG,eAAeY,KAAOgF,EAAEhF,GAAKqF,EAAErF,GACpD,GACSqwC,EAAGw0H,EACd,EACA,OAAO,SAAUx0H,EAAGw0H,GAClB,SAASrhK,IACPiF,KAAK40B,YAAcgT,CACrB,CACArrC,EAAEqrC,EAAGw0H,GACLx0H,EAAElxC,UAAY,OAAS0lK,EAAI3lK,OAAOmE,OAAOwhK,IAAMrhK,EAAErE,UAAY0lK,EAAE1lK,UAAW,IAAIqE,EAChF,CACF,CAlBgC,GAmBhC2M,EAAIqhO,EAAE2C,QACNnB,EAAIxB,EAAE/zM,MAyER,OAxEA+zM,EAAI,SAAU3/N,GACZ,SAASqhO,IACP,IAAIluO,EAAI,OAAS6M,GAAKA,EAAEvN,MAAMmE,KAAMlE,YAAckE,KAIlD,OAHAzD,EAAEtG,UAAO,EACTsG,EAAEq5B,aAAU,EACZr5B,EAAE2vP,YAAS,EACJ3vP,CACT,CA6DA,OA5DAqrC,EAAE6iM,EAAGrhO,GACLqhO,EAAE/zO,UAAUk6Q,UAAY,WACtB,IAAIr0Q,EAAIyD,KACNjF,EAAIiF,KAAK41B,QACTh5B,GAAKoD,KAAK4zQ,YAAc5zQ,KAAK6zQ,cAAcj9Q,KAAKoJ,MAChDzI,EAAIyI,KAAKsqO,MAAM+C,WACfxzO,EAAI,CAAC,CAAC,QAAS,qBACjBtC,GAAKsC,EAAE,GAAG/C,KAAKiE,EAAEkoP,WAAajjP,KAAK46J,OAAS,UAAW7/J,EAAEy3P,YACzD34P,EAAI0C,EAAEu3Q,eAAej6Q,IACnBye,SAAQ,SAAUze,EAAGysE,GACrB,IAAIn/D,EAAItN,EAAE,GACRtB,EAAIgE,EAAE4K,GACNi1J,EAAI7jK,EAAI,UAAY,OACtBA,GAAKA,EAAE65O,KAAO71O,EAAEw3Q,sBAAwB,KAAOn3Q,EAAEo3Q,KAAMz7Q,EAAEytD,QAAQ,CAC/DlsD,EAAG8C,KACCA,EAAEpG,SAAW+F,EAAE4K,GAAK5O,EAAIgE,EAAE+tO,MAAM3hI,SAASrQ,KAAK17F,GAAGqrD,SAASpuD,EAAE,IAAI8kC,KAAK,CACzE4iB,OAAQ,IACPjvC,IAAI/V,EAAE8jL,QACT9nL,IAAMhB,IAAM4P,EAAI,CACd2uO,OAAQj8O,EAAE,GACV,eAAgBkB,EAAEmoP,UAClB/lC,KAAM5gN,EAAE03Q,WAAa13Q,EAAEq+J,OAAS,QAC/B/gK,EAAE,GAAKsN,EAAEmgP,UAAYztP,EAAE,GAAK,WAAakB,EAAEm5Q,UAAY/sQ,EAAE,kBAAoBA,EAAE,mBAAqB,SAAU5O,EAAE6jK,GAAGj1J,GAAGq6D,OAAO,EAAI8E,GAAKvrE,EAAEymE,SAC3IjpE,IAAMA,EAAE45O,OAASv1O,EAAEo3Q,KAAMz7Q,EAAE85O,OAASz1O,EAAEy1O,OACxC,GACF,EACA5H,EAAE/zO,UAAUm9Q,aAAe,SAAUt3Q,EAAGxB,EAAG6B,GACzC,IAIEw/J,EAJE7kK,EAAIyI,KACNnG,EAAItC,EAAEq+B,QACNzuB,EAAI,GACJm/D,EAAI,GAEJ/tE,EAAIsB,EAAE+oD,KAEJhb,GADJrrC,EAAIA,GAAKhF,EAAE20P,QACDhK,SAeV,OAdAt6M,GAAKrrC,EAAEkrC,WACNlvC,EAAI,CACHykD,MAAO,EACP8zJ,OAAQ,GACRv4M,IAAMA,GAAK,IAAMqvC,IAAMrvC,EAAI,EAAIA,IACjCgE,EAAIyD,KAAKqvQ,eAAe9yQ,GAAG,IAAM1C,EAAEs6Q,eAAiBp5Q,IAAM6B,KACxD0b,SAAQ,SAAU9d,EAAGotC,GACrB,IAAItgC,EAAI9M,EAAEy3P,MACR73P,EAAII,EAAE03P,MACN56P,EAAIiF,EAAEqrC,EAAI,IACXptC,EAAE64Q,WAAa/7Q,GAAKA,EAAE87Q,cAAgBx2Q,IAAMw/J,GAAI,GACjD5hK,EAAE08P,SAAWxvP,EAAE3M,IAAM,EAAI6sC,EAAIw0H,GAAKviK,EAAEs6Q,aAAe35Q,EAAE08P,SAAWn8P,EAAIqhK,GAAI,GAAM,IAAMx0H,GAAKw0H,EAAIx0H,EAAI,CAAC,CAAC,IAAKptC,EAAEy3P,MAAOz3P,EAAE03P,QAAU36P,EAAE68Q,eAAiBxsO,EAAI,CAACrwC,EAAE68Q,eAAe73Q,EAAG/B,EAAGotC,IAAMrvC,GAAKqvC,EAAI,IAAMrvC,EAAI,CAAC,CAAC,IAAKjB,EAAE26P,MAAO73P,IAAM,IAAM7B,EAAI,CAAC,CAAC,KAAMjB,EAAE26P,MAAQ3qP,GAAK,EAAGhQ,EAAE46P,OAAQ,CAAC,KAAM56P,EAAE26P,MAAQ3qP,GAAK,EAAGlN,IAAM,CAAC,CAAC,IAAKkN,EAAGhQ,EAAE46P,SAAWp7P,KAAK,CAAC,IAAKwQ,EAAGlN,IAAOwtC,EAAI,CAAC,CAAC,IAAKtgC,EAAGlN,IAAKksE,EAAExvE,KAAK0D,EAAEiT,GAAIlV,IAAM+tE,EAAExvE,KAAK0D,EAAEiT,GAAI,IAAMlV,GAAK+tE,EAAExvE,KAAK0D,EAAEiT,IAAKtG,EAAErQ,KAAK+E,MAAMsL,EAAGygC,GAAIw0H,GAAI,EAC1b,IACAj1J,EAAE6sQ,KAAO1tM,EACF/uE,EAAE+5Q,UAAYnqQ,CACvB,EACAsjO,EAAE/zO,UAAUo9Q,eAAiB,SAAUv3Q,GAMrC,OALAyD,KAAK04P,MAAMpgP,SAAQ,SAAUvd,EAAG6B,GAC9BA,EAAI,CAAC,cAAgBA,EAAG,0CAA4CA,EAAI,KAAO7B,EAAEqjC,WAAa,KAC9Fp+B,KAAKsqO,MAAM+C,YAAczwO,EAAE9F,KAAKiE,EAAE6/J,OAAS56J,KAAK46J,MAAO7/J,EAAEy3P,WAAaxyP,KAAK41B,QAAQ48N,WACnFj2P,EAAEzF,KAAK8F,EACT,GAAGoD,MACIzD,CACT,EACAkuO,EAAE14H,eAAiBw4H,EAAEhuO,EAAEw1G,eAAgB,CAAC,GACjC04H,CACT,CArEI,CAqEFluO,GACF6M,EAAEq7P,mBAAmB,OAAQ17B,GAEtBA,CACT,IACAvhO,EAAEjL,EAAG,4BAA6B,CAACA,EAAE,uBAAwBA,EAAE,+BAAgCA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,GAC7K,IAAIv8G,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUhF,EAAGsC,GAQnB,OAPA0C,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAG1C,GACjC0C,EAAE+/D,UAAYziE,CAChB,GAAK,SAAU0C,EAAG1C,GAChB,IAAK,IAAItC,KAAKsC,EAAGA,EAAElD,eAAeY,KAAOgF,EAAEhF,GAAKsC,EAAEtC,GACpD,EACOgF,EAAEhF,EAAGsC,EACd,EACA,OAAO,SAAUtC,EAAGsC,GAClB,SAASsN,IACPnH,KAAK40B,YAAcr9B,CACrB,CACAgF,EAAEhF,EAAGsC,GACLtC,EAAEb,UAAY,OAASmD,EAAIpD,OAAOmE,OAAOf,IAAMsN,EAAEzQ,UAAYmD,EAAEnD,UAAW,IAAIyQ,EAChF,CACF,CAlBgC,GAmBhCojO,EAAIhuO,EAAEsxC,MACN28L,EAAIzB,EAAEkB,YAAYrrI,KACpBriG,EAAI4nJ,EAAE7mJ,OACN,IAAImtO,EAAItmF,EAAEnvH,MACRonI,EAAIjY,EAAEmoF,WACNvxO,EAAIopJ,EAAEsoF,KAqKR,OApKAtoF,EAAI,SAAU5nJ,GACZ,SAAShF,IACP,IAAIsC,EAAI,OAAS0C,GAAKA,EAAEV,MAAMmE,KAAMlE,YAAckE,KAIlD,OAHAnG,EAAE5D,UAAO,EACT4D,EAAE+7B,aAAU,EACZ/7B,EAAEqyP,YAAS,EACJryP,CACT,CAqJA,OApJA+tC,EAAErwC,EAAGgF,GACLhF,EAAEb,UAAUk6Q,UAAY,WACtB5wQ,KAAKqxQ,SAAW,GAChB90Q,EAAE7F,UAAUk6Q,UAAU/0Q,MAAMmE,MAC5B,IAAInG,EAAImG,KACNzI,EAAIyI,KAAKqxQ,SACT/qM,EAAItmE,KAAK41B,QACTh5B,EAAI,CAAC,CAAC,OAAQ,kBAAmBoD,KAAK46J,MAAOt0F,EAAEqlM,YACjD3rQ,KAAK04P,MAAMpgP,SAAQ,SAAU/b,EAAGhF,GAC9BqF,EAAE9F,KAAK,CAAC,aAAeS,EAAG,wCAA0CA,EAAI,IAAMgF,EAAE6hC,UAAW7hC,EAAEq+J,OAAS/gK,EAAE+gK,MAAOr+J,EAAEovQ,WAAarlM,EAAEqlM,WAClI,IACA/uQ,EAAE0b,SAAQ,SAAU/b,GAClB,IAAI4K,EAAI5K,EAAE,GACRK,EAAI/C,EAAEsN,GACN5O,EAAIqE,EAAI,UAAY,OACpBw/J,EAAI,CAAC,EACPx/J,GAAKA,EAAEw1O,KAAOv4O,EAAEk6Q,sBAAwB,KAAOx8Q,EAAEy8Q,KAAMp3Q,EAAEopD,QAAQ,CAC/DlsD,EAAGvC,MACE6kK,EAAE76G,OAAS,GAAG3kD,EAAI/C,EAAEsN,GAAKtN,EAAEywO,MAAM3hI,SAASrQ,KAAK/gG,GAAG0wD,SAAS1rD,EAAE,IAAI+V,IAAIzY,EAAEwmL,QAAUgyD,QAAS,GACjGx4O,EAAEywO,MAAM+C,aAAejxE,EAAE+gD,KAAOpiN,EAAEwB,EAAE,GAAIguO,EAAEhuO,EAAE,IAAI2xO,WAAWnzO,EAAEurE,EAAE7kB,YAAa,MAAMtnD,QAClFyC,EAAErE,GAAG6jK,GACLx/J,EAAEu1O,OAAS56O,EAAEy8Q,KACbp3Q,EAAEy3Q,UAAY/tM,EAAE1jB,KAAO,EAAI,CAC7B,GACF,EACArrD,EAAEb,UAAUm9Q,aAAe,SAAUt3Q,GACnC,IAIE6/J,EAJEviK,EAAI2wO,EAAE9zO,UAAUm9Q,aAClBt8Q,EAAIyI,KAAK41B,QACTh5B,EAAIrF,EAAE2yP,SACN3xP,EAAIyH,KAAK40P,MAETp6P,EAAI,GACJotC,EAAI,GACJx+B,EAAIpJ,KAAKguB,MACT5zB,EAAI7B,EAAE2xP,SAASukB,OAAOzuQ,KAAK2uQ,UAC3Br3Q,EAAIC,EAAEw5B,UACNv0B,EAAI0H,KAAK+c,MAAM1oB,EAAE82P,aAAa93P,EAAEw5B,YAClCx5B,EAAIwD,EAAExD,EAAE48Q,aAAc,YAAcv3Q,GACpC,IAAI2pE,EAAI,SAAU1sE,EAAGC,EAAGvC,GACtB,IAAIgvE,EAAIhqE,EAAE1C,GACVA,EAAI+C,GAAKxC,EAAEmsE,EAAE94D,GAAGy+O,OAAO9iP,GACvB,IAAIk9D,EAAIC,EAAEhvE,EAAI,SAAW,EAGzB,GAFAA,EAAIgvE,EAAEhvE,EAAI,UAAY,EACtBgvE,GAAI,EACAhvE,GAAK+uE,EAAG,CACV,IAAIn/D,GAAKm/D,EAAIzsE,EAAE,GAAKA,EAAE,IAAMtC,EACxBwD,EAAIlB,EAAE,GAAKtC,EACfgvE,IAAMD,CACR,MAAQ1pE,GAAKL,EAAEzC,IAAMyC,EAAEzC,GAAGo9P,SAAW/vP,EAAIpM,EAAIzD,GAC7C,qBAAuB6P,IAAMygC,EAAE9wC,KAAK,CAClCm7P,MAAOr4P,EACPs4P,MAAO,OAAS/qP,EAAI3K,EAAIjE,EAAE82P,aAAaloP,GACvC+vP,OAAQ3wL,EACR+tM,SAAS,IACP95Q,EAAE1D,KAAK,CACTm7P,MAAOr4P,EACPs4P,MAAO,OAASn3P,EAAIyB,EAAIjE,EAAE82P,aAAat0P,GACvCw5Q,SAAS,IAEb,EAGA,IAFAh4Q,EAAIA,GAAKyD,KAAKksP,OACdtvP,IAAML,EAAIyD,KAAKw0Q,eAAej4Q,IACzB6/J,EAAI,EAAGA,EAAI7/J,EAAE/F,OAAQ4lK,IAAK,CAC7Bx/J,IAAML,EAAE6/J,GAAGi3G,UAAY92Q,EAAE6/J,GAAGg3G,WAAa72Q,EAAE6/J,GAAGq4G,SAAWl4Q,EAAE6/J,GAAGs4G,eAAY,GAC1E,IAAI56Q,EAAIyC,EAAE6/J,GAAG86F,OACTt9P,EAAImB,EAAEwB,EAAE6/J,GAAGu4G,UAAWp4Q,EAAE6/J,GAAG61F,OAC3B91C,EAAIv/M,EAAI7B,EAAEwB,EAAE6/J,GAAG4yG,QAASxyQ,GAAKA,EAC5B1C,IAAKvC,IAAGA,GAAKgvE,EAAE61F,EAAGA,EAAI,EAAG,QAAStiK,IAAM8C,GAAKrF,IAAMqwC,EAAE9wC,KAAKyF,EAAE6/J,IAAK5hK,EAAE1D,KAAK,CAC3E2W,EAAG2uJ,EACH61F,MAAOr4P,EACPs4P,MAAO/1C,KACJ5kN,GAAKgvE,EAAE61F,EAAGA,EAAI,EAAG,SACxB,CAUA,OATAA,EAAIviK,EAAEjD,KAAKoJ,KAAM4nC,GAAG,GAAI,GACxBptC,EAAE0nP,UAAW,GAEZ/lC,GADDriN,EAAID,EAAEjD,KAAKoJ,KAAMxF,GAAG,GAAI,IACjB,KAAO,MAAQ2hN,EAAE,KAAOriN,EAAE,GAAK,CAAC,IAAKqiN,EAAE,GAAIA,EAAE,MACpDriN,EAAIsiK,EAAEvpJ,OAAO/Y,IACXtD,QAAUsD,EAAEhD,KAAK,CAAC,MACpB+C,EAAIA,EAAEjD,KAAKoJ,KAAM4nC,GAAG,EAAIrwC,GACxBuC,EAAEk6Q,KAAO53G,EAAE43G,KACXh0Q,KAAKqxQ,SAAWv3Q,EACTD,CACT,EACAtC,EAAEb,UAAU89Q,eAAiB,SAAUj4Q,GACrC,IAAI1C,EAAImG,KACNzI,EAAI,GACJqF,EAAI,GACJrE,EAAIyH,KAAK2pP,MACT/hN,EAAI5nC,KAAK40P,MACTp6P,EAAIotC,EAAEsiN,SAASukB,OAAOzuQ,KAAK2uQ,UAC3BvlQ,EAAI,CAAC,EACL0hO,EAAIljM,EAAEujM,OACN/wO,EAAI0wO,EAAEt0O,OACNc,EAAIswC,EAAEhS,QAAQusN,eAAiB,GAAK,EACpC3lP,EAAIsuO,EAAEh+N,QAAQjT,GAEhB,GADA0C,EAAIA,GAAKyD,KAAKksP,OACVlsP,KAAK41B,QAAQs0N,SAAU,CACzB,IAAK,IAAI3jL,EAAI,EAAGA,EAAIhqE,EAAE/F,OAAQ+vE,IAAKhqE,EAAEgqE,GAAGkuM,SAAWl4Q,EAAEgqE,GAAGmuM,eAAY,EAAQtrQ,EAAE7M,EAAEgqE,GAAG94D,GAAKlR,EAAEgqE,GAC1F61F,EAAE5hK,GAAG,SAAU+B,EAAGC,GAChB,OAASD,EAAEq1B,OAASh1B,EAAE9F,KAAK0F,EAC7B,IACAI,EAAEyM,MAAK,SAAU9M,EAAGC,GAClB,OAAOD,EAAIC,CACb,IACA,IAAI1C,EAAIgxO,EAAE7tO,KAAI,SAAUV,GACtB,OAAOA,EAAE6zD,OACX,IACAxzD,EAAE0b,SAAQ,SAAU/b,EAAGgqE,GACrB,IACEp/D,EACAvN,EAFE0sE,EAAI,EAGR,GAAIl9D,EAAE7M,KAAO6M,EAAE7M,GAAG26P,OAAQ3/P,EAAET,KAAKsS,EAAE7M,IAAK,EAAE,EAAG,GAAG+b,SAAQ,SAAU/gB,GAChE,IAAI+uE,EAAI,IAAM/uE,EAAI,YAAc,WAC9BwD,EAAI,EACJxC,EAAIiC,EAAEoC,EAAE2pE,EAAIhvE,IACd,GAAIgB,EAAG,IAAK,IAAI6jK,EAAI5/J,EAAG,GAAK4/J,GAAKA,EAAIhiK,GAAI,CACvC,IAAIwtC,EAAIkjM,EAAE1uE,GAAGpuI,OACb7mB,EAAI5O,EAAE2zP,OAAOtkN,MACPA,IAAM/tC,EAAEm0B,MAAQ5kB,EAAE7M,GAAG+pE,IAAK,EAAKxsE,EAAEsiK,KAAOxiK,EAAIY,EAAE+B,GAAG2vP,OAAOtkN,MAAQ7sC,GAAKnB,EAAE,GAAKA,EAAE,KACpFwiK,GAAK9kK,CACP,CACA8R,EAAE7M,GAAG,IAAMhF,EAAI,aAAe,aAAewD,CAC/C,QAAQ,CACN,IAAK,IAAIqhK,EAAI5/J,EAAG,GAAK4/J,GAAKA,EAAIhiK,GAAI,CAChC,GAAI+M,EAAI3M,EAAE+B,GAAG2vP,OAAOphB,EAAE1uE,GAAGpuI,OAAQ,CAC/Bs4C,EAAIn/D,EAAE,GACN,KACF,CACAi1J,GAAK9kK,CACP,CACAgvE,EAAIvrE,EAAEurE,EAAG,GACTA,EAAI1+B,EAAE8nL,UAAUppJ,EAAG,EAAG,EAAG,EAAG,GAC5B/uE,EAAET,KAAK,CACLogQ,QAAQ,EACRjF,MAAO15P,EAAEm3N,UAAUnzN,EAAG,EAAG,EAAG,EAAG,GAC/BkR,EAAGlR,EACH21P,MAAO5rL,EACP0oM,QAAS1oM,GAEb,CACF,GACF,CACA,OAAO/uE,CACT,EACAA,EAAEw6G,eAAiB04H,EAAED,EAAEz4H,eAAgB,CACrChhF,UAAW,IAENx5B,CACT,CA7JI,CA6JFizO,GACFjuO,EAAE4nJ,EAAEztJ,UAAW,CACb+8Q,cAAc,EACd3Q,iBAAkB15P,EAAEiiQ,gBAEtBtiC,EAAE07B,mBAAmB,OAAQtgH,GAEtBA,CACT,IACA38I,EAAEjL,EAAG,gCAAiC,CAACA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,GAC/G,IAAIw+B,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUqrC,EAAGw0H,GAQnB,OAPA7/J,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAGK,GACjCL,EAAE+/D,UAAY1/D,CAChB,GAAK,SAAUL,EAAGK,GAChB,IAAK,IAAIrF,KAAKqF,EAAGA,EAAEjG,eAAeY,KAAOgF,EAAEhF,GAAKqF,EAAErF,GACpD,GACSqwC,EAAGw0H,EACd,EACA,OAAO,SAAUx0H,EAAGw0H,GAClB,SAASrhK,IACPiF,KAAK40B,YAAcgT,CACrB,CACArrC,EAAEqrC,EAAGw0H,GACLx0H,EAAElxC,UAAY,OAAS0lK,EAAI3lK,OAAOmE,OAAOwhK,IAAMrhK,EAAErE,UAAY0lK,EAAE1lK,UAAW,IAAIqE,EAChF,CACF,CAlBgC,GAmBhCopJ,EAAI5nJ,EAAE0tO,YAAYrrI,KAClBl3F,EAAI0B,EAAE4rB,MACNu1M,EAAInhO,EAAEqjO,KAyCR,OAxCArjO,EAAI,SAAU7M,GACZ,SAAS6M,IACP,IAAIgzJ,EAAI,OAAS7/J,GAAKA,EAAEV,MAAMmE,KAAMlE,YAAckE,KAIlD,OAHAo8J,EAAEnmK,UAAO,EACTmmK,EAAExmI,aAAU,EACZwmI,EAAE8vF,YAAS,EACJ9vF,CACT,CA6BA,OA5BAx0H,EAAEx+B,EAAG7M,GACL6M,EAAE1S,UAAU09Q,eAAiB,SAAU73Q,EAAGxB,EAAG6B,GAC3C,IAAIrF,EAAIwD,EAAEk3P,OAAS,EACjBp4P,EAAIkB,EAAEm3P,OAAS,EACf/qP,EAAI5K,EAAEK,EAAI,GAEZ,GADAA,EAAIL,EAAEK,EAAI,GACNuK,IAAMA,EAAE+vP,SAAU,IAAO/vP,EAAEotQ,UAAYx5Q,EAAEu5Q,SAAW13Q,IAAMA,EAAEs6P,SAAU,IAAOt6P,EAAE23Q,UAAYx5Q,EAAEu5Q,QAAS,CACxG/3Q,EAAI4K,EAAE+qP,OAAS,EACf,IAAI5rL,EAAI1pE,EAAEq1P,OAAS,EACnBr1P,EAAIA,EAAEs1P,OAAS,EACf,IAAI91F,EAAI,EACJ7jK,GAAK,IAAMhB,GAAK4P,EAAE8qP,OAAS,IAAM,IACjCrqN,GAAK,IAAM/tC,EAAI0C,GAAK,IAEpB/B,GAAK,IAAMX,EAAI+C,GAAK,KADxB0pE,GAAK,IAAM/uE,EAAI+uE,GAAK,OAEd/tE,IAAM6jK,GAAK5hK,EAAIotC,IAAM0+B,EAAI/uE,IAAM+uE,EAAI/tE,GAAKsB,EAAIW,GAElDA,GAAK4hK,GADLx0H,GAAKw0H,GAED7/J,GAAKqrC,EAAI/tC,EAAyBW,EAAI,EAAIX,GAA5B+tC,EAAI1jC,KAAKI,IAAI/H,EAAG1C,IAAqB+tC,EAAIrrC,GAAKqrC,EAAI/tC,IAA0BW,EAAI,EAAIX,GAA5B+tC,EAAI1jC,KAAKqL,IAAIhT,EAAG1C,KAC1FW,EAAIoC,GAAKpC,EAAIX,EAAyB+tC,EAAI,EAAI/tC,GAA5BW,EAAI0J,KAAKI,IAAI1H,EAAG/C,IAAqBW,EAAIoC,GAAKpC,EAAIX,IAA0B+tC,EAAI,EAAI/tC,GAA5BW,EAAI0J,KAAKqL,IAAI3S,EAAG/C,KAC1FkB,EAAE65Q,WAAatuM,EACfvrE,EAAE85Q,WAAar6Q,CACjB,CAGA,OAFAO,EAAI,CAAC,IAAKwvO,EAAEpjO,EAAEytQ,WAAYztQ,EAAE8qP,MAAO,GAAI1nB,EAAEpjO,EAAE0tQ,WAAY1tQ,EAAE+qP,MAAO,GAAI3nB,EAAEhyO,EAAGhB,EAAG,GAAIgzO,EAAE3iM,EAAG/tC,EAAG,GAAItC,EAAGsC,GAC/FsN,EAAEytQ,WAAaztQ,EAAE0tQ,gBAAa,EACvB95Q,CACT,EACAqO,EAAE2oG,eAAiBrqG,EAAEy8I,EAAEpyC,gBAChB3oG,CACT,CArCI,CAqCF+6I,GACF5nJ,EAAEkoQ,mBAAmB,SAAUr7P,GAExBA,CACT,IACA5B,EAAEjL,EAAG,wCAAyC,CAACA,EAAE,6BAA8BA,EAAE,iCAAkCA,EAAE,+BAAgCA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,GACtO,IAAIkgC,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUK,EAAGrF,GAQnB,OAPAgF,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAGhF,GACjCgF,EAAE+/D,UAAY/kE,CAChB,GAAK,SAAUgF,EAAGhF,GAChB,IAAK,IAAIsC,KAAKtC,EAAGA,EAAEZ,eAAekD,KAAO0C,EAAE1C,GAAKtC,EAAEsC,GACpD,EACO0C,EAAEK,EAAGrF,EACd,EACA,OAAO,SAAUqF,EAAGrF,GAClB,SAASsC,IACPmG,KAAK40B,YAAch4B,CACrB,CACAL,EAAEK,EAAGrF,GACLqF,EAAElG,UAAY,OAASa,EAAId,OAAOmE,OAAOrD,IAAMsC,EAAEnD,UAAYa,EAAEb,UAAW,IAAImD,EAChF,CACF,CAlBgC,GAmBhC2wO,EAAIjuO,EAAE7F,UACN+zO,EAAI/iO,EAAEpK,OACN8+J,EAAI10J,EAAEstB,MAqBR,OApBAttB,EAAI,SAAU3M,GACZ,SAAS6B,IACP,IAAIL,EAAI,OAASxB,GAAKA,EAAEc,MAAMmE,KAAMlE,YAAckE,KAIlD,OAHAzD,EAAEtG,UAAO,EACTsG,EAAE2vP,YAAS,EACX3vP,EAAEq5B,aAAU,EACLr5B,CACT,CAGA,OAFAqrC,EAAEhrC,EAAG7B,GACL6B,EAAEm1G,eAAiBqqD,EAAEhzJ,EAAE2oG,eAAgBx1G,EAAEw1G,gBAClCn1G,CACT,CAXI,CAWFwM,GACFqhO,EAAE/iO,EAAEhR,UAAW,CACbm9Q,aAAcrpC,EAAEqpC,aAChBW,eAAgBhqC,EAAEgqC,eAClB5D,UAAWpmC,EAAEomC,UACb9N,iBAAkB/5B,EAAEsiC,gBAEtBlnH,EAAEsgH,mBAAmB,aAAc/8P,GAE5BA,CACT,IACAF,EAAEjL,EAAG,gCAAiC,CAACA,EAAE,wCAAyCA,EAAE,uBAAwBA,EAAE,mBAAoBA,EAAE,+BAAgCA,EAAE,yBAA0BA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,EAAGC,GACvR,IAAI5iM,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAU1C,EAAG2C,GAQnB,OAPAD,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAGC,GACjCD,EAAE+/D,UAAY9/D,CAChB,GAAK,SAAUD,EAAGC,GAChB,IAAK,IAAI3C,KAAK2C,EAAGA,EAAE7F,eAAekD,KAAO0C,EAAE1C,GAAK2C,EAAE3C,GACpD,EACO0C,EAAE1C,EAAG2C,EACd,EACA,OAAO,SAAU3C,EAAG2C,GAClB,SAASjF,IACPyI,KAAK40B,YAAc/6B,CACrB,CACA0C,EAAE1C,EAAG2C,GACL3C,EAAEnD,UAAY,OAAS8F,EAAI/F,OAAOmE,OAAO4B,IAAMjF,EAAEb,UAAY8F,EAAE9F,UAAW,IAAIa,EAChF,CACF,CAlBgC,GAmBhC6kK,EAAI7/J,EAAEk2O,WACN13O,EAAIqO,EAAEykC,MACNjxC,EAAImsO,EAAEY,SACRptO,EAAIwsO,EAAE3yM,KACN,IAAI7+B,EAAIizO,EAAE7uE,MACR9hK,EAAI2wO,EAAEr7L,IACNhoC,EAAIqjO,EAAEkB,QACNplK,EAAIkkK,EAAEltO,OACNgK,EAAIkjO,EAAEK,UACNtyO,EAAIiyO,EAAEvuO,QACNmuO,EAAII,EAAE1tO,SACNtC,EAAIgwO,EAAEx1M,MACNq1M,EAAIG,EAAEiC,KACN3B,EAAIN,EAAE8B,WA+RR,OA9RA9B,EAAI,SAAUjuO,GACZ,SAASjF,IACP,IAAIkF,EAAI,OAASD,GAAKA,EAAEV,MAAMmE,KAAMlE,YAAckE,KAMlD,OALAxD,EAAE0iK,iBAAc,EAChB1iK,EAAEvG,UAAO,EACTuG,EAAE6jL,WAAQ,EACV7jL,EAAEo5B,aAAU,EACZp5B,EAAE0vP,YAAS,EACJ1vP,CACT,CAwQA,OAvQAorC,EAAEtwC,EAAGiF,GACLjF,EAAEZ,UAAUsvD,QAAU,SAAUzpD,GAC9B,IAAIC,EAAIwD,KACNnG,EAAImG,KAAK40P,MACTztP,EAAI3K,EAAEo5B,QACNt+B,EAAI0I,KAAKsqO,MAAM8J,SACfx3O,EAAI,CAAC,EACL7B,EAAIzD,EAAI,aAAe,aACzB,GAAIiF,EAAGK,EAAEw8O,OAAS,KAAM78O,EAAIhF,EAAEsC,EAAEixP,SAAS3jP,EAAE4pB,WAAYl3B,EAAEyc,IAAKzc,EAAEyc,IAAMzc,EAAEoG,KAAM3I,EAAIsF,EAAEq8O,WAAa18O,EAAI1C,EAAEoG,IAAMrD,EAAEs8O,WAAa38O,EAAGC,EAAEkjQ,SAAWljQ,EAAEizQ,UAAWjzQ,EAAE6jL,MAAM1hJ,KAAK/hC,OAAQ,CAC5K,IAAIrE,EAAI+vE,OAAO9rE,EAAE6jL,MAAM1hJ,KAAK5jC,IAC5ByB,EAAE6jL,MAAMr6H,QAAQ,CACdozL,OAAQ,GACP9yK,EAAE81F,EAAE5/J,EAAEo5B,QAAQquB,WAAY,CAC3BrB,KAAM,SAAUrmD,EAAGzC,GACjB0C,EAAE6jL,QAAUzjL,EAAE7B,GAAKxC,EAAIuB,EAAEwc,KAAOzc,EAAEyc,IAAM/d,GAAIiE,EAAE6jL,MAAM1hJ,KAAK/hC,GAC3D,IAEJ,CACF,EACAtF,EAAEZ,UAAU69B,KAAO,SAAU/3B,EAAG3C,GAC9B0C,EAAE7F,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAC7B,IAAIhC,EAAIkG,MACRxD,EAAI1C,EAAEwwO,OACJ8mB,aAAe50P,EAAE2uO,OAAO7yN,SAAQ,SAAU/b,GAC1CA,EAAEtD,OAASa,EAAEb,OAASsD,EAAEsrP,SAAU,EACpC,GACF,EACAvwP,EAAEZ,UAAUo+Q,iBAAmB,WAC7B,IAAIv4Q,EAAIyD,KACNnG,EAAI0C,EAAEq5B,QACN97B,EAAIyC,EAAEotP,MACNpyP,EAAIgF,EAAEq4P,MACNtuL,EAAIxsE,EAAE87B,QAAQusN,eAChB77K,EAAIxsE,EAAEooP,WAAa57K,IAAMxsE,EAAEooP,UAAY57K,EACvC,IACEhvE,EADE6P,EAAI,CAAC,EAEPvK,EAAI,GACN,IAAO/C,EAAEk7Q,SAAWn4Q,EAAI,EAAIL,EAAE+tO,MAAMa,OAAO7yN,SAAQ,SAAU9b,GAC3D,IAAI3C,EAAI2C,EAAEo4P,MACR96P,EAAI0C,EAAEo5B,QACR,GAAIp5B,EAAEvD,OAASsD,EAAEtD,OAASuD,EAAE4zD,UAAY7zD,EAAE+tO,MAAM10M,QAAQ00M,MAAMmD,qBAAuBl2O,EAAE0I,MAAQpG,EAAEoG,KAAO1I,EAAE+e,MAAQzc,EAAEyc,IAAK,CACvH,GAAIxc,EAAEowP,UAAY,UAAYpwP,EAAEowP,SAAU,CACxC5yP,EAAIkF,EAAEmyQ,SACN,qBAAuBxnQ,EAAE7P,KAAO6P,EAAE7P,GAAKsF,KACvC,IAAI2pE,EAAIp/D,EAAE7P,EACZ,MAAO,IAAOwC,EAAEi7Q,WAAaxuM,EAAI3pE,KACjCJ,EAAEw4Q,YAAczuM,CAClB,CACF,IACA,IAAIxrE,EAAImJ,KAAKqL,IAAIrL,KAAKC,IAAIrK,EAAEksP,SAAWlsP,EAAEiL,SAAWjL,EAAEiL,QAAQ0nP,OAAS5yP,EAAEsuP,YAAcruP,EAAEkvP,mBAAqBlvP,EAAEyqP,cAAgB,GAAIzqP,EAAEmG,KACpI1H,EAAIwC,EAAIlB,EAAEo7Q,aACV76Q,GAAKW,EAAI,EAAIxC,IAAMqE,GAAK,GAQ1B,OAPA/C,EAAIqK,KAAKqL,IAAI1V,EAAEq7Q,eAAiBp7Q,EAAEmG,IAAKoqO,EAAExwO,EAAEs7Q,WAAY/6Q,GAAK,EAAI,EAAIP,EAAEu7Q,gBACtE74Q,EAAE84Q,cAAgB,CAChBt5N,MAAOliD,EACP2nB,QAASpnB,EAAIP,GAAK,GAAKtB,IAAMgE,EAAEy4Q,aAAe,IAAM1uM,EAAI,EAAI,IAAMlsE,EAAIW,EAAI,IAAMurE,GAAK,EAAI,GACzFgvM,YAAal7Q,EACbqmD,YAAa7jD,GAERL,EAAE84Q,aACX,EACA/9Q,EAAEZ,UAAU6+Q,SAAW,SAAUh5Q,EAAG1C,EAAGC,EAAGvC,GACxC,IAAIiF,EAAIwD,KAAKsqO,MACX/jK,EAAIvmE,KAAKk/J,YACT54F,IAAMC,EAAI,EAAI,GAAK,GASrB,OARAA,EAAIA,EAAI,EAAI,GAAK,EACjB/pE,EAAE43O,UAAY53O,EAAEmsG,SAAS2nK,QAAU/pM,GAAK,GACxCvmE,KAAK41B,QAAQwgN,QAAUt8O,EAAIoK,KAAK+c,MAAM1kB,EAAIzC,GAAKwsE,EAA0BxsE,GAAvByC,EAAI2H,KAAK+c,MAAM1kB,GAAK+pE,GACtE/uE,EAAI2M,KAAK+c,MAAMpnB,EAAItC,GAAKgvE,EACxBD,EAAI,IAAMpiE,KAAKC,IAAItK,IAAM,GAAKtC,EAE9BA,GADAsC,EAAIqK,KAAK+c,MAAMpnB,GAAK0sE,EAEpBD,GAAK/uE,MAAQsC,EAAGtC,GAAK,GACd,CACLkW,EAAGlR,EACHmL,EAAG7N,EACHkiD,MAAOjiD,EACPokD,OAAQ3mD,EAEZ,EACAD,EAAEZ,UAAU8+Q,wBAA0B,SAAUj5Q,EAAG1C,EAAGC,EAAGvC,GACvD,IAAIiF,EAAIwD,KACNumE,EAAIvmE,KAAK41B,QAAQs0N,SACnB,IAAKpwP,EAAEo9P,QAAU,EAAI3/P,EAAEkpD,YAAa,CAClC,IAAI6lB,EAAI,EACNn/D,EAAI,EACN2jO,EAAE9qO,KAAK40P,MAAM1K,UAAYlqP,KAAK40P,MAAM1K,SAASukB,QAAQ,SAAUlyQ,GAC7D,GAAI,kBAAoBzC,EAAE2T,IAAMlR,EAAIA,EAAEzC,EAAE2T,EAAErR,aAAc,CACtD,IAAIvC,EAAI0C,EAAE2vP,OAAO1vP,EAAEwxB,OACjBz2B,EAAIgF,EAAEq1B,MACR20C,GAAK1sE,IAAMysE,EAAIn/D,GAAI5K,EAAE42Q,gBAAkBhsQ,KAAO5O,EAAEsB,KAAOysE,EAAIzsE,EAAE,GAAIsN,EAAI5P,GAAK,EAC5E,CACF,IACAgF,GAAKzC,EAAEm4P,OAAS,KAAO9qP,EAAI,GAAK5P,EAAE+9Q,YAAcz7Q,GAAK,EAAIA,EAAIysE,EAAI/uE,EAAE+9Q,WACrE,CACA,OAAO/4Q,CACT,EACAjF,EAAEZ,UAAUg5N,UAAY,WACtB,IAAInzN,EAAIyD,KACNnG,EAAI0C,EAAE+tO,MACNxwO,EAAIyC,EAAEq5B,QACN0wC,EAAI/pE,EAAEk5Q,MAAQ,EAAIl5Q,EAAEysP,kBAAoBzsP,EAAEotP,MAAM3D,OAClD1/K,EAAI/pE,EAAE2iK,YAAcmrE,EAAEvwO,EAAEolK,YAAa54F,EAAI,EAAI,GAC7C,IAAIhvE,EAAIiF,EAAEotP,MACR/sP,EAAIL,EAAEq4P,MACN75P,EAAIjB,EAAEi3B,UACNx4B,EAAIgE,EAAEm5Q,oBAAsB94Q,EAAEyyP,aAAat0P,GAC3CX,EAAIiwO,EAAEvwO,EAAE67Q,eAAgB,GACxBv5G,EAAI7/J,EAAEu4Q,mBACNt6Q,EAAI4hK,EAAErgH,MACNnU,EAAIrrC,EAAEuyQ,aAAe1yG,EAAE56I,OACvBpY,EAAI7M,EAAEwtP,QACNziP,EAAI/K,EAAEytP,QACNlf,EAAIvuO,EAAEwyQ,KAAO7qQ,KAAKI,IAAI9J,EAAG,EAAI,EAAI8rE,GACnCzsE,EAAEu6O,WAAa77O,GAAK,IACpBuB,EAAEs7Q,eAAiBtqC,EAAI5mO,KAAKuF,KAAKqhO,IACjCpjO,EAAEhR,UAAUg5N,UAAU7zN,MAAMU,GAC5BA,EAAE2vP,OAAO5zO,SAAQ,SAAU9b,GACzB,IAAI+pE,EAAI8jK,EAAE7tO,EAAEwyQ,QAASz2Q,GACnB+tE,EAAI,IAAMpiE,KAAKC,IAAIoiE,GACnB3sE,EAAI4C,EAAEy1P,OAAS,EACjB3rL,EAAI/uE,EAAEiF,EAAE01P,OAAQ5rL,EAAG1pE,EAAEqD,IAAMqmE,GAC3B,IAAI74D,EAAIvJ,KAAKqL,IAAI+2D,EAAGC,GAClB41I,EAAIj4M,KAAKI,IAAIgiE,EAAGC,GAAK94D,EACrB/F,EAAIlN,EACJiwO,EAAI7wO,EAAIguC,EACRmhM,EAAI+B,EACN1wO,GAAK8J,KAAKC,IAAIg4M,GAAK/hN,IAAM+hN,EAAI/hN,EAAGR,GAAKgD,EAAEslP,WAAa1lP,EAAE84P,UAAY14P,EAAEslP,UAAY1lP,EAAE84P,SAAUlrB,EAAErvO,IAAMqvO,EAAE9iO,IAAM9K,EAAEkL,IAAM3M,GAAKuM,GAAKvM,IAAM6B,EAAE2S,KAAO,GAAKxU,IAAMqO,IAAM9B,IAAM1K,EAAE0H,KAAO,IAAMvJ,KAAOnB,GAAKA,GAAI6T,EAAIvJ,KAAKC,IAAIsJ,EAAIlV,GAAK6B,EAAImsE,EAAInsE,EAAI7B,GAAKqB,EAAIQ,EAAI,IAClP+M,EAAE3K,EAAEo5B,QAAQu/O,cAAgBztQ,EAAIqhO,EAAI7kO,KAAKuF,KAAKjN,EAAEo5B,QAAQu/O,YAAa1qC,GAAKvmO,KAAK+c,OAAOvZ,EAAIlN,GAAK,IAC/FV,EAAEqsQ,mBAAqB17B,EAAIluO,EAAEi5Q,wBAAwB/qC,EAAG/iO,EAAGlL,EAAG4/J,IAC9D5/J,EAAEo5Q,KAAOnrC,EACTjuO,EAAE24Q,WAAaztQ,EACflL,EAAEm4P,WAAa96P,EAAEu6O,SAAW,CAAC78O,EAAEqF,EAAEqD,IAAMrD,EAAE0Z,IAAMzc,EAAEu1P,SAAW9oL,EAAG1pE,EAAE0Z,IAAMzc,EAAEu1P,SAAUxyP,EAAEqD,IAAMrD,EAAE0Z,IAAMzc,EAAEu1P,UAAW93P,EAAE2I,IAAM3I,EAAEgf,IAAMzc,EAAEs1P,QAAU1kB,EAAI1B,EAAI,EAAG5sB,GAAK,CAAC7kN,EAAE4qD,KAAOroD,EAAEu1P,SAAW3kB,EAAI1B,EAAI,EAAGxxO,EAAE+uE,EAAI1pE,EAAE0Z,IAAMzc,EAAEs1P,QAASvyP,EAAE0Z,IAAMzc,EAAEs1P,QAASvyP,EAAEqD,IAAMrD,EAAE0Z,IAAMzc,EAAEs1P,SAAUhzC,GACtQ3/M,EAAEs8P,UAAYv8P,EAAE+nQ,WAAW5tQ,UAAUoiQ,WAAa,OAClDt8P,EAAE0gQ,UAAY3gQ,EAAEg5Q,SAAS15Q,MAAMU,EAAGC,EAAE06P,OAAS,CAACzsB,EAAGlyO,EAAGwwO,EAAG,GAAK,CAAC0B,EAAGh9N,EAAGs7N,EAAG5sB,GACxE,GACF,EACA7kN,EAAEZ,UAAUk6Q,UAAY,WACtB5wQ,KAAKqgL,MAAMrgL,KAAKy1Q,MAAQ,WAAa,eAAe,wBACtD,EACAn+Q,EAAEZ,UAAUmkQ,aAAe,SAAUt+P,EAAG1C,GACtC,IAAI2C,EAAIwD,KAAK41B,QACXr+B,EAAIyI,KAAK61Q,oBAAsB,CAAC,EAChCtvM,EAAIhvE,EAAEu+O,QAAU,cAChBxvK,EAAI/uE,EAAE,iBAAmB,cACzB4P,EAAI5K,GAAKA,EAAEq+J,OAAS56J,KAAK46J,MACzBtjK,EAAIiF,GAAKA,EAAEgqE,IAAM/pE,EAAE+pE,IAAMp/D,EAC3B5P,EAAIgF,GAAKA,EAAEq5B,QAAQ48N,WAAah2P,EAAEg2P,UAClC,IAAI51P,EAAIL,GAAKA,EAAE+pE,IAAM9pE,EAAE8pE,IAAMtmE,KAAKsmE,IAAM,EACtC/tE,EAAI8xO,EAAE9tO,GAAKA,EAAE8jD,QAAS7jD,EAAE6jD,QAAS,GACnC,GAAI9jD,GAAKyD,KAAK04P,MAAMliQ,OAAQ,CAC1B,IAAI4D,EAAImC,EAAEk8P,UACVtxP,EAAI5K,EAAEq5B,QAAQglI,OAASxgK,IAAMA,EAAEwgK,OAASr+J,EAAEq8P,gBAAkB54P,KAAK46J,MACjExgK,IAAM9C,EAAI8C,EAAEsjK,aAAepmK,EAAGC,EAAI6C,EAAEo4P,WAAaj7P,EAAGqF,EAAIxC,EAAE8kK,aAAetiK,EAC3E,CASA,OARA/C,GAAK0C,IAAyE1C,GAAnE0C,EAAI/B,EAAEgC,EAAEi+P,OAAO5gQ,GAAI0C,EAAEq5B,QAAQ6kO,QAAUl+P,EAAEq5B,QAAQ6kO,OAAO5gQ,IAAM,CAAC,IAAUi8Q,WAAY3uQ,EAAI5K,EAAEq+J,OAAS,qBAAuB/gK,GAAKkB,EAAEoM,GAAG8mO,SAAS1xO,EAAEu5Q,YAAY37Q,OAASgN,EAAG7P,EAAIiF,EAAEgqE,IAAMjvE,EAAGsF,EAAIL,EAAE+pE,IAAM1pE,EAAGrF,EAAIgF,EAAEi2P,WAAaj7P,EAAGgB,EAAI8xO,EAAE9tO,EAAE8jD,QAAS9nD,IACxPguE,EAAI,CACF42I,KAAMh2M,EACN2uO,OAAQx+O,EACR,eAAgBsF,EAChByjD,QAAS9nD,GAEXhB,IAAMgvE,EAAE+gL,UAAY/vP,GACbgvE,CACT,EACAjvE,EAAEZ,UAAUk5Q,WAAa,WACvB,IAKEzoQ,EALE5K,EAAIyD,KACNnG,EAAImG,KAAKsqO,MACTxwO,EAAIyC,EAAEq5B,QACNr+B,EAAIsC,EAAE8uG,SACNriC,EAAIxsE,EAAEi8Q,gBAAkB,IAE1Bx5Q,EAAE2vP,OAAO5zO,SAAQ,SAAU9b,GACzB,IAAI+pE,EAAI/pE,EAAEq7P,QACRvgQ,IAAMivE,EACN3pE,EAAI2pE,GAAK1sE,EAAEs+P,WAAa7xL,EAAI,UAAY,OACtC8jK,EAAE5tO,EAAE01P,QAAU,OAAS11P,EAAEkL,GAC3BP,EAAI3K,EAAE0gQ,UACN32L,GAAK/pE,EAAEq8P,oBAAsBtyL,EAAIA,EAAE0W,WACnC1gF,EAAEmpQ,qBAAuBlpQ,EAAE46P,UAAY76P,EAAEotP,MAAMzH,WAAa/6O,GAAIA,EAAE40C,OAAa,GAAKx/C,EAAEotP,MAAM5tM,OAC5FwqB,IAAM/pE,EAAEq7P,QAAUtxL,EAAIhvE,EAAEiF,EAAEs8P,WAAW3xP,GAAGmL,IAAI9V,EAAE6jL,OAAS9jL,EAAE8jL,SAAW9jL,EAAEmpQ,oBAAsB7rQ,EAAEu3P,aAAev3P,EAAEs+P,WAAa7xL,IAAMC,EAAE5nC,KAAK,CACvIlxB,EAAGjR,EAAE46P,YACH9/P,GAAI,EAAIsF,EAAI,WACZ2pE,GAAKjvE,GAAGivE,EAAE3pE,GAAGpC,EAAE2M,IACfrN,EAAEwzO,cAAc/mK,EAAE3pE,GAAG,CACvBxC,EAAGN,EAAEwzO,eAEPzzO,EAAEwzO,YAAc9mK,EAAE3pE,GAAGL,EAAEs+P,aAAar+P,EAAGA,EAAEmlC,UAAY,WAAW6/B,QAAO,IAAOhlE,EAAEw5Q,aAAel8Q,EAAE0nE,OAAQ,KAAM1nE,EAAEowP,WAAapwP,EAAEwzO,cAChI/mK,IAAMA,EAAEte,SAASzrD,EAAE+7P,gBAAgB,GAAKhyL,EAAE5nC,KAAK,CAC7CqgB,WAAYxiD,EAAE4zD,QAAU,UAAY,aAEjCmW,IAAM/pE,EAAEq7P,QAAUtxL,EAAE0W,UAC7B,GACF,EACA3lF,EAAEZ,UAAUi/P,YAAc,WACxB,IAOExuP,EAPE5K,EAAIyD,KACNzI,EAAIgF,EAAE+tO,MACNxwO,EAAIvC,EAAEk9P,QACNnuL,EAAI,SAAU/pE,GACZ,IAAIC,EAAI1C,EAAE8jQ,kBAAkBrhQ,GAC5B,qBAAuBC,IAAM1C,EAAEi8P,eAAgB,EAAIv5P,EAAE0hN,YAAY3hN,GACnE,EAEFA,EAAE2vP,OAAO5zO,SAAQ,SAAU/b,GACzB4K,EAAI5O,EAAEgE,EAAEo7P,YAAcp7P,EAAEo7P,WAAap7P,EAAEu7P,UAAY,CAACv7P,EAAEu7P,WAAa,GACnEv7P,EAAEs7P,UAAYt7P,EAAEs7P,QAAQ1gM,QAAQsgL,MAAQl7O,GACxC4K,EAAEmR,SAAQ,SAAU9b,GAClBA,EAAE6zC,IAAM7zC,EAAE6zC,IAAIonM,MAAQl7O,EAAIC,EAAE26D,QAAQsgL,MAAQl7O,CAC9C,GACF,IACAA,EAAE05Q,eAAiB15Q,EAAE25Q,cAAc59P,SAAQ,SAAU9b,GAC/CD,EAAEC,KACJD,EAAEC,GAAGyrD,SAAS,sBAAsBtV,GAAG,YAAa2zB,GAAG3zB,GAAG,YAAY,SAAUp2C,GAC9EzC,EAAE+jQ,kBAAkBthQ,EACtB,IACIK,GAAGL,EAAEC,GAAGm2C,GAAG,aAAc2zB,IAC5B/uE,EAAE81O,YAAc9wO,EAAEq5B,QAAQikJ,QAAUt9K,EAAEC,GAAG2yC,IAAIt1C,GAAGs1C,IAAI,CACnD0qI,OAAQt9K,EAAEq5B,QAAQikJ,SAGxB,IAAIt9K,EAAE05Q,cAAe,GACrB3uQ,EAAEtH,KAAM,mBACV,EACA1I,EAAEZ,UAAUwyC,OAAS,WACnB,IAAI3sC,EAAIyD,KACNnG,EAAI0C,EAAE+tO,MACRzwO,EAAEu3P,aAAev3P,EAAEsxO,OAAO7yN,SAAQ,SAAU9b,GAC1CA,EAAEvD,OAASsD,EAAEtD,OAASuD,EAAEqrP,SAAU,EACpC,IACAngP,EAAEhR,UAAUwyC,OAAOrtC,MAAMU,EAAGT,UAC9B,EACAxE,EAAEy6G,eAAiBv3G,EAAEkN,EAAEqqG,eAAgB,CACrCu7H,aAAc,EACd64B,kBAAkB,EAClB8O,aAAc,GACd9b,OAAQ,KACRic,aAAc,GACdO,eAAgB,EAChB/J,cAAe,GACfzjB,WAAY,KACZsS,OAAQ,CACN5mM,MAAO,CACL8mM,MAAM,EACNmb,WAAY,IAEdr5O,OAAQ,CACNm+H,MAAO,UACP8C,YAAa,YAGjBi6F,WAAY,CACV1qH,WAAO,EACP+iG,mBAAe,EACftoO,OAAG,GAEL8mQ,oBAAoB,EACpBjR,gBAAgB,EAChBv3D,QAAS,CACPppC,SAAU,GAEZ7rI,UAAW,EACX2sI,YAAa,YAERpmK,CACT,CAlRI,CAkRFoQ,GACF4+D,EAAEkkK,EAAE9zO,UAAW,CACbq3Q,aAAc,EACdvQ,aAAa,EACbsF,iBAAkB3+G,EAAEknH,cACpBc,UAAW5vQ,EACXmyQ,WAAW,EACXwH,cAAe,CAAC,QAAS,qBAE3B3rC,EAAEk6B,mBAAmB,SAAUj6B,GAGxBA,CACT,IACAhjO,EAAEjL,EAAG,2BAA4B,CAACA,EAAE,wCAAyCA,EAAE,2BAA4BA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GAClJ,IAUE5hO,EAVEygC,EAAIrrC,EAAEm2O,qBACRhrO,EAAI0B,EAAE3L,OACN8sO,EAAIxB,EAAE2C,QACNlB,EAAIzB,EAAEzrO,OACNmtO,EAAI1B,EAAE8B,UACNzuE,EAAI2sE,EAAE9sO,QACNlB,EAAIguO,EAAE/zM,MACNp4B,EAAImsO,EAAEuD,WACN/0O,EAAIwxO,EAAE0D,KACN5yO,EAAIkvO,EAAE6D,MAkMR,OAhMA,SAAWrwO,GACT,SAAS+pE,EAAE/pE,EAAGC,EAAG3C,EAAGC,EAAGwsE,GACrB,IAAIC,EAAIvmE,KACNmH,EAAInH,KAAKsqO,MACThzO,EAAI0I,KAAKq/P,aAAel4P,EAAEitO,SAC1Bx3O,EAAIoD,KAAK0lQ,mBACT9rQ,EAAIrC,EAAEgF,EAAE45Q,OAAS55Q,EAAE45Q,MAAMC,QAAS75Q,EAAE01P,OAAQ,MAC5Cl3P,EAAIxD,EAAEgF,EAAE21P,OAAQ,MAChB35P,EAAIiE,EAAEw7O,UACN59O,EAAIP,EAAEo8O,SACN75E,EAAIviK,EAAEozI,MACNzyI,EAAI2M,EAAEg1P,aAAaviQ,EAAGsK,KAAK+c,MAAMlmB,GAAI,CACnCq5O,SAAU98O,EACVuuQ,iBAAiB,EACjB16B,OAAQ5kK,IAEV3+B,EAAI,SAAU/tC,GACZ+C,GAAK2pE,EAAEojL,QAAUvgP,GAAKm9D,EAAE8vM,qBAAqB95Q,EAAGC,EAAG8pE,EAAG9rE,EAAGX,EAC3D,EACAuP,EAAI,YAAc7R,EAAEsC,EAAEqE,SAAUtB,EAAI,OAAS,WAC7C0K,EAAItH,KAAKowD,UAAW,IAAO7zD,EAAE6zD,UAAY7zD,EAAE4uO,OAAOmrC,SAAW15Q,IAAMwM,GAAK5O,GAAKjD,EAAEsC,EAAE08Q,SAAUv2Q,KAAK41B,QAAQs0N,WAAapwP,GAAKqN,EAAEg1P,aAAaviQ,EAAGtC,EAAIwC,EAAE2T,EAAI,EAAI3T,EAAE4N,EAAI5N,EAAEokD,OAAS,EAAG,CAC5Kk2L,SAAU98O,EACVuuQ,iBAAiB,EACjB16B,OAAQ5kK,KAEZ,GAAIj/D,EAAG,CACL,IAAIwjO,EAAI3jO,EAAEwhG,SAASszI,YAAY90O,EAAEkmO,gBAAa,EAASxzO,EAAEo1C,MAAMk6F,SAAU3sI,GAAGA,EAC5E1C,EAAI0wO,EAAE,CACJ/8N,EAAGnW,EAAI0I,KAAK40P,MAAM30P,IAAMlF,EAAInB,EAC5B8N,EAAGxD,KAAK+c,MAAM3pB,EAAI0I,KAAK2pP,MAAM1pP,IAAMrG,EAAImB,GACvCghD,MAAO,EACPmC,OAAQ,GACPpkD,GACH0wO,EAAE3wO,EAAG,CACHkiD,MAAOxjD,EAAEwjD,MACTmC,OAAQ3lD,EAAE2lD,SAEZ9jD,GAAKgP,GAAI,EAAIxP,EAAIuN,EAAEwhG,SAAS+2I,QAAQ5U,EAAG1wO,GAOpCwtC,EAPwChuC,EAAI,CAC7C6T,EAAG3T,EAAE2T,GAAK5T,EAAE4T,GAAK,GAAK3T,EAAEiiD,MAAQ,EAAIniD,EAAE6T,EACtC/F,EAAG5N,EAAE4N,GAAK7N,EAAE6N,GAAK,GAAK,CACpBg2B,IAAK,EACLgzI,OAAQ,GACR5X,OAAQ,GACRj/J,EAAEm2O,eAAiBl2O,EAAEokD,SAChB1hD,EAAE8pE,EAAI,OAAS,WAAW1sE,GAAG+kC,KAAK,CACzCsuG,MAAOmvB,IACgBx0H,EAAI,KAAzBA,GAAKxtC,EAAI,KAAO,MAAoB,IAAMwtC,EAAG,SAAWw0H,EAAIxiK,EAAE8N,GAAKkgC,EAAIrvC,EAAE2lD,OAAS,EAAI,WAAak+G,GAAKxiK,EAAE6T,GAAKlV,EAAEwjD,MAAQ,EAAGniD,EAAE8N,GAAKnP,EAAE2lD,OAAS,GAAK,UAAYk+G,IAAMxiK,EAAE6T,GAAKlV,EAAEwjD,MAAOniD,EAAE8N,GAAKkgC,EAAI,EAAIrvC,EAAE2lD,QAAS1hD,EAAE24O,QAAS,EAAI34O,EAAE44O,UAAYx7O,IAAMguC,EAAE9tC,GAAI0C,EAAEywI,MAAMpzI,OAAG,EAAQC,GAAIF,EAAI4C,EAAE44O,WACzRhsO,GAAK,GAAKtP,EAAEokD,OAASl+C,KAAKwzQ,iBAAiBh3Q,EAAG3C,EAAGD,EAAGrB,EAAGuB,EAAGwsE,GAAK/uE,EAAEsC,EAAE4pP,MAAM,KAAQn8O,EAAIH,EAAEg1P,aAAaviQ,EAAE6T,EAAG7T,EAAE8N,EAAG,CAC5Gm+P,iBAAiB,EACjB16B,OAAQ5kK,KACJp/D,EAAEg1P,aAAaviQ,EAAE6T,EAAIlV,EAAEwjD,MAAOniD,EAAE8N,EAAInP,EAAE2lD,OAAQ,CAClD2nN,iBAAiB,EACjB16B,OAAQ5kK,KAEN1sE,EAAEu3O,QAAUh3O,GAAGoC,EAAE8pE,EAAI,OAAS,WAAW,CAC3Co0K,QAASpjP,EAAI6P,EAAE8nP,UAAY1yP,EAAE21P,MAAQ31P,EAAE01P,MACvCtX,QAASrjP,EAAI6P,EAAE+nP,WAAa3yP,EAAE01P,MAAQ11P,EAAE21P,OAE5C,CACA5rL,GAAK1pE,IAAMJ,EAAE24O,QAAS,GACtB7tO,GAAK1K,IAAMwM,IAAM5M,EAAE2zC,MAAK,GAAK3zC,EAAE24O,QAAS,EAC1C,CAKA,SAAS/rO,IACP,IAAI7M,EAAIyD,KACNxD,EAAID,EAAE+tO,MACN/jK,EAAIhqE,EAAEq5B,QACN97B,EAAIyC,EAAE2vP,OACN5lL,EAAI/pE,EAAE60P,aAAe,EACrBr2P,EAAIyB,EAAEmsG,SACNpwG,EAAIguE,EAAEoxL,WAENn9P,EAAIjC,EAAE0rD,UAOR,GANAzpD,EAAIjC,EAAEk2C,MAAQ7G,EAAEprC,EAAGhC,EAAG+B,GAAK,CACzBkyC,MAAO,EACPtuB,SAAU,GAEZ5nB,EAAIwwO,EAAEA,EAAEvsO,EAAEo5B,QAAQq6M,aAAezzO,EAAEo5B,QAAQq6M,YAAY9E,QAAU3uO,EAAEo5B,QAAQq6M,YAAY9E,OAAOwsB,WAAYn7P,EAAEo5B,QAAQq6M,aAAezzO,EAAEo5B,QAAQq6M,YAAY1zO,EAAEtD,OAASuD,EAAEo5B,QAAQq6M,YAAY1zO,EAAEtD,MAAM0+P,YAAap/P,GAC/MkyO,EAAEzqO,KAAM,kBACJo8J,EAAE7jK,IAAMA,EAAEkpC,SAAWllC,EAAE28P,gBAAiB,CAC1C,IAAI9vP,EAAI7M,EAAEm0Q,UAAU,kBAAmB,cAAepqM,EAAI,UAAY,SAAU/tE,EAAEgpD,QAAU,GAC5Fn4C,EAAEu1B,KAAK,CACL0hB,SAAUimB,KAEXA,IAAMA,EAAI/pE,EAAEkjQ,mBAAqBljQ,EAAE6zD,SAAWhnD,EAAE8mC,MAAK,GAAKo2B,EAAEC,EAAEtiB,UAAY,UAAY,QAAQ,CAC7F5D,QAAS,GACR7lD,IACHV,EAAEwe,SAAQ,SAAUxe,GACdD,EAAEkvO,EAAExwO,EAAGuB,EAAE08Q,WAAa18Q,EAAE87B,SAAW97B,EAAE87B,QAAQ+hO,aAC/Cr/O,SAAQ,SAAUze,EAAGysE,GACrB,IAAIhvE,EAAIuC,EAAE4nC,WAAa3nC,EAAEo9P,QAAUp9P,EAAE28Q,kBA/B7C,SAAWl6Q,EAAGC,GACZ,IAAI3C,EAAI2C,EAAEgpB,OACV,OAAO3rB,IAAK2C,EAAI3C,EAAE2lC,SAAUjjC,EAAIA,EAAE1C,EAAEoB,UAAWpB,EAAIA,EAAEU,MAAO,MAAQiC,GAAKD,EAAI1C,GAAK,MAAQ2C,GAAKD,EAAI1C,GAAK,OAAS2C,GAAKD,GAAK1C,GAAK,OAAS2C,GAAKD,GAAK1C,GAAK,OAAS2C,GAAKD,GAAK1C,GAAK,QAAU2C,GAAKD,IAAM1C,EACvM,CA4BiEsN,CAAErN,EAAGD,GAC5DD,EAAIE,EAAE48Q,WAAa58Q,EAAE48Q,WAAWpwM,GAAKxsE,EAAE6/P,UACvCphQ,EAAIuB,EAAE69P,WAAa79P,EAAE69P,WAAWrxL,GAAKxsE,EAAEg+P,UACvC19P,EAAI7C,EAAEsC,EAAE+iK,SAAU9iK,EAAE68Q,eACpBv6G,GAAK7jK,EACP,GAAIjB,EAAG,CACL,IAAIkD,EAAIV,EAAE+7P,iBACNjuN,EAAIrwC,EAAEsC,EAAEC,EAAEm6P,aAAe,UAAWp6P,EAAE4D,QAC1CjD,EAAI+vO,EAAE3iM,GAAKlgC,EAAEkgC,EAAGptC,EAAGgC,IAAM3C,EAAEC,EAAEm6P,aAAe,cAAgBp6P,EAAE6pP,WAAW9sP,KAAK4D,EAAGX,GACjF+tC,EAAI/tC,EAAEo1C,MACN,IAAI3nC,EAAIzN,EAAEo8O,SACVz5O,EAAE6wO,aAAezlM,EAAEgzH,MAAQrjK,EAAEsC,EAAE+gK,MAAOhzH,EAAEgzH,MAAOr+J,EAAEq+J,MAAO,WAAY,aAAehzH,EAAEgzH,OAAS9gK,EAAE88Q,cAAgB77Q,EAAE06O,YAAY37O,EAAE8gK,OAASr+J,EAAEq+J,OAAQhzH,EAAEgzH,OAAS2vE,EAAEnwO,IAAMP,EAAE08Q,QAAU,EAAIn8Q,GAAKmsE,EAAE2jL,SAAWpwP,EAAE88Q,cAAgB,kBAAoB98Q,EAAE88Q,cAAerwM,EAAEszG,SAAWjyI,EAAEiyI,OAAStzG,EAAEszG,SACzR,IAAIixD,EAAI,CACN1wO,EAAGP,EAAEyzO,cAAgB,EACrB2I,SAAU3uO,EACV86C,QAASvoD,EAAEuoD,QACXb,OAAQ,GAEV/kD,EAAE6wO,aAAevC,EAAE3tB,KAAOtjN,EAAEwiK,gBAAiByuE,EAAEgL,OAASj8O,EAAE6jK,YAAaotE,EAAE,gBAAkBjxO,EAAEqlK,aAC7FtiK,EAAEkuO,GAAG,SAAUvuO,EAAGC,GAChB,qBAAuBD,UAAYuuO,EAAEtuO,EACvC,GACF,EACCjE,GAAKjB,GAAKizO,EAAE/vO,MAAQjC,EAAE83C,QAAUx2C,EAAE63O,UAAY53O,EAAEg+P,UAAYv/P,EAAIuB,EAAEg+P,WAAah+P,EAAEg+P,UAAU76K,UAAWnjF,EAAE69P,aAAe,IAAM79P,EAAE69P,WAAWnhQ,cAAgBsD,EAAE69P,kBAAoB79P,EAAE69P,WAAWrxL,IAAKA,UAAYxsE,EAAEg+P,UAAWl+P,IAAME,EAAE6/P,UAAY7/P,EAAE6/P,UAAU18K,UAAWnjF,EAAE48Q,aAAe,IAAM58Q,EAAE48Q,WAAWlgR,cAAgBsD,EAAE48Q,kBAAoB58Q,EAAE48Q,WAAWpwM,MAC9VhvE,GAAKizO,EAAE/vO,KAAOjC,EAAIuyO,EAAEh3M,KAAOt5B,GAAKV,EAAE69P,WAAa79P,EAAE69P,YAAc,GAAIp/P,EAAIuB,EAAE69P,WAAWrxL,GAAKh/D,EAAIvM,EAAE+4B,KAAKt5B,EAAG,GAAI,KAAMX,EAAE63O,SAASzpL,SAAS,yBAA2BltD,EAAEyrE,MAAMhsE,EAAG,GAAI,KAAMX,EAAEu3O,MAAO,KAAM,KAAMv3O,EAAE63O,QAAS,KAAM,cAAeprK,IAAMxsE,EAAEg+P,UAAYv/P,GAAIA,EAAE0vD,SAAS,gCAAkCnuD,EAAEo8P,WAAa,KAAOr8P,EAAEukC,WAAa,KAAOvkC,EAAE63O,QAAU,sBAAwB,MAAOn5O,EAAEq9B,QAAU/7B,EAAGtB,EAAEomC,KAAKmsM,GAAItuO,EAAE6wO,YAAc90O,EAAE42C,IAAIvH,GAAG45B,OAAO3nE,EAAE2nE,QAASjpE,EAAEg8O,OAASh8O,EAAE+Z,IAAIlJ,GAAIvP,EAAEg9Q,WAAah9Q,EAAE63O,UAAYn5O,EAAE+/O,YAAYx+O,EAAEg9Q,kBAAoBh9Q,EAAEg9Q,iBAAiBv+Q,IAAMuB,EAAE+9P,QAASh+P,EAAEg9Q,UAAW/8Q,EAAEi9Q,gBAAkBl9Q,EAAEg9Q,SAASp1O,UAAY3nC,EAAEi9Q,cAAgBj9Q,EAAEi9Q,cAAc95L,YAAa1gF,EAAEy6Q,eAAel9Q,EAAGvB,EAAGsB,EAAG,KAAMuiK,GAC9sB,GACF,GACF,CACAquE,EAAEzqO,KAAM,sBACV,CACA,SAASxF,EAAE+B,EAAGC,EAAG3C,EAAGC,EAAGvC,EAAG+uE,GACxB,IAAIC,EAAIvmE,KAAKsqO,MACXnjO,EAAI3K,EAAEywI,MACNrwI,EAAIJ,EAAEwzO,cACN14O,EAAIiF,EAAEgjD,IAAM,EAAIhjD,EAAE6lD,SAAW,EAC7BxoD,EAAI4C,EAAEiR,EACR7T,OAAI,IAAWA,EAAI,EAAIA,EACvB,IAAImB,EAAIyB,EAAEkL,EACV3M,OAAI,IAAWA,EAAI,EAAIA,EACvB,IAAIxC,GAAKsB,EAAE4T,GAAK,GAAKnW,EACrB,GAAI,EAAIiB,EAAG,CACT,UAAY4O,GAAK,GAAKvN,GAAK4C,EAAEywI,MAAQ,OAAQzwI,EAAE+5Q,QAAS,GAAM38Q,GAAKrB,EACnE,IAAI6B,GAAI,CACV,CAQA,OAPA7B,GAAKsB,EAAE4T,GAAK,GAAK3T,EAAEiiD,MAAQzkD,GACvBivE,EAAE0oL,YAAc,SAAW9nP,GAAK,GAAKvN,GAAK4C,EAAEywI,MAAQ,QAASzwI,EAAE+5Q,QAAS,GAAM38Q,GAAK2sE,EAAE0oL,UAAY12P,EAAG6B,GAAI,GAE5G,GADA7B,EAAIsB,EAAE6N,EAAIpQ,KACA,WAAasF,GAAK,GAAK7B,GAAKyB,EAAEwzO,cAAgB,MAAOxzO,EAAE+5Q,QAAS,GAAMx7Q,GAAKxC,EAAG6B,GAAI,IAC5F7B,GAAKsB,EAAE6N,GAAK,GAAK5N,EAAEokD,OAAS5mD,GACxBivE,EAAE2oL,aAAe,QAAUtyP,GAAK,GAAK7B,GAAKyB,EAAEwzO,cAAgB,SAAUxzO,EAAE+5Q,QAAS,GAAMx7Q,GAAKwrE,EAAE2oL,WAAa32P,EAAG6B,GAAI,GACtHA,IAAMoC,EAAEiR,EAAI7T,EAAG4C,EAAEkL,EAAI3M,EAAGwB,EAAE44O,QAAU7uK,EAAG/pE,EAAE0wI,MAAMzwI,OAAG,EAAQjF,IACnD6C,CACT,CACA,SAAS2uO,EAAExsO,EAAGC,GACZ,IACE1C,EADED,EAAI,GAER,GAAIuiK,EAAE7/J,KAAO6/J,EAAE5/J,GAAI3C,EAAI0C,EAAEU,KAAI,SAAUV,GACrC,OAAOxB,EAAEwB,EAAGC,EACd,SAAQ,GAAI4/J,EAAE5/J,KAAO4/J,EAAE7/J,GAAI1C,EAAI2C,EAAES,KAAI,SAAUT,GAC7C,OAAOzB,EAAEwB,EAAGC,EACd,SAAQ,GAAI4/J,EAAE7/J,IAAM6/J,EAAE5/J,GAAI,IAAK1C,EAAIoK,KAAKI,IAAI/H,EAAE/F,OAAQgG,EAAEhG,QAASsD,KAAMD,EAAEC,GAAKiB,EAAEwB,EAAEzC,GAAI0C,EAAE1C,SAASD,EAAIkB,EAAEwB,EAAGC,GAC1G,OAAO3C,CACT,CACA,SAASixO,EAAEvuO,EAAGC,EAAG3C,EAAGC,EAAGvC,GACrB,IAAIgvE,EAAIvmE,KAAKsqO,MACXhkK,EAAIC,EAAE6tK,SACNjtO,EAAInH,KAAK2pP,MACT/sP,EAAIuK,EAAE+6O,SACN5qP,EAAIgvE,EAAI9pE,EAAE0hD,OAAS,EAAI1hD,EAAEu/C,MAAQ,EACnCx/C,GAAKA,EAAIA,EAAE44Q,YAAc54Q,EAAI,EAAI,EACjCC,EAAE46P,UAAY9wL,EAAI/uE,EAAEkW,EAAI7Q,GAAKtF,EAAIiF,EAAI4K,EAAE40C,MAAQzkD,EAAIiF,EACnDC,EAAE+6P,UAAYjxL,EAAI1pE,EAAIoD,KAAK40P,MAAM12M,OAAS5mD,EAAIiF,GAAKjF,EAAIiF,EAAIhF,EAAEmQ,EAC7D5N,EAAI,WAAa0C,EAAEwiD,aAAexiD,EAAE0zC,OAAQ1zC,EAAEmiC,KAAK,CACjD0hB,QAAS,IACR2F,QAAQ,CACT3F,QAAS,KACL7jD,EAAEmiC,KAAK,CACX0hB,QAAS,IACR2F,QAAQ,CACT3F,QAAS,QACR,EAAQ7jD,EAAE2zC,MACbo2B,EAAE6qL,cAAgBv3P,GAAK2C,EAAEmiC,KAAK,CAC5BlxB,EAAGjR,EAAE46P,UACL1vP,EAAGlL,EAAE+6P,YACH/6P,EAAE24O,QAAS,EACjB,CACA,IAAI/6O,EAAI,GACRmC,EAAEsjP,QAAU,SAAUtjP,GACpB,IAAK,IAAMnC,EAAE0S,QAAQvQ,GAAI,CACvB,IAAIC,EAAID,EAAE7F,UACV0D,EAAEtD,KAAKyF,GACPC,EAAEw6Q,eAAiB1wM,EACnB9pE,EAAEq0Q,eAAiBznQ,EACnB5M,EAAEg3Q,iBAAmBh5Q,EACrBgC,EAAE65Q,qBAAuBvrC,CAC3B,CACF,CACD,CA9LD,CA8LG3jO,IAAMA,EAAI,CAAC,IAEPA,CACT,IACAK,EAAEjL,EAAG,mCAAoC,CAACA,EAAE,4BAA6BA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GACpJ,IAGEyB,EAHE5iM,EAAIx+B,EAAE+hO,OACRzjO,EAAIqhO,EAAE/zM,MACNu1M,EAAIxB,EAAE0D,KA8BR,OA5BA,SAAWrjO,GACT,SAASgzJ,EAAE7/J,EAAGhF,EAAGsC,EAAGsN,EAAGm/D,GACrB,IAAI1pE,EAAIoD,KAAKsqO,MAAM8J,SACjBr5O,EAAIwB,EAAE4uO,OACN/uE,GAAKrhK,EAAE4uP,MAAQ5uP,EAAE4uP,MAAM1pP,IAAMD,KAAKsqO,MAAM09B,YAAc,EACxDjtQ,GAAKA,EAAE65P,MAAQ75P,EAAE65P,MAAM30P,IAAMD,KAAKsqO,MAAM29B,YAAc,EACtD,IAAIztQ,EAAI+B,EAAE45Q,OAAS55Q,EAAE2gQ,UACnB9zP,EAAImhO,EAAEhuO,EAAE06Q,MAAO16Q,EAAE21P,MAAQ3nB,EAAEvqO,KAAK01Q,oBAAqB36Q,IACrD+vO,EAAIP,EAAE1wO,EAAE08Q,SAAUv2Q,KAAK41B,QAAQs0N,UACjC1vP,IAAgB,GAAV2M,EAAIO,EAAElN,IAAUkN,IAAMP,EAAE+2C,QAAU/2C,EAAEO,EAAGP,EAAEO,EAAI,GAA4B,GAAxBlN,EAAI2M,EAAEO,EAAIP,EAAE+2C,OAASnjD,IAAYP,EAAI2M,EAAE+2C,SAAW/2C,EAAE+2C,QAAU1jD,GAAIoC,IAAMuK,EAAI,CACjIsG,EAAG1S,EAAIoM,EAAEO,EAAIP,EAAE+2C,OACfx2C,EAAG00J,EAAIj1J,EAAEsG,EAAItG,EAAE40C,MACfA,MAAO50C,EAAE+2C,OACTA,OAAQ/2C,EAAE40C,QACR+uL,IAAMluO,GAAKuK,EAAEsG,GAAKrE,EAAI,EAAIjC,EAAE40C,MAAO50C,EAAE40C,MAAQ,IAAM50C,EAAEO,GAAK0B,EAAIjC,EAAE+2C,OAAS,EAAG/2C,EAAE+2C,OAAS,KAC3FrkD,EAAEozI,MAAQs9F,EAAE1wO,EAAEozI,OAAQrwI,GAAKkuO,EAAI,SAAW1hO,EAAI,QAAU,QACxDvP,EAAEm2O,cAAgBzF,EAAE1wO,EAAEm2O,cAAepzO,GAAKkuO,EAAI,SAAW1hO,EAAI,MAAQ,UACrEw+B,EAAElxC,UAAUsgR,eAAepgR,KAAKoJ,KAAMzD,EAAGhF,EAAGsC,EAAGsN,EAAGm/D,GAClDzsE,EAAE08Q,QAAUh6Q,EAAEq6Q,eAAiBr/Q,EAAE43C,IAAI,CACnCyrH,MAAOr+J,EAAEq6Q,eAEb,CACA,IAAI77Q,EAAI,GACRqO,EAAEy2O,QAAU,SAAUjjP,GACpBL,EAAEsjP,QAAQj4M,IACT,IAAM7sC,EAAE+R,QAAQlQ,KAAO7B,EAAEjE,KAAK8F,GAAIA,EAAElG,UAAUsgR,eAAiB56G,EAClE,CACD,CA3BD,CA2BGouE,IAAMA,EAAI,CAAC,IACPA,CACT,IACAhjO,EAAEjL,EAAG,0BAA2B,CAACA,EAAE,iCAAkCA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GAChJ,IAAInhM,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUqrC,EAAGw0H,GAQnB,OAPA7/J,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAGK,GACjCL,EAAE+/D,UAAY1/D,CAChB,GAAK,SAAUL,EAAGK,GAChB,IAAK,IAAIrF,KAAKqF,EAAGA,EAAEjG,eAAeY,KAAOgF,EAAEhF,GAAKqF,EAAErF,GACpD,GACSqwC,EAAGw0H,EACd,EACA,OAAO,SAAUx0H,EAAGw0H,GAClB,SAASrhK,IACPiF,KAAK40B,YAAcgT,CACrB,CACArrC,EAAEqrC,EAAGw0H,GACLx0H,EAAElxC,UAAY,OAAS0lK,EAAI3lK,OAAOmE,OAAOwhK,IAAMrhK,EAAErE,UAAY0lK,EAAE1lK,UAAW,IAAIqE,EAChF,CACF,CAlBgC,GAmBhC2M,EAAIqhO,EAAEzrO,OACNitO,EAAIxB,EAAE/zM,MAkBR,OAjBA+zM,EAAI,SAAU3/N,GACZ,SAAS1B,IACP,IAAInL,EAAI,OAAS6M,GAAKA,EAAEvN,MAAMmE,KAAMlE,YAAckE,KAIlD,OAHAzD,EAAEtG,UAAO,EACTsG,EAAEq5B,aAAU,EACZr5B,EAAE2vP,YAAS,EACJ3vP,CACT,CAGA,OAFAqrC,EAAElgC,EAAG0B,GACL1B,EAAEqqG,eAAiBw4H,EAAEhuO,EAAEw1G,eAAgB,CAAC,GACjCrqG,CACT,CAXI,CAWFnL,GACFmL,EAAEqhO,EAAEryO,UAAW,CACb09O,UAAU,IAEZhrO,EAAEq7P,mBAAmB,MAAO17B,GAErBA,CACT,IACAvhO,EAAEjL,EAAG,kCAAmC,CAACA,EAAE,iCAAkCA,EAAE,6BAA8BA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,GAC3L,IAAIv8G,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUxB,EAAG6B,GAQnB,OAPAL,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAG1C,GACjC0C,EAAE+/D,UAAYziE,CAChB,GAAK,SAAU0C,EAAG1C,GAChB,IAAK,IAAItC,KAAKsC,EAAGA,EAAElD,eAAeY,KAAOgF,EAAEhF,GAAKsC,EAAEtC,GACpD,GACSwD,EAAG6B,EACd,EACA,OAAO,SAAU7B,EAAG6B,GAClB,SAASrF,IACPyI,KAAK40B,YAAc75B,CACrB,CACAwB,EAAExB,EAAG6B,GACL7B,EAAErE,UAAY,OAASkG,EAAInG,OAAOmE,OAAOgC,IAAMrF,EAAEb,UAAYkG,EAAElG,UAAW,IAAIa,EAChF,CACF,CAlBgC,GAmBhCgzO,EAAIpmF,EAAE8mF,SACNT,EAAIrmF,EAAE7mJ,OACNmtO,EAAItmF,EAAEnvH,MAgER,OA/DAmvH,EAAI,SAAU5nJ,GACZ,SAASxB,IACP,IAAI6B,EAAI,OAASL,GAAKA,EAAEV,MAAMmE,KAAMlE,YAAckE,KAIlD,OAHApD,EAAE3G,UAAO,EACT2G,EAAEg5B,aAAU,EACZh5B,EAAEsvP,YAAS,EACJtvP,CACT,CAyCA,OAxCAgrC,EAAE7sC,EAAGwB,GACLxB,EAAErE,UAAUwgR,YAAc,WACxB,IAAI36Q,EAAIyD,KACNzI,EAAIyI,KAAK41B,QAAQuhP,OACjBt9Q,EAAImG,KAAKksP,OAAO11P,OAClBe,GAAKyI,KAAKksP,OAAO5zO,SAAQ,SAAUnR,EAAGm/D,GACpC,CAAC,IAAK,KAAKhuD,SAAQ,SAAU1b,EAAG7B,GAC9B,IAAIxC,EAAI,OAASqE,EAAE2J,cACnB,GAAIhP,EAAEqF,KAAOuK,EAAE+vP,OAAQ,CACrB,IAAI96F,EAAI7/J,EAAEK,EAAI,QACVgrC,EAAIrwC,EAAEqF,GAAKw/J,EAAE4pF,OACjB,GAAI5pF,IAAMA,EAAEg7G,MAAO,CACjB,IAAIhuQ,EAAIlF,KAAKI,IAAI,EAAG6C,EAAE5O,GAAKqvC,GAC3Bw0H,EAAIl4J,KAAKqL,IAAI6sJ,EAAEn8J,IAAKkH,EAAE5O,GAAKqvC,GAC3B7sC,EAAI,IAAMmJ,KAAKy+J,IAAIr8F,EAAIvrE,EAAIlB,GAC3BsN,EAAE5O,GAAK6Q,GAAKgzJ,EAAIhzJ,IAAMrO,EAAImJ,KAAKwF,MAAM3O,IACrC,MAAQ6B,IAAMuK,EAAEmwC,QAAUnwC,EAAE8qP,MAC9B,CACF,CACF,GACF,GACF,EACAl3P,EAAErE,UAAUk6Q,UAAY,WACtB5wQ,KAAK41B,QAAQstN,UAAY3mP,EAAE7F,UAAUk6Q,UAAUh6Q,KAAKoJ,MAAQA,KAAKowQ,QAAUpwQ,KAAKowQ,MAAQpwQ,KAAKowQ,MAAMnzL,UACrG,EACAliF,EAAEg3G,eAAiB04H,EAAErhO,EAAE2oG,eAAgB,CACrCmxI,UAAW,EACX6Z,mBAAoB,KACpBoa,OAAQ,CACN1pQ,EAAG,EACH/F,EAAG,GAELyxP,OAAQ,CACN13N,SAAS,GAEXukK,QAAS,CACPsrC,aAAc,2GACdC,YAAa,sDAGVx2O,CACT,CAjDI,CAiDFqO,GACFohO,EAAErmF,EAAEztJ,UAAW,CACbi/P,YAAap5P,EAAE7F,UAAUi/P,YACzBgX,QAAQ,EACR5gB,gBAAgB,EAChBF,iBAAiB,EACjBqqB,cAAe,CAAC,QAAS,cAAe,mBACxCmB,qBAAqB,IAEvB9sC,EAAEpmF,EAAG,kBAAkB,WACrBnkJ,KAAKk3Q,aACP,IACAnuC,EAAE07B,mBAAmB,UAAWtgH,GAEzBA,CACT,IACA38I,EAAEjL,EAAG,8BAA+B,CAACA,EAAE,mBAAoBA,EAAE,yBAA0BA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GAC9H,IAIE0B,EAJE7iM,EAAIrrC,EAAEktO,QACR/hO,EAAIqhO,EAAEjsO,SACNytO,EAAIxB,EAAE0D,KACNjC,EAAIzB,EAAE4D,eA+BR,OA7BA,SAAWpwO,GACTA,EAAE+6Q,UAAY,WACZ,IAAI/6Q,EAAIyD,KAAK41B,QACXh5B,EAAIoD,KAAKsqO,MACT/yO,EAAI,GAAKgF,EAAEg7Q,cAAgB,GAC3B19Q,EAAI+C,EAAEqyP,UAAY,EAAI13P,EACtB4P,EAAIvK,EAAEsyP,WAAa,EAAI33P,EACvB+uE,EAAI/pE,EAAEu0M,OACN10C,EAAIl4J,KAAKqL,IAAI1V,EAAGsN,GAChB5O,EAAIgE,EAAEo/D,KACN/zB,EAAIrrC,EAAEi7Q,WAAa,EAKrB,IAJA,kBAAoBj/Q,IAAMA,EAAIunB,WAAWvnB,IACzC,kBAAoBqvC,IAAMA,EAAI9nB,WAAW8nB,IACzCrrC,EAAI,CAACguO,EAAEjkK,EAAE,GAAI,OAAQikK,EAAEjkK,EAAE,GAAI,OAAQikK,EAAEhyO,GAAK,EAAIA,OAAI,EAASgE,EAAEo/D,KAAM,QAAS4uK,EAAE3iM,GAAK,EAAIA,OAAI,EAASrrC,EAAEi7Q,WAAa,EAAG,QACvH56Q,EAAE66Q,SAAWz3Q,gBAAgBoJ,IAAM7M,EAAE,GAAK,GACtC+pE,EAAI,EAAG,EAAIA,IAAKA,EAAG/tE,EAAIgE,EAAE+pE,GAAI1pE,EAAI,EAAI0pE,GAAK,IAAMA,GAAK,KAAKzgE,KAAKtN,GAAIgE,EAAE+pE,GAAKkkK,EAAEjyO,EAAG,CAACsB,EAAGsN,EAAGi1J,EAAG7/J,EAAE,IAAI+pE,KAAO1pE,EAAIrF,EAAI,GAEnH,OADAgF,EAAE,GAAKA,EAAE,KAAOA,EAAE,GAAKA,EAAE,IAClBA,CACT,EACAA,EAAEm7Q,sBAAwB,SAAUn7Q,EAAGK,GAGrC,OAFAL,EAAImL,EAAEnL,GAAKA,EAAI,EACfK,EAAI8K,EAAE9K,IAAMA,EAAIL,GAAK,IAAMK,EAAIL,EAAIK,EAAIL,EAAI,IACpC,CACL4jC,MAAOyH,GAAKrrC,GAAK,IACjBm5B,IAAKkS,GAAKhrC,GAAK,IAEnB,CACD,CA3BD,CA2BG6tO,IAAMA,EAAI,CAAC,IAEPA,CACT,IACAjjO,EAAEjL,EAAG,yBAA0B,CAACA,EAAE,wCAAyCA,EAAE,wBAAyBA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,GAC7I,IAAInhM,EAAI5nC,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAUhF,EAAGsC,GAQnB,OAPA0C,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAG1C,GACjC0C,EAAE+/D,UAAYziE,CAChB,GAAK,SAAU0C,EAAG1C,GAChB,IAAK,IAAItC,KAAKsC,EAAGA,EAAElD,eAAeY,KAAOgF,EAAEhF,GAAKsC,EAAEtC,GACpD,EACOgF,EAAEhF,EAAGsC,EACd,EACA,OAAO,SAAUtC,EAAGsC,GAClB,SAASsN,IACPnH,KAAK40B,YAAcr9B,CACrB,CACAgF,EAAEhF,EAAGsC,GACLtC,EAAEb,UAAY,OAASmD,EAAIpD,OAAOmE,OAAOf,IAAMsN,EAAEzQ,UAAYmD,EAAEnD,UAAW,IAAIyQ,EAChF,CACF,CAlBgC,GAmBhCO,EAAInL,EAAEq2O,aACNrI,EAAIxB,EAAEkC,SACNT,EAAIzB,EAAE2C,QACRnvO,EAAIwsO,EAAEzrO,OACN,IAAImtO,EAAI1B,EAAEjsO,SACRs/J,EAAI2sE,EAAE0D,KACN1xO,EAAIguO,EAAE4D,eAsGR,OArGAvjO,EAAI,SAAU7M,GACZ,SAAShF,IACP,IAAIsC,EAAI,OAAS0C,GAAKA,EAAEV,MAAMmE,KAAMlE,YAAckE,KAIlD,OAHAnG,EAAE88Q,mBAAgB,EAClB98Q,EAAE+7B,aAAU,EACZ/7B,EAAEsxO,YAAS,EACJtxO,CACT,CA6DA,OA5DA+tC,EAAErwC,EAAGgF,GACLhF,EAAEb,UAAUihR,iBAAmB,WAC7B,IAAIp7Q,EAAIyD,KAAK43Q,cACXrgR,EAAIyI,KAAKmrO,OAAOv1M,QAAQ+hO,WACxBrxL,EAAItmE,KAAK63Q,gBACTj7Q,EAAIrF,EAAEugR,eAER,OADAxxM,EAAE1pE,KAAOA,EAAI0pE,EAAE1pE,IACRA,EAAEhG,KAAKoJ,KAAM,CAClByN,EAAGlR,EAAEmiD,MAAMjxC,EACX/F,EAAGnL,EAAEmiD,MAAMh3C,EACXqwQ,UAAWx7Q,EAAEw7Q,WACZx7Q,EAAEy7Q,kBAAmBzgR,EAC1B,EACAA,EAAEb,UAAUuhR,aAAe,WACzB,OAAOj4Q,KAAKk4Q,OAASl4Q,KAAKm4Q,kBAAoB,CAC5Cl/B,WAAY,EACZC,WAAY,EAEhB,EACA3hP,EAAEb,UAAUwkQ,SAAW,SAAU3+P,GAC/B,IAAI1C,EAAImG,KAAKk9P,UACb,OAAOl9P,KAAKk4Q,SAAWl4Q,KAAKowD,QAAU,GAAKpwD,KAAKmrO,OAAOb,MAAM3hI,SAAS6mI,QAAQ+M,IAAI1iP,EAAE4T,EAAG5T,EAAE6N,EAAG7N,EAAEO,EAAImC,EAAG1C,EAAEO,EAAImC,EAAG,CAC5G8/O,OAAQxiP,EAAEO,EAAI,EACd+lC,MAAOtmC,EAAEsmC,MACTzK,IAAK77B,EAAE67B,KAEX,EACAn+B,EAAEb,UAAU69B,KAAO,WACjB,IAAI16B,EAAImG,KACRzD,EAAE7F,UAAU69B,KAAK14B,MAAMmE,KAAMlE,WAC7BkE,KAAK3G,KAAO+iK,EAAEp8J,KAAK3G,KAAM,SACzB,IAAI9B,EAAI,SAAUgF,GAChB1C,EAAE2B,MAAM,WAAae,EAAEtD,KACzB,EAGA,OAFAsxO,EAAEvqO,KAAM,SAAUzI,GAClBgzO,EAAEvqO,KAAM,WAAYzI,GACbyI,IACT,EACAzI,EAAEb,UAAUuI,QAAU,WACpB,OAAOwrO,EAAEzqO,KAAK0H,IAAM,GAAK1H,KAAK0H,CAChC,EACAnQ,EAAEb,UAAUwtQ,WAAa,SAAU3nQ,EAAGhF,GACpC,IAAIsC,EAAImG,KACNmH,EAAInH,KAAKmrO,OACTvuO,EAAIuK,EAAEmjO,MACNvvO,EAAIoM,EAAEyuB,QAAQwiP,kBAChB7gR,EAAI6kK,EAAE7kK,EAAGwD,GACTwB,IAAMyD,KAAKowD,UAAYpwD,KAAKowD,QAAUpwD,KAAK41B,QAAQw6B,QAAU7zD,EAAI,qBAAuBA,GAAKyD,KAAKowD,QAAU7zD,EAAG4K,EAAEyuB,QAAQ3/B,KAAKkR,EAAElR,KAAK6W,QAAQ9M,OAASA,KAAK41B,QAAS,CAAC,UAAW,YAAa,YAAa,eAAetd,SAAQ,SAAU/gB,GACrOsC,EAAEtC,IAAIsC,EAAEtC,GAAGgF,EAAI,OAAS,QAAQA,EACtC,IAAIyD,KAAKi4P,YAAcr7P,EAAEszO,OAAO0xB,aAAa5hQ,KAAMzD,GAAIA,GAAK,UAAYyD,KAAKwpC,OAASxpC,KAAK2+O,SAAS,IAAK5jP,IAAMoM,EAAE0gP,SAAU,GAAKtwP,GAAKqF,EAAE+xP,SACzI,EACAp3P,EAAEb,UAAU8E,MAAQ,SAAUe,EAAGhF,EAAG+uE,GAClC,IAAIzsE,EAAImG,KAAKmrO,OACbzjO,EAAE4+D,EAAGzsE,EAAEywO,OACPluE,EAAE7kK,GAAG,GACLyI,KAAKk4Q,OAASl4Q,KAAK41B,QAAQsiP,OAAS1tC,EAAEjuO,GAAKA,GAAKyD,KAAKk4Q,OACrDr+Q,EAAE+7B,QAAQ3/B,KAAK4D,EAAE5D,KAAK6W,QAAQ9M,OAASA,KAAK41B,QAC5C51B,KAAK63P,SAAW73P,KAAK63P,QAAQ7xM,QAAQhmD,KAAKi4Q,gBAC1Cj4Q,KAAKq4Q,aAAer4Q,KAAKq4Q,YAAYryN,QAAQhmD,KAAKi4Q,eACpD,EACO1gR,CACT,CArEI,CAqEF6R,GACF7M,EAAE6M,EAAE1S,UAAW,CACbmhR,gBAAiB,CACfS,YAAa,SAAU/7Q,EAAGhF,EAAGsC,GAC3B,IAAIsN,EAAI5P,EAAEghR,QAEV,OADAhhR,EAAIA,EAAEihR,gBACC,CAAC,CAAC,IAAKj8Q,EAAEkR,EAAGlR,EAAEmL,GAAI7N,EAAE4+Q,cAAgB,CAAC,IAAKl8Q,EAAEkR,GAAK,SAAWlR,EAAEw7Q,WAAa,EAAI,GAAIx7Q,EAAEmL,EAAG,EAAIP,EAAEsG,EAAIlW,EAAEkW,EAAG,EAAItG,EAAEO,EAAInQ,EAAEmQ,EAAGP,EAAEsG,EAAGtG,EAAEO,GAAK,CAAC,IAAKP,EAAEsG,EAAGtG,EAAEO,GAAI,CAAC,IAAKnQ,EAAEkW,EAAGlW,EAAEmQ,GACzK,EACAgxQ,SAAU,SAAUn8Q,EAAGhF,GAErB,OADAA,EAAIA,EAAEihR,gBACC,CAAC,CAAC,IAAKj8Q,EAAEkR,EAAGlR,EAAEmL,GAAI,CAAC,IAAKnQ,EAAEkW,EAAGlW,EAAEmQ,GACxC,EACAixQ,YAAa,SAAUp8Q,EAAGhF,EAAGsC,GAC3BtC,EAAIA,EAAEihR,gBACN,IAAIrxQ,EAAInH,KAAKmrO,OACX7kK,EAAIn/D,EAAE2pM,OAAO,GACbl0M,EAAIuK,EAAEmjO,MAAM2kB,UACZ12P,EAAI4O,EAAEmjO,MAAM8kB,SACdjoP,EAAI5K,EAAEw7Q,UACN,IAAI37G,EAAIp8J,KAAKk9P,UAAU9iQ,EASvB,OARAP,EAAIkB,EAAElB,EAAE++Q,cAAe,GAEvB/+Q,EAAI,CAAC,IADL+C,EAAI,SAAWuK,EAAIm/D,EAAI81F,GAAKx/J,EAAIrE,EAAI+tE,EAAI81F,IAAM,EAAIviK,GAAKtB,GAAK+tE,EAAI81F,GAAKviK,EACxD0C,EAAEmL,GACf4+D,GAAI,GACA,SAAWn/D,EAAIvK,EAAIL,EAAEkR,GAAK7Q,EAAIrF,EAAEkW,EAAI7Q,EAAIL,EAAEkR,GAAK7Q,EAAIrF,EAAEkW,KAAG64D,GAAI,GAChE/pE,EAAI,CAAC,CAAC,IAAKA,EAAEkR,EAAGlR,EAAEmL,IAClB4+D,GAAK/pE,EAAEzF,KAAK+C,GACZ0C,EAAEzF,KAAK,CAAC,IAAKS,EAAEkW,EAAGlW,EAAEmQ,IACbnL,CACT,KAGG6M,CACT,IACA5B,EAAEjL,EAAG,0BAA2B,CAACA,EAAE,+BAAgCA,EAAE,iCAAkCA,EAAE,mBAAoBA,EAAE,+BAAgCA,EAAE,0BAA2BA,EAAE,yBAA0BA,EAAE,iCAAkCA,EAAE,gCAAiCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,EAAGC,EAAGC,EAAGruE,GACxV,IAAIrhK,EAAIiF,MAAQA,KAAKo8D,WAAa,WAC9B,IAAI7/D,EAAI,SAAU1C,EAAGtC,GAQnB,OAPAgF,EAAI9F,OAAO4lE,gBAAkB,CAC3BC,UAAW,cACAngE,OAAS,SAAUI,EAAG1C,GACjC0C,EAAE+/D,UAAYziE,CAChB,GAAK,SAAU0C,EAAG1C,GAChB,IAAK,IAAItC,KAAKsC,EAAGA,EAAElD,eAAeY,KAAOgF,EAAEhF,GAAKsC,EAAEtC,GACpD,EACOgF,EAAE1C,EAAGtC,EACd,EACA,OAAO,SAAUsC,EAAGtC,GAClB,SAAS+uE,IACPtmE,KAAK40B,YAAc/6B,CACrB,CACA0C,EAAE1C,EAAGtC,GACLsC,EAAEnD,UAAY,OAASa,EAAId,OAAOmE,OAAOrD,IAAM+uE,EAAE5vE,UAAYa,EAAEb,UAAW,IAAI4vE,EAChF,CACF,CAlBgC,GAmBhC1pE,EAAIL,EAAEm7Q,sBACR3uC,EAAIA,EAAE3yM,KACN,IAAI7+B,EAAI6kK,EAAET,MACR9hK,EAAIuiK,EAAE9+J,OACN6J,EAAIi1J,EAAEyuE,UACNvkK,EAAI81F,EAAEpnI,MACN4S,EAAIw0H,EAAEqwE,KACNl0O,EAAI6jK,EAAEuwE,eAqPR,OApPAvwE,EAAI,SAAU7/J,GACZ,SAAS1C,IACP,IAAIA,EAAI,OAAS0C,GAAKA,EAAEV,MAAMmE,KAAMlE,YAAckE,KAMlD,OALAnG,EAAEi3M,YAAS,EACXj3M,EAAE5D,UAAO,EACT4D,EAAEg/Q,sBAAmB,EACrBh/Q,EAAE+7B,aAAU,EACZ/7B,EAAEqyP,YAAS,EACJryP,CACT,CAuNA,OAtNAkB,EAAElB,EAAG0C,GACL1C,EAAEnD,UAAUsvD,QAAU,SAAUzpD,GAC9B,IAAI1C,EAAImG,KACNzI,EAAIsC,EAAEqyP,OACN5lL,EAAIzsE,EAAEi/Q,cACRv8Q,GAAKhF,EAAE+gB,SAAQ,SAAU/b,GACvB,IAAIC,EAAID,EAAEs7P,QACR/9P,EAAIyC,EAAE2gQ,UACR1gQ,GAAK1C,IAAM0C,EAAEmiC,KAAK,CAChBvkC,EAAGwtC,EAAErrC,EAAEw8Q,OAAQl/Q,EAAEi3M,QAAUj3M,EAAEi3M,OAAO,GAAK,GACzC3wK,MAAOmmC,EACP5wC,IAAK4wC,IACH9pE,EAAEwpD,QAAQ,CACZ5rD,EAAGN,EAAEM,EACL+lC,MAAOrmC,EAAEqmC,MACTzK,IAAK57B,EAAE47B,KACN77B,EAAE+7B,QAAQquB,WACf,GACF,EACApqD,EAAEnD,UAAUsiR,UAAY,WACtB,IAAIz8Q,EAAIyD,KAAK84Q,cACXj/Q,EAAImG,KAAKi5Q,YACT1hR,EAAIyI,KAAK41B,QACX,GAAI,IAAM51B,KAAK4xB,OAAS5xB,KAAK8wM,OAAQ,CACnC,IAAIxqI,EAAItmE,KAAK8wM,OAAO,GAChBt0M,EAAIwD,KAAK8wM,OAAO,GACpB9wM,KAAKowQ,QAAUpwQ,KAAKowQ,MAAQpwQ,KAAKsqO,MAAM3hI,SAAS4zI,IAAIj2K,EAAG9pE,EAAGwD,KAAK8wM,OAAO,GAAK,EAAG,EAAGv0M,EAAG1C,GAAGouD,SAAS,2BAA2B31C,IAAItS,KAAKqgL,QACpIrgL,KAAKowQ,MAAMzxO,KAAK,CACd7kC,EAAG2wO,EAAE8R,IAAIj2K,EAAG9pE,EAAGwD,KAAK8wM,OAAO,GAAK,EAAG,EAAG,CACpC3wK,MAAO5jC,EACPm5B,IAAK77B,EACLwiP,OAAQr8O,KAAK8wM,OAAO,GAAK,MAG7B9wM,KAAKsqO,MAAM+C,YAAcrtO,KAAKowQ,MAAMzxO,KAAK,CACvC,eAAgBpnC,EAAE2nK,YAClBi+C,KAAM5lN,EAAEo0Q,WAAa,OACrB71B,OAAQv+O,EAAEqjK,OAAS,WAEvB,MAAO56J,KAAKowQ,QAAUpwQ,KAAKowQ,MAAQpwQ,KAAKowQ,MAAMnzL,UAChD,EACApjF,EAAEnD,UAAUk5Q,WAAa,WACvB,IAAIrzQ,EAAIyD,KAAKsqO,MAAM3hI,SACnB3oG,KAAKksP,OAAO5zO,SAAQ,SAAUze,GAC5BA,EAAEg+P,SAAWh+P,EAAEg/P,oBAAsBh/P,EAAEg+P,QAAUh+P,EAAEg+P,QAAQ56K,WAC3DpjF,EAAEg+P,UAAYh+P,EAAEg+P,QAAUt7P,EAAE1C,EAAEi/P,WAAWj/P,EAAEqjQ,WAAW5qP,IAAIzY,EAAEsxO,OAAO9qD,OAAQxmL,EAAEq/Q,kBAAmB,EAClG,GACF,EACAr/Q,EAAEnD,UAAU01P,eAAiB,WAC3B7vP,EAAE7F,UAAU01P,eAAex1P,KAAKoJ,MAChCA,KAAKomQ,cACP,EACAvsQ,EAAEnD,UAAUyiR,KAAO,SAAU58Q,EAAG1C,EAAGysE,GACjC,IAAIn/D,EAAInH,KAAK8wM,OACXt0M,EAAIwD,KAAKo5Q,MAAQp5Q,KAAKo5Q,MAAM9yM,EAAEt4C,QAAU,EAAI7mB,EAAE,GAAK,EAErD,OADA5K,EAAI2H,KAAKm1Q,KAAK9hR,GAAGgF,EAAI4K,EAAE,KAAO3K,EAAI8pE,EAAEqwM,gBAAiB,EAAG,IACjDxvQ,EAAE,IAAMtN,GAAK,EAAI,GAAKqK,KAAKg/C,IAAI3mD,IAAMC,EAAI8pE,EAAEqwM,gBAAkB,EAAIrwM,EAAEqwM,eAAiB98Q,GAAK,EAAI,GAAKmG,KAAK41B,QAAQ+hO,WAAWv1M,QAAU,EAC7I,EACAvoD,EAAEnD,UAAU42C,QAAU,WACpB,QAASttC,KAAKgsQ,eAAex1Q,MAC/B,EACAqD,EAAEnD,UAAUo6Q,aAAe,WACzB,IAIEt0Q,EACA+pE,EACAzsE,EACA8C,EAPEL,EAAIyD,KACNnG,EAAI0C,EAAE+tO,MACN/yO,EAAIsC,EAAE8uG,SACNxhG,EAAI5K,EAAEq5B,QAAQ4rC,OAKhBxhE,KAAKg5Q,aACJ7xQ,GAAK5K,EAAE87Q,aAAex+Q,EAAEwzO,aAAe9wO,EAAE87Q,YAAc9gR,EAAEgvE,EAAE,UAAU5nC,KAAK,CACzE4iB,QAAS,IACRjvC,IAAI/V,EAAE8jL,QACT9jL,EAAE2vP,OAAO5zO,SAAQ,SAAUhhB,GACzB,IAAIsC,EAAI,CAAC,EAET,GADA2sE,EAAIjvE,EAAEugQ,SACDvgQ,EAAE4/P,QAAU3wL,EAAG,CAClB,IAAIxrE,OAAI,EACR6B,EAAItF,EAAE4lQ,UACN1gQ,EAAIlF,EAAE2gR,eACNp+Q,EAAEwzO,aAAetyO,EAAIzD,EAAE+gR,YAAalxQ,IAAMpM,IAAMA,EAAIzD,EAAE+gR,YAAc9gR,EAAEgvE,EAAE,UAAUj0D,IAAI/V,EAAE87Q,cAAet9Q,GAAKA,EAAE4jC,KAAKniC,GAAI1C,EAAIyC,EAAEs+P,aAAavjQ,EAAGA,EAAEqqC,UAAY,WAC3JrqC,EAAE4hR,kBAAoB3yM,EAAE8xK,mBAAmB97O,EAAEu0M,QAAQnyK,KAAK/hC,GAAG+hC,KAAKniC,GAAI3C,EAAEwzO,YAAc9mK,EAAE5nC,KAAK7kC,GAAG6kC,KAAK,CACnG,kBAAmB,UAClB6iC,OAAOr6D,EAAGpM,GAAIzD,EAAE4hR,kBAAmB,IAAO3yM,EAAE8xK,mBAAmB97O,EAAEu0M,QAASj3M,EAAEwzO,YAAc/mK,GAAE,EAAI1sE,EAAGE,GAAIwsE,GAAE,EAAI1sE,EAAGgD,EAAGJ,GAAI+pE,EAAEvgB,QAAQpsD,IACpI2sE,EAAE5nC,KAAK,CACLqgB,WAAY1nD,EAAE84D,QAAU,UAAY,WAEtCmW,EAAEte,SAAS3wD,EAAEihQ,gBAAgB,EAC/B,MAAOhyL,IAAMjvE,EAAEugQ,QAAUtxL,EAAE0W,UAC7B,GACF,EACApjF,EAAEnD,UAAU4iR,YAAc,SAAU/8Q,EAAG1C,GACrC0C,EAAE8M,MAAK,SAAU9M,EAAGhF,GAClB,MAAO,qBAAuBgF,EAAEg9Q,QAAUhiR,EAAEgiR,MAAQh9Q,EAAEg9Q,OAAS1/Q,CACjE,GACF,EACAA,EAAEnD,UAAUg5N,UAAY,SAAUnzN,GAChCyD,KAAKosP,iBACL,IAAIvyP,EAAImG,KAAK41B,QACXr+B,EAAIsC,EAAE09Q,aACNjxM,EAAI/uE,GAAKsC,EAAEqlK,aAAe,GAC1B1iK,EAAII,EAAE/C,EAAE2/Q,WAAY3/Q,EAAE4/Q,UACtBlzM,EAAIvmE,KAAK84Q,cAAgBt8Q,EAAE2jC,MAC7B3jC,GAAKwD,KAAKi5Q,YAAcz8Q,EAAEk5B,KAAO6wC,EACjC,IAAIzsE,EAAIkG,KAAKksP,OACXtyP,EAAIC,EAAE89P,WAAW/6F,SACnB/iK,EAAIA,EAAEu+Q,kBACN,IACEh8G,EADErhK,EAAIjB,EAAEtD,OAERgE,EAAI,EAEN,IADA+B,IAAMyD,KAAK8wM,OAASv0M,EAAIyD,KAAKs3Q,aACxBl7G,EAAI,EAAGA,EAAIrhK,EAAGqhK,IAAK,CACtB,IAAIhzJ,EAAItP,EAAEsiK,GACN90J,EAAIi/D,EAAI/rE,EAAIgC,GACf4M,EAAEnK,WAAapF,IAAMuP,EAAEgnD,UAAY51D,GAAK4O,EAAEktL,WAAa,KACxD,IAAI5uL,EAAI6+D,EAAI/rE,EAAIgC,EACZ4tO,EAAI,CACN38N,EAAGlR,EAAE,GACLmL,EAAGnL,EAAE,GACLnC,EAAGmC,EAAE,GAAK,EACV8/O,OAAQ9/O,EAAE,GAAK,EACf4jC,MAAOj8B,KAAK+c,MAAM,IAAM3Z,GAAK,IAC7BouB,IAAKxxB,KAAK+c,MAAM,IAAMvZ,GAAK,KAE7B0B,EAAE0vP,UAAY,MACd1vP,EAAE8zP,UAAY9yB,EACdhhO,EAAEutQ,cAAgB/uO,EAAEx+B,EAAEwsB,QAAQ+hO,YAAcvuP,EAAEwsB,QAAQ+hO,WAAW/6F,SAAUhjK,GAC3EwP,EAAEutQ,cAAgBp+Q,EAAE6Q,EAAEutQ,cAAevsC,EAAEhwO,GACvC4F,KAAK64Q,iBAAmB30Q,KAAKI,IAAItE,KAAK64Q,kBAAoB,EAAGzvQ,EAAEutQ,gBAC/DjvQ,GAAKA,EAAIJ,GAAK,GACV,IAAMpD,KAAKi/C,GAAKz7C,GAAK,EAAIxD,KAAKi/C,GAAKz7C,GAAKxD,KAAKi/C,GAAK,IAAMz7C,GAAK,EAAIxD,KAAKi/C,IAC1E/5C,EAAE+uQ,kBAAoB,CACpBl/B,WAAY/0O,KAAK+c,MAAM/c,KAAKg/C,IAAIx7C,GAAKnQ,GACrC2hP,WAAYh1O,KAAK+c,MAAM/c,KAAKy+J,IAAIj7J,GAAKnQ,IAEvC6yO,EAAIlmO,KAAKg/C,IAAIx7C,GAAKnL,EAAE,GAAK,EACzB,IAAIkuO,EAAIvmO,KAAKy+J,IAAIj7J,GAAKnL,EAAE,GAAK,EAC7B6M,EAAEurP,WAAa,CAACp4P,EAAE,GAAK,GAAK6tO,EAAG7tO,EAAE,GAAK,GAAKkuO,GAC3CrhO,EAAEswQ,KAAOhyQ,GAAKxD,KAAKi/C,GAAK,GAAKz7C,EAAIxD,KAAKi/C,GAAK,EAAI,EAAI,EACnD/5C,EAAEmwQ,MAAQ7xQ,EACVJ,EAAIpD,KAAKqL,IAAI+2D,EAAGl9D,EAAEutQ,cAAgB,GAClCvtQ,EAAEwuQ,cAAgB,CAChB+B,QAAS,CACPlsQ,EAAGlR,EAAE,GAAK6tO,EAAIlmO,KAAKg/C,IAAIx7C,GAAK0B,EAAEutQ,cAC9BjvQ,EAAGnL,EAAE,GAAKkuO,EAAIvmO,KAAKy+J,IAAIj7J,GAAK0B,EAAEutQ,eAEhC,MAAS,CAAC,EACVoB,UAAW,EAAI3uQ,EAAEutQ,cAAgB,SAAWvtQ,EAAEswQ,KAAO,QAAU,OAC/D1B,kBAAmB,CACjBO,QAAS,CACP9qQ,EAAGlR,EAAE,GAAK6tO,EAAIlmO,KAAKg/C,IAAIx7C,GAAKJ,EAC5BI,EAAGnL,EAAE,GAAKkuO,EAAIvmO,KAAKy+J,IAAIj7J,GAAKJ,GAE9BkxQ,gBAAiB,CACf/qQ,EAAGlR,EAAE,GAAK6tO,EACV1iO,EAAGnL,EAAE,GAAKkuO,IAIlB,CACAtjO,EAAEnH,KAAM,iBACV,EACAnG,EAAEnD,UAAU0vQ,aAAe,WACzB,IAGE9/L,EAHE/pE,EAAIyD,KAAKksP,OACXryP,EAAI0C,EAAE/F,OACNe,EAAIyI,KAAK41B,QAAQwiP,kBAEjB57Q,EAAI,EACN,IAAK8pE,EAAI,EAAGA,EAAIzsE,EAAGysE,IAAK,CACtB,IAAIC,EAAIhqE,EAAE+pE,IACTC,EAAEtnE,WAAa1H,IAAMgvE,EAAEnW,UAAY5zD,GAAK+pE,EAAE7+D,EAC7C,CAEA,IADA1H,KAAK4xB,MAAQp1B,EACR8pE,EAAI,EAAGA,EAAIzsE,EAAGysE,KAAKC,EAAIhqE,EAAE+pE,IAAMgwH,WAAa,EAAI95L,IAAM+pE,EAAEnW,UAAY74D,GAAKgvE,EAAE7+D,EAAIlL,EAAI,IAAM,EAAG+pE,EAAE30C,MAAQp1B,CAC7G,EACA3C,EAAEk4G,eAAiBzrC,EAAEikK,EAAEx4H,eAAgB,CACrC++F,OAAQ,CAAC,KAAM,MACfpwC,MAAM,EACN24F,cAAc,EACd1B,WAAY,CACVnU,cAAc,EACdo2B,iBAAkB,EAClB9B,eAAgB,cAChBc,cAAe,MACfh8G,SAAU,GACVn7H,SAAS,EACTiiN,UAAW,WACT,OAAO1jP,KAAKy3O,MAAMyf,YAAS,EAASl3P,KAAKy3O,MAAMp+O,IACjD,EACAo/Q,eAAe,EACfhrQ,EAAG,GAELk+P,eAAW,EACXyM,mBAAmB,EACnB/d,qBAAqB,EACrBN,WAAY,QACZZ,OAAQ,KACRx9L,KAAM,KACN0nM,cAAc,EACdkU,aAAc,GACdha,gBAAgB,EAChBv3D,QAAS,CACP0uD,eAAe,GAEjBh3F,YAAa,UACbwB,YAAa,EACbgkF,eAAW,EACXuX,OAAQ,CACN5mM,MAAO,CACLiiN,WAAY,OAIXj8Q,CACT,CAjOI,CAiOF0wO,GACF1wO,EAAEuiK,EAAE1lK,UAAW,CACb21Q,UAAW,GACX7O,aAAa,EACboT,eAAW,EACX9N,iBAAkB3+G,EAAEknH,cACpB1V,YAAavsP,EAAE1S,UAAUi/P,YACzB2hB,UAAW/6Q,EAAE+6Q,UACbnL,UAAWpjC,EACXs2B,aAAa,EACbxT,iBAAiB,EACjBgP,aAAczxP,EAAE1S,UAAUmkQ,aAC1ByJ,WAAY58P,EACZqkP,gBAAgB,EAChBiR,YAAaj0B,EACbmtC,cAAe,CAAC,QAAS,qBAE3B1rC,EAAEi6B,mBAAmB,MAAOroG,GAErBA,CACT,IACA50J,EAAEjL,EAAG,6BAA8B,CAACA,EAAE,4BAA6BA,EAAE,mBAAoBA,EAAE,sCAAuCA,EAAE,iCAAkCA,EAAE,uBAAuB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,GACnN,IASE4+D,EATE1+B,EAAIx+B,EAAEgtB,KACRo0M,EAAIzB,EAAE4K,WACNlJ,EAAItmF,EAAEgnF,OACN/uE,EAAI10J,EAAE4jO,SACNvwO,EAAI2M,EAAEi0J,MACN/+J,EAAI8K,EAAEgkO,QACNn0O,EAAImQ,EAAEstB,MACNn7B,EAAI6N,EAAE+kO,KACNtlO,EAAIO,EAAEilO,eA2KR,OAzKA,SAAWrmK,GACT,SAAS/tE,IACP,IAeEwwO,EACA5kF,EACAomF,EACAF,EACA7iO,EACA6V,EACA26L,EACAiI,EACA/yF,EACA9vG,EACA86N,EACAie,EA1BE55P,EAAIyD,KACNsmE,EAAI/pE,EAAEtG,KACNuG,EAAID,EAAE+tO,MACN/jK,EAAIhqE,EAAEq5B,QAAQ+hO,YAAc,CAAC,EAC7B79P,EAAIysE,EAAEqzM,iBACNzyQ,EAAI3K,EAAEyyP,UACNl0P,EAAIyB,EAAE0yP,WACN32P,EAAIiE,EAAE4yP,SACNxnN,EAAI1jC,KAAK+c,MAAMzkB,EAAEspP,WAAa,GAC9BtrP,EAAI+B,EAAEu0M,OACN1nM,EAAI5O,EAAE,GAAK,EACX8M,EAAI9M,EAAE,GACNswO,EAAI,CAAC,GAAI,IACTpjO,EAAI,CAAC,EAAG,EAAG,EAAG,GACd0iO,EAAI7tO,EAAEs9Q,qBAaRt9Q,EAAE6zD,UAAYmW,EAAE9kC,SAAWllC,EAAE28P,mBAAqB5yL,EAAEhuD,SAAQ,SAAU/b,GACpEA,EAAEu7P,WAAav7P,EAAE6zD,SAAW7zD,EAAEu7P,UAAUgiB,YAAcv9Q,EAAEu7P,UAAUn5N,KAAK,CACrEod,MAAO,SACN5M,IAAI,CACL4M,MAAO,OACP20L,aAAc,SACZn0O,EAAEu7P,UAAUgiB,WAAY,EAC9B,IAAIrvC,EAAE/zO,UAAUm6Q,eAAeh1Q,MAAMU,GAAI+pE,EAAEhuD,SAAQ,SAAU/b,GAC3DA,EAAEu7P,YAAcv7P,EAAE6zD,SAAW06K,EAAEvuO,EAAEm9Q,MAAM5iR,KAAKyF,GAAIA,EAAEu7P,UAAUr+E,KAAO,MAAO78K,EAAE2pE,EAAEt3B,MAAM8M,SAAWn/C,EAAEL,EAAEq5B,QAAQ+hO,YAAcp7P,EAAEq5B,QAAQ+hO,WAAW1oN,OAAS1yC,EAAEq5B,QAAQ+hO,WAAW1oN,MAAM8M,QAAUx/C,EAAEu7P,UAAU9f,UAAUj8L,MAAQnU,IAAMrrC,EAAEu7P,UAAU3oN,IAAI,CAC9O4M,MAAO73C,KAAK+c,MAAM,GAAK2mB,GAAK,OAC1BrrC,EAAEu7P,UAAUgiB,WAAY,KAAQv9Q,EAAEu7P,UAAYv7P,EAAEu7P,UAAU76K,UAAW1gF,EAAEo7P,YAAc,IAAMp7P,EAAEo7P,WAAWnhQ,eAAiB+F,EAAEo7P,YACjI,IAAI7sB,EAAExyN,SAAQ,SAAU/gB,EAAG+uE,GACzB,IAEElsE,EAFE9C,EAAIC,EAAEf,OACRoD,EAAI,GAEN,GAAItC,EAAG,CAEL,GADAiF,EAAE+8Q,YAAY/hR,EAAG+uE,EAAI,IACjB,EAAI/pE,EAAEs8Q,iBAAkB,CAC1B,IAAIz8G,EAAIl4J,KAAKI,IAAI,EAAGgD,EAAI8B,EAAI7M,EAAEs8Q,kBAC1BjxO,EAAI1jC,KAAKqL,IAAIjI,EAAI8B,EAAI7M,EAAEs8Q,iBAAkBr8Q,EAAE0yP,YAC/C33P,EAAE+gB,SAAQ,SAAU/b,GAClB,EAAIA,EAAEo6Q,eAAiBp6Q,EAAEu7P,YAAcv7P,EAAEmhC,IAAMx5B,KAAKI,IAAI,EAAGgD,EAAI8B,EAAI7M,EAAEo6Q,eAAgBp6Q,EAAEu8J,OAAS50J,KAAKqL,IAAIjI,EAAI8B,EAAI7M,EAAEo6Q,cAAen6Q,EAAE0yP,YAAa90P,EAAImC,EAAEu7P,UAAU9f,UAAU95L,QAAU,GAAI3hD,EAAEw9Q,cAAgB,CACzM5gR,OAAQoD,EAAEq7Q,cAAc+B,QAAQjyQ,EAAInL,EAAEmhC,IAAMtjC,EAAI,EAChDuhE,KAAMvhE,EACNy5O,KAAMt3O,EAAEmL,GACP9N,EAAE9C,KAAKyF,EAAEw9Q,eACd,IAEAvvC,EAAE5wO,EADFwiK,EAAIx0H,EAAIxtC,EAAIgiK,EACJA,EAAI,EACd,CACA,IAAK87E,EAAI,EAAGA,EAAI5gP,EAAG4gP,IAAK,CAQtB,GAPAnP,EAAIxxO,EAAE2gP,GACN76N,EAAI0rN,EAAE6uC,cACNvtC,EAAItB,EAAE+uB,UACN16O,GAAI,IAAO2rN,EAAE34K,QAAU,SAAW,UAClC88D,EAAIkvC,EAAI/+I,EAAEs8P,QAAQjyQ,EAClB9N,GAAKgD,EAAEmsO,EAAEgxC,iBAAmB,qBAAuBhxC,EAAEgxC,cAAczjQ,IAAM8G,EAAI,UAAY46L,EAAI+wB,EAAEgxC,cAAcp+M,KAAMuxD,EAAIk9G,EAAE4vC,oBAAoBjxC,YACtIA,EAAEkxC,cACL1zM,EAAE2zM,QAASj6D,EAAImqB,EAAE8vC,QAAQnxC,EAAG3/N,EAAG5O,QAAQ,OAAQ+rE,EAAE0uK,SACnD,IAAK,aACHh1B,EAAImqB,EAAE+vC,kBAAkB5iR,EAAG+uE,EAAGn/D,EAAG5O,GACjC,MACF,IAAK,YACH0nN,EAAImqB,EAAEgwC,iBAAiB/vC,EAAG/jK,EAAGn/D,EAAG5O,GAChC,MACF,QACE0nN,EAAImqB,EAAEiwC,oBAAoB99Q,EAAGwsO,EAAG77G,EAAGkvC,GAEvCiuE,EAAEiwC,MAAQ,CACRt7N,WAAY5hC,EACZ6vH,MAAO5vH,EAAE06P,WAEX5hB,EAAIptB,EAAEnzM,QAAQ+hO,YAAc,CAAC,EAC7BttB,EAAE5wD,KAAO,CACPhsK,EAAGwyM,EAAIpmN,EAAEs8P,EAAE1oP,EAAG84D,EAAE94D,IAAM,CACpBy0C,KAAMpoD,EACNkjD,OAAQljD,GACRujB,EAAE06P,YAAc,GAClBrwQ,EAAGwlH,EAAIrzH,EAAEs8P,EAAEzuP,EAAG6+D,EAAE7+D,GAAK,IAEvB2V,EAAEqhC,MAAMjxC,EAAIwyM,EACZ5iM,EAAEqhC,MAAMh3C,EAAIwlH,EACZrzH,EAAE0sE,EAAEk9K,MAAM,KAAQj8O,EAAI6iO,EAAE2N,UAAUj8L,MAAOqgH,EAAI,KAAM6jD,EAAIz4M,EAAI1N,GAAK,IAAMwsE,GAAK81F,EAAIl4J,KAAK+c,MAAMzZ,EAAIy4M,EAAInmN,GAAI4N,EAAE,GAAKxD,KAAKI,IAAI83J,EAAG10J,EAAE,KAAOu4M,EAAIz4M,EAAIL,EAAIrN,GAAK,IAAMwsE,IAAM81F,EAAIl4J,KAAK+c,MAAMg/L,EAAIz4M,EAAIL,EAAIrN,GAAI4N,EAAE,GAAKxD,KAAKI,IAAI83J,EAAG10J,EAAE,KAAM,EAAIwlH,EAAI8qF,EAAI,EAAItwM,EAAE,GAAKxD,KAAKI,IAAIJ,KAAK+c,MAAW+2L,EAAI,EAAR9qF,GAAYxlH,EAAE,IAAMwlH,EAAI8qF,EAAI,EAAIj9M,IAAM2M,EAAE,GAAKxD,KAAKI,IAAIJ,KAAK+c,MAAMisG,EAAI8qF,EAAI,EAAIj9M,GAAI2M,EAAE,KAAM2iO,EAAEkwC,aAAen+G,EACjX,CACF,CACF,IAAI,IAAMA,EAAE10J,IAAM1H,KAAKw6Q,wBAAwB9yQ,MAAQ1H,KAAKy6Q,kBAAmBz6Q,KAAKksP,OAAO5zO,SAAQ,SAAUxe,GAGzG,IAAIwsE,EAFN6vL,EAAI5+P,EAAEgvE,EAAGzsE,EAAE87B,QAAQ+hO,aACfxzG,EAAItqJ,EAAEs8P,EAAEukB,eAAgB,MAE1BnwC,EAAIzwO,EAAE6/P,WACDtvB,EAAIvwO,EAAEg+P,YAAcztB,EAAE5wD,MAAQ3/K,EAAEs2D,SAAW,EAAIt2D,EAAE68Q,eACpDv5P,EAAIitN,EAAEiwC,MAAMt7N,YACRsnB,GAAKikK,KAAGzwO,EAAE6/P,UAAYpvB,EAAI/tO,EAAEmsG,SAASrQ,OAAOrwC,SAAS,qDAAuDnuD,EAAEo8P,YAAcp8P,EAAEskC,UAAY,IAAMtkC,EAAEskC,UAAY,KAAK9rB,IAAI/V,EAAEkjQ,iBAAkBjjQ,EAAE6wO,YAAc9C,EAAE5rM,KAAK,CACpN,eAAgBwlH,EAChB2xF,OAAQqgB,EAAEwkB,gBAAkB7gR,EAAE8gK,OAAS,aAEzC2vE,EAAEjkK,EAAI,OAAS,WAAW,CACxBxsE,EAAGA,EAAE69Q,qBAEPptC,EAAE5rM,KAAK,aAAcvhB,IAChBmtN,IAAMzwO,EAAE6/P,UAAYpvB,EAAEttJ,WAEjC,IACF,CACA,SAAS7zE,IACPpJ,KAAKksP,OAAO5zO,SAAQ,SAAU/b,GAC5B,IACEC,EADE3C,EAAI0C,EAAEu7P,UAEVj+P,GAAK0C,EAAE6zD,WAAa5zD,EAAI3C,EAAE4/K,OAAS5/K,EAAE0gR,eAAiB1gR,EAAEygR,MAAMv+N,MAAQ73C,KAAKI,IAAIzK,EAAEm+O,UAAUj8L,MAAQliD,EAAE0gR,aAAc,GAAI1gR,EAAEs1C,IAAI,CAC3H4M,MAAOliD,EAAEygR,MAAMv+N,MAAQ,KACvB20L,cAAe1wO,KAAK41B,QAAQ+hO,WAAW1oN,OAAS,CAAC,GAAGyhM,cAAgB,aAClE72O,EAAEigR,WAAY,GAAKjgR,EAAE8kC,KAAK9kC,EAAEygR,OAAQzgR,EAAEA,EAAEg4L,MAAQ,UAAY,QAAQr1L,GAAI3C,EAAEg4L,OAAQ,GAAMh4L,GAAKA,EAAE8kC,KAAK,CACtGj3B,GAAI,eAECnL,EAAEw9Q,aACX,GAAG/5Q,KACL,CACA,SAASxF,EAAE+B,GACT,IAAI1C,EAAImG,KAAK8wM,OACXt0M,EAAIwD,KAAK41B,QACTr+B,EAAIiF,EAAEs0M,OACNh3M,EAAI0C,EAAEo+Q,SAAW,GACjBt0M,EAAI,OAAS9pE,EAAEm/D,KACjB,IAAK2K,EAAG,CACN,GAAI,OAAS/uE,EAAE,GAAI,IAAIqF,EAAIsH,KAAKI,IAAIzK,EAAE,GAAKqK,KAAKI,IAAI/H,EAAE,GAAIA,EAAE,IAAKzC,QAAQ8C,EAAIsH,KAAKI,IAAIzK,EAAE,GAAK0C,EAAE,GAAKA,EAAE,GAAIzC,GAAID,EAAE,KAAO0C,EAAE,GAAKA,EAAE,IAAM,EACtI,OAAShF,EAAE,GAAKqF,EAAI7B,EAAE6B,EAAG9C,EAAGD,EAAE,GAAKqK,KAAKI,IAAI/H,EAAE,GAAIA,EAAE,MAAQK,EAAI7B,EAAE6B,EAAG9C,EAAGD,EAAE,GAAK0C,EAAE,GAAKA,EAAE,IAAK1C,EAAE,KAAO0C,EAAE,GAAKA,EAAE,IAAM,GACrHK,EAAI/C,EAAE,IAAMA,EAAE,GAAK+C,EAAG/C,EAAE,GAAKqK,KAAKqL,IAAIpI,EAAE3K,EAAEg7Q,WAAa,EAAG56Q,GAAIA,GAAIoD,KAAK0vN,UAAU71N,GAAImG,KAAK6wQ,gBAAkB7wQ,KAAK6wQ,kBAAoBvqM,GAAI,CAC3I,CACA,OAAOA,CACT,CACA,IAAIh/D,EAAI,GACNwjO,EAAI,CACFkvC,oBAAqB,SAAUz9Q,GAC7B,OAAOA,EAAEmhC,IAAMnhC,EAAEw9Q,cAAczjQ,GACjC,EACA+jQ,oBAAqB,SAAU99Q,EAAG1C,EAAG2C,EAAGjF,GACtC,OAAOgF,EAAE48Q,KAAK38Q,EAAI3C,EAAE6jC,IAAM,GAAKlhC,EAAI3C,EAAEi/J,OAAS,EAAIvhK,EAAIiF,EAAG3C,EAAE6/Q,KAAM7/Q,EACnE,EACAqgR,QAAS,SAAU39Q,EAAG1C,EAAG2C,GACvB,OAAOA,EAAE,IAAMD,EAAEm9Q,MAAQ,EAAI,IAAM7/Q,EAAI0C,EAAEo6Q,cAC3C,EACAyD,iBAAkB,SAAU79Q,EAAG1C,EAAG2C,EAAGjF,GAEnC,OADAgF,EAAIA,EAAEy7O,UAAUj8L,MACTliD,EAAI0C,EAAIhF,EAAIiF,EAAID,EAAIhF,CAC7B,EACA4iR,kBAAmB,SAAU59Q,EAAG1C,EAAG2C,EAAGjF,GACpC,IACEgvE,EADEzsE,EAAI,EAMR,OAJAyC,EAAE+b,SAAQ,SAAU/b,IAClBgqE,EAAIhqE,EAAEu7P,UAAU9f,UAAUj8L,OACtBjiD,IAAMA,EAAIysE,EAChB,IACO1sE,EAAIC,EAAIvC,EAAIiF,EAAI1C,EAAIvC,CAC7B,GAEJ+uE,EAAEu5K,QAAU,SAAUhmP,GACpB0C,EAAEsjP,QAAQpV,IACT,IAAMnjO,EAAEwF,QAAQjT,KAAOyN,EAAExQ,KAAK+C,IAAIA,EAAIA,EAAEnD,WAAamjR,qBAAuB/uC,EAAGjxO,EAAEm9Q,eAAiBpvO,EAAG/tC,EAAEg3Q,eAAiBt4Q,EAAGsB,EAAE4gR,gBAAkBrxQ,EAAGvP,EAAE2gR,wBAA0BhgR,EACjL,CACD,CAxKD,CAwKG8rE,IAAMA,EAAI,CAAC,IACPA,CACT,IACA9+D,EAAEjL,EAAG,sCAAuC,CAACA,EAAE,uBAAwBA,EAAE,uBAAuB,SAAUA,EAAG6M,GAC3G,SAASw+B,EAAErrC,EAAGK,GACZ,IAAIrF,GAAI,EACR,GAAIgF,EAAG,CACL,IAAI1C,EAAI0C,EAAE0qP,WACV1qP,EAAEs+Q,aAAehhR,IAAM0C,EAAE64O,WAAa74O,EAAE44O,QAAU54O,EAAE1C,EAAI,cAAgB,YAAY,gCAAiCtC,GAAI,EAAIgF,EAAE64O,UAAU/0L,QAAUxmD,EAAG0C,EAAEA,EAAEu+Q,MAAQ,UAAY,QAAQv+Q,EAAE64O,UAAW,MAAM,WACvMx4O,EAAEywO,YAAc9wO,EAAE4yC,IAAI,CACpB0xM,cAAehnP,EAAI,OAAS,QAEhC,IAAI6N,EAAE9K,EAAG,8BAAgCL,EAAEoiC,KAAK,CAC9C0hB,QAASxmD,KAEX0C,EAAEu+Q,OAAQ,CACZ,CACA,OAAOvjR,CACT,CACA,IAAI4sJ,EAAI/6I,EAAE6hO,SACRvjO,EAAI0B,EAAEyhO,UACNN,EAAInhO,EAAEnN,QACNuuO,EAAIphO,EAAEtM,SACN2tO,EAAIrhO,EAAEkjO,WACNlwE,EAAIhzJ,EAAEqjO,KACRtoF,EAAE5nJ,EAAG,UAAU,WACb,IAAIA,EAAIyD,KACNpD,EAAI,IACLoD,KAAKilQ,iBAAmB,IAAI3sP,SAAQ,SAAU/b,GAC7CK,EAAIA,EAAEiW,OAAOtW,IACf,KACCyD,KAAK40P,OAAS,IAAIt8O,SAAQ,SAAU/b,GACnCA,EAAE2tP,UAAY3tP,EAAEq5B,QAAQ2tN,cAAgBhnP,EAAEq5B,QAAQ2tN,YAAYC,cAAgB/Y,EAAEluO,EAAE2tP,SAASukB,QAAQ,SAAUlyQ,GAC3GkuO,EAAEluO,GAAG,SAAUA,GACbA,EAAEiqE,OAAS,WAAajqE,EAAEiqE,MAAMxnB,YAAcpiD,EAAE9F,KAAKyF,EAAEiqE,MACzD,GACF,GACF,KACCxmE,KAAKmrO,QAAU,IAAI7yN,SAAQ,SAAU/gB,GACpC,IAAIsC,EAAItC,EAAEq+B,QAAQ+hO,WAClBpgQ,EAAE64D,WAAY,IAAOv2D,EAAE4nC,SAAWlqC,EAAE2hQ,mBAAqBr/P,EAAI,SAAUA,GACrE,OAAOA,EAAEye,SAAQ,SAAUze,GACzBA,EAAEu2D,UAAYm6K,EAAE1wO,EAAE89P,YAAc99P,EAAE89P,WAAa99P,EAAEi+P,UAAY,CAACj+P,EAAEi+P,WAAa,IAAIx/O,SAAQ,SAAU/gB,GACjG,IAAI+uE,EAAI/uE,EAAEq+B,QACVr+B,EAAE+7Q,UAAYl3G,EAAE91F,EAAEgtM,UAAWz5Q,EAAEy5Q,UAAWz5Q,EAAEqjQ,WAAarjQ,EAAEqjQ,UAAUh/M,QACrEooB,EAAEk9K,cAAgBjsP,EAAEsjR,WAAatjR,EAAE8oD,QAAS9oD,EAAE0vP,WAAa,EAAGr/M,EAAErwC,EAAGgF,IAAMK,EAAE9F,KAAKS,EAClF,GACF,GACF,EAAGsC,EAAEtC,EAAE86C,OAAS,IAAKx4C,EAAEtC,EAAE20P,QAC3B,IACAlsP,KAAK+6Q,sBAAsBn+Q,EAC7B,IACAL,EAAE7F,UAAUqkR,sBAAwB,SAAUx+Q,GAC5C,IAGE4K,EACAm/D,EACAvrE,EALE6B,EAAIoD,KACNzI,EAAIgF,EAAE/F,OACNqD,EAAI+C,EAAE+rG,SAINpwG,GAAI,EACF6jK,EAAI,SAAU7/J,GAChB,IAAIhF,EAGFgvE,EAFAD,EAAI/pE,EAAEgjD,IAAM,EAAIhjD,EAAE6lD,SAAW,EAC7B5lD,EAAIjF,EAAI,EAEV,GAAIgF,KAAOA,EAAE64O,WAAa74O,EAAE44O,QAAS,CACnC,IAAIr7O,EAAIyC,EAAE64O,WAAa,CACrB3nO,EAAGlR,EAAEoiC,KAAK,KACVj3B,EAAGnL,EAAEoiC,KAAK,MAERx3B,EAAI5K,EAAE23O,YACV33O,EAAEw/C,QAAUxkD,EAAIgF,EAAEy7O,UAAWz7O,EAAEw/C,MAAQxkD,EAAEwkD,MAAOx/C,EAAE2hD,OAAS3mD,EAAE2mD,OAAQ3mD,EAAIsC,EAAEoiP,YAAY,KAAM1/O,EAAE46D,SAAShwD,GACxG,IAAIvK,EAAIL,EAAEw/C,MAAQ,EAAIuqB,EAMtB,OALCC,EAAI,CACHrkB,KAAM,IACN4uJ,OAAQ,MACR9zJ,MAAO,KACPzgD,EAAEk/L,aAAej/L,GAAK+pE,EAAI3pE,EAAI4tO,EAAEjuO,EAAEkR,IAAMvJ,KAAK+c,MAAM1kB,EAAEkR,KAAOlR,EAAE08O,aAAez8O,EAAID,EAAEkR,EAAIlR,EAAE08O,YACpF,CACLxrO,EAAG3T,EAAE2T,GAAKtG,EAAE8xO,YAAc,GAAK3yK,GAAK9pE,GAAK,GACzCkL,EAAG5N,EAAE4N,GAAKP,EAAE+xO,YAAc,GAAK5yK,EAAI/uE,EACnCwkD,MAAOx/C,EAAEw/C,MAAQ,EAAIuqB,EACrBpoB,OAAQ3hD,EAAE2hD,OAAS,EAAIooB,EAE3B,CACF,EACA,IAAKA,EAAI,EAAGA,EAAI/uE,EAAG+uE,KAASn/D,EAAI5K,EAAE+pE,MAAIn/D,EAAE0zQ,WAAa1zQ,EAAEk5C,QAASl5C,EAAE8/O,WAAa,EAAG9/O,EAAE6zQ,YAAc5+G,EAAEj1J,IAIpG,IAHA5K,EAAE8M,MAAK,SAAU9M,EAAG1C,GAClB,OAAQA,EAAEy5Q,WAAa,IAAM/2Q,EAAE+2Q,WAAa,EAC9C,IACKhtM,EAAI,EAAGA,EAAI/uE,EAAG+uE,IAAK,CACtB,IAAI9rE,GAAK4hK,EAAI7/J,EAAE+pE,KAAO81F,EAAE4+G,YACxB,IAAK7zQ,EAAIm/D,EAAI,EAAGn/D,EAAI5P,IAAK4P,EAAG,CAC1B,IAAIiC,GAAKrO,EAAIwB,EAAE4K,KAAOpM,EAAEigR,aACvBxgR,IAAM4O,GAAKgzJ,IAAMrhK,GAAK,IAAMqhK,EAAE6qF,YAAc,IAAMlsP,EAAEksP,YAAc79O,EAAEqE,GAAKjT,EAAEiT,EAAIjT,EAAEuhD,OAAS3yC,EAAEqE,EAAIrE,EAAE2yC,OAASvhD,EAAEiT,GAAKrE,EAAE1B,GAAKlN,EAAEkN,EAAIlN,EAAE0jD,QAAU90C,EAAE1B,EAAI0B,EAAE80C,QAAU1jD,EAAEkN,KAAO00J,EAAEk3G,UAAYv4Q,EAAEu4Q,UAAYl3G,EAAIrhK,GAAGksP,WAAa,EACzN,CACF,CACA1qP,EAAE+b,SAAQ,SAAU/b,GAClBqrC,EAAErrC,EAAGK,KAAOrE,GAAI,EAClB,IACAA,GAAKmP,EAAE9K,EAAG,gCACZ,CACF,IACA4K,EAAEjL,EAAG,qBAAsB,CAACA,EAAE,uBAAuB,SAAUA,GAC7D,IASEK,EATEgrC,EAAIrrC,EAAEe,OACRyrO,EAAIxsO,EAAEi/B,KACN2oH,EAAI5nJ,EAAEN,QACNyL,EAAInL,EAAEF,SACNkuO,EAAIhuO,EAAEy4B,MACNw1M,EAAIjuO,EAAE+vO,WACN7B,EAAIluO,EAAEkwO,KACNrwE,EAAI7/J,EAAEqwO,MACN7xO,EAAIwB,EAAE0wO,UAyDR,OAvDA,SAAW1wO,GACT,IAAI1C,EAAI,GACR0C,EAAEsjP,QAAU,SAAUtjP,GAEpB,OADC,IAAM1C,EAAEiT,QAAQvQ,KAAO1C,EAAE/C,KAAKyF,GAAIqrC,EAAErrC,EAAE7F,UAAWa,EAAEb,YAC7C6F,CACT,EACA,IAAIhF,EAAI,WACN,SAASgF,IAAK,CA2Cd,OA1CAA,EAAE7F,UAAUukR,eAAiB,SAAU1+Q,GAOrC,IAAIhF,EAAIyI,KACNsmE,EAAI,CAAC,EAEP,OATA,SAASzsE,EAAE0C,EAAG+pE,EAAGn/D,EAAGvK,GAClB,IAAIJ,EACJguO,EAAEjuO,GAAG,SAAUA,EAAGzC,GAChB,IAAK8C,IAAM,EAAIrF,EAAE6yQ,sBAAsBt9P,QAAQhT,IAAMwsE,EAAExsE,GAAI,IAAKyC,EAAI6/J,EAAE7/J,GAAI4K,EAAErN,GAAK,GAAI0C,EAAI,EAAGA,EAAI0H,KAAKI,IAAI/H,EAAE/F,OAAQ8vE,EAAExsE,GAAGtD,QAASgG,IAAK8pE,EAAExsE,GAAG0C,UAAO,IAAWD,EAAEC,GAAK2K,EAAErN,GAAG0C,GAAK8pE,EAAExsE,GAAG0C,IAAM2K,EAAErN,GAAG0C,GAAK,CAAC,EAAG3C,EAAE0C,EAAEC,GAAI8pE,EAAExsE,GAAG0C,GAAI2K,EAAErN,GAAG0C,GAAII,EAAI,UAAU8K,EAAEnL,IAAM4K,EAAErN,GAAKqqJ,EAAE5nJ,GAAK,GAAK,CAAC,EAAG1C,EAAE0C,EAAG+pE,EAAExsE,IAAM,CAAC,EAAGqN,EAAErN,GAAI8C,EAAI,IAAMuK,EAAErN,GAAK,qBAAuBwsE,EAAExsE,GAAK,KAAOwsE,EAAExsE,EAC/V,GACF,CAGAD,CAAE0C,EAAGyD,KAAK41B,QAAS0wC,EAAG,GACfA,CACT,EACA/pE,EAAE7F,UAAUwkR,oBAAsB,SAAU3+Q,EAAG1C,GAC7C,IAAItC,EAAIgF,EAAE4+Q,WACT5jR,EAAEyE,UAAY,WACb,OAAOgE,KAAK8lP,YAAcrb,EAAElzO,EAAE0kD,SAAUqsB,OAAOknL,YAAcxvP,KAAK2lP,aAAelb,EAAElzO,EAAE+wK,UAAWhgG,OAAOknL,YAAcxvP,KAAK8lP,YAAcrb,EAAElzO,EAAEykD,SAAU,IAAMh8C,KAAK2lP,aAAelb,EAAElzO,EAAE2yL,UAAW,EACjM,GAAGtzL,KAAKoJ,OAASnG,EAAE/C,KAAKyF,EAAE6+Q,IAC5B,EACA7+Q,EAAE7F,UAAUsvQ,cAAgB,SAAUzpQ,EAAG1C,GACvC,IAAItC,EAAIyI,KACNsmE,EAAItmE,KAAK41B,QAAQylP,WACjBl0Q,EAAInH,KAAKs7Q,kBACT1+Q,EAAI,IACL/C,GAAKysE,GAAKA,EAAEi1M,OAASj1M,EAAEi1M,MAAMjjQ,SAAQ,SAAU/b,GAC9C,qBAAuBA,EAAE6+Q,MAAQ7+Q,EAAE6+Q,IAAMrgR,KACzCxD,EAAE2jR,oBAAoB3+Q,EAAGK,EAC3B,GAAGoD,MACHnG,EAAI0wO,EAAE1uO,WAAM,EAAQe,EAAEK,KAAI,SAAUV,GAClC,OAAOwsO,GAAGziK,GAAK,CAAC,GAAGi1M,OAAS,IAAI,SAAU1hR,GACxC,OAAOA,EAAEuhR,MAAQ7+Q,CACnB,GACF,IAAGU,KAAI,SAAUV,GACf,OAAOA,GAAKA,EAAEi/Q,YAChB,KACA3hR,EAAEmwQ,qBAAsB,GACxBptQ,EAAIA,EAAER,iBAAc,MACb+K,GAAKA,EAAEs0Q,WAAat0Q,GAAKnH,KAAKk9E,OAAO/1E,EAAEu0Q,YAAan/Q,GAAG,GAAKK,IAAKuK,EAAInH,KAAKi7Q,eAAephR,IAAMmwQ,qBAAsB,EAAIhqQ,KAAKs7Q,kBAAoB,CACvJG,QAAS7+Q,EACT++Q,cAAe9hR,EACf6hR,YAAav0Q,GACZnH,KAAKk9E,OAAOrjF,EAAG0C,GAAG,IAAOyD,KAAKs7Q,uBAAoB,EACvD,EACO/+Q,CACT,CA7CQ,EA8CT,CApDD,CAoDGK,IAAMA,EAAI,CAAC,IAGPA,CACT,IACA4K,EAAEjL,EAAG,4BAA6B,CAACA,EAAE,mBAAoBA,EAAE,qBAAsBA,EAAE,0BAA2BA,EAAE,wBAAyBA,EAAE,wCAAyCA,EAAE,6BAA8BA,EAAE,2BAA4BA,EAAE,sCAAuCA,EAAE,mCAAoCA,EAAE,oCAAqCA,EAAE,qCAAsCA,EAAE,sCAAuCA,EAAE,qBAAsBA,EAAE,6BAA8BA,EAAE,gCAAiCA,EAAE,8CAA+CA,EAAE,qBAAsBA,EAAE,mBAAoBA,EAAE,wBAAyBA,EAAE,mBAAoBA,EAAE,qBAAsBA,EAAE,yBAA0BA,EAAE,uBAAwBA,EAAE,yBAA0BA,EAAE,iCAAkCA,EAAE,iCAAkCA,EAAE,oCAAqCA,EAAE,2BAA4BA,EAAE,8BAA+BA,EAAE,4BAA6BA,EAAE,sBAAuBA,EAAE,uBAAwBA,EAAE,kBAAkB,SAAUA,EAAG6M,EAAG2/N,EAAG5kF,EAAGz8I,EAAG6iO,EAAGC,EAAGC,EAAGruE,EAAGrhK,EAAG6B,EAAGrF,EAAGsC,EAAGsN,EAAGm/D,EAAGh/D,EAAG/O,EAAG6xO,EAAG5vO,EAAG6vO,EAAGS,EAAG1wO,EAAG9C,EAAGkF,EAAG+pE,EAAGzsE,EAAGF,EAAGuiN,EAAG1uM,EAAGuyM,EAAGx4M,EAAG44M,EAAGtuD,GAsF1oC,OArFAv1J,EAAEypD,QAAUt+C,EAAEs+C,QACdzpD,EAAEk2O,WAAa/qO,EAAE+qO,WACjBl2O,EAAEm2O,qBAAuBhrO,EAAEgrO,qBAC3Bn2O,EAAEq2O,aAAelrO,EAAEkrO,aACnBr2O,EAAE+xC,KAAO5mC,EAAE4mC,KACX/xC,EAAE8pD,OAAS89F,EAAE99F,OACb9pD,EAAEk5N,IAAM8U,EACRhuO,EAAEq/Q,KAAO/hR,EACT0C,EAAEs/Q,MAAQvkR,EACViF,EAAE+tO,MAAQhzO,EAAEgzO,MACZ/tO,EAAEu/Q,GAAK33H,EACP5nJ,EAAEw/Q,OAAS3hR,EACXmC,EAAE80P,eAAiB/pP,EACnB/K,EAAE2uO,MAAQ1wO,EACV+B,EAAEy/Q,QAAUlxC,EAAEh8B,aAAeg8B,EAAIT,EACjC9tO,EAAE0/Q,OAASz/Q,EACXD,EAAE2/Q,WAAa9/G,EACf7/J,EAAE4/Q,YAAcphR,EAChBwB,EAAE6/Q,KAAO7jR,EACTgE,EAAE8/Q,KAAOvqH,EACTv1J,EAAEwsF,QAAUqhJ,EACZ7tO,EAAEs+J,MAAQulD,EACV7jN,EAAEq+J,MAAQwlD,EAAEvyK,MACZt2C,EAAEsoP,QAAQ9kP,GACV6B,EAAEijP,QAAQzjF,GACV7/J,EAAEw1G,eAAiBg3H,EAAEh3H,eACrBx1G,EAAEs1O,WAAa9I,EAAE8I,WACjBt1O,EAAEupB,KAAOijN,EAAE6I,YACXr1O,EAAEu1O,WAAa/I,EAAE+I,WACjBv1O,EAAE0d,WAAauwN,EAAEvwN,WACjB1d,EAAEkB,OAAS+sO,EAAE/sO,OACblB,EAAEykM,aAAewpC,EAAExpC,aACnBzkM,EAAE0uO,SAAW7hO,EAAE6hO,SACf1uO,EAAE+uO,SAAWliO,EAAEkiO,SACf/uO,EAAEgvO,SAAWniO,EAAEmiO,SACfhvO,EAAEoiC,KAAOv1B,EAAEu1B,KACXpiC,EAAEzD,aAAesQ,EAAEtQ,aACnByD,EAAEkvO,aAAeriO,EAAEqiO,aACnBlvO,EAAEtE,cAAgBmR,EAAEnR,cACpBsE,EAAE4yC,IAAM/lC,EAAE+lC,IACV5yC,EAAEmvO,QAAUtiO,EAAEsiO,QACdnvO,EAAEovO,wBAA0BviO,EAAEuiO,wBAC9BpvO,EAAEqvO,eAAiBxiO,EAAEwiO,eACrBrvO,EAAEo3O,WAAalJ,EAAEkJ,WACjBp3O,EAAEsvO,MAAQziO,EAAEyiO,MACZtvO,EAAE9D,MAAQ2Q,EAAE3Q,MACZ8D,EAAEe,OAAS8L,EAAE9L,OACbf,EAAEuvO,YAAc1iO,EAAE0iO,YAClBvvO,EAAEi/B,KAAOpyB,EAAEoyB,KACXj/B,EAAEsuO,UAAYzhO,EAAEyhO,UAChBtuO,EAAEwvO,aAAe3iO,EAAE2iO,aACnBxvO,EAAE2vO,SAAW9iO,EAAE8iO,SACf3vO,EAAEs6B,QAAUztB,EAAEytB,QACdt6B,EAAEN,QAAUmN,EAAEnN,QACdM,EAAE4vO,QAAU/iO,EAAE+iO,QACd5vO,EAAE6vO,aAAehjO,EAAEgjO,aACnB7vO,EAAE6F,WAAagH,EAAEhH,WACjB7F,EAAEO,SAAWsM,EAAEtM,SACfP,EAAEF,SAAW+M,EAAE/M,SACfE,EAAEsoB,SAAWzb,EAAEyb,SACftoB,EAAE0F,KAAOmH,EAAEnH,KACX1F,EAAEy4B,MAAQ5rB,EAAE4rB,MACZz4B,EAAE8vO,sBAAwBjjO,EAAEijO,sBAC5B9vO,EAAE+vO,WAAaljO,EAAEkjO,WACjB/vO,EAAEilB,OAASpY,EAAEoY,OACbjlB,EAAEiwO,IAAMpjO,EAAEojO,IACVjwO,EAAEkwO,KAAOrjO,EAAEqjO,KACXlwO,EAAEmwO,KAAOtjO,EAAEsjO,KACXnwO,EAAEowO,eAAiBvjO,EAAEujO,eACrBpwO,EAAEo4C,YAAcvrC,EAAEurC,YAClBp4C,EAAEmoQ,WAAan+L,EAAEm+L,WACjBnoQ,EAAEqwO,MAAQxjO,EAAEwjO,MACZrwO,EAAEswO,WAAazjO,EAAEyjO,WACjBtwO,EAAEwwO,YAAc3jO,EAAE2jO,YAClBxwO,EAAEywO,UAAY5jO,EAAE4jO,UAChBzwO,EAAE0wO,UAAY7jO,EAAE6jO,UAChB1wO,EAAE2wO,aAAe9jO,EAAE8jO,aACnB3wO,EAAE21C,KAAO9oC,EAAE8oC,KACXt4C,EAAEimP,QAAQ/lP,GACVkmN,EAAE6/B,QAAQrjP,GACV2K,EAAE04O,QAAQhmP,GACVysE,EAAEu5K,QAAQhmP,GACV4T,EAAEoyO,QAAQ1jC,GACV70M,EAAEu4O,QAAQhmP,GACV2N,EAAEq4O,QAAQvoP,GACHiF,CACT,IACAA,EAAE,6BAA6B+/Q,SAAW//Q,EACnCA,EAAE,4BACX,EArzXgClF,EAAOD,SAAWoQ,EAAW,QAAIA,EAAGnQ,EAAOD,QAAU0xO,EAAE9wO,SAAWwP,EAAEshO,GAAKthO,QAEtG,KAFwJ,aACvJ,OAAOA,EAAEshO,EACV,+B,kBCZH,IAMwSvxO,EAAnOF,EAAOD,QAAyO,SAASG,EAAEiD,EAAEO,EAAEzE,GAAG,SAAS0D,EAAEuC,EAAE1C,GAAG,IAAIkB,EAAEwB,GAAG,CAAC,IAAI/B,EAAE+B,GAAG,CAAmE,GAAGnC,EAAE,OAAOA,EAAEmC,GAAE,GAAI,IAAId,EAAE,IAAI/C,MAAM,uBAAuB6D,EAAE,KAAK,MAAMd,EAAEk4B,KAAK,mBAAmBl4B,CAAC,CAAC,IAAI2N,EAAErO,EAAEwB,GAAG,CAACnF,QAAQ,CAAC,GAAGoD,EAAE+B,GAAG,GAAG3F,KAAKwS,EAAEhS,SAAQ,SAASG,GAAG,IAAIwD,EAAEP,EAAE+B,GAAG,GAAGhF,GAAG,OAAOyC,EAAEe,GAAIxD,EAAE,GAAE6R,EAAEA,EAAEhS,QAAQG,EAAEiD,EAAEO,EAAEzE,EAAE,CAAC,OAAOyE,EAAEwB,GAAGnF,OAAO,CAAC,IAAI,IAAIgD,GAAE,EAAoCmC,EAAE,EAAEA,EAAEjG,EAAEE,OAAO+F,IAAIvC,EAAE1D,EAAEiG,IAAI,OAAOvC,CAAC,CAAnb,CAAqb,CAAC,EAAE,CAAC,SAASzC,EAAEiD,EAAEO,GAAG,SAASzE,EAAEiB,EAAEiD,GAAG,KAAKjD,GAAGA,IAAIS,UAAU,CAAC,GAAGT,EAAEyqB,QAAQxnB,GAAG,OAAOjD,EAAEA,EAAEA,EAAEy8B,UAAU,CAAC,CAAC,GAAGikC,UAAUA,QAAQvhE,UAAUsrB,QAAQ,CAAC,IAAIhoB,EAAEi+D,QAAQvhE,UAAUsD,EAAEgoB,QAAQhoB,EAAE0kC,iBAAiB1kC,EAAEg6F,oBAAoBh6F,EAAEwjC,mBAAmBxjC,EAAEi6F,kBAAkBj6F,EAAEujC,qBAAqB,CAAC/iC,EAAEpD,QAAQd,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAASiB,EAAEiD,EAAEO,GAAG,SAASzE,EAAEiB,EAAEiD,EAAEO,EAAEzE,EAAE8D,GAAG,IAAImC,EAAEvC,EAAE6B,MAAMmE,KAAKlE,WAAW,OAAOvE,EAAEomC,iBAAiB5iC,EAAEwB,EAAEnC,GAAG,CAAC6iF,QAAQ,WAAW1lF,EAAEw0C,oBAAoBhxC,EAAEwB,EAAEnC,EAAE,EAAE,CAAC,SAASJ,EAAEzC,EAAEiD,EAAEO,EAAEzE,GAAG,OAAO,SAASyE,GAAGA,EAAEg6C,eAAe36C,EAAEW,EAAE5B,OAAOqB,GAAGO,EAAEg6C,gBAAgBz+C,EAAEM,KAAKW,EAAEwD,EAAE,CAAC,CAAC,IAAIX,EAAE7C,EAAE,aAAaiD,EAAEpD,QAAQd,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,SAASiB,EAAEiD,EAAEO,GAAGA,EAAE64B,KAAK,SAASr8B,GAAG,YAAO,IAASA,GAAGA,aAAa8hG,aAAa,IAAI9hG,EAAE87B,QAAQ,EAAEt4B,EAAEwhR,SAAS,SAAShlR,GAAG,IAAIiD,EAAE/D,OAAOC,UAAU0F,SAASxF,KAAKW,GAAG,YAAO,IAASA,IAAI,sBAAsBiD,GAAG,4BAA4BA,IAAI,WAAWjD,IAAI,IAAIA,EAAEf,QAAQuE,EAAE64B,KAAKr8B,EAAE,IAAI,EAAEwD,EAAE+M,OAAO,SAASvQ,GAAG,MAAM,iBAAiBA,GAAGA,aAAautB,MAAM,EAAE/pB,EAAEoC,GAAG,SAAS5F,GAA2C,MAAM,sBAAxCd,OAAOC,UAAU0F,SAASxF,KAAKW,EAAgC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAASA,EAAEiD,EAAEO,GAAG,SAASzE,EAAEiB,EAAEiD,EAAEO,GAAG,IAAIxD,IAAIiD,IAAIO,EAAE,MAAM,IAAIrC,MAAM,8BAA8B,IAAImB,EAAEiO,OAAOtN,GAAG,MAAM,IAAIkwC,UAAU,oCAAoC,IAAI7wC,EAAEsD,GAAGpC,GAAG,MAAM,IAAI2vC,UAAU,qCAAqC,GAAG7wC,EAAE+5B,KAAKr8B,GAAG,OAAOyC,EAAEzC,EAAEiD,EAAEO,GAAG,GAAGlB,EAAE0iR,SAAShlR,GAAG,OAAO6C,EAAE7C,EAAEiD,EAAEO,GAAG,GAAGlB,EAAEiO,OAAOvQ,GAAG,OAAOgF,EAAEhF,EAAEiD,EAAEO,GAAG,MAAM,IAAI2vC,UAAU,4EAA4E,CAAC,SAAS1wC,EAAEzC,EAAEiD,EAAEO,GAAG,OAAOxD,EAAEomC,iBAAiBnjC,EAAEO,GAAG,CAACkiF,QAAQ,WAAW1lF,EAAEw0C,oBAAoBvxC,EAAEO,EAAE,EAAE,CAAC,SAASX,EAAE7C,EAAEiD,EAAEO,GAAG,OAAOoB,MAAMzF,UAAU4hB,QAAQ1hB,KAAKW,GAAE,SAASA,GAAGA,EAAEomC,iBAAiBnjC,EAAEO,EAAE,IAAG,CAACkiF,QAAQ,WAAW9gF,MAAMzF,UAAU4hB,QAAQ1hB,KAAKW,GAAE,SAASA,GAAGA,EAAEw0C,oBAAoBvxC,EAAEO,EAAE,GAAE,EAAE,CAAC,SAASwB,EAAEhF,EAAEiD,EAAEO,GAAG,OAAOzD,EAAEU,SAASg4C,KAAKz4C,EAAEiD,EAAEO,EAAE,CAAC,IAAIlB,EAAEtC,EAAE,QAAQD,EAAEC,EAAE,YAAYiD,EAAEpD,QAAQd,CAAC,EAAE,CAAC,OAAO,EAAEq9D,SAAS,IAAI,EAAE,CAAC,SAASp8D,EAAEiD,EAAEO,GAAG,SAASzE,EAAEiB,GAAG,IAAIiD,EAAE,GAAG,WAAWjD,EAAEk9B,SAASl9B,EAAE4pC,QAAQ3mC,EAAEjD,EAAEgD,WAAW,GAAG,UAAUhD,EAAEk9B,UAAU,aAAal9B,EAAEk9B,SAASl9B,EAAE4pC,QAAQ5pC,EAAEilR,kBAAkB,EAAEjlR,EAAEgD,MAAM/D,QAAQgE,EAAEjD,EAAEgD,UAAU,CAAChD,EAAEmjE,aAAa,oBAAoBnjE,EAAE4pC,QAAQ,IAAIpmC,EAAEO,OAAOq1H,eAAer6H,EAAE0B,SAASs1G,cAAch3G,EAAEi3G,mBAAmBh2G,GAAGwD,EAAEk/H,kBAAkBl/H,EAAEm/H,SAAS5jI,GAAGkE,EAAEO,EAAEqB,UAAU,CAAC,OAAO5B,CAAC,CAACA,EAAEpD,QAAQd,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAASiB,EAAEiD,EAAEO,GAAG,SAASzE,IAAI,CAACA,EAAEI,UAAU,CAACi8C,GAAG,SAASp7C,EAAEiD,EAAEO,GAAG,IAAIzE,EAAE0J,KAAKzI,IAAIyI,KAAKzI,EAAE,CAAC,GAAG,OAAOjB,EAAEiB,KAAKjB,EAAEiB,GAAG,KAAKT,KAAK,CAACqG,GAAG3C,EAAEiiR,IAAI1hR,IAAIiF,IAAI,EAAEgpC,KAAK,SAASzxC,EAAEiD,EAAEO,GAAG,SAASzE,IAAI0D,EAAE+4C,IAAIx7C,EAAEjB,GAAGkE,EAAEqB,MAAMd,EAAEe,UAAU,CAAC,IAAI9B,EAAEgG,KAAK,OAAO1J,EAAE+xC,EAAE7tC,EAAEwF,KAAK2yC,GAAGp7C,EAAEjB,EAAEyE,EAAE,EAAE2hR,KAAK,SAASnlR,GAA4F,IAAzF,IAAIiD,EAAE,GAAGgB,MAAM5E,KAAKkF,UAAU,GAAGf,IAAIiF,KAAKzI,IAAIyI,KAAKzI,EAAE,CAAC,IAAIA,IAAI,IAAIiE,QAAQlF,EAAE,EAAE0D,EAAEe,EAAEvE,OAAaF,EAAE0D,EAAE1D,IAAIyE,EAAEzE,GAAG6G,GAAGtB,MAAMd,EAAEzE,GAAGmmR,IAAIjiR,GAAG,OAAOwF,IAAI,EAAE+yC,IAAI,SAASx7C,EAAEiD,GAAG,IAAIO,EAAEiF,KAAKzI,IAAIyI,KAAKzI,EAAE,CAAC,GAAGjB,EAAEyE,EAAExD,GAAGyC,EAAE,GAAG,GAAG1D,GAAGkE,EAAE,IAAI,IAAIJ,EAAE,EAAEmC,EAAEjG,EAAEE,OAAO4D,EAAEmC,EAAEnC,IAAI9D,EAAE8D,GAAG+C,KAAK3C,GAAGlE,EAAE8D,GAAG+C,GAAGkrC,IAAI7tC,GAAGR,EAAElD,KAAKR,EAAE8D,IAAI,OAAOJ,EAAExD,OAAOuE,EAAExD,GAAGyC,SAASe,EAAExD,GAAGyI,IAAI,GAAGxF,EAAEpD,QAAQd,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAASkE,EAAEO,EAAEzE,IAAI,SAAS0D,EAAEI,GAAG,GAAG,mBAAmB7C,GAAGA,EAAEolR,IAAIplR,EAAE,CAAC,SAAS,UAAU6C,QAAQ,GAAG,oBAAoB9D,EAAE8D,EAAEW,EAAEP,EAAE,eAAe,CAAC,IAAI+B,EAAE,CAACnF,QAAQ,CAAC,GAAGgD,EAAEmC,EAAEvC,EAAEyiC,QAAQziC,EAAE4iR,gBAAgBrgR,EAAEnF,OAAO,CAAC,CAAvL,CAAyL4I,MAAK,SAASzI,EAAEiD,GAAG,aAAa,SAASO,EAAExD,GAAG,OAAOA,GAAGA,EAAEmD,WAAWnD,EAAE,CAAC2wE,QAAQ3wE,EAAE,CAAC,SAASjB,EAAEiB,EAAEiD,GAAG,KAAKjD,aAAaiD,GAAG,MAAM,IAAIkwC,UAAU,oCAAoC,CAAC,IAAI1wC,EAAEe,EAAEP,GAAGJ,EAAE,mBAAmBC,QAAQ,iBAAiBA,OAAOi9B,SAAS,SAAS//B,GAAG,cAAcA,CAAC,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAmB8C,QAAQ9C,EAAEq9B,cAAcv6B,QAAQ9C,IAAI8C,OAAO3D,UAAU,gBAAgBa,CAAC,EAAEgF,EAAE,WAAW,SAAShF,EAAEA,EAAEiD,GAAG,IAAI,IAAIO,EAAE,EAAEA,EAAEP,EAAEhE,OAAOuE,IAAI,CAAC,IAAIzE,EAAEkE,EAAEO,GAAGzE,EAAE4D,WAAW5D,EAAE4D,aAAY,EAAG5D,EAAE+2C,cAAa,EAAG,UAAU/2C,IAAIA,EAAEq/C,UAAS,GAAIl/C,OAAOwD,eAAe1C,EAAEjB,EAAEuE,IAAIvE,EAAE,CAAC,CAAC,OAAO,SAASkE,EAAEO,EAAEzE,GAAG,OAAOyE,GAAGxD,EAAEiD,EAAE9D,UAAUqE,GAAGzE,GAAGiB,EAAEiD,EAAElE,GAAGkE,CAAC,CAAC,CAA/O,GAAmPX,EAAE,WAAW,SAAStC,EAAEiD,GAAGlE,EAAE0J,KAAKzI,GAAGyI,KAAK68Q,eAAeriR,GAAGwF,KAAK88Q,eAAe,CAAC,OAAOvgR,EAAEhF,EAAE,CAAC,CAACsD,IAAI,iBAAiBN,MAAM,WAAa,IAAIC,EAAEsB,UAAUtF,OAAO,QAAG,IAASsF,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAEkE,KAAK63D,OAAOr9D,EAAEq9D,OAAO73D,KAAK+8Q,QAAQviR,EAAEuiR,QAAQ/8Q,KAAK7G,OAAOqB,EAAErB,OAAO6G,KAAK8zB,KAAKt5B,EAAEs5B,KAAK9zB,KAAKwzC,QAAQh5C,EAAEg5C,QAAQxzC,KAAKg5N,aAAa,EAAE,GAAG,CAACn+N,IAAI,gBAAgBN,MAAM,WAAayF,KAAK8zB,KAAK9zB,KAAKg9Q,aAAah9Q,KAAK7G,QAAQ6G,KAAKi9Q,cAAc,GAAG,CAACpiR,IAAI,aAAaN,MAAM,WAAa,IAAIC,EAAEwF,KAAKjF,EAAE,OAAO/C,SAASy+B,gBAAgB1C,aAAa,OAAO/zB,KAAKk9Q,aAAal9Q,KAAKm9Q,oBAAoB,WAAW,OAAO3iR,EAAE0iR,YAAY,EAAEl9Q,KAAKo9Q,YAAYplR,SAASg4C,KAAKrS,iBAAiB,QAAQ39B,KAAKm9Q,uBAAsB,EAAGn9Q,KAAKq9Q,SAASrlR,SAASC,cAAc,YAAY+H,KAAKq9Q,SAASpuO,MAAMk6F,SAAS,OAAOnpI,KAAKq9Q,SAASpuO,MAAMoT,OAAO,IAAIriD,KAAKq9Q,SAASpuO,MAAMmT,QAAQ,IAAIpiD,KAAKq9Q,SAASpuO,MAAMkT,OAAO,IAAIniD,KAAKq9Q,SAASpuO,MAAMkO,SAAS,WAAWn9C,KAAKq9Q,SAASpuO,MAAMl0C,EAAE,QAAQ,QAAQ,UAAU,IAAIzE,EAAEgF,OAAO23D,aAAaj7D,SAASy+B,gBAAgBqsB,UAAU9iD,KAAKq9Q,SAAS1/O,iBAAiB,QAAQriC,OAAO+3D,SAAS,EAAE/8D,IAAI0J,KAAKq9Q,SAASpuO,MAAMvR,IAAIpnC,EAAE,KAAK0J,KAAKq9Q,SAAShlR,aAAa,WAAW,IAAI2H,KAAKq9Q,SAAS9iR,MAAMyF,KAAK8zB,KAAK97B,SAASg4C,KAAKt2C,YAAYsG,KAAKq9Q,UAAUr9Q,KAAKg5N,cAAa,EAAGh/N,EAAC,SAAUgG,KAAKq9Q,UAAUr9Q,KAAKy7N,UAAU,GAAG,CAAC5gO,IAAI,aAAaN,MAAM,WAAayF,KAAKo9Q,cAAcplR,SAASg4C,KAAKjE,oBAAoB,QAAQ/rC,KAAKm9Q,qBAAqBn9Q,KAAKo9Q,YAAY,KAAKp9Q,KAAKm9Q,oBAAoB,MAAMn9Q,KAAKq9Q,WAAWrlR,SAASg4C,KAAK/b,YAAYj0B,KAAKq9Q,UAAUr9Q,KAAKq9Q,SAAS,KAAK,GAAG,CAACxiR,IAAI,eAAeN,MAAM,WAAayF,KAAKg5N,cAAa,EAAGh/N,EAAC,SAAUgG,KAAK7G,QAAQ6G,KAAKy7N,UAAU,GAAG,CAAC5gO,IAAI,WAAWN,MAAM,WAAa,IAAIC,OAAE,EAAO,IAAIA,EAAExC,SAASy4H,YAAYzwH,KAAK63D,OAAO,CAAC,MAAMtgE,GAAGiD,GAAE,CAAE,CAACwF,KAAKs9Q,aAAa9iR,EAAE,GAAG,CAACK,IAAI,eAAeN,MAAM,SAAWC,GAAGwF,KAAK+8Q,QAAQL,KAAKliR,EAAE,UAAU,QAAQ,CAACq9D,OAAO73D,KAAK63D,OAAO/jC,KAAK9zB,KAAKg5N,aAAaxlL,QAAQxzC,KAAKwzC,QAAQomF,eAAe55H,KAAK45H,eAAe9+H,KAAKkF,OAAO,GAAG,CAACnF,IAAI,iBAAiBN,MAAM,WAAayF,KAAK7G,QAAQ6G,KAAK7G,OAAO++C,OAAO58C,OAAOq1H,eAAesJ,iBAAiB,GAAG,CAACp/H,IAAI,UAAUN,MAAM,WAAayF,KAAKk9Q,YAAY,GAAG,CAACriR,IAAI,SAASyH,IAAI,WAAa,IAAI9H,EAAEsB,UAAUtF,OAAO,QAAG,IAASsF,UAAU,GAAGA,UAAU,GAAG,OAAO,GAAGkE,KAAKu9Q,QAAQ/iR,EAAE,SAASwF,KAAKu9Q,SAAS,QAAQv9Q,KAAKu9Q,QAAQ,MAAM,IAAI7kR,MAAM,qDAAqD,EAAEyB,IAAI,WAAa,OAAO6F,KAAKu9Q,OAAO,GAAG,CAAC1iR,IAAI,SAASyH,IAAI,SAAW9H,GAAG,QAAG,IAASA,EAAE,CAAC,IAAIA,GAAG,YAAY,oBAAoBA,EAAE,YAAYJ,EAAEI,KAAK,IAAIA,EAAE64B,SAAS,MAAM,IAAI36B,MAAM,+CAA+C,GAAG,SAASsH,KAAK63D,QAAQr9D,EAAEkgE,aAAa,YAAY,MAAM,IAAIhiE,MAAM,qFAAqF,GAAG,QAAQsH,KAAK63D,SAASr9D,EAAEkgE,aAAa,aAAalgE,EAAEkgE,aAAa,aAAa,MAAM,IAAIhiE,MAAM,0GAA0GsH,KAAKw9Q,QAAQhjR,CAAC,CAAC,EAAEL,IAAI,WAAa,OAAO6F,KAAKw9Q,OAAO,KAAKjmR,CAAC,CAA77F,GAAi8FA,EAAEH,QAAQyC,CAAC,GAAE,EAAE,CAAC4iC,OAAO,IAAI,EAAE,CAAC,SAASjiC,EAAEO,EAAEzE,IAAI,SAAS0D,EAAEI,GAAG,GAAG,mBAAmB7C,GAAGA,EAAEolR,IAAIplR,EAAE,CAAC,SAAS,qBAAqB,eAAe,iBAAiB6C,QAAQ,GAAG,oBAAoB9D,EAAE8D,EAAEW,EAAEP,EAAE,sBAAsBA,EAAE,gBAAgBA,EAAE,sBAAsB,CAAC,IAAI+B,EAAE,CAACnF,QAAQ,CAAC,GAAGgD,EAAEmC,EAAEvC,EAAE4iR,gBAAgB5iR,EAAEyjR,YAAYzjR,EAAE0jR,cAAc1jR,EAAEkgO,UAAU39N,EAAEnF,OAAO,CAAC,CAAnT,CAAqT4I,MAAK,SAASzI,EAAEiD,EAAEO,EAAEzE,GAAG,aAAa,SAAS0D,EAAEzC,GAAG,OAAOA,GAAGA,EAAEmD,WAAWnD,EAAE,CAAC2wE,QAAQ3wE,EAAE,CAAC,SAAS6C,EAAE7C,EAAEiD,GAAG,KAAKjD,aAAaiD,GAAG,MAAM,IAAIkwC,UAAU,oCAAoC,CAAC,SAASnuC,EAAEhF,EAAEiD,GAAG,IAAIjD,EAAE,MAAM,IAAIomR,eAAe,6DAA6D,OAAOnjR,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEjD,EAAEiD,CAAC,CAAC,SAASX,EAAEtC,EAAEiD,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIkwC,UAAU,kEAAkElwC,GAAGjD,EAAEb,UAAUD,OAAOmE,OAAOJ,GAAGA,EAAE9D,UAAU,CAACk+B,YAAY,CAACr6B,MAAMhD,EAAE2C,YAAW,EAAGy7C,UAAS,EAAGtI,cAAa,KAAM7yC,IAAI/D,OAAO4lE,eAAe5lE,OAAO4lE,eAAe9kE,EAAEiD,GAAGjD,EAAE+kE,UAAU9hE,EAAE,CAAC,SAASlD,EAAEC,EAAEiD,GAAG,IAAIO,EAAE,kBAAkBxD,EAAE,GAAGiD,EAAEkgE,aAAa3/D,GAAG,OAAOP,EAAEu5B,aAAah5B,EAAE,CAAC,IAAIU,EAAEzB,EAAEQ,GAAG4O,EAAEpP,EAAEe,GAAGurE,EAAEtsE,EAAE1D,GAAGwD,EAAE,WAAW,SAASvC,EAAEA,EAAEiD,GAAG,IAAI,IAAIO,EAAE,EAAEA,EAAEP,EAAEhE,OAAOuE,IAAI,CAAC,IAAIzE,EAAEkE,EAAEO,GAAGzE,EAAE4D,WAAW5D,EAAE4D,aAAY,EAAG5D,EAAE+2C,cAAa,EAAG,UAAU/2C,IAAIA,EAAEq/C,UAAS,GAAIl/C,OAAOwD,eAAe1C,EAAEjB,EAAEuE,IAAIvE,EAAE,CAAC,CAAC,OAAO,SAASkE,EAAEO,EAAEzE,GAAG,OAAOyE,GAAGxD,EAAEiD,EAAE9D,UAAUqE,GAAGzE,GAAGiB,EAAEiD,EAAElE,GAAGkE,CAAC,CAAC,CAA/O,GAAmP2M,EAAE,SAAS5P,GAAG,SAASiD,EAAEjD,EAAEwD,GAAGX,EAAE4F,KAAKxF,GAAG,IAAIlE,EAAEiG,EAAEyD,MAAMxF,EAAE8hE,WAAW7lE,OAAOq8B,eAAet4B,IAAI5D,KAAKoJ,OAAO,OAAO1J,EAAEumR,eAAe9hR,GAAGzE,EAAEsnR,YAAYrmR,GAAGjB,CAAC,CAAC,OAAOuD,EAAEW,EAAEjD,GAAGuC,EAAEU,EAAE,CAAC,CAACK,IAAI,iBAAiBN,MAAM,WAAa,IAAIC,EAAEsB,UAAUtF,OAAO,QAAG,IAASsF,UAAU,GAAGA,UAAU,GAAG,CAAC,EAAEkE,KAAK63D,OAAO,mBAAmBr9D,EAAEq9D,OAAOr9D,EAAEq9D,OAAO73D,KAAK69Q,cAAc79Q,KAAK7G,OAAO,mBAAmBqB,EAAErB,OAAOqB,EAAErB,OAAO6G,KAAK89Q,cAAc99Q,KAAK8zB,KAAK,mBAAmBt5B,EAAEs5B,KAAKt5B,EAAEs5B,KAAK9zB,KAAK+9Q,WAAW,GAAG,CAACljR,IAAI,cAAcN,MAAM,SAAWC,GAAG,IAAIO,EAAEiF,KAAKA,KAAK46H,UAAS,EAAGt0D,EAAC,SAAU9rE,EAAE,SAAQ,SAASjD,GAAG,OAAOwD,EAAEqjN,QAAQ7mN,EAAE,GAAE,GAAG,CAACsD,IAAI,UAAUN,MAAM,SAAWC,GAAG,IAAIO,EAAEP,EAAEu6C,gBAAgBv6C,EAAE06C,cAAcl1C,KAAK48Q,kBAAkB58Q,KAAK48Q,gBAAgB,MAAM58Q,KAAK48Q,gBAAgB,IAAInhR,EAAC,QAAS,CAACo8D,OAAO73D,KAAK63D,OAAO98D,GAAG5B,OAAO6G,KAAK7G,OAAO4B,GAAG+4B,KAAK9zB,KAAK8zB,KAAK/4B,GAAGy4C,QAAQz4C,EAAEgiR,QAAQ/8Q,MAAM,GAAG,CAACnF,IAAI,gBAAgBN,MAAM,SAAWC,GAAG,OAAOlD,EAAE,SAASkD,EAAE,GAAG,CAACK,IAAI,gBAAgBN,MAAM,SAAWC,GAAG,IAAIO,EAAEzD,EAAE,SAASkD,GAAG,GAAGO,EAAE,OAAO/C,SAASgmC,cAAcjjC,EAAE,GAAG,CAACF,IAAI,cAAcN,MAAM,SAAWC,GAAG,OAAOlD,EAAE,OAAOkD,EAAE,GAAG,CAACK,IAAI,UAAUN,MAAM,WAAayF,KAAK46H,SAAS39C,UAAUj9E,KAAK48Q,kBAAkB58Q,KAAK48Q,gBAAgB3/L,UAAUj9E,KAAK48Q,gBAAgB,KAAK,KAAKpiR,CAAC,CAA9rC,CAAgsC4O,EAAC,SAAU7R,EAAEH,QAAQ+P,CAAC,GAAE,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,KAAK,CAAC,EAAE,CAAC,GAAznT,CAA6nT,E,mBCNl7T,sBAWI,EAAO,CAAC,KAAU,OAAsB,MAAiB,OAAuB,aAA2B,2BAAP,EAoBrG,SAAUstD,EAAG6gK,EAAYpqG,GAC1BlrH,KAAmB,aAAIA,KAAmB,cAAK,CAAC,EAChDA,KAAmB,aAAa,UAAIA,KAAmB,aAAa,WAAK,CAAC,EAC1EA,KAAmB,aAAa,UAAE,qCAAuCs1N,EAAWxtI,SAAS,CAC3F,EAAK,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACFloJ,EACAmoJ,EAAmB,MAAVF,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAC7DC,EAAS9pE,EAAQ+pE,cACjBC,EAAS,WACX,MAAO,uCAA0C7hO,EAAUm7C,wBAAkBm+B,EAAuD,OAA7CA,EAASu+E,EAAQz5M,KAAO5E,GAAQA,EAAK4E,KAAek7H,EAASqoJ,KAA0BE,EAASvoJ,EAAOn/H,KAAKsnR,EAAQ,CACzM,KAAQ,MACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAW,mEAIC,OAJ4EkoJ,SAAUloJ,EAAiF,OAAvEA,EAASu+E,EAAQ9tI,QAAoB,MAAVw3M,EAAiBA,EAAOx3M,MAAQw3M,IAAmBjoJ,EAASqoJ,KAA0BE,EAASvoJ,EAAOn/H,KAAKsnR,EAAQ,CAC7P,KAAQ,QACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAmBkoJ,EAAS,IAAM,kBACzC,EACA,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,IAAIgoR,EACJ,MAAO,kPAMA,OANmQA,EAAS3pE,EAAQp/K,KAAKt+B,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAa,MAAVH,EAAiBA,EAAOO,OAASP,EAAQ,CACnY,KAAQ,OACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,IAAM,qBAC/B,EACA,SAAW,IAEbj+Q,KAAmB,aAAa,UAAE,qCAAuCs1N,EAAWxtI,SAAS,CAC3F,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,IAAI8/H,EACJ,MAAO,kGAAyGt5E,EAAUm7C,iBAAwK,oBAAtJm+B,EAA6F,OAAnFA,EAASu+E,EAAQ/nG,cAA0B,MAAVyxK,EAAiBA,EAAOzxK,YAAcyxK,IAAmBjoJ,EAASu+E,EAAQ+pE,eAA8CtoJ,EAAOn/H,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAG,CAChX,KAAQ,cACR,KAAQ,CAAC,EACT,KAAQloR,IACL8/H,GAAW,iBAClB,EACA,SAAW,IAEb/1H,KAAmB,aAAa,UAAE,wCAA0Cs1N,EAAWxtI,SAAS,CAC9F,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,MAAO,eACT,EACA,SAAW,IAEb+J,KAAmB,aAAa,UAAE,uCAAyCs1N,EAAWxtI,SAAS,CAC7F,EAAK,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACJ,MAAO,+LAMA,OANsMA,EAAS3pE,EAAQp/K,KAAKt+B,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAa,MAAVH,EAAiBA,EAAOv+N,OAASu+N,EAAQ,CACtU,KAAQ,OACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,IAAM,6BAC/B,EACA,EAAK,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACJ,OAMO,OANCA,EAAS3pE,EAAY,GAAE19M,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAa,MAAVH,EAAiBA,EAAOx3M,MAAQw3M,EAAQ,CACjI,KAAQ,KACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,EACzB,EACA,EAAK,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACFloJ,EACAmoJ,EAAmB,MAAVF,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAC7DC,EAAS9pE,EAAQ+pE,cACjBC,EAAS,WACX,MAAO,uGAA4G7hO,EAAUm7C,wBAAkBm+B,EAAuD,OAA7CA,EAASu+E,EAAQz5M,KAAO5E,GAAQA,EAAK4E,KAAek7H,EAASqoJ,KAA0BE,EAASvoJ,EAAOn/H,KAAKsnR,EAAQ,CAC3Q,KAAQ,MACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAW,MAIC,OAJSkoJ,SAAUloJ,EAAiF,OAAvEA,EAASu+E,EAAQ9tI,QAAoB,MAAVw3M,EAAiBA,EAAOx3M,MAAQw3M,IAAmBjoJ,EAASqoJ,KAA0BE,EAASvoJ,EAAOn/H,KAAKsnR,EAAQ,CAC1L,KAAQ,QACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAmBkoJ,EAAS,IAAM,wCACzC,EACA,EAAK,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACJ,MAAO,qKAMA,OAN4KA,EAAS3pE,EAAQp/K,KAAKt+B,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAa,MAAVH,EAAiBA,EAAOv/D,QAAUu/D,EAAQ,CAC7S,KAAQ,OACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,IAAM,6BAC/B,EACA,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,IAAIgoR,EACFC,EAAmB,MAAVF,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAC/D,OAMO,OANEF,EAAS3pE,EAAY,GAAE19M,KAAKsnR,EAAkB,MAAVF,EAAiBA,EAAOv+N,OAASu+N,EAAQ,CACpF,KAAQ,KACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,IAAM,MAMtB,OAN+BA,EAAS3pE,EAAY,GAAE19M,KAAKsnR,EAAkB,MAAVF,EAAiBA,EAAOv/D,QAAUu/D,EAAQ,CAClH,KAAQ,KACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,GACzB,EACA,SAAW,IAEbj+Q,KAAmB,aAAa,UAAE,uCAAyCs1N,EAAWxtI,SAAS,CAC7F,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,IAAIgoR,EAAQloJ,EACZ,MAAO,yHAIU,OAJkHkoJ,EAAkJ,oBAAxIloJ,EAA+E,OAArEA,EAASu+E,EAAQx6J,OAAmB,MAAVkkO,EAAiBA,EAAOlkO,KAAOkkO,IAAmBjoJ,EAASu+E,EAAQ+pE,eAA8CtoJ,EAAOn/H,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAG,CACnW,KAAQ,OACR,KAAQ,CAAC,EACT,KAAQloR,IACL8/H,GAAmBkoJ,EAAS,IAAM,uFACzC,EACA,SAAW,IAEbj+Q,KAAmB,aAAa,UAAE,0CAA4Cs1N,EAAWxtI,SAAS,CAChG,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,MAAO,8BACT,EACA,SAAW,IAEb+J,KAAmB,aAAa,UAAE,qCAAuCs1N,EAAWxtI,SAAS,CAC3F,EAAK,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,MAAO,6DACT,EACA,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUwmD,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,IAAIgoR,EACFloJ,EACAmoJ,EAAmB,MAAVF,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAC/D,MAAO,mDAAwD1hO,EAAUm7C,iBAAwJ,oBAAtIm+B,EAA6E,OAAnEA,EAASu+E,EAAQ5vH,MAAkB,MAAVs5L,EAAiBA,EAAOt5L,IAAMs5L,IAAmBjoJ,EAASu+E,EAAQ+pE,eAA8CtoJ,EAAOn/H,KAAKsnR,EAAQ,CAChQ,KAAQ,MACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAW,iBAMT,OANgCkoJ,EAAS3pE,EAAY,GAAE19M,KAAKsnR,EAAkB,MAAVF,EAAiBA,EAAOh0O,SAAWg0O,EAAQ,CACpH,KAAQ,KACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,IAAM,aAC/B,EACA,SAAW,IAEbj+Q,KAAmB,aAAa,UAAE,2CAA6Cs1N,EAAWxtI,SAAS,CACjG,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,MAAO,oDACT,EACA,SAAW,IAEb+J,KAAmB,aAAa,UAAE,uCAAyCs1N,EAAWxtI,SAAS,CAC7F,EAAK,SAAUrrC,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACJ,OAMO,OANCA,EAAS3pE,EAAY,GAAE19M,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAa,MAAVH,EAAiBA,EAAOx3M,MAAQw3M,EAAQ,CACjI,KAAQ,KACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,EACzB,EACA,EAAK,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACFloJ,EACAmoJ,EAAmB,MAAVF,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAC7DC,EAAS9pE,EAAQ+pE,cACjBC,EAAS,WACX,MAAO,+FAAoG7hO,EAAUm7C,wBAAkBm+B,EAAuD,OAA7CA,EAASu+E,EAAQz5M,KAAO5E,GAAQA,EAAK4E,KAAek7H,EAASqoJ,KAA0BE,EAASvoJ,EAAOn/H,KAAKsnR,EAAQ,CACnQ,KAAQ,MACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAW,MAIC,OAJSkoJ,SAAUloJ,EAAiF,OAAvEA,EAASu+E,EAAQ9tI,QAAoB,MAAVw3M,EAAiBA,EAAOx3M,MAAQw3M,IAAmBjoJ,EAASqoJ,KAA0BE,EAASvoJ,EAAOn/H,KAAKsnR,EAAQ,CAC1L,KAAQ,QACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAmBkoJ,EAAS,IAAM,oCACzC,EACA,EAAK,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACJ,MAAO,+JAMA,OANmKA,EAAS3pE,EAAQp/K,KAAKt+B,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAa,MAAVH,EAAiBA,EAAOv/D,QAAUu/D,EAAQ,CACpS,KAAQ,OACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,IAAM,2BAC/B,EACA,EAAK,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACJ,OAMO,OANCA,EAAS3pE,EAAY,GAAE19M,KAAe,MAAVonR,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAAa,MAAVH,EAAiBA,EAAOx3M,MAAQw3M,EAAQ,CACjI,KAAQ,KACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,EACzB,EACA,EAAK,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACnD,IAAIgoR,EACFloJ,EACAmoJ,EAAmB,MAAVF,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAC7DC,EAAS9pE,EAAQ+pE,cACjBC,EAAS,WACX,MAAO,mGAAsG7hO,EAAUm7C,wBAAkBm+B,EAAuD,OAA7CA,EAASu+E,EAAQz5M,KAAO5E,GAAQA,EAAK4E,KAAek7H,EAASqoJ,KAA0BE,EAASvoJ,EAAOn/H,KAAKsnR,EAAQ,CACrQ,KAAQ,MACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAW,MAIC,OAJSkoJ,SAAUloJ,EAAiF,OAAvEA,EAASu+E,EAAQ9tI,QAAoB,MAAVw3M,EAAiBA,EAAOx3M,MAAQw3M,IAAmBjoJ,EAASqoJ,KAA0BE,EAASvoJ,EAAOn/H,KAAKsnR,EAAQ,CAC1L,KAAQ,QACR,KAAQ,CAAC,EACT,KAAQjoR,IACL8/H,GAAmBkoJ,EAAS,IAAM,sCACzC,EACA,SAAY,CAAC,EAAG,YAChB,KAAQ,SAAUxhO,EAAWuhO,EAAQ1pE,EAASC,EAAUt+M,GACtD,IAAIgoR,EACFC,EAAmB,MAAVF,EAAiBA,EAASvhO,EAAU0hO,aAAe,CAAC,EAC/D,MAAO,uLAMA,OAN8LF,EAAS3pE,EAAQp/K,KAAKt+B,KAAKsnR,EAAkB,MAAVF,EAAiBA,EAAOv+N,OAASu+N,EAAQ,CAC/Q,KAAQ,OACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,IAAM,yBAMtB,OANkDA,EAAS3pE,EAAY,GAAE19M,KAAKsnR,EAAkB,MAAVF,EAAiBA,EAAOv/D,QAAUu/D,EAAQ,CACrI,KAAQ,KACR,KAAQ,CAAC,EACT,GAAMvhO,EAAU+5K,QAAQ,EAAGvgO,EAAM,GACjC,QAAWwmD,EAAUrmB,KACrB,KAAQngC,KACIgoR,EAAS,GACzB,EACA,SAAW,IAGb,SAAWxpN,EAAGn5D,EAAQtD,EAAUuB,GAC9B,aAGA,IAAIilR,EAAa,eACfxiQ,EAAW,CACT6pH,OAAQ,KACRpkG,SAAS,EACT88O,OAAQ,CACNE,QAAQ,EAERC,QAAQ,IAWd,SAASC,EAAQt0J,GACf,OAAOA,EAAIr0G,OAAO,GAAGzP,cAAgB8jH,EAAI7uH,MAAM,EACjD,CAaA,SAASojR,EAAK9hP,EAAIlH,GAChB,IAAIiwG,EACJ7lI,KAAK88B,GAAKA,EACV98B,KAAK6+Q,IAAMpqN,EAAE33B,GACb98B,KAAK28M,UAAYrhN,EAAOwjR,aAAaC,UACjCnpP,IAIFiwG,EAASjwG,EAAQiwG,OACjBjwG,EAAQiwG,OAAS,MAEnB7lI,KAAK41B,QAAU6+B,EAAEn3D,QAAO,EAAM,CAAC,EAAG0e,EAAU4Z,GAC5C51B,KAAK41B,QAAQiwG,OAASA,EAClBjwG,IACFA,EAAQiwG,OAASA,GAGnB7lI,KAAKo0K,UAAYp4J,EACjBhc,KAAKg/Q,MAAQR,EAGTx+Q,KAAK41B,SAAW51B,KAAK41B,QAAQiwG,SAC3B7lI,KAAK41B,QAAQiwG,OAAOo5I,aAAe1lR,IACrCyG,KAAK41B,QAAQiwG,OAAOo5I,WAAaj/Q,KAAK41B,QAAQiwG,OAAOz7E,WAEnDpqD,KAAK41B,QAAQiwG,OAAOuuB,WAAa76J,IACnCyG,KAAK41B,QAAQiwG,OAAOuuB,SAAWp0J,KAAK41B,QAAQiwG,OAAO5oD,SAEjDj9E,KAAK41B,QAAQiwG,OAAOq5I,SAAW3lR,IACjCyG,KAAK41B,QAAQiwG,OAAOq5I,OAASl/Q,KAAK41B,QAAQiwG,OAAOtxF,OAEnDv0C,KAAK41B,QAAQiwG,OAAOs5I,mBAAqBn/Q,KAAKo/Q,YAC9Cp/Q,KAAK41B,QAAQiwG,OAAOz7E,UAAYpqD,KAAKq/Q,gBACrCr/Q,KAAK41B,QAAQiwG,OAAO5oD,QAAUj9E,KAAKs/Q,cACnCt/Q,KAAK41B,QAAQiwG,OAAOtxF,MAAQv0C,KAAKu/Q,YAC7Bv/Q,KAAK41B,QAAQiwG,OAAOhG,mBAAmB,iBAAmBtmI,IAC5DyG,KAAK41B,QAAQiwG,OAAOhG,mBAAmB,eAAe8M,kBAAoB3sI,KAAKw/Q,yBAGrF,CAQAZ,EAAKloR,UAAU69B,KAAO,WACpBv0B,KAAK6+Q,IAAI52N,SAAS,+BACiB,kBAAxBjoD,KAAK41B,QAAQ2oP,QAAmE,IAA5C9nR,OAAOwL,KAAKjC,KAAK41B,QAAQ2oP,QAAQ/nR,QAC9EwJ,KAAKmpC,UAEPnpC,KAAKy/Q,aACLz/Q,KAAK0/Q,QACL1/Q,KAAK4zC,QACP,EAQAgrO,EAAKloR,UAAUk9C,OAAS,WACtB,IAAI9sB,EAAO9mB,KACXA,KAAK6+Q,IAAIlsO,GAAG,iBAAiB,SAAUp7C,GACrCA,EAAEg8C,gBACJ,IAAGZ,GAAG,cAAe8hB,EAAER,MAAMj0D,KAAM,kBAAkB2yC,GAAG,wBAAyB,yCAA0C8hB,EAAER,MAAMj0D,KAAM,qBAAqB2yC,GAAG,QAAS,8BAA+B8hB,EAAER,MAAMj0D,KAAM,iBAAiB2yC,GAAG,QAAS,wBAAyB8hB,EAAER,MAAMj0D,KAAM,gBAAgB2yC,GAAG,QAAS,sCAAsC,SAAUp7C,GACrWk9D,EAAER,MAAMntC,EAAM,2BAAd2tC,CAA0CA,EAAEl9D,EAAE4B,QAChD,IACAs7D,EAAEn5D,GAAQq3C,GAAG,SAAU8hB,EAAER,MAAMj0D,KAAM,kBAAmB,MAC1D,EAQA4+Q,EAAKloR,UAAUipR,UAAY,WACzB,OAAO3/Q,KAAK41B,QAAQiwG,MACtB,EAQA+4I,EAAKloR,UAAU2oR,gBAAkB,WAC/B,IAAIppR,EAAO+J,KAAKi/Q,aAchB,OAbAxqN,EAAEv/B,KAAKj/B,GAAM,SAAU4E,GACrB,IAAI+kR,EAAQnrN,EAAE,WAAW3a,KAAK7jD,EAAK4E,GAAKN,OACxCqlR,EAAMpkP,KAAK,0BAA0B0N,SACrC02O,EAAMpkP,KAAK,yBAAyB6sB,YAAY,wBAGhDu3N,EAAMpkP,KAAK,qBAAqBtG,MAAK,WACnC,IAAI68D,EAAQt9B,EAAEz0D,MACZ85C,EAAO2a,EAAE,WAAW3a,KAAKi4C,EAAMpzD,KAAK,oBAAoB7K,OAC1Di+D,EAAMj4C,KAAKA,EACb,IACA7jD,EAAK4E,GAAKN,MAAQqlR,EAAM9lO,MAC1B,IACO7jD,CACT,EAQA2oR,EAAKloR,UAAU4oR,cAAgB,WAC7B7qN,EAAEv/B,KAAKl1B,KAAKy+B,UAAU,SAAU5jC,EAAKiiC,GAC/B23B,EAAE33B,GAAI7mC,KAAK,UAAYuoR,aAAuBI,GAChDnqN,EAAE33B,GAAI7mC,KAAK,UAAYuoR,GAAYr1O,SAEvC,IACAnpC,KAAKo0J,UACP,EAQAwqH,EAAKloR,UAAU6oR,YAAc,WAC3Bv/Q,KAAKk/Q,SACLzqN,EAAEv/B,KAAKl1B,KAAKy+B,UAAU,SAAU5jC,EAAKiiC,GAC/B23B,EAAE33B,GAAI7mC,KAAK,UAAYuoR,aAAuBI,GAChDnqN,EAAE33B,GAAI7mC,KAAK,UAAYuoR,GAAYl1L,QAEvC,GACF,EAQAs1L,EAAKloR,UAAU8oR,wBAA0B,SAAU1iP,EAAIiwG,GACrD,IAAIrmG,EAAW+tB,EAAE33B,GAAI2J,WAAW9F,IAAI,0BAA0B+F,WACzDqmG,GAAgC,IAApBrmG,EAASlwC,QAAuD,OAAvCkwC,EAAS,GAAGjS,SAASjsB,cAI7DxI,KAAK8sI,gBAAgBhwG,IAHrB98B,KAAK6sI,gBAAgB/vG,GACrB98B,KAAKokB,KAAK+6P,mBAAmB1qN,EAAE33B,IAInC,EAQA8hP,EAAKloR,UAAUmpR,aAAe,WACxB7/Q,KAAK2/Q,aACP3/Q,KAAK2/Q,YAAYnsO,QAAQ,gBAAiB,KAAMxzC,KAAK88B,GAEzD,EAQA8hP,EAAKloR,UAAUopR,SAAW,WACxB9nR,EAAS24H,eAAesJ,iBAC1B,EAQA2kJ,EAAKloR,UAAUyyC,QAAU,WACvBnpC,KAAK41B,QAAQ6L,SAAU,EACvBzhC,KAAK6+Q,IAAIrjP,KAAK,0BAA0BysB,SAAS,OACnD,EAQA22N,EAAKloR,UAAU4yF,OAAS,WACtBtpF,KAAK41B,QAAQ6L,SAAU,EACvBzhC,KAAK6+Q,IAAIrjP,KAAK,0BAA0B6sB,YAAY,OACtD,EAQAu2N,EAAKloR,UAAUyjK,iBAAmB,SAAU5iK,GAC1C,IAAIsnR,EAAMpqN,EAAEl9D,EAAE4B,UACQ,IAAlB0lR,EAAIh5O,GAAG,QAAoBg5O,EAAIp2N,SAAS,gCAC1ClxD,EAAEg8C,gBAEN,EAQAqrO,EAAKloR,UAAU+oR,WAAa,WAC1B,IAAI34P,EAAO9mB,KACNA,KAAK41B,QAAQ2oP,QAAyC,IAA/Bv+Q,KAAK41B,QAAQ2oP,OAAO/nR,QAGhDi+D,EAAEv/B,KAAKl1B,KAAK41B,QAAQ2oP,QAAQ,SAAUwB,EAAOnqP,GAC3C,IAAIoqP,EAAYxB,EAAaG,EAAQoB,IACrB,IAAZnqP,GAIJ9O,EAAK+3P,IAAImB,GAAWpqP,GACpB9O,EAAK8O,QAAQ2oP,OAAOwB,GAASj5P,EAAK+3P,IAAI5oR,KAAK,UAAY+pR,GAAWpqP,gBAJzD9O,EAAK8O,QAAQ2oP,OAAOwB,EAK/B,GACF,EAQAnB,EAAKloR,UAAUgpR,MAAQ,WACrB,IACEO,EACAC,EAFEp5P,EAAO9mB,MAIkB,IAAzBA,KAAK41B,QAAQ6L,UAGc,IAA3BzhC,KAAK6+Q,IAAI/kO,OAAOtjD,QAClBwJ,KAAK6+Q,IAAI/kO,KAAK95C,KAAK28M,UAAU,0CAA0CroJ,QAKjEt0D,KAAK6+Q,IAAIn4O,WAAWlhB,QAAO,WACjC,MAAyB,UAAlBxlB,KAAKy0B,UAAmD,KAA3BggC,EAAEH,KAAKG,EAAEz0D,MAAM8zB,SAAkD,OAAhC9zB,KAAKy0B,SAASjsB,aACrF,IACM0sB,MAAK,WACTu/B,EAAEz0D,MAAMkyC,KAAK,SAIbprB,EAAKq5P,UAAU1rN,EAAEz0D,MAAMogC,SAAUq0B,EAAEz0D,MAAM8zB,OAAOt9B,OAClD,IACAwJ,KAAKogR,cAELF,GADAD,EAAWjgR,KAAK6+Q,IAAIrjP,KAAK,2BACNmL,QACPhI,KAAK,UAAYuhP,EAAQvhP,KAAK,SAASx5B,MAAM,+BACvD86Q,EAAStlO,OAAO36C,KAAK28M,UAAU,0CAA0CroJ,QAE7E,EAQAsqN,EAAKloR,UAAU2pR,WAAa,WAC1B,IAA6B,IAAzBrgR,KAAK41B,QAAQ6L,QAGjB,OAAOzhC,KAAK28M,UAAU,qCAAqC,CACzD4hE,OAAQv+Q,KAAK41B,QAAQ2oP,SACpBjqN,MACL,EAQAsqN,EAAKloR,UAAU0pR,WAAa,WAC6B,IAAnDpgR,KAAK6+Q,IAAIrjP,KAAK,0BAA0BhlC,QAC1CwJ,KAAK6+Q,IAAIrkO,OAAOx6C,KAAKqgR,aAEzB,EAQAzB,EAAKloR,UAAU4pR,cAAgB,SAAU/oR,GACvC,IAGE64H,EACAmwJ,EACAC,EACAC,EANE5B,EAAMpqN,EAAEl9D,EAAE4B,QACZ64C,EAAY12C,EAAOq1H,eACnB7pG,EAAO9mB,MAKoB,IAAzBA,KAAK41B,QAAQ6L,UAGZuQ,GAAsC,IAAzBA,EAAU4+E,YAG1BR,EAAQp+E,EAAU6+E,WAAW,GAC7B0vJ,EAAW9rN,EAAE27D,EAAMU,0BAHnByvJ,EAAW1B,EAOT0B,EAAS93N,SAAS,iCACpB83N,EAAWA,EAAS/kP,KAAK,YAE3BglP,EAAKD,EAAS16O,GAAG,KAAO06O,EAAWA,EAASx5O,QAAQ,KACpD/mC,KAAK0/Q,SAC6C,IAA9Cb,EAAIp2N,SAAS,8BAA2F,IAAjDo2N,EAAI93O,QAAQ,0BAA0BvwC,QAAsE,IAAtD+pR,EAASx5O,QAAQ,0BAA0BvwC,SAC1JwJ,KAAK6+Q,IAAIrjP,KAAK,yBAAyB6sB,YAAY,wBACnDoM,EAAEv/B,KAAKl1B,KAAK41B,QAAQ2oP,QAAQ,SAAUwB,GAIpC,GAHIlB,EAAI93O,QAAQ,kBAAoBg5O,GAAOvpR,SACzC+pR,EAAW1B,GAET0B,EAASx5O,QAAQ,kBAAoBg5O,GAAOvpR,OAG9C,OAFAgqR,EAAKD,EAASx5O,QAAQ,kBAAoBg5O,QAC1CU,EAAcV,EAGlB,IACIS,EAAGhqR,SAAgC,KAArBgqR,EAAG1sP,OAAOwgC,SAAkBmsN,GAA+B,WAAhBA,IAC3DD,EAAGv4N,SAAS,wBACQ,WAAhBw4N,EACFzgR,KAAK6+Q,IAAIrjP,KAAK,0BAA0BmD,KAAK,oBAAqB8hP,GAElEzgR,KAAK6+Q,IAAIrjP,KAAK,0BAA0B4rB,WAAW,qBAIrD5tD,YAAW,WACTstB,EAAK45P,gBAAgBD,GACrB35P,EAAK65P,YAAYF,EACnB,GAAGA,EAAc,IAAM,IAEvBzgR,KAAKo/Q,eAGX,EASAR,EAAKloR,UAAUiqR,YAAc,SAAUF,GACrC,IAAIR,EAAWjgR,KAAK6+Q,IAAIrjP,KAAK,0BAC7BykP,EAAS/vO,OACT+vO,EAASzkP,KAAK,MAAM0U,OAChBuwO,IACFR,EAASzkP,KAAK,MAAM2U,OACpB8vO,EAASzkP,KAAK,sBAAwBilP,EAAc,MAAMrgP,SAAS8P,OAEvE,EASA0uO,EAAKloR,UAAU0oR,YAAc,SAAUP,IACrCA,EAAMA,GAAO7+Q,KAAK6+Q,KACdrjP,KAAK,0BAA0B2U,OACnC0uO,EAAIrjP,KAAK,iCAAiC2U,OAC1C0uO,EAAIrjP,KAAK,+BAA+B6sB,YAAY,+BACtD,EASAu2N,EAAKloR,UAAUgqR,gBAAkB,SAAUD,GACzC,IAAIR,EAAWjgR,KAAK6+Q,IAAIrjP,KAAK,0BAC3BglP,EAAKxgR,KAAK6+Q,IAAIrjP,KAAK,yBACnBolP,EAAeJ,EAAG/3N,SAAS,6BAA+B,GAAK+3N,EAAGhlP,KAAK,0BACvEooG,EAAoB5jI,KAAK2/Q,YAAc3/Q,KAAK2/Q,YAAY/pP,QAAQguG,kBAAoBnvE,EAAE,QAAQt6D,IAAI,GAClG0pI,EAA4B,CAAC,WAAY,SAAS/2H,QAAQxR,EAAOmgD,iBAAiBmoF,GAAmBznF,iBAAiB,cAAgB,EACtIgB,EAAW,CAAC,EACVqjO,EAAGhqR,SACL2mD,EAAS+E,KAAOs+N,EAAGrjO,WAAW+E,KAC9B/E,EAASzf,IAAM8iP,EAAGrjO,WAAWzf,IACzB+iP,GACFtjO,EAAS+E,MAAQs+N,EAAGzkO,QAAUkkO,EAASzkP,KAAK,+BAA+BugB,QAAU,GACrFoB,EAASzf,KAAO8iP,EAAGtiO,SAAW,IAAM0iO,EAAapqR,QAAUoqR,EAAa1iO,SAAW7tC,SAASuwQ,EAAazxO,IAAI,cAAe,IAAM,MAElIgO,EAAS+E,OAAS7xC,SAAS4vQ,EAASzkP,KAAK,iCAAiC2T,IAAI,QAAS,IAAM9+B,SAAS4vQ,EAASzkP,KAAK,8CAA8C2T,IAAI,eAAgB,IACtLgO,EAASzf,KAAOrtB,SAASmwQ,EAAGrxO,IAAI,cAAe,KAE7C00F,IACF1mF,EAASzf,KAAOkmG,EAAkB9gF,YAEmB,IAAnD9iD,KAAK6+Q,IAAIp2N,SAAS,8BAA0CtL,EAAS+E,KAAO,IAC9E/E,EAAS+E,KAAOs+N,EAAGrjO,WAAW+E,MAEhC+9N,EAAS9wO,IAAIgO,GAEjB,EAQAyhO,EAAKloR,UAAUmqR,aAAe,WAC8C,WAAtE7gR,KAAK6+Q,IAAIrjP,KAAK,0BAA0BmD,KAAK,sBAIjD3+B,KAAK6+Q,IAAIrjP,KAAK,iCAAiCorB,aAC/C5mD,KAAK6+Q,IAAIrjP,KAAK,+BAA+B8sB,YAAY,iCAJvDtoD,KAAK6+Q,IAAIrjP,KAAK,0BAA0BA,KAAK,+BAA+Bsa,OAKhF,EAQA8oO,EAAKloR,UAAUoqR,WAAa,WAC1B9gR,KAAK6+Q,IAAIrjP,KAAK,iCAAiC2U,OAC/CnwC,KAAK6+Q,IAAIrjP,KAAK,+BAA+B6sB,YAAY,+BAC3D,EASAu2N,EAAKloR,UAAUqqR,YAAc,SAAUxpR,GACrC,IAAIypR,EAAKvsN,EAAEl9D,EAAE29C,eACX6qO,EAAQiB,EAAG/qR,KAAK,SAChB4hE,EAASmpN,EAAG/qR,KAAK,UACnB+J,KAAK6+Q,IAAI5oR,KAAK,UAAYuoR,EAAaG,EAAQoB,IAAQloN,IACzD,EAWA+mN,EAAKloR,UAAUypR,UAAY,SAAUtB,EAAK1hO,GACxC,IAAIizE,EAAOj4F,EAAK2E,EAAImkP,EACpB9jO,EAAWA,GAAY,EACvBizE,EAAQp4H,EAASs1G,cACjBn1E,EAAM78B,EAAOq1H,gBACb7zF,EAAK+hP,EAAI1kR,IAAI,IACLmhC,WAAW9kC,SACjByqR,EAASjpR,EAASu6C,eAAe,KACjCzV,EAAGpjC,YAAYunR,IAEjB7wJ,EAAMiH,SAASv6F,EAAGxB,WAAW,GAAI6hB,GACjCizE,EAAMiB,UAAS,GACfl5F,EAAI8hG,kBACJ9hG,EAAI+hG,SAAS9J,EACf,EAUAwuJ,EAAKloR,UAAUwqR,WAAa,SAAUrC,EAAKtyK,GAEjB,IADTsyK,EAAIrjP,KAAK,cACXhlC,QACXqoR,EAAIrkO,OAAOx6C,KAAK28M,UAAU,qCAAqC,CAC7DpwG,YAAaA,IAGnB,EASAqyK,EAAKloR,UAAUyqR,eAAiB,SAAUC,GACxC,IAAIC,EAAYrhR,KAAK6+Q,IAAIrjP,KAAK,cAC1B4lP,IACFC,EAAYA,EAAU1gP,IAAIygP,IAE5BC,EAAUnsP,MAAK,YACTu/B,EAAEz0D,MAAMyoD,SAAS,sCAAkE,KAA1BgM,EAAEz0D,MAAM8zB,OAAOwgC,SAC1EG,EAAEz0D,MAAMkpC,QAEZ,GACF,EASA01O,EAAKloR,UAAU4qR,yBAA2B,SAAUzC,GAClD,IAAI0C,EAAW1C,EAAIh5O,GAAG,cAAgBg5O,EAAMA,EAAIrjP,KAAK,cACjD+lP,EAAS/qR,QACX+qR,EAASl5N,YAAY,qCAAqCjB,WAAW,mBAEzE,EAIAqN,EAAEt3D,GAAGqhR,GAAc,SAAU5oP,GAC3B,OAAO51B,KAAKk1B,MAAK,WACf,IACEssP,EADE16P,EAAO9mB,KAEPy0D,EAAE3tC,GAAM+e,GAAG,cACb27O,EAAa/sN,EAAE3tC,GAAM6X,KAAK,6BAC1B7X,EAAO2tC,EAAE3tC,GAAMgf,SAAS,+BAAiC07O,EAAa,MAAMrnR,IAAI,IAE7Es6D,EAAEx+D,KAAK6wB,EAAM,UAAY03P,GAIA,kBAAZ5oP,GAAwB6+B,EAAEx+D,KAAK6wB,EAAM,UAAY03P,GAAY5oP,IAE7E6+B,EAAEx+D,KAAK6wB,EAAM,UAAY03P,GAAY5oP,MAJrC6+B,EAAEx+D,KAAK6wB,EAAM,UAAY03P,EAAY,IAAII,EAAK93P,EAAM8O,IACpD6+B,EAAEx+D,KAAK6wB,EAAM,UAAY03P,GAAYjqP,OAKzC,GACF,CACD,CAplBD,CAolBGH,EAAQ94B,OAAQtD,UAEnB,SAAWy8D,EAAGn5D,EAAQtD,EAAUuB,GAC9B,aAGA,IAAIilR,EAAa,eACfwB,EAAY,SAEZhkQ,EAAW,CACTwqD,MAAO,2CACP+lC,YAAa,8EACbk1K,YAAa,8CACbC,UAAU,EACVC,mBAAoB,0BACpBC,WAAW,EACXniO,OAAQ,CACNoiO,KAAM,CACJr7M,MAAO,6CAKTtkB,KAAM,CACJskB,MAAO,0CAKTxpB,MAAO,CACLwpB,MAAO,4CAMXi4I,QAAS,CACPv1K,OAAQ,CACNs9B,MAAO,oCACPsiG,QAAS,WACP,IAAIg5G,EAASrtN,EAAEhf,MAAM,WACrBqsO,EAAO7pO,MAAQ,EACfwc,EAAEz8D,GAAUw7C,QAAQsuO,EACtB,IAGJC,cAAc,GAclB,SAASC,EAAOllP,EAAIlH,GAClB51B,KAAK88B,GAAKA,EACV98B,KAAK6+Q,IAAMpqN,EAAE33B,GACb98B,KAAK28M,UAAYrhN,EAAOwjR,aAAaC,UACrC/+Q,KAAKiiR,KAAOjiR,KAAK6+Q,IAAI5oR,KAAK,UAAYuoR,GACtCx+Q,KAAK41B,QAAU6+B,EAAEn3D,QAAO,EAAM,CAAC,EAAG0e,EAAU4Z,GAC5C51B,KAAKo0K,UAAYp4J,EACjBhc,KAAKg/Q,MAAQR,EAGTx+Q,KAAKiiR,KAAKtC,cACZ3/Q,KAAKiiR,KAAKtC,YAAYuC,oBAAsBliR,KAAKiiR,KAAKtC,YAAYv1N,UAClEpqD,KAAKiiR,KAAKtC,YAAYv1N,UAAYpqD,KAAKq/Q,iBAEzCr/Q,KAAKu0B,MACP,CAQAytP,EAAOtrR,UAAU69B,KAAO,WACtB,IAAI4tP,EAAUniR,KAAK6+Q,IAAIrjP,KAAK,yBAC5B2mP,EAAQxjP,KAAK,mBAAmB,GAChCwjP,EAAQjtP,MAAK,WACkD,IAAzDu/B,EAAEz0D,MAAMw7B,KAAK,iCAAiChlC,QAChDi+D,EAAEz0D,MAAMw6C,OAAOia,EAAE,WAAWxM,SAAS,gCAEzC,IACAjoD,KAAK4zC,SACL5zC,KAAKoiR,wBACP,EAQAJ,EAAOtrR,UAAUk9C,OAAS,WACxB6gB,EAAEz8D,GAAU26C,GAAG,QAAS8hB,EAAER,MAAMj0D,KAAM,kBAAkB2yC,GAAG,UAAW8hB,EAAER,MAAMj0D,KAAM,gBAAgB2yC,GAAG,QAAS,sDAAuD8hB,EAAER,MAAMj0D,KAAM,kBAAkB2yC,GAAG,QAAS,uDAAwD8hB,EAAER,MAAMj0D,KAAM,mBACzRA,KAAK6+Q,IAAIlsO,GAAG,oBAAqB8hB,EAAER,MAAMj0D,KAAM,sBAAsB2yC,GAAG,UAAW8hB,EAAER,MAAMj0D,KAAM,gBAAgB2yC,GAAG,QAAS,gCAAiC8hB,EAAER,MAAMj0D,KAAM,gBAAgB2yC,GAAG,cAAe,oCAAqC8hB,EAAER,MAAMj0D,KAAM,+BAC7PA,KAAK41B,QAAQmsP,cACf/hR,KAAK6+Q,IAAIlsO,GAAG,QAAS8hB,EAAER,MAAMj0D,KAAM,kBAErCy0D,EAAEn5D,GAAQq3C,GAAG,SAAU8hB,EAAER,MAAMj0D,KAAM,0BACvC,EAQAgiR,EAAOtrR,UAAU0rR,uBAAyB,WACxC,IAAIt7P,EAAO9mB,KACXA,KAAK6+Q,IAAIrjP,KAAK,wBAAwB6sB,YAAY,uBAAuBJ,SAAS,wBAClFjoD,KAAK6+Q,IAAIrjP,KAAK,yBAAyBtG,MAAK,WACU,IAAhDu/B,EAAEz0D,MAAMw7B,KAAK,wBAAwBhlC,SACvCi+D,EAAEz0D,MAAM46C,MAAM9zB,EAAK61L,UAAU,uCAAuC,CAClE7iK,KAAM2a,EAAEz0D,MAAM85C,UAEhB2a,EAAEz0D,MAAMkpC,SAEZ,GACF,EAQA84O,EAAOtrR,UAAU2oR,gBAAkB,WACjC,IAAIppR,EAAO+J,KAAKkiR,sBAShB,OARAztN,EAAEv/B,KAAKj/B,GAAM,SAAU4E,GACrB,IAAI+kR,EAAQnrN,EAAE,WAAW3a,KAAK7jD,EAAK4E,GAAKN,OACtC4nR,EAAUvC,EAAMpkP,KAAK,yBACvB2mP,EAAQ/6N,WAAW,mBACnB+6N,EAAQ3mP,KAAK,cAAc4rB,WAAW,mBACtCw4N,EAAMpkP,KAAK,iCAAiC0N,SAC5CjzC,EAAK4E,GAAKN,MAAQqlR,EAAM9lO,MAC1B,IACO7jD,CACT,EAQA+rR,EAAOtrR,UAAU4b,IAAM,WACrB,IAAI+vQ,EAASriR,KAAK6+Q,IAAIrjP,KAAK,yBAI3B6mP,EAAOvoO,KAAK95C,KAAK28M,UAAU,0CAA0CroJ,QAIjE+tN,EAAOx8O,GAAG,OACZw8O,EAAOxnO,YAAY,qCAAuCwnO,EAAOvoO,OAAS,UAC1EuoO,EAASriR,KAAK6+Q,IAAIrjP,KAAK,yBACvBx7B,KAAKiiR,KAAK9B,UAAUkC,IAEtBA,EAAOp6N,SAAS,+EAChBjoD,KAAKsiR,kBAAkB,CACrBnpR,OAAQkpR,EAAOloR,IAAI,KAErBkoR,EAAOvsO,QACP91C,KAAKiiR,KAAK7C,aACZ,EASA4C,EAAOtrR,UAAU4rR,kBAAoB,SAAU/qR,GAC7C,IAEE64H,EACAmwJ,EACAzsP,EAJEuuP,EAAS5tN,EAAEl9D,EAAE4B,QACf64C,EAAY12C,EAAOq1H,eAIhB3+E,GAAsC,IAAzBA,EAAU4+E,aAG5BR,EAAQp+E,EAAU6+E,WAAW,IAC7B0vJ,EAAW9rN,EAAE27D,EAAMU,0BACNroE,SAAS,+BACpB45N,EAAS9B,EACAA,EAASx5O,QAAQ,gCAAgCvwC,SAC1D6rR,EAAS9B,EAASx5O,QAAQ,iCAExBs7O,EAAO55N,SAAS,+BAEL,MADb30B,EAAOuuP,EAAOvuP,OAAOwgC,UACsD,IAAxD+tN,EAAO55N,SAAS,oCACjC45N,EAAOp6N,SAAS,oCAAoCtpB,KAAK,mBAAoB3+B,KAAK41B,QAAQ22E,aACxE,KAATz4E,GAAeuuP,EAAO55N,SAAS,qCACxC45N,EAAOh6N,YAAY,oCAAoCjB,WAAW,oBAGpEpnD,KAAK6+Q,IAAIrjP,KAAK,gCAAgC0N,SAElD,EASA84O,EAAOtrR,UAAU6rR,2BAA6B,SAAUhrR,GACtDyI,KAAKiiR,KAAK9B,UAAU1rN,EAAEl9D,EAAE4B,QAC1B,EASA6oR,EAAOtrR,UAAU8rR,YAAc,SAAUjrR,GACvC,IACEy0D,EADEq2N,EAASriR,KAAK6+Q,IAAIrjP,KAAK,gCAEtB6mP,EAAO7rR,SAMA,MAHZw1D,EAAMq2N,EAAOvuP,OAAOwgC,UAGgC,IAAlC,CAAC,EAAG,GAAI,IAAIxnD,QAAQvV,EAAE0gD,OAIxB,KAAZ1gD,EAAE0gD,QACJ1gD,EAAEg8C,iBACFh8C,EAAE87C,kBACErzC,KAAK41B,QAAQ6rP,YACfzhR,KAAKyiR,OAAOz2N,GAEZhsD,KAAK0iR,SAAS12N,IAThBq2N,EAAOn5O,SAYX,EASA84O,EAAOtrR,UAAUisR,cAAgB,SAAUprR,GACzC,IAAIqrR,EACAnuN,EAAE,gCAAgCj+D,SAGtCosR,EAAYrrR,EAAEm+C,cAAci0F,cAAc77F,QAAQ,QACtC,IAAIrrC,OAAO,kBAAqB,KAC9BoD,KAAK+8Q,KACb5iR,KAAK41B,QAAQ6rP,YACfzhR,KAAKyiR,OAAOG,GAAW,GAEvB5iR,KAAK0iR,SAASE,GAAW,IAG/B,EASAZ,EAAOtrR,UAAU+rR,OAAS,SAAUz2N,EAAK62N,GACvC,IAAI/7P,EAAO9mB,KACXy0D,EAAErhC,QAAQq9B,MAAO,EACjBgE,EAAE5H,KAAK,CACLyB,aAAa,EACb5xB,OAAO,EACPsvB,IAAKhsD,KAAK41B,QAAQ6rP,YAClBv2N,SAAU,OACVj1D,KAAM,CACJ+1D,IAAKA,GAEP4C,QAAS,SAAU34D,GACjB,IAAI6jD,EAAO7jD,GAAQA,EAAK6jD,KACpBhzB,EAAK8O,QAAQgsP,YACf9nO,GAAQ,mEAAqElM,KAAKg7B,UAAU3yE,GAAQ,oBAElGA,IAAS6jD,GAAsB,UAAd7jD,EAAKgD,MAAoBhD,EAAK+1D,MACjDlS,EAAO,aAAe7jD,EAAK+1D,IAAM,aAE9BlS,EAKD+oO,EACFpuN,EAAER,MAAMntC,EAAM,QAASgzB,EAAMkS,EAA7ByI,GAEAA,EAAER,MAAMntC,EAAM,QAASgzB,EAAvB2a,GANAA,EAAER,MAAMntC,EAAM,kBAAmBklC,EAAjCyI,EAQJ,EACAh8D,MAAO,SAAU4yD,EAAOy3N,EAAYC,GAClC,IAAIC,EAAe,WACjB,IACE,OAAOp1O,KAAKC,MAAMwd,EAAM6F,aAC1B,CAAE,MAAO35D,GAAI,CACf,CAJmB,GAKW,qBAAnB+D,EAAOF,QAChBE,EAAOF,QAAQ48I,IAAIgrI,GAAgBA,EAAavqR,OAAS4yD,EAAM6C,QAAU60N,EAAY3pR,SAErFkC,EAAO68I,MAAM,+BAAiCrxH,EAAK8O,QAAQ6rP,YAAc,eAAiBsB,EAAc,sBAAwB13N,EAAM6C,OAAS,KAEjJuG,EAAER,MAAMntC,EAAM,kBAAmBklC,EAAjCyI,EACF,GAEJ,EAUAutN,EAAOtrR,UAAUgsR,SAAW,SAAU12N,EAAK62N,GACzC,IAAI/oO,EACJ,OAAK,IAAIr3C,OAAO,CAAC,UAAW,WAAY,QAAS,YAAa,UAAW,YAAYV,KAAK,MAAM8D,KAAKmmD,IAIrGlS,EAAOkS,EAAI5mD,QAAQ,OAAQ,IAAIA,QAAQ,+FAAgG,sJAAsJA,QAAQ,2CAA4C,8LAA8LA,QAAQ,oDAAqD,6MAA4MA,QAAQ,yCAA0C,2NAA0NA,QAAQ,0CAA2C,uKACnlCpF,KAAK41B,QAAQgsP,YACf9nO,GAAQ,mEAAqElM,KAAKg7B,UAAU,CAAC,GAAK,qBAEnD,IAA7C,8BAA8B/iE,KAAKi0C,IACrC2a,EAAER,MAAMj0D,KAAM,kBAAmBgsD,EAAjCyI,IACO,QAELouN,EACF7iR,KAAKijR,MAAMnpO,EAAMkS,GAEjBhsD,KAAKijR,MAAMnpO,MAdX2a,EAAER,MAAMj0D,KAAM,kBAAmBgsD,EAAjCyI,IACO,EAeX,EAUAutN,EAAOtrR,UAAUusR,MAAQ,SAAUnpO,EAAM8oO,GACvC,IACEM,EADEb,EAASriR,KAAK6+Q,IAAIrjP,KAAK,gCAE3B,IAAKse,EAEH,OADAq+F,MAAM,mCACC,EAEHr+F,EAAKhtC,QAAQ,eAAgB,IAG/Bo2Q,EAAOzuN,EAAE,SAAS91B,KAAK,kBAAmB81B,EAAE,WAAW3gC,KAAKgmB,GAAMA,QAAQA,KAAKA,GAC/EA,EAAO2a,EAAE,SAASja,OAAO0oO,GAAMppO,QAE7B8oO,IAGFP,EAASriR,KAAK6+Q,IAAIrjP,KAAK,+BAA+BkL,WAAWlhB,QAAO,WACtE,OAAyB,IAAlBxlB,KAAKqzB,UAAkBrzB,KAAKw2B,YAAY1pB,QAAQ81Q,IAAc,CACvE,IAAGxiP,UACIwa,MAAM56C,KAAK28M,UAAU,uCAAuC,CACjE7iK,KAAMA,KAERuoO,EAAOvuP,KAAKuuP,EAAOvuP,OAAO1uB,QAAQw9Q,EAAW,OAE7CP,EAAOznO,MAAM56C,KAAK28M,UAAU,uCAAuC,CACjE7iK,KAAMA,KAERuoO,EAAOn5O,UAETlpC,KAAKiiR,KAAKpC,gBACwB,IAA9B/lO,EAAKhtC,QAAQ,aACG,qBAAPq2Q,IACT3pR,YAAW,WACT2pR,GAAGC,MAAMv1O,OACX,GAAG,IAIX,EAUAm0O,EAAOtrR,UAAU2sR,gBAAkB,SAAU77O,GAC3C,IAAI66O,EACFiB,EACAC,EACAC,EAAgBxjR,KAAK28M,UAAU,0CAA0CroJ,OAC3E+tN,EAASriR,KAAK6+Q,IAAIrjP,KAAK,gCAGvB+nP,EAAW9uN,EAAE+uN,GACbnB,EAAO1nO,OAAO4oO,GACdlB,EAAOn5O,SACPq6O,EAASzpO,KAAKtS,GAGd87O,EAAS7uN,EAAE+uN,GACXD,EAAS3oO,MAAM0oO,GACftjR,KAAKiiR,KAAKpC,eACV7/Q,KAAKiiR,KAAK9B,UAAUmD,EACtB,EASAtB,EAAOtrR,UAAU+sR,YAAc,SAAUlsR,GACvC,IACEmsR,EADE58P,EAAO9mB,KAEPA,KAAKiiR,KAAKrsP,QAAQ6L,WACpBiiP,EAASjvN,EAAEl9D,EAAE4B,QAAQsvD,SAAS,wBAA0BgM,EAAEl9D,EAAE4B,QAAUs7D,EAAEl9D,EAAE4B,QAAQ4tC,QAAQ,0BACnFkhB,SAAS,iCAChBzuD,YAAW,WACTstB,EAAK68P,aACD78P,EAAK8O,QAAQ8rP,UACf56P,EAAKm7P,KAAKf,WAAWwC,EAAOloP,KAAK,UAAW1U,EAAK8O,QAAQ+rP,mBAE7D,GAAG,IAEP,EASAK,EAAOtrR,UAAUktR,cAAgB,SAAUrsR,GACzC,IAAIsnR,EAAMpqN,EAAEl9D,EAAE4B,QAAQsvD,SAAS,wBAA0BgM,EAAEl9D,EAAE4B,QAAUs7D,EAAEl9D,EAAE4B,QAAQ4tC,QAAQ,yBACzF28O,EAAS1jR,KAAK6+Q,IAAIrjP,KAAK,kCACzB,GAAIqjP,EAAIp2N,SAAS,iCAQf,OAPAi7N,EAAO/iP,IAAIk+O,GAAKx2N,YAAY,iCAC5BoM,EAAE,iEAAiEvrB,SACnElpC,KAAKiiR,KAAKd,eAAetC,EAAIrjP,KAAK,qBAC9Bi5B,EAAEl9D,EAAE4B,QAAQ0sC,GAAG,uCAAyC4uB,EAAEl9D,EAAE4B,QAAQ0sC,GAAG,iBACzEg5O,EAAIx2N,YAAY,iCAChBroD,KAAKiiR,KAAKX,yBAAyBzC,EAAIrjP,KAAK,aAIhDkoP,EAAOr7N,YAAY,iCACnBoM,EAAE,iEAAiEvrB,SAC/DurB,EAAEl9D,EAAE4B,QAAQ0sC,GAAG,sCACjB7lC,KAAKiiR,KAAKX,yBAAyBzC,EAAIrjP,KAAK,YACF,IAAjCi5B,EAAEl9D,EAAE4B,QAAQ0sC,GAAG,eACxB7lC,KAAKiiR,KAAKd,gBAEd,EASAa,EAAOtrR,UAAUmtR,YAAc,SAAUtsR,GACvC,IAAImsR,EAAQJ,EACI,IAAZ/rR,EAAE0gD,OAA2B,KAAZ1gD,EAAE0gD,QACrByrO,EAAS1jR,KAAK6+Q,IAAIrjP,KAAK,mCACZhlC,SACTe,EAAEg8C,iBACFkhB,EAAE,iEAAiEvrB,SACnEo6O,EAAS7uN,EAAEz0D,KAAK28M,UAAU,0CAA0CroJ,QACpEovN,EAAO/oO,OAAO2oO,GACdI,EAAOx6O,SAGPlpC,KAAKiiR,KAAKnB,aACV9gR,KAAKiiR,KAAK9B,UAAUmD,GACpBtjR,KAAKiiR,KAAKpC,eAGhB,EAQAmC,EAAOtrR,UAAUitR,WAAa,WAC5B,IAEEG,EACAC,EAEAC,EALEN,EAAS1jR,KAAK6+Q,IAAIrjP,KAAK,kCACzBqwB,GAAS,EAKW,IAAlB63N,EAAOltR,SAIXwtR,EADehkR,KAAKiiR,KAAKtC,YACO/pP,QAAQguG,mBAAqB,OAC7DnvE,EAAEuvN,GAAkBxpO,OAAOx6C,KAAK28M,UAAU,uCAAuC,CAC/El9J,OAAQz/C,KAAK41B,QAAQ6pB,OACrBg/J,QAASz+M,KAAK41B,QAAQ6oL,UACrBnqJ,QACHwvN,EAAWrvN,EAAE,iCACbsvN,EAAYtvN,EAAE,kCACdqvN,EAAStoP,KAAK,UAAUtG,MAAK,WACvBwuP,EAAOj7N,SAAS,wBAA0BgM,EAAEz0D,MAAM/J,KAAK,aACzDw+D,EAAEz0D,MAAMioD,SAAS,+BACjB4D,GAAS,EAEb,KACe,IAAXA,GACFi4N,EAAStoP,KAAK,UAAUrG,QAAQ8yB,SAAS,+BAE3CjoD,KAAKikR,qBACLH,EAASp9N,SACTq9N,EAAUr9N,SACZ,EACAs7N,EAAOtrR,UAAUwtR,uBAAyB,WACxC1qR,WAAW,WACTwG,KAAKikR,qBACLjkR,KAAKikR,oBACP,EAAEnpR,KAAKkF,MAAO,EAChB,EACAgiR,EAAOtrR,UAAUutR,mBAAqB,WACpC,IAAIH,EAAWrvN,EAAE,iCACfsvN,EAAYtvN,EAAE,kCACdivN,EAAS1jR,KAAK6+Q,IAAIrjP,KAAK,kCACvBooG,EAAoB5jI,KAAKiiR,KAAKtC,YAAY/pP,QAAQguG,kBAClDC,EAA4B,CAAC,WAAY,SAAS/2H,QAAQxR,EAAOmgD,iBAAiBmoF,GAAmBznF,iBAAiB,cAAgB,EACtIonF,EAA4BM,EAA4BD,EAAkB5hF,wBAA0B,KACpGwhF,EAAiB/uE,EAAEn5D,GAAQygD,QAC3BoB,EAAW,CAAC,EACV4mO,EAAUvtR,SACZ2mD,EAASzf,IAAMgmP,EAAOliQ,SAASkc,IAAM,EACrCyf,EAAS+E,KAAOwhO,EAAOliQ,SAAS0gC,KAAOwhO,EAAO3nO,QAAUgoO,EAAUhoO,QAAU,EAExE8nF,IACF1mF,EAASzf,KAAOkmG,EAAkB9gF,UAAYygF,EAA0B7lG,IACxEyf,EAAS+E,MAAQqhF,EAA0BrhF,KAC3CshF,EAAiB/uE,EAAEmvE,GAAmB7nF,SAEpCoB,EAAS+E,KAAO6hO,EAAUhoO,QAAUynF,IACtCrmF,EAAS+E,KAAOshF,EAAiBugJ,EAAUhoO,SAE7CgoO,EAAU50O,IAAIgO,IAEZ2mO,EAASttR,SACX2mD,EAAS+E,KAAOwhO,EAAOliQ,SAAS0gC,KAAOwhO,EAAO3nO,QAAU,EAAI+nO,EAAS/nO,QAAU,EAC/EoB,EAASzf,IAAMgmP,EAAOliQ,SAASkc,IAAMomP,EAAS5lO,SAAW,EAAI,EAAI,EAE7D2lF,IACF1mF,EAASzf,KAAOkmG,EAAkB9gF,UAAYygF,EAA0B7lG,IACxEyf,EAAS+E,MAAQqhF,EAA0BrhF,MAEzC/E,EAASzf,IAAM,IACjByf,EAASzf,IAAM,GAEjBomP,EAAS30O,IAAIgO,GAEjB,EASA6kO,EAAOtrR,UAAUytR,cAAgB,SAAU5sR,GACzC,IAAI6sR,EAAU3vN,EAAEl9D,EAAE4B,QAAQ0sC,GAAG,UAAY4uB,EAAEl9D,EAAE4B,QAAUs7D,EAAEl9D,EAAE4B,QAAQ4tC,QAAQ,UACzEs9O,EAAMD,EAAQr9O,QAAQ,MAEtBu9O,EADMD,EAAIt9O,QAAQ,MACPvL,KAAK,MAChBkoP,EAAS1jR,KAAK6+Q,IAAIrjP,KAAK,kCACvB1U,EAAO9mB,KACTokR,EAAQn8N,SAAS,+BACjBo8N,EAAIv+O,WAAWtK,KAAK,gCAAgC6sB,YAAY,+BAChEi8N,EAAK9oP,KAAK,UAAUtG,MAAK,WACvB,IAAIkJ,EAAY,wBAA0Bq2B,EAAEz0D,MAAM/J,KAAK,UACnDw+D,EAAEz0D,MAAMyoD,SAAS,gCACnBi7N,EAAOz7N,SAAS7pB,IACXtX,EAAK8O,QAAQ6pB,OAAOgV,EAAEz0D,MAAM/J,KAAK,YAAc,CAAC,GAAGs+O,OACtDztN,EAAK8O,QAAQ6pB,OAAOgV,EAAEz0D,MAAM/J,KAAK,WAAWs+O,MAAMmvC,KAGpDA,EAAOr7N,YAAYjqB,IACdtX,EAAK8O,QAAQ6pB,OAAOgV,EAAEz0D,MAAM/J,KAAK,YAAc,CAAC,GAAG+5J,SACtDlpI,EAAK8O,QAAQ6pB,OAAOgV,EAAEz0D,MAAM/J,KAAK,WAAW+5J,QAAQ0zH,GAG1D,IACA1jR,KAAKiiR,KAAKpC,cACZ,EASAmC,EAAOtrR,UAAU6tR,eAAiB,SAAUhtR,GAC1C,IAAI6sR,EAAU3vN,EAAEl9D,EAAE4B,QAAQ0sC,GAAG,UAAY4uB,EAAEl9D,EAAE4B,QAAUs7D,EAAEl9D,EAAE4B,QAAQ4tC,QAAQ,UACzE/qC,GAAYgE,KAAK41B,QAAQ6oL,QAAQ2lE,EAAQnuR,KAAK,YAAc,CAAC,GAAG6yK,QAC9D9sK,GACFA,EAASgE,KAAK6+Q,IAAIrjP,KAAK,mCAEzBx7B,KAAKiiR,KAAKpC,cACZ,EAIAprN,EAAEt3D,GAAGqhR,EAAawB,GAAa,SAAUpqP,GACvC,OAAO51B,KAAKk1B,MAAK,WACVu/B,EAAEx+D,KAAK+J,KAAM,UAAYw+Q,EAAawB,IACzCvrN,EAAEx+D,KAAK+J,KAAM,UAAYw+Q,EAAawB,EAAW,IAAIgC,EAAOhiR,KAAM41B,GAEtE,GACF,CACD,CAxoBD,CAwoBGxB,EAAQ94B,OAAQtD,UAKnB,SAAWy8D,EAAGn5D,EAAQtD,EAAUkyE,EAAM3wE,GACpC,aAGA,IAAIilR,EAAa,eACfwB,EAAY,SAEZhkQ,EAAW,CACTwqD,MAAO,qCACPg+M,aAAc,OACdC,aAAc,aACdC,SAAS,EACThD,UAAU,EACVC,mBAAoB,oCACpBgD,SAAU,EACVC,kBAAmB,CAEjB54N,IAAK,KACL64N,gBAAiB,4BAEnBC,kBAAmB,CAAC,EACpBrlO,OAAQ,CACNoiO,KAAM,CACJr7M,MAAO,6CAKTtkB,KAAM,CACJskB,MAAO,0CAKTxpB,MAAO,CACLwpB,MAAO,2CAKT69G,KAAM,CACJ79G,MAAO,mCAMXi4I,QAAS,CACPv1K,OAAQ,CACNs9B,MAAO,oCACPsiG,QAAS,WACP,IAAIg5G,EAASrtN,EAAEhf,MAAM,WACrBqsO,EAAO7pO,MAAQ,EACfwc,EAAEz8D,GAAUw7C,QAAQsuO,EACtB,IAGJiD,QAAS,WACP,IAAIj+P,EAAO9mB,KACXy0D,EAAE,yBAAyBuzH,SAAS,CAClC3H,MAAO,uBACP2kG,kBAAmB,wBACnBvzL,aAAc,SACd8a,YAAa,+BACbr4D,OAAQ,MACRu3H,QAAQ,EACRxS,UAAU,EACVgsH,UAAW,WACTn+P,EAAKm7P,KAAKpC,cACZ,GAEJ,EACAtwG,SAAU,CACR21G,qBAAsB,2CACtBC,iBAAkB,2BAiBxB,SAASC,EAAOtoP,EAAIlH,GAClB51B,KAAK88B,GAAKA,EACV98B,KAAK6+Q,IAAMpqN,EAAE33B,GACb98B,KAAKqlR,cAAgB,KACrBrlR,KAAK28M,UAAYrhN,EAAOwjR,aAAaC,UACrC/+Q,KAAKiiR,KAAOjiR,KAAK6+Q,IAAI5oR,KAAK,UAAYuoR,GACtCx+Q,KAAK41B,QAAU6+B,EAAEn3D,QAAO,EAAM,CAAC,EAAG0e,EAAU4Z,GAC5C51B,KAAKo0K,UAAYp4J,EACjBhc,KAAKg/Q,MAAQR,EAGTx+Q,KAAK41B,QAAQ8uP,UAAYppR,EAAO2sI,aAClCjoI,KAAK41B,QAAQ8uP,SAAU,GAIrB1kR,KAAKiiR,KAAKtC,cACZ3/Q,KAAKiiR,KAAKtC,YAAY2F,oBAAsBtlR,KAAKiiR,KAAKtC,YAAYv1N,UAClEpqD,KAAKiiR,KAAKtC,YAAYv1N,UAAYpqD,KAAKq/Q,iBAEzCr/Q,KAAKu0B,MACP,CAQA6wP,EAAO1uR,UAAU69B,KAAO,WACtB,IAAIgxP,EAAUvlR,KAAK6+Q,IAAIrjP,KAAK,yBAC5B+pP,EAAQ/pP,KAAK,cAAcmD,KAAK,mBAAmB,GACnD4mP,EAAQ/pP,KAAK,UAAUmD,KAAK,mBAAmB,GAC/C3+B,KAAK4zC,SACL5zC,KAAKoiR,yBACLpiR,KAAK+kR,SACP,EAQAK,EAAO1uR,UAAUk9C,OAAS,WACxB6gB,EAAEz8D,GAAU26C,GAAG,QAAS8hB,EAAER,MAAMj0D,KAAM,kBAAkB2yC,GAAG,UAAW8hB,EAAER,MAAMj0D,KAAM,gBAAgB2yC,GAAG,QAAS,sDAAuD8hB,EAAER,MAAMj0D,KAAM,kBAAkB2yC,GAAG,QAAS,uDAAwD8hB,EAAER,MAAMj0D,KAAM,mBACzRA,KAAK6+Q,IAAIlsO,GAAG,QAAS,4BAA6B8hB,EAAER,MAAMj0D,KAAM,gBAChEy0D,EAAEn5D,GAAQq3C,GAAG,SAAU8hB,EAAER,MAAMj0D,KAAM,0BACvC,EAQAolR,EAAO1uR,UAAU0rR,uBAAyB,WACxCpiR,KAAK6+Q,IAAIrjP,KAAK,iBAAiB6sB,YAAY,gBAAgBJ,SAAS,wBACpEjoD,KAAK6+Q,IAAIrjP,KAAK,+BAA+B6sB,YAAY,SAASJ,SAAS,4BAC7E,EAQAm9N,EAAO1uR,UAAU2oR,gBAAkB,WACjC,IAAIppR,EAAO+J,KAAKslR,sBAOhB,OANA7wN,EAAEv/B,KAAKj/B,GAAM,SAAU4E,GACrB,IAAI+kR,EAAQnrN,EAAE,WAAW3a,KAAK7jD,EAAK4E,GAAKN,OACxCqlR,EAAMpkP,KAAK,yBAAyBA,KAAK,sBAAsB4rB,WAAW,mBAC1Ew4N,EAAMpkP,KAAK,kCAAkC0N,SAC7CjzC,EAAK4E,GAAKN,MAAQqlR,EAAM9lO,MAC1B,IACO7jD,CACT,EAQAmvR,EAAO1uR,UAAU4b,IAAM,WACrB,IAAIwU,EAAO9mB,KACTwlR,EAAQ/wN,EAAEz0D,KAAK28M,UAAU,6CACzBioE,EAAoB,CAClB15N,SAAU,OACV54C,IAAK,SAAU/a,EAAGtB,GAChBw+D,EAAER,MAAMntC,EAAM,YAAavvB,EAAGtB,EAA9Bw+D,EACF,EACA57B,KAAM,SAAUthC,EAAGtB,GACjBw+D,EAAER,MAAMntC,EAAM,aAAcvvB,EAAGtB,EAA/Bw+D,EACF,IAOA,IAAInE,gBAAiBm1N,SACvBb,EAAkB56O,SAAW,SAAUzyC,EAAGtB,GACxCw+D,EAAER,MAAMntC,EAAM,iBAAkBvvB,EAAGtB,EAAnCw+D,EACF,EACAmwN,EAAkBc,YAAc,SAAUnuR,EAAGtB,GAC3Cw+D,EAAER,MAAMntC,EAAM,oBAAqBvvB,EAAGtB,EAAtCw+D,EACF,GAEF+wN,EAAMG,WAAWlxN,EAAEn3D,QAAO,EAAM,CAAC,EAAG0C,KAAK41B,QAAQgvP,kBAAmBA,IACpEY,EAAM1vO,OACR,EAWAsvO,EAAO1uR,UAAUkvR,UAAY,SAAUruR,EAAGtB,GACxC,IAME4vR,EANExD,EAASriR,KAAK6+Q,IAAIrjP,KAAK,yBACzB1U,EAAO9mB,KACP8lR,EAAe,GACfxjP,EAAOrsC,EAAK4xI,MAAM,GAClBg9I,EAAkB7kR,KAAK41B,QAAQgvP,kBAAkBC,gBACjDkB,EAAc/lR,KAAK41B,QAAQgvP,kBAAkBmB,YAO/C,GALIlB,IAAoBA,EAAgBh/Q,KAAKy8B,EAAKrpC,MAChD6sR,EAAahvR,KAAKkJ,KAAK41B,QAAQ25I,SAAS21G,qBAAuB5iP,EAAKjpC,MAC3D0sR,GAAezjP,EAAKq5B,KAAOoqN,GACpCD,EAAahvR,KAAKkJ,KAAK41B,QAAQ25I,SAAS41G,iBAAmB7iP,EAAKjpC,MAE9DysR,EAAatvR,OAAS,EACxB,OAAIwJ,KAAK41B,QAAQowP,cAAqD,oBAA9BhmR,KAAK41B,QAAQowP,kBACnDhmR,KAAK41B,QAAQowP,aAAaF,EAAc7vR,QAG1CkiJ,MAAM2tI,EAAa/jR,KAAK,OAG1B/B,KAAKiiR,KAAK7C,cAGNiD,EAAOx8O,GAAG,OACZw8O,EAAOxnO,YAAY,qCAAuCwnO,EAAOvoO,OAAS,WAC1EuoO,EAASriR,KAAK6+Q,IAAIrjP,KAAK,0BACZ7jB,OAAOkuB,GAAG,MAGnBw8O,EAAOznO,MAAM,eAFb56C,KAAKiiR,KAAK9B,UAAUkC,EAAO1qQ,SAM/B0qQ,EAAOp6N,SAAS,yBACa,IAAzBjoD,KAAK41B,QAAQ8uP,SAAwD,IAAnCrC,EAAO7mP,KAAK,YAAYhlC,SAAgB,IAAI85D,gBAAiBm1N,QACjGpD,EAAO7nO,OAAOx6C,KAAK28M,UAAU,+CAE3B1mN,EAAKgwR,aAAkC,IAApBhwR,EAAKgwR,YAAwBxxN,EAAEl9D,EAAE4B,QAAQwsR,WAAW,SAAU,gBACnF1vR,EAAK40C,UAAUhS,MAAK,WAEd/R,EAAK8O,QAAQ8uP,SACfmB,EAAa7tR,EAASC,cAAc,OACpCqD,EAAO2gG,IAAM3gG,EAAO2gG,KAAO3gG,EAAO8sH,UAClCy9J,EAAWvtR,IAAMgD,EAAO2gG,IAAImtB,gBAAgBnzH,EAAK4xI,MAAM,IACvDg+I,EAAWhtR,OAAS,WAClB47D,EAAER,MAAMntC,EAAM,YAAa9mB,KAAK1H,IAAKrC,EAArCw+D,GACAj7D,YAAW,WACT8B,EAAO2gG,IAAIqtB,gBAAgBtpH,KAAK1H,IAClC,GACF,GAEArC,EAAKwsC,QAET,GAEJ,EAWA2iP,EAAO1uR,UAAUwvR,kBAAoB,SAAU3uR,EAAGtB,GAChD,IAAI+zC,EAAUm8O,GACe,IAAzBnmR,KAAK41B,QAAQ8uP,UACf16O,EAAW35B,SAASpa,EAAK4kG,OAAS5kG,EAAK27B,MAAQ,IAAK,KACpDu0P,EAAenmR,KAAK6+Q,IAAIrjP,KAAK,yBAAyBA,KAAK,aAC9CmD,KAAK,QAASqL,GAAUlW,KAAKkW,GACzB,MAAbA,GACFm8O,EAAaj9O,SAGnB,EAWAk8O,EAAO1uR,UAAU0vR,eAAiB,SAAU7uR,EAAGtB,GAC7C,IAAI+zC,EAAUm8O,EACVnmR,KAAK41B,QAAQ8uP,UACf16O,EAAW,IAAM35B,SAASpa,EAAK4kG,OAAS5kG,EAAK27B,MAAQ,IAAK,KAC1Du0P,EAAelwR,EAAKq+B,QAAQkH,KAAK,mCACpB2T,IAAI,QAASnF,EAAW,KACpB,IAAbA,GACFm8O,EAAaj9O,SAGnB,EAWAk8O,EAAO1uR,UAAU2vR,WAAa,SAAU9uR,EAAGtB,GACzCw+D,EAAER,MAAMj0D,KAAM,YAAa/J,EAAK8kB,OAAO8sH,MAAM,GAAG77E,IAAK/1D,EAArDw+D,GACAz0D,KAAKiiR,KAAKvC,QACV1/Q,KAAK+kR,SACP,EASAK,EAAO1uR,UAAU4vR,UAAY,SAAU5hM,EAAKzuF,GAC1C,IACEswR,EACAz/P,EAFEu7P,EAASriR,KAAK6+Q,IAAIrjP,KAAK,yBA8C3B,OAzCA6mP,EAAOvsO,QAIPhvB,EAAO9mB,KACHA,KAAK41B,QAAQ8uP,SAAWzuR,EAAKq+B,UAC/BiyP,EAAWvmR,KAAKwmR,eACP3tR,OAAS,WAChB5C,EAAKq+B,QAAQkH,KAAK,OAAOmD,KAAK,MAAO+lD,GACjC1kF,KAAK41B,QAAQ6wP,iBACfzmR,KAAK41B,QAAQ6wP,gBAAgBxwR,EAAKq+B,QAASr+B,GAE7C6wB,EAAKm7P,KAAKpC,cACZ,EAAE/kR,KAAKkF,MACPumR,EAASjuR,IAAMosF,IAEfzuF,EAAKq+B,QAAUmgC,EAAEz0D,KAAK28M,UAAU,qCAAqC,CACnEj4H,IAAKA,EACL16C,SAAUhqC,KAAK41B,QAAQ8uP,WACrB3pO,SAASsnO,GACbA,EAAO7mP,KAAK,MAAM0N,SACdlpC,KAAK41B,QAAQ+uP,UAAYtC,EAAO7mP,KAAK,UAAUhlC,QAAUwJ,KAAK41B,QAAQ+uP,WACxElwN,EAAEv/B,KAAKl1B,KAAK41B,QAAQ6pB,QAAQ,SAAUxQ,EAAOrZ,GAC3C,IAAIwI,EAAY,wBAA0B6Q,EAC1CozO,EAAOh6N,YAAYjqB,GACfxI,EAAQo6H,SACVp6H,EAAQo6H,QAAQqyH,EAEpB,IACAA,EAAOp6N,SAAS,6BACZjoD,KAAK41B,QAAQ6pB,OAAO4kI,KAAKkwD,OAC3Bv0O,KAAK41B,QAAQ6pB,OAAO4kI,KAAKkwD,MAAM8tC,IAG/BriR,KAAK41B,QAAQ8uP,QACfzuR,EAAKwsC,SACIziC,KAAK41B,QAAQ6wP,iBACtBzmR,KAAK41B,QAAQ6wP,gBAAgBxwR,EAAKq+B,QAASr+B,IAG/C+J,KAAKiiR,KAAKpC,eACH5pR,EAAKq+B,OACd,EACA8wP,EAAO1uR,UAAU8vR,YAAc,WAC7B,OAAO,IAAIlrR,EAAO6jP,KACpB,EASAimC,EAAO1uR,UAAUgwR,YAAc,SAAUnvR,GACvC,IACEovR,EADE7/P,EAAO9mB,KAEPA,KAAKiiR,KAAKrsP,QAAQ6L,UACpBklP,EAASlyN,EAAEl9D,EAAE4B,QACb6G,KAAKqlR,cAAgBsB,EAGrB3mR,KAAK6+Q,IAAI3mO,OACTyuO,EAAO1+N,SAAS,8BAChB0+N,EAAO5/O,QAAQ,yBAAyBkhB,SAAS,wBACjDzuD,YAAW,WACTstB,EAAK68P,aACD78P,EAAK8O,QAAQ8rP,UACf56P,EAAKm7P,KAAKf,WAAWyF,EAAO5/O,QAAQ,UAAWjgB,EAAK8O,QAAQ+rP,mBAEhE,GAAG,IAEP,EASAyD,EAAO1uR,UAAUkwR,cAAgB,SAAUrvR,GACzC,IAAIsnR,EAAMpqN,EAAEl9D,EAAE4B,QACZwtR,EAAS3mR,KAAK6+Q,IAAIrjP,KAAK,+BACzB,GAAIqjP,EAAIh5O,GAAG,QAAUg5O,EAAIp2N,SAAS,8BAIhC,OAHAk+N,EAAOhmP,IAAIk+O,GAAKx2N,YAAY,8BAC5BoM,EAAE,iEAAiEvrB,cACnElpC,KAAKiiR,KAAKd,eAAetC,GAG3B8H,EAAOt+N,YAAY,8BACnBoM,EAAE,iEAAiEvrB,SAC/D21O,EAAIh5O,GAAG,sCACT7lC,KAAKiiR,KAAKX,yBAAyBqF,EAAO5/O,QAAQ,YAChB,IAAzB83O,EAAIh5O,GAAG,eAChB7lC,KAAKiiR,KAAKd,iBAEZnhR,KAAKqlR,cAAgB,IACvB,EASAD,EAAO1uR,UAAUmwR,YAAc,SAAUtvR,GACvC,IAEEuvR,EACAxD,EACAtxO,EAEAwd,EACAu3N,EACAxG,EACAyG,EACAC,EACA3wR,EAXEmoR,EAAS,GACXyI,EAAiBlnR,KAAK6+Q,IAAIrjP,KAAK,+BAWjC,IAAgB,IAAZjkC,EAAE0gD,OAA2B,KAAZ1gD,EAAE0gD,SACjBivO,EAAe1wR,QACjBioR,EAAO3nR,KAAKowR,IAIdl1O,EAAY12C,EAAOq1H,iBACF3+E,EAAU4+E,aAGzB2vJ,EAAgC,WADhC/wN,EADQxd,EAAU6+E,WAAW,GACbC,yBACGr8F,UAA6C,OAArB+6B,EAAQ/6B,SAAoBggC,EAAEjF,GAASpvB,SAAWq0B,EAAEjF,GAC/Fu3N,EAAgB77J,EAAal5E,UAAUqnF,gBAAgB7pE,GAAStN,KAGhD,IAAZ3qD,EAAE0gD,OAAiC,IAAlB8uO,EACnBC,EAAWzG,EAAS55O,OAEC,KAAZpvC,EAAE0gD,OAAgB8uO,IAAkBxG,EAASzsP,OAAOt9B,SAC7DwwR,EAAWzG,EAAS5oQ,QAElBqvQ,GAAYA,EAASv+N,SAAS,yBAChCg2N,EAAO3nR,KAAKkwR,EAASxrP,KAAK,SAI5ByrP,EAAe/7J,EAAal5E,UAAUmnF,iBAAiBnhI,KAErDy8D,EAAE,eAAe3a,KAAKmtO,GAAczrP,KAAK,6BAA6BtG,MAAK,WACzEupP,EAAO3nR,KAAK29D,EAAEz0D,MAChB,KAGAy+Q,EAAOjoR,QAAQ,CACjB,IAAKF,EAAI,EAAGA,EAAImoR,EAAOjoR,OAAQF,IAC7B0J,KAAKmnR,WAAW1I,EAAOnoR,GAAGqoC,KAAK,OAAQ8/O,EAAOnoR,IAC9CwwR,EAAUrI,EAAOnoR,GAAGywC,QAAQ,yBAC5B03O,EAAOnoR,GAAGywC,QAAQ,UAAUmC,SACU,IAAlC49O,EAAQtrP,KAAK,UAAUhlC,UAEF,KADvB8sR,EAASwD,EAAQnvQ,QACNkuB,GAAG,MAAoC,KAAlBy9O,EAAOxvP,SACrCwvP,EAAS7uN,EAAEz0D,KAAK28M,UAAU,0CAA0CroJ,QACpEwyN,EAAQnsO,OAAO2oO,IAEjBwD,EAAQ59O,UAKZlpC,KAAKiiR,KAAKnB,cACLmG,GAAgB3D,IACnB/rR,EAAEg8C,iBACFvzC,KAAKiiR,KAAK9B,UAAUmD,IAEtB7uN,EAAE,iEAAiEvrB,SACnElpC,KAAKiiR,KAAKpC,cACZ,CAEJ,EAUAuF,EAAO1uR,UAAUywR,WAAa,SAAU7kP,EAAMu8O,GAExC7+Q,KAAK41B,QAAQ6uP,eAE0B,oBAA9BzkR,KAAK41B,QAAQ6uP,aACtBzkR,KAAK41B,QAAQ6uP,aAAaniP,EAAMu8O,GAGhCpqN,EAAE5H,KAAK4H,EAAEn3D,QAAO,EAAM,CAAC,EAAG,CACxB0uD,IAAKhsD,KAAK41B,QAAQ6uP,aAClBxrR,KAAM+G,KAAK41B,QAAQ4uP,cAAgB,OACnCvuR,KAAM,CACJqsC,KAAMA,IAEPtiC,KAAK41B,QAAQkvP,oBAGtB,EAQAM,EAAO1uR,UAAUitR,WAAa,WAC5B,IAKEG,EACAC,EALAvD,EADWxgR,KAAK6+Q,IAAIrjP,KAAK,+BACbuL,QAAQ,yBACpB8kB,GAAS,EAETm4N,EADehkR,KAAKiiR,KAAKtC,YACO/pP,QAAQguG,mBAAqB,OAG/DnvE,EAAEuvN,GAAkBxpO,OAAOx6C,KAAK28M,UAAU,uCAAuC,CAC/El9J,OAAQz/C,KAAK41B,QAAQ6pB,OACrBg/J,QAASz+M,KAAK41B,QAAQ6oL,UACrBnqJ,QACHwvN,EAAWrvN,EAAE,iCACbsvN,EAAYtvN,EAAE,kCACdqvN,EAAStoP,KAAK,UAAUtG,MAAK,WACvBsrP,EAAG/3N,SAAS,wBAA0BgM,EAAEz0D,MAAM/J,KAAK,aACrDw+D,EAAEz0D,MAAMioD,SAAS,+BACjB4D,GAAS,EAEb,KACe,IAAXA,GACFi4N,EAAStoP,KAAK,UAAUrG,QAAQ8yB,SAAS,+BAE3CjoD,KAAKikR,qBACLH,EAASp9N,SACTq9N,EAAUr9N,QACZ,EACA0+N,EAAO1uR,UAAUwtR,uBAAyB,WACxC1qR,WAAW,WACTwG,KAAKikR,qBACLjkR,KAAKikR,oBACP,EAAEnpR,KAAKkF,MAAO,EAChB,EACAolR,EAAO1uR,UAAUutR,mBAAqB,WACpC,IAAIH,EAAWrvN,EAAE,iCACfsvN,EAAYtvN,EAAE,kCACdkyN,EAAS3mR,KAAK6+Q,IAAIrjP,KAAK,+BACvBooG,EAAoB5jI,KAAKiiR,KAAKtC,YAAY/pP,QAAQguG,kBAClDC,EAA4B,CAAC,WAAY,SAAS/2H,QAAQxR,EAAOmgD,iBAAiBmoF,GAAmBznF,iBAAiB,cAAgB,EACtIonF,EAA4BM,EAA4BD,EAAkB5hF,wBAA0B,KACpGwhF,EAAiB/uE,EAAEn5D,GAAQygD,QAC3BoB,EAAW,CAAC,EACV4mO,EAAUvtR,SACZ2mD,EAASzf,IAAMipP,EAAOnlQ,SAASkc,IAAM,EACrCyf,EAAS+E,KAAOykO,EAAOnlQ,SAAS0gC,KAAOykO,EAAO5qO,QAAUgoO,EAAUhoO,QAAU,EAExE8nF,IACF1mF,EAASzf,KAAOkmG,EAAkB9gF,UAAYygF,EAA0B7lG,IACxEyf,EAAS+E,MAAQqhF,EAA0BrhF,KAC3CshF,EAAiB/uE,EAAEmvE,GAAmB7nF,SAEpCoB,EAAS+E,KAAO6hO,EAAUhoO,QAAUynF,IACtCrmF,EAAS+E,KAAOshF,EAAiBugJ,EAAUhoO,SAE7CgoO,EAAU50O,IAAIgO,IAEZ2mO,EAASttR,SACPmwR,EAAO5/O,QAAQ,qCAAqCvwC,SACtDmwR,EAASA,EAAO5/O,QAAQ,sCAE1BoW,EAASzf,IAAMipP,EAAOnlQ,SAASkc,IAAMomP,EAAS5lO,SAAW,EAAI,EAAI,EACjEf,EAAS+E,KAAOykO,EAAOnlQ,SAAS0gC,KAAOykO,EAAO5qO,QAAU,EAAI+nO,EAAS/nO,QAAU,EAC3E8nF,IACF1mF,EAASzf,KAAOkmG,EAAkB9gF,UAAYygF,EAA0B7lG,IACxEyf,EAAS+E,MAAQqhF,EAA0BrhF,MAEzC/E,EAASzf,IAAM,IACjByf,EAASzf,IAAM,GAEjBomP,EAAS30O,IAAIgO,GAEjB,EASAioO,EAAO1uR,UAAUytR,cAAgB,SAAU5sR,GACzC,IACE6sR,EACAC,EAEAC,EACA9D,EALE15P,EAAO9mB,KAMgB,OAAvBA,KAAKqlR,gBAMTf,GAFAD,GADAD,EAAU3vN,EAAEl9D,EAAE4B,QAAQ0sC,GAAG,UAAY4uB,EAAEl9D,EAAE4B,QAAUs7D,EAAEl9D,EAAE4B,QAAQ4tC,QAAQ,WACzDA,QAAQ,OACZA,QAAQ,MACPvL,KAAK,MAChBglP,EAAKxgR,KAAK6+Q,IAAIrjP,KAAK,yBACnB4oP,EAAQn8N,SAAS,+BACjBo8N,EAAIv+O,WAAWtK,KAAK,gCAAgC6sB,YAAY,+BAChEi8N,EAAK9oP,KAAK,UAAUtG,MAAK,WACvB,IAAIkJ,EAAY,wBAA0Bq2B,EAAEz0D,MAAM/J,KAAK,UACnDw+D,EAAEz0D,MAAMyoD,SAAS,gCACnB+3N,EAAGv4N,SAAS7pB,GACRtX,EAAK8O,QAAQ6pB,OAAOgV,EAAEz0D,MAAM/J,KAAK,WAAWs+O,OAC9CztN,EAAK8O,QAAQ6pB,OAAOgV,EAAEz0D,MAAM/J,KAAK,WAAWs+O,MAAMisC,KAGpDA,EAAGn4N,YAAYjqB,GACXtX,EAAK8O,QAAQ6pB,OAAOgV,EAAEz0D,MAAM/J,KAAK,WAAW+5J,SAC9ClpI,EAAK8O,QAAQ6pB,OAAOgV,EAAEz0D,MAAM/J,KAAK,WAAW+5J,QAAQwwH,GAG1D,IACAxgR,KAAKiiR,KAAK7C,cACVp/Q,KAAKiiR,KAAKpC,eACZ,EASAuF,EAAO1uR,UAAU6tR,eAAiB,SAAUhtR,GAC1C,IAAI6sR,EAASpoR,EACc,OAAvBgE,KAAKqlR,gBAGTjB,EAAU3vN,EAAEl9D,EAAE4B,QAAQ0sC,GAAG,UAAY4uB,EAAEl9D,EAAE4B,QAAUs7D,EAAEl9D,EAAE4B,QAAQ4tC,QAAQ,WACvE/qC,EAAWgE,KAAK41B,QAAQ6oL,QAAQ2lE,EAAQnuR,KAAK,WAAW6yK,UAEtD9sK,EAASgE,KAAK6+Q,IAAIrjP,KAAK,gCAEzBx7B,KAAKiiR,KAAK7C,cACVp/Q,KAAKiiR,KAAKpC,eACZ,EAQAuF,EAAO1uR,UAAUquR,QAAU,WACzBtwN,EAAER,MAAMj0D,KAAK41B,QAAQmvP,QAAS/kR,KAA9By0D,EACF,EAIAA,EAAEt3D,GAAGqhR,EAAawB,GAAa,SAAUpqP,GACvC,OAAO51B,KAAKk1B,MAAK,WACVu/B,EAAEx+D,KAAK+J,KAAM,UAAYw+Q,EAAawB,IACzCvrN,EAAEx+D,KAAK+J,KAAM,UAAYw+Q,EAAawB,EAAW,IAAIoF,EAAOplR,KAAM41B,GAEtE,GACF,CACD,CApsBD,CAosBGxB,EAAQ94B,OAAQtD,SAAUkzH,EAAa8D,KAC5C,GAxrE+G,8B,0VCO/G/7B,IAAM9yD,QAiDN,IAAM61B,EAAc8Q,IAAY3mC,QAC1B7L,EAAU8yP,OAEhBpxN,EAAYpgB,KAAK+wJ,YAAuBryK,IAKxC3B,EAAO8hC,EAAIA,IACXn5D,OAAO84B,OAASqgC,IAChBn5D,OAAOm5D,EAAIA,G,iDC5EX,IAAI9hC,EAAS,EAAQ,GACjBw+H,EAAc,EAAQ,IACtBk2H,EAAwB,EAAQ,KAChCC,EAAc,EAAQ,KACtBrxI,EAAQ,EAAQ,IAGhBxzI,EAASkwB,EAAOlwB,OAChB8kR,EAAkB9kR,EAAO/L,UAEhBy6J,GAAelb,GAAM,WAChC,IAAIuxI,GAAkB,EACtB,IACE/kR,EAAO,IAAK,IACd,CAAE,MAAOhK,GACP+uR,GAAkB,CACpB,CAEA,IAAI11H,EAAI,CAAC,EAEL21H,EAAQ,GACRC,EAAWF,EAAkB,SAAW,QAExCG,EAAY,SAAU9sR,EAAK49F,GAE7BhiG,OAAOwD,eAAe63J,EAAGj3J,EAAK,CAAEV,IAAK,WAEnC,OADAstR,GAAShvL,GACF,CACT,GACF,EAEI/3B,EAAQ,CACVknN,OAAQ,IACRj1P,OAAQ,IACRk1P,WAAY,IACZt8I,UAAW,IACXgC,OAAQ,KAKV,IAAK,IAAI1yI,KAFL2sR,IAAiB9mN,EAAMonN,WAAa,KAExBpnN,EAAOinN,EAAU9sR,EAAK6lE,EAAM7lE,IAK5C,OAFapE,OAAO2qE,yBAAyBmmN,EAAiB,SAASptR,IAAIvD,KAAKk7J,KAE9D41H,GAAYD,IAAUC,CAC1C,KAIYL,EAAsBE,EAAiB,QAAS,CAC1Dl6O,cAAc,EACdlzC,IAAKmtR,G,+BCrDP,IAAIn9D,EAAc,EAAQ,IACtBlwN,EAAiB,EAAQ,IAE7B5C,EAAOD,QAAU,SAAU+B,EAAQE,EAAM+9D,GAGvC,OAFIA,EAAWj9D,KAAKgwN,EAAY/yJ,EAAWj9D,IAAKd,EAAM,CAAEU,QAAQ,IAC5Dq9D,EAAW90D,KAAK6nN,EAAY/yJ,EAAW90D,IAAKjJ,EAAM,CAAE60B,QAAQ,IACzDj0B,EAAeqsE,EAAEntE,EAAQE,EAAM+9D,EACxC,C,+BCPA,IAAIiwI,EAAyB,EAAQ,IAEjCwjB,EAAUp0N,OAIdY,EAAOD,QAAU,SAAUgmC,GACzB,OAAOytL,EAAQxjB,EAAuBjqK,GACxC,C,+BCRA,IAAI+zH,EAAc,EAAQ,IACtBl+H,EAAS,EAAQ,IAEjBuzF,EAAoBnkH,SAAS3L,UAE7BqxR,EAAgB52H,GAAe16J,OAAO2qE,yBAEtCopJ,EAASv3L,EAAOuzF,EAAmB,QAEnCwhK,EAASx9D,GAA0D,cAAhD,WAAqC,EAAEnxN,KAC1Du4J,EAAe44D,KAAYr5D,GAAgBA,GAAe42H,EAAcvhK,EAAmB,QAAQn5E,cAEvGh2C,EAAOD,QAAU,CACfozN,OAAQA,EACRw9D,OAAQA,EACRp2H,aAAcA,E,+BCfhB,IAAI1b,EAAc,EAAQ,IACtBC,EAAa,EAAQ,GACrB+wD,EAAQ,EAAQ,IAEhB+gF,EAAmB/xI,EAAY7zI,SAASjG,UAGvC+5I,EAAW+wD,EAAM0iB,iBACpB1iB,EAAM0iB,cAAgB,SAAUlyH,GAC9B,OAAOuwL,EAAiBvwL,EAC1B,GAGFrgG,EAAOD,QAAU8vM,EAAM0iB,a,+BCbvB,IAYItnN,EAAKnI,EAAK2mC,EAZVonP,EAAkB,EAAQ,KAC1Bv1P,EAAS,EAAQ,GACjBt2B,EAAW,EAAQ,IACnBovN,EAA8B,EAAQ,IACtCx4L,EAAS,EAAQ,IACjBo+M,EAAS,EAAQ,IACjB82C,EAAY,EAAQ,KACpBC,EAAa,EAAQ,IAErBC,EAA6B,6BAC7B39O,EAAY/X,EAAO+X,UACnBszB,EAAUrrC,EAAOqrC,QAgBrB,GAAIkqN,GAAmB72C,EAAO7nM,MAAO,CACnC,IAAI09J,EAAQmqC,EAAO7nM,QAAU6nM,EAAO7nM,MAAQ,IAAIw0B,GAEhDkpI,EAAM/sM,IAAM+sM,EAAM/sM,IAClB+sM,EAAMpmK,IAAMomK,EAAMpmK,IAClBomK,EAAM5kM,IAAM4kM,EAAM5kM,IAElBA,EAAM,SAAUo1F,EAAI4wL,GAClB,GAAIphF,EAAMpmK,IAAI42D,GAAK,MAAM,IAAIhtD,EAAU29O,GAGvC,OAFAC,EAASC,OAAS7wL,EAClBwvG,EAAM5kM,IAAIo1F,EAAI4wL,GACPA,CACT,EACAnuR,EAAM,SAAUu9F,GACd,OAAOwvG,EAAM/sM,IAAIu9F,IAAO,CAAC,CAC3B,EACA52D,EAAM,SAAU42D,GACd,OAAOwvG,EAAMpmK,IAAI42D,EACnB,CACF,KAAO,CACL,IAAI8wL,EAAQL,EAAU,SACtBC,EAAWI,IAAS,EACpBlmR,EAAM,SAAUo1F,EAAI4wL,GAClB,GAAIr1P,EAAOykE,EAAI8wL,GAAQ,MAAM,IAAI99O,EAAU29O,GAG3C,OAFAC,EAASC,OAAS7wL,EAClB+zH,EAA4B/zH,EAAI8wL,EAAOF,GAChCA,CACT,EACAnuR,EAAM,SAAUu9F,GACd,OAAOzkE,EAAOykE,EAAI8wL,GAAS9wL,EAAG8wL,GAAS,CAAC,CAC1C,EACA1nP,EAAM,SAAU42D,GACd,OAAOzkE,EAAOykE,EAAI8wL,EACpB,CACF,CAEAnxR,EAAOD,QAAU,CACfkL,IAAKA,EACLnI,IAAKA,EACL2mC,IAAKA,EACLipL,QArDY,SAAUryH,GACtB,OAAO52D,EAAI42D,GAAMv9F,EAAIu9F,GAAMp1F,EAAIo1F,EAAI,CAAC,EACtC,EAoDE+wL,UAlDc,SAAUC,GACxB,OAAO,SAAUhxL,GACf,IAAIluD,EACJ,IAAKntC,EAASq7F,KAAQluD,EAAQrvC,EAAIu9F,IAAKz+F,OAASyvR,EAC9C,MAAM,IAAIh+O,EAAU,0BAA4Bg+O,EAAO,aACvD,OAAOl/O,CACX,CACF,E,+BCzBA,IAAI7W,EAAS,EAAQ,GACjBwjH,EAAa,EAAQ,GAErBn4E,EAAUrrC,EAAOqrC,QAErB3mE,EAAOD,QAAU++I,EAAWn4E,IAAY,cAAcn4D,KAAKif,OAAOk5C,G,+BCLlE,IAAImzF,EAAc,EAAQ,IACtBlb,EAAQ,EAAQ,IAIpB5+I,EAAOD,QAAU+5J,GAAelb,GAAM,WAEpC,OAGiB,KAHVx/I,OAAOwD,gBAAe,WAA0B,GAAG,YAAa,CACrEM,MAAO,GACPo7C,UAAU,IACTj/C,SACL,G,+BCXA,IAAIE,EAAO,EAAQ,IACfyF,EAAW,EAAQ,IACnBouN,EAAW,EAAQ,IACnBk+D,EAAY,EAAQ,KACpBC,EAAsB,EAAQ,KAC9BC,EAAkB,EAAQ,KAE1Br3H,EAAa9mH,UACbo+O,EAAeD,EAAgB,eAInCxxR,EAAOD,QAAU,SAAU8E,EAAO6sR,GAChC,IAAK1sR,EAASH,IAAUuuN,EAASvuN,GAAQ,OAAOA,EAChD,IACI6e,EADAiuQ,EAAeL,EAAUzsR,EAAO4sR,GAEpC,GAAIE,EAAc,CAGhB,QAFazvR,IAATwvR,IAAoBA,EAAO,WAC/BhuQ,EAASnkB,EAAKoyR,EAAc9sR,EAAO6sR,IAC9B1sR,EAAS0e,IAAW0vM,EAAS1vM,GAAS,OAAOA,EAClD,MAAM,IAAIy2I,EAAW,0CACvB,CAEA,YADaj4J,IAATwvR,IAAoBA,EAAO,UACxBH,EAAoB1sR,EAAO6sR,EACpC,C,+BCxBA,IAAI7yI,EAAc,EAAQ,IAE1B7+I,EAAOD,QAAU8+I,EAAY,CAAC,EAAEy0E,c,+BCFhC,IAOIxlN,EAAO6sB,EAPPW,EAAS,EAAQ,GACjB25F,EAAY,EAAQ,IAEpBzhF,EAAUlY,EAAOkY,QACjBo+O,EAAOt2P,EAAOs2P,KACdj+J,EAAWngF,GAAWA,EAAQmgF,UAAYi+J,GAAQA,EAAKj3P,QACvDk3P,EAAKl+J,GAAYA,EAASk+J,GAG1BA,IAIFl3P,GAHA7sB,EAAQ+jR,EAAGj7Q,MAAM,MAGD,GAAK,GAAK9I,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7D6sB,GAAWs6F,MACdnnH,EAAQmnH,EAAUnnH,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQmnH,EAAUnnH,MAAM,oBACb6sB,GAAW7sB,EAAM,IAIhC9N,EAAOD,QAAU46B,C,+BC1BjB,IAAIm3P,EAAY,EAAQ,IACpB9+D,EAAoB,EAAQ,IAIhChzN,EAAOD,QAAU,SAAU81H,EAAGjnD,GAC5B,IAAIjhE,EAAOkoH,EAAEjnD,GACb,OAAOokJ,EAAkBrlN,QAAQzL,EAAY4vR,EAAUnkR,EACzD,C,+BCRA,IAAImiM,EAAUriL,OAEdztB,EAAOD,QAAU,SAAUgmC,GACzB,IACE,OAAO+pK,EAAQ/pK,EACjB,CAAE,MAAO3kC,GACP,MAAO,QACT,CACF,C,+BCRA,IAAI7B,EAAO,EAAQ,IACfu/I,EAAa,EAAQ,GACrB95I,EAAW,EAAQ,IAEnBm1J,EAAa9mH,UAIjBrzC,EAAOD,QAAU,SAAU8E,EAAO6sR,GAChC,IAAI5rR,EAAIqD,EACR,GAAa,WAATuoR,GAAqB5yI,EAAWh5I,EAAKjB,EAAME,YAAcC,EAASmE,EAAM5J,EAAKuG,EAAIjB,IAAS,OAAOsE,EACrG,GAAI21I,EAAWh5I,EAAKjB,EAAMqB,WAAalB,EAASmE,EAAM5J,EAAKuG,EAAIjB,IAAS,OAAOsE,EAC/E,GAAa,WAATuoR,GAAqB5yI,EAAWh5I,EAAKjB,EAAME,YAAcC,EAASmE,EAAM5J,EAAKuG,EAAIjB,IAAS,OAAOsE,EACrG,MAAM,IAAIgxJ,EAAW,0CACvB,C,+BCdA,IAAI7+H,EAAS,EAAQ,GACjB0+M,EAAS,EAAQ,IACjBp+M,EAAS,EAAQ,IACjBma,EAAM,EAAQ,IACd29K,EAAgB,EAAQ,IACxBH,EAAoB,EAAQ,IAE5BvwN,EAASs4B,EAAOt4B,OAChB+uR,EAAwB/3C,EAAO,OAC/Bg4C,EAAwBz+D,EAAoBvwN,EAAY,KAAKA,EAASA,GAAUA,EAAOivR,eAAiBl8O,EAE5G/1C,EAAOD,QAAU,SAAUiC,GAKvB,OAJG45B,EAAOm2P,EAAuB/vR,KACjC+vR,EAAsB/vR,GAAQ0xN,GAAiB93L,EAAO54B,EAAQhB,GAC1DgB,EAAOhB,GACPgwR,EAAsB,UAAYhwR,IAC/B+vR,EAAsB/vR,EACjC,C,+BCjBAhC,EAAOD,SAAU,C,+BCAjB,IAAIi6O,EAAS,EAAQ,IACjBjkM,EAAM,EAAQ,IAEdnrC,EAAOovO,EAAO,QAElBh6O,EAAOD,QAAU,SAAUyD,GACzB,OAAOoH,EAAKpH,KAASoH,EAAKpH,GAAOuyC,EAAIvyC,GACvC,C,+BCPA,IAAIy2J,EAAW,EAAQ,IAIvBj6J,EAAOD,QAAU,WACf,IAAI0vB,EAAOwqI,EAAStxJ,MAChB+a,EAAS,GASb,OARI+L,EAAKghQ,aAAY/sQ,GAAU,KAC3B+L,EAAK6L,SAAQ5X,GAAU,KACvB+L,EAAK+gQ,aAAY9sQ,GAAU,KAC3B+L,EAAKykH,YAAWxwH,GAAU,KAC1B+L,EAAK8gQ,SAAQ7sQ,GAAU,KACvB+L,EAAKuhN,UAASttN,GAAU,KACxB+L,EAAKyiQ,cAAaxuQ,GAAU,KAC5B+L,EAAKymH,SAAQxyH,GAAU,KACpBA,CACT,C,+BCfA,EAAQ,KACR,EAAQ,I,+BCFR,IAAI05C,EAAI,EAAQ,IACZ9hC,EAAS,EAAQ,GACjBo6L,EAAiB,EAAQ,IAAqB7tJ,MAIlDzK,EAAE,CAAE9hC,QAAQ,EAAM73B,MAAM,EAAMZ,YAAY,EAAMkyN,OAAQz5L,EAAOo6L,iBAAmBA,GAAkB,CAClGA,eAAgBA,G,+BCPlB,IAAIy8D,EAAwB,CAAC,EAAEC,qBAE3BroN,EAA2B3qE,OAAO2qE,yBAGlCsoN,EAActoN,IAA6BooN,EAAsB5yR,KAAK,CAAE,EAAG,GAAK,GAIpFQ,EAAQkvE,EAAIojN,EAAc,SAA8Bx8J,GACtD,IAAI91D,EAAagK,EAAyBphE,KAAMktH,GAChD,QAAS91D,GAAcA,EAAWl9D,UACpC,EAAIsvR,C,+BCZJ,IAAItzI,EAAc,EAAQ,IACtBD,EAAQ,EAAQ,IAChB0zI,EAAU,EAAQ,IAElB9+D,EAAUp0N,OACVwX,EAAQioI,EAAY,GAAGjoI,OAG3B5W,EAAOD,QAAU6+I,GAAM,WAGrB,OAAQ40E,EAAQ,KAAK4+D,qBAAqB,EAC5C,IAAK,SAAU/xL,GACb,MAAuB,WAAhBiyL,EAAQjyL,GAAmBzpF,EAAMypF,EAAI,IAAMmzH,EAAQnzH,EAC5D,EAAImzH,C,+BCdJ,IAAI10E,EAAa,EAAQ,GACrBm0E,EAAuB,EAAQ,IAC/BH,EAAc,EAAQ,IACtBnjB,EAAuB,EAAQ,IAEnC3vM,EAAOD,QAAU,SAAU06J,EAAGj3J,EAAKN,EAAOq7B,GACnCA,IAASA,EAAU,CAAC,GACzB,IAAIgK,EAAShK,EAAQ17B,WACjBb,OAAwBE,IAAjBq8B,EAAQv8B,KAAqBu8B,EAAQv8B,KAAOwB,EAEvD,GADIs7I,EAAW57I,IAAQ4vN,EAAY5vN,EAAOlB,EAAMu8B,GAC5CA,EAAQjD,OACNiN,EAAQkyH,EAAEj3J,GAAON,EAChBysM,EAAqBnsM,EAAKN,OAC1B,CACL,IACOq7B,EAAQg0P,OACJ93H,EAAEj3J,KAAM+kC,GAAS,UADEkyH,EAAEj3J,EAEhC,CAAE,MAAOpC,GAAqB,CAC1BmnC,EAAQkyH,EAAEj3J,GAAON,EAChB+vN,EAAqBhkJ,EAAEwrF,EAAGj3J,EAAK,CAClCN,MAAOA,EACPL,YAAY,EACZmzC,cAAezX,EAAQi0P,gBACvBl0O,UAAW/f,EAAQk0P,aAEvB,CAAE,OAAOh4H,CACX,C,+BC1BA,IAAI7+H,EAAS,EAAQ,IACjB8iL,EAAU,EAAQ,KAClBg0E,EAAiC,EAAQ,IACzCz/D,EAAuB,EAAQ,IAEnCjzN,EAAOD,QAAU,SAAU+B,EAAQwJ,EAAQqnR,GAIzC,IAHA,IAAI/nR,EAAO8zM,EAAQpzM,GACf1I,EAAiBqwN,EAAqBhkJ,EACtClF,EAA2B2oN,EAA+BzjN,EACrDhwE,EAAI,EAAGA,EAAI2L,EAAKzL,OAAQF,IAAK,CACpC,IAAIuE,EAAMoH,EAAK3L,GACV28B,EAAO95B,EAAQ0B,IAAUmvR,GAAc/2P,EAAO+2P,EAAYnvR,IAC7DZ,EAAed,EAAQ0B,EAAKumE,EAAyBz+D,EAAQ9H,GAEjE,CACF,C,+BCfA,IAAI6vN,EAAa,EAAQ,IACrBx0E,EAAc,EAAQ,IACtB+zI,EAA4B,EAAQ,KACpCC,EAA8B,EAAQ,KACtC54H,EAAW,EAAQ,IAEnBz+I,EAASqjI,EAAY,GAAGrjI,QAG5Bxb,EAAOD,QAAUszN,EAAW,UAAW,YAAc,SAAiBhzH,GACpE,IAAIz1F,EAAOgoR,EAA0B3jN,EAAEgrF,EAAS55D,IAC5C71B,EAAwBqoN,EAA4B5jN,EACxD,OAAOzE,EAAwBhvD,EAAO5Q,EAAM4/D,EAAsB61B,IAAOz1F,CAC3E,C,+BCbA,IAAIkoR,EAAqB,EAAQ,KAG7B/B,EAFc,EAAQ,KAEGv1Q,OAAO,SAAU,aAK9Czb,EAAQkvE,EAAI7vE,OAAOkG,qBAAuB,SAA6Bm1J,GACrE,OAAOq4H,EAAmBr4H,EAAGs2H,EAC/B,C,+BCVA,IAAIlyI,EAAc,EAAQ,IACtBjjH,EAAS,EAAQ,IACjBq5L,EAAkB,EAAQ,IAC1Bx/M,EAAU,EAAQ,KAA+BA,QACjDs7Q,EAAa,EAAQ,IAErBtxR,EAAOo/I,EAAY,GAAGp/I,MAE1BO,EAAOD,QAAU,SAAU4D,EAAQyc,GACjC,IAGI5c,EAHAi3J,EAAIw6D,EAAgBtxN,GACpB1E,EAAI,EACJykB,EAAS,GAEb,IAAKlgB,KAAOi3J,GAAI7+H,EAAOm1P,EAAYvtR,IAAQo4B,EAAO6+H,EAAGj3J,IAAQ/D,EAAKikB,EAAQlgB,GAE1E,KAAO4c,EAAMjhB,OAASF,GAAO28B,EAAO6+H,EAAGj3J,EAAM4c,EAAMnhB,SAChDwW,EAAQiO,EAAQlgB,IAAQ/D,EAAKikB,EAAQlgB,IAExC,OAAOkgB,CACT,C,+BCnBA,IAAIuxM,EAAkB,EAAQ,IAC1B89D,EAAkB,EAAQ,KAC1BC,EAAoB,EAAQ,KAG5BC,EAAe,SAAUC,GAC3B,OAAO,SAAUx4L,EAAOj1D,EAAIw4C,GAC1B,IAGI/6E,EAHAu3J,EAAIw6D,EAAgBv6H,GACpBv7F,EAAS6zR,EAAkBv4H,GAC3B9jI,EAAQo8P,EAAgB90M,EAAW9+E,GAIvC,GAAI+zR,GAAeztP,IAAOA,GAAI,KAAOtmC,EAASw3B,GAG5C,IAFAzzB,EAAQu3J,EAAE9jI,QAEIzzB,EAAO,OAAO,OAEvB,KAAM/D,EAASw3B,EAAOA,IAC3B,IAAKu8P,GAAev8P,KAAS8jI,IAAMA,EAAE9jI,KAAW8O,EAAI,OAAOytP,GAAev8P,GAAS,EACnF,OAAQu8P,IAAgB,CAC5B,CACF,EAEAlzR,EAAOD,QAAU,CAGf4rH,SAAUsnK,GAAa,GAGvBx9Q,QAASw9Q,GAAa,G,+BC9BxB,IAAIE,EAAsB,EAAQ,IAE9BlmR,EAAMJ,KAAKI,IACXiL,EAAMrL,KAAKqL,IAKflY,EAAOD,QAAU,SAAU42B,EAAOx3B,GAChC,IAAIi0R,EAAUD,EAAoBx8P,GAClC,OAAOy8P,EAAU,EAAInmR,EAAImmR,EAAUj0R,EAAQ,GAAK+Y,EAAIk7Q,EAASj0R,EAC/D,C,+BCXA,IAAIiT,EAAOvF,KAAKuF,KACZC,EAAQxF,KAAKwF,MAKjBrS,EAAOD,QAAU8M,KAAKqoN,OAAS,SAAe9+M,GAC5C,IAAI1S,GAAK0S,EACT,OAAQ1S,EAAI,EAAI2O,EAAQD,GAAM1O,EAChC,C,+BCTA,IAAI2vR,EAAW,EAAQ,KAIvBrzR,EAAOD,QAAU,SAAUsF,GACzB,OAAOguR,EAAShuR,EAAIlG,OACtB,C,+BCNA,IAAIg0R,EAAsB,EAAQ,IAE9Bj7Q,EAAMrL,KAAKqL,IAIflY,EAAOD,QAAU,SAAUgmC,GACzB,OAAOA,EAAW,EAAI7tB,EAAIi7Q,EAAoBptP,GAAW,kBAAoB,CAC/E,C,+BCPA/lC,EAAOD,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,U,+BCPFA,EAAQkvE,EAAI7vE,OAAOorE,qB,+BCDnB,IAAIo0E,EAAQ,EAAQ,IAChBE,EAAa,EAAQ,GAErBx/C,EAAc,kBAEdi1H,EAAW,SAAU++D,EAASC,GAChC,IAAIrwR,EAAQtE,EAAK4hN,EAAU8yE,IAC3B,OAAOpwR,IAAUswR,GACbtwR,IAAUuwR,IACV30I,EAAWy0I,GAAa30I,EAAM20I,KAC5BA,EACR,EAEI/yE,EAAY+T,EAAS/T,UAAY,SAAU/vM,GAC7C,OAAOgd,OAAOhd,GAAQ1C,QAAQuxF,EAAa,KAAKnuF,aAClD,EAEIvS,EAAO21N,EAAS31N,KAAO,CAAC,EACxB60R,EAASl/D,EAASk/D,OAAS,IAC3BD,EAAWj/D,EAASi/D,SAAW,IAEnCxzR,EAAOD,QAAUw0N,C,+BCrBjB,IAAI11E,EAAc,EAAQ,KACtBizI,EAAY,EAAQ,IACpB5iK,EAAc,EAAQ,IAEtBzrH,EAAOo7I,EAAYA,EAAYp7I,MAGnCzD,EAAOD,QAAU,SAAU+F,EAAI2pB,GAE7B,OADAqiQ,EAAUhsR,QACM5D,IAATutB,EAAqB3pB,EAAKopH,EAAczrH,EAAKqC,EAAI2pB,GAAQ,WAC9D,OAAO3pB,EAAGtB,MAAMirB,EAAMhrB,UACxB,CACF,C,+BCZA,IAAIivR,EAAa,EAAQ,IACrB70I,EAAc,EAAQ,IAE1B7+I,EAAOD,QAAU,SAAU+F,GAIzB,GAAuB,aAAnB4tR,EAAW5tR,GAAoB,OAAO+4I,EAAY/4I,EACxD,C,+BCRA,IAAIutN,EAAa,EAAQ,IAEzBrzN,EAAOD,QAAUszN,EAAW,WAAY,kB,+BCFxC,IAAIp+F,EAAY,EAAQ,IAGxBj1H,EAAOD,QAAU,qCAAqCyO,KAAKymH,E,+BCH3D,IAAI35F,EAAS,EAAQ,GACjBg3P,EAAU,EAAQ,IAEtBtyR,EAAOD,QAAsC,YAA5BuyR,EAAQh3P,EAAOkY,Q,+BCHhC,IAAI4pB,EAAI,EAAQ,IACZ9hC,EAAS,EAAQ,GACjBq4P,EAAU,EAAQ,IAAqB1oR,IACvC2oR,EAAgB,EAAQ,KAGxBn+D,EAAen6L,EAAOm6L,aAAem+D,EAAcD,GAAS,GAASA,EAIzEv2N,EAAE,CAAE9hC,QAAQ,EAAM73B,MAAM,EAAMZ,YAAY,EAAMkyN,OAAQz5L,EAAOm6L,eAAiBA,GAAgB,CAC9FA,aAAcA,G,+BCXhB,IAWM96L,EAXFW,EAAS,EAAQ,GACjB92B,EAAQ,EAAQ,IAChBs6I,EAAa,EAAQ,GACrB+0I,EAAgB,EAAQ,KACxBC,EAAa,EAAQ,IACrBz+D,EAAa,EAAQ,IACrBC,EAA0B,EAAQ,IAElCtqN,EAAWswB,EAAOtwB,SAElB+oR,EAAO,WAAWvlR,KAAKslR,IAAeD,KACpCl5P,EAAUW,EAAO04P,IAAIr5P,QAAQ/jB,MAAM,MACxBzX,OAAS,GAAoB,MAAfw7B,EAAQ,KAAeA,EAAQ,GAAK,GAAoB,MAAfA,EAAQ,IAA6B,MAAfA,EAAQ,KAMtG36B,EAAOD,QAAU,SAAUk0R,EAAWC,GACpC,IAAIC,EAAkBD,EAAa,EAAI,EACvC,OAAOH,EAAO,SAAU7gP,EAASpyC,GAC/B,IAAIszR,EAAY9+D,EAAwB7wN,UAAUtF,OAAQ,GAAKg1R,EAC3DruR,EAAKg5I,EAAW5rG,GAAWA,EAAUloC,EAASkoC,GAC9C6nB,EAASq5N,EAAY/+D,EAAW5wN,UAAW0vR,GAAmB,GAC9DxvR,EAAWyvR,EAAY,WACzB5vR,EAAMsB,EAAI6C,KAAMoyD,EAClB,EAAIj1D,EACJ,OAAOouR,EAAaD,EAAUtvR,EAAU7D,GAAWmzR,EAAUtvR,EAC/D,EAAIsvR,CACN,C,+BC5BAj0R,EAAOD,QAAwB,mBAAPi0R,KAAqBA,KAA6B,iBAAfA,IAAIr5P,O,kBCK/D,IAAIghM,EAAW,SAAU57N,GACvB,aAEA,IAGImC,EAHAmyR,EAAKj1R,OAAOC,UACZu8B,EAASy4P,EAAG/0R,eACZsD,EAAiBxD,OAAOwD,gBAAkB,SAAUyC,EAAK7B,EAAK8wR,GAAQjvR,EAAI7B,GAAO8wR,EAAKpxR,KAAO,EAE7FuwN,EAA4B,oBAAXzwN,OAAwBA,OAAS,CAAC,EACnDuxR,EAAiB9gE,EAAQxzL,UAAY,aACrCu0P,EAAsB/gE,EAAQ+X,eAAiB,kBAC/CipD,EAAoBhhE,EAAQxwN,aAAe,gBAE/C,SAAS4rH,EAAOxpH,EAAK7B,EAAKN,GAOxB,OANA9D,OAAOwD,eAAeyC,EAAK7B,EAAK,CAC9BN,MAAOA,EACPL,YAAY,EACZmzC,cAAc,EACdsI,UAAU,IAELj5C,EAAI7B,EACb,CACA,IAEEqrH,EAAO,CAAC,EAAG,GACb,CAAE,MAAO/qH,GACP+qH,EAAS,SAASxpH,EAAK7B,EAAKN,GAC1B,OAAOmC,EAAI7B,GAAON,CACpB,CACF,CAEA,SAAS23C,EAAK65O,EAASC,EAAS7lP,EAAM8lP,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQt1R,qBAAqBosO,EAAYkpD,EAAUlpD,EAC/E58J,EAAYzvE,OAAOmE,OAAOsxR,EAAex1R,WACzC49B,EAAU,IAAIsrC,EAAQqsN,GAAe,IAMzC,OAFAhyR,EAAeisE,EAAW,UAAW,CAAE3rE,MAAOwoO,EAAiBgpD,EAAS5lP,EAAM7R,KAEvE4xC,CACT,CAaA,SAAS88J,EAAS7lO,EAAIT,EAAKkF,GACzB,IACE,MAAO,CAAE3I,KAAM,SAAU2I,IAAKzE,EAAGvG,KAAK8F,EAAKkF,GAC7C,CAAE,MAAOzG,GACP,MAAO,CAAElC,KAAM,QAAS2I,IAAKzG,EAC/B,CACF,CAlBA/D,EAAQ86C,KAAOA,EAoBf,IAAIi6O,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,CAAC,EAMxB,SAASzpD,IAAa,CACtB,SAASG,IAAqB,CAC9B,SAASC,IAA8B,CAIvC,IAAIspD,EAAoB,CAAC,EACzBtmK,EAAOsmK,EAAmBZ,GAAgB,WACxC,OAAO5rR,IACT,IAEA,IAAI6yB,EAAWp8B,OAAOq8B,eAClB25P,EAA0B55P,GAAYA,EAASA,EAAS5a,EAAO,MAC/Dw0Q,GACAA,IAA4Bf,GAC5Bz4P,EAAOr8B,KAAK61R,EAAyBb,KAGvCY,EAAoBC,GAGtB,IAAIC,EAAKxpD,EAA2BxsO,UAClCosO,EAAUpsO,UAAYD,OAAOmE,OAAO4xR,GAgBtC,SAASrpD,EAAsBzsO,GAC7B,CAAC,OAAQ,QAAS,UAAU4hB,SAAQ,SAAS2vB,GAC3Ci+E,EAAOxvH,EAAWuxC,GAAQ,SAASrmC,GACjC,OAAO5B,KAAKojO,QAAQn7L,EAAQrmC,EAC9B,GACF,GACF,CA+BA,SAASyhO,EAAcn9J,EAAWymN,GAChC,SAASrpD,EAAOr7L,EAAQrmC,EAAKhK,EAASC,GACpC,IAAI+0R,EAAS5pD,EAAS98J,EAAUj+B,GAASi+B,EAAWtkE,GACpD,GAAoB,UAAhBgrR,EAAO3zR,KAEJ,CACL,IAAI8hB,EAAS6xQ,EAAOhrR,IAChBrH,EAAQwgB,EAAOxgB,MACnB,OAAIA,GACiB,kBAAVA,GACP04B,EAAOr8B,KAAK2D,EAAO,WACdoyR,EAAY/0R,QAAQ2C,EAAMgpO,SAASp7L,MAAK,SAAS5tC,GACtD+oO,EAAO,OAAQ/oO,EAAO3C,EAASC,EACjC,IAAG,SAASsD,GACVmoO,EAAO,QAASnoO,EAAKvD,EAASC,EAChC,IAGK80R,EAAY/0R,QAAQ2C,GAAO4tC,MAAK,SAAS0kP,GAI9C9xQ,EAAOxgB,MAAQsyR,EACfj1R,EAAQmjB,EACV,IAAG,SAAStiB,GAGV,OAAO6qO,EAAO,QAAS7qO,EAAOb,EAASC,EACzC,GACF,CAzBEA,EAAO+0R,EAAOhrR,IA0BlB,CAEA,IAAIkrR,EAgCJ7yR,EAAe+F,KAAM,UAAW,CAAEzF,MA9BlC,SAAiB0tC,EAAQrmC,GACvB,SAAS4hO,IACP,OAAO,IAAImpD,GAAY,SAAS/0R,EAASC,GACvCyrO,EAAOr7L,EAAQrmC,EAAKhK,EAASC,EAC/B,GACF,CAEA,OAAOi1R,EAaLA,EAAkBA,EAAgB3kP,KAChCq7L,EAGAA,GACEA,GACR,GAKF,CA0BA,SAAST,EAAiBgpD,EAAS5lP,EAAM7R,GACvC,IAAIkV,EAAQ2iP,EAEZ,OAAO,SAAgBlkP,EAAQrmC,GAC7B,GAAI4nC,IAAU6iP,EACZ,MAAM,IAAI3zR,MAAM,gCAGlB,GAAI8wC,IAAU8iP,EAAmB,CAC/B,GAAe,UAAXrkP,EACF,MAAMrmC,EAKR,OAAOmrR,GACT,CAKA,IAHAz4P,EAAQ2T,OAASA,EACjB3T,EAAQ1yB,IAAMA,IAED,CACX,IAAI+xD,EAAWr/B,EAAQq/B,SACvB,GAAIA,EAAU,CACZ,IAAIq5N,EAAiBvpD,EAAoB9vK,EAAUr/B,GACnD,GAAI04P,EAAgB,CAClB,GAAIA,IAAmBT,EAAkB,SACzC,OAAOS,CACT,CACF,CAEA,GAAuB,SAAnB14P,EAAQ2T,OAGV3T,EAAQmyC,KAAOnyC,EAAQovM,MAAQpvM,EAAQ1yB,SAElC,GAAuB,UAAnB0yB,EAAQ2T,OAAoB,CACrC,GAAIuB,IAAU2iP,EAEZ,MADA3iP,EAAQ8iP,EACFh4P,EAAQ1yB,IAGhB0yB,EAAQqvM,kBAAkBrvM,EAAQ1yB,IAEpC,KAA8B,WAAnB0yB,EAAQ2T,QACjB3T,EAAQsvM,OAAO,SAAUtvM,EAAQ1yB,KAGnC4nC,EAAQ6iP,EAER,IAAIO,EAAS5pD,EAAS+oD,EAAS5lP,EAAM7R,GACrC,GAAoB,WAAhBs4P,EAAO3zR,KAAmB,CAO5B,GAJAuwC,EAAQlV,EAAQuE,KACZyzP,EACAF,EAEAQ,EAAOhrR,MAAQ2qR,EACjB,SAGF,MAAO,CACLhyR,MAAOqyR,EAAOhrR,IACdi3B,KAAMvE,EAAQuE,KAGlB,CAA2B,UAAhB+zP,EAAO3zR,OAChBuwC,EAAQ8iP,EAGRh4P,EAAQ2T,OAAS,QACjB3T,EAAQ1yB,IAAMgrR,EAAOhrR,IAEzB,CACF,CACF,CAMA,SAAS6hO,EAAoB9vK,EAAUr/B,GACrC,IAAIkjC,EAAaljC,EAAQ2T,OACrBA,EAAS0rB,EAASr8B,SAASkgC,GAC/B,GAAIvvB,IAAW1uC,EAOb,OAHA+6B,EAAQq/B,SAAW,KAGA,UAAf6D,GAA0B7D,EAASr8B,SAAiB,SAGtDhD,EAAQ2T,OAAS,SACjB3T,EAAQ1yB,IAAMrI,EACdkqO,EAAoB9vK,EAAUr/B,GAEP,UAAnBA,EAAQ2T,SAMK,WAAfuvB,IACFljC,EAAQ2T,OAAS,QACjB3T,EAAQ1yB,IAAM,IAAI8oC,UAChB,oCAAsC8sB,EAAa,aAN5C+0N,EAYb,IAAIK,EAAS5pD,EAAS/6L,EAAQ0rB,EAASr8B,SAAUhD,EAAQ1yB,KAEzD,GAAoB,UAAhBgrR,EAAO3zR,KAIT,OAHAq7B,EAAQ2T,OAAS,QACjB3T,EAAQ1yB,IAAMgrR,EAAOhrR,IACrB0yB,EAAQq/B,SAAW,KACZ44N,EAGT,IAAIvnD,EAAO4nD,EAAOhrR,IAElB,OAAMojO,EAOFA,EAAKnsM,MAGPvE,EAAQq/B,EAASkwK,YAAcmB,EAAKzqO,MAGpC+5B,EAAQ3c,KAAOg8C,EAASmwK,QAQD,WAAnBxvM,EAAQ2T,SACV3T,EAAQ2T,OAAS,OACjB3T,EAAQ1yB,IAAMrI,GAUlB+6B,EAAQq/B,SAAW,KACZ44N,GANEvnD,GA3BP1wM,EAAQ2T,OAAS,QACjB3T,EAAQ1yB,IAAM,IAAI8oC,UAAU,oCAC5BpW,EAAQq/B,SAAW,KACZ44N,EA+BX,CAqBA,SAASxoD,EAAakpD,GACpB,IAAIjvD,EAAQ,CAAEgG,OAAQipD,EAAK,IAEvB,KAAKA,IACPjvD,EAAMiG,SAAWgpD,EAAK,IAGpB,KAAKA,IACPjvD,EAAMkG,WAAa+oD,EAAK,GACxBjvD,EAAMmG,SAAW8oD,EAAK,IAGxBjtR,KAAKokO,WAAWttO,KAAKknO,EACvB,CAEA,SAASqG,EAAcrG,GACrB,IAAI4uD,EAAS5uD,EAAMsG,YAAc,CAAC,EAClCsoD,EAAO3zR,KAAO,gBACP2zR,EAAOhrR,IACdo8N,EAAMsG,WAAasoD,CACrB,CAEA,SAAShtN,EAAQqsN,GAIfjsR,KAAKokO,WAAa,CAAC,CAAEJ,OAAQ,SAC7BioD,EAAY3zQ,QAAQyrN,EAAc/jO,MAClCA,KAAK0iC,OAAM,EACb,CA8BA,SAASzqB,EAAOi1Q,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAAStB,GAC9B,GAAIuB,EACF,OAAOA,EAAev2R,KAAKs2R,GAG7B,GAA6B,oBAAlBA,EAASv1Q,KAClB,OAAOu1Q,EAGT,IAAK5tR,MAAM4tR,EAAS12R,QAAS,CAC3B,IAAIF,GAAK,EAAGqhB,EAAO,SAASA,IAC1B,OAASrhB,EAAI42R,EAAS12R,QACpB,GAAIy8B,EAAOr8B,KAAKs2R,EAAU52R,GAGxB,OAFAqhB,EAAKpd,MAAQ2yR,EAAS52R,GACtBqhB,EAAKkhB,MAAO,EACLlhB,EAOX,OAHAA,EAAKpd,MAAQhB,EACboe,EAAKkhB,MAAO,EAELlhB,CACT,EAEA,OAAOA,EAAKA,KAAOA,CACrB,CACF,CAGA,MAAO,CAAEA,KAAMo1Q,EACjB,CAGA,SAASA,IACP,MAAO,CAAExyR,MAAOhB,EAAWs/B,MAAM,EACnC,CA8MA,OAnnBAoqM,EAAkBvsO,UAAYwsO,EAC9BjpO,EAAeyyR,EAAI,cAAe,CAAEnyR,MAAO2oO,EAA4B71L,cAAc,IACrFpzC,EACEipO,EACA,cACA,CAAE3oO,MAAO0oO,EAAmB51L,cAAc,IAE5C41L,EAAkBsB,YAAcr+G,EAC9Bg9G,EACA4oD,EACA,qBAaF10R,EAAQotO,oBAAsB,SAAS4oD,GACrC,IAAIC,EAAyB,oBAAXD,GAAyBA,EAAOx4P,YAClD,QAAOy4P,IACHA,IAASpqD,GAG2B,uBAAnCoqD,EAAK9oD,aAAe8oD,EAAKh0R,MAEhC,EAEAjC,EAAQqtO,KAAO,SAAS2oD,GAQtB,OAPI32R,OAAO4lE,eACT5lE,OAAO4lE,eAAe+wN,EAAQlqD,IAE9BkqD,EAAO9wN,UAAY4mK,EACnBh9G,EAAOknK,EAAQtB,EAAmB,sBAEpCsB,EAAO12R,UAAYD,OAAOmE,OAAO8xR,GAC1BU,CACT,EAMAh2R,EAAQstO,MAAQ,SAAS9iO,GACvB,MAAO,CAAE2hO,QAAS3hO,EACpB,EAqEAuhO,EAAsBE,EAAc3sO,WACpCwvH,EAAOm9G,EAAc3sO,UAAWm1R,GAAqB,WACnD,OAAO7rR,IACT,IACA5I,EAAQisO,cAAgBA,EAKxBjsO,EAAQ+0D,MAAQ,SAAS4/N,EAASC,EAAS7lP,EAAM8lP,EAAaU,QACxC,IAAhBA,IAAwBA,EAAch1R,SAE1C,IAAIytO,EAAO,IAAI/B,EACbnxL,EAAK65O,EAASC,EAAS7lP,EAAM8lP,GAC7BU,GAGF,OAAOv1R,EAAQotO,oBAAoBwnD,GAC/B5mD,EACAA,EAAKztN,OAAOwwB,MAAK,SAASptB,GACxB,OAAOA,EAAO8d,KAAO9d,EAAOxgB,MAAQ6qO,EAAKztN,MAC3C,GACN,EAsKAwrN,EAAsBupD,GAEtBxmK,EAAOwmK,EAAIZ,EAAmB,aAO9B5lK,EAAOwmK,EAAId,GAAgB,WACzB,OAAO5rR,IACT,IAEAkmH,EAAOwmK,EAAI,YAAY,WACrB,MAAO,oBACT,IAiCAt1R,EAAQ6K,KAAO,SAASzB,GACtB,IAAIxF,EAASvE,OAAO+J,GAChByB,EAAO,GACX,IAAK,IAAIpH,KAAOG,EACdiH,EAAKnL,KAAK+D,GAMZ,OAJAoH,EAAKwlC,UAIE,SAAS9vB,IACd,KAAO1V,EAAKzL,QAAQ,CAClB,IAAIqE,EAAMoH,EAAKs1B,MACf,GAAI18B,KAAOG,EAGT,OAFA2c,EAAKpd,MAAQM,EACb8c,EAAKkhB,MAAO,EACLlhB,CAEX,CAMA,OADAA,EAAKkhB,MAAO,EACLlhB,CACT,CACF,EAoCAvgB,EAAQ6gB,OAASA,EAMjB2nD,EAAQlpE,UAAY,CAClBk+B,YAAagrC,EAEbl9B,MAAO,SAAS4qP,GAcd,GAbAttR,KAAK2mC,KAAO,EACZ3mC,KAAK2X,KAAO,EAGZ3X,KAAKymE,KAAOzmE,KAAK0jO,MAAQnqO,EACzByG,KAAK64B,MAAO,EACZ74B,KAAK2zD,SAAW,KAEhB3zD,KAAKioC,OAAS,OACdjoC,KAAK4B,IAAMrI,EAEXyG,KAAKokO,WAAW9rN,QAAQ+rN,IAEnBipD,EACH,IAAK,IAAIj0R,KAAQ2G,KAEQ,MAAnB3G,EAAK2c,OAAO,IACZid,EAAOr8B,KAAKoJ,KAAM3G,KACjBiG,OAAOjG,EAAKmC,MAAM,MACrBwE,KAAK3G,GAAQE,EAIrB,EAEA+0C,KAAM,WACJtuC,KAAK64B,MAAO,EAEZ,IACI00P,EADYvtR,KAAKokO,WAAW,GACLE,WAC3B,GAAwB,UAApBipD,EAAWt0R,KACb,MAAMs0R,EAAW3rR,IAGnB,OAAO5B,KAAK2kO,IACd,EAEAhB,kBAAmB,SAAS6pD,GAC1B,GAAIxtR,KAAK64B,KACP,MAAM20P,EAGR,IAAIl5P,EAAUt0B,KACd,SAASk0C,EAAO0yE,EAAK6mK,GAYnB,OAXAb,EAAO3zR,KAAO,QACd2zR,EAAOhrR,IAAM4rR,EACbl5P,EAAQ3c,KAAOivG,EAEX6mK,IAGFn5P,EAAQ2T,OAAS,OACjB3T,EAAQ1yB,IAAMrI,KAGNk0R,CACZ,CAEA,IAAK,IAAIn3R,EAAI0J,KAAKokO,WAAW5tO,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI0nO,EAAQh+N,KAAKokO,WAAW9tO,GACxBs2R,EAAS5uD,EAAMsG,WAEnB,GAAqB,SAAjBtG,EAAMgG,OAIR,OAAO9vL,EAAO,OAGhB,GAAI8pL,EAAMgG,QAAUhkO,KAAK2mC,KAAM,CAC7B,IAAI+mP,EAAWz6P,EAAOr8B,KAAKonO,EAAO,YAC9B2vD,EAAa16P,EAAOr8B,KAAKonO,EAAO,cAEpC,GAAI0vD,GAAYC,EAAY,CAC1B,GAAI3tR,KAAK2mC,KAAOq3L,EAAMiG,SACpB,OAAO/vL,EAAO8pL,EAAMiG,UAAU,GACzB,GAAIjkO,KAAK2mC,KAAOq3L,EAAMkG,WAC3B,OAAOhwL,EAAO8pL,EAAMkG,WAGxB,MAAO,GAAIwpD,GACT,GAAI1tR,KAAK2mC,KAAOq3L,EAAMiG,SACpB,OAAO/vL,EAAO8pL,EAAMiG,UAAU,OAG3B,KAAI0pD,EAMT,MAAM,IAAIj1R,MAAM,0CALhB,GAAIsH,KAAK2mC,KAAOq3L,EAAMkG,WACpB,OAAOhwL,EAAO8pL,EAAMkG,WAKxB,CACF,CACF,CACF,EAEAN,OAAQ,SAAS3qO,EAAM2I,GACrB,IAAK,IAAItL,EAAI0J,KAAKokO,WAAW5tO,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI0nO,EAAQh+N,KAAKokO,WAAW9tO,GAC5B,GAAI0nO,EAAMgG,QAAUhkO,KAAK2mC,MACrB1T,EAAOr8B,KAAKonO,EAAO,eACnBh+N,KAAK2mC,KAAOq3L,EAAMkG,WAAY,CAChC,IAAI0pD,EAAe5vD,EACnB,KACF,CACF,CAEI4vD,IACU,UAAT30R,GACS,aAATA,IACD20R,EAAa5pD,QAAUpiO,GACvBA,GAAOgsR,EAAa1pD,aAGtB0pD,EAAe,MAGjB,IAAIhB,EAASgB,EAAeA,EAAatpD,WAAa,CAAC,EAIvD,OAHAsoD,EAAO3zR,KAAOA,EACd2zR,EAAOhrR,IAAMA,EAETgsR,GACF5tR,KAAKioC,OAAS,OACdjoC,KAAK2X,KAAOi2Q,EAAa1pD,WAClBqoD,GAGFvsR,KAAK+kD,SAAS6nO,EACvB,EAEA7nO,SAAU,SAAS6nO,EAAQzoD,GACzB,GAAoB,UAAhByoD,EAAO3zR,KACT,MAAM2zR,EAAOhrR,IAcf,MAXoB,UAAhBgrR,EAAO3zR,MACS,aAAhB2zR,EAAO3zR,KACT+G,KAAK2X,KAAOi1Q,EAAOhrR,IACM,WAAhBgrR,EAAO3zR,MAChB+G,KAAK2kO,KAAO3kO,KAAK4B,IAAMgrR,EAAOhrR,IAC9B5B,KAAKioC,OAAS,SACdjoC,KAAK2X,KAAO,OACa,WAAhBi1Q,EAAO3zR,MAAqBkrO,IACrCnkO,KAAK2X,KAAOwsN,GAGPooD,CACT,EAEApmO,OAAQ,SAAS+9K,GACf,IAAK,IAAI5tO,EAAI0J,KAAKokO,WAAW5tO,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI0nO,EAAQh+N,KAAKokO,WAAW9tO,GAC5B,GAAI0nO,EAAMkG,aAAeA,EAGvB,OAFAlkO,KAAK+kD,SAASi5K,EAAMsG,WAAYtG,EAAMmG,UACtCE,EAAcrG,GACPuuD,CAEX,CACF,EAEA,MAAS,SAASvoD,GAChB,IAAK,IAAI1tO,EAAI0J,KAAKokO,WAAW5tO,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI0nO,EAAQh+N,KAAKokO,WAAW9tO,GAC5B,GAAI0nO,EAAMgG,SAAWA,EAAQ,CAC3B,IAAI4oD,EAAS5uD,EAAMsG,WACnB,GAAoB,UAAhBsoD,EAAO3zR,KAAkB,CAC3B,IAAI40R,EAASjB,EAAOhrR,IACpByiO,EAAcrG,EAChB,CACA,OAAO6vD,CACT,CACF,CAIA,MAAM,IAAIn1R,MAAM,wBAClB,EAEAksO,cAAe,SAASsoD,EAAUrpD,EAAYC,GAa5C,OAZA9jO,KAAK2zD,SAAW,CACdr8B,SAAUrf,EAAOi1Q,GACjBrpD,WAAYA,EACZC,QAASA,GAGS,SAAhB9jO,KAAKioC,SAGPjoC,KAAK4B,IAAMrI,GAGNgzR,CACT,GAOKn1R,CAET,CAvtBc,CA4tBiBC,EAAOD,SAGtC,IACE02R,mBAAqB96D,CACvB,CAAE,MAAO+6D,GAWmB,kBAAfp2L,WACTA,WAAWm2L,mBAAqB96D,EAEhC3wN,SAAS,IAAK,yBAAdA,CAAwC2wN,EAE5C,C,mBCxvBA,yBACC,WACC,aAEA,IAAI7W,EAAG1gN,EAAGrB,EAAGmC,EAAGxB,EAChBohN,EAAI,SAAU5kN,EAAGiD,GACf,MAAO,iBAAmBjD,GAAK,iBAAmBiD,GAAKjD,EAAEiR,gBAAkBhO,EAAEgO,aAC/E,EAAG/M,EAAI,SAAUlE,EAAGiD,EAAG+B,GACrB,IAAIxB,EAAIwB,GAAK,IACXnC,EAAI7C,EAAE6E,WACR,OAAOhC,EAAE5D,OAASgE,EAAIiB,EAAEV,EAAIX,EAAGI,GAAKJ,CACtC,EAAGA,EAAI,SAAU7C,GACf,IAAIiD,EAAG+B,EACP,IAAKhF,EAAIA,GAAK,CAAC,EAAGiD,EAAI,EAAGA,EAAIsB,UAAUtF,OAAQgE,IAAK,GAAI+B,EAAIT,UAAUtB,GAAI,IAAK,IAAIO,KAAKwB,EAAGA,EAAE5F,eAAeoE,KAAO,iBAAmBwB,EAAExB,GAAKX,EAAE7C,EAAEwD,GAAIwB,EAAExB,IAAMxD,EAAEwD,GAAKwB,EAAExB,IACtK,OAAOxD,CACT,EAAGgF,EAAI,SAAUhF,EAAGiD,GAClB,IAAK,IAAI+B,EAAI,EAAGA,EAAI/B,EAAEhE,OAAQ+F,IAAK,GAAI/B,EAAE+B,GAAGiM,gBAAkBjR,EAAEiR,cAAe,OAAOjM,EACtF,OAAQ,CACV,EAAGxB,EAAI,CACLizR,aAAc,CACZvtQ,KAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YACzEwtQ,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtDrgR,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3F/O,SAAU,CAAC,KAAM,MACjBmG,QAAS,SAAUxN,GACjB,IAAIiD,EAAIjD,EAAI,GACVgF,EAAI,CACF,EAAG,KACH,EAAG,KACH,EAAG,MAEP,OAAO,IAAM2H,KAAKwF,MAAMnS,EAAI,IAAM,KAAOgF,EAAE/B,GAAK+B,EAAE/B,GAAK,IACzD,GAEF0zR,WAAY,iBACZC,WAAY,2CACZC,SAAU,qBACVC,QAAS,uIACTC,OAAQ,gBACNC,EAAgB,SAAUh3R,GAC5B,IAAIiD,EAAIwF,KACNzD,EAAInC,EAAEW,EAAGxD,GACXiD,EAAEwzR,aAAezxR,EAAEyxR,aAAcxzR,EAAE0zR,WAAa3xR,EAAE2xR,WAAY1zR,EAAE2zR,WAAa5xR,EAAE4xR,WAAY3zR,EAAE4zR,SAAW7xR,EAAE6xR,SAAU5zR,EAAE6zR,QAAU9xR,EAAE8xR,QAAS7zR,EAAE8zR,OAAS/xR,EAAE+xR,MAC1J,GAAG53R,UAAY,CACbk+B,YAAa25P,EACbjyQ,SAAU,SAAU/kB,GAClB,IAAIiD,EACJ,OAAO,KAAOA,EAAI+B,EAAEhF,EAAGyI,KAAKguR,aAAargR,aAAe,KAAOnT,EAAI+B,EAAEhF,EAAGyI,KAAKguR,aAAapgR,QAAU,GAAIpT,CAC1G,EACAygL,UAAW,SAAU1jL,EAAGiD,GACtB,IAAI+B,EACFxB,EACAX,EACAJ,EACA1D,EACAmF,EACA3B,EACAsP,EACA9R,EACAgvE,EACAzsE,EAAImG,KACJpG,GAAI,EACJuN,GAAI,EACJo/D,EAAI1sE,EAAEm0R,aACNz1R,EAAI,CACF4R,KAAM,KACNZ,KAAM,KACNW,MAAO,KACP0J,IAAK,KACLmK,KAAM,EACNxO,IAAK,EACLi/Q,IAAK,GAET,IAAKj3R,EAAG,OAAO,KACf,GAAIA,aAAayF,KAAM,OAAOzF,EAC9B,GAAI,MAAQiD,EAAG,OAAQJ,EAAIiW,SAAS9Y,IAAM,IAAIyF,KAAK,IAAM5C,GAAK7C,EAC9D,cAAeA,GACb,IAAK,SACH,OAAO,IAAIyF,KAAKzF,GAClB,IAAK,SACH,MACF,QACE,OAAO,KAEX,KAAMgF,EAAI/B,EAAE2K,MAAMtL,EAAEs0R,cAAgB,IAAM5xR,EAAE/F,OAAQ,MAAM,IAAIkC,MAAM,mCACpE,IAAKqC,EAAIxD,EAAE6N,QAAQvL,EAAEq0R,WAAY,MAAMjgR,MAAM,MAAO7T,EAAI,EAAGA,EAAIW,EAAEvE,OAAQ4D,IAAK,OAAQJ,EAAIe,EAAEX,GAAI9D,EAAI+Z,SAASrW,GAAIuC,EAAEnC,IACjH,IAAK,IACL,IAAK,IACH,IAAK9D,EAAG,OAAO,KACfgB,EAAI0C,EAAExD,OAAQ+B,EAAEgR,KAAO,IAAMjS,EAAI+Y,UAAU/Z,EAAI,GAAK,KAAO,MAAQ0D,GAAK1D,EAAGsD,GAAI,EAC/E,MACF,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACH,GAAI0F,MAAMhJ,GAAI,CACZ,KAAM,GAAKmF,EAAI5B,EAAEyiB,SAAStiB,KAAM,OAAO,KACvCzB,EAAE2R,MAAQzO,CACZ,KAAO,CACL,KAAM,GAAKnF,GAAKA,GAAK,IAAK,OAAO,KACjCiC,EAAE2R,MAAQ5T,CACZ,CACAsD,GAAI,EACJ,MACF,IAAK,IACL,IAAK,IACH,KAAM,GAAKtD,GAAKA,GAAK,IAAK,OAAO,KACjCiC,EAAEqb,IAAMtd,EAAGsD,GAAI,EACf,MACF,IAAK,IACL,IAAK,IACH,GAAI0sE,EAAIvrE,EAAEjB,GAAK,EAAIyC,EAAEuQ,QAAQ,KAAOvQ,EAAEuQ,QAAQ,MAAQ,EAAIvQ,EAAEuQ,QAAQ,KAAOvQ,EAAEuQ,QAAQ,MAAQ,IAAK,EAAIhT,EAAGsP,EAAI+yM,EAAE71I,EAAGC,EAAE3nE,SAAS,IAAM,EAAIu9M,EAAE71I,EAAGC,EAAE3nE,SAAS,IAAM,IAAM,EAAG,GAAKtI,GAAKA,GAAK,KAAO,EAAI8S,EAAI7Q,EAAEwlB,KAAOznB,EAAI8S,EAAI,EAAI,GAAK9S,GAAKA,GAAK,KAAOiC,EAAEwlB,KAAOznB,OAAQ,CAC9P,KAAM,GAAKA,GAAKA,GAAK,IAAK,OAAO,KACjCiC,EAAEwlB,KAAOznB,CACX,CACA6Q,GAAI,EACJ,MACF,IAAK,IACL,IAAK,IACH,KAAM,GAAK7Q,GAAKA,GAAK,IAAK,OAAO,KACjCiC,EAAEwlB,KAAOznB,EAAG6Q,GAAI,EAChB,MACF,IAAK,IACH,KAAM,GAAK7Q,GAAKA,GAAK,IAAK,OAAO,KACjCiC,EAAEgX,IAAMjZ,EAAG6Q,GAAI,EACf,MACF,IAAK,IACH,KAAM,GAAK7Q,GAAKA,GAAK,IAAK,OAAO,KACjCiC,EAAEi2R,IAAMl4R,EAAG6Q,GAAI,EAEnB,IAAI,IAAOvN,GAAKrB,EAAEgR,MAAQhR,EAAE2R,OAAS3R,EAAEqb,IAAKrb,EAAE4R,KAAO,IAAInN,KAAKzE,EAAEgR,KAAMhR,EAAE2R,MAAQ,EAAG3R,EAAEqb,IAAKrb,EAAEwlB,KAAMxlB,EAAEgX,IAAKhX,EAAEi2R,IAAK,OAAQ,CACtH,IAAI,IAAOrnR,EAAG,OAAO,KACrB5O,EAAE4R,KAAO,IAAInN,KAAK,EAAG,EAAG,EAAGzE,EAAEwlB,KAAMxlB,EAAEgX,IAAKhX,EAAEi2R,IAAK,EACnD,CACA,OAAOj2R,EAAE4R,IACX,EACAskR,UAAW,SAAUl3R,EAAGiD,GACtB,GAAI,iBAAmBjD,EAAG,OAAOA,EACjC,IAAIgF,EACFxB,EACAX,EACAJ,EACA1D,EACAmF,EACA3B,EAAIvC,EAAE6N,QAAQpF,KAAKkuR,WAAY,MAAMjgR,MAAM,MAC3C7E,EAAI5O,EAAE2K,MAAMnF,KAAKmuR,YACjB72R,EAAI,IAAI0F,KACRspE,EAAI,EACN,IAAK,WAAWzgE,KAAKuD,EAAE,IAAK,OAAO7R,EACnC,IAAK6C,EAAI,EAAGA,EAAIN,EAAEtD,OAAQ4D,IAAK,CAC7B,GAAIksE,EAAI,EAAGhwE,EAAIwD,EAAEM,GAAIqB,EAAI4U,SAAS/Z,EAAEiO,OAAO,EAAG,IAAKjF,MAAM7D,GAAI,OAAO,KACpE,OAAQrB,GACN,KAAK,EACH,MAAQgP,EAAE,IAAM,MAAQA,EAAE,GAAK9R,EAAE+X,SAAS5T,EAAI,GAAKnE,EAAEqhL,QAAQl9K,GAC7D,MACF,KAAK,EACH,MAAQ2N,EAAE,IAAM,MAAQA,EAAE,GAAK9R,EAAEqhL,QAAQl9K,GAAKnE,EAAE+X,SAAS5T,EAAI,GAC7D,MACF,KAAK,EACH,GAAIV,EAAIzD,EAAEoZ,cAAe41D,GAAK/pE,EAAIjG,EAAEE,QAAU,EAAI+F,EAAI,IAAKxB,EAAIsV,SAAS9T,EAAI,EAAIxB,EAAEqB,WAAWmI,OAAO,EAAG,EAAIhI,GAAKjG,EAAIA,EAAEiO,OAAO,EAAG,KAAM,OAAO,KAC7IjN,EAAEqZ,YAAY5V,GACd,MACF,KAAK,EACHzD,EAAE8nL,SAAS3jL,GACX,MACF,KAAK,EACHnE,EAAE+nL,WAAW5jL,GACb,MACF,KAAK,EACHnE,EAAEgoL,WAAW7jL,GAEjB,GAAKzB,EAAI1D,EAAEiO,OAAO+hE,IAAI9vE,QAAUsD,EAAE67B,OAAOv7B,EAAI,EAAG,EAAGJ,EACrD,CACA,OAAO1C,CACT,EACAo3R,YAAa,SAAUn3R,EAAGwD,GACxB,IAAIwB,EACF/B,EAAIwF,KACJ5F,EAAII,EAAEwzR,aACNh0R,EAAI,YACJ1D,EAAI,SAAUiB,EAAGiD,GACf,OAAO+B,EAAEhF,GAAKgF,EAAEhF,KAAOiD,CACzB,EACF,OAAO+B,EAAI,CACTzC,EAAG,WACD,OAAO2B,EAAEc,EAAEmb,IAAK,EAClB,EACAykM,EAAG,WACD,OAAO/hN,EAAE6zR,UAAU1xR,EAAE+K,IACvB,EACAoQ,EAAG,WACD,OAAO3c,EAAEwhB,SACX,EACAjlB,EAAG,WACD,OAAO8C,EAAEqmB,KAAKlkB,EAAE+K,IAClB,EACA24M,EAAG,WACD,OAAO1jN,EAAE+K,KAAO,CAClB,EACAA,EAAG,WACD,OAAOvM,EAAE2Z,QACX,EACAq0N,EAAG,WACD,IAAIxxO,EAAI,IAAIyF,KAAKT,EAAEyyO,IAAKzyO,EAAExB,IAAM,EAAGwB,EAAEmb,KACnCld,EAAI,IAAIwC,KAAKT,EAAEyyO,IAAK,EAAG,GACzB,OAAO9qO,KAAK+c,OAAO1pB,EAAIiD,GAAK,MAC9B,EACA4iB,EAAG,WACD,IAAI7lB,EAAI,IAAIyF,KAAKT,EAAEyyO,IAAKzyO,EAAExB,IAAM,EAAGwB,EAAEmb,IAAMnb,EAAE0jN,IAAM,GACjDzlN,EAAI,IAAIwC,KAAKzF,EAAEmZ,cAAe,EAAG,GACnC,OAAOjV,EAAE,EAAIyI,KAAK+c,OAAO1pB,EAAIiD,GAAK,MAAQ,GAAI,EAChD,EACA2pJ,EAAG,WACD,OAAO/pJ,EAAEwT,OAAO7S,EAAEuhB,WACpB,EACA1iB,EAAG,WACD,OAAO6B,EAAEc,EAAExB,IAAK,EAClB,EACAyM,EAAG,WACD,OAAOpN,EAAEuT,YAAY5S,EAAEuhB,WACzB,EACAvhB,EAAG,WACD,OAAOA,EAAEuhB,WAAa,CACxB,EACA9hB,EAAG,WACD,OAAO,IAAIwC,KAAKT,EAAEyyO,IAAKzyO,EAAExB,IAAK,GAAGwhB,SACnC,EACAtW,EAAG,WACD,IAAI1O,EAAIgF,EAAEyyO,IACV,OAAOz3O,EAAI,GAAK,GAAKA,EAAI,KAAO,GAAKA,EAAI,KAAO,EAAI,EAAI,CAC1D,EACAyC,EAAG,WACD,IAAIzC,EAAIgF,EAAExB,IACRP,EAAI+B,EAAE6gB,IACR,OAAO7gB,EAAEyyO,KAAO,KAAOz3O,GAAKiD,EAAI,EAAI,EAAI,IAAMjD,GAAK,EAAIiD,GAAK,EAAI,EAClE,EACAw0O,EAAG,WACD,OAAOj0O,EAAE2V,aACX,EACAhJ,EAAG,WACD,OAAOnL,EAAEyyO,IAAI5yO,WAAWZ,OAAO,EACjC,EACAe,EAAG,WACD,OAAOA,EAAEkuO,IAAIjiO,aACf,EACAiiO,EAAG,WACD,IAAIlzO,EAAIgF,EAAEguO,IAAM,GAAK,EAAI,EACzB,OAAOnwO,EAAEwE,SAASrH,EACpB,EACA6yO,EAAG,WACD,IAAI7yO,EAAI,KAAOwD,EAAE4zR,cACfn0R,EAAI,GAAKO,EAAE8gB,gBACXtf,EAAIxB,EAAE6zR,gBACR,OAAOnzR,EAAEyI,KAAKwF,OAAOnS,EAAIiD,EAAI+B,EAAI,MAAQ,MAAQ,IAAK,EACxD,EACAgqE,EAAG,WACD,OAAOhqE,EAAEguO,IAAM,IAAM,EACvB,EACAA,EAAG,WACD,OAAOxvO,EAAEykL,UACX,EACAr4K,EAAG,WACD,OAAO1L,EAAEc,EAAEgqE,IAAK,EAClB,EACAikK,EAAG,WACD,OAAO/uO,EAAEc,EAAEguO,IAAK,EAClB,EACAj0O,EAAG,WACD,OAAOmF,EAAEV,EAAE8zR,aAAc,EAC3B,EACApzR,EAAG,WACD,OAAOA,EAAEV,EAAEk0O,aAAc,EAC3B,EACA7lO,EAAG,WACD,OAAO3N,EAAE,IAAMV,EAAE+zR,kBAAmB,EACtC,EACAv3R,EAAG,WACD,MAAO,WAAW6iB,KAAK0K,OAAO/pB,IAAI,IAAM,4BAC1C,EACAilN,EAAG,WACD,OAAO,IAAIhjN,KAAKT,EAAEyyO,IAAK,GAAKhyO,KAAK6T,IAAItU,EAAEyyO,IAAK,IAAM,IAAIhyO,KAAKT,EAAEyyO,IAAK,GAAKhyO,KAAK6T,IAAItU,EAAEyyO,IAAK,GAAK,EAAI,CAClG,EACAl9E,EAAG,WACD,IAAIv6J,EAAIwD,EAAEwnB,oBACR/nB,EAAI0J,KAAKC,IAAI5M,GACf,OAAQ,EAAIA,EAAI,IAAM,KAAOkE,EAAE,IAAMyI,KAAKwF,MAAMlP,EAAI,IAAMA,EAAI,GAAI,EACpE,EACAyrE,EAAG,WACD,IAAI1uE,EAAIgF,EAAEu1J,IACV,OAAOv6J,EAAEgN,OAAO,EAAG,GAAK,IAAMhN,EAAEgN,OAAO,EAAG,EAC5C,EACAyzM,EAAG,WACD,OAAQlzL,OAAO/pB,GAAGoK,MAAM3K,EAAE6zR,UAAY,CAAC,KAAK92P,MAAMnyB,QAAQ5K,EAAE8zR,OAAQ,KAAO,KAC7E,EACAxlD,EAAG,WACD,OAAO,IAAM/tO,EAAEwnB,mBACjB,EACA1oB,EAAG,WACD,MAAO,iBAAiBuL,QAAQpL,EAAG1D,EACrC,EACA8D,EAAG,WACD,MAAO,mBAAmBgL,QAAQpL,EAAG1D,EACvC,EACAunP,EAAG,WACD,OAAO9iP,EAAEyE,UAAY,KAAO,CAC9B,GACClJ,EAAEiB,EAAGA,EACV,EACA0lL,WAAY,SAAU1lL,EAAGiD,GACvB,IAAI+B,EACFxB,EACAX,EACAJ,EACA1D,EACAmF,EAAI,GACN,GAAI,iBAAmBlE,KAAOA,EAAIyI,KAAKi7K,UAAU1jL,EAAGiD,IAAK,OAAO,KAChE,GAAIjD,aAAayF,KAAM,CACrB,IAAK5C,EAAII,EAAEhE,OAAQ+F,EAAI,EAAGA,EAAInC,EAAGmC,IAAK,OAASjG,EAAIkE,EAAEwb,OAAOzZ,KAAO,OAASjG,IAAM,EAAIiG,GAAK,OAAS/B,EAAEwb,OAAOzZ,EAAI,GAAKd,GAAKnF,GAAK0D,EAAIgG,KAAK0uR,YAAYp4R,EAAGiB,GAAIgF,IAAMnC,EAAI,GAAK4F,KAAKouR,SAASvoR,KAAKvP,IAAM,MAAQkE,EAAEwb,OAAOzZ,EAAI,KAAOxB,EAAIsV,SAASrW,IAAM,EAAGA,GAAKgG,KAAKguR,aAAajpR,QAAQhK,IAAKU,GAAKzB,IAC/R,OAAOyB,CACT,CACA,MAAO,EACT,EAEJ,CAnUC,GAoUD,IAw5BWlE,IAx5BiB,SAAU0O,GACpC,aAEA,IAAIxK,EAAI,CACJ6qO,KAAM,CACJyoD,GAAI,CACFnhR,OAAQ,CAAC,sEAAgB,2BAAQ,2BAAQ,iCAAS,2BAAQ,uCAAU,2BAAQ,eAAM,iCAAS,gEAAe,sEAAgB,iEAC1HohR,eAAgB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAC/CC,UAAW,CAAC,iCAAS,6CAAW,mDAAY,mDAAY,uCAAU,uCAAU,iCAAS,mCAEvFC,GAAI,CACFthR,OAAQ,CAAC,WAAY,YAAa,SAAU,UAAW,MAAO,QAAS,QAAS,SAAU,aAAc,YAAa,YAAa,aAClIohR,eAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SACrDC,UAAW,CAAC,gBAAY,OAAQ,aAAS,WAAY,MAAO,SAAU,yBAExElzP,GAAI,CACFnuB,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,YACxHohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,SAAU,QAAS,SAAU,OAAQ,QAAS,QAAS,UAErEppP,GAAI,CACFj4B,OAAQ,CAAC,YAAU,aAAW,OAAQ,WAAS,SAAO,aAAQ,aAAQ,cAAS,YAAa,aAAW,cAAY,YACnHohR,eAAgB,CAAC,MAAO,SAAO,aAAQ,SAAO,MAAO,SAAO,OAC5DC,UAAW,CAAC,aAAc,eAAa,oBAAe,kBAAgB,cAAe,gBAAc,gBAErGE,GAAI,CACFvhR,OAAQ,CAAC,uCAAU,mDAAY,2BAAQ,iCAAS,qBAAO,qBAAO,qBAAO,uCAAU,yDAAa,mDAAY,6CAAW,oDACnHohR,eAAgB,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,gBACrDC,UAAW,CAAC,uCAAU,+DAAc,6CAAW,iCAAS,yDAAa,iCAAS,yCAEhFpqB,GAAI,CACFj3P,OAAQ,CAAC,6CAAW,mDAAY,iCAAS,qBAAO,iCAAS,uCAAU,qBAAO,2BAAQ,qBAAO,eAAM,2BAAQ,kCACvGohR,eAAgB,CAAC,uCAAU,uCAAU,wCAAW,mDAAY,6CAAW,2BAAQ,4BAC/EC,UAAW,CAAC,6CAAW,uCAAU,6CAAW,mDAAY,mDAAY,2BAAQ,2BAAQ,+CAEtFG,GAAI,CACFxhR,OAAQ,CAAC,uCAAU,6CAAW,2BAAQ,uCAAU,qBAAO,2BAAQ,2BAAQ,uCAAU,mDAAY,6CAAW,uCAAU,8CAClHohR,eAAgB,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,gBACrDC,UAAW,CAAC,qEAAe,qEAAe,6CAAW,iCAAS,6CAAW,6CAAW,+CAEtFI,GAAI,CACFzhR,OAAQ,CAAC,uCAAU,iCAAS,mDAAY,6CAAW,6CAAW,6CAAW,uCAAU,6CAAW,mDAAY,6CAAW,mDAAY,8CACjIohR,eAAgB,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,sBAC3DC,UAAW,CAAC,uCAAU,yDAAa,mDAAY,uCAAU,uCAAU,8CAAY,yCAEjFv4G,GAAI,CACF9oK,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAEhFnyP,GAAI,CACFlvB,OAAQ,CAAC,+DAAc,qEAAe,6CAAW,mDAAY,iCAAS,6CAAW,6CAAW,yDAAa,qEAAe,yDAAa,yDAAa,gEAClJohR,eAAgB,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,sBAC3DC,UAAW,CAAC,6CAAW,6CAAW,iCAAS,6CAAW,uCAAU,yDAAa,+CAE/E1yD,GAAI,CACF3uN,OAAQ,CAAC,SAAU,UAAW,UAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACpHohR,eAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrDC,UAAW,CAAC,UAAW,SAAU,WAAY,WAAY,aAAc,UAAW,YAEpFK,GAAI,CACF1hR,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,WAAY,YAAa,UAAW,WAAY,YACzHohR,eAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrDC,UAAW,CAAC,SAAU,UAAW,UAAW,WAAY,YAAa,UAAW,aAElF/9O,GAAI,CACFtjC,OAAQ,CAAC,OAAQ,aAAS,OAAQ,QAAS,aAAS,UAAW,SAAU,eAAW,WAAS,OAAQ,aAAS,eAC9GohR,eAAgB,CAAC,MAAO,MAAO,MAAO,SAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,QAAS,YAAa,YAAQ,mBAAY,gBAAY,OAAQ,cAE5EzkK,GAAI,CACF58G,OAAQ,CAAC,UAAW,aAAW,OAAQ,QAAS,MAAO,OAAQ,UAAW,UAAQ,YAAa,UAAW,WAAY,eACtHohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,WAAY,QAAS,QAAS,WAAY,QAAS,WAAY,WAE7EM,GAAI,CACF3hR,OAAQ,CAAC,QAAS,UAAW,QAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,aAAc,UAAW,YAAa,aACzHohR,eAAgB,CAAC,MAAO,MAAO,MAAO,SAAO,MAAO,MAAO,UAC3DC,UAAW,CAAC,UAAW,QAAS,SAAU,eAAa,SAAU,UAAW,cAE9E79P,GAAI,CACFxjB,OAAQ,CAAC,uCAAU,+DAAc,uCAAU,uCAAU,6CAAW,mDAAY,6CAAW,6CAAW,6CAAW,uCAAU,yDAAa,8CACpIohR,eAAgB,CAAC,gBAAO,UAAM,UAAM,UAAM,gBAAO,UAAM,WACvDC,UAAW,CAAC,6CAAW,uCAAU,uCAAU,qBAAO,iCAAS,iCAAS,iCAAS,+CAE/EO,GAAI,CACF5hR,OAAQ,CAAC,eAAW,OAAQ,SAAU,gBAAY,MAAO,WAAY,SAAU,gBAAY,gBAAY,mBAAe,WAAY,iBAClIohR,eAAgB,CAAC,KAAM,KAAM,KAAM,UAAM,KAAM,KAAM,MACrDC,UAAW,CAAC,YAAa,oBAAgB,SAAU,aAAS,WAAY,cAAU,WAEpFQ,GAAI,CACF7hR,OAAQ,CAAC,UAAW,YAAa,WAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,WAAY,UAAW,WAAY,YAC1HohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,UAAW,UAAW,WAAS,SAAU,SAAU,QAAS,cAE1El3P,GAAI,CACFnqB,OAAQ,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,qBAAO,sBAC5EohR,eAAgB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,WAEjD5jG,GAAI,CACFx9K,OAAQ,CAAC,UAAW,WAAY,OAAQ,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,YACvHohR,eAAgB,CAAC,SAAO,SAAO,MAAO,MAAO,MAAO,MAAO,WAE7DU,GAAI,CACF9hR,OAAQ,CAAC,iCAAS,uCAAU,iCAAS,iCAAS,iCAAS,6CAAW,6CAAW,iCAAS,uCAAU,iCAAS,mDAAY,kCACrHohR,eAAgB,CAAC,iCAAS,uCAAU,6CAAW,2BAAQ,uCAAU,uCAAU,4BAC3EC,UAAW,CAAC,mDAAY,uCAAU,6CAAW,2BAAQ,qEAAe,uCAAU,6BAEhFU,GAAI,CACF/hR,OAAQ,CAAC,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,WAAO,WAAO,YAC7EohR,eAAgB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAC/CC,UAAW,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,uBAExDv3L,GAAI,CACF9pF,OAAQ,CAAC,UAAW,WAAY,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,UAAW,WAAY,YAC/HohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,WAAY,YAAU,aAAW,eAAa,aAAW,aAAW,WAElFtqB,GAAI,CACF/2P,OAAQ,CAAC,SAAU,UAAW,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACrHohR,eAAgB,CAAC,SAAO,MAAO,MAAO,MAAO,MAAO,MAAO,UAC3DC,UAAW,CAAC,YAAU,SAAU,UAAW,SAAU,UAAW,SAAU,cAE5EW,GAAI,CACFhiR,OAAQ,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACpHohR,eAAgB,CAAC,SAAO,MAAO,MAAO,MAAO,MAAO,MAAO,UAC3DC,UAAW,CAAC,YAAU,SAAU,UAAW,SAAU,UAAW,SAAU,cAE5E7+B,GAAI,CACFxiP,OAAQ,CAAC,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,WAAO,WAAO,YAC7EohR,eAAgB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAC/CC,UAAW,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,iBAElDY,GAAI,CACFjiR,OAAQ,CAAC,aAAW,aAAW,aAAW,aAAW,aAAW,aAAW,aAAW,aAAW,aAAW,cAAY,cAAY,eACpIohR,eAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrDC,UAAW,CAAC,qBAAY,eAAW,cAAU,mBAAU,oBAAW,kBAAW,sBAE/Ea,GAAI,CACFliR,OAAQ,CAAC,SAAU,UAAW,QAAS,QAAS,MAAO,QAAS,QAAS,SAAU,YAAa,UAAW,WAAY,YACvHohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,WAAO,MAAO,OAC3DC,UAAW,CAAC,UAAW,aAAc,QAAS,QAAS,eAAW,QAAS,WAE7ExgG,GAAI,CACF7gL,OAAQ,CAAC,QAAS,UAAQ,cAAU,QAAS,cAAU,cAAU,gBAAY,QAAS,kBAAQ,gBAAS,WAAY,YACnHohR,eAAgB,CAAC,KAAM,KAAM,QAAM,KAAM,UAAM,QAAM,OAEvDe,GAAI,CACFniR,OAAQ,CAAC,YAAU,aAAW,aAAW,aAAW,WAAS,YAAU,YAAU,YAAa,aAAc,aAAW,WAAY,YACnIohR,eAAgB,CAAC,KAAM,QAAM,KAAM,MAAO,KAAM,QAAM,OACtDC,UAAW,CAAC,cAAY,gBAAS,OAAQ,SAAU,qBAAa,YAAU,YAE5Ee,GAAI,CACFpiR,OAAQ,CAAC,SAAU,SAAU,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,WAAY,UAAW,SAAU,UAChHohR,eAAgB,CAAC,IAAK,KAAM,QAAM,OAAK,KAAM,IAAK,UAClDC,UAAW,CAAC,QAAS,oBAAgB,mDAAmB,kCAAY,gCAAe,eAAQ,yBAE7F/lG,GAAI,CACFt7K,OAAQ,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,MAAO,MAAO,SAAU,YAAa,UAAW,WAAY,YAClHohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,WAAO,MAAO,OAC3DC,UAAW,CAAC,WAAY,cAAe,SAAU,UAAW,gBAAY,QAAS,WAEnF5+B,GAAI,CACFziP,OAAQ,CAAC,QAAS,SAAU,UAAQ,QAAS,OAAQ,OAAQ,SAAU,QAAS,WAAY,UAAW,WAAY,YACnHohR,eAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrDC,UAAW,CAAC,WAAY,UAAW,UAAW,WAAY,SAAU,YAAa,aAEnF,QAAS,CACPrhR,OAAQ,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACvHohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAEhFgB,GAAI,CACFriR,OAAQ,CAAC,UAAW,WAAY,WAAS,SAAU,MAAO,QAAS,QAAS,SAAU,YAAa,WAAY,WAAY,aAC3HohR,eAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/CC,UAAW,CAAC,iBAAY,eAAa,eAAa,eAAa,eAAa,QAAS,eAEvFiB,GAAI,CACFtiR,OAAQ,CAAC,YAAa,UAAW,UAAW,UAAW,UAAW,SAAU,UAAW,UAAW,SAAU,QAAS,SAAU,WAC/HohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,UAAW,aAAc,YAAa,aAAc,WAAY,WAAY,cAE1FkB,GAAI,CACFviR,OAAQ,CAAC,WAAY,WAAY,YAAa,WAAY,WAAY,aAAW,cAAY,SAAU,UAAW,UAAW,YAAa,YAC1IohR,eAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrDC,UAAW,CAAC,YAAa,YAAa,UAAW,cAAe,UAAW,YAAa,aAE1FmB,GAAI,CACFxiR,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACtFohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3DC,UAAW,CAAC,UAAW,OAAQ,SAAU,cAAY,QAAS,SAAU,cAE1E9qM,GAAI,CACFv2E,OAAQ,CAAC,gBAAY,eAAW,cAAU,UAAW,UAAW,SAAU,SAAU,UAAW,QAAS,WAAY,UAAW,YAC/HohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,WAAO,MAAO,OAC3DC,UAAW,CAAC,WAAY,cAAe,SAAU,UAAW,gBAAY,QAAS,WAEnFoB,GAAI,CACFziR,OAAQ,CAAC,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,WAAO,WAAO,YAC7EohR,eAAgB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAC/CC,UAAW,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,uBAExDhtP,GAAI,CACFr0B,OAAQ,CAAC,SAAU,UAAW,OAAQ,iBAAa,oBAAW,gBAAY,SAAU,sBAAa,eAAW,SAAU,iBAAa,iBACnIohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,iBAC3DC,UAAW,CAAC,cAAe,cAAe,cAAe,oBAAgB,iBAAkB,eAAgB,0BAE7GqB,GAAI,CACF1iR,OAAQ,CAAC,gBAAY,iBAAa,QAAS,gBAAY,QAAS,cAAU,cAAU,UAAW,aAAc,WAAY,YAAa,aACtIohR,eAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACrDC,UAAW,CAAC,iBAAa,YAAa,WAAY,iBAAa,cAAe,aAAc,cAE9FsB,GAAI,CACF3iR,OAAQ,CAAC,6CAAW,mDAAY,2BAAQ,iCAAS,qBAAO,2BAAQ,2BAAQ,uCAAU,yDAAa,mDAAY,6CAAW,oDACtHohR,eAAgB,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,sBAC3DC,UAAW,CAAC,uCAAU,+DAAc,6CAAW,iCAAS,mDAAY,iCAAS,yCAE/EuB,GAAI,CACF5iR,OAAQ,CAAC,8BAAW,8BAAW,8BAAW,8BAAW,8BAAW,8BAAW,8BAAW,8BAAW,8BAAW,+BAAY,+BAAY,gCACpIohR,eAAgB,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,sBAC3DC,UAAW,CAAC,iCAAS,uCAAU,uCAAU,iCAAS,uCAAU,iCAAS,uBAEvE,QAAS,CACPrhR,OAAQ,CAAC,UAAW,YAAa,WAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,WAAY,UAAW,WAAY,YAC1HohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,UAC3DC,UAAW,CAAC,UAAW,UAAW,WAAS,SAAU,SAAU,QAAS,cAE1EwB,GAAI,CACF7iR,OAAQ,CAAC,YAAU,aAAW,QAAS,WAAS,SAAO,SAAO,SAAO,SAAU,YAAa,aAAW,WAAY,YACnHohR,eAAgB,CAAC,KAAM,KAAM,KAAM,KAAM,UAAM,KAAM,MACrDC,UAAW,CAAC,cAAU,WAAY,SAAU,SAAU,eAAW,SAAU,WAE7EyB,GAAI,CACF9iR,OAAQ,CAAC,QAAS,SAAU,OAAQ,QAAS,MAAO,UAAW,SAAU,QAAS,UAAW,QAAS,YAAU,WAChHohR,eAAgB,CAAC,MAAO,SAAO,MAAO,SAAO,MAAO,MAAO,QAC3DC,UAAW,CAAC,SAAU,eAAU,eAAW,kBAAa,UAAW,WAAY,gBAEjF,QAAS,CACPrhR,OAAQ,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,MAAO,MAAO,SAAU,YAAa,UAAW,WAAY,YAClHohR,eAAgB,CAAC,MAAO,MAAO,MAAO,MAAO,WAAO,MAAO,OAC3DC,UAAW,CAAC,UAAW,aAAc,SAAU,QAAS,gBAAY,QAAS,WAE/E0B,GAAI,CACF/iR,OAAQ,CAAC,uCAAU,6CAAW,2BAAQ,iCAAS,qBAAO,qBAAO,qBAAO,uCAAU,yDAAa,6CAAW,mDAAY,oDAClHohR,eAAgB,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,sBAC3DC,UAAW,CAAC,uCAAU,yDAAa,uCAAU,iCAAS,mDAAY,iCAAS,yCAE7E2B,GAAI,CACFhjR,OAAQ,CAAC,UAAW,WAAY,OAAQ,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,YACvHohR,eAAgB,CAAC,SAAO,SAAO,MAAO,MAAO,MAAO,MAAO,UAC3DC,UAAW,CAAC,YAAU,YAAU,SAAU,SAAU,UAAW,SAAU,cAE3E,QAAS,CACPrhR,OAAQ,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,qBAAO,sBAC5EohR,eAAgB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAC/CC,UAAW,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,uBAExD4B,GAAI,CACFjjR,OAAQ,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,qBAAO,sBAC5EohR,eAAgB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,UAC/CC,UAAW,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,uBAExD6B,GAAI,CACFljR,OAAQ,CAAC,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,uBAAS,wBAAU,wBAAU,yBAC9GqhR,UAAW,CAAC,mDAAY,6CAAW,mDAAY,mDAAY,mDAAY,2BAAQ,mCAEjF8B,GAAI,CACFnjR,OAAQ,CAAC,iCAAS,uCAAU,qBAAO,iCAAS,qBAAO,2BAAQ,2BAAQ,uCAAU,uCAAU,6CAAW,uCAAU,kCAC5GohR,eAAgB,CAAC,UAAM,UAAM,UAAM,UAAM,UAAM,UAAM,sBACrDC,UAAW,CAAC,iCAAS,qBAAO,iCAAS,iCAAS,iCAAS,2BAAQ,qBAAO,mCAExE+B,GAAI,CACFpjR,OAAQ,CAAC,6CAAW,6CAAW,2BAAQ,iCAAS,iCAAS,uCAAU,uCAAU,6CAAW,yDAAa,yDAAa,mDAAY,0DAC9HohR,eAAgB,CAAC,eAAM,qBAAO,qBAAO,qBAAO,qBAAO,2BAAQ,sBAC3DC,UAAW,CAAC,uCAAU,+DAAc,yDAAa,+DAAc,yDAAa,uCAAU,mCAExFgC,GAAI,CACFrjR,OAAQ,CAAC,oDAAa,0DAAc,sEAAgB,oDAAa,2BAAQ,iCAAS,2BAAQ,8CAAY,8CAAY,sEAAgB,gEAAe,2DACjJohR,eAAgB,CAAC,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,qBAAO,sBAC3DC,UAAW,CAAC,6CAAW,6CAAW,6CAAW,6CAAW,mDAAY,2BAAQ,mCAE9EiC,GAAI,CACFtjR,OAAQ,CAAC,UAAW,SAAU,OAAQ,SAAU,OAAQ,YAAa,UAAW,QAAS,YAAa,UAAW,WAAY,YAC7HohR,eAAgB,CAAC,KAAM,MAAO,KAAM,KAAM,MAAO,KAAM,MACvDC,UAAW,CAAC,WAAY,YAAa,QAAS,UAAW,UAAW,WAAY,UAElFjqB,GAAI,CACFp3P,OAAQ,CAAC,6CAAW,yDAAa,iCAAS,uCAAU,iCAAS,uCAAU,uCAAU,6CAAW,+DAAc,yDAAa,mDAAY,0DACnIohR,eAAgB,CAAC,eAAM,qBAAO,2BAAQ,qBAAO,qBAAO,qBAAO,sBAC3DC,UAAW,CAAC,iCAAS,mDAAY,yDAAa,yDAAa,yDAAa,yDAAa,0CAGzF/3P,cAAel/B,SACfq+H,cAAe/6H,OACff,MAAO,GACP4nQ,KAAK,EACL1kQ,OAAQ,YACR0zR,WAAY,MACZl0G,WAAY,QACZm0G,WAAW,EACXxuO,KAAM,GACNyuO,oBAAoB,EACpBC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,EACrBC,mBAAmB,EACnBC,aAAa,EACbC,YAAY,EACZ76G,YAAY,EACZv2J,OAAO,EACPqxN,aAAa,EACbp9D,aAAa,EACbiB,SAAS,EACTC,SAAS,EACTk8G,SAAS,EACTC,SAAS,EACTC,aAAa,EACbC,aAAa,EACbC,WAAY,GACZC,QAAQ,EACRC,UAAU,EACVl7G,QAAQ,EACR0qD,MAAO,GACPywD,oBAAqB,EACrBC,aAAc,WAAa,EAC3BC,aAAc,WAAa,EAC3BC,cAAe,WAAa,EAC5BC,gBAAiB,WAAa,EAC9BC,aAAc,WAAa,EAC3BC,iBAAkB,WAAa,EAC/BC,OAAQ,WAAa,EACrB38G,QAAS,WAAa,EACtB48G,WAAY,WAAa,EACzBC,kBAAkB,EAClBC,eAAe,EACfC,SAAS,EACTn7Q,KAAM,cACNgvB,KAAM,cACNosP,eAAgB,EAChBC,SAAU,OACVC,uBAAwB,GACxBC,qBAAqB,EACrBC,aAAa,EACbC,YAAY,EACZC,YAAY,EACZC,eAAe,EACfC,aAAa,EACbC,YAAY,EACZC,aAAa,EACbC,UAAU,EACVC,MAAM,EACNC,gBAAgB,EAChBC,YAAY,EACZC,UAAW,KACXC,QAAS,KACTC,WAAY,EACZC,SAAU,GACVhlP,MAAO,GACPlT,GAAI,GACJm4P,OAAO,EACPC,UAAW,QACX/1P,UAAW,GACXg2P,SAAU,GACVC,iBAAkB,GAClBC,mBAAoB,GACpBC,WAAY,GACZC,YAAa,KACbC,cAAe,GACfC,iBAAkB,GAClBC,WAAY,EACZh/G,cAAe,KACfi/G,cAAc,EACdC,iBAAiB,EACjBC,cAAc,GAEhBz3Q,EAAI,KACJtiB,EAAI,KACJo7P,EAAI,KACJ55P,EAAI,CACFqC,SAAU,CAAC,KAAM,OAEnBxE,EAAI,WACF,IAAI7C,EAAIkE,EAAE6qO,KAAK6vB,GACb37P,EAAI,CACFimB,KAAMlpB,EAAE03R,UACRhB,UAAW12R,EAAEy3R,eACbphR,OAAQrW,EAAEqW,OACVD,YAAa1H,EAAEhJ,IAAI1F,EAAEqW,QAAQ,SAAUrW,GACrC,OAAOA,EAAE4yH,UAAU,EAAG,EACxB,KAEJ,mBAAqBokK,IAAkBlxQ,EAAItiB,EAAI,IAAIwzR,EAAc,CAC/DP,aAAc/nR,EAAE3I,OAAO,CAAC,EAAGf,EAAG/B,KAElC,EACAR,EAAI,CACF8zN,OAAQ,CACNinE,gBAAiB,CACft3R,OAAQ,mBACRw/K,WAAY,aACZk0G,WAAY,SAEdztC,UAAW,CACTzoE,UAAW,SAAU1jL,EAAGiD,GACtB,GAAIlE,EAAEkE,GAAI,OAAOO,EAAEkgL,UAAU1jL,EAAGiD,GAChC,IAAI+B,EAAIuxN,EAAOv2N,EAAGiD,GAClB,QAAS+B,EAAE0C,WAAa1C,EAAE8qB,QAC5B,EACA41J,WAAY,SAAU1lL,EAAGiD,GACvB,OAAOlE,EAAEkE,GAAKO,EAAEkiL,WAAW1lL,EAAGiD,GAAKszN,EAAOv2N,GAAGkG,OAAOjD,EACtD,EACAw6R,WAAY,SAAUz9R,GACpB,OAAOA,EAAE6N,QAAQ,QAAS,QAAQA,QAAQ,QAAS,MAAMA,QAAQ,QAAS,MAAMA,QAAQ,QAAS,MAAMA,QAAQ,QAAS,MAAMA,QAAQ,QAAS,MAAMA,QAAQ,QAAS,KACxK,KAIRa,EAAEgvR,eAAiB,CACjBC,UAAW,SAAU39R,GACnB,IAAIiD,EAAIiB,EAAE6qO,KAAK/uO,GAAKA,EAAI,KACxB4+P,IAAM37P,IAAM27P,EAAI37P,EAAGJ,IACrB,EACA+6R,iBAAkB,SAAU59R,GAC1B,GAAI,iBAAmBA,GAAKyC,EAAErD,eAAeY,GAAI,CAC/C,IAAIiD,EAAIR,EAAEzC,GACV0O,EAAE3I,OAAO7B,EAAGjB,EAAEu6R,iBAAkB13Q,EAAI7iB,EAAEkpP,SACxC,MAAOrmO,EAAI9lB,CACb,GAEF,IAAIiD,EAAI,CACJijB,SAAU,mBACV0gK,KAAM,eACN3gK,SAAU,eACV6gK,QAAS,mBACTC,QAAS,mBACTC,SAAU,mBACVC,SAAU,mBACVC,IAAK,mBACLG,IAAK,gBAEPtoL,EAAI,SAAUiB,GACZ,OAAQ,IAAMd,OAAOwhB,OAAOzd,GAAGsS,QAAQvV,EACzC,EACF,SAASqC,EAAErC,EAAGiD,EAAG+B,GACfyD,KAAKmK,KAAO5S,EAAGyI,KAAK2rR,KAAOnxR,EAAGwF,KAAKivC,MAAQ1yC,CAC7C,CACA0J,EAAE3I,OAAO2I,EAAEgvR,eAAgBz6R,GAAIJ,IAAKkB,OAAOmgD,mBAAqBngD,OAAOmgD,iBAAmB,SAAUl/C,GAClG,OAAOyD,KAAK88B,GAAKvgC,EAAGyD,KAAKm8C,iBAAmB,SAAU5kD,GACpD,IAAIiD,EAAI,cACR,MAAO,UAAYjD,IAAMA,EAAI,cAAeiD,EAAEqL,KAAKtO,KAAOA,EAAIA,EAAE6N,QAAQ5K,GAAG,SAAUjD,EAAGiD,EAAG+B,GACzF,OAAOA,EAAEgK,aACX,KAAKhK,EAAE4gJ,aAAa5lJ,IAAM,IAC5B,EAAGyI,IACL,GAAI7D,MAAMzF,UAAUoW,UAAY3Q,MAAMzF,UAAUoW,QAAU,SAAUvV,EAAGiD,GACrE,IAAI+B,EAAGxB,EACP,IAAKwB,EAAI/B,GAAK,EAAGO,EAAIiF,KAAKxJ,OAAQ+F,EAAIxB,EAAGwB,GAAK,EAAG,GAAIyD,KAAKzD,KAAOhF,EAAG,OAAOgF,EAC3E,OAAQ,CACV,GAAIS,KAAKtG,UAAU0+R,iBAAmB,WACpC,OAAO,IAAIp4R,KAAKgD,KAAK0Q,cAAe1Q,KAAKsc,WAAa,EAAG,GAAGC,SAC9D,EAAGtW,EAAE9I,GAAGk4R,eAAiB,SAAU98R,EAAG4jN,GACpC,OAAOn8M,KAAKk1B,MAAK,WACf,IAAIl7B,EACF1D,EACAmF,EACA3B,EACAsP,EACA9R,EAAI2O,EAAEjG,MACNzD,EAAI,SAAUhF,GACZ,IAAIiD,EACF+B,EAAI,CACFkR,EAAG,EACH/F,EAAG,GAEP,MAAO,eAAiBnQ,EAAE0B,MAAQ,cAAgB1B,EAAE0B,MAAQ,aAAe1B,EAAE0B,MAAQ,gBAAkB1B,EAAE0B,MAAQuB,EAAIjD,EAAEm+C,cAAcsC,QAAQ,IAAMzgD,EAAEm+C,cAAcgB,eAAe,GAAIn6C,EAAEkR,EAAIjT,EAAE88C,QAAS/6C,EAAEmL,EAAIlN,EAAE+8C,SAAW,cAAgBhgD,EAAE0B,MAAQ,YAAc1B,EAAE0B,MAAQ,cAAgB1B,EAAE0B,MAAQ,cAAgB1B,EAAE0B,MAAQ,aAAe1B,EAAE0B,MAAQ,eAAiB1B,EAAE0B,MAAQ,eAAiB1B,EAAE0B,OAASsD,EAAEkR,EAAIlW,EAAE+/C,QAAS/6C,EAAEmL,EAAInQ,EAAEggD,SAAUh7C,CACrb,EACA+pE,EAAI,IACJvrE,GAAI,EACJX,EAAI,EACJP,EAAI,EACJD,EAAI,EACJY,GAAI,EACJ2M,EAAI,EACJo/D,EAAI,WAAa,EACnB,SAAW41I,GAAKl2M,EAAEjG,MAAMyoD,SAAS,yBAA2BzuD,EAAI1C,EAAEmvC,WAAWrR,GAAG,GAAI9+B,EAAIgB,EAAE,GAAGuqF,aAAcpmF,EAAIzB,EAAE,GAAGqkD,aAAcvkD,EAAImM,EAAE,wCAAyCmD,EAAInD,EAAE,uCAAwCnM,EAAE0gD,OAAOpxC,GAAI9R,EAAE2wD,SAAS,uBAAuBzN,OAAO1gD,GAAIysE,EAAI,SAAUhvE,GACrS,IAAIiD,EAAI+B,EAAEhF,GAAGmQ,EAAItN,EAAI+M,EACrB3M,EAAI,IAAMA,EAAI,GAAIA,EAAI4O,EAAE,GAAGi1C,aAAezkD,IAAMY,EAAIZ,EAAIwP,EAAE,GAAGi1C,cAAe/mD,EAAEk8C,QAAQ,iCAAkC,CAAC8yB,EAAI9rE,EAAI8rE,EAAI,GACvI,EAAGl9D,EAAEupC,GAAG,wDAAwD,SAAUp7C,GACxEjB,GAAKgB,EAAEk8C,QAAQ,gCAAiC,CAAC2oK,IAAK/hN,EAAImC,EAAEhF,GAAGmQ,EAAGP,EAAIkJ,SAASjH,EAAE+lC,IAAI,cAAe,IAAKv1C,EAAIE,EAAE,GAAGukD,aAAc,cAAgB9mD,EAAE0B,MAAQ,eAAiB1B,EAAE0B,MAAQV,EAAE2+B,eAAiBjxB,EAAE1N,EAAE2+B,cAAc8Y,MAAMiY,SAAS,mBAAoBhiD,EAAE,CAAC1N,EAAE2+B,cAAc8Y,KAAMz3C,EAAE89H,gBAAgB1jF,GAAG,oCAAoC,SAASp7C,IACtV0O,EAAE,CAAC1N,EAAE2+B,cAAc8Y,KAAMz3C,EAAE89H,gBAAgBtjF,IAAI,mCAAoCx7C,GAAGw7C,IAAI,4BAA6BwzB,GAAGle,YAAY,kBACxI,IAAIpiD,EAAE1N,EAAE2+B,cAAc8Y,MAAM2C,GAAG,4BAA6B4zB,KAAO/rE,GAAI,EAAIjD,EAAE87C,kBAAmB97C,EAAEg8C,iBACpG,IAAGZ,GAAG,aAAa,SAAUp7C,GAC3BiD,IAAMjD,EAAEg8C,iBAAkBgzB,EAAEhvE,GAC9B,IAAGo7C,GAAG,wBAAwB,WAC5Bn4C,GAAI,EAAI2M,EAAI,CACd,IAAI7P,EAAEq7C,GAAG,kCAAkC,SAAUp7C,EAAGiD,GACtDlE,GAAKgB,EAAEk8C,QAAQ,gCAAiC,CAACh5C,GAAG,IAAMA,EAAI,EAAIA,EAAI,EAAIA,EAAI,GAAK8E,MAAM9E,GAAK,EAAIA,EAAG4O,EAAE+lC,IAAI,aAAcm3B,EAAI9rE,GAAIhB,YAAW,WAC1IQ,EAAEm1C,IAAI,aAAc9+B,UAAUrW,EAAE,GAAGqkD,aAAe/nD,GAAKkE,EAAG,IAC5D,GAAG,GACL,IAAGm4C,GAAG,iCAAiC,SAAUp7C,EAAGiD,EAAG+B,GACrD,IAAIxB,EAAGX,EACP9D,EAAIgB,EAAE,GAAGuqF,aAAcpmF,EAAIzB,EAAE,GAAGqkD,aAAcjkD,GAAKW,EAAIzE,EAAImF,GAAK3B,EAAE,GAAGukD,aAAc,EAAItjD,EAAIqO,EAAE+mC,QAAU/mC,EAAE8mC,OAAQ9mC,EAAE+lC,IAAI,SAAU9+B,SAAS,GAAKjW,EAAIA,EAAI,GAAI,KAAMksE,EAAIxsE,EAAE,GAAGukD,aAAej1C,EAAE,GAAGi1C,cAAc,IAAO9hD,GAAKjF,EAAEk8C,QAAQ,iCAAkC,CAACh5C,GAAK0J,KAAKC,IAAIkM,SAASrW,EAAEm1C,IAAI,aAAc,MAAQ1zC,EAAInF,KAC9T,IAAIgB,EAAEq7C,GAAG,cAAc,SAAUp7C,GAC/B,IAAIiD,EAAI0J,KAAKC,IAAIkM,SAASrW,EAAEm1C,IAAI,aAAc,KAC9C,OAAQ30C,GAAK,GAAKjD,EAAE+9R,QAAU,IAAM96R,EAAI,GAAIlD,EAAEk8C,QAAQ,iCAAkC,CAACh5C,GAAKiB,EAAInF,KAAMiB,EAAE87C,mBAAmB,CAC/H,IAAI/7C,EAAEq7C,GAAG,cAAc,SAAUp7C,GAC/BwD,EAAIwB,EAAEhF,GAAIsC,EAAIqK,KAAKC,IAAIkM,SAASrW,EAAEm1C,IAAI,aAAc,IACtD,IAAI73C,EAAEq7C,GAAG,aAAa,SAAUp7C,GAC9B,GAAIwD,EAAG,CACLxD,EAAEg8C,iBACF,IAAI/4C,EAAI+B,EAAEhF,GACVD,EAAEk8C,QAAQ,iCAAkC,EAAE35C,GAAKW,EAAEkN,EAAI3M,EAAE2M,KAAOjM,EAAInF,IACxE,CACF,IAAIgB,EAAEq7C,GAAG,wBAAwB,WAC/B53C,GAAI,EAAIlB,EAAI,CACd,KAAKvC,EAAEk8C,QAAQ,gCAAiC,CAAC2oK,KAAO7kN,EAAEkkC,KAAK,qBAAqB2U,MACtF,GACF,EAAGlqC,EAAE9I,GAAG83R,eAAiB,SAAUzqD,EAAGjuO,GACpC,IAAIxB,EACFX,EACAJ,EAAIgG,KACJzH,EAAI,GACJ4jN,EAAI,GACJz0M,EAAI,GACJkgC,EAAI,GACJprC,EAAI,GACJI,EAAI,GACJ6Q,EAAI,GACJuqM,EAAI,EACJoI,EAAI,IACJ54M,EAAI,GACJF,EAAI,GACJoQ,EAAI,GACJ2yN,EAAI,GACJtB,EAAI,GACJ/oB,GAAI,EACJC,EAAIh6M,EAAE+vB,cAAcw0M,KAAOA,EAAIvkO,EAAE3I,QAAO,EAAI,CAAC,EAAG7B,EAAG+uO,GAAKvkO,EAAE3I,QAAO,EAAI,CAAC,EAAG7B,GACzEnF,EAAI,EACN,OAAOyE,EAAI,SAAU+2J,GACnB,IAAIt3J,EACFO,EACAwB,EACAnC,EACAgjB,EACAjW,EACAkhC,EAAIpiC,EAAE,6DACN1O,EAAI0O,EAAE,4HACNsgE,EAAItgE,EAAE,gDACNk+I,EAAIl+I,EAAE,4UACN6kO,EAAI7kO,EAAE,uCACNjM,EAAIiM,EAAE,yLACNmD,EAAIpP,EAAEwhC,KAAK,oBAAoBpG,GAAG,GAClC6wC,EAAIhgE,EAAE,2CACN3P,EAAI2P,EAAE,kGACN+oO,EAAI/oO,EAAE,mEACNwkO,EAAIxkO,EAAE,kEACNxK,GAAI,EACJ3B,EAAI,EACNmmN,EAAElkL,IAAMsM,EAAE1J,KAAK,KAAMshL,EAAElkL,IAAKkkL,EAAEhxK,OAAS5G,EAAE1J,KAAK,QAASshL,EAAEhxK,OAAQgxK,EAAE1/L,OAAS8nB,EAAE4f,SAAS,oBAAqBg4J,EAAEkiD,KAAO95N,EAAE4f,SAAS,cAAe5f,EAAE4f,SAAS,UAAYg4J,EAAEyhB,OAAQr5L,EAAE4f,SAASg4J,EAAE7hL,WAAY+lH,EAAE3oH,KAAK,sBAAsBof,MAAMo0L,GAAI7qF,EAAE3oH,KAAK,qBAAqBof,MAAM6vL,GAAItmF,EAAE3oH,KAAK,8BAA8BmX,GAAG,+BAA+B,SAAUp7C,GACrW,IAAIiD,EACF+B,EACAxB,EAAIkL,EAAEjG,MAAMw7B,KAAK,kBAAkBpG,GAAG,GACtCh7B,EAAI,EACJJ,EAAI,EACJ1D,EAAIyE,EAAE8qC,GAAG,YACX,IAAKs+G,EAAE3oH,KAAK,kBAAkB2U,OAAQ/yB,EAAEknC,cAAgBlqD,EAAIgjB,EAAEknC,YAAYr+C,EAAEjG,MAAMyoD,SAAS,gBAAkB,WAAa,kBAAmB1tD,EAAEzE,EAAI,OAAS,UAAWkE,EAAIO,EAAEygC,KAAK,qBAAsBj/B,EAAI,EAAGA,EAAI/B,EAAEhE,QAAUgE,EAAE46B,GAAG74B,GAAGtG,KAAK,WAAamE,EAAGmC,GAAK,EAAGvC,GAAKQ,EAAE,GAAG6jD,aAC9Q,OAAOtjD,EAAEs6R,eAAep1E,EAAGjmN,GAAKe,EAAE0rC,WAAW,GAAG4X,aAAetjD,EAAE,GAAG8mF,eAAgBtqF,EAAE87C,mBAAmB,CAC3G,IACA,IAAI/7C,EAAI,SAAUC,GAChB,IAAIiD,EAAIjD,EAAEm+C,cACRn5C,EAAI/B,EAAEw9C,QAAUx9C,EAAEw9C,QAAQ,GAAKx9C,EACjCwF,KAAKu1R,mBAAqBv1R,KAAKu1R,oBAAsBh5R,EACrD,IAAIxB,EAAImJ,KAAKC,IAAInE,KAAKu1R,mBAAmBj+O,QAAU/6C,EAAE+6C,SACnDl9C,EAAI8J,KAAKC,IAAInE,KAAKu1R,mBAAmBh+O,QAAUh7C,EAAEg7C,SACnDrzC,KAAKu+J,KAAK1nK,EAAIA,EAAIX,EAAIA,GAAK6lN,EAAEkyE,sBAAwBnyR,KAAKw1R,YAAa,EACzE,EACA,SAASlvN,IACP,IAAI/uE,EACFiD,GAAI,EACN,OAAOylN,EAAEmxE,UAAY52R,EAAI4iB,EAAEq4Q,UAAUx1E,EAAEmxE,YAAc52R,EAAIylN,EAAE1lN,QAAUu3J,GAAKA,EAAEtxJ,KAAOsxJ,EAAEtxJ,MAAQsxJ,EAAEtxJ,MAAQ,MAAQhG,EAAI4iB,EAAEs4Q,cAAcl7R,GAAIylN,EAAE00E,aAAen6R,EAAI,IAAIwC,KAAKxC,EAAEkW,cAAgBuvM,EAAE00E,WAAYn6R,EAAE8hB,WAAY9hB,EAAE+hB,UAAW/hB,EAAEglL,WAAYhlL,EAAEq0R,aAAcr0R,EAAEy0O,aAAcz0O,EAAEs0R,qBAAuB7uE,EAAEzrC,cAAgBh6K,EAAI4iB,EAAEs4Q,cAAcz1E,EAAEzrC,aAAcyrC,EAAE2xB,cAAgBr6O,EAAI6lB,EAAEu4Q,UAAU11E,EAAE2xB,aAAcp3O,EAAE4kL,SAAS7nL,EAAEioL,YAAahlL,EAAE6kL,WAAW9nL,EAAEs3R,gBAAiBr0R,GAAK4iB,EAAEw4Q,YAAYp7R,GAAK6tC,EAAEpyC,KAAK,WAAW,GAAMuE,EAAI,GAAIA,GAAK,CACxgB,CACA,SAASX,EAAED,GACT,IAAIuN,EAAI,SAAU5P,EAAGiD,GACjB,IAAI+B,EAAIhF,EAAE6N,QAAQ,+BAAgC,QAAQA,QAAQ,KAAM,YAAYA,QAAQ,cAAe,aAAaA,QAAQ,uBAAwB,cAAcA,QAAQ,iBAAkB,aAChM,OAAO,IAAI3C,OAAOlG,GAAGsJ,KAAKrL,EAC5B,EACA+rE,EAAI,SAAUhvE,EAAGiD,GACf,KAAMjD,EAAI,iBAAmBA,GAAKA,aAAautB,OAASlrB,EAAEs9B,cAAc4E,eAAevkC,GAAKA,GAAI,OAAO,EACvG,GAAIA,EAAEqhJ,gBAAiB,CACrB,IAAIr8I,EAAIhF,EAAEqhJ,kBACV,OAAOr8I,EAAE80H,UAAS,GAAK90H,EAAEs5R,QAAQ,YAAar7R,GAAI+B,EAAEstJ,UAAU,YAAarvJ,GAAI+B,EAAEkgC,UAAU,CAC7F,CACA,QAASllC,EAAEilR,oBAAsBjlR,EAAEilR,kBAAkBhiR,EAAGA,IAAI,EAC9D,EACFZ,EAAE+5R,MAAQ7hI,EAAE/+G,IAAI,mBAAmB,IAAOn5C,EAAE+5R,OAASt2Q,EAAE23Q,WAAap7R,EAAE+5R,KAAOt2Q,EAAE23Q,WAAWp7R,EAAE6D,QAAU7D,EAAE+5R,KAAO/5R,EAAE6D,OAAO2H,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,MAAMA,QAAQ,KAAM,MAAMA,QAAQ,KAAM,MAAMA,QAAQ,KAAM,MAAMA,QAAQ,KAAM,OAAQ,WAAaa,EAAEhN,KAAKW,EAAE+5R,QAAUxsR,EAAEvN,EAAE+5R,KAAM7hI,EAAEtxJ,SAAWsxJ,EAAEtxJ,IAAI5G,EAAE+5R,KAAKvuR,QAAQ,SAAU,MAAOmhE,EAAEurF,EAAE,GAAI,IAAKA,EAAEn/G,GAAG,gBAAgB,SAAUp7C,GACjZ,IAAIiD,GAAKjD,EAAEoyI,eAAiBpyI,EAAEm+C,cAAci0F,eAAiBruI,OAAOquI,eAAe77F,QAAQ,QACzFvxC,EAAIyD,KAAKzF,MACTQ,EAAIiF,KAAK81R,eACX,OAAOv5R,EAAIA,EAAEgI,OAAO,EAAGxJ,GAAKP,EAAI+B,EAAEgI,OAAOxJ,EAAIP,EAAEhE,QAASuE,GAAKP,EAAEhE,OAAQ2Q,EAAEvN,EAAE+5R,KAAMp3R,IAAMyD,KAAKzF,MAAQgC,EAAGgqE,EAAEvmE,KAAMjF,IAAM,KAAOkL,EAAEquD,KAAK/3D,GAAKyD,KAAKzF,MAAQX,EAAE+5R,KAAKvuR,QAAQ,SAAU,KAAO0sJ,EAAEt+G,QAAQ,sBAAuBj8C,EAAEg8C,kBAAkB,CAC5O,IAAIu+G,EAAEn/G,GAAG,kBAAkB,SAAUp7C,GACnC,IAAIiD,EACF+B,EAAIyD,KAAKzF,MACTQ,EAAIxD,EAAE0gD,MACN79C,EAAI4F,KAAK81R,eACT97R,EAAIgG,KAAK+1R,aACTz/R,EAAI8D,IAAMJ,EACZ,GAAI,IAAMe,GAAKA,GAAK,IAAM,IAAMA,GAAKA,GAAK,KAAO,IAAMA,GAAK,KAAOA,EAAG,CACpE,IAAKP,EAAI,IAAMO,GAAK,KAAOA,EAAI,IAAM+pB,OAAOkW,aAAa,IAAMjgC,GAAKA,GAAK,IAAMA,EAAI,GAAKA,GAAI,IAAMA,GAAKX,IAAM9D,IAAM8D,GAAK,KAAM,CAC5H,IAAIqB,EAAI7B,EAAE+5R,KAAKpvR,OAAOnK,EAAG,GACvBN,EAAIM,EAAIR,EAAE+5R,KAAKn9R,OACf4S,EAAI,EAAIhP,EACV,KAAM,UAAUyL,KAAKpK,IAAM3B,GAAKsP,GAAI,MACpChP,GAAK,IAAMW,GAAKzE,EAAI,GAAK,CAC3B,CACA,GAAIiB,EAAEu/C,UAAYxgD,IAAM8D,EAAI,IAAK9D,EAAG,CAClC,IAAIgB,EAAI0C,EAAII,EACVksE,EAAI1sE,EAAE+5R,KAAKvuR,QAAQ,SAAU,KAC7BvL,EAAIysE,EAAE/hE,OAAOnK,EAAG9C,GAAGiN,OAAO,GAC5BhI,EAAIA,EAAEgI,OAAO,EAAGnK,IAAMI,EAAIX,GAAK0C,EAAEgI,OAAOnK,EAAI9C,EAC9C,MACEiF,EAAIA,EAAEgI,OAAO,EAAGnK,GAAKI,EAAI+B,EAAEgI,OAAOnK,EAAI,GAExC,GAAI,KAAO6L,EAAEquD,KAAK/3D,GAAIA,EAAI+pE,OAAO,GAAIlsE,IAAMR,EAAE+5R,KAAKn9R,OAAQ,OAAOe,EAAEg8C,kBAAkB,EACrF,IAAKn5C,GAAK,IAAMW,EAAI,EAAI,EAAG,UAAU8K,KAAKjM,EAAE+5R,KAAKpvR,OAAOnK,EAAG,KAAOA,EAAIR,EAAE+5R,KAAKn9R,QAAU,EAAI4D,GAAIA,GAAK,IAAMW,EAAI,EAAI,EAClHoM,EAAEvN,EAAE+5R,KAAMp3R,IAAMyD,KAAKzF,MAAQgC,EAAGgqE,EAAEvmE,KAAM5F,IAAM,KAAO6L,EAAEquD,KAAK/3D,GAAKyD,KAAKzF,MAAQX,EAAE+5R,KAAKvuR,QAAQ,SAAU,KAAO0sJ,EAAEt+G,QAAQ,qBAC1H,MAAO,IAAK,IAAM,CAAChsC,EAAGF,EAAGoQ,EAAG2yN,EAAGtB,GAAGj8N,QAAQ/R,IAAMilN,IAAM,IAAM,CAACt4M,EAAGlL,EAAGiR,EAAGm6B,EAAGhrC,EAAGwjN,EAAG7nN,EAAGy/M,EAAGmE,GAAGrvM,QAAQ/R,GAAI,OAAO,EAC3G,OAAOxD,EAAEg8C,kBAAkB,CAC7B,IACF,CACA4wG,EAAE3oH,KAAK,kBAAkB65P,eAAep1E,GAAGttK,GAAG,+BAA+B,SAAUp7C,GACrF,IAAIiD,EAAIjD,EAAEm+C,cACV11C,KAAKw1R,YAAa,EAAIx1R,KAAKu1R,mBAAqB/6R,EAAEw9C,QAAUx9C,EAAEw9C,QAAQ,GAAKx9C,EAAGjD,EAAE87C,kBAAmB97C,EAAEg8C,gBACvG,IAAGZ,GAAG,YAAa,iBAAkBr7C,GAAGq7C,GAAG,4BAA6B,kBAAkB,WACxF,IAAK3yC,KAAKw1R,WAAY,MACpB,IAAWp4Q,EAAEknC,aAAe,OAASlnC,EAAEknC,cAAgBlnC,EAAEknC,YAAclnC,EAAE1Z,OACzE,IAAInM,EAAI6lB,EAAEknC,YAAY5zC,cACtB0M,GAAKA,EAAEknC,aAAelnC,EAAEknC,YAAYr+C,EAAEjG,MAAMogC,SAASA,SAASqoB,SAAS,sBAAwB,WAAa,eAAexiD,EAAEjG,MAAM/J,KAAK,UAAWgQ,EAAEjG,MAAMogC,SAASA,SAAS+P,OAAQ9H,EAAEmL,QAAQ,kBAAmBysK,EAAEqyE,eAAiBrsR,EAAE7D,WAAW69M,EAAEqyE,gBAAkBryE,EAAEqyE,cAAc17R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,UAAWsB,IAAM6lB,EAAEknC,YAAY5zC,eAAiBzK,EAAE7D,WAAW69M,EAAEuyE,eAAiBvyE,EAAEuyE,aAAa57R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,SACnb,CACF,IAAIoyC,EAAE2tP,SAAW,WACf,OAAO54Q,EAAE64Q,gBACX,EAAG5tP,EAAEypM,WAAa,SAAUv6O,GAC1B,IAAID,EAAI,CAAC,EACT2oN,EAAIh6M,EAAE3I,QAAO,EAAI,CAAC,EAAG2iN,EAAG1oN,GAAIA,EAAEy6R,YAAc/rR,EAAEhK,QAAQ1E,EAAEy6R,aAAez6R,EAAEy6R,WAAWx7R,SAAWypN,EAAE+xE,WAAa/rR,EAAE3I,QAAO,EAAI,GAAI/F,EAAEy6R,aAAcz6R,EAAE68R,UAAYnuR,EAAEhK,QAAQ1E,EAAE68R,WAAa78R,EAAE68R,SAAS59R,SAAWypN,EAAEm0E,SAAWnuR,EAAE3I,QAAO,EAAI,GAAI/F,EAAE68R,WAAY78R,EAAEg9R,YAActuR,EAAEhK,QAAQ1E,EAAEg9R,aAAeh9R,EAAEg9R,WAAW/9R,SAAWypN,EAAEs0E,WAAatuR,EAAE3I,QAAO,EAAI,GAAI/F,EAAEg9R,aAAch9R,EAAEi9R,aAAe,oBAAsB/9R,OAAOC,UAAU0F,SAASxF,KAAKW,EAAEi9R,eAAiBv0E,EAAEu0E,YAAc,IAAI/xR,OAAOlL,EAAEi9R,cAAej9R,EAAE88R,kBAAoBpuR,EAAEhK,QAAQ1E,EAAE88R,mBAAqB98R,EAAE88R,iBAAiB79R,SAAWyP,EAAEivB,KAAK39B,EAAE88R,kBAAkB,SAAU98R,EAAGiD,GAC3mB,IAAI+B,EACFxB,EAAIkL,EAAEhJ,IAAIzC,EAAEyT,MAAM,KAAMhI,EAAEquD,MAC1Bl6D,EAAI,IAAIR,EAAEyjB,EAAE49J,UAAUlgL,EAAE,GAAIklN,EAAEhjC,YAAaliL,EAAE,GAAIA,EAAE,IACnDf,EAAIqjB,EAAE4/J,WAAW7iL,EAAE+P,KAAM81M,EAAEhjC,iBAC7B,IAAW3lL,EAAE0C,IAAMuC,EAAIjF,EAAE0C,GAAG2xR,OAASpvR,EAAE/F,QAAU4D,EAAEuxR,MAAQvxR,EAAEuxR,KAAKn1R,SAAWc,EAAE0C,GAAG2xR,KAAOpvR,EAAI,KAAOnC,EAAEuxR,MAAQr0R,EAAE0C,GAAKI,CACvH,IAAI6lN,EAAEo0E,iBAAmBpuR,EAAE3I,QAAO,EAAI,GAAIhG,IAAKC,EAAE+8R,oBAAsBruR,EAAEhK,QAAQ1E,EAAE+8R,qBAAuB/8R,EAAE+8R,mBAAmB99R,SAAWc,EAAI2O,EAAE3I,QAAO,EAAI,GAAI2iN,EAAEo0E,kBAAmBpuR,EAAEivB,KAAK39B,EAAE+8R,oBAAoB,SAAU/8R,EAAGiD,GAC5N,IAAI+B,EAAGxB,EAAGX,EAAGJ,EAAG1D,EAAGmF,EAAG3B,EACtB,GAAImM,EAAEhK,QAAQzB,GAAI+B,EAAI/B,EAAE,GAAIO,EAAIP,EAAE,GAAIJ,EAAII,EAAE,GAAIV,EAAIU,EAAE,OAAQ,CAC5D,IAAI4O,EAAInD,EAAEhJ,IAAIzC,EAAEyT,MAAM,KAAMhI,EAAEquD,MAC9B/3D,EAAI8gB,EAAE49J,UAAU7xK,EAAE,GAAI62M,EAAEhjC,YAAaliL,EAAIsiB,EAAE49J,UAAU7xK,EAAE,GAAI62M,EAAEhjC,YAAa7iL,EAAIgP,EAAE,GAAItP,EAAIsP,EAAE,EAC5F,CACA,KAAO7M,GAAKxB,GAAIf,EAAI,IAAIJ,EAAE2C,EAAGnC,EAAGN,GAAIxD,EAAI+mB,EAAE4/J,WAAW1gL,EAAG0jN,EAAEhjC,YAAa1gL,EAAEo8K,QAAQp8K,EAAEggB,UAAY,QAAI,IAAWjlB,EAAEhB,IAAMmF,EAAInE,EAAEhB,GAAGq1R,OAASlwR,EAAEjF,QAAUwD,EAAE2xR,MAAQ3xR,EAAE2xR,KAAKn1R,SAAWc,EAAEhB,GAAGq1R,KAAOlwR,EAAI,KAAOzB,EAAE2xR,MAAQr0R,EAAEhB,GAAK0D,CAC1N,IAAIimN,EAAEo0E,iBAAmBpuR,EAAE3I,QAAO,EAAI,GAAIhG,IAAKC,EAAEk9R,eAAiBxuR,EAAEhK,QAAQ1E,EAAEk9R,gBAAkBl9R,EAAEk9R,cAAcj+R,SAAWypN,EAAEw0E,cAAgBxuR,EAAE3I,QAAO,EAAI,GAAI/F,EAAEk9R,gBAAiBl9R,EAAEm9R,kBAAoBzuR,EAAEhK,QAAQ1E,EAAEm9R,mBAAqBn9R,EAAEm9R,iBAAiBl+R,SAAWypN,EAAEy0E,iBAAmBzuR,EAAE3I,QAAO,EAAI,GAAI/F,EAAEm9R,oBAAqBz0E,EAAEtvJ,OAASsvJ,EAAEgyE,QAAUhyE,EAAEjpC,QAAUllB,EAAEt+G,QAAQ,eAAgBysK,EAAEjpC,SAAWv7K,GAAI,EAAI4sC,EAAE4f,SAAS,iBAAkB6pG,EAAEl3G,MAAMvS,GAAG8H,QAAS8vK,EAAE4yE,gBAAkB5yE,EAAEtoM,KAAO,cAAesoM,EAAEt5K,KAAO,eAAgBs5K,EAAEnpC,WAAavwG,EAAEte,SAAS,UAAYse,EAAEle,YAAY,UAAW43J,EAAE0xE,WAAa33R,EAAEiuD,SAAS,UAAYjuD,EAAEquD,YAAY,UAAW43J,EAAE1lN,QAAU6iB,EAAE84Q,eAAej2E,EAAE1lN,OAAQu3J,GAAKA,EAAEtxJ,KAAOsxJ,EAAEtxJ,IAAI4c,EAAEitG,MAAO/qH,MAAM2gN,EAAE8yE,gBAAkB9yE,EAAE8yE,eAAiB,EAAI9yE,EAAE8yE,eAAiB1iR,SAAS4vM,EAAE8yE,eAAgB,IAAM,EAAG9yE,EAAEizE,qBAAuB9pR,EAAEisR,eAAep1E,EAAG,QAASA,EAAExqC,SAAW,eAAe5vK,KAAKo6M,EAAExqC,WAAawqC,EAAExqC,QAAUp4J,EAAE4/J,WAAW7/J,EAAEs4Q,cAAcz1E,EAAExqC,SAAUwqC,EAAEhjC,aAAcgjC,EAAEvqC,SAAW,eAAe7vK,KAAKo6M,EAAEvqC,WAAauqC,EAAEvqC,QAAUr4J,EAAE4/J,WAAW7/J,EAAEs4Q,cAAcz1E,EAAEvqC,SAAUuqC,EAAEhjC,aAAcgjC,EAAE6xE,aAAe,WAAWjsR,KAAKo6M,EAAE6xE,eAAiB7xE,EAAE6xE,YAAc10Q,EAAEs4Q,cAAcz1E,EAAE6xE,aAAa73Q,WAAWgmM,EAAEhjC,aAAcgjC,EAAE8xE,aAAe,WAAWlsR,KAAKo6M,EAAE8xE,eAAiB9xE,EAAE8xE,YAAc30Q,EAAEs4Q,cAAcz1E,EAAE8xE,aAAa93Q,WAAWgmM,EAAEhjC,aAAc3mL,EAAE85C,OAAO6vK,EAAE40E,iBAAkB1wI,EAAE3oH,KAAK,wBAAwB2T,IAAI,aAAc8wK,EAAEkzE,YAAc,UAAY,UAAWhvI,EAAE3oH,KAAK,IAAMykL,EAAEt5K,MAAMwI,IAAI,aAAc8wK,EAAEmzE,WAAa,UAAY,UAAWjvI,EAAE3oH,KAAK,IAAMykL,EAAEtoM,MAAMw3B,IAAI,aAAc8wK,EAAEozE,WAAa,UAAY,UAAWx5R,EAAEomN,GAAIA,EAAE2zE,gBAAkB9hI,EAAE/+G,IAAI,eAAeJ,GAAG,eAAe,WAC/pD,GAAIstK,EAAE4zE,cAAgB5tR,EAAEquD,KAAKruD,EAAEjG,MAAMQ,OAAOhK,QAAU,iBAAmBypN,EAAE0zE,MAAQ1tR,EAAEquD,KAAKruD,EAAEjG,MAAMQ,SAAWy/M,EAAE0zE,KAAKvuR,QAAQ,SAAU,MAAOa,EAAEjG,MAAMQ,IAAI,MAAO6nC,EAAEpyC,KAAK,mBAAmB8H,YAAa,CACrM,IAAIxG,EAAI8lB,EAAE49J,UAAUh1K,EAAEjG,MAAMQ,MAAOy/M,EAAExiN,QACrC,GAAIlG,EAAG0O,EAAEjG,MAAMQ,IAAI6c,EAAE4/J,WAAW1lL,EAAG0oN,EAAExiN,aAAc,CACjD,IAAIjD,GAAK,CAACyL,EAAEjG,MAAMQ,MAAM,GAAIyF,EAAEjG,MAAMQ,MAAM,IAAIuB,KAAK,IACjDxF,GAAK,CAAC0J,EAAEjG,MAAMQ,MAAM,GAAIyF,EAAEjG,MAAMQ,MAAM,IAAIuB,KAAK,KAChDk+M,EAAEnpC,YAAcmpC,EAAE0xE,YAAc,GAAKn3R,GAAKA,EAAI,IAAM,GAAK+B,GAAKA,EAAI,GAAK0J,EAAEjG,MAAMQ,IAAI,CAAChG,EAAG+B,GAAGU,KAAI,SAAU1F,GACvG,OAAO,EAAIA,EAAIA,EAAI,IAAMA,CAC3B,IAAGwK,KAAK,MAAQkE,EAAEjG,MAAMQ,IAAI6c,EAAE4/J,WAAW7/J,EAAE1Z,MAAOu8M,EAAExiN,QACtD,CACA4qC,EAAEpyC,KAAK,mBAAmBigS,eAAejwR,EAAEjG,MAAMQ,MACnD,CACA6nC,EAAEmL,QAAQ,yBAA0BnL,EAAEmL,QAAQ,eAChD,IAAIysK,EAAEk2E,mBAAqB,IAAMl2E,EAAE8yE,eAAiB,EAAI9yE,EAAE8yE,eAAiB,EAAG1qP,EAAEmL,QAAQ,kBAAkBA,QAAQ,mBACpH,EAAGnL,EAAEpyC,KAAK,UAAWgqN,GAAGttK,GAAG,+BAA+B,SAAUp7C,GAClE,OAAOA,EAAE87C,kBAAmB97C,EAAEg8C,iBAAkBk3L,EAAEt6L,OAAQ6+L,EAAE7+L,QAAQ,CACtE,IAAI/mC,EAAEoxC,OAAOyrB,GAAI78D,EAAEisR,eAAep1E,GAAI53K,EAAEsK,GAAG,oBAAoB,WAC7DvpC,EAAEisR,eAAep1E,EACnB,IAAI53K,EAAEmS,OAAO+rB,GAAG/rB,OAAOxgD,IAAI,IAAOimN,EAAE2yE,kBAAoBvqP,EAAEmS,OAAOjjD,GAAIgvE,EAAE/rB,OAAO2pG,GAAG3pG,OAAOswL,GAAGtwL,OAAOlkD,GAAI2pN,EAAE60E,aAAe7uR,EAAE6rJ,GAAG1xH,SAASoa,OAAOnS,GAAKpiC,EAAEg6M,EAAE+yE,UAAUx4O,OAAOnS,GAAIjrB,EAAI,IAAI,WAChL,IAAIhjB,EAAI4F,KACR5F,EAAEsJ,IAAM,SAAUnM,GAChB,IAAIiD,EACF+B,EACAxB,EAAI,IAAIiC,KACV,OAAQzF,GAAK0oN,EAAEzrC,cAAgBh6K,EAAIJ,EAAEs7R,cAAcz1E,EAAEzrC,aAAcz5K,EAAE4V,YAAYnW,EAAEkW,eAAgB3V,EAAEsU,SAAS7U,EAAE8hB,YAAavhB,EAAE49K,QAAQn+K,EAAE+hB,YAAaxhB,EAAE4V,YAAY5V,EAAE2V,gBAAiBnZ,GAAK0oN,EAAE2xB,cAAgBr1O,EAAInC,EAAEu7R,UAAU11E,EAAE2xB,aAAc72O,EAAEqkL,SAAS7iL,EAAEijL,YAAazkL,EAAEskL,WAAW9iL,EAAEsyR,cAAe9zR,EAAEukL,WAAW/iL,EAAE0yO,cAAel0O,EAAEwkL,gBAAgBhjL,EAAEuyR,oBAAqB/zR,CAC/W,EAAGX,EAAEw7R,YAAc,SAAUr+R,GAC3B,MAAO,kBAAoBd,OAAOC,UAAU0F,SAASxF,KAAKW,KAAO+H,MAAM/H,EAAEiI,UAC3E,EAAGpF,EAAE87R,eAAiB,SAAU3+R,EAAGiD,GACjC,iBAAmBjD,EAAI6C,EAAEkqD,YAAclqD,EAAEs7R,cAAcn+R,GAAK6C,EAAEw7R,YAAYr+R,GAAK6C,EAAEkqD,YAAc/sD,EAAIA,GAAKiD,IAAMylN,EAAE4zE,YAAc5zE,EAAEjpC,OAAS58K,EAAEkqD,YAAclqD,EAAEsJ,MAAQtJ,EAAEkqD,YAAc,KAAMjc,EAAEmL,QAAQ,iBACrM,EAAGp5C,EAAE2D,MAAQ,WACX3D,EAAEkqD,YAAc,IAClB,EAAGlqD,EAAE67R,eAAiB,WACpB,OAAO77R,EAAEkqD,WACX,EAAGlqD,EAAEg8R,UAAY,gBACf,IAAWh8R,EAAEkqD,aAAe,OAASlqD,EAAEkqD,cAAgBlqD,EAAEkqD,YAAclqD,EAAEsJ,OACzE,IAAInM,EACFiD,EAAIJ,EAAEkqD,YAAYhoC,WAAa,EACjC,OAAO,KAAO9hB,IAAMJ,EAAEkqD,YAAY3zC,YAAYvW,EAAEkqD,YAAY5zC,cAAgB,GAAIlW,EAAI,GAAIjD,EAAI6C,EAAEkqD,YAAY5zC,cAAetW,EAAEkqD,YAAYq0H,QAAQz0K,KAAKqL,IAAI,IAAIvS,KAAK5C,EAAEkqD,YAAY5zC,cAAelW,EAAI,EAAG,GAAG+hB,UAAWniB,EAAEkqD,YAAY/nC,YAAaniB,EAAEkqD,YAAYj1C,SAAS7U,GAAIylN,EAAEqyE,eAAiBrsR,EAAE7D,WAAW69M,EAAEqyE,gBAAkBryE,EAAEqyE,cAAc17R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,UAAWsB,IAAM6C,EAAEkqD,YAAY5zC,eAAiBzK,EAAE7D,WAAW69M,EAAEuyE,eAAiBvyE,EAAEuyE,aAAa57R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,UAAWoyC,EAAEmL,QAAQ,kBAAmBh5C,CAClhB,EAAGJ,EAAEi8R,UAAY,gBACf,IAAWj8R,EAAEkqD,aAAe,OAASlqD,EAAEkqD,cAAgBlqD,EAAEkqD,YAAclqD,EAAEsJ,OACzE,IAAInM,EAAI6C,EAAEkqD,YAAYhoC,WAAa,EACnC,OAAQ,IAAM/kB,IAAM6C,EAAEkqD,YAAY3zC,YAAYvW,EAAEkqD,YAAY5zC,cAAgB,GAAInZ,EAAI,IAAK6C,EAAEkqD,YAAYq0H,QAAQz0K,KAAKqL,IAAI,IAAIvS,KAAK5C,EAAEkqD,YAAY5zC,cAAenZ,EAAI,EAAG,GAAGglB,UAAWniB,EAAEkqD,YAAY/nC,YAAaniB,EAAEkqD,YAAYj1C,SAAS9X,GAAI0oN,EAAEqyE,eAAiBrsR,EAAE7D,WAAW69M,EAAEqyE,gBAAkBryE,EAAEqyE,cAAc17R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,UAAWoyC,EAAEmL,QAAQ,kBAAmBj8C,CACrX,EAAG6C,EAAEk8R,cAAgB,SAAU/+R,GAC7B,GAAI0oN,EAAEsyE,iBAAmBtsR,EAAE7D,WAAW69M,EAAEsyE,iBAAkB,CACxD,IAAI/3R,EAAIylN,EAAEsyE,gBAAgB37R,KAAKyxC,EAAG9wC,GAClC,QAAI,IAAWiD,EAAG,OAAOA,CAC3B,CACA,IAAI+B,EAAI,IAAIS,KAAKzF,EAAEmZ,cAAe,EAAG,GACrC,OAAO,IAAMnU,EAAEmY,UAAYnY,EAAE8S,SAAS,EAAG,GAAK,EAAI9S,EAAEmY,SAAW,GAAK,GAAIxQ,KAAKuF,OAAOlS,EAAIgF,GAAK,MAAQA,EAAEmY,SAAW,GAAK,EACzH,EAAGta,EAAEs7R,cAAgB,SAAUn+R,GAC7B,IAAIiD,EACF+B,EACAxB,EAAI,GACN,OAAOxD,GAAKA,aAAayF,MAAQ5C,EAAEw7R,YAAYr+R,GAAKA,IAAMwD,EAAI,kBAAkBqf,KAAK7iB,MAAQwD,EAAE,GAAKsiB,EAAE49J,UAAUlgL,EAAE,GAAIklN,EAAEhjC,aAAc1gL,EAAIxB,GAAKA,EAAE,IAAMP,EAAIO,EAAE,GAAGyE,UAAY,IAAMzE,EAAE,GAAGwnB,oBAAqB,IAAIvlB,KAAK5C,EAAEsJ,KAAI,GAAIlE,UAAY6Q,SAAStV,EAAE,GAAK,IAAK,IAAMP,IAAMjD,EAAI8lB,EAAE49J,UAAU1jL,EAAG0oN,EAAExiN,QAAUrD,EAAEsJ,MAAOtJ,EAAEw7R,YAAYr5R,KAAOA,EAAInC,EAAEsJ,OAAQnH,EACzV,EAAGnC,EAAEq7R,UAAY,SAAUl+R,GACzB,GAAIA,GAAKA,aAAayF,MAAQ5C,EAAEw7R,YAAYr+R,GAAI,OAAOA,EACvD,IAAIiD,EAAIjD,EAAI8lB,EAAE49J,UAAU1jL,EAAG0oN,EAAEhjC,YAAc7iL,EAAEsJ,KAAI,GACjD,OAAOtJ,EAAEw7R,YAAYp7R,KAAOA,EAAIJ,EAAEsJ,KAAI,IAAMlJ,CAC9C,EAAGJ,EAAEu7R,UAAY,SAAUp+R,GACzB,GAAIA,GAAKA,aAAayF,MAAQ5C,EAAEw7R,YAAYr+R,GAAI,OAAOA,EACvD,IAAIiD,EAAIjD,EAAI8lB,EAAE49J,UAAU1jL,EAAG0oN,EAAEkxE,YAAc/2R,EAAEsJ,KAAI,GACjD,OAAOtJ,EAAEw7R,YAAYp7R,KAAOA,EAAIJ,EAAEsJ,KAAI,IAAMlJ,CAC9C,EAAGJ,EAAEiwH,IAAM,WACT,IAAI9yH,EAAI0oN,EAAExiN,OACV,OAAOwiN,EAAE00E,aAAep9R,GAAKA,EAAIA,EAAE6N,QAAQ,IAAKhL,EAAEkqD,YAAY5zC,cAAgBuvM,EAAE00E,aAAavvR,QAAQ,IAAK0f,OAAO1qB,EAAEkqD,YAAY5zC,cAAgBuvM,EAAE00E,YAAYxqK,UAAU,EAAG,KAAM9sG,EAAE4/J,WAAW7iL,EAAEkqD,YAAa/sD,EAC9M,EAAG6C,EAAEkqD,YAActkD,KAAK0D,KAC1B,EAAKpN,EAAEq8C,GAAG,kBAAkB,SAAUp7C,GACpCA,EAAEg8C,iBAAkBlL,EAAEpyC,KAAK,WAAW,GAAKmnB,EAAE84Q,eAAe5vN,KAAMwrF,EAAEtxJ,IAAI4c,EAAEitG,OAAQhiF,EAAEmL,QAAQ,eAC9F,IAAI2wG,EAAE3oH,KAAK,wBAAwBmX,GAAG,6BAA6B,WACjEtK,EAAEpyC,KAAK,WAAW,GAAKmnB,EAAE84Q,eAAe,GAAG,GAAK7tP,EAAEmL,QAAQ,mBAC5D,IAAGb,GAAG,mBAAmB,WACvB,IAAIp7C,EACFiD,EACA+B,EAAI6gB,EAAE64Q,iBACR15R,EAAI,IAAIS,KAAKT,EAAEmU,cAAenU,EAAE+f,WAAY/f,EAAEggB,WAAYhlB,EAAI6lB,EAAEq4Q,UAAUx1E,EAAExqC,SAAUl5K,GAAKhF,EAAI,IAAIyF,KAAKzF,EAAEmZ,cAAenZ,EAAE+kB,WAAY/kB,EAAEglB,cAAgB/hB,EAAI4iB,EAAEq4Q,UAAUx1E,EAAEvqC,UAAWl7K,EAAI,IAAIwC,KAAKxC,EAAEkW,cAAelW,EAAE8hB,WAAY9hB,EAAE+hB,YAAchgB,IAAMu1J,EAAEtxJ,IAAI4c,EAAEitG,OAAQynC,EAAEt+G,QAAQ,UAAWnL,EAAEmL,QAAQ,iBACzS,IAAI2wG,EAAE3oH,KAAK,6BAA6BmX,GAAG,6BAA6B,WACtE,IAAIp2C,EAAI0J,EAAEjG,MACRjF,EAAI,EACJX,GAAI,GACL,SAAS7C,EAAEiD,GACV+B,EAAEksD,SAASw3J,EAAEtoM,MAAQyF,EAAEg5Q,YAAc75R,EAAEksD,SAASw3J,EAAEt5K,OAASvpB,EAAEi5Q,YAAap2E,EAAEoxE,qBAAuBj3R,IAAMW,EAAIvB,WAAWjC,EAAGiD,GAAK,MAClI,CAFC,CAEC,KAAMyL,EAAE,CAACg6M,EAAE/oL,cAAc8Y,KAAMiwK,EAAE5pF,gBAAgB1jF,GAAG,2BAA2B,SAASp7C,IACxFuB,aAAaiC,GAAIX,GAAI,EAAI6L,EAAE,CAACg6M,EAAE/oL,cAAc8Y,KAAMiwK,EAAE5pF,gBAAgBtjF,IAAI,0BAA2Bx7C,EACrG,GACF,IAAIyC,EAAEwhC,KAAK,6BAA6BmX,GAAG,6BAA6B,WACtE,IAAI34C,EAAIiM,EAAEjG,MACR1J,EAAI,EACJmF,GAAI,EACJ3B,EAAI,KACL,SAASvC,EAAEiD,GACV,IAAI+B,EAAI6M,EAAE,GAAGy4E,aACX9mF,EAAIkrE,EAAE,GAAG5nB,aACTjkD,EAAI8J,KAAKC,IAAIkM,SAAS41D,EAAE92B,IAAI,aAAc,KAC5Cn1C,EAAEyuD,SAASw3J,EAAEtoM,OAAS5c,EAAIwB,EAAI0jN,EAAEgzE,wBAA0B74R,EAAI6rE,EAAE92B,IAAI,YAAa,KAAO/0C,EAAI6lN,EAAEgzE,wBAA0B,MAAQj5R,EAAEyuD,SAASw3J,EAAEt5K,OAAS,GAAKvsC,EAAI6lN,EAAEgzE,wBAA0BhtN,EAAE92B,IAAI,YAAa,KAAO/0C,EAAI6lN,EAAEgzE,wBAA0B,MAAO7pR,EAAEoqC,QAAQ,iCAAkC,CAACtvC,KAAKC,IAAIkM,SAAS41D,EAAE,GAAGh3B,MAAMwpH,UAAW,KAAO19J,EAAIwB,MAAOzC,EAAI,GAAKA,EAAI,GAAKA,EAAI,GAAI2B,IAAMnF,EAAIkD,WAAWjC,EAAGiD,GAAKV,GAC5Z,CALC,CAKC,KAAMmM,EAAE,CAACg6M,EAAE/oL,cAAc8Y,KAAMiwK,EAAE5pF,gBAAgB1jF,GAAG,2BAA2B,SAASp7C,IACxFuB,aAAaxC,GAAImF,GAAI,EAAIwK,EAAE,CAACg6M,EAAE/oL,cAAc8Y,KAAMiwK,EAAE5pF,gBAAgBtjF,IAAI,0BAA2Bx7C,EACrG,GACF,IAAIiD,EAAI,EAAG6tC,EAAEsK,GAAG,kBAAkB,SAAUp7C,GAC1CuB,aAAa0B,GAAIA,EAAIhB,YAAW,gBAC9B,IAAW4jB,EAAEknC,aAAe,OAASlnC,EAAEknC,cAAgBlnC,EAAEknC,YAAclnC,EAAE1Z,OACzE,IAAK,IAAInM,EAAGiD,EAAG+B,EAAGxB,EAAGX,EAAGJ,EAAG1D,EAAGmF,EAAG3B,EAAGsP,EAAG9R,EAAI,GAAIgvE,EAAI,IAAItpE,KAAKogB,EAAEknC,YAAY5zC,cAAe0M,EAAEknC,YAAYhoC,WAAY,EAAG,GAAI,EAAG,GAAIziB,EAAI,EAAGD,EAAIwjB,EAAE1Z,MAAOyD,GAAI,EAAIo/D,GAAI,EAAIhuE,GAAI,EAAI4jN,GAAI,EAAIz0M,EAAI,GAAIkgC,GAAI,EAAIprC,EAAI,GAAI8pE,EAAE5xD,WAAaurM,EAAE8yE,gBAAiBzsN,EAAEqyG,QAAQryG,EAAE/pD,UAAY,GACvQ,IAAKjlB,GAAK,qBAAsB2oN,EAAE1/L,QAAUjpB,GAAK,aAAcC,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAGD,GAAK,OAAS2oN,EAAEqmB,KAAK6vB,GAAG64B,gBAAgBz3R,EAAI0oN,EAAE8yE,gBAAkB,GAAK,QAC1J,IAAKz7R,GAAK,gBAAiBA,GAAK,WAAW,IAAO2oN,EAAEvqC,UAAYvuK,EAAIiW,EAAEq4Q,UAAUx1E,EAAEvqC,SAAUvuK,EAAI,IAAInK,KAAKmK,EAAEuJ,cAAevJ,EAAEmV,WAAYnV,EAAEoV,UAAW,GAAI,GAAI,GAAI,OAAO,IAAO0jM,EAAExqC,UAAYlvG,EAAInpD,EAAEq4Q,UAAUx1E,EAAExqC,SAAUlvG,EAAI,IAAIvpE,KAAKupE,EAAE71D,cAAe61D,EAAEjqD,WAAYiqD,EAAEhqD,aAAa,IAAO0jM,EAAE6xE,cAAgBv5R,EAAI6kB,EAAEq4Q,UAAUx1E,EAAE6xE,aAAcv5R,EAAI,IAAIyE,KAAKzE,EAAEmY,cAAenY,EAAE+jB,WAAY/jB,EAAEgkB,UAAWhkB,EAAEinL,WAAYjnL,EAAEs2R,aAAct2R,EAAE02O,gBAAgB,IAAOhvB,EAAE8xE,cAAgB51E,EAAI/+L,EAAEq4Q,UAAUx1E,EAAE8xE,aAAc51E,EAAI,IAAIn/M,KAAKm/M,EAAEzrM,cAAeyrM,EAAE7/L,WAAY6/L,EAAE5/L,UAAW4/L,EAAE38B,WAAY28B,EAAE0yE,aAAc1yE,EAAE8yB,gBAAgB,IAAO9yB,IAAM/yM,EAAI,IAAM,GAAK+yM,EAAEzrM,cAAgByrM,EAAE7/L,YAAc6/L,EAAE5/L,WAAY1iB,EAAIujB,EAAEknC,YAAY8wO,oBAAsB9uN,EAAE5xD,WAAaurM,EAAE8yE,gBAAkB31Q,EAAEknC,YAAYhoC,aAAegqD,EAAEhqD,YAAa,CACzxB5U,EAAI,GAAI7N,GAAK,EAAG0C,EAAI+pE,EAAE5xD,SAAU3Z,EAAIurE,EAAE/pD,UAAWniB,EAAIksE,EAAE51D,cAAelJ,EAAI8+D,EAAEhqD,WAAYtiB,EAAIojB,EAAEk5Q,cAAchwN,GAAIxsE,EAAI,GAAI4N,EAAE5Q,KAAK,eAAgBR,EAAI2pN,EAAEtqC,eAAiB1vK,EAAE7D,WAAW69M,EAAEtqC,cAAc/+K,MAAQqpN,EAAEtqC,cAAc/+K,KAAKyxC,EAAGi+B,GAAK,KAAM25I,EAAEu0E,aAAe,oBAAsB/9R,OAAOC,UAAU0F,SAASxF,KAAKqpN,EAAEu0E,eAAiBv0E,EAAEu0E,YAAY3uR,KAAKwX,EAAE4/J,WAAW32G,EAAG25I,EAAEhjC,cAAgBv1K,EAAE5Q,KAAK,oBAAqBmpN,EAAEs0E,YAAc,EAAIt0E,EAAEs0E,WAAW/9R,SAAW,IAAMypN,EAAEs0E,WAAWznR,QAAQuQ,EAAE4/J,WAAW32G,EAAG25I,EAAEhjC,cAAgBv1K,EAAE5Q,KAAK,mBACxgB,IAAI8F,EAAI,IAAM,GAAK0pE,EAAE51D,cAAgB41D,EAAEhqD,YAAcgqD,EAAE/pD,YACtD,IAAOpV,GAAKA,EAAIm/D,IAAK,IAAO/tE,GAAK+tE,EAAI/tE,IAAK,IAAOguE,GAAKD,EAAIC,IAAK,IAAO41I,GAAK/yM,EAAIxM,GAAKtG,IAAK,IAAOA,EAAE,KAAOoR,EAAE5Q,KAAK,oBAAqB,IAAMmpN,EAAEw0E,cAAc3nR,QAAQuQ,EAAE4/J,WAAW32G,EAAG25I,EAAEhjC,cAAgBv1K,EAAE5Q,KAAK,oBAAqB,IAAMmpN,EAAEy0E,iBAAiB5nR,QAAQvQ,IAAMmL,EAAE5Q,KAAK,mBAAoBg7J,EAAEjsH,GAAG,eAAiBn+B,EAAE5Q,KAAK,mBAAoBR,GAAK,KAAOA,EAAE,IAAMoR,EAAE5Q,KAAKR,EAAE,IAAK8mB,EAAEknC,YAAYhoC,aAAe9U,GAAKE,EAAE5Q,KAAK,uBAAwBmpN,EAAEqzE,eAAiBjrP,EAAEpyC,KAAK,aAAeonB,EAAE4/J,WAAW7/J,EAAEknC,YAAa27J,EAAEhjC,cAAgB5/J,EAAE4/J,WAAW32G,EAAG25I,EAAEhjC,aAAev1K,EAAE5Q,KAAK,kBAAmBumB,EAAE4/J,WAAWrjL,EAAGqmN,EAAEhjC,cAAgB5/J,EAAE4/J,WAAW32G,EAAG25I,EAAEhjC,aAAev1K,EAAE5Q,KAAK,gBAAiB,IAAMwvE,EAAE5xD,UAAY,IAAM4xD,EAAE5xD,WAAa,IAAMurM,EAAEm0E,SAAStnR,QAAQuQ,EAAE4/J,WAAW32G,EAAG25I,EAAEhjC,cAAgBv1K,EAAE5Q,KAAK,uBAAmB,IAAWmpN,EAAEo0E,iBAAiBh3Q,EAAE4/J,WAAW32G,EAAG25I,EAAEhjC,eAAiBziL,EAAIylN,EAAEo0E,iBAAiBh3Q,EAAE4/J,WAAW32G,EAAG25I,EAAEhjC,aAAcv1K,EAAE5Q,UAAK,IAAW0D,EAAEy0C,MAAQ,6BAA+Bz0C,EAAEy0C,OAAQn1C,OAAI,IAAWU,EAAEmxR,KAAO,GAAKnxR,EAAEmxR,MAAO1rE,EAAEtqC,eAAiB1vK,EAAE7D,WAAW69M,EAAEtqC,gBAAkBjuK,EAAE5Q,KAAKmpN,EAAEtqC,cAAcrvG,IAAK1+B,IAAMtwC,GAAK,OAAQswC,GAAI,EAAIq4K,EAAE1/L,QAAUjpB,GAAK,OAAS0C,EAAI,UAAW1C,GAAK,kBAAoByD,EAAI,iBAAmByM,EAAI,gBAAkBpN,EAAI,0CAA4CksE,EAAE5xD,SAAW,IAAMhN,EAAE3F,KAAK,KAAO,YAAcjI,EAAI,UAAYiB,EAAI,cAAeurE,EAAE5xD,WAAaurM,EAAEk2E,qBAAuB7+R,GAAK,QAASswC,GAAI,GAAK0+B,EAAEqyG,QAAQ59K,EAAI,EACj7C,CACAzD,GAAK,mBAAoBwzO,EAAEhxL,KAAKxiD,GAAI6sJ,EAAE3oH,KAAK,sBAAsBpG,GAAG,GAAGtB,KAAKmsL,EAAEqmB,KAAK6vB,GAAGvoP,OAAOwP,EAAEknC,YAAYhoC,aAAc6nI,EAAE3oH,KAAK,sBAAsBpG,GAAG,GAAGtB,KAAK1W,EAAEknC,YAAY5zC,cAAgBuvM,EAAE00E,YAAantR,EAAIhL,EAAI,GACtN,IAAIiR,EAAI,EACR,IAAI,IAAOwyM,EAAE2xE,QAAS,CACpB,IAAI55E,EAAI56L,EAAEu4Q,UAAU11E,EAAE2xE,SACtBnkR,EAAI,GAAKuqM,EAAEx4B,WAAaw4B,EAAE62E,YAC5B,CACA,IAAIzuE,EAAI,KAKR,IAJI,IAAOH,EAAE4xE,UACX75E,EAAI56L,EAAEu4Q,UAAU11E,EAAE4xE,SAClBzxE,EAAI,GAAKpI,EAAEx4B,WAAaw4B,EAAE62E,eAExB,IAAO5uE,EAAE6xE,cACX95E,EAAI56L,EAAEs4Q,cAAcz1E,EAAE6xE,aAClBz0Q,EAAE4/J,WAAW7/J,EAAEknC,YAAa27J,EAAEhjC,cAAgB5/J,EAAE4/J,WAAW+6B,EAAGiI,EAAEhjC,aAAa,CAC/E,IAAIz1K,EAAI,GAAKwwM,EAAEx4B,WAAaw4B,EAAE62E,aAC9BphR,EAAIjG,IAAMiG,EAAIjG,EAChB,CAMF,IAJI,IAAOy4M,EAAE8xE,cACX/5E,EAAI56L,EAAEs4Q,cAAcz1E,EAAE8xE,aAClB10Q,EAAE4/J,WAAW7/J,EAAEknC,YAAa27J,EAAEhjC,cAAgB5/J,EAAE4/J,WAAW+6B,EAAGiI,EAAEhjC,cAAcz1K,EAAI,GAAKwwM,EAAEx4B,WAAaw4B,EAAE62E,cAAgBzuE,IAAMA,EAAI54M,IAEpI/L,EAAI,SAAUlE,EAAGiD,GACnB,IAAI+B,EACFxB,EAAIqiB,EAAE1Z,MACNtJ,EAAI6lN,EAAE+xE,YAAc/rR,EAAEhK,QAAQgkN,EAAE+xE,aAAe/xE,EAAE+xE,WAAWx7R,OAC9DuE,EAAEqkL,SAAS7nL,GAAIA,EAAI8Y,SAAStV,EAAEykL,WAAY,IAAKzkL,EAAEskL,WAAW7kL,GAAIA,EAAI6V,SAAStV,EAAE8zR,aAAc,IAAKnnR,EAAI,GACtG,IAAI1N,EAAI,GAAKzC,EAAIiD,GAChBs3J,EAAEjsH,GAAG,eAAiBu6K,GAAKpmN,GAAKA,EAAIyT,IAAM/F,EAAE5Q,KAAK,oBAAqByF,EAAI,IAAIS,KAAKogB,EAAEknC,cAAc86H,SAAS/uK,SAAS+M,EAAEknC,YAAYk7H,WAAY,KAAMplL,GAAKmC,EAAE8iL,WAAWn7K,KAAK+7M,EAAEk0E,WAAW/2Q,EAAEknC,YAAYuqO,aAAe5uE,EAAEr9J,MAAQq9J,EAAEr9J,OAAQq9J,EAAEiyE,UAAYjyE,EAAEqzE,eAAiBjrP,EAAEpyC,KAAK,aAAesG,EAAEijL,aAAenvK,SAAS9Y,EAAG,OAAS6C,GAAK,GAAK6lN,EAAEr9J,MAAQrmD,EAAEsyR,eAAiBx+Q,SAAS7V,EAAG,OAASylN,EAAEqzE,eAAiBjrP,EAAEpyC,KAAK,WAAayR,EAAE5Q,KAAK,kBAAoBmpN,EAAEiyE,UAAYxqR,EAAE5Q,KAAK,qBAAsBuZ,SAASzW,EAAE4lL,WAAY,MAAQnvK,SAAS9Y,EAAG,KAAO8Y,SAASzW,EAAEi1R,aAAc,MAAQx+Q,SAAS7V,EAAG,KAAOkN,EAAE5Q,KAAK,gBAAiB0F,GAAK,2BAA6BkL,EAAE3F,KAAK,KAAO,gBAAkBxK,EAAI,kBAAoBiD,EAAI,KAAO6iB,EAAE4/J,WAAWliL,EAAGklN,EAAEkxE,YAAc,QACtvB,EAAGlxE,EAAE+xE,YAAc/rR,EAAEhK,QAAQgkN,EAAE+xE,aAAe/xE,EAAE+xE,WAAWx7R,OAAQ,IAAKqD,EAAI,EAAGA,EAAIomN,EAAE+xE,WAAWx7R,OAAQqD,GAAK,EAAG4B,EAAE2hB,EAAEu4Q,UAAU11E,EAAE+xE,WAAWn4R,IAAI2lL,WAAYh4K,EAAI4V,EAAEu4Q,UAAU11E,EAAE+xE,WAAWn4R,IAAIg1R,mBAAmB,IAAKt3R,EAAIsC,EAAI,EAAGA,GAAKomN,EAAE6yE,QAAU,GAAK,IAAKj5R,GAAK,EAAG,IAAKtC,EAAI,EAAGA,EAAI,GAAIA,GAAK0oN,EAAEr9J,KAAM,CACjS,IAAIt7C,EAAI,GAAKzN,EAAItC,EACjB+P,EAAImG,GAAK2yM,GAAK94M,GAAK7L,GAAG5B,EAAI,GAAK,IAAM,IAAMA,EAAG2N,GAAKjQ,EAAI,GAAK,IAAM,IAAMA,EAC1E,CACA,IAAK0uE,EAAEnsB,KAAKt9C,GAAIguO,EAAI,GAAI3wO,EAAIwW,SAAS4vM,EAAE6zE,UAAW,IAAKj6R,GAAKwW,SAAS4vM,EAAE8zE,QAAS,IAAKl6R,GAAK,EAAG2wO,GAAK,8BAAgCptN,EAAEknC,YAAY5zC,gBAAkB7W,EAAI,iBAAmB,IAAM,iBAAmBA,EAAI,MAAQA,EAAIomN,EAAE00E,YAAc,SAClP,IAAKlqD,EAAEhkM,WAAWrR,GAAG,GAAG0kB,KAAK0wL,GAAI3wO,EAAIwW,SAAS4vM,EAAE+zE,WAAY,IAAKxpD,EAAI,GAAI3wO,GAAKwW,SAAS4vM,EAAEg0E,SAAU,IAAKp6R,GAAK,EAAG2wO,GAAK,8BAAgCptN,EAAEknC,YAAYhoC,aAAeziB,EAAI,iBAAmB,IAAM,iBAAmBA,EAAI,KAAOomN,EAAEqmB,KAAK6vB,GAAGvoP,OAAO/T,GAAK,SACnQm1O,EAAEvoM,WAAWrR,GAAG,GAAG0kB,KAAK0wL,GAAIvkO,EAAEoiC,GAAGmL,QAAQ,kBAC3C,GAAG,IAAKj8C,EAAE87C,iBACZ,IAAGV,GAAG,oBAAoB,WACxB,IAAIp7C,EAAGiD,EAAG+B,EAAGxB,EACbklN,EAAE0xE,aAAe1rN,EAAEzqC,KAAK,mBAAmBhlC,OAASe,EAAI,kBAAoB0uE,EAAEzqC,KAAK,qBAAqBhlC,SAAWe,EAAI,qBAAsBA,GAAKiD,EAAI4O,EAAE,GAAGy4E,cAAetlF,EAAI0pE,EAAE,GAAG5nB,cAAgB7jD,GAAKO,EAAIkrE,EAAEzqC,KAAKjkC,GAAGy2B,QAAUiyL,EAAEgzE,uBAAyB,KAAOl4R,EAAIwB,EAAI/B,GAAI4O,EAAEoqC,QAAQ,iCAAkC,CAACnjC,SAAStV,EAAG,KAAOwB,EAAI/B,MAAQ4O,EAAEoqC,QAAQ,iCAAkC,CAAC,IACzY,IAAIz4C,EAAI,EAAG+vO,EAAEn4L,GAAG,wBAAyB,MAAM,SAAUp7C,GACvDA,EAAE87C,kBAAmBt4C,GAAK,EAC1B,IAAIP,EAAIyL,EAAEjG,MACRzD,EAAI6gB,EAAEknC,YACR,GAAI,MAAQ/nD,IAAM6gB,EAAEknC,YAAclnC,EAAE1Z,MAAOnH,EAAI6gB,EAAEknC,aAAc9pD,EAAEiuD,SAAS,mBAAoB,OAAO,EACrGlsD,EAAEo8K,QAAQ,GAAIp8K,EAAEoU,YAAYnW,EAAEvE,KAAK,SAAUsG,EAAE8S,SAAS7U,EAAEvE,KAAK,UAAWsG,EAAEo8K,QAAQn+K,EAAEvE,KAAK,SAAUoyC,EAAEmL,QAAQ,gBAAiB,CAACj3C,IAAKu1J,EAAEtxJ,IAAI4c,EAAEitG,OAAQ41F,EAAEmyE,cAAgBnsR,EAAE7D,WAAW69M,EAAEmyE,eAAiBnyE,EAAEmyE,aAAax7R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,SAAUsB,GAAI8wC,EAAEpyC,KAAK,WAAW,GAAKoyC,EAAEmL,QAAQ,kBAAmBnL,EAAEmL,QAAQ,0BAA2B,EAAIz4C,IAAK,IAAOklN,EAAEqxE,oBAAqB,IAAOrxE,EAAEqxE,oBAAsBrxE,EAAE0xE,cAAgB1xE,EAAEjpC,QAAU3uI,EAAEmL,QAAQ,gBAAiBh6C,YAAW,WACpeuB,EAAI,CACN,GAAG,IACL,IAAIkrE,EAAEtzB,GAAG,aAAc,OAAO,SAAUp7C,GACtCyI,KAAKw1R,YAAa,CACpB,IAAG7iP,GAAG,YAAa,MAAOr7C,GAAGq7C,GAAG,wBAAyB,OAAO,SAAUp7C,GACxE,IAAKyI,KAAKw1R,WAAY,CACpBj+R,EAAE87C,kBACF,IAAI74C,EAAIyL,EAAEjG,MACRzD,EAAI6gB,EAAEknC,YACR,GAAI,MAAQ/nD,IAAM6gB,EAAEknC,YAAclnC,EAAE1Z,MAAOnH,EAAI6gB,EAAEknC,aAAc9pD,EAAEiuD,SAAS,mBAAoB,OAAO,EACrGlsD,EAAE6iL,SAAS5kL,EAAEvE,KAAK,SAAUsG,EAAE8iL,WAAW7kL,EAAEvE,KAAK,WAAYoyC,EAAEmL,QAAQ,gBAAiB,CAACj3C,IAAK8rC,EAAEpyC,KAAK,SAASuK,IAAI4c,EAAEitG,OAAQ41F,EAAEoyE,cAAgBpsR,EAAE7D,WAAW69M,EAAEoyE,eAAiBpyE,EAAEoyE,aAAaz7R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,SAAUsB,GAAI8wC,EAAEpyC,KAAK,WAAW,GAAKoyC,EAAEmL,QAAQ,kBAAmBnL,EAAEmL,QAAQ,0BAA0B,IAAOysK,EAAEjpC,SAAU,IAAOipC,EAAEsxE,mBAAqBlpP,EAAEmL,QAAQ,eAC7X,CACF,IAAI+yB,EAAE5zB,GAAG,qBAAqB,SAAUp7C,GACtC,OAAQ0oN,EAAEszE,cAAgBh8R,EAAE+9R,OAAS,EAAIl4Q,EAAEg5Q,YAAch5Q,EAAEi5Q,aAAa,EAC1E,IAAIvkI,EAAEn/G,GAAG,qBAAqB,SAAUp7C,GACtC,OAAQ0oN,EAAEwzE,eAAiBxzE,EAAEnpC,YAAcmpC,EAAE0xE,YAAc,IAAMp1R,EAAI0pE,EAAEzqC,KAAK,mBAAmBhlC,OAASyvE,EAAEzqC,KAAK,mBAAmBpG,GAAG,GAAGpH,QAAU,GAAKz2B,EAAE+9R,QAAU/4R,EAAIhF,EAAE+9R,OAASrvN,EAAEx/B,WAAWjwC,SAAW+F,GAAKhF,EAAE+9R,QAASrvN,EAAEx/B,WAAWrR,GAAG74B,GAAG/F,QAAUyvE,EAAEx/B,WAAWrR,GAAG74B,GAAGi3C,QAAQ,cAAc,GAAMysK,EAAEnpC,aAAempC,EAAE0xE,YAAcprN,EAAE/yB,QAAQj8C,EAAG,CAACA,EAAE+9R,OAAQ/9R,EAAEg/R,OAAQh/R,EAAE+9R,SAAUxjI,EAAEtxJ,KAAOsxJ,EAAEtxJ,IAAI4c,EAAEitG,OAAQhiF,EAAEmL,QAAQ,0BAA0B,QAAM,EAC1b,IAAInL,EAAEsK,GAAG,yBAAyB,SAAUp7C,GAC1C,GAAI0oN,EAAEwyE,kBAAoBxsR,EAAE7D,WAAW69M,EAAEwyE,kBAAmB,CAC1D,IAAIj4R,EAAI6tC,EAAEpyC,KAAK,SACfgqN,EAAEwyE,iBAAiB77R,KAAKyxC,EAAGjrB,EAAEknC,YAAa9pD,EAAGjD,UAAW0oN,EAAE1lN,MAAOC,EAAEg5C,QAAQ,SAC7E,CACF,IAAGb,GAAG,mBAAmB,WACvBstK,EAAE0yE,YAAc1sR,EAAE7D,WAAW69M,EAAE0yE,aAAe1yE,EAAE0yE,WAAW/7R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,UAAWwF,IAAM4sC,EAAEmL,QAAQ,oBAAqB/3C,GAAI,EAC/I,IAAGk3C,GAAG,gBAAgB,SAAUp7C,GAC9BA,EAAE87C,iBACJ,IAAI92C,EAAI,EAAG4K,EAAI,SAAU5P,EAAGiD,GAC1B,GACE,KAAMjD,EAAIA,EAAEy8B,cAAe,IAAOx5B,EAAEjD,GAAI,YACjC,SAAWA,EAAEk9B,SACxB,EAAGr6B,EAAI,WACL,IAAI7C,EAAGiD,EAAG+B,EAAGxB,EAAGX,EAAGJ,EAAG1D,EAAGmF,EAAG3B,EAAGsP,EAAG9R,EAAGgvE,EAAGzsE,EACxC,GAAItC,GAAKkE,EAAI4sC,EAAEpyC,KAAK,UAAUurB,SAAUhnB,EAAIiB,EAAE,GAAI2N,EAAI,MAAO7M,EAAIhF,EAAEmmC,IAAMljC,EAAE6jD,aAAe,EAAGtjD,EAAIxD,EAAE2qD,KAAM9nD,EAAI,WAAYN,EAAImM,EAAEg6M,EAAE5pF,eAAet6E,QAASuqB,EAAIrgE,EAAEg6M,EAAE5pF,eAAen4E,SAAUrkD,EAAIoM,EAAEg6M,EAAE5pF,eAAevzE,YAAam9J,EAAE/oL,cAAcT,gBAAgBmtD,YAAcrsF,EAAE2qD,KAAOqkB,EAAEnmC,SAASy2H,YAAW,GAAK,CAC9S,IAAIj9J,EAAI2sE,EAAEnmC,SAASy2H,YAAW,GAAMr8J,EAAE6iD,YACtCtiD,GAAKnB,CACP,CACA,QAAU6B,EAAE2kC,SAAS+O,IAAI,eAAiBp0C,GAAKstC,EAAEwuH,aAAep7J,EAAEo7J,cAAeopD,EAAEi0E,OAAS33R,GAAK1C,EAAGkB,GAAKkL,EAAEg6M,EAAE5pF,eAAetzE,aAAc3oD,EAAI,UAAY9D,GAAI,EAAI6Q,EAAE3M,GAAG,SAAUjD,GAC/K,OAAO,OAASA,IAAM,UAAY0oN,EAAE5pF,cAAc56E,iBAAiBlkD,GAAG4kD,iBAAiB,cAAgB7lD,GAAI,QAAM,EACnH,IAAIA,IAAM2pN,EAAE60E,cAAgB16R,EAAI,QAASmC,EAAI8rC,EAAEyuH,cAAgBxwF,EAAIzsE,GAAKuP,EAAI,SAAU7M,EAAI+pE,EAAIzsE,EAAItC,EAAEmmC,KAAOnhC,GAAK1C,GAAK0C,EAAI8rC,EAAE,GAAGgW,aAAeioB,EAAIzsE,IAAM0C,EAAIhF,EAAEmmC,IAAM2K,EAAE,GAAGgW,aAAe,GAAI9hD,EAAI,IAAMA,EAAI,GAAIxB,EAAIP,EAAE6iD,YAAcvjD,IAAMiB,EAAIjB,EAAIU,EAAE6iD,cAAerjD,EAAIquC,EAAE,GAAIlhC,EAAEnN,GAAG,SAAUzC,GACvR,GAAI,aAAe0oN,EAAE5pF,cAAc56E,iBAAiBlkD,GAAG4kD,iBAAiB,aAAeriD,GAAKvC,EAAE8lD,YAAa,OAAOtiD,IAAMjB,EAAIvC,EAAE8lD,aAAe,GAAG,CAClJ,IAAI/lD,EAAI,CACN6lD,SAAU/iD,EACV8nD,KAAM+9J,EAAE60E,aAAet6R,EAAEs/J,WAAa/+J,EACtC2iC,IAAK,GACLo7H,OAAQ,IACPmnD,EAAE60E,aAAex9R,EAAE8R,GAAK5O,EAAEw/J,UAAYx/J,EAAE6jD,aAAe/mD,EAAE8R,GAAK7M,EAAG8rC,EAAE8G,IAAI73C,EAC5E,EAAG+wC,EAAEsK,GAAG,eAAe,SAAUp7C,GAC/B,IAAIiD,GAAI,EACRylN,EAAEyyE,QAAUzsR,EAAE7D,WAAW69M,EAAEyyE,UAAYl4R,EAAIylN,EAAEyyE,OAAO97R,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,SAAUsB,KAAK,IAAOiD,IAAM6tC,EAAE6H,OAAQ91C,IAAK6L,EAAEg6M,EAAE5pF,eAAetjF,IAAI,gBAAiB34C,GAAGu4C,GAAG,gBAAiBv4C,GAAI6lN,EAAEuxE,qBAAuBvrR,EAAE,CAACg6M,EAAE/oL,cAAc8Y,KAAMiwK,EAAE5pF,gBAAgB1jF,GAAG,+BAA+B,SAASp7C,IAC7S8wC,EAAEmL,QAAQ,gBAAiBvtC,EAAE,CAACg6M,EAAE/oL,cAAc8Y,KAAMiwK,EAAE5pF,gBAAgBtjF,IAAI,8BAA+Bx7C,EAC3G,IACF,IAAGo7C,GAAG,gBAAgB,SAAUp7C,GAC9B,IAAIiD,GAAI,EACR2pJ,EAAE3oH,KAAK,8BAA8BA,KAAK,kBAAkB2U,OAAQ8vK,EAAElqC,SAAW9vK,EAAE7D,WAAW69M,EAAElqC,WAAav7K,EAAIylN,EAAElqC,QAAQn/K,KAAKyxC,EAAGjrB,EAAEknC,YAAajc,EAAEpyC,KAAK,SAAUsB,KAAK,IAAOiD,GAAKylN,EAAEgyE,QAAUhyE,EAAEjpC,QAAU3uI,EAAE8H,OAAQ54C,EAAE87C,iBAC1N,IAAGV,GAAG,iBAAiB,WACrBtK,EAAExC,GAAG,YAAcwC,EAAEmL,QAAQ,gBAAkBnL,EAAEmL,QAAQ,cAC3D,IAAGv9C,KAAK,QAAS67J,GAAIh4J,EAAI,EAAGuuC,EAAEpyC,KAAK,kBAAmBmnB,GAAIirB,EAAEypM,WAAW7xB,GAAI7iM,EAAE84Q,eAAe5vN,KAAMwrF,EAAE77J,KAAK,wBAAyBoyC,GAAGsK,GAAG,0DAA0D,WAChMm/G,EAAEjsH,GAAG,cAAgBisH,EAAE77J,KAAK,yBAAyB4vC,GAAG,aAAeo6K,EAAEwxE,mBAAqBxxE,EAAEyxE,cAAgB54R,aAAagB,GAAIA,EAAIN,YAAW,WAC9Is4J,EAAEjsH,GAAG,eAAiBpqC,GAAI,EAAI2hB,EAAE84Q,eAAe5vN,KAAK,GAAK25I,EAAE0zE,MAAQ95R,EAAEomN,GAAI53K,EAAEmL,QAAQ,eACrF,GAAG,KACL,IAAGb,GAAG,kBAAkB,SAAUp7C,GAChC,IAAIiD,EACF+B,EAAIhF,EAAE0gD,MACR,OAAQ,IAAM,CAACkkK,GAAGrvM,QAAQvQ,IAAM0jN,EAAE20E,cAAgBp6R,EAAIyL,EAAE,2DAA4DoiC,EAAEmL,QAAQ,gBAAiBh5C,EAAE46B,GAAG56B,EAAEwzB,MAAMhuB,MAAQ,GAAGmhC,SAAS,IAAO,IAAM,CAAC62K,GAAGlrM,QAAQvQ,IAAM8rC,EAAEmL,QAAQ,iBAAiB,QAAM,CAClP,IAAGb,GAAG,eAAe,WACnBtK,EAAEmL,QAAQ,eACZ,GACF,EAAGp5C,EAAI,SAAU7C,GACf,IAAIiD,EAAIjD,EAAEtB,KAAK,yBACfuE,IAAMA,EAAEvE,KAAK,kBAAmB,MAAOuE,EAAE0uC,SAAU3xC,EAAEtB,KAAK,wBAAyB,MAAM88C,IAAI,WAAY9sC,EAAEg6M,EAAE5pF,eAAetjF,IAAI,iBAAkB9sC,EAAE,CAACg6M,EAAE5pF,cAAe4pF,EAAE/oL,cAAc8Y,OAAO+C,IAAI,+BAAgCx7C,EAAEi/R,cAAgBj/R,EAAEi/R,eACvP,EAAGvwR,EAAEg6M,EAAE/oL,eAAe6b,IAAI,uCAAuCA,IAAI,qCAAqCJ,GAAG,sBAAsB,SAAUp7C,GAC3IA,EAAE6/C,UAAY7+C,IAAMynN,GAAI,EAC1B,IAAGrtK,GAAG,oBAAoB,SAAUp7C,GAClCA,EAAE6/C,UAAY7+C,IAAMynN,GAAI,EAC1B,IAAGrtK,GAAG,qBAAqB,SAAUp7C,GAC5BA,EAAE6/C,OACX,IAAGzE,GAAG,mBAAmB,SAAUp7C,GAC1BA,EAAE6/C,OACX,IAAIp3C,KAAKk1B,MAAK,WACZ,IAAI16B,EACFjD,EAAI0O,EAAEjG,MAAM/J,KAAK,yBACnB,GAAIsB,EAAG,CACL,GAAI,WAAa0O,EAAEhN,KAAKuxO,GAAI,OAAQA,GAClC,IAAK,OACHvkO,EAAEjG,MAAMy8B,SAAS0E,QAAS5pC,EAAEi8C,QAAQ,eACpC,MACF,IAAK,OACHj8C,EAAEi8C,QAAQ,gBACV,MACF,IAAK,SACHj8C,EAAEi8C,QAAQ,iBACV,MACF,IAAK,UACHp5C,EAAE6L,EAAEjG,OACJ,MACF,IAAK,QACHA,KAAKzF,MAAQyF,KAAK6wC,aAAc7wC,KAAKzF,OAAShD,EAAEtB,KAAK,mBAAmB2/R,YAAYv4Q,EAAE49J,UAAUj7K,KAAKzF,MAAO0lN,EAAExiN,UAAYlG,EAAEtB,KAAK,WAAW,GAAKsB,EAAEtB,KAAK,mBAAmBigS,eAAel2R,KAAKzF,OAC/L,MACF,IAAK,WACHhD,EAAEtB,KAAK,SAASu9C,QAAQ,eACxB,MACF,QACEj8C,EAAEizO,IAAMvkO,EAAE7D,WAAW7K,EAAEizO,MAAQxwO,EAAIzC,EAAEizO,GAAGjuO,SACrChF,EAAEu6O,WAAWtH,GACpB,OAAO,CACT,CACA,WAAavkO,EAAEhN,KAAKuxO,MAAQvqB,EAAEyzE,UAAYzzE,EAAEtvJ,MAAQsvJ,EAAEjpC,OAASj8K,EAAEkL,EAAEjG,QAAUxF,EAAIyL,EAAEjG,OAAO2yC,GAAG,0DAA0D,SAASp7C,IAC9JiD,EAAEqrC,GAAG,cAAgBrrC,EAAEvE,KAAK,2BAA6B6C,aAAaxC,GAAIA,EAAIkD,YAAW,WACvFgB,EAAEvE,KAAK,0BAA4B8E,EAAEP,GAAIA,EAAEu4C,IAAI,yDAA0Dx7C,GAAGi8C,QAAQ,cACtH,GAAG,KACL,IACF,IAAIx5C,CACN,EAAGiM,EAAE9I,GAAG83R,eAAej5Q,SAAWvgB,CACpC,EAE8C,EAAO,CAAC,KAAU,aAAuB,2BAAD,EAAF,GAAG,+BAEzC,EAAO,CAAC,MAAW,EAC/D,SAAU5B,GACV,IAAID,EACFuN,EACA5P,EAAI,CAAC,QAAS,aAAc,iBAAkB,uBAC9CiD,EAAI,YAAaxC,UAAY,GAAKA,SAASogD,aAAe,CAAC,SAAW,CAAC,aAAc,iBAAkB,uBACvGmuB,EAAIpqE,MAAMzF,UAAU8E,MACtB,GAAI3B,EAAElB,MAAM89R,SAAU,IAAK,IAAIl6R,EAAIhF,EAAEf,OAAQ+F,GAAI1C,EAAElB,MAAM89R,SAASl/R,IAAIgF,IAAM1C,EAAElB,MAAM+9R,WACpF,IAAIn+R,EAAIsB,EAAElB,MAAM6xC,QAAQ82J,WAAa,CACnCtvK,QAAS,SACTuiB,MAAO,WACL,GAAIv0C,KAAK29B,iBAAkB,IAAK,IAAIpmC,EAAIiD,EAAEhE,OAAQe,GAAIyI,KAAK29B,iBAAiBnjC,IAAIjD,GAAIwD,GAAG,QAASiF,KAAK22R,aAAe57R,EACpHlB,EAAE5D,KAAK+J,KAAM,yBAA0BzH,EAAEilP,cAAcx9O,OAAQnG,EAAE5D,KAAK+J,KAAM,yBAA0BzH,EAAEq+R,cAAc52R,MACxH,EACA00C,SAAU,WACR,GAAI10C,KAAK+rC,oBAAqB,IAAK,IAAIx0C,EAAIiD,EAAEhE,OAAQe,GAAIyI,KAAK+rC,oBAAoBvxC,IAAIjD,GAAIwD,GAAG,QAASiF,KAAK22R,aAAe,KAC1H98R,EAAEk0C,WAAW/tC,KAAM,0BAA2BnG,EAAEk0C,WAAW/tC,KAAM,yBACnE,EACAw9O,cAAe,SAAUjmP,GACvB,IAAIiD,EAAIX,EAAEtC,GACRgF,EAAI/B,EAAE,iBAAkBX,EAAEsD,GAAK,eAAiB,YAClD,OAAOZ,EAAE/F,SAAW+F,EAAI1C,EAAE,SAAUwW,SAAS9T,EAAE4yC,IAAI,YAAa,KAAO9+B,SAAS7V,EAAE20C,IAAI,YAAa,KAAO,EAC5G,EACAynP,cAAe,SAAUr/R,GACvB,OAAOsC,EAAEtC,GAAG2mD,QACd,EACAwO,SAAU,CACRmqO,iBAAiB,EACjBC,iBAAiB,IAGrB,SAAS/7R,EAAExD,GACT,IAAIiD,EACF+B,EAAIhF,GAAK+D,OAAO3C,MAChBoC,EAAIwrE,EAAE3vE,KAAKkF,UAAW,GACtB1B,EAAI,EACJJ,EAAI,EACJ1D,EAAI,EACJmF,EAAI,EACJ3B,EAAI,EACN,IAAKvC,EAAIsC,EAAElB,MAAMm8C,IAAIv4C,IAAItD,KAAO,aAAc,WAAYsD,IAAMjG,GAAK,EAAIiG,EAAEq6C,QAAS,eAAgBr6C,IAAMjG,EAAIiG,EAAEw6R,YAAa,gBAAiBx6R,IAAMjG,EAAIiG,EAAEy6R,aAAc,gBAAiBz6R,IAAMvC,GAAK,EAAIuC,EAAE06R,aAAc,SAAU16R,GAAKA,EAAE0nL,OAAS1nL,EAAE26R,kBAAoBl9R,GAAK,EAAI1D,EAAGA,EAAI,GAAI8D,EAAI,IAAM9D,EAAI0D,EAAI1D,EAAG,WAAYiG,IAAMnC,EAAI9D,GAAK,EAAIiG,EAAE+4R,QAAS,WAAY/4R,IAAMvC,EAAIuC,EAAEg6R,OAAQ,IAAMjgS,IAAM8D,GAAK,EAAIJ,IAAK,IAAM1D,GAAK,IAAM0D,EAAG,CACva,GAAI,IAAMuC,EAAE46R,UAAW,CACrB,IAAI/tR,EAAIvP,EAAE5D,KAAK+J,KAAM,0BACrB5F,GAAKgP,EAAG9S,GAAK8S,EAAGpP,GAAKoP,CACvB,MAAO,GAAI,IAAM7M,EAAE46R,UAAW,CAC5B,IAAI7/R,EAAIuC,EAAE5D,KAAK+J,KAAM,0BACrB5F,GAAK9C,EAAGhB,GAAKgB,EAAG0C,GAAK1C,CACvB,CACA,GAAIkD,EAAI0J,KAAKI,IAAIJ,KAAKC,IAAI7N,GAAI4N,KAAKC,IAAInK,MAAOmN,GAAK3M,EAAI2M,IAAMO,EAAEnL,EAAG4K,EAAI3M,KAAO2M,GAAK,IAAKO,EAAEnL,EAAG/B,KAAOJ,GAAK,GAAIJ,GAAK,GAAI1D,GAAK,IAAK8D,EAAI8J,KAAK,GAAK9J,EAAI,QAAU,QAAQA,EAAI+M,GAAInN,EAAIkK,KAAK,GAAKlK,EAAI,QAAU,QAAQA,EAAImN,GAAI7Q,EAAI4N,KAAK,GAAK5N,EAAI,QAAU,QAAQA,EAAI6Q,GAAI5O,EAAEm0D,SAASoqO,iBAAmB92R,KAAKgiD,sBAAuB,CAC3T,IAAIskB,EAAItmE,KAAKgiD,wBACbvmD,EAAIlE,EAAE+/C,QAAUgvB,EAAEpkB,KAAMpoD,EAAIvC,EAAEggD,QAAU+uB,EAAE5oC,GAC5C,CACA,OAAOnmC,EAAEg/R,OAASv8R,EAAGzC,EAAE+9R,OAASh/R,EAAGiB,EAAE6/R,YAAcjwR,EAAG5P,EAAEigD,QAAU/7C,EAAGlE,EAAEkgD,QAAU39C,EAAGvC,EAAE4/R,UAAY,EAAGp8R,EAAEszC,QAAQ92C,EAAG6C,EAAGJ,EAAG1D,GAAIsD,GAAKd,aAAac,GAAIA,EAAIJ,WAAW2iN,EAAG,MAAOtiN,EAAElB,MAAMy7C,UAAYv6C,EAAElB,MAAMu7C,QAAQr4C,MAAMmE,KAAMjF,EAC7N,CACF,CACA,SAASohN,IACPh1M,EAAI,IACN,CACA,SAASO,EAAEnQ,EAAGiD,GACZ,OAAOjC,EAAEm0D,SAASmqO,iBAAmB,eAAiBt/R,EAAE0B,MAAQuB,EAAI,KAAO,CAC7E,CACAX,EAAEsD,GAAGG,OAAO,CACVgkM,WAAY,SAAU/pM,GACpB,OAAOA,EAAIyI,KAAKlF,KAAK,aAAcvD,GAAKyI,KAAKwzC,QAAQ,aACvD,EACAgjP,aAAc,SAAUj/R,GACtB,OAAOyI,KAAK0zD,OAAO,aAAcn8D,EACnC,GAEJ,OArEkE,2D,oCChuClE,IAAI0F,EAAM,CACT,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,aAAc,GACd,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,aAAc,GACd,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,GACX,OAAQ,GACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,GACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,WAAY,IACZ,cAAe,IACf,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,QAAS,IACT,aAAc,IACd,gBAAiB,IACjB,WAAY,IACZ,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,KAIf,SAASo6R,EAAeC,GACvB,IAAIv7P,EAAKw7P,EAAsBD,GAC/B,OAAOngS,EAAoB4kC,EAC5B,CACA,SAASw7P,EAAsBD,GAC9B,IAAIngS,EAAoB6C,EAAEiD,EAAKq6R,GAAM,CACpC,IAAI//R,EAAI,IAAImB,MAAM,uBAAyB4+R,EAAM,KAEjD,MADA//R,EAAEo8B,KAAO,mBACHp8B,CACP,CACA,OAAO0F,EAAIq6R,EACZ,CACAD,EAAep1R,KAAO,WACrB,OAAOxL,OAAOwL,KAAKhF,EACpB,EACAo6R,EAAez/R,QAAU2/R,EACzBlgS,EAAOD,QAAUigS,EACjBA,EAAet7P,GAAK,G,kBCnSpB,UAWI,EAAO,CAAC,MAAW,EAQpB,SAAU04B,GACX,IAGE+iO,EACAC,EAJEC,EAAQ,CAAC,QAAS,aAAc,iBAAkB,uBACpDC,EAAS,YAAa3/R,UAAYA,SAASogD,cAAgB,EAAI,CAAC,SAAW,CAAC,aAAc,iBAAkB,uBAC5G58C,EAAQW,MAAMzF,UAAU8E,MAG1B,GAAIi5D,EAAE97D,MAAM89R,SACV,IAAK,IAAIngS,EAAIohS,EAAMlhS,OAAQF,GACzBm+D,EAAE97D,MAAM89R,SAASiB,IAAQphS,IAAMm+D,EAAE97D,MAAM+9R,WAG3C,IAAIlsP,EAAUiqB,EAAE97D,MAAM6xC,QAAQ82J,WAAa,CACzCtvK,QAAS,SACTuiB,MAAO,WACL,GAAIv0C,KAAK29B,iBACP,IAAK,IAAIrnC,EAAIqhS,EAAOnhS,OAAQF,GAC1B0J,KAAK29B,iBAAiBg6P,IAASrhS,GAAIi0C,GAAS,QAG9CvqC,KAAK22R,aAAepsP,EAGtBkqB,EAAEx+D,KAAK+J,KAAM,yBAA0BwqC,EAAQgzM,cAAcx9O,OAC7Dy0D,EAAEx+D,KAAK+J,KAAM,yBAA0BwqC,EAAQosP,cAAc52R,MAC/D,EACA00C,SAAU,WACR,GAAI10C,KAAK+rC,oBACP,IAAK,IAAIz1C,EAAIqhS,EAAOnhS,OAAQF,GAC1B0J,KAAK+rC,oBAAoB4rP,IAASrhS,GAAIi0C,GAAS,QAGjDvqC,KAAK22R,aAAe,KAGtBliO,EAAE1mB,WAAW/tC,KAAM,0BACnBy0D,EAAE1mB,WAAW/tC,KAAM,yBACrB,EACAw9O,cAAe,SAAU9oN,GACvB,IAAIkjQ,EAAQnjO,EAAE//B,GACZoyP,EAAU8Q,EAAM,iBAAkBnjO,EAAEt3D,GAAK,eAAiB,YAI5D,OAHK2pR,EAAQtwR,SACXswR,EAAUryN,EAAE,SAEPpkD,SAASy2Q,EAAQ33O,IAAI,YAAa,KAAO9+B,SAASunR,EAAMzoP,IAAI,YAAa,KAAO,EACzF,EACAynP,cAAe,SAAUliQ,GACvB,OAAO+/B,EAAE//B,GAAMwpB,QACjB,EACAwO,SAAU,CACRmqO,iBAAiB,EAEjBC,iBAAiB,IAYrB,SAASvsP,EAAQ5xC,GACf,IAAIk/R,EAAWl/R,GAAS2C,OAAO3C,MAC7BkJ,EAAOrG,EAAM5E,KAAKkF,UAAW,GAC7B8jD,EAAQ,EACR22O,EAAS,EACTjB,EAAS,EACTwC,EAAW,EACXtgP,EAAU,EACVC,EAAU,EAwCZ,IAvCA9+C,EAAQ87D,EAAE97D,MAAMm8C,IAAI+iP,IACd5+R,KAAO,aAGT,WAAY4+R,IACdvC,GAA4B,EAAnBuC,EAASjhP,QAEhB,eAAgBihP,IAClBvC,EAASuC,EAASd,YAEhB,gBAAiBc,IACnBvC,EAASuC,EAASb,aAEhB,gBAAiBa,IACnBtB,GAAiC,EAAxBsB,EAASZ,aAIhB,SAAUY,GAAYA,EAAS5zG,OAAS4zG,EAASX,kBACnDX,GAAmB,EAAVjB,EACTA,EAAS,GAIX11O,EAAmB,IAAX01O,EAAeiB,EAASjB,EAG5B,WAAYuC,IAEdj4O,EADA01O,GAA4B,EAAnBuC,EAASvC,QAGhB,WAAYuC,IACdtB,EAASsB,EAAStB,OACH,IAAXjB,IACF11O,GAAkB,EAAV22O,IAKG,IAAXjB,GAA2B,IAAXiB,EAApB,CASA,GAA2B,IAAvBsB,EAASV,UAAiB,CAC5B,IAAIh2O,EAAasT,EAAEx+D,KAAK+J,KAAM,0BAC9B4/C,GAASuB,EACTm0O,GAAUn0O,EACVo1O,GAAUp1O,CACZ,MAAO,GAA2B,IAAvB02O,EAASV,UAAiB,CACnC,IAAIY,EAAatjO,EAAEx+D,KAAK+J,KAAM,0BAC9B4/C,GAASm4O,EACTzC,GAAUyC,EACVxB,GAAUwB,CACZ,CA2BA,GAxBAD,EAAW5zR,KAAKI,IAAIJ,KAAKC,IAAImxR,GAASpxR,KAAKC,IAAIoyR,MAC1CkB,GAAeK,EAAWL,KAC7BA,EAAcK,EAGVE,EAAsBH,EAAUC,KAClCL,GAAe,KAKfO,EAAsBH,EAAUC,KAElCl4O,GAAS,GACT22O,GAAU,GACVjB,GAAU,IAIZ11O,EAAQ17C,KAAK07C,GAAS,EAAI,QAAU,QAAQA,EAAQ63O,GACpDlB,EAASryR,KAAKqyR,GAAU,EAAI,QAAU,QAAQA,EAASkB,GACvDnC,EAASpxR,KAAKoxR,GAAU,EAAI,QAAU,QAAQA,EAASmC,GAGnDjtP,EAAQkiB,SAASoqO,iBAAmB92R,KAAKgiD,sBAAuB,CAClE,IAAI++K,EAAe/gO,KAAKgiD,wBACxBxK,EAAU7+C,EAAM2+C,QAAUypL,EAAa7+K,KACvCzK,EAAU9+C,EAAM4+C,QAAUwpL,EAAarjM,GACzC,CAwBA,OArBA/kC,EAAM49R,OAASA,EACf59R,EAAM28R,OAASA,EACf38R,EAAMy+R,YAAcK,EACpB9+R,EAAM6+C,QAAUA,EAChB7+C,EAAM8+C,QAAUA,EAIhB9+C,EAAMw+R,UAAY,EAGlBt1R,EAAKwsC,QAAQ11C,EAAOinD,EAAO22O,EAAQjB,GAM/BkC,GACF1+R,aAAa0+R,GAEfA,EAAyBh+R,WAAWy+R,EAAiB,MAC7CxjO,EAAE97D,MAAMy7C,UAAYqgB,EAAE97D,MAAMu7C,QAAQr4C,MAAMmE,KAAM6B,EAxExD,CAyEF,CACA,SAASo2R,IACPR,EAAc,IAChB,CACA,SAASO,EAAsBH,EAAUC,GAQvC,OAAOttP,EAAQkiB,SAASmqO,iBAAqC,eAAlBgB,EAAS5+R,MAAyB6+R,EAAW,MAAQ,CAClG,CAhJArjO,EAAEt3D,GAAGG,OAAO,CACVgkM,WAAY,SAAUnkM,GACpB,OAAOA,EAAK6C,KAAKlF,KAAK,aAAcqC,GAAM6C,KAAKwzC,QAAQ,aACzD,EACAgjP,aAAc,SAAUr5R,GACtB,OAAO6C,KAAK0zD,OAAO,aAAcv2D,EACnC,GA2IJ,OAhN8B,2D,mBCX9B,aAQC,SAAUs3D,GACT,aAIA,IAAIyjO,EAAS,SAAU/gO,EAASvhC,GAC9B51B,KAAKwtE,SAAW/Y,EAAE0C,GAClBn3D,KAAK41B,QAAU6+B,EAAEn3D,OAAO,CAAC,EAAG0C,KAAKgc,WAAY4Z,GAC7C51B,KAAK0oG,QACP,EACAwvL,EAAOlmM,QAAU,QACjBkmM,EAAOC,SAAW,CAChBxlP,GAAI,KACJI,IAAK,MACLqlP,QAAS,UACTC,SAAU,UACV18N,KAAM,SACN1sB,MAAO,GACP8M,MAAO,KACPmC,OAAQ,MAEVg6O,EAAOxhS,UAAUslB,SAAW,WAC1B,MAAO,CACL22B,GAAI3yC,KAAKwtE,SAAS7uC,KAAK,YAAcu5P,EAAOC,SAASxlP,GACrDI,IAAK/yC,KAAKwtE,SAAS7uC,KAAK,aAAeu5P,EAAOC,SAASplP,IACvDqlP,QAASp4R,KAAKwtE,SAAS7uC,KAAK,iBAAmBu5P,EAAOC,SAASC,QAC/DC,SAAUr4R,KAAKwtE,SAAS7uC,KAAK,kBAAoBu5P,EAAOC,SAASE,SACjE18N,KAAM37D,KAAKwtE,SAAS7uC,KAAK,cAAgBu5P,EAAOC,SAASx8N,KACzD1sB,MAAOjvC,KAAKwtE,SAAS7uC,KAAK,eAAiBu5P,EAAOC,SAASlpP,MAC3D8M,MAAO/7C,KAAKwtE,SAAS7uC,KAAK,eAAiBu5P,EAAOC,SAASp8O,MAC3DmC,OAAQl+C,KAAKwtE,SAAS7uC,KAAK,gBAAkBu5P,EAAOC,SAASj6O,OAEjE,EACAg6O,EAAOxhS,UAAUgyG,OAAS,WACxB1oG,KAAKs4R,SAAW,OAASt4R,KAAK41B,QAAQwiQ,QACtCp4R,KAAKu4R,UAAY,OAASv4R,KAAK41B,QAAQyiQ,SACvC,IAAI18N,EAA6B,UAAtB37D,KAAK41B,QAAQ+lC,KAAmB,SAAiC,UAAtB37D,KAAK41B,QAAQ+lC,KAAmB,SAAiC,SAAtB37D,KAAK41B,QAAQ+lC,KAAkB,SAAW,GACvI68N,EAAY/jO,EAAE,uBAAuB3a,KAAK95C,KAAK41B,QAAQ+c,IAAIsV,SAASjoD,KAAKs4R,SAAW,IAAM38N,GAC1F88N,EAAahkO,EAAE,uBAAuB3a,KAAK95C,KAAK41B,QAAQmd,KAAKkV,SAASjoD,KAAKu4R,UAAY,IAAM58N,EAAO,WACpG+8N,EAAgBjkO,EAAE,gDAAgDxM,SAAS0T,GAC3Eg9N,EAAelkO,EAAE,8BAA8Bja,OAAOg+O,EAAWC,EAAYC,GAC7EE,EAAUnkO,EAAE,iDAAiDxM,SAASjoD,KAAKwtE,SAASjtE,KAAK,WAAaP,KAAKs4R,SAAWt4R,KAAKu4R,UAAY,QAAQtwO,SAAS0T,GAAM1T,SAASjoD,KAAK41B,QAAQqZ,OACxLjvC,KAAKwtE,SAASt7B,KAAK0mP,GACnBnkO,EAAEn3D,OAAO0C,KAAM,CACb44R,QAAS54R,KAAKwtE,SAASptC,SACvBo4P,UAAWA,EACXC,WAAYA,EACZE,aAAcA,IAEhB34R,KAAK44R,QAAQp+O,OAAOm+O,GACpB,IAAI58O,EAAQ/7C,KAAK41B,QAAQmmB,OAAS73C,KAAKI,IAAIk0R,EAAU3hI,aAAc4hI,EAAW5hI,cAAgB6hI,EAAc7hI,aAAe,EACvH34G,EAASl+C,KAAK41B,QAAQsoB,QAAUh6C,KAAKI,IAAIk0R,EAAU1hI,cAAe2hI,EAAW3hI,eACjF0hI,EAAUvwO,SAAS,aACnBwwO,EAAWxwO,SAAS,cACpBjoD,KAAK44R,QAAQzpP,IAAI,CACf4M,MAAOA,EACPmC,OAAQA,IAENl+C,KAAK41B,QAAQsoB,SACfs6O,EAAUrpP,IAAI,cAAeqpP,EAAUt6O,SAAW,MAClDu6O,EAAWtpP,IAAI,cAAespP,EAAWv6O,SAAW,OAEtDl+C,KAAKk9E,QAAO,GACZl9E,KAAKwzC,SAAQ,EACf,EACA0kP,EAAOxhS,UAAU05C,OAAS,WACpBpwC,KAAKwtE,SAASjtE,KAAK,WAAYP,KAAK+yC,MAAW/yC,KAAK2yC,IAC1D,EACAulP,EAAOxhS,UAAUi8C,GAAK,SAAUygE,GAC9B,GAAIpzG,KAAKwtE,SAASjtE,KAAK,YAAa,OAAO,EAC3CP,KAAK44R,QAAQvwO,YAAYroD,KAAKu4R,UAAY,QAAQtwO,SAASjoD,KAAKs4R,UAChEt4R,KAAKwtE,SAASjtE,KAAK,WAAW,GACzB6yG,GAAQpzG,KAAKwzC,SACpB,EACA0kP,EAAOxhS,UAAUq8C,IAAM,SAAUqgE,GAC/B,GAAIpzG,KAAKwtE,SAASjtE,KAAK,YAAa,OAAO,EAC3CP,KAAK44R,QAAQvwO,YAAYroD,KAAKs4R,UAAUrwO,SAASjoD,KAAKu4R,UAAY,QAClEv4R,KAAKwtE,SAASjtE,KAAK,WAAW,GACzB6yG,GAAQpzG,KAAKwzC,SACpB,EACA0kP,EAAOxhS,UAAU4yF,OAAS,WACxBtpF,KAAK44R,QAAQxxO,WAAW,YACxBpnD,KAAKwtE,SAASjtE,KAAK,YAAY,EACjC,EACA23R,EAAOxhS,UAAUyyC,QAAU,WACzBnpC,KAAK44R,QAAQj6P,KAAK,WAAY,YAC9B3+B,KAAKwtE,SAASjtE,KAAK,YAAY,EACjC,EACA23R,EAAOxhS,UAAUwmF,OAAS,SAAUk2B,GAC9BpzG,KAAKwtE,SAASjtE,KAAK,YAAaP,KAAKmpC,UAAenpC,KAAKspF,SACzDtpF,KAAKwtE,SAASjtE,KAAK,WAAYP,KAAK2yC,GAAGygE,GAAapzG,KAAK+yC,IAAIqgE,EACnE,EACA8kL,EAAOxhS,UAAU88C,QAAU,SAAU4/D,GACnCpzG,KAAKwtE,SAASz6B,IAAI,oBACbqgE,GAAQpzG,KAAKwtE,SAASm/F,SAC3B3sK,KAAKwtE,SAAS76B,GAAG,mBAAoB8hB,EAAER,OAAM,WAC3Cj0D,KAAKk9E,QACP,GAAGl9E,MACL,EACAk4R,EAAOxhS,UAAUumF,QAAU,WACzBj9E,KAAKwtE,SAASz6B,IAAI,oBAClB/yC,KAAK24R,aAAazvP,SAClBlpC,KAAKwtE,SAASz/B,WAAW,aACzB/tC,KAAKwtE,SAASrd,QAChB,EAcA,IAAIxU,EAAM8Y,EAAEt3D,GAAG07R,gBACfpkO,EAAEt3D,GAAG07R,gBAVL,SAAgB/nP,GACd,OAAO9wC,KAAKk1B,MAAK,WACf,IAAI68D,EAAQt9B,EAAEz0D,MACV/J,EAAO87F,EAAM97F,KAAK,aAClB2/B,EAA2B,iBAAVkb,GAAsBA,EACtC76C,GAAM87F,EAAM97F,KAAK,YAAaA,EAAO,IAAIiiS,EAAOl4R,KAAM41B,IACtC,iBAAVkb,GAAsB76C,EAAK66C,IAAS76C,EAAK66C,IACtD,GACF,EAGA2jB,EAAEt3D,GAAG07R,gBAAgBzvN,YAAc8uN,EAKnCzjO,EAAEt3D,GAAGizC,OAAOskB,WAAa,WAEvB,OADAD,EAAEt3D,GAAG07R,gBAAkBl9O,EAChB37C,IACT,EAKAy0D,GAAE,WACAA,EAAE,6CAA6CokO,iBACjD,IACApkO,EAAEz8D,UAAU26C,GAAG,kBAAmB,4BAA4B,SAAUp7C,GACtDk9D,EAAEz0D,MAAMw7B,KAAK,wBACnBq9P,gBAAgB,UAC1BthS,EAAEg8C,gBACJ,GACF,CA7IC,CA6ICnf,E,oCCrJF,aAQe76B,IAcZyG,WAdoCzG,IAAX+B,QAA6BA,OAGrD,EAAO,CAAC,MAAW,EAAF,SAAYw9R,IAY/B,SAAWrkO,GACT,aAEA,IAAImyB,EAAwB,CAAC,WAAY,YAAa,cAClD9C,EAAW,CAAC,aAAc,OAAQ,OAAQ,WAAY,WAAY,SAAU,MAAO,cAEnFC,EAAmB,CAErB,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAAQ,WAAY,QAH7B,kBAI3BxnF,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BynF,KAAM,GACNxnF,EAAG,GACHynF,GAAI,GACJhzC,IAAK,GACLtd,KAAM,GACN0c,IAAK,GACL6zC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJnuF,EAAG,GACHouF,IAAK,CAAC,MAAO,MAAO,QAAS,QAAS,UACtCC,GAAI,GACJC,GAAI,GACJrsF,EAAG,GACHssF,IAAK,GACLppF,EAAG,GACHqpF,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACR97E,EAAG,GACH+7E,GAAI,IAQFC,EAAmB,8DAOnBC,EAAmB,sIACvB,SAASC,EAAiB3mD,EAAM4mD,GAC9B,IAAIC,EAAW7mD,EAAKlK,SAASjsB,cAC7B,IAAmD,IAA/CisD,EAAE59B,QAAQ2uD,EAAUD,GACtB,OAAuC,IAAnC9wB,EAAE59B,QAAQ2uD,EAAU1B,IACfzb,QAAQ1pC,EAAKjI,UAAUvxB,MAAMigF,IAAqBzmD,EAAKjI,UAAUvxB,MAAMkgF,IASlF,IALA,IAAII,EAAShxB,EAAE8wB,GAAsB//D,QAAO,SAAUwI,EAAOzzB,GAC3D,OAAOA,aAAiBkI,MAC1B,IAGSnM,EAAI,EAAGgB,EAAImuF,EAAOjvF,OAAQF,EAAIgB,EAAGhB,IACxC,GAAIkvF,EAASrgF,MAAMsgF,EAAOnvF,IACxB,OAAO,EAGX,OAAO,CACT,CACA,SAASqvF,EAAaozM,EAAgBlzM,EAAWC,GAC/C,GAAIA,GAAoC,oBAAfA,EACvB,OAAOA,EAAWizM,GAGpB,IADA,IAAI/yM,EAAgBvvF,OAAOwL,KAAK4jF,GACvBvvF,EAAI,EAAG2J,EAAM84R,EAAeviS,OAAQF,EAAI2J,EAAK3J,IAEpD,IADA,IAAImoC,EAAWs6P,EAAeziS,GAAGgmC,iBAAiB,KACzC5kB,EAAI,EAAGshR,EAAOv6P,EAASjoC,OAAQkhB,EAAIshR,EAAMthR,IAAK,CACrD,IAAIolB,EAAK2B,EAAS/mB,GACdwuE,EAASppD,EAAGrI,SAASjsB,cACzB,IAAuC,IAAnCw9E,EAAcl5E,QAAQo5E,GAM1B,IAFA,IAAIC,EAAgB,GAAG3qF,MAAM5E,KAAKkmC,EAAGxD,YACjC8sD,EAAwB,GAAGvzE,OAAOgzE,EAAU,MAAQ,GAAIA,EAAUK,IAAW,IACxEtpF,EAAI,EAAGq8R,EAAO9yM,EAAc3vF,OAAQoG,EAAIq8R,EAAMr8R,IAAK,CAC1D,IAAI+hC,EAAOwnD,EAAcvpF,GACpB0oF,EAAiB3mD,EAAMynD,IAC1BtpD,EAAGN,gBAAgBmC,EAAKlK,SAE5B,MAVEqI,EAAG9I,WAAWC,YAAY6I,EAW9B,CAEJ,CAIM,cAAe9kC,SAASC,cAAc,MAC1C,SAAWi/C,GACT,GAAM,YAAaA,EAAnB,CACA,IAAIiwE,EAAgB,YAClBC,EAAY,YACZC,EAAenwE,EAAK+gB,QAAQmvD,GAC5BE,EAAS7wH,OACTsxH,EAAkB,WAChB,IAAI6vK,EAAQnjO,EAAEz0D,MACd,MAAO,CACLsS,IAAK,SAAUkyD,GAEb,OADAA,EAAUroE,MAAMzF,UAAU8E,MAAM5E,KAAKkF,WAAWiG,KAAK,KAC9C61R,EAAM3vO,SAASuc,EACxB,EACAt7B,OAAQ,SAAUs7B,GAEhB,OADAA,EAAUroE,MAAMzF,UAAU8E,MAAM5E,KAAKkF,WAAWiG,KAAK,KAC9C61R,EAAMvvO,YAAYmc,EAC3B,EACAp0B,OAAQ,SAAUo0B,EAASyjD,GACzB,OAAO2vK,EAAMtvO,YAAYkc,EAASyjD,EACpC,EACAvwF,SAAU,SAAU8sC,GAClB,OAAOozN,EAAMnvO,SAAS+b,EACxB,EAEJ,EACF,GAAI8iD,EAAOrtH,eAAgB,CACzB,IAAIiuH,EAAoB,CACtB/tH,IAAK4tH,EACL7tH,YAAY,EACZmzC,cAAc,GAEhB,IACEi6E,EAAOrtH,eAAeotH,EAAcF,EAAee,EACrD,CAAE,MAAOpgF,QAIWvuC,IAAduuC,EAAGhkC,SAAuC,aAAfgkC,EAAGhkC,SAChCokH,EAAkBhuH,YAAa,EAC/BotH,EAAOrtH,eAAeotH,EAAcF,EAAee,GAEvD,CACF,MAAWZ,EAAOF,GAAWe,kBAC3Bd,EAAac,iBAAiBhB,EAAeY,EA1Cf,CA4CjC,CA7CD,CA6CGzsH,QAEL,IA0CQrB,EASAmC,EACA2gG,EApDJm8L,EAAclhS,SAASC,cAAc,KAEzC,GADAihS,EAAYhqN,UAAU58D,IAAI,KAAM,OAC3B4mR,EAAYhqN,UAAUx3C,SAAS,MAAO,CACzC,IAAIyhQ,EAAOC,aAAa1iS,UAAU4b,IAChC+mR,EAAUD,aAAa1iS,UAAUwyC,OACnCkwP,aAAa1iS,UAAU4b,IAAM,WAC3BnW,MAAMzF,UAAU4hB,QAAQ1hB,KAAKkF,UAAWq9R,EAAKr+R,KAAKkF,MACpD,EACAo5R,aAAa1iS,UAAUwyC,OAAS,WAC9B/sC,MAAMzF,UAAU4hB,QAAQ1hB,KAAKkF,UAAWu9R,EAAQv+R,KAAKkF,MACvD,CACF,CAKA,GAJAk5R,EAAYhqN,UAAU9+B,OAAO,MAAM,GAI/B8oP,EAAYhqN,UAAUx3C,SAAS,MAAO,CACxC,IAAI8xI,EAAU4vH,aAAa1iS,UAAU05C,OACrCgpP,aAAa1iS,UAAU05C,OAAS,SAAUvrC,EAAOojH,GAC/C,OAAI,KAAKnsH,YAAckE,KAAK03B,SAAS7yB,MAAYojH,EACxCA,EAEAuhD,EAAQ5yK,KAAKoJ,KAAM6E,EAE9B,CACF,CAIA,SAASy0R,EAAQn4Q,EAAQC,GACvB,OAAOD,EAAO3qB,SAAW4qB,EAAO5qB,QAAU2qB,EAAO2wH,OAAM,SAAU36E,EAASnpC,GACxE,OAAOmpC,IAAY/1C,EAAO4M,EAC5B,GACF,CAsFA,SAASurQ,EAAmB98P,EAAQ+8P,GAClC,IAEE3zO,EAFE0rD,EAAkB90E,EAAO80E,gBAC3B37E,EAAU,GAEZ,GAAI4jQ,EAAgB,CAClB,IAAK,IAAIljS,EAAI,EAAG2J,EAAMsxG,EAAgB/6G,OAAQF,EAAI2J,EAAK3J,KACrDuvD,EAAM0rD,EAAgBj7G,IACZ+kC,UAAuC,aAA3BwqB,EAAI7xB,WAAWqjC,SAA0BxR,EAAI7xB,WAAWqH,UAC5EzF,EAAQ9+B,KAAK+uD,GAGjB,OAAOjwB,CACT,CACA,OAAO27E,CACT,CAGA,SAASkoL,EAAgBh9P,EAAQ80E,GAI/B,IAHA,IAEE1rD,EAFEtrD,EAAQ,GACVq7B,EAAU27E,GAAmB90E,EAAO80E,gBAE7Bj7G,EAAI,EAAG2J,EAAM21B,EAAQp/B,OAAQF,EAAI2J,EAAK3J,KAC7CuvD,EAAMjwB,EAAQt/B,IACJ+kC,UAAuC,aAA3BwqB,EAAI7xB,WAAWqjC,SAA0BxR,EAAI7xB,WAAWqH,UAC5E9gC,EAAMzD,KAAK+uD,EAAItrD,OAGnB,OAAKkiC,EAAOi9P,SAGLn/R,EAFGA,EAAM/D,OAAgB+D,EAAM,GAAb,IAG3B,CA5HA2+R,EAAc,KAWTp0Q,OAAOpuB,UAAUqmG,aAKd9iG,EAAiB,WAEnB,IACE,IAAIe,EAAS,CAAC,EACVy2J,EAAkBh7J,OAAOwD,eACzB8gB,EAAS02I,EAAgBz2J,EAAQA,EAAQA,IAAWy2J,CAC1D,CAAE,MAAOh5J,GAAQ,CACjB,OAAOsiB,CACT,CARqB,GASjB3e,EAAW,CAAC,EAAEA,SACd2gG,EAAa,SAAUgH,GACzB,GAAY,MAAR/jG,KACF,MAAM,IAAI0qC,UAEZ,IAAI5iC,EAASgd,OAAO9kB,MACpB,GAAI+jG,GAAmC,mBAAzB3nG,EAASxF,KAAKmtG,GAC1B,MAAM,IAAIr5D,UAEZ,IAAI/sB,EAAe7V,EAAOtR,OACtBmjS,EAAe70Q,OAAOi/E,GACtB61L,EAAeD,EAAanjS,OAC5B2mD,EAAWrhD,UAAUtF,OAAS,EAAIsF,UAAU,QAAKvC,EAEjD+c,EAAM6mC,EAAWmrB,OAAOnrB,GAAY,EACpC7mC,GAAOA,IAETA,EAAM,GAER,IAAI6pB,EAAQj8B,KAAKqL,IAAIrL,KAAKI,IAAIgS,EAAK,GAAIqH,GAEvC,GAAIi8Q,EAAez5P,EAAQxiB,EACzB,OAAO,EAGT,IADA,IAAIqQ,GAAS,IACJA,EAAQ4rQ,GACf,GAAI9xR,EAAOmwB,WAAWkI,EAAQnS,IAAU2rQ,EAAa1hQ,WAAWjK,GAC9D,OAAO,EAGX,OAAO,CACT,EACI/zB,EACFA,EAAe6qB,OAAOpuB,UAAW,aAAc,CAC7C,MAASqmG,EACT,cAAgB,EAChB,UAAY,IAGdj4E,OAAOpuB,UAAUqmG,WAAaA,GAI/BtmG,OAAOwL,OACVxL,OAAOwL,KAAO,SAAUjI,EAExB4C,EAEAxC,GAKE,IAAKwC,KAFLxC,EAAI,GAEMJ,EAERI,EAAEzD,eAAeC,KAAKoD,EAAG4C,IAAMxC,EAAEtD,KAAK8F,GAGxC,OAAOxC,CACT,GAEEy/R,oBAAsBA,kBAAkBnjS,UAAUC,eAAe,oBACnEF,OAAOwD,eAAe4/R,kBAAkBnjS,UAAW,kBAAmB,CACpEyD,IAAK,WACH,OAAO6F,KAAKs8B,iBAAiB,WAC/B,IAuCJ,IAAIqsB,EAAW,CACbmxO,YAAY,EACZ39F,KAAM1nI,EAAE9L,SAASlsB,OAAOn6B,KAE1BmyD,EAAE9L,SAASlsB,OAAOn6B,IAAM,SAAUoyB,EAAMn6B,GAEtC,OADIA,IAAUouD,EAASmxO,YAAYrlO,EAAE//B,GAAMz+B,KAAK,YAAY,GACrD0yD,EAASwzI,KAAKtgM,MAAMmE,KAAMlE,UACnC,EACA,IAAIi+R,EAAmB,KACnBC,EAAmB,WACrB,IAEE,OADA,IAAIvkP,MAAM,WACH,CACT,CAAE,MAAOl+C,GACP,OAAO,CACT,CACF,CAPuB,GAoCvB,SAAS0iS,EAAat1M,EAAIg1M,EAAc1xP,EAAQ4vK,GAG9C,IAFA,IAAIqiF,EAAc,CAAC,UAAW,UAAW,UACvCC,GAAgB,EACT7jS,EAAI,EAAGA,EAAI4jS,EAAY1jS,OAAQF,IAAK,CAC3C,IAAI8jS,EAAaF,EAAY5jS,GAC3BwR,EAAS68E,EAAGy1M,GACd,GAAItyR,IACFA,EAASA,EAAO1L,WAGG,YAAfg+R,IACFtyR,EAASA,EAAO1C,QAAQ,WAAY,KAElCyyM,IAAW/vM,EAASuyR,EAAgBvyR,IACxCA,EAASA,EAAOvB,cAEd4zR,EADa,aAAXlyP,EACcngC,EAAOgF,QAAQ6sR,IAAiB,EAEhC7xR,EAAOi1F,WAAW48L,IAEjB,KAEvB,CACA,OAAOQ,CACT,CACA,SAASG,EAAU//R,GACjB,OAAO8V,SAAS9V,EAAO,KAAO,CAChC,CAvDAk6D,EAAEt3D,GAAGo9R,cAAgB,SAAU1lO,GAC7B,IACEl8D,EADEmkC,EAAK98B,KAAK,GAEV88B,EAAG63D,eAEDqlM,EAEFrhS,EAAQ,IAAI88C,MAAMof,EAAW,CAC3Bre,SAAS,KAIX79C,EAAQX,SAASy8F,YAAY,UACvB2gD,UAAUvgF,GAAW,GAAM,GAEnC/3B,EAAG63D,cAAch8F,IACRmkC,EAAG+tM,YAEZlyO,EAAQX,SAASwiS,qBACX3lM,UAAYhgC,EAClB/3B,EAAG+tM,UAAU,KAAOh2K,EAAWl8D,IAG/BqH,KAAKwzC,QAAQqhB,EAEjB,EAkCA,IAAI4lO,EAAkB,CAEpB,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,IACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KACR,OAAQ,KAER,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU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,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,IACP,CACD,EAAG,CAAC,EAAG,GACP,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,IACP,CACD,EAAG,CAAC,EAAG,GACP,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,IACP,CACD,EAAG,CAAC,EAAG,GACP,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,IACP,CACD,EAAG,CAAC,EAAG,GACP,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC,EAAG,GACR,GAAI,CAAC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,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,IACH,CACD,GAAI,CAAC,EAAG,IACR,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,IACH,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,GACJ,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,GACJ,GAAI,CAAC,EAAG,KACP,CACD,GAAI,GACJ,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,GACJ,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,IACH,CACD,GAAI,GACJ,GAAI,CAAC,EAAG,KACP,CACD,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,GACJ,GAAI,CAAC,EAAG,IACR,GAAI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,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,IACH,CACD,GAAI,CAAC,EAAG,MACP,CACD,GAAI,IACJ,GAAI,CAAC,EAAG,IACR,GAAI,IACJ,GAAI,CAAC,EAAG,MACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,IACJ,GAAI,IACJ,GAAI,CAAC,EAAG,MACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,MACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,MACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG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,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,IACJ,GAAI,IACJ,GAAI,CAAC,EAAG,MACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,KACP,CACD,GAAI,CAAC,EAAG,KACR,GAAI,CAAC,EAAG,MACP,CACD,GAAI,CAAC,EAAG,KACR,GAAI,CAAC,EAAG,MACP,CACD,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG,IACR,GAAI,CAAC,EAAG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","file":"js/application-b938278419b6ba294111.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"0\":\"actioncable\"}[chunkId]||chunkId) + \"-\" + {\"0\":\"f9ddec88dbd9adaea580\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 277);\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory();\n})(this, function () {\n 'use strict';\n\n var hookCallback;\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 function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\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 function isUndefined(input) {\n return input === void 0;\n }\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\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 function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n return a;\n }\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\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 function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\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 for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n return false;\n };\n }\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);\n if (m._strict) {\n isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\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 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 function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\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 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 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 function isMoment(obj) {\n return obj instanceof Moment || obj != null && obj._isAMomentObject != null;\n }\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n function deprecate(msg, fn) {\n var firstTime = true;\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(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + new Error().stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n var deprecations = {};\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 hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\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((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\\d{1,2}/.source);\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 (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n var keys;\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 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 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 function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([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(func.apply(this, arguments), token);\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 function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\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 return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : 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 format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n return formatFunctions[format](m);\n }\n function expandFormat(format, locale) {\n var i = 5;\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n return format;\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 function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n if (format || !formatUpper) {\n return format;\n }\n this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {\n if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {\n return tok.slice(1);\n }\n return tok;\n }).join('');\n return this._longDateFormat[key];\n }\n var defaultInvalidDate = 'Invalid date';\n function invalidDate() {\n return this._invalidDate;\n }\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\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 function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);\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 var aliases = {};\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\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 return normalizedInput;\n }\n var priorities = {};\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({\n unit: u,\n priority: priorities[u]\n });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\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 function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n return value;\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 function get(mom, unit) {\n return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\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 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 var match1 = /\\d/,\n // 0 - 9\n match2 = /\\d\\d/,\n // 00 - 99\n match3 = /\\d{3}/,\n // 000 - 999\n match4 = /\\d{4}/,\n // 0000 - 9999\n match6 = /[+-]?\\d{6}/,\n // -999999 - 999999\n match1to2 = /\\d\\d?/,\n // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/,\n // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/,\n // 99999 - 999999\n match1to3 = /\\d{1,3}/,\n // 0 - 999\n match1to4 = /\\d{1,4}/,\n // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/,\n // -999999 - 999999\n matchUnsigned = /\\d+/,\n // 0 - inf\n matchSigned = /[+-]?\\d+/,\n // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi,\n // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi,\n // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/,\n // 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 = /[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 regexes;\n regexes = {};\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\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(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n var tokens = {};\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 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 function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\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 function mod(n, x) {\n return (n % x + x) % x;\n }\n var indexOf;\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 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 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\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 addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\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 = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n defaultLocaleMonthsShort = '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 function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months) ? this._months : this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\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(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\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 function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\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('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\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 var dayOfMonth;\n if (!mom.isValid()) {\n // No op\n return mom;\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 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\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 function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\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 ? this._monthsShortStrictRegex : this._monthsShortRegex;\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 ? this._monthsStrictRegex : this._monthsRegex;\n }\n }\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\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 for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\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 addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\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 // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\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 addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = 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 function getIsLeapYear() {\n return isLeapYear(this.year());\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 return date;\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 return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var\n // 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 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 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 return {\n year: resYear,\n dayOfYear: resDayOfYear\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 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 return {\n week: resWeek,\n year: resYear\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 // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\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 var defaultLocaleWeek = {\n dow: 0,\n // 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 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 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 addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\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 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 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 if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n return null;\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 var defaultLocaleWeekdays = '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 function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];\n return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;\n }\n function localeWeekdaysShort(m) {\n return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n function localeWeekdaysMin(m) {\n return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;\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 for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\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 function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\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('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\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 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\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 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 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 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 ? this._weekdaysStrictRegex : this._weekdaysRegex;\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 ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\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 ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\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 this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n function kFormat() {\n return this.hours() || 24;\n }\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);\n });\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\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 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 function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n week: defaultLocaleWeek,\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\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 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 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 (next && next.length >= j && commonPrefix(split, next) >= j - 1) {\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 function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\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 (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports && isLocaleNameSane(name)) {\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\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 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('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n return globalLocale._abbr;\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('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\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 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 return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\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 if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n if (!key) {\n return globalLocale;\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 return chooseLocale(key);\n }\n function listLocales() {\n return keys(locales);\n }\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n if (a && getParsingFlags(m).overflow === -2) {\n overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\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 getParsingFlags(m).overflow = overflow;\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 = /^\\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 = /^\\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 = [['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/], ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/], ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/], ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false], ['YYYY-DDD', /\\d{4}-\\d{3}/], ['YYYY-MM', /\\d{4}-\\d\\d/, false], ['YYYYYYMMDD', /[+-]\\d{10}/], ['YYYYMMDD', /\\d{8}/], ['GGGG[W]WWE', /\\d{4}W\\d{3}/], ['GGGG[W]WW', /\\d{4}W\\d{2}/, false], ['YYYYDDD', /\\d{7}/], ['YYYYMM', /\\d{6}/, false], ['YYYY', /\\d{4}/, false]],\n // iso time formats and regexes\n isoTimes = [['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/], ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/], ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/], ['HH:mm', /\\d\\d:\\d\\d/], ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/], ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/], ['HHmmss', /\\d\\d\\d\\d\\d\\d/], ['HHmm', /\\d\\d\\d\\d/], ['HH', /\\d\\d/]],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(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 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 function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n return result;\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 function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^()]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\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(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\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(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\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 configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\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 function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\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 if (config._d) {\n return;\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 if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\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] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : 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 if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\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(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\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 curWeek = weekOfYear(createLocal(), dow, doy);\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\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 tokens = 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)) || [])[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(string.indexOf(parsedInput) + parsedInput.length);\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 = 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 (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\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 configFromArray(config);\n checkOverflow(config);\n }\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\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 if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\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 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 getParsingFlags(tempConfig).score = currentScore;\n if (!bestFormatIsValid) {\n if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {\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 extend(config, bestMoment || tempConfig);\n }\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n configFromArray(config);\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 return res;\n }\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n config._locale = config._locale || getLocale(config._l);\n if (input === null || format === undefined && input === '') {\n return createInvalid({\n nullInput: true\n });\n }\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\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 if (!isValid(config)) {\n config._d = null;\n }\n return config;\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 function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {\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 return createFromConfig(c);\n }\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', 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 prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', 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 // 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 return pickBy('isBefore', args);\n }\n function max() {\n var args = [].slice.call(arguments, 0);\n return pickBy('isAfter', args);\n }\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\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\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n return true;\n }\n function isValid$1() {\n return this._isValid;\n }\n function createInvalid$1() {\n return createDuration(NaN);\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 this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds + seconds * 1e3 +\n // 1000\n minutes * 6e4 +\n // 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 this._data = {};\n this._locale = getLocale();\n this._bubble();\n }\n function isDuration(obj) {\n return obj instanceof Duration;\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 (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {\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 sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);\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 function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n if (matches === null) {\n return null;\n }\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\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 = (isMoment(input) || isDate(input) ? input.valueOf() : 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 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(this, createDuration(input - offset, 'm'), 1, false);\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 function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n this.utcOffset(input, keepLocalTime);\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\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 function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n return (this.utcOffset() - input) % 60 === 0;\n }\n function isDaylightSavingTime() {\n return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();\n }\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n var c = {},\n other;\n copyConfig(c, this);\n c = prepareConfig(c);\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n return this._isDSTShifted;\n }\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\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 = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\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 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 (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n ret = new Duration(duration);\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n return ret;\n }\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\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 function positiveMomentsDifference(base, other) {\n var res = {};\n res.months = other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n return res;\n }\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {\n milliseconds: 0,\n 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 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(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val;\n val = period;\n period = tmp;\n }\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\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 if (!mom.isValid()) {\n // No op\n return;\n }\n updateOffset = updateOffset == null ? true : updateOffset;\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 var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\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 isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;\n }\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],\n i,\n property,\n propertyLen = properties.length;\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest = input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],\n i,\n property;\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n return objectTest && propertyTest;\n }\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';\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 = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n function clone() {\n return new Moment(this);\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 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 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 (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));\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 this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n if (!this.isValid()) {\n return NaN;\n }\n that = cloneWithOffset(input, this);\n if (!that.isValid()) {\n return NaN;\n }\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n units = normalizeUnits(units);\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;\n // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break;\n // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break;\n // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break;\n // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break;\n // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n return asFloat ? output : absFloor(output);\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 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 hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\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(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\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).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\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 return this.format(prefix + year + datetime + suffix);\n }\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n function from(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n to: this,\n from: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n function to(time, withoutSuffix) {\n if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {\n return createDuration({\n from: this,\n to: time\n }).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\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 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 var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n });\n function localeData() {\n return this._locale;\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 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 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 function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3, 1);\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday());\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));\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(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);\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 this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\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 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;\n break;\n case 'isoWeek':\n time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 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 += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 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 this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n function toDate() {\n return new Date(this.valueOf());\n }\n function toArray() {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\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 function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n function isValid$2() {\n return isValid(this);\n }\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n function invalidAt() {\n return getParsingFlags(this).overflow;\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 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 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 addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], 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 addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\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 if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\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 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 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 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 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 case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\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 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 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 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 return '';\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 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 return '';\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 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 return '';\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 if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {\n return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;\n }\n }\n return this.year();\n }\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\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('^(' + narrowPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\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 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\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(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);\n }\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\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 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 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 // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\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 ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;\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 // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\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 = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 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 // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\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 // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\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 addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\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 // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\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 function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n var proto = Moment.prototype;\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('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n function preParsePostFormat(string) {\n return string;\n }\n var proto$1 = Locale.prototype;\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 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 proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\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 function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n if (index != null) {\n return get$1(format, index, field, 'month');\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 format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n format = format || '';\n }\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\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 function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n getSetGlobalLocale('en', {\n eras: [{\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC'\n }],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n var mathAbs = Math.abs;\n function abs() {\n var data = this._data;\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\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 return this;\n }\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\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 function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\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 (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {\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 seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\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 data.days = days;\n data.months = months;\n data.years = years;\n return this;\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 function monthsToDays(months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n units = normalizeUnits(units);\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 // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;\n }\n function makeAs(alias) {\n return function () {\n return this.as(alias);\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 function clone$1() {\n return createDuration(this);\n }\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\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 function weeks() {\n return absFloor(this.days() / 7);\n }\n var round = Math.round,\n thresholds = {\n ss: 44,\n // a few seconds to seconds\n s: 45,\n // seconds to minute\n m: 45,\n // minutes to hour\n h: 22,\n // hours to day\n d: 26,\n // days to month/week\n w: null,\n // 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 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 = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];\n if (thresholds.w != null) {\n a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];\n }\n a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];\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 function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\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 locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n return locale.postformat(output);\n }\n var abs$1 = Math.abs;\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\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 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 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 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 return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');\n }\n var proto$2 = Duration.prototype;\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 proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\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.29.4';\n setHookCallback(createLocal);\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',\n // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',\n // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',\n // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD',\n // <input type=\"date\" />\n TIME: 'HH:mm',\n // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss',\n // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS',\n // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW',\n // <input type=\"week\" />\n MONTH: 'YYYY-MM' // <input type=\"month\" />\n };\n\n return hooks;\n});","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n(function (global, factory) {\n \"use strict\";\n\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket trac-14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n\n // Pass this if window is not defined yet\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n // enough that all such attempts are guarded in a try block.\n \"use strict\";\n\n var arr = [];\n var getProto = Object.getPrototypeOf;\n var slice = arr.slice;\n var flat = arr.flat ? function (array) {\n return arr.flat.call(array);\n } : function (array) {\n return arr.concat.apply([], array);\n };\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var fnToString = hasOwn.toString;\n var ObjectFunctionString = fnToString.call(Object);\n var support = {};\n var isFunction = function isFunction(obj) {\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n // Plus for old WebKit, typeof returns \"function\" for HTML collections\n // (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\" && typeof obj.item !== \"function\";\n };\n var isWindow = function isWindow(obj) {\n return obj != null && obj === obj.window;\n };\n var document = window.document;\n var preservedScriptAttributes = {\n type: true,\n src: true,\n nonce: true,\n noModule: true\n };\n function DOMEval(code, node, doc) {\n doc = doc || document;\n var i,\n val,\n script = doc.createElement(\"script\");\n script.text = code;\n if (node) {\n for (i in preservedScriptAttributes) {\n // Support: Firefox 64+, Edge 18+\n // Some browsers don't support the \"nonce\" property on scripts.\n // On the other hand, just using `getAttribute` is not enough as\n // the `nonce` attribute is reset to an empty string whenever it\n // becomes browsing-context connected.\n // See https://github.com/whatwg/html/issues/2369\n // See https://html.spec.whatwg.org/#nonce-attributes\n // The `node.getAttribute` check was added for the sake of\n // `jQuery.globalEval` so that it can fake a nonce-containing node\n // via an object.\n val = node[i] || node.getAttribute && node.getAttribute(i);\n if (val) {\n script.setAttribute(i, val);\n }\n }\n }\n doc.head.appendChild(script).parentNode.removeChild(script);\n }\n function toType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android <=2.3 only (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n }\n /* global Symbol */\n // Defining this global in .eslintrc.json would create a danger of using the global\n // unguarded in another place, it seems safer to define global only for this module\n\n var version = \"3.7.1\",\n rhtmlSuffix = /HTML$/i,\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n // Return all the elements in a clean array\n if (num == null) {\n return slice.call(this);\n }\n\n // Return just the one element from the set\n return num < 0 ? this[num + this.length] : this[num];\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n even: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return (i + 1) % 2;\n }));\n },\n odd: function () {\n return this.pushStack(jQuery.grep(this, function (_elem, i) {\n return i % 2;\n }));\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n copy = options[name];\n\n // Prevent Object.prototype pollution\n // Prevent never-ending loop\n if (name === \"__proto__\" || target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {\n src = target[name];\n\n // Ensure proper type for the source value\n if (copyIsArray && !Array.isArray(src)) {\n clone = [];\n } else if (!copyIsArray && !jQuery.isPlainObject(src)) {\n clone = {};\n } else {\n clone = src;\n }\n copyIsArray = false;\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isPlainObject: function (obj) {\n var proto, Ctor;\n\n // Detect obvious negatives\n // Use toString instead of jQuery.type to catch host objects\n if (!obj || toString.call(obj) !== \"[object Object]\") {\n return false;\n }\n proto = getProto(obj);\n\n // Objects with no prototype (e.g., `Object.create( null )`) are plain\n if (!proto) {\n return true;\n }\n\n // Objects with prototype are plain iff they were constructed by a global Object function\n Ctor = hasOwn.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && fnToString.call(Ctor) === ObjectFunctionString;\n },\n isEmptyObject: function (obj) {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n // Evaluates a script in a provided context; falls back to the global one\n // if not specified.\n globalEval: function (code, options, doc) {\n DOMEval(code, {\n nonce: options && options.nonce\n }, doc);\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // Retrieve the text value of an array of DOM nodes\n text: function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += jQuery.text(node);\n }\n }\n if (nodeType === 1 || nodeType === 11) {\n return elem.textContent;\n }\n if (nodeType === 9) {\n return elem.documentElement.textContent;\n }\n if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n\n // Do not include comment or processing instruction nodes\n\n return ret;\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n isXMLDoc: function (elem) {\n var namespace = elem && elem.namespaceURI,\n docElem = elem && (elem.ownerDocument || elem).documentElement;\n\n // Assume HTML when documentElement doesn't yet exist, such as inside\n // document fragments.\n return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || \"HTML\");\n },\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return flat(ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: real iOS 8.2 only (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = toType(obj);\n if (isFunction(obj) || isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n function nodeName(elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n }\n var pop = arr.pop;\n var sort = arr.sort;\n var splice = arr.splice;\n var whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n var rtrimCSS = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\");\n\n // Note: an element does not contain itself\n jQuery.contains = function (a, b) {\n var bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (\n // Support: IE 9 - 11+\n // IE doesn't have `contains` on SVG.\n a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n };\n\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n function fcssescape(ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n }\n jQuery.escapeSelector = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n var preferredDoc = document,\n pushNative = push;\n (function () {\n var i,\n Expr,\n outermostContext,\n sortInput,\n hasDuplicate,\n push = pushNative,\n // Local document vars\n document,\n documentElement,\n documentIsHTML,\n rbuggyQSA,\n matches,\n // Instance-specific data\n expando = jQuery.expando,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n nonnativeSelectorCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" + \"loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n // Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rleadingCombinator = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rdescend = new RegExp(whitespace + \"|>\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n ID: new RegExp(\"^#(\" + identifier + \")\"),\n CLASS: new RegExp(\"^\\\\.(\" + identifier + \")\"),\n TAG: new RegExp(\"^(\" + identifier + \"|[*])\"),\n ATTR: new RegExp(\"^\" + attributes),\n PSEUDO: new RegExp(\"^\" + pseudos),\n CHILD: new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n bool: new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n needsContext: new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n // CSS escapes\n // https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\"),\n funescape = function (escape, nonHex) {\n var high = \"0x\" + escape.slice(1) - 0x10000;\n if (nonHex) {\n // Strip the backslash prefix from a non-hex escape sequence\n return nonHex;\n }\n\n // Replace a hexadecimal escape sequence with the encoded Unicode code point\n // Support: IE <=11+\n // For values outside the Basic Multilingual Plane (BMP), manually construct a\n // surrogate pair\n return high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // Used for iframes; see `setDocument`.\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE/Edge.\n unloadHandler = function () {\n setDocument();\n },\n inDisabledFieldset = addCombinator(function (elem) {\n return elem.disabled === true && nodeName(elem, \"fieldset\");\n }, {\n dir: \"parentNode\",\n next: \"legend\"\n });\n\n // Support: IE <=9 only\n // Accessing document.activeElement can throw unexpectedly\n // https://bugs.jquery.com/ticket/13393\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n\n // Support: Android <=4.0\n // Detect silently failing push.apply\n // eslint-disable-next-line no-unused-expressions\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: function (target, els) {\n pushNative.apply(target, slice.call(els));\n },\n call: function (target) {\n pushNative.apply(target, slice.call(arguments, 1));\n }\n };\n }\n function find(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n setDocument(context);\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n push.call(results, elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE 9 only\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {\n push.call(results, elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (!nonnativeSelectorCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n newSelector = selector;\n newContext = context;\n\n // qSA considers elements outside a scoping root when evaluating child or\n // descendant combinators, which is not what we want.\n // In such cases, we work around the behavior by prefixing every selector in the\n // list with an ID selector referencing the scope context.\n // The technique has to be used as well when a leading combinator is used\n // as such selectors are not recognized by querySelectorAll.\n // Thanks to Andrew Dupont for this technique.\n if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n\n // We can use :scope instead of the ID hack if the browser\n // supports it & if we're not changing the context.\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when\n // strict-comparing two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (newContext != context || !support.scope) {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = jQuery.escapeSelector(nid);\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n while (i--) {\n groups[i] = (nid ? \"#\" + nid : \":scope\") + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n }\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {\n nonnativeSelectorCache(selector, true);\n } finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n\n // All others\n return select(selector.replace(rtrimCSS, \"$1\"), context, results, seed);\n }\n\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties\n // (see https://github.com/jquery/sizzle/issues/157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\n function assert(fn) {\n var el = document.createElement(\"fieldset\");\n try {\n return !!fn(el);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // release memory in IE\n el = null;\n }\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n return nodeName(elem, \"input\") && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n return (nodeName(elem, \"input\") || nodeName(elem, \"button\")) && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\n function createDisabledPseudo(disabled) {\n // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n return function (elem) {\n // Only certain elements can match :enabled or :disabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n if (\"form\" in elem) {\n // Check for inherited disabledness on relevant non-disabled elements:\n // * listed form-associated elements in a disabled fieldset\n // https://html.spec.whatwg.org/multipage/forms.html#category-listed\n // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n // * option elements in a disabled optgroup\n // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n // All such elements have a \"form\" property.\n if (elem.parentNode && elem.disabled === false) {\n // Option elements defer to a parent optgroup if present\n if (\"label\" in elem) {\n if (\"label\" in elem.parentNode) {\n return elem.parentNode.disabled === disabled;\n } else {\n return elem.disabled === disabled;\n }\n }\n\n // Support: IE 6 - 11+\n // Use the isDisabled shortcut property to check for disabled fieldset ancestors\n return elem.isDisabled === disabled ||\n // Where there is no isDisabled, check manually\n elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;\n }\n return elem.disabled === disabled;\n\n // Try to winnow out elements that can't be disabled before trusting the disabled property.\n // Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n // even exist on them, let alone have a boolean value.\n } else if (\"label\" in elem) {\n return elem.disabled === disabled;\n }\n\n // Remaining elements are neither :enabled nor :disabled\n return false;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n\n /**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n function setDocument(node) {\n var subWindow,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n documentElement = document.documentElement;\n documentIsHTML = !jQuery.isXMLDoc(document);\n\n // Support: iOS 7 only, IE 9 - 11+\n // Older browsers didn't support unprefixed `matches`.\n matches = documentElement.matches || documentElement.webkitMatchesSelector || documentElement.msMatchesSelector;\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // Accessing iframe documents after unload throws \"permission denied\" errors\n // (see trac-13936).\n // Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n // all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n if (documentElement.msMatchesSelector &&\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {\n // Support: IE 9 - 11+, Edge 12 - 18+\n subWindow.addEventListener(\"unload\", unloadHandler);\n }\n\n // Support: IE <10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programmatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (el) {\n documentElement.appendChild(el).id = jQuery.expando;\n return !document.getElementsByName || !document.getElementsByName(jQuery.expando).length;\n });\n\n // Support: IE 9 only\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node.\n support.disconnectedMatch = assert(function (el) {\n return matches.call(el, \"*\");\n });\n\n // Support: IE 9 - 11+, Edge 12 - 18+\n // IE/Edge don't support the :scope pseudo-class.\n support.scope = assert(function () {\n return document.querySelectorAll(\":scope\");\n });\n\n // Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n // Make sure the `:has()` argument is parsed unforgivingly.\n // We include `*` in the test to detect buggy implementations that are\n // _selectively_ forgiving (specifically when the list includes at least\n // one valid selector).\n // Note that we treat complete lack of support for `:has()` as if it were\n // spec-compliant support, which is fine because use of `:has()` in such\n // environments will fail in the qSA path and fall back to jQuery traversal\n // anyway.\n support.cssHas = assert(function () {\n try {\n document.querySelector(\":has(*,:jqfake)\");\n return false;\n } catch (e) {\n return true;\n }\n });\n\n // ID filter and find\n if (support.getById) {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var elem = context.getElementById(id);\n return elem ? [elem] : [];\n }\n };\n } else {\n Expr.filter.ID = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n\n // Support: IE 6 - 7 only\n // getElementById is not reliable as a find shortcut\n Expr.find.ID = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var node,\n i,\n elems,\n elem = context.getElementById(id);\n if (elem) {\n // Verify the id attribute\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n\n // Fall back on getElementsByName\n elems = context.getElementsByName(id);\n i = 0;\n while (elem = elems[i++]) {\n node = elem.getAttributeNode(\"id\");\n if (node && node.value === id) {\n return [elem];\n }\n }\n }\n return [];\n }\n };\n }\n\n // Tag\n Expr.find.TAG = function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else {\n return context.querySelectorAll(tag);\n }\n };\n\n // Class\n Expr.find.CLASS = function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n rbuggyQSA = [];\n\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (el) {\n var input;\n documentElement.appendChild(el).innerHTML = \"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" + \"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" + \"<option selected=''></option></select>\";\n\n // Support: iOS <=7 - 8 only\n // Boolean attributes and \"value\" are not treated correctly in some XML documents\n if (!el.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: iOS <=7 - 8 only\n if (!el.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Support: iOS 8 only\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibling-combinator selector` fails\n if (!el.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n if (!el.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n el.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE 9 - 11+\n // IE's :disabled selector does not pick up the children of disabled fieldsets\n // Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n // In some of the document kinds, these selectors wouldn't work natively.\n // This is probably OK but for backwards compatibility we want to maintain\n // handling them through jQuery traversal in jQuery 3.x.\n documentElement.appendChild(el).disabled = true;\n if (el.querySelectorAll(\":disabled\").length !== 2) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Support: IE 11+, Edge 15 - 18+\n // IE 11/Edge don't find elements on a `[name='']` query in some cases.\n // Adding a temporary attribute to the document before the selection works\n // around the issue.\n // Interestingly, IE 10 & older don't seem to have the issue.\n input = document.createElement(\"input\");\n input.setAttribute(\"name\", \"\");\n el.appendChild(input);\n if (!el.querySelectorAll(\"[name='']\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n });\n if (!support.cssHas) {\n // Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n // Our regular `try-catch` mechanism fails to detect natively-unsupported\n // pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n // in browsers that parse the `:has()` argument as a forgiving selector list.\n // https://drafts.csswg.org/selectors/#relational now requires the argument\n // to be parsed unforgivingly, but browsers have not yet fully adjusted.\n rbuggyQSA.push(\":has\");\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n\n /* Sorting\n ---------------------------------------------------------------------- */\n\n // Document order sorting\n sortOrder = function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n // Sort on method existence if only one input has compareDocumentPosition\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n\n // Calculate position if both inputs belong to the same document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) :\n // Otherwise we know they are disconnected\n 1;\n\n // Disconnected nodes\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (a === document || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {\n return -1;\n }\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (b === document || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {\n return 1;\n }\n\n // Maintain original order\n return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n };\n return document;\n }\n find.matches = function (expr, elements) {\n return find(expr, null, null, elements);\n };\n find.matchesSelector = function (elem, expr) {\n setDocument(elem);\n if (documentIsHTML && !nonnativeSelectorCache[expr + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n\n // IE 9's matchesSelector returns false on disconnected nodes\n if (ret || support.disconnectedMatch ||\n // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {\n nonnativeSelectorCache(expr, true);\n }\n }\n return find(expr, document, null, [elem]).length > 0;\n };\n find.contains = function (context, elem) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((context.ownerDocument || context) != document) {\n setDocument(context);\n }\n return jQuery.contains(context, elem);\n };\n find.attr = function (elem, name) {\n // Set document vars if needed\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if ((elem.ownerDocument || elem) != document) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (see trac-13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n if (val !== undefined) {\n return val;\n }\n return elem.getAttribute(name);\n };\n find.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n jQuery.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0;\n\n // Unless we *know* we can detect duplicates, assume their presence\n //\n // Support: Android <=4.0+\n // Testing for detecting duplicates is unpredictable so instead assume we can't\n // depend on duplicate detection in all browsers without a stable sort.\n hasDuplicate = !support.sortStable;\n sortInput = !support.sortStable && slice.call(results, 0);\n sort.call(results, sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n splice.call(results, duplicates[j], 1);\n }\n }\n\n // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n sortInput = null;\n return results;\n };\n jQuery.fn.uniqueSort = function () {\n return this.pushStack(jQuery.uniqueSort(slice.apply(this)));\n };\n Expr = jQuery.expr = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n ATTR: function (match) {\n match[1] = match[1].replace(runescape, funescape);\n\n // Move the given value to match[3] whether quoted or unquoted\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n return match.slice(0, 4);\n },\n CHILD: function (match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n find.error(match[0]);\n }\n\n // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\");\n\n // other types prohibit arguments\n } else if (match[3]) {\n find.error(match[0]);\n }\n return match;\n },\n PSEUDO: function (match) {\n var excess,\n unquoted = !match[6] && match[2];\n if (matchExpr.CHILD.test(match[0])) {\n return null;\n }\n\n // Accept quoted arguments as-is\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\";\n\n // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && (\n // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && (\n // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n\n // Return only captures needed by the pseudo filter method (type and argument)\n return match.slice(0, 3);\n }\n },\n filter: {\n TAG: function (nodeNameSelector) {\n var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return nodeName(elem, expectedNodeName);\n };\n },\n CLASS: function (className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n ATTR: function (name, operator, check) {\n return function (elem) {\n var result = find.attr(elem, name);\n if (result == null) {\n return operator === \"!=\";\n }\n if (!operator) {\n return true;\n }\n result += \"\";\n if (operator === \"=\") {\n return result === check;\n }\n if (operator === \"!=\") {\n return result !== check;\n }\n if (operator === \"^=\") {\n return check && result.indexOf(check) === 0;\n }\n if (operator === \"*=\") {\n return check && result.indexOf(check) > -1;\n }\n if (operator === \"$=\") {\n return check && result.slice(-check.length) === check;\n }\n if (operator === \"~=\") {\n return (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1;\n }\n if (operator === \"|=\") {\n return result === check || result.slice(0, check.length + 1) === check + \"-\";\n }\n return false;\n };\n },\n CHILD: function (type, what, _argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ?\n // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, _context, xml) {\n var cache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? nodeName(node, name) : node.nodeType === 1) {\n return false;\n }\n }\n\n // Reverse direction for :only-* (if we haven't yet done so)\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n return true;\n }\n start = [forward ? parent.firstChild : parent.lastChild];\n\n // non-xml :nth-child(...) stores cache data on `parent`\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n outerCache = parent[expando] || (parent[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (\n // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n outerCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n outerCache = elem[expando] || (elem[expando] = {});\n cache = outerCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n }\n\n // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {});\n outerCache[type] = [dirruns, diff];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n }\n\n // Incorporate the offset, then check against cycle size\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n PSEUDO: function (pseudo, argument) {\n // pseudo-class names are case-insensitive\n // https://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error(\"unsupported pseudo: \" + pseudo);\n\n // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as jQuery does\n if (fn[expando]) {\n return fn(argument);\n }\n\n // But maintain support for old signatures\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n while (i--) {\n idx = indexOf.call(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n not: markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrimCSS, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length;\n\n // Match elements unmatched by `matcher`\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, _context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n\n // Don't keep the element\n // (see https://github.com/jquery/sizzle/issues/299)\n input[0] = null;\n return !results.pop();\n };\n }),\n has: markFunction(function (selector) {\n return function (elem) {\n return find(selector, elem).length > 0;\n };\n }),\n contains: markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || jQuery.text(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // https://www.w3.org/TR/selectors/#lang-pseudo\n lang: markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n find.error(\"unsupported lang: \" + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n // Miscellaneous\n target: function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n root: function (elem) {\n return elem === documentElement;\n },\n focus: function (elem) {\n return elem === safeActiveElement() && document.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n enabled: createDisabledPseudo(false),\n disabled: createDisabledPseudo(true),\n checked: function (elem) {\n // In CSS3, :checked should return both checked and selected elements\n // https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n return nodeName(elem, \"input\") && !!elem.checked || nodeName(elem, \"option\") && !!elem.selected;\n },\n selected: function (elem) {\n // Support: IE <=11+\n // Accessing the selectedIndex property\n // forces the browser to treat the default option as\n // selected when in an optgroup.\n if (elem.parentNode) {\n // eslint-disable-next-line no-unused-expressions\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n // Contents\n empty: function (elem) {\n // https://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n parent: function (elem) {\n return !Expr.pseudos.empty(elem);\n },\n // Element/input types\n header: function (elem) {\n return rheader.test(elem.nodeName);\n },\n input: function (elem) {\n return rinputs.test(elem.nodeName);\n },\n button: function (elem) {\n return nodeName(elem, \"input\") && elem.type === \"button\" || nodeName(elem, \"button\");\n },\n text: function (elem) {\n var attr;\n return nodeName(elem, \"input\") && elem.type === \"text\" && (\n // Support: IE <10 only\n // New HTML5 attribute values (e.g., \"search\") appear\n // with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n first: createPositionalPseudo(function () {\n return [0];\n }),\n last: createPositionalPseudo(function (_matchIndexes, length) {\n return [length - 1];\n }),\n eq: createPositionalPseudo(function (_matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n even: createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n odd: createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n lt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i;\n if (argument < 0) {\n i = argument + length;\n } else if (argument > length) {\n i = length;\n } else {\n i = argument;\n }\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n gt: createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos.nth = Expr.pseudos.eq;\n\n // Add button/input type pseudos\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n\n // Easy API for creating new setFilters\n function setFilters() {}\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n function tokenize(selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n\n // Combinators\n if (match = rleadingCombinator.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrimCSS, \" \")\n });\n soFar = soFar.slice(matched.length);\n }\n\n // Filters\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n\n // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n if (parseOnly) {\n return soFar.length;\n }\n return soFar ? find.error(selector) :\n // Cache the tokens\n tokenCache(selector, groups).slice(0);\n }\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n skip = combinator.next,\n key = skip || dir,\n checkNonElements = base && key === \"parentNode\",\n doneName = done++;\n return combinator.first ?\n // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n return false;\n } :\n // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n outerCache,\n newCache = [dirruns, doneName];\n\n // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n if (skip && nodeName(elem, skip)) {\n elem = elem[dir] || elem;\n } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n outerCache[key] = newCache;\n\n // A match means we're done; a fail means we have to keep checking\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n return false;\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n for (; i < len; i++) {\n find(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n matcherOut,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;\n if (matcher) {\n // If we have a postFinder, or filtered seed, or non-seed postFilter\n // or preexisting results,\n matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ?\n // ...intermediate processing is necessary\n [] :\n // ...otherwise use results directly\n results;\n\n // Find primary matches\n matcher(matcherIn, matcherOut, context, xml);\n } else {\n matcherOut = matcherIn;\n }\n\n // Apply postFilter\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n\n // Un-match failing elements by moving them back to matcherIn\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n\n // Move matched elements from seed to results to keep them synchronized\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n\n // Add elements to results, through postFinder if defined\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf.call(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n\n // Avoid hanging onto element\n // (see https://github.com/jquery/sizzle/issues/299)\n checkContext = null;\n return ret;\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n\n // Return special upon seeing a positional matcher\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(\n // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrimCSS, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function (seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find.TAG(\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n if (outermost) {\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n outermostContext = context == document || context || outermost;\n }\n\n // Add elements passing elementMatchers directly to results\n // Support: iOS <=7 - 9 only\n // Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n // elements by id. (see trac-14142)\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n\n // Support: IE 11+, Edge 17 - 18+\n // IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n // two documents; shallow comparisons work.\n // eslint-disable-next-line eqeqeq\n if (!context && elem.ownerDocument != document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n push.call(results, elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n\n // Track unmatched elements for set filters\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n\n // Lengthen the array for every element, matched or not\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n\n // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n matchedCount += i;\n\n // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n\n // Discard index placeholder values to get only actual matches\n setMatched = condense(setMatched);\n }\n\n // Add matches to results\n push.apply(results, setMatched);\n\n // Seedless set matches succeeding multiple successful matchers stipulate sorting\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n jQuery.uniqueSort(results);\n }\n }\n\n // Override manipulation of globals by nested matchers\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n function compile(selector, match /* Internal Use Only */) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n\n // Cache the compiled function\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n\n // Save selector and tokenization\n cached.selector = selector;\n }\n return cached;\n }\n\n /**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n function select(selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n\n // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n\n // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n\n // Fetch a seed set for right-to-left matching\n i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n\n // Abort if we hit a combinator\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n\n // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n }\n\n // One-time assignments\n\n // Support: Android <=4.0 - 4.1+\n // Sort stability\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando;\n\n // Initialize against the default document\n setDocument();\n\n // Support: Android <=4.0 - 4.1+\n // Detached nodes confoundingly follow *each other*\n support.sortDetached = assert(function (el) {\n // Should return 1, but returns 4 (following)\n return el.compareDocumentPosition(document.createElement(\"fieldset\")) & 1;\n });\n jQuery.find = find;\n\n // Deprecated\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.unique = jQuery.uniqueSort;\n\n // These have always been private, but they used to be documented as part of\n // Sizzle so let's maintain them for now for backwards compatibility purposes.\n find.compile = compile;\n find.select = select;\n find.setDocument = setDocument;\n find.tokenize = tokenize;\n find.escape = jQuery.escapeSelector;\n find.getText = jQuery.text;\n find.isXML = jQuery.isXMLDoc;\n find.selectors = jQuery.expr;\n find.support = jQuery.support;\n find.uniqueSort = jQuery.uniqueSort;\n\n /* eslint-enable */\n })();\n\n var dir = function (elem, dir, until) {\n var matched = [],\n truncate = until !== undefined;\n while ((elem = elem[dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n matched.push(elem);\n }\n }\n return matched;\n };\n var siblings = function (n, elem) {\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n return matched;\n };\n var rneedsContext = jQuery.expr.match.needsContext;\n var rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n\n // Implement the identical functionality for filter and not\n function winnow(elements, qualifier, not) {\n if (isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n return !!qualifier.call(elem, i, elem) !== not;\n });\n }\n\n // Single element\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n }\n\n // Arraylike of elements (jQuery, arguments, Array)\n if (typeof qualifier !== \"string\") {\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n }\n\n // Filtered directly for both simple and complex selectors\n return jQuery.filter(qualifier, elements, not);\n }\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n if (elems.length === 1 && elem.nodeType === 1) {\n return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];\n }\n return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n jQuery.fn.extend({\n find: function (selector) {\n var i,\n ret,\n len = this.length,\n self = this;\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n ret = this.pushStack([]);\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n return len > 1 ? jQuery.uniqueSort(ret) : ret;\n },\n filter: function (selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function (selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function (selector) {\n return !!winnow(this,\n // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n });\n\n // Initialize a jQuery object\n\n // A central reference to the root jQuery(document)\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n // Strict HTML recognition (trac-11290: must start with <)\n // Shortcut simple #id case for speed\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem;\n\n // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n if (!selector) {\n return this;\n }\n\n // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n root = root || rootjQuery;\n\n // Handle HTML strings\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n }\n\n // Match html or make sure no context is specified for #id\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context;\n\n // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));\n\n // HANDLE: $(html, props)\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (isFunction(this[match])) {\n this[match](context[match]);\n\n // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n return this;\n\n // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n if (elem) {\n // Inject the element directly into the jQuery object\n this[0] = elem;\n this.length = 1;\n }\n return this;\n }\n\n // HANDLE: $(expr, $(...))\n } else if (!context || context.jquery) {\n return (context || root).find(selector);\n\n // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n }\n\n // HANDLE: $(DOMElement)\n } else if (selector.nodeType) {\n this[0] = selector;\n this.length = 1;\n return this;\n\n // HANDLE: $(function)\n // Shortcut for document ready\n } else if (isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) :\n // Execute immediately if ready is not present\n selector(jQuery);\n }\n return jQuery.makeArray(selector, this);\n };\n\n // Give the init function the jQuery prototype for later instantiation\n init.prototype = jQuery.fn;\n\n // Initialize central reference\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function (target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function (selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n targets = typeof selectors !== \"string\" && jQuery(selectors);\n\n // Positional selectors never match, since there's no _selection_ context\n if (!rneedsContext.test(selectors)) {\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 :\n // Don't pass non-elements to jQuery#find\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n }\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function (elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n }\n\n // Index in selector\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n }\n\n // Locate the position of the desired element\n return indexOf.call(this,\n // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function (selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n return cur;\n }\n jQuery.each({\n parent: function (elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function (elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function (elem, _i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function (elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function (elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function (elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function (elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function (elem, _i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function (elem, _i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function (elem) {\n return siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function (elem) {\n return siblings(elem.firstChild);\n },\n contents: function (elem) {\n if (elem.contentDocument != null &&\n // Support: IE 11+\n // <object> elements with no `data` attribute has an object\n // `contentDocument` with a `null` prototype.\n getProto(elem.contentDocument)) {\n return elem.contentDocument;\n }\n\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n // Treat the template element as a regular one in browsers that\n // don't support it.\n if (nodeName(elem, \"template\")) {\n elem = elem.content || elem;\n }\n return jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n }\n\n // Reverse order for parents* and prev-derivatives\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n return this.pushStack(matched);\n };\n });\n var rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\n\n // Convert String-formatted options into Object-formatted ones\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n var\n // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n fired,\n // Flag to prevent firing\n locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function () {\n // Enforce single-firing\n locked = locked || options.once;\n\n // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n fired = firing = true;\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n }\n\n // Forget the data if we're done with it\n if (!options.memory) {\n memory = false;\n }\n firing = false;\n\n // Clean up if we're done firing for good\n if (locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = [];\n\n // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function () {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && toType(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n if (memory && !firing) {\n fire();\n }\n }\n return this;\n },\n // Remove a callback from the list\n remove: function () {\n jQuery.each(arguments, function (_, arg) {\n var index;\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1);\n\n // Handle firing indexes\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function (fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function () {\n if (list) {\n list = [];\n }\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function () {\n locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function () {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function () {\n locked = queue = [];\n if (!memory && !firing) {\n list = memory = \"\";\n }\n return this;\n },\n locked: function () {\n return !!locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function (context, args) {\n if (!locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n if (!firing) {\n fire();\n }\n }\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function () {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function () {\n return !!fired;\n }\n };\n return self;\n };\n function Identity(v) {\n return v;\n }\n function Thrower(ex) {\n throw ex;\n }\n function adoptValue(value, resolve, reject, noValue) {\n var method;\n try {\n // Check for promise aspect first to privilege synchronous behavior\n if (value && isFunction(method = value.promise)) {\n method.call(value).done(resolve).fail(reject);\n\n // Other thenables\n } else if (value && isFunction(method = value.then)) {\n method.call(value, resolve, reject);\n\n // Other non-thenables\n } else {\n // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n // * false: [ value ].slice( 0 ) => resolve( value )\n // * true: [ value ].slice( 1 ) => resolve()\n resolve.apply(undefined, [value].slice(noValue));\n }\n\n // For Promises/A+, convert exceptions into rejections\n // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n // Deferred#then to conditionally suppress rejection.\n } catch (value) {\n // Support: Android 4.0 only\n // Strict mode functions invoked without .call/.apply get global-object context\n reject.apply(undefined, [value]);\n }\n }\n jQuery.extend({\n Deferred: function (func) {\n var tuples = [\n // action, add listener, callbacks,\n // ... .then handlers, argument index, [final state]\n [\"notify\", \"progress\", jQuery.Callbacks(\"memory\"), jQuery.Callbacks(\"memory\"), 2], [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 0, \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), jQuery.Callbacks(\"once memory\"), 1, \"rejected\"]],\n state = \"pending\",\n promise = {\n state: function () {\n return state;\n },\n always: function () {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n \"catch\": function (fn) {\n return promise.then(null, fn);\n },\n // Keep pipe for back-compat\n pipe: function /* fnDone, fnFail, fnProgress */\n () {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (_i, tuple) {\n // Map tuples (progress, done, fail) to arguments (done, fail, progress)\n var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];\n\n // deferred.progress(function() { bind to newDefer or newDefer.notify })\n // deferred.done(function() { bind to newDefer or newDefer.resolve })\n // deferred.fail(function() { bind to newDefer or newDefer.reject })\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n if (returned && isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n then: function (onFulfilled, onRejected, onProgress) {\n var maxDepth = 0;\n function resolve(depth, deferred, handler, special) {\n return function () {\n var that = this,\n args = arguments,\n mightThrow = function () {\n var returned, then;\n\n // Support: Promises/A+ section 2.3.3.3.3\n // https://promisesaplus.com/#point-59\n // Ignore double-resolution attempts\n if (depth < maxDepth) {\n return;\n }\n returned = handler.apply(that, args);\n\n // Support: Promises/A+ section 2.3.1\n // https://promisesaplus.com/#point-48\n if (returned === deferred.promise()) {\n throw new TypeError(\"Thenable self-resolution\");\n }\n\n // Support: Promises/A+ sections 2.3.3.1, 3.5\n // https://promisesaplus.com/#point-54\n // https://promisesaplus.com/#point-75\n // Retrieve `then` only once\n then = returned && (\n // Support: Promises/A+ section 2.3.4\n // https://promisesaplus.com/#point-64\n // Only check objects and functions for thenability\n typeof returned === \"object\" || typeof returned === \"function\") && returned.then;\n\n // Handle a returned thenable\n if (isFunction(then)) {\n // Special processors (notify) just wait for resolution\n if (special) {\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special));\n\n // Normal processors (resolve) also hook into progress\n } else {\n // ...and disregard older resolution values\n maxDepth++;\n then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));\n }\n\n // Handle all other returned values\n } else {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Identity) {\n that = undefined;\n args = [returned];\n }\n\n // Process the value(s)\n // Default process is resolve\n (special || deferred.resolveWith)(that, args);\n }\n },\n // Only normal processors (resolve) catch and reject exceptions\n process = special ? mightThrow : function () {\n try {\n mightThrow();\n } catch (e) {\n if (jQuery.Deferred.exceptionHook) {\n jQuery.Deferred.exceptionHook(e, process.error);\n }\n\n // Support: Promises/A+ section 2.3.3.3.4.1\n // https://promisesaplus.com/#point-61\n // Ignore post-resolution exceptions\n if (depth + 1 >= maxDepth) {\n // Only substitute handlers pass on context\n // and multiple values (non-spec behavior)\n if (handler !== Thrower) {\n that = undefined;\n args = [e];\n }\n deferred.rejectWith(that, args);\n }\n }\n };\n\n // Support: Promises/A+ section 2.3.3.3.1\n // https://promisesaplus.com/#point-57\n // Re-resolve promises immediately to dodge false rejection from\n // subsequent errors\n if (depth) {\n process();\n } else {\n // Call an optional hook to record the error, in case of exception\n // since it's otherwise lost when execution goes async\n if (jQuery.Deferred.getErrorHook) {\n process.error = jQuery.Deferred.getErrorHook();\n\n // The deprecated alias of the above. While the name suggests\n // returning the stack, not an error instance, jQuery just passes\n // it directly to `console.warn` so both will work; an instance\n // just better cooperates with source maps.\n } else if (jQuery.Deferred.getStackHook) {\n process.error = jQuery.Deferred.getStackHook();\n }\n window.setTimeout(process);\n }\n };\n }\n return jQuery.Deferred(function (newDefer) {\n // progress_handlers.add( ... )\n tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith));\n\n // fulfilled_handlers.add( ... )\n tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity));\n\n // rejected_handlers.add( ... )\n tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function (obj) {\n return obj != null ? jQuery.extend(obj, promise) : promise;\n }\n },\n deferred = {};\n\n // Add list-specific methods\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[5];\n\n // promise.progress = list.add\n // promise.done = list.add\n // promise.fail = list.add\n promise[tuple[1]] = list.add;\n\n // Handle state\n if (stateString) {\n list.add(function () {\n // state = \"resolved\" (i.e., fulfilled)\n // state = \"rejected\"\n state = stateString;\n },\n // rejected_callbacks.disable\n // fulfilled_callbacks.disable\n tuples[3 - i][2].disable,\n // rejected_handlers.disable\n // fulfilled_handlers.disable\n tuples[3 - i][3].disable,\n // progress_callbacks.lock\n tuples[0][2].lock,\n // progress_handlers.lock\n tuples[0][3].lock);\n }\n\n // progress_handlers.fire\n // fulfilled_handlers.fire\n // rejected_handlers.fire\n list.add(tuple[3].fire);\n\n // deferred.notify = function() { deferred.notifyWith(...) }\n // deferred.resolve = function() { deferred.resolveWith(...) }\n // deferred.reject = function() { deferred.rejectWith(...) }\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? undefined : this, arguments);\n return this;\n };\n\n // deferred.notifyWith = list.fireWith\n // deferred.resolveWith = list.fireWith\n // deferred.rejectWith = list.fireWith\n deferred[tuple[0] + \"With\"] = list.fireWith;\n });\n\n // Make the deferred a promise\n promise.promise(deferred);\n\n // Call given func if any\n if (func) {\n func.call(deferred, deferred);\n }\n\n // All done!\n return deferred;\n },\n // Deferred helper\n when: function (singleValue) {\n var\n // count of uncompleted subordinates\n remaining = arguments.length,\n // count of unprocessed arguments\n i = remaining,\n // subordinate fulfillment data\n resolveContexts = Array(i),\n resolveValues = slice.call(arguments),\n // the primary Deferred\n primary = jQuery.Deferred(),\n // subordinate callback factory\n updateFunc = function (i) {\n return function (value) {\n resolveContexts[i] = this;\n resolveValues[i] = arguments.length > 1 ? slice.call(arguments) : value;\n if (! --remaining) {\n primary.resolveWith(resolveContexts, resolveValues);\n }\n };\n };\n\n // Single- and empty arguments are adopted like Promise.resolve\n if (remaining <= 1) {\n adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining);\n\n // Use .then() to unwrap secondary thenables (cf. gh-3000)\n if (primary.state() === \"pending\" || isFunction(resolveValues[i] && resolveValues[i].then)) {\n return primary.then();\n }\n }\n\n // Multiple arguments are aggregated like Promise.all array elements\n while (i--) {\n adoptValue(resolveValues[i], updateFunc(i), primary.reject);\n }\n return primary.promise();\n }\n });\n\n // These usually indicate a programmer mistake during development,\n // warn about them ASAP rather than swallowing them by default.\n var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n // If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n // captured before the async barrier to get the original error cause\n // which may otherwise be hidden.\n jQuery.Deferred.exceptionHook = function (error, asyncError) {\n // Support: IE 8 - 9 only\n // Console exists when dev tools are open, which can happen at any time\n if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {\n window.console.warn(\"jQuery.Deferred exception: \" + error.message, error.stack, asyncError);\n }\n };\n jQuery.readyException = function (error) {\n window.setTimeout(function () {\n throw error;\n });\n };\n\n // The deferred used on DOM ready\n var readyList = jQuery.Deferred();\n jQuery.fn.ready = function (fn) {\n readyList.then(fn)\n\n // Wrap jQuery.readyException in a function so that the lookup\n // happens at the time of error handling instead of callback\n // registration.\n .catch(function (error) {\n jQuery.readyException(error);\n });\n return this;\n };\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See trac-6781\n readyWait: 1,\n // Handle when the DOM is ready\n ready: function (wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n }\n\n // Remember that the DOM is ready\n jQuery.isReady = true;\n\n // If a normal DOM Ready event fired, decrement, and wait if need be\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n }\n\n // If there are functions bound, to execute\n readyList.resolveWith(document, [jQuery]);\n }\n });\n jQuery.ready.then = readyList.then;\n\n // The ready event handler and self cleanup method\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n }\n\n // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE <=9 - 10 only\n // Older IE sometimes signals \"interactive\" too soon\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed);\n\n // A fallback to window.onload, that will always work\n window.addEventListener(\"load\", completed);\n }\n\n // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n var access = function (elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null;\n\n // Sets many values\n if (toType(key) === \"object\") {\n chainable = true;\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n }\n\n // Sets one value\n } else if (value !== undefined) {\n chainable = true;\n if (!isFunction(value)) {\n raw = true;\n }\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null;\n\n // ...except when executing function values\n } else {\n bulk = fn;\n fn = function (elem, _key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n if (chainable) {\n return elems;\n }\n\n // Gets\n if (bulk) {\n return fn.call(elems);\n }\n return len ? fn(elems[0], key) : emptyGet;\n };\n\n // Matches dashed string for camelizing\n var rmsPrefix = /^-ms-/,\n rdashAlpha = /-([a-z])/g;\n\n // Used by camelCase as callback to replace()\n function fcamelCase(_all, letter) {\n return letter.toUpperCase();\n }\n\n // Convert dashed to camelCase; used by the css and data modules\n // Support: IE <=9 - 11, Edge 12 - 15\n // Microsoft forgot to hump their vendor prefix (trac-9572)\n function camelCase(string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n }\n var acceptData = function (owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n Data.uid = 1;\n Data.prototype = {\n cache: function (owner) {\n // Check if the owner object already has a cache\n var value = owner[this.expando];\n\n // If not, create one\n if (!value) {\n value = {};\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see trac-8335.\n // Always return an empty object.\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value;\n\n // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n return value;\n },\n set: function (owner, data, value) {\n var prop,\n cache = this.cache(owner);\n\n // Handle: [ owner, key, value ] args\n // Always use camelCase key (gh-2257)\n if (typeof data === \"string\") {\n cache[camelCase(data)] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[camelCase(prop)] = data[prop];\n }\n }\n return cache;\n },\n get: function (owner, key) {\n return key === undefined ? this.cache(owner) :\n // Always use camelCase key (gh-2257)\n owner[this.expando] && owner[this.expando][camelCase(key)];\n },\n access: function (owner, key, value) {\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n return this.get(owner, key);\n }\n\n // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n },\n remove: function (owner, key) {\n var i,\n cache = owner[this.expando];\n if (cache === undefined) {\n return;\n }\n if (key !== undefined) {\n // Support array or space separated string of keys\n if (Array.isArray(key)) {\n // If key is an array of keys...\n // We always set camelCase keys, so remove that.\n key = key.map(camelCase);\n } else {\n key = camelCase(key);\n\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n key = key in cache ? [key] : key.match(rnothtmlwhite) || [];\n }\n i = key.length;\n while (i--) {\n delete cache[key[i]];\n }\n }\n\n // Remove the expando if there's no more data\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <=35 - 45\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function (owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data();\n\n //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n function getData(data) {\n if (data === \"true\") {\n return true;\n }\n if (data === \"false\") {\n return false;\n }\n if (data === \"null\") {\n return null;\n }\n\n // Only convert to a number if it doesn't change the string\n if (data === +data + \"\") {\n return +data;\n }\n if (rbrace.test(data)) {\n return JSON.parse(data);\n }\n return data;\n }\n function dataAttr(elem, key, data) {\n var name;\n\n // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n if (typeof data === \"string\") {\n try {\n data = getData(data);\n } catch (e) {}\n\n // Make sure we set the data so it isn't changed later\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n return data;\n }\n jQuery.extend({\n hasData: function (elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function (elem, name, data) {\n return dataUser.access(elem, name, data);\n },\n removeData: function (elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function (elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function (elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function (key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes;\n\n // Gets all values\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n while (i--) {\n // Support: IE 11 only\n // The attrs elements can be null (trac-14894)\n if (attrs[i]) {\n name = attrs[i].name;\n if (name.indexOf(\"data-\") === 0) {\n name = camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n return data;\n }\n\n // Sets multiple values\n if (typeof key === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n return access(this, function (value) {\n var data;\n\n // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // The key will always be camelCased in Data\n data = dataUser.get(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n data = dataAttr(elem, key);\n if (data !== undefined) {\n return data;\n }\n\n // We tried really hard, but the data doesn't exist.\n return;\n }\n\n // Set the data...\n this.each(function () {\n // We always store the camelCased key\n dataUser.set(this, key, value);\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function (key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function (elem, type, data) {\n var queue;\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type);\n\n // Speed up dequeue by getting out quickly if this is just a lookup\n if (data) {\n if (!queue || Array.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n return queue || [];\n }\n },\n dequeue: function (elem, type) {\n type = type || \"fx\";\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function () {\n jQuery.dequeue(elem, type);\n };\n\n // If the fx queue is dequeued, always remove the progress sentinel\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n }\n\n // Clear up the last queue stop function\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function (elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function (type, data) {\n var setter = 2;\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data);\n\n // Ensure a hooks for this queue\n jQuery._queueHooks(this, type);\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function (type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function (type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function (type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function () {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n type = type || \"fx\";\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var documentElement = document.documentElement;\n var isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem);\n },\n composed = {\n composed: true\n };\n\n // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n // Check attachment across shadow DOM boundaries when possible (gh-3504)\n // Support: iOS 10.0-10.2 only\n // Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n // leading to errors. We need to check for `getRootNode`.\n if (documentElement.getRootNode) {\n isAttached = function (elem) {\n return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;\n };\n }\n var isHiddenWithinTree = function (elem, el) {\n // isHiddenWithinTree might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem;\n\n // Inline style trumps all\n return elem.style.display === \"none\" || elem.style.display === \"\" &&\n // Otherwise, check computed style\n // Support: Firefox <=43 - 45\n // Disconnected elements can have computed display: none, so first confirm that elem is\n // in the document.\n isAttached(elem) && jQuery.css(elem, \"display\") === \"none\";\n };\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Support: Firefox <=54\n // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n initial = initial / 2;\n\n // Trust units reported by jQuery.css\n unit = unit || initialInUnit[3];\n\n // Iteratively approximate from a nonzero starting point\n initialInUnit = +initial || 1;\n while (maxIterations--) {\n // Evaluate and update our best guess (doubling guesses that zero out).\n // Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n jQuery.style(elem, prop, initialInUnit + unit);\n if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {\n maxIterations = 0;\n }\n initialInUnit = initialInUnit / scale;\n }\n initialInUnit = initialInUnit * 2;\n jQuery.style(elem, prop, initialInUnit + unit);\n\n // Make sure we update the tween properties later on\n valueParts = valueParts || [];\n }\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0;\n\n // Apply relative offset (+=/-=) if specified\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n return adjusted;\n }\n var defaultDisplayMap = {};\n function getDefaultDisplay(elem) {\n var temp,\n doc = elem.ownerDocument,\n nodeName = elem.nodeName,\n display = defaultDisplayMap[nodeName];\n if (display) {\n return display;\n }\n temp = doc.body.appendChild(doc.createElement(nodeName));\n display = jQuery.css(temp, \"display\");\n temp.parentNode.removeChild(temp);\n if (display === \"none\") {\n display = \"block\";\n }\n defaultDisplayMap[nodeName] = display;\n return display;\n }\n function showHide(elements, show) {\n var display,\n elem,\n values = [],\n index = 0,\n length = elements.length;\n\n // Determine new display value for elements that need to change\n for (; index < length; index++) {\n elem = elements[index];\n if (!elem.style) {\n continue;\n }\n display = elem.style.display;\n if (show) {\n // Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n // check is required in this first loop unless we have a nonempty display value (either\n // inline or about-to-be-restored)\n if (display === \"none\") {\n values[index] = dataPriv.get(elem, \"display\") || null;\n if (!values[index]) {\n elem.style.display = \"\";\n }\n }\n if (elem.style.display === \"\" && isHiddenWithinTree(elem)) {\n values[index] = getDefaultDisplay(elem);\n }\n } else {\n if (display !== \"none\") {\n values[index] = \"none\";\n\n // Remember what we're overwriting\n dataPriv.set(elem, \"display\", display);\n }\n }\n }\n\n // Set the display of the elements in a second loop to avoid constant reflow\n for (index = 0; index < length; index++) {\n if (values[index] != null) {\n elements[index].style.display = values[index];\n }\n }\n return elements;\n }\n jQuery.fn.extend({\n show: function () {\n return showHide(this, true);\n },\n hide: function () {\n return showHide(this);\n },\n toggle: function (state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n return this.each(function () {\n if (isHiddenWithinTree(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n var rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\");\n\n // Support: Android 4.0 - 4.3 only\n // Check state lost if the name is set (trac-11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (trac-14901)\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input);\n\n // Support: Android <=4.1 only\n // Older WebKit doesn't clone checked state correctly in fragments\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;\n\n // Support: IE <=11 only\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n div.innerHTML = \"<textarea>x</textarea>\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n\n // Support: IE <=9 only\n // IE <=9 replaces <option> tags with their contents when inserted outside of\n // the select element.\n div.innerHTML = \"<option></option>\";\n support.option = !!div.lastChild;\n })();\n\n // We have to close these tags to support XHTML (trac-13200)\n var wrapMap = {\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting <tbody> or other required elements.\n thead: [1, \"<table>\", \"</table>\"],\n col: [2, \"<table><colgroup>\", \"</colgroup></table>\"],\n tr: [2, \"<table><tbody>\", \"</tbody></table>\"],\n td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"],\n _default: [0, \"\", \"\"]\n };\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td;\n\n // Support: IE <=9 only\n if (!support.option) {\n wrapMap.optgroup = wrapMap.option = [1, \"<select multiple='multiple'>\", \"</select>\"];\n }\n function getAll(context, tag) {\n // Support: IE <=9 - 11 only\n // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n var ret;\n if (typeof context.getElementsByTagName !== \"undefined\") {\n ret = context.getElementsByTagName(tag || \"*\");\n } else if (typeof context.querySelectorAll !== \"undefined\") {\n ret = context.querySelectorAll(tag || \"*\");\n } else {\n ret = [];\n }\n if (tag === undefined || tag && nodeName(context, tag)) {\n return jQuery.merge([context], ret);\n }\n return ret;\n }\n\n // Mark scripts as having already been evaluated\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n var rhtml = /<|&#?\\w+;/;\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n attached,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n for (; i < l; i++) {\n elem = elems[i];\n if (elem || elem === 0) {\n // Add nodes directly\n if (toType(elem) === \"object\") {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem);\n\n // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem));\n\n // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\"));\n\n // Deserialize a standard representation\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];\n\n // Descend through wrappers to the right content\n j = wrap[0];\n while (j--) {\n tmp = tmp.lastChild;\n }\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, tmp.childNodes);\n\n // Remember the top-level container\n tmp = fragment.firstChild;\n\n // Ensure the created nodes are orphaned (trac-12392)\n tmp.textContent = \"\";\n }\n }\n }\n\n // Remove wrapper from fragment\n fragment.textContent = \"\";\n i = 0;\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n continue;\n }\n attached = isAttached(elem);\n\n // Append to fragment\n tmp = getAll(fragment.appendChild(elem), \"script\");\n\n // Preserve script evaluation history\n if (attached) {\n setGlobalEval(tmp);\n }\n\n // Capture executables\n if (scripts) {\n j = 0;\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n return fragment;\n }\n var rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n function on(elem, types, selector, data, fn, one) {\n var origFn, type;\n\n // Types can be a map of types/handlers\n if (typeof types === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n for (type in types) {\n on(elem, type, selector, data, types[type], one);\n }\n return elem;\n }\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n if (one === 1) {\n origFn = fn;\n fn = function (event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n };\n\n // Use same guid so caller can remove using origFn\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n jQuery.event = {\n global: {},\n add: function (elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem);\n\n // Only attach events to objects that accept data\n if (!acceptData(elem)) {\n return;\n }\n\n // Caller can pass in an object of custom data in lieu of the handler\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n }\n\n // Ensure that invalid selectors throw exceptions at attach time\n // Evaluate against documentElement in case elem is a non-element node (e.g., document)\n if (selector) {\n jQuery.find.matchesSelector(documentElement, selector);\n }\n\n // Make sure that the handler has a unique ID, used to find/remove it later\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n }\n\n // Init the element's event structure and main handler, if this is the first\n if (!(events = elemData.events)) {\n events = elemData.events = Object.create(null);\n }\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n }\n\n // Handle multiple events separated by a space\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // There *must* be a type, no attaching namespace-only handlers\n if (!type) {\n continue;\n }\n\n // If event changes its type, use the special event handlers for the changed type\n special = jQuery.event.special[type] || {};\n\n // If selector defined, determine special event api type, otherwise given type\n type = (selector ? special.delegateType : special.bindType) || type;\n\n // Update special based on newly reset type\n special = jQuery.event.special[type] || {};\n\n // handleObj is passed to all event handlers\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn);\n\n // Init the event handler queue if we're the first\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0;\n\n // Only use addEventListener if the special events handler returns false\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n if (special.add) {\n special.add.call(elem, handleObj);\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n }\n\n // Add to the element's handler list, delegates in front\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n }\n\n // Keep track of which events have ever been used, for event optimization\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function (elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n if (!elemData || !(events = elemData.events)) {\n return;\n }\n\n // Once for each type.namespace in types; type may be omitted\n types = (types || \"\").match(rnothtmlwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // Unbind all events (on this namespace, if provided) for the element\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n continue;\n }\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\");\n\n // Remove matching events\n origCount = j = handlers.length;\n while (j--) {\n handleObj = handlers[j];\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n }\n\n // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n delete events[type];\n }\n }\n\n // Remove data and the expando if it's no longer used\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function (nativeEvent) {\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue,\n args = new Array(arguments.length),\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(nativeEvent),\n handlers = (dataPriv.get(this, \"events\") || Object.create(null))[event.type] || [],\n special = jQuery.event.special[event.type] || {};\n\n // Use the fix-ed jQuery.Event rather than the (read-only) native event\n args[0] = event;\n for (i = 1; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n event.delegateTarget = this;\n\n // Call the preDispatch hook for the mapped type, and let it bail if desired\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n }\n\n // Determine handlers\n handlerQueue = jQuery.event.handlers.call(this, event, handlers);\n\n // Run delegates first; they may want to stop propagation beneath us\n i = 0;\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // If the event is namespaced, then each handler is only invoked if it is\n // specially universal or its namespaces are a superset of the event's.\n if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n }\n\n // Call the postDispatch hook for the mapped type\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n return event.result;\n },\n handlers: function (event, handlers) {\n var i,\n handleObj,\n sel,\n matchedHandlers,\n matchedSelectors,\n handlerQueue = [],\n delegateCount = handlers.delegateCount,\n cur = event.target;\n\n // Find delegate handlers\n if (delegateCount &&\n // Support: IE <=9\n // Black-hole SVG <use> instance trees (trac-13180)\n cur.nodeType &&\n // Support: Firefox <=42\n // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n // Support: IE 11 only\n // ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n !(event.type === \"click\" && event.button >= 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (trac-13208)\n // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n if (cur.nodeType === 1 && !(event.type === \"click\" && cur.disabled === true)) {\n matchedHandlers = [];\n matchedSelectors = {};\n for (i = 0; i < delegateCount; i++) {\n handleObj = handlers[i];\n\n // Don't conflict with Object.prototype properties (trac-13203)\n sel = handleObj.selector + \" \";\n if (matchedSelectors[sel] === undefined) {\n matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n if (matchedSelectors[sel]) {\n matchedHandlers.push(handleObj);\n }\n }\n if (matchedHandlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matchedHandlers\n });\n }\n }\n }\n }\n\n // Add the remaining (directly-bound) handlers\n cur = this;\n if (delegateCount < handlers.length) {\n handlerQueue.push({\n elem: cur,\n handlers: handlers.slice(delegateCount)\n });\n }\n return handlerQueue;\n },\n addProp: function (name, hook) {\n Object.defineProperty(jQuery.Event.prototype, name, {\n enumerable: true,\n configurable: true,\n get: isFunction(hook) ? function () {\n if (this.originalEvent) {\n return hook(this.originalEvent);\n }\n } : function () {\n if (this.originalEvent) {\n return this.originalEvent[name];\n }\n },\n set: function (value) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: value\n });\n }\n });\n },\n fix: function (originalEvent) {\n return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n click: {\n // Utilize native event to ensure correct state for checkable inputs\n setup: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Claim the first handler\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n // dataPriv.set( el, \"click\", ... )\n leverageNative(el, \"click\", true);\n }\n\n // Return false to allow normal processing in the caller\n return false;\n },\n trigger: function (data) {\n // For mutual compressibility with _default, replace `this` access with a local var.\n // `|| data` is dead code meant only to preserve the variable through minification.\n var el = this || data;\n\n // Force setup before triggering a click\n if (rcheckableType.test(el.type) && el.click && nodeName(el, \"input\")) {\n leverageNative(el, \"click\");\n }\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n // For cross-browser consistency, suppress native .click() on links\n // Also prevent it if we're currently inside a leveraged native-event stack\n _default: function (event) {\n var target = event.target;\n return rcheckableType.test(target.type) && target.click && nodeName(target, \"input\") && dataPriv.get(target, \"click\") || nodeName(target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function (event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n };\n\n // Ensure the presence of an event listener that handles manually-triggered\n // synthetic events by interrupting progress until reinvoked in response to\n // *native* events that it fires directly, ensuring that state changes have\n // already occurred before other listeners are invoked.\n function leverageNative(el, type, isSetup) {\n // Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n if (!isSetup) {\n if (dataPriv.get(el, type) === undefined) {\n jQuery.event.add(el, type, returnTrue);\n }\n return;\n }\n\n // Register the controller as a special universal handler for all event namespaces\n dataPriv.set(el, type, false);\n jQuery.event.add(el, type, {\n namespace: false,\n handler: function (event) {\n var result,\n saved = dataPriv.get(this, type);\n if (event.isTrigger & 1 && this[type]) {\n // Interrupt processing of the outer synthetic .trigger()ed event\n if (!saved) {\n // Store arguments for use when handling the inner native event\n // There will always be at least one argument (an event object), so this array\n // will not be confused with a leftover capture object.\n saved = slice.call(arguments);\n dataPriv.set(this, type, saved);\n\n // Trigger the native event and capture its result\n this[type]();\n result = dataPriv.get(this, type);\n dataPriv.set(this, type, false);\n if (saved !== result) {\n // Cancel the outer synthetic event\n event.stopImmediatePropagation();\n event.preventDefault();\n return result;\n }\n\n // If this is an inner synthetic event for an event with a bubbling surrogate\n // (focus or blur), assume that the surrogate already propagated from triggering\n // the native event and prevent that from happening again here.\n // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n // bubbling surrogate propagates *after* the non-bubbling base), but that seems\n // less bad than duplication.\n } else if ((jQuery.event.special[type] || {}).delegateType) {\n event.stopPropagation();\n }\n\n // If this is a native event triggered above, everything is now in order\n // Fire an inner synthetic event with the original arguments\n } else if (saved) {\n // ...and capture the result\n dataPriv.set(this, type, jQuery.event.trigger(saved[0], saved.slice(1), this));\n\n // Abort handling of the native event by all jQuery handlers while allowing\n // native handlers on the same element to run. On target, this is achieved\n // by stopping immediate propagation just on the jQuery event. However,\n // the native event is re-wrapped by a jQuery one on each level of the\n // propagation so the only way to stop it for jQuery is to stop it for\n // everyone via native `stopPropagation()`. This is not a problem for\n // focus/blur which don't bubble, but it does also stop click on checkboxes\n // and radios. We accept this limitation.\n event.stopPropagation();\n event.isImmediatePropagationStopped = returnTrue;\n }\n }\n });\n }\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n }\n\n // Event object\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type;\n\n // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&\n // Support: Android <=2.3 only\n src.returnValue === false ? returnTrue : returnFalse;\n\n // Create target properties\n // Support: Safari <=6 - 7 only\n // Target should not be a text node (trac-504, trac-13143)\n this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;\n this.currentTarget = src.currentTarget;\n this.relatedTarget = src.relatedTarget;\n\n // Event type\n } else {\n this.type = src;\n }\n\n // Put explicitly provided properties onto the event object\n if (props) {\n jQuery.extend(this, props);\n }\n\n // Create a timestamp if incoming event doesn't have one\n this.timeStamp = src && src.timeStamp || Date.now();\n\n // Mark it as fixed\n this[jQuery.expando] = true;\n };\n\n // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function () {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function () {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function () {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n this.stopPropagation();\n }\n };\n\n // Includes all common event props including KeyEvent and MouseEvent specific props\n jQuery.each({\n altKey: true,\n bubbles: true,\n cancelable: true,\n changedTouches: true,\n ctrlKey: true,\n detail: true,\n eventPhase: true,\n metaKey: true,\n pageX: true,\n pageY: true,\n shiftKey: true,\n view: true,\n \"char\": true,\n code: true,\n charCode: true,\n key: true,\n keyCode: true,\n button: true,\n buttons: true,\n clientX: true,\n clientY: true,\n offsetX: true,\n offsetY: true,\n pointerId: true,\n pointerType: true,\n screenX: true,\n screenY: true,\n targetTouches: true,\n toElement: true,\n touches: true,\n which: true\n }, jQuery.event.addProp);\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (type, delegateType) {\n function focusMappedHandler(nativeEvent) {\n if (document.documentMode) {\n // Support: IE 11+\n // Attach a single focusin/focusout handler on the document while someone wants\n // focus/blur. This is because the former are synchronous in IE while the latter\n // are async. In other browsers, all those handlers are invoked synchronously.\n\n // `handle` from private data would already wrap the event, but we need\n // to change the `type` here.\n var handle = dataPriv.get(this, \"handle\"),\n event = jQuery.event.fix(nativeEvent);\n event.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n event.isSimulated = true;\n\n // First, handle focusin/focusout\n handle(nativeEvent);\n\n // ...then, handle focus/blur\n //\n // focus/blur don't bubble while focusin/focusout do; simulate the former by only\n // invoking the handler at the lower level.\n if (event.target === event.currentTarget) {\n // The setup part calls `leverageNative`, which, in turn, calls\n // `jQuery.event.add`, so event handle will already have been set\n // by this point.\n handle(event);\n }\n } else {\n // For non-IE browsers, attach a single capturing handler on the document\n // while someone wants focusin/focusout.\n jQuery.event.simulate(delegateType, nativeEvent.target, jQuery.event.fix(nativeEvent));\n }\n }\n jQuery.event.special[type] = {\n // Utilize native event if possible so blur/focus sequence is correct\n setup: function () {\n var attaches;\n\n // Claim the first handler\n // dataPriv.set( this, \"focus\", ... )\n // dataPriv.set( this, \"blur\", ... )\n leverageNative(this, type, true);\n if (document.documentMode) {\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n attaches = dataPriv.get(this, delegateType);\n if (!attaches) {\n this.addEventListener(delegateType, focusMappedHandler);\n }\n dataPriv.set(this, delegateType, (attaches || 0) + 1);\n } else {\n // Return false to allow normal processing in the caller\n return false;\n }\n },\n trigger: function () {\n // Force setup before trigger\n leverageNative(this, type);\n\n // Return non-false to allow normal event-path propagation\n return true;\n },\n teardown: function () {\n var attaches;\n if (document.documentMode) {\n attaches = dataPriv.get(this, delegateType) - 1;\n if (!attaches) {\n this.removeEventListener(delegateType, focusMappedHandler);\n dataPriv.remove(this, delegateType);\n } else {\n dataPriv.set(this, delegateType, attaches);\n }\n } else {\n // Return false to indicate standard teardown should be applied\n return false;\n }\n },\n // Suppress native focus or blur if we're currently inside\n // a leveraged native-event stack\n _default: function (event) {\n return dataPriv.get(event.target, type);\n },\n delegateType: delegateType\n };\n\n // Support: Firefox <=44\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n //\n // Support: IE 9 - 11+\n // To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n // attach a single handler for both events in IE.\n jQuery.event.special[delegateType] = {\n setup: function () {\n // Handle: regular nodes (via `this.ownerDocument`), window\n // (via `this.document`) & document (via `this`).\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType);\n\n // Support: IE 9 - 11+\n // We use the same native handler for focusin & focus (and focusout & blur)\n // so we need to coordinate setup & teardown parts between those events.\n // Use `delegateType` as the key as `type` is already used by `leverageNative`.\n if (!attaches) {\n if (document.documentMode) {\n this.addEventListener(delegateType, focusMappedHandler);\n } else {\n doc.addEventListener(type, focusMappedHandler, true);\n }\n }\n dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);\n },\n teardown: function () {\n var doc = this.ownerDocument || this.document || this,\n dataHolder = document.documentMode ? this : doc,\n attaches = dataPriv.get(dataHolder, delegateType) - 1;\n if (!attaches) {\n if (document.documentMode) {\n this.removeEventListener(delegateType, focusMappedHandler);\n } else {\n doc.removeEventListener(type, focusMappedHandler, true);\n }\n dataPriv.remove(dataHolder, delegateType);\n } else {\n dataPriv.set(dataHolder, delegateType, attaches);\n }\n }\n };\n });\n\n // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn);\n },\n one: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn, 1);\n },\n off: function (types, selector, fn) {\n var handleObj, type;\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n if (typeof types === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n return this;\n }\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n if (fn === false) {\n fn = returnFalse;\n }\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var\n // Support: IE <=10 - 11, Edge 12 - 13 only\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /<script|<style|<link/i,\n // checked=\"checked\" or checked\n rchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n rcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n // Prefer a tbody over its parent table for containing new rows\n function manipulationTarget(elem, content) {\n if (nodeName(elem, \"table\") && nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\")) {\n return jQuery(elem).children(\"tbody\")[0] || elem;\n }\n return elem;\n }\n\n // Replace/restore the type attribute of script elements for safe DOM manipulation\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n function restoreScript(elem) {\n if ((elem.type || \"\").slice(0, 5) === \"true/\") {\n elem.type = elem.type.slice(5);\n } else {\n elem.removeAttribute(\"type\");\n }\n return elem;\n }\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, udataOld, udataCur, events;\n if (dest.nodeType !== 1) {\n return;\n }\n\n // 1. Copy private data: events, handlers, etc.\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.get(src);\n events = pdataOld.events;\n if (events) {\n dataPriv.remove(dest, \"handle events\");\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n }\n\n // 2. Copy user data\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n }\n\n // Fix IE bugs, see support tests\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase();\n\n // Fails to persist the checked state of a cloned checkbox or radio button.\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked;\n\n // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = flat(args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n valueIsFunction = isFunction(value);\n\n // We can't cloneNode fragments that contain checked, in WebKit\n if (valueIsFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n if (valueIsFunction) {\n args[0] = value.call(this, index, self.html());\n }\n domManip(self, args, callback, ignored);\n });\n }\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n if (fragment.childNodes.length === 1) {\n fragment = first;\n }\n\n // Require either new content or an interest in ignored elements to invoke the callback\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length;\n\n // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (trac-8070).\n for (; i < l; i++) {\n node = fragment;\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true);\n\n // Keep references to cloned scripts for later restoration\n if (hasScripts) {\n // Support: Android <=4.0 only, PhantomJS 1 only\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n callback.call(collection[i], node, i);\n }\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument;\n\n // Re-enable scripts\n jQuery.map(scripts, restoreScript);\n\n // Evaluate executable scripts on first document insertion\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src && (node.type || \"\").toLowerCase() !== \"module\") {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl && !node.noModule) {\n jQuery._evalUrl(node.src, {\n nonce: node.nonce || node.getAttribute(\"nonce\")\n }, doc);\n }\n } else {\n // Unwrap a CDATA section containing script contents. This shouldn't be\n // needed as in XML documents they're already not visible when\n // inspecting element contents and in HTML documents they have no\n // meaning but we're preserving that logic for backwards compatibility.\n // This will be removed completely in 4.0. See gh-4904.\n DOMEval(node.textContent.replace(rcleanScript, \"\"), node, doc);\n }\n }\n }\n }\n }\n }\n return collection;\n }\n function remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n if (node.parentNode) {\n if (keepData && isAttached(node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n node.parentNode.removeChild(node);\n }\n }\n return elem;\n }\n jQuery.extend({\n htmlPrefilter: function (html) {\n return html;\n },\n clone: function (elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = isAttached(elem);\n\n // Fix IE cloning issues\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew jQuery#find here for performance reasons:\n // https://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n }\n\n // Copy the events from the original to the clone\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n }\n\n // Preserve script evaluation history\n destElements = getAll(clone, \"script\");\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n }\n\n // Return the cloned set\n return clone;\n },\n cleanData: function (elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type);\n\n // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n }\n\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataPriv.expando] = undefined;\n }\n if (elem[dataUser.expando]) {\n // Support: Chrome <=35 - 45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n detach: function (selector) {\n return remove(this, selector, true);\n },\n remove: function (selector) {\n return remove(this, selector);\n },\n text: function (value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function () {\n var elem,\n i = 0;\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false));\n\n // Remove any remaining nodes\n elem.textContent = \"\";\n }\n }\n return this;\n },\n clone: function (dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function (value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n }\n\n // See if we can take a shortcut and just use innerHTML\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n try {\n for (; i < l; i++) {\n elem = this[i] || {};\n\n // Remove element nodes and prevent memory leaks\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n elem = 0;\n\n // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function () {\n var ignored = [];\n\n // Make the changes, replacing each non-ignored context element with the new content\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n if (parent) {\n parent.replaceChild(elem, this);\n }\n }\n\n // Force callback invocation\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems);\n\n // Support: Android <=4.0 only, PhantomJS 1 only\n // .get() because push.apply(_, arraylike) throws on ancient WebKit\n push.apply(ret, elems.get());\n }\n return this.pushStack(ret);\n };\n });\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n var rcustomProp = /^--/;\n var getStyles = function (elem) {\n // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n return view.getComputedStyle(elem);\n };\n var swap = function (elem, options, callback) {\n var ret,\n name,\n old = {};\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n ret = callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n elem.style[name] = old[name];\n }\n return ret;\n };\n var rboxStyle = new RegExp(cssExpand.join(\"|\"), \"i\");\n (function () {\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n // This is a singleton, we need to execute it only once\n if (!div) {\n return;\n }\n container.style.cssText = \"position:absolute;left:-11111px;width:60px;\" + \"margin-top:1px;padding:0;border:0\";\n div.style.cssText = \"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" + \"margin:auto;border:1px;padding:1px;\" + \"width:60%;top:1%\";\n documentElement.appendChild(container).appendChild(div);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\";\n\n // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;\n\n // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n // Some styles come back with percentage values, even though they shouldn't\n div.style.right = \"60%\";\n pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;\n\n // Support: IE 9 - 11 only\n // Detect misreporting of content dimensions for box-sizing:border-box elements\n boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;\n\n // Support: IE 9 only\n // Detect overflow:scroll screwiness (gh-3699)\n // Support: Chrome <=64\n // Don't get tricked when zoom affects offsetWidth (gh-4029)\n div.style.position = \"absolute\";\n scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;\n documentElement.removeChild(container);\n\n // Nullify the div so it wouldn't be stored in the memory and\n // it will also be a sign that checks already performed\n div = null;\n }\n function roundPixelMeasures(measure) {\n return Math.round(parseFloat(measure));\n }\n var pixelPositionVal,\n boxSizingReliableVal,\n scrollboxSizeVal,\n pixelBoxStylesVal,\n reliableTrDimensionsVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\");\n\n // Finish early in limited (non-browser) environments\n if (!div.style) {\n return;\n }\n\n // Support: IE <=9 - 11 only\n // Style of cloned element affects source element cloned (trac-8908)\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n jQuery.extend(support, {\n boxSizingReliable: function () {\n computeStyleTests();\n return boxSizingReliableVal;\n },\n pixelBoxStyles: function () {\n computeStyleTests();\n return pixelBoxStylesVal;\n },\n pixelPosition: function () {\n computeStyleTests();\n return pixelPositionVal;\n },\n reliableMarginLeft: function () {\n computeStyleTests();\n return reliableMarginLeftVal;\n },\n scrollboxSize: function () {\n computeStyleTests();\n return scrollboxSizeVal;\n },\n // Support: IE 9 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Behavior in IE 9 is more subtle than in newer versions & it passes\n // some versions of this test; make sure not to make it pass there!\n //\n // Support: Firefox 70+\n // Only Firefox includes border widths\n // in computed dimensions. (gh-4529)\n reliableTrDimensions: function () {\n var table, tr, trChild, trStyle;\n if (reliableTrDimensionsVal == null) {\n table = document.createElement(\"table\");\n tr = document.createElement(\"tr\");\n trChild = document.createElement(\"div\");\n table.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n tr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n // Support: Chrome 86+\n // Height set through cssText does not get applied.\n // Computed height then comes back as 0.\n tr.style.height = \"1px\";\n trChild.style.height = \"9px\";\n\n // Support: Android 8 Chrome 86+\n // In our bodyBackground.html iframe,\n // display for all div elements is set to \"inline\",\n // which causes a problem only in Android 8 Chrome 86.\n // Ensuring the div is `display: block`\n // gets around this issue.\n trChild.style.display = \"block\";\n documentElement.appendChild(table).appendChild(tr).appendChild(trChild);\n trStyle = window.getComputedStyle(tr);\n reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;\n documentElement.removeChild(table);\n }\n return reliableTrDimensionsVal;\n }\n });\n })();\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n isCustomProp = rcustomProp.test(name),\n // Support: Firefox 51+\n // Retrieving style before computed somehow\n // fixes an issue with getting wrong values\n // on detached elements\n style = elem.style;\n computed = computed || getStyles(elem);\n\n // getPropertyValue is needed for:\n // .css('filter') (IE 9 only, trac-12537)\n // .css('--customProperty) (gh-3144)\n if (computed) {\n // Support: IE <=9 - 11+\n // IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n // it's only available as `\"cssFloat\"`. We no longer modify properties\n // sent to `.css()` apart from camelCasing, so we need to check both.\n // Normally, this would create difference in behavior: if\n // `getPropertyValue` returns an empty string, the value returned\n // by `.css()` would be `undefined`. This is usually the case for\n // disconnected elements. However, in IE even disconnected elements\n // with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n ret = computed.getPropertyValue(name) || computed[name];\n if (isCustomProp && ret) {\n // Support: Firefox 105+, Chrome <=105+\n // Spec requires trimming whitespace for custom properties (gh-4926).\n // Firefox only trims leading whitespace. Chrome just collapses\n // both leading & trailing whitespace to a single space.\n //\n // Fall back to `undefined` if empty string returned.\n // This collapses a missing definition with property defined\n // and set to an empty string but there's no standard API\n // allowing us to differentiate them without a performance penalty\n // and returning `undefined` aligns with older jQuery.\n //\n // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n // as whitespace while CSS does not, but this is not a problem\n // because CSS preprocessing replaces them with U+000A LINE FEED\n // (which *is* CSS whitespace)\n // https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n ret = ret.replace(rtrimCSS, \"$1\") || undefined;\n }\n if (ret === \"\" && !isAttached(elem)) {\n ret = jQuery.style(elem, name);\n }\n\n // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // https://drafts.csswg.org/cssom/#resolved-values\n if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth;\n\n // Put in the new values to get a computed value out\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width;\n\n // Revert the changed values\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n return ret !== undefined ?\n // Support: IE <=9 - 11 only\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function () {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n }\n\n // Hook needed; redefine it so that the support test is not executed again.\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n var cssPrefixes = [\"Webkit\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style,\n vendorProps = {};\n\n // Return a vendor-prefixed property or undefined\n function vendorPropName(name) {\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n while (i--) {\n name = cssPrefixes[i] + capName;\n if (name in emptyStyle) {\n return name;\n }\n }\n }\n\n // Return a potentially-mapped jQuery.cssProps or vendor prefixed property\n function finalPropName(name) {\n var final = jQuery.cssProps[name] || vendorProps[name];\n if (final) {\n return final;\n }\n if (name in emptyStyle) {\n return name;\n }\n return vendorProps[name] = vendorPropName(name) || name;\n }\n var\n // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n };\n function setPositiveNumber(_elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ?\n // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {\n var i = dimension === \"width\" ? 1 : 0,\n extra = 0,\n delta = 0,\n marginDelta = 0;\n\n // Adjustment may not be necessary\n if (box === (isBorderBox ? \"border\" : \"content\")) {\n return 0;\n }\n for (; i < 4; i += 2) {\n // Both box models exclude margin\n // Count margin delta separately to only add it after scroll gutter adjustment.\n // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n if (box === \"margin\") {\n marginDelta += jQuery.css(elem, box + cssExpand[i], true, styles);\n }\n\n // If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n if (!isBorderBox) {\n // Add padding\n delta += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n\n // For \"border\" or \"margin\", add border\n if (box !== \"padding\") {\n delta += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n\n // But still keep track of it otherwise\n } else {\n extra += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n\n // If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n // \"padding\" or \"margin\"\n } else {\n // For \"content\", subtract padding\n if (box === \"content\") {\n delta -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n }\n\n // For \"content\" or \"padding\", subtract border\n if (box !== \"margin\") {\n delta -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n }\n\n // Account for positive content-box scroll gutter when requested by providing computedVal\n if (!isBorderBox && computedVal >= 0) {\n // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n // Assuming integer scroll gutter, subtract the rest and round down\n delta += Math.max(0, Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5\n\n // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n // Use an explicit zero to avoid NaN (gh-3964)\n )) || 0;\n }\n return delta + marginDelta;\n }\n function getWidthOrHeight(elem, dimension, extra) {\n // Start with computed style\n var styles = getStyles(elem),\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n // Fake content-box until we know it's needed to know the true value.\n boxSizingNeeded = !support.boxSizingReliable() || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n valueIsBorderBox = isBorderBox,\n val = curCSS(elem, dimension, styles),\n offsetProp = \"offset\" + dimension[0].toUpperCase() + dimension.slice(1);\n\n // Support: Firefox <=54\n // Return a confounding non-pixel value or feign ignorance, as appropriate.\n if (rnumnonpx.test(val)) {\n if (!extra) {\n return val;\n }\n val = \"auto\";\n }\n\n // Support: IE 9 - 11 only\n // Use offsetWidth/offsetHeight for when box sizing is unreliable.\n // In those cases, the computed value can be trusted to be border-box.\n if ((!support.boxSizingReliable() && isBorderBox ||\n // Support: IE 10 - 11+, Edge 15 - 18+\n // IE/Edge misreport `getComputedStyle` of table rows with width/height\n // set in CSS while `offset*` properties report correct values.\n // Interestingly, in some cases IE 9 doesn't suffer from this issue.\n !support.reliableTrDimensions() && nodeName(elem, \"tr\") ||\n // Fall back to offsetWidth/offsetHeight when value is \"auto\"\n // This happens for inline elements with no explicit setting (gh-3571)\n val === \"auto\" ||\n // Support: Android <=4.1 - 4.3 only\n // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n !parseFloat(val) && jQuery.css(elem, \"display\", false, styles) === \"inline\") &&\n // Make sure the element is visible & connected\n elem.getClientRects().length) {\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\";\n\n // Where available, offsetWidth/offsetHeight approximate border box dimensions.\n // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n // retrieved value as a content box dimension.\n valueIsBorderBox = offsetProp in elem;\n if (valueIsBorderBox) {\n val = elem[offsetProp];\n }\n }\n\n // Normalize \"\" and auto\n val = parseFloat(val) || 0;\n\n // Adjust for the element's box model\n return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles,\n // Provide the current computed size to request scroll gutter calculation (gh-3589)\n val) + \"px\";\n }\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function (elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n animationIterationCount: true,\n aspectRatio: true,\n borderImageSlice: true,\n columnCount: true,\n flexGrow: true,\n flexShrink: true,\n fontWeight: true,\n gridArea: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnStart: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowStart: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n scale: true,\n widows: true,\n zIndex: true,\n zoom: true,\n // SVG-related\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeMiterlimit: true,\n strokeOpacity: true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {},\n // Get and set the style property on a DOM Node\n style: function (elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n }\n\n // Make sure that we're working with the right name\n var ret,\n type,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name),\n style = elem.style;\n\n // Make sure that we're working with the right name. We don't\n // want to query the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Gets hook for the prefixed version, then unprefixed version\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // Check if we're setting a value\n if (value !== undefined) {\n type = typeof value;\n\n // Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret);\n\n // Fixes bug trac-9237\n type = \"number\";\n }\n\n // Make sure that null and NaN values aren't set (trac-7116)\n if (value == null || value !== value) {\n return;\n }\n\n // If a number was passed in, add the unit (except for certain CSS properties)\n // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n // \"px\" to a few hardcoded values.\n if (type === \"number\" && !isCustomProp) {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n }\n\n // background-* props affect original clone's values\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n }\n\n // If a hook was provided, use that value, otherwise just set the specified value\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n if (isCustomProp) {\n style.setProperty(name, value);\n } else {\n style[name] = value;\n }\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n }\n\n // Otherwise just get the value from the style object\n return style[name];\n }\n },\n css: function (elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = camelCase(name),\n isCustomProp = rcustomProp.test(name);\n\n // Make sure that we're working with the right name. We don't\n // want to modify the value if it is a CSS custom property\n // since they are user-defined.\n if (!isCustomProp) {\n name = finalPropName(origName);\n }\n\n // Try prefixed name followed by the unprefixed name\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // If a hook was provided get the computed value from there\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n }\n\n // Otherwise, if a way to get the computed value exists, use that\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n }\n\n // Convert \"normal\" to computed value\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n }\n\n // Make numeric if forced or a qualifier was provided and val looks numeric\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (_i, dimension) {\n jQuery.cssHooks[dimension] = {\n get: function (elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && (\n // Support: Safari 8+\n // Table columns in Safari have non-zero offsetWidth & zero\n // getBoundingClientRect().width unless display is changed.\n // Support: IE <=11 only\n // Running getBoundingClientRect on a disconnected node\n // in IE throws an error.\n !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, dimension, extra);\n }) : getWidthOrHeight(elem, dimension, extra);\n }\n },\n set: function (elem, value, extra) {\n var matches,\n styles = getStyles(elem),\n // Only read styles.position if the test has a chance to fail\n // to avoid forcing a reflow.\n scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === \"absolute\",\n // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n boxSizingNeeded = scrollboxSizeBuggy || extra,\n isBorderBox = boxSizingNeeded && jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\",\n subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0;\n\n // Account for unreliable border-box dimensions by comparing offset* to computed and\n // faking a content-box to get border and padding (gh-3699)\n if (isBorderBox && scrollboxSizeBuggy) {\n subtract -= Math.ceil(elem[\"offset\" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, \"border\", false, styles) - 0.5);\n }\n\n // Convert to pixels if value adjustment is needed\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[dimension] = value;\n value = jQuery.css(elem, dimension);\n }\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n });\n\n // These hooks are used by animate to expand properties\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function (value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n return expanded;\n }\n };\n if (prefix !== \"margin\") {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function (name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n if (Array.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n return map;\n }\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n }\n });\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function (elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function () {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function (percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n this.now = (this.end - this.start) * eased + this.start;\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function (tween) {\n var result;\n\n // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n }\n\n // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n result = jQuery.css(tween.elem, tween.prop, \"\");\n\n // Empty strings, null, undefined and \"auto\" are converted to 0.\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function (tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n };\n\n // Support: IE <=9 only\n // Panic based approach to setting things on disconnected nodes\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function (tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function (p) {\n return p;\n },\n swing: function (p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init;\n\n // Back compat <1.8 extension point\n jQuery.fx.step = {};\n var fxNow,\n inProgress,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n function schedule() {\n if (inProgress) {\n if (document.hidden === false && window.requestAnimationFrame) {\n window.requestAnimationFrame(schedule);\n } else {\n window.setTimeout(schedule, jQuery.fx.interval);\n }\n jQuery.fx.tick();\n }\n }\n\n // Animations created synchronously will run synchronously\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = Date.now();\n }\n\n // Generate parameters to create a standard animation\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n };\n\n // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n includeWidth = includeWidth ? 1 : 0;\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n return attrs;\n }\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n function defaultPrefilter(elem, props, opts) {\n var prop,\n value,\n toggle,\n hooks,\n oldfire,\n propTween,\n restoreDisplay,\n display,\n isBox = \"width\" in props || \"height\" in props,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHiddenWithinTree(elem),\n dataShow = dataPriv.get(elem, \"fxshow\");\n\n // Queue-skipping animations hijack the fx hooks\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n }\n\n // Detect show/hide animations\n for (prop in props) {\n value = props[prop];\n if (rfxtypes.test(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n if (value === (hidden ? \"hide\" : \"show\")) {\n // Pretend to be hidden if this is a \"show\" and\n // there is still data from a stopped show/hide\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true;\n\n // Ignore all other no-op show/hide data\n } else {\n continue;\n }\n }\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n }\n }\n\n // Bail out if this is a no-op like .hide().hide()\n propTween = !jQuery.isEmptyObject(props);\n if (!propTween && jQuery.isEmptyObject(orig)) {\n return;\n }\n\n // Restrict \"overflow\" and \"display\" styles during box animations\n if (isBox && elem.nodeType === 1) {\n // Support: IE <=9 - 11, Edge 12 - 15\n // Record all 3 overflow attributes because IE does not infer the shorthand\n // from identically-valued overflowX and overflowY and Edge just mirrors\n // the overflowX value there.\n opts.overflow = [style.overflow, style.overflowX, style.overflowY];\n\n // Identify a display type, preferring old show/hide data over the CSS cascade\n restoreDisplay = dataShow && dataShow.display;\n if (restoreDisplay == null) {\n restoreDisplay = dataPriv.get(elem, \"display\");\n }\n display = jQuery.css(elem, \"display\");\n if (display === \"none\") {\n if (restoreDisplay) {\n display = restoreDisplay;\n } else {\n // Get nonempty value(s) by temporarily forcing visibility\n showHide([elem], true);\n restoreDisplay = elem.style.display || restoreDisplay;\n display = jQuery.css(elem, \"display\");\n showHide([elem]);\n }\n }\n\n // Animate inline elements as inline-block\n if (display === \"inline\" || display === \"inline-block\" && restoreDisplay != null) {\n if (jQuery.css(elem, \"float\") === \"none\") {\n // Restore the original display value at the end of pure show/hide animations\n if (!propTween) {\n anim.done(function () {\n style.display = restoreDisplay;\n });\n if (restoreDisplay == null) {\n display = style.display;\n restoreDisplay = display === \"none\" ? \"\" : display;\n }\n }\n style.display = \"inline-block\";\n }\n }\n }\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n }\n\n // Implement show/hide animations\n propTween = false;\n for (prop in orig) {\n // General show/hide setup for this element animation\n if (!propTween) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {\n display: restoreDisplay\n });\n }\n\n // Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n if (toggle) {\n dataShow.hidden = !hidden;\n }\n\n // Show elements before animating them\n if (hidden) {\n showHide([elem], true);\n }\n\n /* eslint-disable no-loop-func */\n\n anim.done(function () {\n /* eslint-enable no-loop-func */\n\n // The final step of a \"hide\" animation is actually hiding the element\n if (!hidden) {\n showHide([elem]);\n }\n dataPriv.remove(elem, \"fxshow\");\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n }\n\n // Per-property setup\n propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n if (!(prop in dataShow)) {\n dataShow[prop] = propTween.start;\n if (hidden) {\n propTween.end = propTween.start;\n propTween.start = 0;\n }\n }\n }\n }\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks;\n\n // camelCase, specialEasing and expand cssHook pass\n for (index in props) {\n name = camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n if (Array.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n hooks = jQuery.cssHooks[name];\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name];\n\n // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function () {\n if (stopped) {\n return false;\n }\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3 only\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n deferred.notifyWith(elem, [animation, percent, remaining]);\n\n // If there's more to do, yield\n if (percent < 1 && length) {\n return remaining;\n }\n\n // If this was an empty animation, synthesize a final progress notification\n if (!length) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n }\n\n // Resolve the animation and report its conclusion\n deferred.resolveWith(elem, [animation]);\n return false;\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function (prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function (gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n if (stopped) {\n return this;\n }\n stopped = true;\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n }\n\n // Resolve when we played the last frame; otherwise, reject\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n return this;\n }\n }),\n props = animation.props;\n propFilter(props, animation.opts.specialEasing);\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n if (result) {\n if (isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);\n }\n return result;\n }\n }\n jQuery.map(props, createTween, animation);\n if (isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n }\n\n // Attach callbacks from options\n animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n return animation;\n }\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function (props, callback) {\n if (isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnothtmlwhite);\n }\n var prop,\n index = 0,\n length = props.length;\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function (callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !isFunction(easing) && easing\n };\n\n // Go to the end state if fx are off\n if (jQuery.fx.off) {\n opt.duration = 0;\n } else {\n if (typeof opt.duration !== \"number\") {\n if (opt.duration in jQuery.fx.speeds) {\n opt.duration = jQuery.fx.speeds[opt.duration];\n } else {\n opt.duration = jQuery.fx.speeds._default;\n }\n }\n }\n\n // Normalize opt.queue - true/undefined/null -> \"fx\"\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n }\n\n // Queueing\n opt.old = opt.complete;\n opt.complete = function () {\n if (isFunction(opt.old)) {\n opt.old.call(this);\n }\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n return opt;\n };\n jQuery.fn.extend({\n fadeTo: function (speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHiddenWithinTree).css(\"opacity\", 0).show()\n\n // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function (prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function () {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall);\n\n // Empty animations, or finishing resolves immediately\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function (type, clearQueue, gotoEnd) {\n var stopQueue = function (hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n if (clearQueue) {\n this.queue(type || \"fx\", []);\n }\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n }\n\n // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function (type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0;\n\n // Enable finishing flag on private data\n data.finish = true;\n\n // Empty the queue first\n jQuery.queue(this, type, []);\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n }\n\n // Look for any active animations, and finish them\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n }\n\n // Look for any animations in the old queue and finish them\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n }\n\n // Turn off finishing flag\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (_i, name) {\n var cssFn = jQuery.fn[name];\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n });\n\n // Generate shortcuts for custom animations\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = Date.now();\n for (; i < timers.length; i++) {\n timer = timers[i];\n\n // Run the timer and safely remove it when done (allowing for external removal)\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n if (!timers.length) {\n jQuery.fx.stop();\n }\n fxNow = undefined;\n };\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n jQuery.fx.start();\n };\n jQuery.fx.interval = 13;\n jQuery.fx.start = function () {\n if (inProgress) {\n return;\n }\n inProgress = true;\n schedule();\n };\n jQuery.fx.stop = function () {\n inProgress = null;\n };\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n };\n\n // Based off of the plugin by Clint Helfers, with permission.\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\";\n\n // Support: Android <=4.3 only\n // Default value for a checkbox should be \"on\"\n support.checkOn = input.value !== \"\";\n\n // Support: IE <=11 only\n // Must access selectedIndex to make default options select\n support.optSelected = opt.selected;\n\n // Support: IE <=11 only\n // An input loses its value after becoming a radio\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function (name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function (name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set attributes on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n // Fallback to prop when attributes are not supported\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n }\n\n // Attribute hooks are determined by the lowercase version\n // Grab necessary hook if one is defined\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n elem.setAttribute(name, value + \"\");\n return value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n ret = jQuery.find.attr(elem, name);\n\n // Non-existent attributes return null, we normalize to undefined\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function (elem, value) {\n if (!support.radioValue && value === \"radio\" && nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n if (val) {\n elem.value = val;\n }\n return value;\n }\n }\n }\n },\n removeAttr: function (elem, value) {\n var name,\n i = 0,\n // Attribute names can contain non-HTML whitespace characters\n // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n attrNames = value && value.match(rnothtmlwhite);\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n elem.removeAttribute(name);\n }\n }\n }\n });\n\n // Hooks for boolean attributes\n boolHook = {\n set: function (elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (_i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n attrHandle[name] = function (elem, name, isXML) {\n var ret,\n handle,\n lowercaseName = name.toLowerCase();\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[lowercaseName];\n attrHandle[lowercaseName] = ret;\n ret = getter(elem, name, isXML) != null ? lowercaseName : null;\n attrHandle[lowercaseName] = handle;\n }\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function (name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function (name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set properties on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n return elem[name] = value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function (elem) {\n // Support: IE <=9 - 11 only\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // Use proper attribute retrieval (trac-12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n if (tabindex) {\n return parseInt(tabindex, 10);\n }\n if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {\n return 0;\n }\n return -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\n });\n\n // Support: IE <=11 only\n // Accessing the selectedIndex property\n // forces the browser to respect setting selected\n // on the option\n // The getter ensures a default option is selected\n // when in an optgroup\n // eslint rule \"no-unused-expressions\" is disabled for this code\n // since it considers such accessions noop\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n return null;\n },\n set: function (elem) {\n /* eslint no-unused-expressions: \"off\" */\n\n var parent = elem.parentNode;\n if (parent) {\n parent.selectedIndex;\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n });\n\n // Strip and collapse whitespace according to HTML spec\n // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n function stripAndCollapse(value) {\n var tokens = value.match(rnothtmlwhite) || [];\n return tokens.join(\" \");\n }\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n function classesToArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n return value.match(rnothtmlwhite) || [];\n }\n return [];\n }\n jQuery.fn.extend({\n addClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n if (cur.indexOf(\" \" + className + \" \") < 0) {\n cur += className + \" \";\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n removeClass: function (value) {\n var classNames, cur, curValue, className, i, finalValue;\n if (isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n classNames = classesToArray(value);\n if (classNames.length) {\n return this.each(function () {\n curValue = getClass(this);\n\n // This expression is here for better compressibility (see addClass)\n cur = this.nodeType === 1 && \" \" + stripAndCollapse(curValue) + \" \";\n if (cur) {\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Remove *all* instances\n while (cur.indexOf(\" \" + className + \" \") > -1) {\n cur = cur.replace(\" \" + className + \" \", \" \");\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = stripAndCollapse(cur);\n if (curValue !== finalValue) {\n this.setAttribute(\"class\", finalValue);\n }\n }\n });\n }\n return this;\n },\n toggleClass: function (value, stateVal) {\n var classNames,\n className,\n i,\n self,\n type = typeof value,\n isValidValue = type === \"string\" || Array.isArray(value);\n if (isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n if (typeof stateVal === \"boolean\" && isValidValue) {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n classNames = classesToArray(value);\n return this.each(function () {\n if (isValidValue) {\n // Toggle individual class names\n self = jQuery(this);\n for (i = 0; i < classNames.length; i++) {\n className = classNames[i];\n\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n }\n\n // Toggle whole class name\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n }\n\n // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function (selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + stripAndCollapse(getClass(elem)) + \" \").indexOf(className) > -1) {\n return true;\n }\n }\n return false;\n }\n });\n var rreturn = /\\r/g;\n jQuery.fn.extend({\n val: function (value) {\n var hooks,\n ret,\n valueIsFunction,\n elem = this[0];\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n ret = elem.value;\n\n // Handle most common string cases\n if (typeof ret === \"string\") {\n return ret.replace(rreturn, \"\");\n }\n\n // Handle cases where value is null/undef or number\n return ret == null ? \"\" : ret;\n }\n return;\n }\n valueIsFunction = isFunction(value);\n return this.each(function (i) {\n var val;\n if (this.nodeType !== 1) {\n return;\n }\n if (valueIsFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n }\n\n // Treat null/undefined as \"\"; convert numbers to string\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (Array.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];\n\n // If set returns undefined, fall back to normal setting\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function (elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val :\n // Support: IE <=10 - 11 only\n // option.text throws exceptions (trac-14686, trac-14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n stripAndCollapse(jQuery.text(elem));\n }\n },\n select: {\n get: function (elem) {\n var value,\n option,\n i,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\",\n values = one ? null : [],\n max = one ? index + 1 : options.length;\n if (index < 0) {\n i = max;\n } else {\n i = one ? index : 0;\n }\n\n // Loop through all the selected options\n for (; i < max; i++) {\n option = options[i];\n\n // Support: IE <=9 only\n // IE8-9 doesn't update selected after form reset (trac-2551)\n if ((option.selected || i === index) &&\n // Don't return options that are disabled or in a disabled optgroup\n !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val();\n\n // We don't need an array for one selects\n if (one) {\n return value;\n }\n\n // Multi-Selects return an array\n values.push(value);\n }\n }\n return values;\n },\n set: function (elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n while (i--) {\n option = options[i];\n\n /* eslint-disable no-cond-assign */\n\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n\n /* eslint-enable no-cond-assign */\n }\n\n // Force browsers to behave consistently when non-matching value is set\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n return values;\n }\n }\n }\n });\n\n // Radios and checkboxes getter/setter\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function (elem, value) {\n if (Array.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n });\n\n // Return jQuery for attributes-only inclusion\n var location = window.location;\n var nonce = {\n guid: Date.now()\n };\n var rquery = /\\?/;\n\n // Cross-browser xml parsing\n jQuery.parseXML = function (data) {\n var xml, parserErrorElem;\n if (!data || typeof data !== \"string\") {\n return null;\n }\n\n // Support: IE 9 - 11 only\n // IE throws on parseFromString with invalid input.\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {}\n parserErrorElem = xml && xml.getElementsByTagName(\"parsererror\")[0];\n if (!xml || parserErrorElem) {\n jQuery.error(\"Invalid XML: \" + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {\n return el.textContent;\n }).join(\"\\n\") : data));\n }\n return xml;\n };\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n stopPropagationCallback = function (e) {\n e.stopPropagation();\n };\n jQuery.extend(jQuery.event, {\n trigger: function (event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n lastElement,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = lastElement = tmp = elem = elem || document;\n\n // Don't do events on text and comment nodes\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n }\n\n // focus/blur morphs to focusin/out; ensure we're not firing them right now\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n ontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n // Caller can pass in a jQuery.Event object, Object, or just an event type string\n event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event);\n\n // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n // Clean up the event in case it is being reused\n event.result = undefined;\n if (!event.target) {\n event.target = elem;\n }\n\n // Clone any incoming data and prepend the event, creating the handler arg list\n data = data == null ? [event] : jQuery.makeArray(data, [event]);\n\n // Allow special events to draw outside the lines\n special = jQuery.event.special[type] || {};\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n }\n\n // Determine event propagation path in advance, per W3C events spec (trac-9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {\n bubbleType = special.delegateType || type;\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n }\n\n // Only add window if we got to document (e.g., not plain obj or detached DOM)\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n }\n\n // Fire handlers on the event path\n i = 0;\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n lastElement = cur;\n event.type = i > 1 ? bubbleType : special.bindType || type;\n\n // jQuery handler\n handle = (dataPriv.get(cur, \"events\") || Object.create(null))[event.type] && dataPriv.get(cur, \"handle\");\n if (handle) {\n handle.apply(cur, data);\n }\n\n // Native handler\n handle = ontype && cur[ontype];\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n event.type = type;\n\n // If nobody prevented the default action, do it now\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name as the event.\n // Don't do default actions on window, that's where global variables be (trac-6170)\n if (ontype && isFunction(elem[type]) && !isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n if (tmp) {\n elem[ontype] = null;\n }\n\n // Prevent re-triggering of the same event, since we already bubbled it above\n jQuery.event.triggered = type;\n if (event.isPropagationStopped()) {\n lastElement.addEventListener(type, stopPropagationCallback);\n }\n elem[type]();\n if (event.isPropagationStopped()) {\n lastElement.removeEventListener(type, stopPropagationCallback);\n }\n jQuery.event.triggered = undefined;\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function (type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function (type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function (type, data) {\n var elem = this[0];\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n });\n var rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n function buildParams(prefix, obj, traditional, add) {\n var name;\n if (Array.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (typeof v === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && toType(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n }\n\n // Serialize an array of form elements or a set of\n // key/values into a query string\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function (key, valueOrFunction) {\n // If value is a function, invoke it and use its return value\n var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value == null ? \"\" : value);\n };\n if (a == null) {\n return \"\";\n }\n\n // If an array was passed in, assume that it is an array of form elements.\n if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n }\n\n // Return the resulting serialization\n return s.join(\"&\");\n };\n jQuery.fn.extend({\n serialize: function () {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function () {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type;\n\n // Use .is( \":disabled\" ) so that fieldset[disabled] works\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (_i, elem) {\n var val = jQuery(this).val();\n if (val == null) {\n return null;\n }\n if (Array.isArray(val)) {\n return jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n });\n }\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n var r20 = /%20/g,\n rhash = /#.*$/,\n rantiCache = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // trac-7653, trac-8125, trac-8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n\n // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];\n if (isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func);\n\n // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n }\n\n // Base inspection function for prefilters and transports\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n }\n\n // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes trac-9887\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n return target;\n }\n\n /* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes;\n\n // Remove auto dataType and get content-type in the process\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n }\n\n // Check if we're dealing with a known content-type\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n }\n\n // Check to see if we have a response for the expected dataType\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n if (!firstDataType) {\n firstDataType = type;\n }\n }\n\n // Or just use first one\n finalDataType = finalDataType || firstDataType;\n }\n\n // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n return responses[finalDataType];\n }\n }\n\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice();\n\n // Create converters map with lowercased keys\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n current = dataTypes.shift();\n\n // Convert to each sequential dataType\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n }\n\n // Apply the dataFilter if provided\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n prev = current;\n current = dataTypes.shift();\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev;\n\n // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current];\n\n // If none found, seek a pair\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2];\n\n // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n break;\n }\n }\n }\n }\n\n // Apply converter (if not an equivalence)\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n return {\n state: \"success\",\n data: response\n };\n }\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": JSON.parse,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function (target, settings) {\n return settings ?\n // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :\n // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function (url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (typeof url === \"object\") {\n options = url;\n url = undefined;\n }\n\n // Force options to be an object\n options = options || {};\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // Request state (becomes false upon send and true upon completion)\n completed,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // uncached part of the url\n uncached,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function (key) {\n var match;\n if (completed) {\n if (!responseHeaders) {\n responseHeaders = {};\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase() + \" \"] = (responseHeaders[match[1].toLowerCase() + \" \"] || []).concat(match[2]);\n }\n }\n match = responseHeaders[key.toLowerCase() + \" \"];\n }\n return match == null ? null : match.join(\", \");\n },\n // Raw string\n getAllResponseHeaders: function () {\n return completed ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function (name, value) {\n if (completed == null) {\n name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;\n requestHeaders[name] = value;\n }\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function (type) {\n if (completed == null) {\n s.mimeType = type;\n }\n return this;\n },\n // Status-dependent callbacks\n statusCode: function (map) {\n var code;\n if (map) {\n if (completed) {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n } else {\n // Lazy-add the new callbacks in a way that preserves old ones\n for (code in map) {\n statusCode[code] = [statusCode[code], map[code]];\n }\n }\n }\n return this;\n },\n // Cancel the request\n abort: function (statusText) {\n var finalText = statusText || strAbort;\n if (transport) {\n transport.abort(finalText);\n }\n done(0, finalText);\n return this;\n }\n };\n\n // Attach deferreds\n deferred.promise(jqXHR);\n\n // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (trac-10093: consistency with old signature)\n // We also use the url parameter if available\n s.url = ((url || s.url || location.href) + \"\").replace(rprotocol, location.protocol + \"//\");\n\n // Alias method option to type as per ticket trac-12004\n s.type = options.method || options.type || s.method || s.type;\n\n // Extract dataTypes list\n s.dataTypes = (s.dataType || \"*\").toLowerCase().match(rnothtmlwhite) || [\"\"];\n\n // A cross-domain request is in order when the origin doesn't match the current origin.\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\");\n\n // Support: IE <=8 - 11, Edge 12 - 15\n // IE throws exception on accessing the href property if url is malformed,\n // e.g. http://example.com:80x/\n try {\n urlAnchor.href = s.url;\n\n // Support: IE <=8 - 11 only\n // Anchor's host property isn't correctly set when s.url is relative\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n }\n\n // Convert data if not already a string\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n }\n\n // Apply prefilters\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);\n\n // If request was aborted inside a prefilter, stop there\n if (completed) {\n return jqXHR;\n }\n\n // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n fireGlobals = jQuery.event && s.global;\n\n // Watch for a new set of requests\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n }\n\n // Uppercase the type\n s.type = s.type.toUpperCase();\n\n // Determine if request has content\n s.hasContent = !rnoContent.test(s.type);\n\n // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n // Remove hash to simplify url manipulation\n cacheURL = s.url.replace(rhash, \"\");\n\n // More options handling for requests with no content\n if (!s.hasContent) {\n // Remember the hash so we can put it back\n uncached = s.url.slice(cacheURL.length);\n\n // If data is available and should be processed, append data to url\n if (s.data && (s.processData || typeof s.data === \"string\")) {\n cacheURL += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data;\n\n // trac-9682: remove data so that it's not used in an eventual retry\n delete s.data;\n }\n\n // Add or update anti-cache param if needed\n if (s.cache === false) {\n cacheURL = cacheURL.replace(rantiCache, \"$1\");\n uncached = (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce.guid++ + uncached;\n }\n\n // Put hash and anti-cache on the URL that will be requested (gh-1732)\n s.url = cacheURL + uncached;\n\n // Change '%20' to '+' if this is encoded form body content (gh-2658)\n } else if (s.data && s.processData && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0) {\n s.data = s.data.replace(r20, \"+\");\n }\n\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n }\n\n // Set the correct header, if data is being sent\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n }\n\n // Set the Accepts header for the server, depending on the dataType\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]);\n\n // Check for headers option\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n }\n\n // Allow custom headers/mimetypes and early abort\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {\n // Abort if not done already and return\n return jqXHR.abort();\n }\n\n // Aborting is no longer a cancellation\n strAbort = \"abort\";\n\n // Install callbacks on deferreds\n completeDeferred.add(s.complete);\n jqXHR.done(s.success);\n jqXHR.fail(s.error);\n\n // Get transport\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);\n\n // If no transport, we auto-abort\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1;\n\n // Send global event\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n }\n\n // If request was aborted inside ajaxSend, stop there\n if (completed) {\n return jqXHR;\n }\n\n // Timeout\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n try {\n completed = false;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Rethrow post-completion exceptions\n if (completed) {\n throw e;\n }\n\n // Propagate others as results\n done(-1, e);\n }\n }\n\n // Callback for when everything is done\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText;\n\n // Ignore repeat invocations\n if (completed) {\n return;\n }\n completed = true;\n\n // Clear timeout if it exists\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n }\n\n // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n transport = undefined;\n\n // Cache response headers\n responseHeadersString = headers || \"\";\n\n // Set readyState\n jqXHR.readyState = status > 0 ? 4 : 0;\n\n // Determine if successful\n isSuccess = status >= 200 && status < 300 || status === 304;\n\n // Get response data\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n }\n\n // Use a noop converter for missing script but not if jsonp\n if (!isSuccess && jQuery.inArray(\"script\", s.dataTypes) > -1 && jQuery.inArray(\"json\", s.dataTypes) < 0) {\n s.converters[\"text script\"] = function () {};\n }\n\n // Convert no matter what (that way responseXXX fields are always set)\n response = ajaxConvert(s, response, jqXHR, isSuccess);\n\n // If successful, handle type chaining\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n modified = jqXHR.getResponseHeader(\"etag\");\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n }\n\n // if no content\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\";\n\n // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\";\n\n // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n if (status || !statusText) {\n statusText = \"error\";\n if (status < 0) {\n status = 0;\n }\n }\n }\n\n // Set data for the fake xhr object\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\";\n\n // Success/Error\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n }\n\n // Status-dependent callbacks\n jqXHR.statusCode(statusCode);\n statusCode = undefined;\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n }\n\n // Complete\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]);\n\n // Handle the global AJAX counter\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n return jqXHR;\n },\n getJSON: function (url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function (url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (_i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n }\n\n // The url can be an options object (which then must have .url)\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery.ajaxPrefilter(function (s) {\n var i;\n for (i in s.headers) {\n if (i.toLowerCase() === \"content-type\") {\n s.contentType = s.headers[i] || \"\";\n }\n }\n });\n jQuery._evalUrl = function (url, options, doc) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (trac-11264)\n type: \"GET\",\n dataType: \"script\",\n cache: true,\n async: false,\n global: false,\n // Only evaluate the response if it is successful (gh-4126)\n // dataFilter is not invoked for failure responses, so using it instead\n // of the default converter is kludgy but it works.\n converters: {\n \"text script\": function () {}\n },\n dataFilter: function (response) {\n jQuery.globalEval(response, options, doc);\n }\n });\n };\n jQuery.fn.extend({\n wrapAll: function (html) {\n var wrap;\n if (this[0]) {\n if (isFunction(html)) {\n html = html.call(this[0]);\n }\n\n // The elements to wrap the target around\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n wrap.map(function () {\n var elem = this;\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n return elem;\n }).append(this);\n }\n return this;\n },\n wrapInner: function (html) {\n if (isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function (html) {\n var htmlIsFunction = isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function (selector) {\n this.parent(selector).not(\"body\").each(function () {\n jQuery(this).replaceWith(this.childNodes);\n });\n return this;\n }\n });\n jQuery.expr.pseudos.hidden = function (elem) {\n return !jQuery.expr.pseudos.visible(elem);\n };\n jQuery.expr.pseudos.visible = function (elem) {\n return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);\n };\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE <=9 only\n // trac-1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var callback, errorCallback;\n\n // Cross domain only allowed if supported through XMLHttpRequest\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function (headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password);\n\n // Apply custom fields if provided\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n }\n\n // Override mime type if needed\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n }\n\n // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n }\n\n // Set headers\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n }\n\n // Callback\n callback = function (type) {\n return function () {\n if (callback) {\n callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE <=9 only\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete(\n // File: protocol always yields status 0; see trac-8605, trac-14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,\n // Support: IE <=9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n };\n\n // Listen to events\n xhr.onload = callback();\n errorCallback = xhr.onerror = xhr.ontimeout = callback(\"error\");\n\n // Support: IE 9 only\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (callback) {\n errorCallback();\n }\n });\n }\n };\n }\n\n // Create the abort callback\n callback = callback(\"abort\");\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // trac-14683: Only rethrow if this hasn't been notified as an error yet\n if (callback) {\n throw e;\n }\n }\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n\n // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\n jQuery.ajaxPrefilter(function (s) {\n if (s.crossDomain) {\n s.contents.script = false;\n }\n });\n\n // Install script dataType\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function (text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n });\n\n // Handle cache's special case and crossDomain\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n });\n\n // Bind script tag hack transport\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain or forced-by-attrs requests\n if (s.crossDomain || s.scriptAttrs) {\n var script, callback;\n return {\n send: function (_, complete) {\n script = jQuery(\"<script>\").attr(s.scriptAttrs || {}).prop({\n charset: s.scriptCharset,\n src: s.url\n }).on(\"load error\", callback = function (evt) {\n script.remove();\n callback = null;\n if (evt) {\n complete(evt.type === \"error\" ? 404 : 200, evt.type);\n }\n });\n\n // Use native DOM manipulation to avoid our domManip AJAX trickery\n document.head.appendChild(script[0]);\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n var oldCallbacks = [],\n rjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n // Default jsonp settings\n jQuery.ajaxSetup({\n jsonp: \"callback\",\n jsonpCallback: function () {\n var callback = oldCallbacks.pop() || jQuery.expando + \"_\" + nonce.guid++;\n this[callback] = true;\n return callback;\n }\n });\n\n // Detect, normalize options and install callbacks for jsonp requests\n jQuery.ajaxPrefilter(\"json jsonp\", function (s, originalSettings, jqXHR) {\n var callbackName,\n overwritten,\n responseContainer,\n jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? \"url\" : typeof s.data === \"string\" && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0 && rjsonp.test(s.data) && \"data\");\n\n // Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n if (jsonProp || s.dataTypes[0] === \"jsonp\") {\n // Get callback name, remembering preexisting value associated with it\n callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;\n\n // Insert callback into url or form data\n if (jsonProp) {\n s[jsonProp] = s[jsonProp].replace(rjsonp, \"$1\" + callbackName);\n } else if (s.jsonp !== false) {\n s.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.jsonp + \"=\" + callbackName;\n }\n\n // Use data converter to retrieve json after script execution\n s.converters[\"script json\"] = function () {\n if (!responseContainer) {\n jQuery.error(callbackName + \" was not called\");\n }\n return responseContainer[0];\n };\n\n // Force json dataType\n s.dataTypes[0] = \"json\";\n\n // Install callback\n overwritten = window[callbackName];\n window[callbackName] = function () {\n responseContainer = arguments;\n };\n\n // Clean-up function (fires after converters)\n jqXHR.always(function () {\n // If previous value didn't exist - remove it\n if (overwritten === undefined) {\n jQuery(window).removeProp(callbackName);\n\n // Otherwise restore preexisting value\n } else {\n window[callbackName] = overwritten;\n }\n\n // Save back as free\n if (s[callbackName]) {\n // Make sure that re-using the options doesn't screw things around\n s.jsonpCallback = originalSettings.jsonpCallback;\n\n // Save the callback name for future use\n oldCallbacks.push(callbackName);\n }\n\n // Call if it was a function and we have a response\n if (responseContainer && isFunction(overwritten)) {\n overwritten(responseContainer[0]);\n }\n responseContainer = overwritten = undefined;\n });\n\n // Delegate to script\n return \"script\";\n }\n });\n\n // Support: Safari 8 only\n // In Safari 8 documents created via document.implementation.createHTMLDocument\n // collapse sibling forms: the second one becomes a child of the first one.\n // Because of that, this security measure has to be disabled in Safari 8.\n // https://bugs.webkit.org/show_bug.cgi?id=137337\n support.createHTMLDocument = function () {\n var body = document.implementation.createHTMLDocument(\"\").body;\n body.innerHTML = \"<form></form><form></form>\";\n return body.childNodes.length === 2;\n }();\n\n // Argument \"data\" should be string of html\n // context (optional): If specified, the fragment will be created in this context,\n // defaults to document\n // keepScripts (optional): If true, will include scripts passed in the html string\n jQuery.parseHTML = function (data, context, keepScripts) {\n if (typeof data !== \"string\") {\n return [];\n }\n if (typeof context === \"boolean\") {\n keepScripts = context;\n context = false;\n }\n var base, parsed, scripts;\n if (!context) {\n // Stop scripts or inline event handlers from being executed immediately\n // by using document.implementation\n if (support.createHTMLDocument) {\n context = document.implementation.createHTMLDocument(\"\");\n\n // Set the base href for the created document\n // so any parsed elements with URLs\n // are based on the document's URL (gh-2965)\n base = context.createElement(\"base\");\n base.href = document.location.href;\n context.head.appendChild(base);\n } else {\n context = document;\n }\n }\n parsed = rsingleTag.exec(data);\n scripts = !keepScripts && [];\n\n // Single tag\n if (parsed) {\n return [context.createElement(parsed[1])];\n }\n parsed = buildFragment([data], context, scripts);\n if (scripts && scripts.length) {\n jQuery(scripts).remove();\n }\n return jQuery.merge([], parsed.childNodes);\n };\n\n /**\n * Load a url into a page\n */\n jQuery.fn.load = function (url, params, callback) {\n var selector,\n type,\n response,\n self = this,\n off = url.indexOf(\" \");\n if (off > -1) {\n selector = stripAndCollapse(url.slice(off));\n url = url.slice(0, off);\n }\n\n // If it's a function\n if (isFunction(params)) {\n // We assume that it's the callback\n callback = params;\n params = undefined;\n\n // Otherwise, build a param string\n } else if (params && typeof params === \"object\") {\n type = \"POST\";\n }\n\n // If we have elements to modify, make the request\n if (self.length > 0) {\n jQuery.ajax({\n url: url,\n // If \"type\" variable is undefined, then \"GET\" method will be used.\n // Make value of this field explicit since\n // user can override it through ajaxSetup method\n type: type || \"GET\",\n dataType: \"html\",\n data: params\n }).done(function (responseText) {\n // Save response for use in complete callback\n response = arguments;\n self.html(selector ?\n // If a selector was specified, locate the right elements in a dummy div\n // Exclude scripts to avoid IE 'Permission Denied' errors\n jQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector) :\n // Otherwise use the full result\n responseText);\n\n // If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n // but they are ignored because response was set above.\n // If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n }).always(callback && function (jqXHR, status) {\n self.each(function () {\n callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);\n });\n });\n }\n return this;\n };\n jQuery.expr.pseudos.animated = function (elem) {\n return jQuery.grep(jQuery.timers, function (fn) {\n return elem === fn.elem;\n }).length;\n };\n jQuery.offset = {\n setOffset: function (elem, options, i) {\n var curPosition,\n curLeft,\n curCSSTop,\n curTop,\n curOffset,\n curCSSLeft,\n calculatePosition,\n position = jQuery.css(elem, \"position\"),\n curElem = jQuery(elem),\n props = {};\n\n // Set position first, in-case top/left are set even on static elem\n if (position === \"static\") {\n elem.style.position = \"relative\";\n }\n curOffset = curElem.offset();\n curCSSTop = jQuery.css(elem, \"top\");\n curCSSLeft = jQuery.css(elem, \"left\");\n calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop + curCSSLeft).indexOf(\"auto\") > -1;\n\n // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n if (calculatePosition) {\n curPosition = curElem.position();\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n if (isFunction(options)) {\n // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n options = options.call(elem, i, jQuery.extend({}, curOffset));\n }\n if (options.top != null) {\n props.top = options.top - curOffset.top + curTop;\n }\n if (options.left != null) {\n props.left = options.left - curOffset.left + curLeft;\n }\n if (\"using\" in options) {\n options.using.call(elem, props);\n } else {\n curElem.css(props);\n }\n }\n };\n jQuery.fn.extend({\n // offset() relates an element's border box to the document origin\n offset: function (options) {\n // Preserve chaining for setter\n if (arguments.length) {\n return options === undefined ? this : this.each(function (i) {\n jQuery.offset.setOffset(this, options, i);\n });\n }\n var rect,\n win,\n elem = this[0];\n if (!elem) {\n return;\n }\n\n // Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n // Support: IE <=11 only\n // Running getBoundingClientRect on a\n // disconnected node in IE throws an error\n if (!elem.getClientRects().length) {\n return {\n top: 0,\n left: 0\n };\n }\n\n // Get document-relative position by adding viewport scroll to viewport-relative gBCR\n rect = elem.getBoundingClientRect();\n win = elem.ownerDocument.defaultView;\n return {\n top: rect.top + win.pageYOffset,\n left: rect.left + win.pageXOffset\n };\n },\n // position() relates an element's margin box to its offset parent's padding box\n // This corresponds to the behavior of CSS absolute positioning\n position: function () {\n if (!this[0]) {\n return;\n }\n var offsetParent,\n offset,\n doc,\n elem = this[0],\n parentOffset = {\n top: 0,\n left: 0\n };\n\n // position:fixed elements are offset from the viewport, which itself always has zero offset\n if (jQuery.css(elem, \"position\") === \"fixed\") {\n // Assume position:fixed implies availability of getBoundingClientRect\n offset = elem.getBoundingClientRect();\n } else {\n offset = this.offset();\n\n // Account for the *real* offset parent, which can be the document or its root element\n // when a statically positioned element is identified\n doc = elem.ownerDocument;\n offsetParent = elem.offsetParent || doc.documentElement;\n while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n // Incorporate borders into its offset, since they are outside its content origin\n parentOffset = jQuery(offsetParent).offset();\n parentOffset.top += jQuery.css(offsetParent, \"borderTopWidth\", true);\n parentOffset.left += jQuery.css(offsetParent, \"borderLeftWidth\", true);\n }\n }\n\n // Subtract parent offsets and element margins\n return {\n top: offset.top - parentOffset.top - jQuery.css(elem, \"marginTop\", true),\n left: offset.left - parentOffset.left - jQuery.css(elem, \"marginLeft\", true)\n };\n },\n // This method will return documentElement in the following cases:\n // 1) For the element inside the iframe without offsetParent, this method will return\n // documentElement of the parent window\n // 2) For the hidden or detached element\n // 3) For body or html element, i.e. in case of the html node - it will return itself\n //\n // but those exceptions were never presented as a real life use-cases\n // and might be considered as more preferable results.\n //\n // This logic, however, is not guaranteed and can change at any point in the future\n offsetParent: function () {\n return this.map(function () {\n var offsetParent = this.offsetParent;\n while (offsetParent && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || documentElement;\n });\n }\n });\n\n // Create scrollLeft and scrollTop methods\n jQuery.each({\n scrollLeft: \"pageXOffset\",\n scrollTop: \"pageYOffset\"\n }, function (method, prop) {\n var top = \"pageYOffset\" === prop;\n jQuery.fn[method] = function (val) {\n return access(this, function (elem, method, val) {\n // Coalesce documents and windows\n var win;\n if (isWindow(elem)) {\n win = elem;\n } else if (elem.nodeType === 9) {\n win = elem.defaultView;\n }\n if (val === undefined) {\n return win ? win[prop] : elem[method];\n }\n if (win) {\n win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);\n } else {\n elem[method] = val;\n }\n }, method, val, arguments.length);\n };\n });\n\n // Support: Safari <=7 - 9.1, Chrome <=37 - 49\n // Add the top/left cssHooks using jQuery.fn.position\n // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n // getComputedStyle returns percent when specified for top/left/bottom/right;\n // rather than make the css module depend on the offset module, just check for it here\n jQuery.each([\"top\", \"left\"], function (_i, prop) {\n jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {\n if (computed) {\n computed = curCSS(elem, prop);\n\n // If curCSS returns percentage, fallback to offset\n return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + \"px\" : computed;\n }\n });\n });\n\n // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n jQuery.each({\n Height: \"height\",\n Width: \"width\"\n }, function (name, type) {\n jQuery.each({\n padding: \"inner\" + name,\n content: type,\n \"\": \"outer\" + name\n }, function (defaultExtra, funcName) {\n // Margin is only for outerHeight, outerWidth\n jQuery.fn[funcName] = function (margin, value) {\n var chainable = arguments.length && (defaultExtra || typeof margin !== \"boolean\"),\n extra = defaultExtra || (margin === true || value === true ? \"margin\" : \"border\");\n return access(this, function (elem, type, value) {\n var doc;\n if (isWindow(elem)) {\n // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n return funcName.indexOf(\"outer\") === 0 ? elem[\"inner\" + name] : elem.document.documentElement[\"client\" + name];\n }\n\n // Get document width or height\n if (elem.nodeType === 9) {\n doc = elem.documentElement;\n\n // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n // whichever is greatest\n return Math.max(elem.body[\"scroll\" + name], doc[\"scroll\" + name], elem.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n }\n return value === undefined ?\n // Get width or height on the element, requesting but not forcing parseFloat\n jQuery.css(elem, type, extra) :\n // Set width or height on the element\n jQuery.style(elem, type, value, extra);\n }, type, chainable ? margin : undefined, chainable);\n };\n });\n });\n jQuery.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (_i, type) {\n jQuery.fn[type] = function (fn) {\n return this.on(type, fn);\n };\n });\n jQuery.fn.extend({\n bind: function (types, data, fn) {\n return this.on(types, null, data, fn);\n },\n unbind: function (types, fn) {\n return this.off(types, null, fn);\n },\n delegate: function (selector, types, data, fn) {\n return this.on(types, selector, data, fn);\n },\n undelegate: function (selector, types, fn) {\n // ( namespace ) or ( selector, types [, fn] )\n return arguments.length === 1 ? this.off(selector, \"**\") : this.off(types, selector || \"**\", fn);\n },\n hover: function (fnOver, fnOut) {\n return this.on(\"mouseenter\", fnOver).on(\"mouseleave\", fnOut || fnOver);\n }\n });\n jQuery.each((\"blur focus focusin focusout resize scroll click dblclick \" + \"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" + \"change select submit keydown keypress keyup contextmenu\").split(\" \"), function (_i, name) {\n // Handle event binding\n jQuery.fn[name] = function (data, fn) {\n return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);\n };\n });\n\n // Support: Android <=4.0 only\n // Make sure we trim BOM and NBSP\n // Require that the \"whitespace run\" starts from a non-whitespace\n // to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\n var rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n // Bind a function to a context, optionally partially applying any\n // arguments.\n // jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n // However, it is not slated for removal any time soon\n jQuery.proxy = function (fn, context) {\n var tmp, args, proxy;\n if (typeof context === \"string\") {\n tmp = fn[context];\n context = fn;\n fn = tmp;\n }\n\n // Quick check to determine if target is callable, in the spec\n // this throws a TypeError, but we will just return undefined.\n if (!isFunction(fn)) {\n return undefined;\n }\n\n // Simulated bind\n args = slice.call(arguments, 2);\n proxy = function () {\n return fn.apply(context || this, args.concat(slice.call(arguments)));\n };\n\n // Set the guid of unique handler to the same of original handler, so it can be removed\n proxy.guid = fn.guid = fn.guid || jQuery.guid++;\n return proxy;\n };\n jQuery.holdReady = function (hold) {\n if (hold) {\n jQuery.readyWait++;\n } else {\n jQuery.ready(true);\n }\n };\n jQuery.isArray = Array.isArray;\n jQuery.parseJSON = JSON.parse;\n jQuery.nodeName = nodeName;\n jQuery.isFunction = isFunction;\n jQuery.isWindow = isWindow;\n jQuery.camelCase = camelCase;\n jQuery.type = toType;\n jQuery.now = Date.now;\n jQuery.isNumeric = function (obj) {\n // As of jQuery 3.0, isNumeric is limited to\n // strings and numbers (primitives or objects)\n // that can be coerced to finite numbers (gh-2662)\n var type = jQuery.type(obj);\n return (type === \"number\" || type === \"string\") &&\n // parseFloat NaNs numeric-cast false positives (\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n !isNaN(obj - parseFloat(obj));\n };\n jQuery.trim = function (text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"$1\");\n };\n\n // Register as a named AMD module, since jQuery can be concatenated with other\n // files that may use define, but not via a proper concatenation script that\n // understands anonymous AMD modules. A named AMD is safest and most robust\n // way to register. Lowercase jquery is used because AMD module names are\n // derived from file names, and jQuery is normally delivered in a lowercase\n // file name. Do this after creating the global so that if an AMD module wants\n // to call noConflict to hide this version of jQuery, it will work.\n\n // Note that for maximum portability, libraries that are not jQuery should\n // declare themselves as anonymous modules, and avoid setting a global if an\n // AMD loader is present. jQuery is a special case. For more information, see\n // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n if (typeof define === \"function\" && define.amd) {\n define(\"jquery\", [], function () {\n return jQuery;\n });\n }\n var\n // Map over jQuery in case of overwrite\n _jQuery = window.jQuery,\n // Map over the $ in case of overwrite\n _$ = window.$;\n jQuery.noConflict = function (deep) {\n if (window.$ === jQuery) {\n window.$ = _$;\n }\n if (deep && window.jQuery === jQuery) {\n window.jQuery = _jQuery;\n }\n return jQuery;\n };\n\n // Expose jQuery and $ identifiers, even in AMD\n // (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n // and CommonJS for browser emulators (trac-13566)\n if (typeof noGlobal === \"undefined\") {\n window.jQuery = window.$ = jQuery;\n }\n return jQuery;\n});","var EventListener = /** @class */function () {\n function EventListener(eventTarget, eventName, eventOptions) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n };\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n };\n // Binding observer delegate\n /** @hidden */\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: false,\n configurable: true\n });\n return EventListener;\n}();\nexport { EventListener };\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function () {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\nvar Dispatcher = /** @class */function () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function () {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n // Binding observer delegate\n /** @hidden */\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n };\n // Error handling\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n this.application.handleError(error, \"Error \" + message, detail);\n };\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n };\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName, eventOptions) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var cacheKey = this.cacheKey(eventName, eventOptions);\n var eventListener = eventListenerMap.get(cacheKey);\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n return eventListener;\n };\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName, eventOptions) {\n var eventListener = new EventListener(eventTarget, eventName, eventOptions);\n if (this.started) {\n eventListener.connect();\n }\n return eventListener;\n };\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n return eventListenerMap;\n };\n Dispatcher.prototype.cacheKey = function (eventName, eventOptions) {\n var parts = [eventName];\n Object.keys(eventOptions).sort().forEach(function (key) {\n parts.push(\"\" + (eventOptions[key] ? \"\" : \"!\") + key);\n });\n return parts.join(\":\");\n };\n return Dispatcher;\n}();\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 768 9 98\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nexport function parseActionDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\n };\n}\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce(function (options, token) {\n var _a;\n return Object.assign(options, (_a = {}, _a[token.replace(/^!/, \"\")] = !/^!/.test(token), _a));\n }, {});\n}\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseActionDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\nvar Action = /** @class */function () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n };\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function () {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: false,\n configurable: true\n });\n return Action;\n}();\nexport { Action };\nvar defaultEventNames = {\n \"a\": function (e) {\n return \"click\";\n },\n \"button\": function (e) {\n return \"click\";\n },\n \"form\": function (e) {\n return \"submit\";\n },\n \"input\": function (e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\";\n },\n \"select\": function (e) {\n return \"change\";\n },\n \"textarea\": function (e) {\n return \"input\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\nfunction error(message) {\n throw new Error(message);\n}","var Binding = /** @class */function () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function () {\n return this.action.index;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function () {\n return this.action.eventTarget;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventOptions\", {\n get: function () {\n return this.action.eventOptions;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function () {\n return this.action.eventName;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function () {\n var method = this.controller[this.methodName];\n if (typeof method == \"function\") {\n return method;\n }\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: false,\n configurable: true\n });\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return this.scope.containsElement(this.action.element);\n }\n };\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function () {\n return this.action.methodName;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: false,\n configurable: true\n });\n return Binding;\n}();\nexport { Binding };","var ElementObserver = /** @class */function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n };\n // Mutation record processing\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n };\n // Element matching\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n return this.delegate.matchElementsInTree(tree);\n };\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n };\n // Element tracking\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n return ElementObserver;\n}();\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\nvar AttributeObserver = /** @class */function () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function () {\n return this.elementObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function () {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: false,\n configurable: true\n });\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function () {\n return this.elementObserver.started;\n },\n enumerable: false,\n configurable: true\n });\n // Element observer delegate\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n return AttributeObserver;\n}();\nexport { AttributeObserver };","var StringMapObserver = /** @class */function () {\n function StringMapObserver(element, delegate) {\n var _this = this;\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n StringMapObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true\n });\n this.refresh();\n }\n };\n StringMapObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n StringMapObserver.prototype.refresh = function () {\n if (this.started) {\n for (var _i = 0, _a = this.knownAttributeNames; _i < _a.length; _i++) {\n var attributeName = _a[_i];\n this.refreshAttribute(attributeName);\n }\n }\n };\n // Mutation record processing\n StringMapObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n StringMapObserver.prototype.processMutation = function (mutation) {\n var attributeName = mutation.attributeName;\n if (attributeName) {\n this.refreshAttribute(attributeName);\n }\n };\n // State tracking\n StringMapObserver.prototype.refreshAttribute = function (attributeName) {\n var key = this.delegate.getStringMapKeyForAttribute(attributeName);\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n var value = this.element.getAttribute(attributeName);\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key);\n }\n if (value == null) {\n this.stringMap.delete(attributeName);\n this.stringMapKeyRemoved(key, attributeName);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n };\n StringMapObserver.prototype.stringMapKeyAdded = function (key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n };\n StringMapObserver.prototype.stringMapValueChanged = function (value, key) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key);\n }\n };\n StringMapObserver.prototype.stringMapKeyRemoved = function (key, attributeName) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName);\n }\n };\n Object.defineProperty(StringMapObserver.prototype, \"knownAttributeNames\", {\n get: function () {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StringMapObserver.prototype, \"currentAttributeNames\", {\n get: function () {\n return Array.from(this.element.attributes).map(function (attribute) {\n return attribute.name;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StringMapObserver.prototype, \"recordedAttributeNames\", {\n get: function () {\n return Array.from(this.stringMap.keys());\n },\n enumerable: false,\n configurable: true\n });\n return StringMapObserver;\n}();\nexport { StringMapObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}","import { add, del } from \"./set_operations\";\nvar Multimap = /** @class */function () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function () {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: false,\n configurable: true\n });\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n return Multimap;\n}();\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\nvar IndexedMultimap = /** @class */function (_super) {\n __extends(IndexedMultimap, _super);\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n _this.keysByValue = new Map();\n return _this;\n }\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function () {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: false,\n configurable: true\n });\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n add(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n del(this.keysByValue, value, key);\n };\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n return IndexedMultimap;\n}(Multimap);\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\nvar TokenListObserver = /** @class */function () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function () {\n return this.attributeObserver.started;\n },\n enumerable: false,\n configurable: true\n });\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function () {\n return this.attributeObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.attributeObserver.attributeName;\n },\n enumerable: false,\n configurable: true\n });\n // Attribute observer delegate\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n return TokenListObserver;\n}();\nexport { TokenListObserver };\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\nvar ValueListObserver = /** @class */function () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function () {\n return this.tokenListObserver.started;\n },\n enumerable: false,\n configurable: true\n });\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function () {\n return this.tokenListObserver.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function () {\n return this.tokenListObserver.attributeName;\n },\n enumerable: false,\n configurable: true\n });\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n return parseResult;\n };\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n return valuesByToken;\n };\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n return ValueListObserver;\n}();\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar BindingObserver = /** @class */function () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function () {\n return this.context.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function () {\n return this.schema.actionAttribute;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function () {\n return this.context.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function () {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: false,\n configurable: true\n });\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n };\n // Value observer delegate\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n return BindingObserver;\n}();\nexport { BindingObserver };","import { StringMapObserver } from \"@stimulus/mutation-observers\";\nvar ValueObserver = /** @class */function () {\n function ValueObserver(context, receiver) {\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n this.invokeChangedCallbacksForDefaultValues();\n }\n ValueObserver.prototype.start = function () {\n this.stringMapObserver.start();\n };\n ValueObserver.prototype.stop = function () {\n this.stringMapObserver.stop();\n };\n Object.defineProperty(ValueObserver.prototype, \"element\", {\n get: function () {\n return this.context.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ValueObserver.prototype, \"controller\", {\n get: function () {\n return this.context.controller;\n },\n enumerable: false,\n configurable: true\n });\n // String map observer delegate\n ValueObserver.prototype.getStringMapKeyForAttribute = function (attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n };\n ValueObserver.prototype.stringMapValueChanged = function (attributeValue, name) {\n this.invokeChangedCallbackForValue(name);\n };\n ValueObserver.prototype.invokeChangedCallbacksForDefaultValues = function () {\n for (var _i = 0, _a = this.valueDescriptors; _i < _a.length; _i++) {\n var _b = _a[_i],\n key = _b.key,\n name_1 = _b.name,\n defaultValue = _b.defaultValue;\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallbackForValue(name_1);\n }\n }\n };\n ValueObserver.prototype.invokeChangedCallbackForValue = function (name) {\n var methodName = name + \"Changed\";\n var method = this.receiver[methodName];\n if (typeof method == \"function\") {\n var value = this.receiver[name];\n method.call(this.receiver, value);\n }\n };\n Object.defineProperty(ValueObserver.prototype, \"valueDescriptors\", {\n get: function () {\n var valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(function (key) {\n return valueDescriptorMap[key];\n });\n },\n enumerable: false,\n configurable: true\n });\n return ValueObserver;\n}();\nexport { ValueObserver };","import { BindingObserver } from \"./binding_observer\";\nimport { ValueObserver } from \"./value_observer\";\nvar Context = /** @class */function () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n this.valueObserver.start();\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n this.valueObserver.stop();\n this.bindingObserver.stop();\n };\n Object.defineProperty(Context.prototype, \"application\", {\n get: function () {\n return this.module.application;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function () {\n return this.module.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function () {\n return this.application.dispatcher;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function () {\n return this.element.parentElement;\n },\n enumerable: false,\n configurable: true\n });\n // Error handling\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n return Context;\n}();\nexport { Context };","export function readInheritableStaticArrayValues(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (values, constructor) {\n getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) {\n return values.add(name);\n });\n return values;\n }, new Set()));\n}\nexport function readInheritableStaticObjectPairs(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce(function (pairs, constructor) {\n pairs.push.apply(pairs, getOwnStaticObjectPairs(constructor, propertyName));\n return pairs;\n }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n var definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n var definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(function (key) {\n return [key, definition[key]];\n }) : [];\n}","var __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n};\nimport { readInheritableStaticArrayValues } from \"./inheritable_statics\";\n/** @hidden */\nexport function bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n var shadowConstructor = extend(constructor);\n var shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n var blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce(function (blessedProperties, blessing) {\n var properties = blessing(constructor);\n for (var key in properties) {\n var descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n return blessedProperties;\n }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce(function (shadowProperties, key) {\n var _a;\n var descriptor = getShadowedDescriptor(prototype, properties, key);\n if (descriptor) {\n Object.assign(shadowProperties, (_a = {}, _a[key] = descriptor, _a));\n }\n return shadowProperties;\n }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n var shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n if (!shadowedByValue) {\n var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n return descriptor;\n }\n}\nvar getOwnKeys = function () {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return function (object) {\n return __spreadArrays(Object.getOwnPropertyNames(object), Object.getOwnPropertySymbols(object));\n };\n } else {\n return Object.getOwnPropertyNames;\n }\n}();\nvar extend = function () {\n function extendWithReflect(constructor) {\n function extended() {\n var _newTarget = this && this instanceof extended ? this.constructor : void 0;\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\n }\n function testReflectExtension() {\n var a = function () {\n this.a.call(this);\n };\n var b = extendWithReflect(a);\n b.prototype.a = function () {};\n return new b();\n }\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return (/** @class */function (_super) {\n __extends(extended, _super);\n function extended() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return extended;\n }(constructor)\n );\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\nvar Module = /** @class */function () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function () {\n return this.definition.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function () {\n return this.definition.controllerConstructor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function () {\n return Array.from(this.connectedContexts);\n },\n enumerable: false,\n configurable: true\n });\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n return context;\n };\n return Module;\n}();\nexport { Module };","import { bless } from \"./blessing\";\n/** @hidden */\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}","var ClassMap = /** @class */function () {\n function ClassMap(scope) {\n this.scope = scope;\n }\n ClassMap.prototype.has = function (name) {\n return this.data.has(this.getDataKey(name));\n };\n ClassMap.prototype.get = function (name) {\n return this.data.get(this.getDataKey(name));\n };\n ClassMap.prototype.getAttributeName = function (name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n };\n ClassMap.prototype.getDataKey = function (name) {\n return name + \"-class\";\n };\n Object.defineProperty(ClassMap.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: false,\n configurable: true\n });\n return ClassMap;\n}();\nexport { ClassMap };","export function camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, function (_, char) {\n return char.toUpperCase();\n });\n}\nexport function capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\nexport function dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\" + char.toLowerCase();\n });\n}","import { dasherize } from \"./string_helpers\";\nvar DataMap = /** @class */function () {\n function DataMap(scope) {\n this.scope = scope;\n }\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n DataMap.prototype.get = function (key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n };\n DataMap.prototype.set = function (key, value) {\n var name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n };\n DataMap.prototype.has = function (key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n };\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n var name_1 = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name_1);\n return true;\n } else {\n return false;\n }\n };\n DataMap.prototype.getAttributeNameForKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n return DataMap;\n}();\nexport { DataMap };","var Guide = /** @class */function () {\n function Guide(logger) {\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n Guide.prototype.warn = function (object, key, message) {\n var warnedKeys = this.warnedKeysByObject.get(object);\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n };\n return Guide;\n}();\nexport { Guide };","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","var __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n};\nimport { attributeValueContainsToken } from \"./selectors\";\nvar TargetSet = /** @class */function () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function () {\n return this.scope.schema;\n },\n enumerable: false,\n configurable: true\n });\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n TargetSet.prototype.find = function () {\n var _this = this;\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n return targetNames.reduce(function (target, targetName) {\n return target || _this.findTarget(targetName) || _this.findLegacyTarget(targetName);\n }, undefined);\n };\n TargetSet.prototype.findAll = function () {\n var _this = this;\n var targetNames = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n return targetNames.reduce(function (targets, targetName) {\n return __spreadArrays(targets, _this.findAllTargets(targetName), _this.findAllLegacyTargets(targetName));\n }, []);\n };\n TargetSet.prototype.findTarget = function (targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n };\n TargetSet.prototype.findAllTargets = function (targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n };\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var attributeName = \"data-\" + this.identifier + \"-target\";\n return attributeValueContainsToken(attributeName, targetName);\n };\n TargetSet.prototype.findLegacyTarget = function (targetName) {\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n };\n TargetSet.prototype.findAllLegacyTargets = function (targetName) {\n var _this = this;\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(function (element) {\n return _this.deprecate(element, targetName);\n });\n };\n TargetSet.prototype.getLegacySelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n TargetSet.prototype.deprecate = function (element, targetName) {\n if (element) {\n var identifier = this.identifier;\n var attributeName = this.schema.targetAttribute;\n this.guide.warn(element, \"target:\" + targetName, \"Please replace \" + attributeName + \"=\\\"\" + identifier + \".\" + targetName + \"\\\" with data-\" + identifier + \"-target=\\\"\" + targetName + \"\\\". \" + (\"The \" + attributeName + \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n }\n return element;\n };\n Object.defineProperty(TargetSet.prototype, \"guide\", {\n get: function () {\n return this.scope.guide;\n },\n enumerable: false,\n configurable: true\n });\n return TargetSet;\n}();\nexport { TargetSet };","var __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n};\nimport { ClassMap } from \"./class_map\";\nimport { DataMap } from \"./data_map\";\nimport { Guide } from \"./guide\";\nimport { attributeValueContainsToken } from \"./selectors\";\nimport { TargetSet } from \"./target_set\";\nvar Scope = /** @class */function () {\n function Scope(schema, element, identifier, logger) {\n var _this = this;\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n this.containsElement = function (element) {\n return element.closest(_this.controllerSelector) === _this.element;\n };\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n }\n Scope.prototype.findElement = function (selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n };\n Scope.prototype.findAllElements = function (selector) {\n return __spreadArrays(this.element.matches(selector) ? [this.element] : [], this.queryElements(selector).filter(this.containsElement));\n };\n Scope.prototype.queryElements = function (selector) {\n return Array.from(this.element.querySelectorAll(selector));\n };\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function () {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: false,\n configurable: true\n });\n return Scope;\n}();\nexport { Scope };","import { ValueListObserver } from \"@stimulus/mutation-observers\";\nvar ScopeObserver = /** @class */function () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: false,\n configurable: true\n });\n // Value observer delegate\n /** @hidden */\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n return scope;\n };\n /** @hidden */\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n return scopesByIdentifier;\n };\n return ScopeObserver;\n}();\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { Scope } from \"./scope\";\nimport { ScopeObserver } from \"./scope_observer\";\nvar Router = /** @class */function () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n Object.defineProperty(Router.prototype, \"element\", {\n get: function () {\n return this.application.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function () {\n return this.application.schema;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"logger\", {\n get: function () {\n return this.application.logger;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function () {\n return this.schema.controllerAttribute;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function () {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function () {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n this.disconnectModule(module);\n }\n };\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n };\n // Error handler delegate\n /** @hidden */\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n };\n // Scope observer delegate\n /** @hidden */\n Router.prototype.createScopeForElementAndIdentifier = function (element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n };\n /** @hidden */\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n if (module) {\n module.disconnectContextForScope(scope);\n }\n };\n // Modules\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n return Router;\n}();\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\nvar __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n};\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\nvar Application = /** @class */function () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n if (schema === void 0) {\n schema = defaultSchema;\n }\n this.logger = console;\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4 /*yield*/, domReady()];\n case 1:\n _a.sent();\n this.dispatcher.start();\n this.router.start();\n return [2 /*return*/];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.dispatcher.stop();\n this.router.stop();\n };\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n Application.prototype.load = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var definitions = Array.isArray(head) ? head : __spreadArrays([head], rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n Application.prototype.unload = function (head) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var identifiers = Array.isArray(head) ? head : __spreadArrays([head], rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function () {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: false,\n configurable: true\n });\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n };\n // Error handling\n Application.prototype.handleError = function (error, message, detail) {\n this.logger.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n return Application;\n}();\nexport { Application };\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\nexport function ClassPropertiesBlessing(constructor) {\n var classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce(function (properties, classDefinition) {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\nfunction propertiesForClassDefinition(key) {\n var _a;\n var name = key + \"Class\";\n return _a = {}, _a[name] = {\n get: function () {\n var classes = this.classes;\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n var attribute = classes.getAttributeName(key);\n throw new Error(\"Missing attribute \\\"\" + attribute + \"\\\"\");\n }\n }\n }, _a[\"has\" + capitalize(name)] = {\n get: function () {\n return this.classes.has(key);\n }\n }, _a;\n}","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\nexport function TargetPropertiesBlessing(constructor) {\n var targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce(function (properties, targetDefinition) {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n var _a;\n return _a = {}, _a[name + \"Target\"] = {\n get: function () {\n var target = this.targets.find(name);\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function () {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function () {\n return this.targets.has(name);\n }\n }, _a;\n}","import { readInheritableStaticObjectPairs } from \"./inheritable_statics\";\nimport { camelize, capitalize, dasherize } from \"./string_helpers\";\n/** @hidden */\nexport function ValuePropertiesBlessing(constructor) {\n var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n var propertyDescriptorMap = {\n valueDescriptorMap: {\n get: function () {\n var _this = this;\n return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n var _a;\n var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n var attributeName = _this.data.getAttributeNameForKey(valueDescriptor.key);\n return Object.assign(result, (_a = {}, _a[attributeName] = valueDescriptor, _a));\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n/** @hidden */\nexport function propertiesForValueDefinitionPair(valueDefinitionPair) {\n var _a;\n var definition = parseValueDefinitionPair(valueDefinitionPair);\n var type = definition.type,\n key = definition.key,\n name = definition.name;\n var read = readers[type],\n write = writers[type] || writers.default;\n return _a = {}, _a[name] = {\n get: function () {\n var value = this.data.get(key);\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set: function (value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n }, _a[\"has\" + capitalize(name)] = {\n get: function () {\n return this.data.has(key);\n }\n }, _a;\n}\nfunction parseValueDefinitionPair(_a) {\n var token = _a[0],\n typeConstant = _a[1];\n var type = parseValueTypeConstant(typeConstant);\n return valueDescriptorForTokenAndType(token, type);\n}\nfunction parseValueTypeConstant(typeConstant) {\n switch (typeConstant) {\n case Array:\n return \"array\";\n case Boolean:\n return \"boolean\";\n case Number:\n return \"number\";\n case Object:\n return \"object\";\n case String:\n return \"string\";\n }\n throw new Error(\"Unknown value type constant \\\"\" + typeConstant + \"\\\"\");\n}\nfunction valueDescriptorForTokenAndType(token, type) {\n var key = dasherize(token) + \"-value\";\n return {\n type: type,\n key: key,\n name: camelize(key),\n get defaultValue() {\n return defaultValuesByType[type];\n }\n };\n}\nvar defaultValuesByType = {\n get array() {\n return [];\n },\n boolean: false,\n number: 0,\n get object() {\n return {};\n },\n string: \"\"\n};\nvar readers = {\n array: function (value) {\n var array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n return array;\n },\n boolean: function (value) {\n return !(value == \"0\" || value == \"false\");\n },\n number: function (value) {\n return parseFloat(value);\n },\n object: function (value) {\n var object = JSON.parse(value);\n if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"Expected object\");\n }\n return object;\n },\n string: function (value) {\n return value;\n }\n};\nvar writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\nfunction writeString(value) {\n return \"\" + value;\n}","import { ClassPropertiesBlessing } from \"./class_properties\";\nimport { TargetPropertiesBlessing } from \"./target_properties\";\nimport { ValuePropertiesBlessing } from \"./value_properties\";\nvar Controller = /** @class */function () {\n function Controller(context) {\n this.context = context;\n }\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function () {\n return this.context.application;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function () {\n return this.context.scope;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function () {\n return this.scope.element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function () {\n return this.scope.identifier;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function () {\n return this.scope.targets;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"classes\", {\n get: function () {\n return this.scope.classes;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function () {\n return this.scope.data;\n },\n enumerable: false,\n configurable: true\n });\n Controller.prototype.initialize = function () {\n // Override in your subclass to set up initial controller state\n };\n Controller.prototype.connect = function () {\n // Override in your subclass to respond when the controller is connected to the DOM\n };\n Controller.prototype.disconnect = function () {\n // Override in your subclass to respond when the controller is disconnected from the DOM\n };\n Controller.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\n Controller.targets = [];\n Controller.values = {};\n return Controller;\n}();\nexport { Controller };","/*!\n * Bootstrap v4.6.2 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n})(this, function (exports, $, Popper) {\n 'use strict';\n\n function _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {\n 'default': e\n };\n }\n var $__default = /*#__PURE__*/_interopDefaultLegacy($);\n var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);\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 function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n function _extends() {\n _extends = Object.assign ? Object.assign.bind() : 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 }\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n _setPrototypeOf(subClass, superClass);\n }\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * Private TransitionEnd Helpers\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($__default[\"default\"](event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n function transitionEndEmulator(duration) {\n var _this = this;\n var called = false;\n $__default[\"default\"](this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n function setTransitionEndSupport() {\n $__default[\"default\"].fn.emulateTransitionEnd = transitionEndEmulator;\n $__default[\"default\"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * Public Util API\n */\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (_) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n var transitionDuration = $__default[\"default\"](element).css('transition-duration');\n var transitionDelay = $__default[\"default\"](element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $__default[\"default\"](element).trigger(TRANSITION_END);\n },\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n if (!element.parentNode) {\n return null;\n }\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n var version = $__default[\"default\"].fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * Constants\n */\n\n var NAME$a = 'alert';\n var VERSION$a = '4.6.2';\n var DATA_KEY$a = 'bs.alert';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$a = $__default[\"default\"].fn[NAME$a];\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_SHOW$7 = 'show';\n var EVENT_CLOSE = \"close\" + EVENT_KEY$a;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY$a;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$a + DATA_API_KEY$7;\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n /**\n * Class definition\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n if (element) {\n rootElement = this._getRootElement(element);\n }\n var customEvent = this._triggerCloseEvent(rootElement);\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n this._removeElement(rootElement);\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$a);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n if (selector) {\n parent = document.querySelector(selector);\n }\n if (!parent) {\n parent = $__default[\"default\"](element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n return parent;\n };\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $__default[\"default\"].Event(EVENT_CLOSE);\n $__default[\"default\"](element).trigger(closeEvent);\n return closeEvent;\n };\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n $__default[\"default\"](element).removeClass(CLASS_NAME_SHOW$7);\n if (!$__default[\"default\"](element).hasClass(CLASS_NAME_FADE$5)) {\n this._destroyElement(element);\n return;\n }\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $__default[\"default\"](element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n _proto._destroyElement = function _destroyElement(element) {\n $__default[\"default\"](element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$a);\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY$a, data);\n }\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n alertInstance.close(this);\n };\n };\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }]);\n return Alert;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$a] = Alert._jQueryInterface;\n $__default[\"default\"].fn[NAME$a].Constructor = Alert;\n $__default[\"default\"].fn[NAME$a].noConflict = function () {\n $__default[\"default\"].fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Alert._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$9 = 'button';\n var VERSION$9 = '4.6.2';\n var DATA_KEY$9 = 'bs.button';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $__default[\"default\"].fn[NAME$9];\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$9 + DATA_API_KEY$6 + \" \" + (\"blur\" + EVENT_KEY$9 + DATA_API_KEY$6);\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$9 + DATA_API_KEY$6;\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_BUTTON = '.btn';\n /**\n * Class definition\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n this.shouldAvoidTriggerChange = false;\n } // Getters\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $__default[\"default\"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2);\n if (activeElement) {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$3);\n }\n }\n }\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3);\n }\n if (!this.shouldAvoidTriggerChange) {\n $__default[\"default\"](input).trigger('change');\n }\n }\n input.focus();\n addAriaPressed = false;\n }\n }\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3));\n }\n if (triggerChangeEvent) {\n $__default[\"default\"](this._element).toggleClass(CLASS_NAME_ACTIVE$3);\n }\n }\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$9);\n if (!data) {\n data = new Button(this);\n $element.data(DATA_KEY$9, data);\n }\n data.shouldAvoidTriggerChange = avoidTriggerChange;\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n return Button;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n if (!$__default[\"default\"](button).hasClass(CLASS_NAME_BUTTON)) {\n button = $__default[\"default\"](button).closest(SELECTOR_BUTTON)[0];\n }\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') {\n Button._jQueryInterface.call($__default[\"default\"](button), 'toggle', initialButton.tagName === 'INPUT');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $__default[\"default\"](event.target).closest(SELECTOR_BUTTON)[0];\n $__default[\"default\"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$2, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n } // find all button toggles\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4));\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE$3);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE$3);\n }\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$9] = Button._jQueryInterface;\n $__default[\"default\"].fn[NAME$9].Constructor = Button;\n $__default[\"default\"].fn[NAME$9].noConflict = function () {\n $__default[\"default\"].fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Button._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$8 = 'carousel';\n var VERSION$8 = '4.6.2';\n var DATA_KEY$8 = 'bs.carousel';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $__default[\"default\"].fn[NAME$8];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$8;\n var EVENT_SLID = \"slid\" + EVENT_KEY$8;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$8;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$8;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$8;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$8;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$8;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$8;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$8;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$8;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$8 + DATA_API_KEY$5;\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var Default$7 = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType$7 = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * Class definition\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n this._addEventListeners();\n } // Getters\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n _proto.nextWhenVisible = function nextWhenVisible() {\n var $element = $__default[\"default\"](this._element); // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n\n if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {\n this.next();\n }\n };\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n clearInterval(this._interval);\n this._interval = null;\n };\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n if (this._config.interval && !this._isPaused) {\n this._updateInterval();\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n _proto.to = function to(index) {\n var _this = this;\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n var activeIndex = this._getItemIndex(this._activeElement);\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n $__default[\"default\"](this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n this._slide(direction, this._items[index]);\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"](this._element).off(EVENT_KEY$8);\n $__default[\"default\"].removeData(this._element, DATA_KEY$8);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, config);\n Util.typeCheckConfig(NAME$8, config, DefaultType$7);\n return config;\n };\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n if (direction < 0) {\n this.next();\n }\n };\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n if (this._config.keyboard) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n if (this._config.pause === 'hover') {\n $__default[\"default\"](this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n if (!this._touchSupported) {\n return;\n }\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;\n };\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n _this3._handleSwipe();\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n $__default[\"default\"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n if (this._pointerEvent) {\n $__default[\"default\"](this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $__default[\"default\"](this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $__default[\"default\"](this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n var activeIndex = this._getItemIndex(activeElement);\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n var slideEvent = $__default[\"default\"].Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $__default[\"default\"](this._element).trigger(slideEvent);\n return slideEvent;\n };\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $__default[\"default\"](indicators).removeClass(CLASS_NAME_ACTIVE$2);\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n if (nextIndicator) {\n $__default[\"default\"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2);\n }\n }\n };\n _proto._updateInterval = function _updateInterval() {\n var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n if (!element) {\n return;\n }\n var elementInterval = parseInt(element.getAttribute('data-interval'), 10);\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = elementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n };\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n var activeElementIndex = this._getItemIndex(activeElement);\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n var nextElementIndex = this._getItemIndex(nextElement);\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n if (nextElement && $__default[\"default\"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) {\n this._isSliding = false;\n return;\n }\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n this._isSliding = true;\n if (isCycling) {\n this.pause();\n }\n this._setActiveIndicatorElement(nextElement);\n this._activeElement = nextElement;\n var slidEvent = $__default[\"default\"].Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SLIDE)) {\n $__default[\"default\"](nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $__default[\"default\"](activeElement).addClass(directionalClassName);\n $__default[\"default\"](nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $__default[\"default\"](activeElement).one(Util.TRANSITION_END, function () {\n $__default[\"default\"](nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $__default[\"default\"](_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $__default[\"default\"](activeElement).removeClass(CLASS_NAME_ACTIVE$2);\n $__default[\"default\"](nextElement).addClass(CLASS_NAME_ACTIVE$2);\n this._isSliding = false;\n $__default[\"default\"](this._element).trigger(slidEvent);\n }\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$8);\n var _config = _extends({}, Default$7, $__default[\"default\"](this).data());\n if (typeof config === 'object') {\n _config = _extends({}, _config, config);\n }\n var action = typeof config === 'string' ? config : _config.slide;\n if (!data) {\n data = new Carousel(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$8, data);\n }\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n if (!selector) {\n return;\n }\n var target = $__default[\"default\"](selector)[0];\n if (!target || !$__default[\"default\"](target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n var config = _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n var slideIndex = this.getAttribute('data-slide-to');\n if (slideIndex) {\n config.interval = false;\n }\n Carousel._jQueryInterface.call($__default[\"default\"](target), config);\n if (slideIndex) {\n $__default[\"default\"](target).data(DATA_KEY$8).to(slideIndex);\n }\n event.preventDefault();\n };\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n return Carousel;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $__default[\"default\"](carousels[i]);\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$8] = Carousel._jQueryInterface;\n $__default[\"default\"].fn[NAME$8].Constructor = Carousel;\n $__default[\"default\"].fn[NAME$8].noConflict = function () {\n $__default[\"default\"].fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return Carousel._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$7 = 'collapse';\n var VERSION$7 = '4.6.2';\n var DATA_KEY$7 = 'bs.collapse';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$7 = $__default[\"default\"].fn[NAME$7];\n var CLASS_NAME_SHOW$6 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$7;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$7;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$7;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$7;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$7 + DATA_API_KEY$4;\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"collapse\"]';\n var Default$6 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$6 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3));\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n this._triggerArray.push(elem);\n }\n }\n this._parent = this._config.parent ? this._getParent() : null;\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n this.hide();\n } else {\n this.show();\n }\n };\n _proto.show = function show() {\n var _this = this;\n if (this._isTransitioning || $__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n var actives;\n var activesData;\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n if (actives.length === 0) {\n actives = null;\n }\n }\n if (actives) {\n activesData = $__default[\"default\"](actives).not(this._selector).data(DATA_KEY$7);\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n var startEvent = $__default[\"default\"].Event(EVENT_SHOW$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n if (actives) {\n Collapse._jQueryInterface.call($__default[\"default\"](actives).not(this._selector), 'hide');\n if (!activesData) {\n $__default[\"default\"](actives).data(DATA_KEY$7, null);\n }\n }\n var dimension = this._getDimension();\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n if (this._triggerArray.length) {\n $__default[\"default\"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n this.setTransitioning(true);\n var complete = function complete() {\n $__default[\"default\"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n _this._element.style[dimension] = '';\n _this.setTransitioning(false);\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN$4);\n };\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n _proto.hide = function hide() {\n var _this2 = this;\n if (this._isTransitioning || !$__default[\"default\"](this._element).hasClass(CLASS_NAME_SHOW$6)) {\n return;\n }\n var startEvent = $__default[\"default\"].Event(EVENT_HIDE$4);\n $__default[\"default\"](this._element).trigger(startEvent);\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n var dimension = this._getDimension();\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $__default[\"default\"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$6);\n var triggerArrayLength = this._triggerArray.length;\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n if (selector !== null) {\n var $elem = $__default[\"default\"]([].slice.call(document.querySelectorAll(selector)));\n if (!$elem.hasClass(CLASS_NAME_SHOW$6)) {\n $__default[\"default\"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n this.setTransitioning(true);\n var complete = function complete() {\n _this2.setTransitioning(false);\n $__default[\"default\"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4);\n };\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$7);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$7, config, DefaultType$6);\n return config;\n };\n _proto._getDimension = function _getDimension() {\n var hasWidth = $__default[\"default\"](this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n _proto._getParent = function _getParent() {\n var _this3 = this;\n var parent;\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $__default[\"default\"](children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $__default[\"default\"](element).hasClass(CLASS_NAME_SHOW$6);\n if (triggerArray.length) {\n $__default[\"default\"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$7);\n var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {});\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n if (!data) {\n data = new Collapse(this, _config);\n $element.data(DATA_KEY$7, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n return Collapse;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n var $trigger = $__default[\"default\"](this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $__default[\"default\"](selectors).each(function () {\n var $target = $__default[\"default\"](this);\n var data = $target.data(DATA_KEY$7);\n var config = data ? 'toggle' : $trigger.data();\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$7] = Collapse._jQueryInterface;\n $__default[\"default\"].fn[NAME$7].Constructor = Collapse;\n $__default[\"default\"].fn[NAME$7].noConflict = function () {\n $__default[\"default\"].fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Collapse._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$6 = 'dropdown';\n var VERSION$6 = '4.6.2';\n var DATA_KEY$6 = 'bs.dropdown';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$6 = $__default[\"default\"].fn[NAME$6];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE$1);\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_SHOW$5 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$6;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$6;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$6;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$6;\n var EVENT_CLICK = \"click\" + EVENT_KEY$6;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$6 + DATA_API_KEY$3;\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$5 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$5 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * Class definition\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n this._addEventListeners();\n } // Getters\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n var isActive = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5);\n Dropdown._clearMenus();\n if (isActive) {\n return;\n }\n this.show(true);\n };\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$3, relatedTarget);\n var parent = Dropdown._getParentFromElement(this._element);\n $__default[\"default\"](parent).trigger(showEvent);\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Totally disable Popper for Dropdowns in Navbar\n\n if (!this._inNavbar && usePopper) {\n // Check for Popper dependency\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n var referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n if (this._config.boundary !== 'scrollParent') {\n $__default[\"default\"](parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n this._popper = new Popper__default[\"default\"](referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement && $__default[\"default\"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_SHOWN$3, relatedTarget));\n };\n _proto.hide = function hide() {\n if (this._element.disabled || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default[\"default\"](this._menu).hasClass(CLASS_NAME_SHOW$5)) {\n return;\n }\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n var parent = Dropdown._getParentFromElement(this._element);\n $__default[\"default\"](parent).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n if (this._popper) {\n this._popper.destroy();\n }\n $__default[\"default\"](this._menu).toggleClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$6);\n $__default[\"default\"](this._element).off(EVENT_KEY$6);\n this._element = null;\n this._menu = null;\n if (this._popper !== null) {\n this._popper.destroy();\n this._popper = null;\n }\n };\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n $__default[\"default\"](this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n _this.toggle();\n });\n };\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $__default[\"default\"](this._element).data(), config);\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n return config;\n };\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n return this._menu;\n };\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $__default[\"default\"](this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($__default[\"default\"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n return placement;\n };\n _proto._detectNavbar = function _detectNavbar() {\n return $__default[\"default\"](this._element).closest('.navbar').length > 0;\n };\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n var offset = {};\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n return offset;\n };\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$6);\n var _config = typeof config === 'object' ? config : null;\n if (!data) {\n data = new Dropdown(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$6, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n var context = $__default[\"default\"](toggles[i]).data(DATA_KEY$6);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n if (!context) {\n continue;\n }\n var dropdownMenu = context._menu;\n if (!$__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5)) {\n continue;\n }\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default[\"default\"].contains(parent, event.target)) {\n continue;\n }\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$3, relatedTarget);\n $__default[\"default\"](parent).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n toggles[i].setAttribute('aria-expanded', 'false');\n if (context._popper) {\n context._popper.destroy();\n }\n $__default[\"default\"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5);\n $__default[\"default\"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default[\"default\"].Event(EVENT_HIDDEN$3, relatedTarget));\n }\n };\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n if (selector) {\n parent = document.querySelector(selector);\n }\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default[\"default\"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n if (this.disabled || $__default[\"default\"](this).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n var parent = Dropdown._getParentFromElement(this);\n var isActive = $__default[\"default\"](parent).hasClass(CLASS_NAME_SHOW$5);\n if (!isActive && event.which === ESCAPE_KEYCODE$1) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) {\n if (event.which === ESCAPE_KEYCODE$1) {\n $__default[\"default\"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n $__default[\"default\"](this).trigger('click');\n return;\n }\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $__default[\"default\"](item).is(':visible');\n });\n if (items.length === 0) {\n return;\n }\n var index = items.indexOf(event.target);\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n if (index < 0) {\n index = 0;\n }\n items[index].focus();\n };\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n return Dropdown;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n Dropdown._jQueryInterface.call($__default[\"default\"](this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$6] = Dropdown._jQueryInterface;\n $__default[\"default\"].fn[NAME$6].Constructor = Dropdown;\n $__default[\"default\"].fn[NAME$6].noConflict = function () {\n $__default[\"default\"].fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.6.2';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $__default[\"default\"].fn[NAME$5];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$2;\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n var Default$4 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$4 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n /**\n * Class definition\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n _proto.show = function show(relatedTarget) {\n var _this = this;\n if (this._isShown || this._isTransitioning) {\n return;\n }\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $__default[\"default\"](this._element).trigger(showEvent);\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n this._isShown = true;\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n this._isTransitioning = true;\n }\n this._checkScrollbar();\n this._setScrollbar();\n this._adjustDialog();\n this._setEscapeEvent();\n this._setResizeEvent();\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) {\n return _this.hide(event);\n });\n $__default[\"default\"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $__default[\"default\"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($__default[\"default\"](event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n _proto.hide = function hide(event) {\n var _this2 = this;\n if (event) {\n event.preventDefault();\n }\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$2);\n $__default[\"default\"](this._element).trigger(hideEvent);\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n this._isShown = false;\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n if (transition) {\n this._isTransitioning = true;\n }\n this._setEscapeEvent();\n this._setResizeEvent();\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"](this._element).removeClass(CLASS_NAME_SHOW$4);\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS$1);\n $__default[\"default\"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $__default[\"default\"](htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $__default[\"default\"](document).off(EVENT_FOCUSIN);\n $__default[\"default\"].removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$4, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$4);\n return config;\n };\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n var hideEventPrevented = $__default[\"default\"].Event(EVENT_HIDE_PREVENTED);\n $__default[\"default\"](this._element).trigger(hideEventPrevented);\n if (hideEventPrevented.isDefaultPrevented()) {\n return;\n }\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._element).off(Util.TRANSITION_END);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n if (!isModalOverflowing) {\n $__default[\"default\"](_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n this._element.focus();\n };\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n var transition = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n if ($__default[\"default\"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n if (transition) {\n Util.reflow(this._element);\n }\n $__default[\"default\"](this._element).addClass(CLASS_NAME_SHOW$4);\n if (this._config.focus) {\n this._enforceFocus();\n }\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n _this4._isTransitioning = false;\n $__default[\"default\"](_this4._element).trigger(shownEvent);\n };\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $__default[\"default\"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n $__default[\"default\"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $__default[\"default\"](_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n if (this._isShown) {\n $__default[\"default\"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $__default[\"default\"](this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n if (this._isShown) {\n $__default[\"default\"](window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $__default[\"default\"](window).off(EVENT_RESIZE);\n }\n };\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._showBackdrop(function () {\n $__default[\"default\"](document.body).removeClass(CLASS_NAME_OPEN);\n _this8._resetAdjustments();\n _this8._resetScrollbar();\n $__default[\"default\"](_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $__default[\"default\"](this._backdrop).remove();\n this._backdrop = null;\n }\n };\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n var animate = $__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : '';\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n $__default[\"default\"](this._backdrop).appendTo(document.body);\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n if (event.target !== event.currentTarget) {\n return;\n }\n if (_this9._config.backdrop === 'static') {\n _this9._triggerBackdropTransition();\n } else {\n _this9.hide();\n }\n });\n if (animate) {\n Util.reflow(this._backdrop);\n }\n $__default[\"default\"](this._backdrop).addClass(CLASS_NAME_SHOW$4);\n if (!callback) {\n return;\n }\n if (!animate) {\n callback();\n return;\n }\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $__default[\"default\"](this._backdrop).removeClass(CLASS_NAME_SHOW$4);\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n if (callback) {\n callback();\n }\n };\n if ($__default[\"default\"](this._element).hasClass(CLASS_NAME_FADE$4)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $__default[\"default\"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](element).css('padding-right');\n $__default[\"default\"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $__default[\"default\"](stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $__default[\"default\"](element).css('margin-right');\n $__default[\"default\"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $__default[\"default\"](document.body).css('padding-right');\n $__default[\"default\"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n $__default[\"default\"](document.body).addClass(CLASS_NAME_OPEN);\n };\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $__default[\"default\"](fixedContent).each(function (index, element) {\n var padding = $__default[\"default\"](element).data('padding-right');\n $__default[\"default\"](element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $__default[\"default\"](elements).each(function (index, element) {\n var margin = $__default[\"default\"](element).data('margin-right');\n if (typeof margin !== 'undefined') {\n $__default[\"default\"](element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $__default[\"default\"](document.body).data('padding-right');\n $__default[\"default\"](document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$5);\n var _config = _extends({}, Default$4, $__default[\"default\"](this).data(), typeof config === 'object' && config ? config : {});\n if (!data) {\n data = new Modal(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$5, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }]);\n return Modal;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n var _this11 = this;\n var target;\n var selector = Util.getSelectorFromElement(this);\n if (selector) {\n target = document.querySelector(selector);\n }\n var config = $__default[\"default\"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default[\"default\"](target).data(), $__default[\"default\"](this).data());\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n var $target = $__default[\"default\"](target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n $target.one(EVENT_HIDDEN$2, function () {\n if ($__default[\"default\"](_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n Modal._jQueryInterface.call($__default[\"default\"](target), config, this);\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$5] = Modal._jQueryInterface;\n $__default[\"default\"].fn[NAME$5].Constructor = Modal;\n $__default[\"default\"].fn[NAME$5].noConflict = function () {\n $__default[\"default\"].fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.6.2): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));\n }\n return true;\n }\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true;\n }\n }\n return false;\n }\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread\n\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n if (_ret === \"continue\") continue;\n }\n return createdDocument.body.innerHTML;\n }\n\n /**\n * Constants\n */\n\n var NAME$4 = 'tooltip';\n var VERSION$4 = '4.6.2';\n var DATA_KEY$4 = 'bs.tooltip';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var JQUERY_NO_CONFLICT$4 = $__default[\"default\"].fn[NAME$4];\n var CLASS_PREFIX$1 = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$3 = {\n animation: true,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var DefaultType$3 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n INSERTED: \"inserted\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n FOCUSIN: \"focusin\" + EVENT_KEY$4,\n FOCUSOUT: \"focusout\" + EVENT_KEY$4,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$4,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$4\n };\n /**\n * Class definition\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper__default[\"default\"] === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n } // Private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n this._setListeners();\n } // Getters\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $__default[\"default\"](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n context._activeTrigger.click = !context._activeTrigger.click;\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($__default[\"default\"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) {\n this._leave(null, this);\n return;\n }\n this._enter(null, this);\n }\n };\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $__default[\"default\"].removeData(this.element, this.constructor.DATA_KEY);\n $__default[\"default\"](this.element).off(this.constructor.EVENT_KEY);\n $__default[\"default\"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n if (this.tip) {\n $__default[\"default\"](this.tip).remove();\n }\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n if (this._popper) {\n this._popper.destroy();\n }\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n _proto.show = function show() {\n var _this = this;\n if ($__default[\"default\"](this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n var showEvent = $__default[\"default\"].Event(this.constructor.Event.SHOW);\n if (this.isWithContent() && this._isEnabled) {\n $__default[\"default\"](this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $__default[\"default\"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n if (this.config.animation) {\n $__default[\"default\"](tip).addClass(CLASS_NAME_FADE$3);\n }\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n var attachment = this._getAttachment(placement);\n this.addAttachmentClass(attachment);\n var container = this._getContainer();\n $__default[\"default\"](tip).data(this.constructor.DATA_KEY, this);\n if (!$__default[\"default\"].contains(this.element.ownerDocument.documentElement, this.tip)) {\n $__default[\"default\"](tip).appendTo(container);\n }\n $__default[\"default\"](this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper__default[\"default\"](this.element, tip, this._getPopperConfig(attachment));\n $__default[\"default\"](tip).addClass(CLASS_NAME_SHOW$3);\n $__default[\"default\"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().on('mouseover', null, $__default[\"default\"].noop);\n }\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $__default[\"default\"](_this.element).trigger(_this.constructor.Event.SHOWN);\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $__default[\"default\"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n _proto.hide = function hide(callback) {\n var _this2 = this;\n var tip = this.getTipElement();\n var hideEvent = $__default[\"default\"].Event(this.constructor.Event.HIDE);\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n _this2._cleanTipClass();\n _this2.element.removeAttribute('aria-describedby');\n $__default[\"default\"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n if (callback) {\n callback();\n }\n };\n $__default[\"default\"](this.element).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n $__default[\"default\"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $__default[\"default\"](document.body).children().off('mouseover', null, $__default[\"default\"].noop);\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n if ($__default[\"default\"](this.tip).hasClass(CLASS_NAME_FADE$3)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $__default[\"default\"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n this._hoverState = '';\n };\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($__default[\"default\"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$3);\n };\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$__default[\"default\"](content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($__default[\"default\"](content).text());\n }\n return;\n }\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n var offset = {};\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n return offset;\n };\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n if (Util.isElement(this.config.container)) {\n return $__default[\"default\"](this.config.container);\n }\n return $__default[\"default\"](document).find(this.config.container);\n };\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $__default[\"default\"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $__default[\"default\"](_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n $__default[\"default\"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n if ($__default[\"default\"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $__default[\"default\"](event.currentTarget).data(dataKey);\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $__default[\"default\"](event.currentTarget).data(dataKey, context);\n }\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n if (context._isWithActiveTrigger()) {\n return;\n }\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n return false;\n };\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $__default[\"default\"](this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n return config;\n };\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n return config;\n };\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n this._cleanTipClass();\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n $__default[\"default\"](tip).removeClass(CLASS_NAME_FADE$3);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY$4);\n var _config = typeof config === 'object' && config;\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n if (!data) {\n data = new Tooltip(this, _config);\n $element.data(DATA_KEY$4, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$4;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$4;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$4;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$3;\n }\n }]);\n return Tooltip;\n }();\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$4] = Tooltip._jQueryInterface;\n $__default[\"default\"].fn[NAME$4].Constructor = Tooltip;\n $__default[\"default\"].fn[NAME$4].noConflict = function () {\n $__default[\"default\"].fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$3 = 'popover';\n var VERSION$3 = '4.6.2';\n var DATA_KEY$3 = 'bs.popover';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var JQUERY_NO_CONFLICT$3 = $__default[\"default\"].fn[NAME$3];\n var CLASS_PREFIX = 'bs-popover';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$2 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Default$2 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n });\n var DefaultType$2 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n INSERTED: \"inserted\" + EVENT_KEY$3,\n CLICK: \"click\" + EVENT_KEY$3,\n FOCUSIN: \"focusin\" + EVENT_KEY$3,\n FOCUSOUT: \"focusout\" + EVENT_KEY$3,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$3,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$3\n };\n /**\n * Class definition\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $__default[\"default\"](this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $__default[\"default\"](this.config.template)[0];\n return this.tip;\n };\n _proto.setContent = function setContent() {\n var $tip = $__default[\"default\"](this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n var content = this._getContent();\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$2);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $__default[\"default\"](this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$3);\n var _config = typeof config === 'object' ? config : null;\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n if (!data) {\n data = new Popover(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$3, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Popover, null, [{\n key: \"VERSION\",\n get:\n // Getters\n function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$3;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$3;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$3;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n return Popover;\n }(Tooltip);\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$3] = Popover._jQueryInterface;\n $__default[\"default\"].fn[NAME$3].Constructor = Popover;\n $__default[\"default\"].fn[NAME$3].noConflict = function () {\n $__default[\"default\"].fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Popover._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$2 = 'scrollspy';\n var VERSION$2 = '4.6.2';\n var DATA_KEY$2 = 'bs.scrollspy';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $__default[\"default\"].fn[NAME$2];\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$2;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$2 + DATA_API_KEY$1;\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var Default$1 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$1 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n /**\n * Class definition\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $__default[\"default\"](this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n this._process();\n } // Getters\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$__default[\"default\"](target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n return null;\n }).filter(Boolean).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n _this2._targets.push(item[1]);\n });\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$2);\n $__default[\"default\"](this._scrollElement).off(EVENT_KEY$2);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, typeof config === 'object' && config ? config : {});\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $__default[\"default\"](config.target).attr('id');\n if (!id) {\n id = Util.getUID(NAME$2);\n $__default[\"default\"](config.target).attr('id', id);\n }\n config.target = \"#\" + id;\n }\n Util.typeCheckConfig(NAME$2, config, DefaultType$1);\n return config;\n };\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n var scrollHeight = this._getScrollHeight();\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n return;\n }\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n this._clear();\n return;\n }\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n this._clear();\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n var $link = $__default[\"default\"]([].slice.call(document.querySelectorAll(queries.join(','))));\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1);\n $link.addClass(CLASS_NAME_ACTIVE$1);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1);\n }\n $__default[\"default\"](this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n });\n };\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(CLASS_NAME_ACTIVE$1);\n }).forEach(function (node) {\n return node.classList.remove(CLASS_NAME_ACTIVE$1);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $__default[\"default\"](this).data(DATA_KEY$2);\n var _config = typeof config === 'object' && config;\n if (!data) {\n data = new ScrollSpy(this, _config);\n $__default[\"default\"](this).data(DATA_KEY$2, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n return ScrollSpy;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](window).on(EVENT_LOAD_DATA_API, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n for (var i = scrollSpysLength; i--;) {\n var $spy = $__default[\"default\"](scrollSpys[i]);\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$2] = ScrollSpy._jQueryInterface;\n $__default[\"default\"].fn[NAME$2].Constructor = ScrollSpy;\n $__default[\"default\"].fn[NAME$2].noConflict = function () {\n $__default[\"default\"].fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return ScrollSpy._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME$1 = 'tab';\n var VERSION$1 = '4.6.2';\n var DATA_KEY$1 = 'bs.tab';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $__default[\"default\"].fn[NAME$1];\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_FADE$1 = 'fade';\n var CLASS_NAME_SHOW$1 = 'show';\n var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$1;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$1;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$1;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$1;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY$1 + DATA_API_KEY;\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * Class definition\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default[\"default\"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default[\"default\"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) {\n return;\n }\n var target;\n var previous;\n var listElement = $__default[\"default\"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];\n var selector = Util.getSelectorFromElement(this._element);\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n previous = $__default[\"default\"].makeArray($__default[\"default\"](listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE$1, {\n relatedTarget: this._element\n });\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW$1, {\n relatedTarget: previous\n });\n if (previous) {\n $__default[\"default\"](previous).trigger(hideEvent);\n }\n $__default[\"default\"](this._element).trigger(showEvent);\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n if (selector) {\n target = document.querySelector(selector);\n }\n this._activate(this._element, listElement);\n var complete = function complete() {\n var hiddenEvent = $__default[\"default\"].Event(EVENT_HIDDEN$1, {\n relatedTarget: _this._element\n });\n var shownEvent = $__default[\"default\"].Event(EVENT_SHOWN$1, {\n relatedTarget: previous\n });\n $__default[\"default\"](previous).trigger(hiddenEvent);\n $__default[\"default\"](_this._element).trigger(shownEvent);\n };\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n _proto.dispose = function dispose() {\n $__default[\"default\"].removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default[\"default\"](container).find(SELECTOR_ACTIVE_UL) : $__default[\"default\"](container).children(SELECTOR_ACTIVE);\n var active = activeElements[0];\n var isTransitioning = callback && active && $__default[\"default\"](active).hasClass(CLASS_NAME_FADE$1);\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $__default[\"default\"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $__default[\"default\"](active).removeClass(CLASS_NAME_ACTIVE);\n var dropdownChild = $__default[\"default\"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n if (dropdownChild) {\n $__default[\"default\"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);\n }\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n $__default[\"default\"](element).addClass(CLASS_NAME_ACTIVE);\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n Util.reflow(element);\n if (element.classList.contains(CLASS_NAME_FADE$1)) {\n element.classList.add(CLASS_NAME_SHOW$1);\n }\n var parent = element.parentNode;\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode;\n }\n if (parent && $__default[\"default\"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $__default[\"default\"](element).closest(SELECTOR_DROPDOWN)[0];\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));\n $__default[\"default\"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);\n }\n element.setAttribute('aria-expanded', true);\n }\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $__default[\"default\"](this);\n var data = $this.data(DATA_KEY$1);\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$1, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config]();\n }\n });\n };\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n return Tab;\n }();\n /**\n * Data API implementation\n */\n\n $__default[\"default\"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault();\n Tab._jQueryInterface.call($__default[\"default\"](this), 'show');\n });\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME$1] = Tab._jQueryInterface;\n $__default[\"default\"].fn[NAME$1].Constructor = Tab;\n $__default[\"default\"].fn[NAME$1].noConflict = function () {\n $__default[\"default\"].fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Tab._jQueryInterface;\n };\n\n /**\n * Constants\n */\n\n var NAME = 'toast';\n var VERSION = '4.6.2';\n var DATA_KEY = 'bs.toast';\n var EVENT_KEY = \".\" + DATA_KEY;\n var JQUERY_NO_CONFLICT = $__default[\"default\"].fn[NAME];\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY;\n var EVENT_HIDE = \"hide\" + EVENT_KEY;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY;\n var EVENT_SHOW = \"show\" + EVENT_KEY;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY;\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"toast\"]';\n var Default = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n /**\n * Class definition\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n this._setListeners();\n } // Getters\n\n var _proto = Toast.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n var showEvent = $__default[\"default\"].Event(EVENT_SHOW);\n $__default[\"default\"](this._element).trigger(showEvent);\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n this._clearTimeout();\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n _this._element.classList.add(CLASS_NAME_SHOW);\n $__default[\"default\"](_this._element).trigger(EVENT_SHOWN);\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n this._element.classList.remove(CLASS_NAME_HIDE);\n Util.reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOWING);\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n return;\n }\n var hideEvent = $__default[\"default\"].Event(EVENT_HIDE);\n $__default[\"default\"](this._element).trigger(hideEvent);\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n this._close();\n };\n _proto.dispose = function dispose() {\n this._clearTimeout();\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n $__default[\"default\"](this._element).off(EVENT_CLICK_DISMISS);\n $__default[\"default\"].removeData(this._element, DATA_KEY);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, $__default[\"default\"](this._element).data(), typeof config === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n };\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n $__default[\"default\"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {\n return _this2.hide();\n });\n };\n _proto._close = function _close() {\n var _this3 = this;\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n $__default[\"default\"](_this3._element).trigger(EVENT_HIDDEN);\n };\n this._element.classList.remove(CLASS_NAME_SHOW);\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $__default[\"default\"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $__default[\"default\"](this);\n var data = $element.data(DATA_KEY);\n var _config = typeof config === 'object' && config;\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY, data);\n }\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n data[config](this);\n }\n });\n };\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n return Toast;\n }();\n /**\n * jQuery\n */\n\n $__default[\"default\"].fn[NAME] = Toast._jQueryInterface;\n $__default[\"default\"].fn[NAME].Constructor = Toast;\n $__default[\"default\"].fn[NAME].noConflict = function () {\n $__default[\"default\"].fn[NAME] = JQUERY_NO_CONFLICT;\n return Toast._jQueryInterface;\n };\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n exports.Util = Util;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n expando = '_ujsData';\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function (event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n }\n return result;\n };\n }\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n prepareOptions = function (options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n createXHR = function (options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n processResponse = function (response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n Rails.href = function (element) {\n return element.href;\n };\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n toArray = function (e) {\n return Array.prototype.slice.call(e);\n };\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n allowAction = function (element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n Rails.enableElement = function (e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n disableLinkElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n enableLinkElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n disableFormElements = function (form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n disableFormElement = function (element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n enableFormElements = function (form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n enableFormElement = function (element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n isXhrRedirect = function (event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n }\n formContent += '<input type=\"submit\" />';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n isRemote = function (element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function (xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function () {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\nfunction escapeChar(chr) {\n return escape[chr];\n}\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n return obj;\n}\nvar toString = Object.prototype.toString;\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*\nTurbo 7.3.0\nCopyright © 2023 37signals LLC\n */\n(function () {\n if (window.Reflect === undefined || window.customElements === undefined || window.customElements.polyfillWrapFlushCallback) {\n return;\n }\n const BuiltInHTMLElement = HTMLElement;\n const wrapperForTheName = {\n HTMLElement: function HTMLElement() {\n return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n }\n };\n window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n HTMLElement.prototype = BuiltInHTMLElement.prototype;\n HTMLElement.prototype.constructor = HTMLElement;\n Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return;\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name);\n }\n})(HTMLFormElement.prototype);\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n(function () {\n if (\"submitter\" in Event.prototype) return;\n let prototype = window.Event.prototype;\n if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n prototype = window.SubmitEvent.prototype;\n } else if (\"SubmitEvent\" in window) {\n return;\n }\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n }\n });\n})();\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n FrameLoadingStyle[\"eager\"] = \"eager\";\n FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n static get observedAttributes() {\n return [\"disabled\", \"complete\", \"loading\", \"src\"];\n }\n constructor() {\n super();\n this.loaded = Promise.resolve();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n connectedCallback() {\n this.delegate.connect();\n }\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n reload() {\n return this.delegate.sourceURLReloaded();\n }\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"complete\") {\n this.delegate.completeChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else {\n this.delegate.disabledChanged();\n }\n }\n get src() {\n return this.getAttribute(\"src\");\n }\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n get disabled() {\n return this.hasAttribute(\"disabled\");\n }\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\");\n }\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n get complete() {\n return !this.delegate.isLoading;\n }\n get isActive() {\n return this.ownerDocument === document && !this.isPreview;\n }\n get isPreview() {\n var _a, _b;\n return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n }\n}\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n default:\n return FrameLoadingStyle.eager;\n }\n}\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1);\n } else if (anchorMatch = url.href.match(/#(.*)$/)) {\n return anchorMatch[1];\n }\n}\nfunction getAction(form, submitter) {\n const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n get succeeded() {\n return this.response.ok;\n }\n get failed() {\n return !this.succeeded;\n }\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n get redirected() {\n return this.response.redirected;\n }\n get location() {\n return expandURL(this.response.url);\n }\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n get statusCode() {\n return this.response.status;\n }\n get contentType() {\n return this.header(\"Content-Type\");\n }\n get responseText() {\n return this.response.clone().text();\n }\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text();\n } else {\n return Promise.resolve(undefined);\n }\n }\n header(name) {\n return this.response.headers.get(name);\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 = getMetaContent(\"csp-nonce\");\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const _ref of sourceElement.attributes) {\n const name = _ref.name;\n const value = _ref.value;\n destinationElement.setAttribute(name, value);\n }\n}\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content;\n}\nfunction dispatch(eventName) {\n let _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n target = _ref2.target,\n cancelable = _ref2.cancelable,\n detail = _ref2.detail;\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail\n });\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n return event;\n}\nfunction nextAnimationFrame() {\n return new Promise(resolve => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n return new Promise(resolve => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n return Promise.resolve();\n}\nfunction parseHTMLDocument() {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map(line => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\nfunction uuid() {\n return Array.from({\n 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() * 15).toString(16);\n }\n }).join(\"\");\n}\nfunction getAttribute(attributeName) {\n for (var _len2 = arguments.length, elements = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n elements[_key2 - 1] = arguments[_key2];\n }\n for (const value of elements.map(element => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value;\n }\n return null;\n}\nfunction hasAttribute(attributeName) {\n for (var _len3 = arguments.length, elements = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n elements[_key3 - 1] = arguments[_key3];\n }\n return elements.some(element => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy() {\n for (var _len4 = arguments.length, elements = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n elements[_key4] = arguments[_key4];\n }\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\nfunction clearBusyState() {\n for (var _len5 = arguments.length, elements = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n elements[_key5] = arguments[_key5];\n }\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n element.removeAttribute(\"aria-busy\");\n }\n}\nfunction waitForLoad(element) {\n let timeoutInMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n return new Promise(resolve => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n element.addEventListener(\"load\", onComplete, {\n once: true\n });\n element.addEventListener(\"error\", onComplete, {\n once: true\n });\n setTimeout(resolve, timeoutInMilliseconds);\n });\n}\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n}\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction() {\n for (var _len6 = arguments.length, elements = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n elements[_key6] = arguments[_key6];\n }\n const action = getAttribute(\"data-turbo-action\", ...elements);\n return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content;\n}\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n document.head.appendChild(element);\n }\n element.setAttribute(\"content\", content);\n return element;\n}\nfunction findClosestRecursively(element, selector) {\n var _a;\n if (element instanceof Element) {\n return element.closest(selector) || findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector);\n }\n}\nvar FetchMethod;\n(function (FetchMethod) {\n FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n case \"post\":\n return FetchMethod.post;\n case \"put\":\n return FetchMethod.put;\n case \"patch\":\n return FetchMethod.patch;\n case \"delete\":\n return FetchMethod.delete;\n }\n}\nclass FetchRequest {\n constructor(delegate, method, location) {\n let body = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new URLSearchParams();\n let target = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n this.abortController = new AbortController();\n this.resolveRequestPromise = _value => {};\n this.delegate = delegate;\n this.method = method;\n this.headers = this.defaultHeaders;\n this.body = body;\n this.url = location;\n this.target = target;\n }\n get location() {\n return this.url;\n }\n get params() {\n return this.url.searchParams;\n }\n get entries() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n cancel() {\n this.abortController.abort();\n }\n async perform() {\n const fetchOptions = this.fetchOptions;\n this.delegate.prepareRequest(this);\n await this.allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n const response = await fetch(this.url.href, fetchOptions);\n return await this.receive(response);\n } 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 async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: {\n fetchResponse\n },\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 get fetchOptions() {\n var _a;\n return {\n method: FetchMethod[this.method].toUpperCase(),\n credentials: \"same-origin\",\n headers: this.headers,\n redirect: \"follow\",\n body: this.isSafe ? null : this.body,\n signal: this.abortSignal,\n referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href\n };\n }\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n };\n }\n get isSafe() {\n return this.method === FetchMethod.get;\n }\n get abortSignal() {\n return this.abortController.signal;\n }\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n async allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise(resolve => this.resolveRequestPromise = resolve);\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.resolveRequestPromise\n },\n target: this.target\n });\n if (event.defaultPrevented) await requestInterception;\n }\n willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: {\n request: this,\n error: error\n }\n });\n return !event.defaultPrevented;\n }\n}\nclass AppearanceObserver {\n constructor(delegate, element) {\n this.started = false;\n this.intersect = entries => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n };\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n}\nclass StreamMessage {\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message));\n } else {\n return message;\n }\n }\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n element.replaceWith(streamElement);\n }\n return fragment;\n}\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n FormEnctype[\"multipart\"] = \"multipart/form-data\";\n FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FormEnctype.multipart:\n return FormEnctype.multipart;\n case FormEnctype.plain:\n return FormEnctype.plain;\n default:\n return FormEnctype.urlEncoded;\n }\n}\nclass FormSubmission {\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message));\n }\n constructor(delegate, formElement, submitter) {\n let mustRedirect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n this.state = FormSubmissionState.initialized;\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.formData = buildFormData(formElement, submitter);\n this.location = expandURL(this.action);\n if (this.method == FetchMethod.get) {\n mergeFormDataEntries(this.location, [...this.body.entries()]);\n }\n this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n this.mustRedirect = mustRedirect;\n }\n get method() {\n var _a;\n const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n }\n get action() {\n var _a;\n const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n return this.submitter.getAttribute(\"formaction\") || \"\";\n } else {\n return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n }\n get body() {\n if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n return new URLSearchParams(this.stringFormData);\n } else {\n return this.formData;\n }\n }\n get enctype() {\n var _a;\n return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n }\n get isSafe() {\n return this.fetchRequest.isSafe;\n }\n get stringFormData() {\n return [...this.formData].reduce((entries, _ref3) => {\n let _ref4 = _slicedToArray(_ref3, 2),\n name = _ref4[0],\n value = _ref4[1];\n return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n }, []);\n }\n async start() {\n const _FormSubmissionState = FormSubmissionState,\n initialized = _FormSubmissionState.initialized,\n requesting = _FormSubmissionState.requesting;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return;\n }\n }\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform();\n }\n }\n stop() {\n const _FormSubmissionState2 = FormSubmissionState,\n stopping = _FormSubmissionState2.stopping,\n stopped = _FormSubmissionState2.stopped;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n }\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n var _a;\n this.state = FormSubmissionState.waiting;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n this.setSubmitsWith();\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: {\n formSubmission: this\n }\n });\n this.delegate.formSubmissionStarted(this);\n }\n requestPreventedHandlingResponse(request, response) {\n this.result = {\n success: response.succeeded,\n fetchResponse: response\n };\n }\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = {\n success: true,\n fetchResponse: response\n };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n requestFailedWithResponse(request, response) {\n this.result = {\n success: false,\n fetchResponse: response\n };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n requestErrored(request, error) {\n this.result = {\n success: false,\n error\n };\n this.delegate.formSubmissionErrored(this, error);\n }\n requestFinished(_request) {\n var _a;\n this.state = FormSubmissionState.stopped;\n (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n this.resetSubmitterText();\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: Object.assign({\n formSubmission: this\n }, this.result)\n });\n this.delegate.formSubmissionFinished(this);\n }\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return;\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 resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return;\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 requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect;\n }\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n }\n get submitsWith() {\n var _a;\n return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-turbo-submits-with\");\n }\n}\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n if (name) {\n formData.append(name, value || \"\");\n }\n return formData;\n}\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find(cookie => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n const searchParams = new URLSearchParams();\n for (const _ref5 of entries) {\n var _ref6 = _slicedToArray(_ref5, 2);\n const name = _ref6[0];\n const value = _ref6[1];\n if (value instanceof File) continue;\n searchParams.append(name, value);\n }\n url.search = searchParams.toString();\n return url;\n}\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n get activeElement() {\n return this.element.ownerDocument.activeElement;\n }\n get children() {\n return [...this.element.children];\n }\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n }\n get isConnected() {\n return this.element.isConnected;\n }\n get firstAutofocusableElement() {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n if (element.closest(inertDisabledOrHidden) == null) return element;else continue;\n }\n return null;\n }\n get permanentElements() {\n return queryPermanentElementsAll(this.element);\n }\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id);\n }\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n for (const currentPermanentElement of this.permanentElements) {\n const id = currentPermanentElement.id;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n return permanentElementMap;\n }\n}\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\nclass FormSubmitObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n };\n this.submitBubbled = event => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n if (form && submissionDoesNotDismissDialog(form, submitter) && submissionDoesNotTargetIFrame(form, submitter) && this.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n for (const element of document.getElementsByName(target)) {\n if (element instanceof HTMLIFrameElement) return false;\n }\n return true;\n } else {\n return true;\n }\n}\nclass View {\n constructor(delegate, element) {\n this.resolveRenderPromise = _value => {};\n this.resolveInterceptionPromise = _value => {};\n this.delegate = delegate;\n this.element = element;\n }\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n }\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n scrollToElement(element) {\n element.scrollIntoView();\n }\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n scrollToPosition(_ref7) {\n let x = _ref7.x,\n y = _ref7.y;\n this.scrollRoot.scrollTo(x, y);\n }\n scrollToTop() {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n get scrollRoot() {\n return window;\n }\n async render(renderer) {\n const isPreview = renderer.isPreview,\n shouldRender = renderer.shouldRender,\n snapshot = renderer.newSnapshot;\n if (shouldRender) {\n try {\n this.renderPromise = new Promise(resolve => this.resolveRenderPromise = resolve);\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n const renderInterception = new Promise(resolve => this.resolveInterceptionPromise = resolve);\n const options = {\n resume: this.resolveInterceptionPromise,\n render: this.renderer.renderElement\n };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender) await renderInterception;\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview);\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 {\n this.invalidate(renderer.reloadReason);\n }\n }\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n }\n get snapshot() {\n return new Snapshot(this.element);\n }\n}\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.clickBubbled = event => {\n if (this.respondsToEventTarget(event.target)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n };\n this.linkClicked = event => {\n if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n };\n this.willVisit = _event => {\n delete this.clickEvent;\n };\n this.delegate = delegate;\n this.element = element;\n }\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n respondsToEventTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n}\nclass LinkClickObserver {\n constructor(delegate, eventTarget) {\n this.started = false;\n this.clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n };\n this.clickBubbled = event => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = event.composedPath && event.composedPath()[0] || event.target;\n const link = this.findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link)) {\n const location = this.getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n };\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n clickEventIsSignificant(event) {\n return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n }\n findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n }\n getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n}\nfunction doesNotTargetIFrame(anchor) {\n if (anchor.hasAttribute(\"target\")) {\n for (const element of document.getElementsByName(anchor.target)) {\n if (element instanceof HTMLIFrameElement) return false;\n }\n return true;\n } else {\n return true;\n }\n}\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n }\n stop() {\n this.linkInterceptor.stop();\n }\n willFollowLinkToLocation(link, location, originalEvent) {\n return this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) && link.hasAttribute(\"data-turbo-method\");\n }\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n const type = \"hidden\";\n for (const _ref8 of location.searchParams) {\n var _ref9 = _slicedToArray(_ref8, 2);\n const name = _ref9[0];\n const value = _ref9[1];\n form.append(Object.assign(document.createElement(\"input\"), {\n type,\n name,\n value\n }));\n }\n const action = Object.assign(location, {\n search: \"\"\n });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n const turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n this.delegate.submittedFormLinkToLocation(link, location, form);\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), {\n once: true\n });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\nclass Bardo {\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n enter() {\n for (const id in this.permanentElementMap) {\n const _this$permanentElemen = _slicedToArray(this.permanentElementMap[id], 2),\n currentPermanentElement = _this$permanentElemen[0],\n newPermanentElement = _this$permanentElemen[1];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n leave() {\n for (const id in this.permanentElementMap) {\n const _this$permanentElemen2 = _slicedToArray(this.permanentElementMap[id], 1),\n currentPermanentElement = _this$permanentElemen2[0];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n getPlaceholderById(id) {\n return this.placeholders.find(element => element.content == id);\n }\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\nclass Renderer {\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview) {\n let willRender = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n this.activeElement = null;\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => this.resolvingFunctions = {\n resolve,\n reject\n });\n }\n get shouldRender() {\n return true;\n }\n get reloadReason() {\n return;\n }\n prepareToRender() {\n return;\n }\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n focusFirstAutofocusableElement() {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (elementIsFocusable(element)) {\n element.focus();\n }\n }\n enteringBardo(currentPermanentElement) {\n if (this.activeElement) return;\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.activeElement = this.currentSnapshot.activeElement;\n }\n }\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n this.activeElement.focus();\n this.activeElement = null;\n }\n }\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n get currentElement() {\n return this.currentSnapshot.element;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n}\nfunction elementIsFocusable(element) {\n return element && typeof element.focus == \"function\";\n}\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n var _a;\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n const frameElement = newElement;\n const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview) {\n let willRender = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n get shouldRender() {\n return true;\n }\n async render() {\n await nextAnimationFrame();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextAnimationFrame();\n this.focusFirstAutofocusableElement();\n await nextAnimationFrame();\n this.activateScriptElements();\n }\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n if (element) {\n element.scrollIntoView({\n block,\n behavior\n });\n return true;\n }\n }\n return false;\n }\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n } else {\n return defaultValue;\n }\n}\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value;\n } else {\n return defaultValue;\n }\n}\nclass ProgressBar {\n static get defaultCSS() {\n return unindent`\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `;\n }\n constructor() {\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n this.trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n };\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n return element;\n }\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n get cspNonce() {\n return getMetaContent(\"csp-nonce\");\n }\n}\nProgressBar.animationDuration = 300;\nclass HeadSnapshot extends Snapshot {\n constructor() {\n super(...arguments);\n this.detailsByOuterHTML = this.children.filter(element => !elementIsNoscript(element)).map(element => elementWithoutNonce(element)).reduce((result, element) => {\n const outerHTML = element.outerHTML;\n const details = outerHTML in result ? result[outerHTML] : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return Object.assign(Object.assign({}, result), {\n [outerHTML]: Object.assign(Object.assign({}, details), {\n elements: [...details.elements, element]\n })\n });\n }, {});\n }\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML).filter(outerHTML => this.detailsByOuterHTML[outerHTML].tracked).join(\"\");\n }\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML).filter(outerHTML => !(outerHTML in snapshot.detailsByOuterHTML)).map(outerHTML => this.detailsByOuterHTML[outerHTML]).filter(_ref10 => {\n let type = _ref10.type;\n return type == matchedType;\n }).map(_ref11 => {\n let _ref11$elements = _slicedToArray(_ref11.elements, 1),\n element = _ref11$elements[0];\n return element;\n });\n }\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const _this$detailsByOuterH = this.detailsByOuterHTML[outerHTML],\n type = _this$detailsByOuterH.type,\n tracked = _this$detailsByOuterH.tracked,\n elements = _this$detailsByOuterH.elements;\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 getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const _this$detailsByOuterH2 = _slicedToArray(this.detailsByOuterHTML[outerHTML].elements, 1),\n element = _this$detailsByOuterH2[0];\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined);\n }\n}\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\";\n}\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n return element;\n}\nclass PageSnapshot extends Snapshot {\n static fromHTMLString() {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return this.fromDocument(parseHTMLDocument(html));\n }\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n static fromDocument(_ref12) {\n let head = _ref12.head,\n body = _ref12.body;\n return new this(body, new HeadSnapshot(head));\n }\n constructor(element, headSnapshot) {\n super(element);\n this.headSnapshot = headSnapshot;\n }\n clone() {\n const clonedElement = this.element.cloneNode(true);\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n for (const _ref13 of selectElements.entries()) {\n var _ref14 = _slicedToArray(_ref13, 2);\n const index = _ref14[0];\n const source = _ref14[1];\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 for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n return new PageSnapshot(clonedElement, this.headSnapshot);\n }\n get headElement() {\n return this.headSnapshot.element;\n }\n get rootLocation() {\n var _a;\n const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n get cacheControlValue() {\n return this.getSetting(\"cache-control\");\n }\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\";\n }\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\";\n }\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`);\n }\n}\nvar TimingMetric;\n(function (TimingMetric) {\n TimingMetric[\"visitStart\"] = \"visitStart\";\n TimingMetric[\"requestStart\"] = \"requestStart\";\n TimingMetric[\"requestEnd\"] = \"requestEnd\";\n TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n VisitState[\"initialized\"] = \"initialized\";\n VisitState[\"started\"] = \"started\";\n VisitState[\"canceled\"] = \"canceled\";\n VisitState[\"failed\"] = \"failed\";\n VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n constructor(delegate, location, restorationIdentifier) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.shouldCacheSnapshot = true;\n this.acceptsStreamResponse = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n const _Object$assign = Object.assign(Object.assign({}, defaultOptions), options),\n action = _Object$assign.action,\n historyChanged = _Object$assign.historyChanged,\n referrer = _Object$assign.referrer,\n snapshot = _Object$assign.snapshot,\n snapshotHTML = _Object$assign.snapshotHTML,\n response = _Object$assign.response,\n visitCachedSnapshot = _Object$assign.visitCachedSnapshot,\n willRender = _Object$assign.willRender,\n updateHistory = _Object$assign.updateHistory,\n shouldCacheSnapshot = _Object$assign.shouldCacheSnapshot,\n acceptsStreamResponse = _Object$assign.acceptsStreamResponse;\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n get silent() {\n return this.isSamePage;\n }\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.followRedirect();\n if (!this.followedRedirect) {\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n }\n }\n }\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n }\n }\n changeHistory() {\n var _a;\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n recordResponse() {\n let response = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.response;\n this.response = response;\n if (response) {\n const statusCode = response.statusCode;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n loadResponse() {\n if (this.response) {\n const _this$response = this.response,\n statusCode = _this$response.statusCode,\n responseHTML = _this$response.responseHTML;\n this.render(async () => {\n if (this.shouldCacheSnapshot) this.cacheSnapshot();\n if (this.view.renderPromise) await this.view.renderPromise;\n if (isSuccessful(statusCode) && responseHTML != null) {\n await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n this.complete();\n } else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage) {\n this.adapter.visitRendered(this);\n } else {\n if (this.view.renderPromise) await this.view.renderPromise;\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n followRedirect() {\n var _a;\n if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false\n });\n this.followedRedirect = true;\n }\n }\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted() {\n this.startRequest();\n }\n requestPreventedHandlingResponse(_request, _response) {}\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const redirected = response.redirected,\n statusCode = response.statusCode;\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({\n statusCode: statusCode,\n responseHTML,\n redirected\n });\n }\n }\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const redirected = response.redirected,\n statusCode = response.statusCode;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.recordResponse({\n statusCode: statusCode,\n responseHTML,\n redirected\n });\n }\n }\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n requestFinished() {\n this.finishRequest();\n }\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n this.scrolled = true;\n }\n }\n scrollToRestoredPosition() {\n const scrollPosition = this.restorationData.scrollPosition;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n }\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n getTimingMetrics() {\n return Object.assign({}, this.timingMetrics);\n }\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n hasPreloadedResponse() {\n return typeof this.response == \"object\";\n }\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n } else {\n return this.willRender;\n }\n }\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then(snapshot => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n async render(callback) {\n this.cancelRender();\n await new Promise(resolve => {\n this.frame = requestAnimationFrame(() => resolve());\n });\n await callback();\n delete this.frame;\n }\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\nclass BrowserAdapter {\n constructor(session) {\n this.progressBar = new ProgressBar();\n this.showProgressBar = () => {\n this.progressBar.show();\n };\n this.session = session;\n }\n visitProposedToLocation(location, options) {\n this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n }\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode\n }\n });\n default:\n return visit.loadResponse();\n }\n }\n visitRequestFinished(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n visitCompleted(_visit) {}\n pageInvalidated(reason) {\n this.reload(reason);\n }\n visitFailed(_visit) {}\n visitRendered(_visit) {}\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n reload(reason) {\n var _a;\n dispatch(\"turbo:reload\", {\n detail: reason\n });\n window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n }\n get navigator() {\n return this.session.navigator;\n }\n}\nclass CacheObserver {\n constructor() {\n this.selector = \"[data-turbo-temporary]\";\n this.deprecatedSelector = \"[data-turbo-cache=false]\";\n this.started = false;\n this.removeTemporaryElements = _event => {\n for (const element of this.temporaryElements) {\n element.remove();\n }\n };\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n get temporaryElements() {\n return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation];\n }\n get temporaryElementsWithDeprecation() {\n const elements = document.querySelectorAll(this.deprecatedSelector);\n if (elements.length) {\n console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`);\n }\n return [...elements];\n }\n}\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldRedirect(element);\n }\n linkClickIntercepted(element, url, event) {\n const frame = this.findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == null && this.shouldSubmit(element, submitter) && this.shouldRedirect(element, submitter);\n }\n formSubmitted(element, submitter) {\n const frame = this.findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n shouldSubmit(form, submitter) {\n var _a;\n const action = getAction(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n }\n shouldRedirect(element, submitter) {\n const isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter) : this.session.elementIsNavigatable(element);\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 findFrameElement(element, submitter) {\n const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n }\n}\nclass History {\n constructor(delegate) {\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.onPopState = event => {\n if (this.shouldHandlePopState()) {\n const _ref15 = event.state || {},\n turbo = _ref15.turbo;\n if (turbo) {\n this.location = new URL(window.location.href);\n const restorationIdentifier = turbo.restorationIdentifier;\n this.restorationIdentifier = restorationIdentifier;\n this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n }\n }\n };\n this.onPageLoad = async _event => {\n await nextMicrotask();\n this.pageLoaded = true;\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n update(method, location) {\n let restorationIdentifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : uuid();\n const state = {\n turbo: {\n restorationIdentifier\n }\n };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n updateRestorationData(additionalData) {\n const restorationIdentifier = this.restorationIdentifier;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n }\n assumeControlOfScrollRestoration() {\n var _a;\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n shouldHandlePopState() {\n return this.pageIsLoaded();\n }\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n}\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n proposeVisit(location) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n this.delegate.visitProposedToLocation(location, options);\n } else {\n window.location.href = location.toString();\n }\n }\n }\n startVisit(locatable, restorationIdentifier) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({\n referrer: this.location\n }, options));\n this.currentVisit.start();\n }\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n get adapter() {\n return this.delegate.adapter;\n }\n get view() {\n return this.delegate.view;\n }\n get history() {\n return this.delegate.history;\n }\n formSubmissionStarted(formSubmission) {\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.isSafe;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n const statusCode = fetchResponse.statusCode,\n redirected = fetchResponse.redirected;\n const action = this.getActionForFormSubmission(formSubmission);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: {\n statusCode,\n responseHTML,\n redirected\n }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n } else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n this.view.scrollToTop();\n this.view.clearSnapshotCache();\n }\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(formSubmission) {\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n return action !== \"replace\" && getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n getActionForFormSubmission(_ref16) {\n let submitter = _ref16.submitter,\n formElement = _ref16.formElement;\n return getVisitAction(submitter, formElement) || \"advance\";\n }\n}\nvar PageStage;\n(function (PageStage) {\n PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n constructor(delegate) {\n this.stage = PageStage.initial;\n this.started = false;\n this.interpretReadyState = () => {\n const readyState = this.readyState;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n } else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n };\n this.pageWillUnload = () => {\n this.delegate.pageWillUnload();\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n get readyState() {\n return document.readyState;\n }\n}\nclass ScrollObserver {\n constructor(delegate) {\n this.started = false;\n this.onScroll = () => {\n this.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\nclass StreamMessageRenderer {\n render(_ref17) {\n let fragment = _ref17.fragment;\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n }\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n leavingBardo() {}\n}\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const id = permanentElementInDocument.id;\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n return permanentElementMap;\n}\nclass StreamObserver {\n constructor(delegate) {\n this.sources = new Set();\n this.started = false;\n this.inspectFetchResponse = event => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n };\n this.receiveMessageEvent = event => {\n if (this.started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n };\n this.delegate = delegate;\n }\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\nfunction fetchResponseFromEvent(event) {\n var _a;\n const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\nfunction fetchResponseIsStream(response) {\n var _a;\n const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const _document = document,\n documentElement = _document.documentElement,\n body = _document.body;\n documentElement.replaceChild(newElement, body);\n }\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n replaceHeadAndBody() {\n const _document2 = document,\n documentElement = _document2.documentElement,\n head = _document2.head;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n get newHead() {\n return this.newSnapshot.headSnapshot.element;\n }\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\");\n }\n}\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 get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n };\n }\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n };\n }\n }\n async prepareToRender() {\n await this.mergeHead();\n }\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot;\n }\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot;\n }\n get newElement() {\n return this.newSnapshot.element;\n }\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n await mergedHeadElements;\n await newStylesheetElements;\n }\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n document.head.appendChild(element);\n }\n await Promise.all(loadingElements);\n }\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n isCurrentElementInElementList(element, elementList) {\n for (const _ref18 of elementList.entries()) {\n var _ref19 = _slicedToArray(_ref18, 2);\n const index = _ref19[0];\n const newElement = _ref19[1];\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue;\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true;\n }\n }\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true;\n }\n }\n return false;\n }\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements;\n }\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\");\n }\n}\nclass SnapshotCache {\n constructor(size) {\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n clear() {\n this.snapshots = {};\n }\n read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\nclass PageView extends View {\n constructor() {\n super(...arguments);\n this.snapshotCache = new SnapshotCache(10);\n this.lastRenderedLocation = new URL(location.href);\n this.forceReloaded = false;\n }\n renderPage(snapshot) {\n let isPreview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let willRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n let visit = arguments.length > 3 ? arguments[3] : undefined;\n const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n }\n return this.render(renderer);\n }\n renderError(snapshot, visit) {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer);\n }\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n async cacheSnapshot() {\n let snapshot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.snapshot;\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const location = this.lastRenderedLocation;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot;\n }\n }\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n get snapshot() {\n return PageSnapshot.fromElement(this.element);\n }\n}\nclass Preloader {\n constructor(delegate) {\n this.selector = \"a[data-turbo-preload]\";\n this.delegate = delegate;\n }\n get snapshotCache() {\n return this.delegate.navigator.view.snapshotCache;\n }\n start() {\n if (document.readyState === \"loading\") {\n return document.addEventListener(\"DOMContentLoaded\", () => {\n this.preloadOnLoadLinksForView(document.body);\n });\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n this.preloadURL(link);\n }\n }\n async preloadURL(link) {\n const location = new URL(link.href);\n if (this.snapshotCache.has(location)) {\n return;\n }\n try {\n const response = await fetch(location.toString(), {\n headers: {\n \"VND.PREFETCH\": \"true\",\n Accept: \"text/html\"\n }\n });\n const responseText = await response.text();\n const snapshot = PageSnapshot.fromHTMLString(responseText);\n this.snapshotCache.put(location, snapshot);\n } catch (_) {}\n }\n}\nclass Session {\n constructor() {\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.preloader = new Preloader(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this, window);\n this.formSubmitObserver = new FormSubmitObserver(this, document);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n this.frameRedirector = new FrameRedirector(this, document.documentElement);\n this.streamMessageRenderer = new StreamMessageRenderer();\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n this.formMode = \"on\";\n }\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n disable() {\n this.enabled = false;\n }\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.started = false;\n }\n }\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n visit(location) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n if (frameElement instanceof FrameElement) {\n frameElement.src = location.toString();\n frameElement.loaded;\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n clearCache() {\n this.view.clearSnapshotCache();\n }\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n setFormMode(mode) {\n this.formMode = mode;\n }\n get location() {\n return this.history.location;\n }\n get restorationIdentifier() {\n return this.history.restorationIdentifier;\n }\n historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n }\n scrollPositionChanged(position) {\n this.history.updateRestorationData({\n scrollPosition: position\n });\n }\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n }\n submittedFormLinkToLocation() {}\n willFollowLinkToLocation(link, location, event) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location, event);\n }\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n this.visit(location.href, {\n action,\n acceptsStreamResponse\n });\n }\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n visitCompleted(visit) {\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n willSubmitForm(form, submitter) {\n const action = getAction(form, submitter);\n return this.submissionIsNavigatable(form, submitter) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation);\n }\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n viewWillCacheSnapshot() {\n var _a;\n if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n allowsImmediateRender(_ref20, options) {\n let element = _ref20.element;\n const event = this.notifyApplicationBeforeRender(element, options);\n const defaultPrevented = event.defaultPrevented,\n render = event.detail.render;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender();\n }\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented;\n }\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: {\n url: location.href,\n originalEvent: event\n },\n cancelable: true\n });\n }\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: {\n url: location.href\n },\n cancelable: true\n });\n }\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", {\n detail: {\n url: location.href,\n action\n }\n });\n }\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: Object.assign({\n newBody\n }, options),\n cancelable: true\n });\n }\n notifyApplicationAfterRender() {\n return dispatch(\"turbo:render\");\n }\n notifyApplicationAfterPageLoad() {\n let timing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return dispatch(\"turbo:load\", {\n detail: {\n url: this.location.href,\n timing\n }\n });\n }\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n }));\n }\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", {\n target: frame\n });\n }\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: {\n fetchResponse\n },\n target: frame,\n cancelable: true\n });\n }\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false;\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form);\n }\n }\n }\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n if (this.drive || withinFrame) {\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n } else {\n return true;\n }\n } else {\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n } else {\n return false;\n }\n }\n }\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\";\n }\n get snapshot() {\n return this.view.snapshot;\n }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString();\n }\n }\n};\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n clear() {\n this.session.clearCache();\n }\n resetCacheControl() {\n this.setCacheControl(\"\");\n }\n exemptPageFromCache() {\n this.setCacheControl(\"no-cache\");\n }\n exemptPageFromPreview() {\n this.setCacheControl(\"no-preview\");\n }\n setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\nconst StreamActions = {\n after() {\n this.targetElements.forEach(e => {\n var _a;\n return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling);\n });\n },\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.append(this.templateContent));\n },\n before() {\n this.targetElements.forEach(e => {\n var _a;\n return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e);\n });\n },\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(e => e.prepend(this.templateContent));\n },\n remove() {\n this.targetElements.forEach(e => e.remove());\n },\n replace() {\n this.targetElements.forEach(e => e.replaceWith(this.templateContent));\n },\n update() {\n this.targetElements.forEach(targetElement => {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n });\n }\n};\nconst session = new Session();\nconst cache = new Cache(session);\nconst navigator$1 = session.navigator;\nfunction start() {\n session.start();\n}\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\nfunction clearCache() {\n console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode,\n StreamActions: StreamActions\n});\nclass TurboFrameMissingError extends Error {}\nclass FrameController {\n constructor(element) {\n this.fetchResponseLoaded = _fetchResponse => {};\n this.currentFetchRequest = null;\n this.resolveVisitPromise = () => {};\n this.connected = false;\n this.hasBeenLoaded = false;\n this.ignoredAttributes = new Set();\n this.action = null;\n this.visitCachedSnapshot = _ref21 => {\n let element = _ref21.element;\n const frame = element.querySelector(\"#\" + this.element.id);\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n delete this.previousFrameElement;\n };\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n connect() {\n if (!this.connected) {\n this.connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n disconnect() {\n if (this.connected) {\n this.connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.loadSourceURL();\n }\n }\n sourceURLChanged() {\n if (this.isIgnoringChangesTo(\"src\")) return;\n if (this.element.isConnected) {\n this.complete = false;\n }\n if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n this.loadSourceURL();\n }\n }\n sourceURLReloaded() {\n const src = this.element.src;\n this.ignoringChangesToAttribute(\"complete\", () => {\n this.element.removeAttribute(\"complete\");\n });\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded;\n }\n completeChanged() {\n if (this.isIgnoringChangesTo(\"complete\")) return;\n this.loadSourceURL();\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 async loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.hasBeenLoaded = true;\n }\n }\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) {\n this.sourceURL = fetchResponse.response.url;\n }\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const document = parseHTMLDocument(html);\n const pageSnapshot = PageSnapshot.fromDocument(document);\n if (pageSnapshot.isVisitable) {\n await this.loadFrameResponse(fetchResponse, document);\n } else {\n await this.handleUnvisitableFrameResponse(fetchResponse);\n }\n }\n } finally {\n this.fetchResponseLoaded = () => {};\n }\n }\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, element);\n this.loadSourceURL();\n }\n willSubmitFormLinkToLocation(link) {\n return this.shouldInterceptNavigation(link);\n }\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.findFrameElement(link);\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n shouldInterceptLinkClick(element, _location, _event) {\n return this.shouldInterceptNavigation(element);\n }\n linkClickIntercepted(element, location) {\n this.navigateFrame(element, location);\n }\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n }\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n this.formSubmission = new FormSubmission(this, element, submitter);\n const fetchRequest = this.formSubmission.fetchRequest;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n prepareRequest(request) {\n var _a;\n request.headers[\"Turbo-Frame\"] = this.id;\n if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n requestPreventedHandlingResponse(_request, _response) {\n this.resolveVisitPromise();\n }\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n async requestFailedWithResponse(request, response) {\n await this.loadResponse(response);\n this.resolveVisitPromise();\n }\n requestErrored(request, error) {\n console.error(error);\n this.resolveVisitPromise();\n }\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n formSubmissionStarted(_ref22) {\n let formElement = _ref22.formElement;\n markAsBusy(formElement, this.findFrameElement(formElement));\n }\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n formSubmissionFinished(_ref23) {\n let formElement = _ref23.formElement;\n clearBusyState(formElement, this.findFrameElement(formElement));\n }\n allowsImmediateRender(_ref24, options) {\n let newFrame = _ref24.element;\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: Object.assign({\n newFrame\n }, options),\n cancelable: true\n });\n const defaultPrevented = event.defaultPrevented,\n render = event.detail.render;\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n return !defaultPrevented;\n }\n viewRenderedSnapshot(_snapshot, _isPreview) {}\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n viewInvalidated() {}\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n async loadFrameResponse(fetchResponse, document) {\n const newFrameElement = await this.extractForeignFrameElement(document.body);\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n if (this.view.renderPromise) await this.view.renderPromise;\n this.changeHistory();\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n this.fetchResponseLoaded(fetchResponse);\n } else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n this.handleFrameMissingFromResponse(fetchResponse);\n }\n }\n async visit(url) {\n var _a;\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n this.currentFetchRequest = request;\n return new Promise(resolve => {\n this.resolveVisitPromise = () => {\n this.resolveVisitPromise = () => {};\n this.currentFetchRequest = null;\n resolve();\n };\n request.perform();\n });\n }\n navigateFrame(element, url, submitter) {\n const frame = this.findFrameElement(element, submitter);\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n this.withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n this.action = getVisitAction(submitter, element, frame);\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const visitCachedSnapshot = frame.delegate.visitCachedSnapshot;\n frame.delegate.fetchResponseLoaded = fetchResponse => {\n if (frame.src) {\n const statusCode = fetchResponse.statusCode,\n redirected = fetchResponse.redirected;\n const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n const response = {\n statusCode,\n redirected,\n responseHTML\n };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot\n };\n if (this.action) options.action = this.action;\n session.visit(frame.src, options);\n }\n };\n }\n }\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n async handleUnvisitableFrameResponse(fetchResponse) {\n console.warn(`The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`);\n await this.visitResponse(fetchResponse.response);\n }\n willHandleFrameMissingFromResponse(fetchResponse) {\n var _this = this;\n this.element.setAttribute(\"complete\", \"\");\n const response = fetchResponse.response;\n const visit = async function (url) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (url instanceof Response) {\n _this.visitResponse(url);\n } else {\n session.visit(url, options);\n }\n };\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: {\n response,\n visit\n },\n cancelable: true\n });\n return !event.defaultPrevented;\n }\n handleFrameMissingFromResponse(fetchResponse) {\n this.view.missing();\n this.throwFrameMissingError(fetchResponse);\n }\n throwFrameMissingError(fetchResponse) {\n const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n throw new TurboFrameMissingError(message);\n }\n async visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const location = wrapped.location,\n redirected = wrapped.redirected,\n statusCode = wrapped.statusCode;\n return session.visit(location, {\n response: {\n redirected,\n statusCode,\n responseHTML\n }\n });\n }\n findFrameElement(element, submitter) {\n var _a;\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n }\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element;\n }\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element);\n }\n } catch (error) {\n console.error(error);\n return new FrameElement();\n }\n return null;\n }\n formActionIsVisitable(form, submitter) {\n const action = getAction(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n }\n shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n return false;\n }\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n if (!session.elementIsNavigatable(element)) {\n return false;\n }\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false;\n }\n return true;\n }\n get id() {\n return this.element.id;\n }\n get enabled() {\n return !this.element.disabled;\n }\n get sourceURL() {\n if (this.element.src) {\n return this.element.src;\n }\n }\n set sourceURL(sourceURL) {\n this.ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n });\n }\n get loadingStyle() {\n return this.element.loading;\n }\n get isLoading() {\n return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n }\n get complete() {\n return this.element.hasAttribute(\"complete\");\n }\n set complete(value) {\n this.ignoringChangesToAttribute(\"complete\", () => {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n } else {\n this.element.removeAttribute(\"complete\");\n }\n });\n }\n get isActive() {\n return this.element.isActive && this.connected;\n }\n get rootLocation() {\n var _a;\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n return expandURL(root);\n }\n isIgnoringChangesTo(attributeName) {\n return this.ignoredAttributes.has(attributeName);\n }\n ignoringChangesToAttribute(attributeName, callback) {\n this.ignoredAttributes.add(attributeName);\n callback();\n this.ignoredAttributes.delete(attributeName);\n }\n withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\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 async render() {\n var _a;\n return (_a = this.renderPromise) !== null && _a !== void 0 ? _a : this.renderPromise = (async () => {\n const event = this.beforeRenderEvent;\n if (this.dispatchEvent(event)) {\n await nextAnimationFrame();\n await event.detail.render(this);\n }\n })();\n }\n disconnect() {\n try {\n this.remove();\n } catch (_a) {}\n }\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach(c => c.remove());\n }\n get duplicateChildren() {\n var _a;\n const existingChildren = this.targetElements.flatMap(e => [...e.children]).filter(c => !!c.id);\n const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter(c => !!c.id).map(c => c.id);\n return existingChildren.filter(c => newChildrenIds.includes(c.id));\n }\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction;\n }\n this.raise(\"unknown action\");\n }\n this.raise(\"action attribute is missing\");\n }\n get targetElements() {\n if (this.target) {\n return this.targetElementsById;\n } else if (this.targets) {\n return this.targetElementsByQuery;\n } else {\n this.raise(\"target or targets attribute is missing\");\n }\n }\n get templateContent() {\n return this.templateElement.content.cloneNode(true);\n }\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template;\n } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild;\n }\n this.raise(\"first child element must be a <template> element\");\n }\n get action() {\n return this.getAttribute(\"action\");\n }\n get target() {\n return this.getAttribute(\"target\");\n }\n get targets() {\n return this.getAttribute(\"targets\");\n }\n raise(message) {\n throw new Error(`${this.description}: ${message}`);\n }\n get description() {\n var _a, _b;\n return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n }\n get beforeRenderEvent() {\n return new CustomEvent(\"turbo:before-stream-render\", {\n bubbles: true,\n cancelable: true,\n detail: {\n newStream: this,\n render: StreamElement.renderElement\n }\n });\n }\n get targetElementsById() {\n var _a;\n const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n if (element !== null) {\n return [element];\n } else {\n return [];\n }\n }\n get targetElementsByQuery() {\n var _a;\n const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n if (elements.length !== 0) {\n return Array.prototype.slice.call(elements);\n } else {\n return [];\n }\n }\n}\nclass StreamSourceElement extends HTMLElement {\n constructor() {\n super(...arguments);\n this.streamSource = null;\n }\n connectedCallback() {\n this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n connectStreamSource(this.streamSource);\n }\n disconnectedCallback() {\n if (this.streamSource) {\n disconnectStreamSource(this.streamSource);\n }\n }\n get src() {\n return this.getAttribute(\"src\") || \"\";\n }\n}\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n(() => {\n let element = document.currentScript;\n if (!element) return;\n if (element.hasAttribute(\"data-turbo-suppress-warning\")) return;\n element = element.parentElement;\n while (element) {\n if (element == document.body) {\n return console.warn(unindent`\n You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n Load your application’s 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 ——\n Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n `, element.outerHTML);\n }\n element = element.parentElement;\n }\n})();\nwindow.Turbo = Turbo;\nstart();\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n message += ' - ' + line + ':' + column;\n }\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\nException.prototype = new Error();\nexports['default'] = Exception;\nmodule.exports = exports['default'];","/*global self, document, DOMException */\n\n/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js */\n\n// Full polyfill for browsers with no classList support\nif (!(\"classList\" in document.createElement(\"_\"))) {\n (function (view) {\n \"use strict\";\n\n if (!('Element' in view)) return;\n var classListProp = \"classList\",\n protoProp = \"prototype\",\n elemCtrProto = view.Element[protoProp],\n objCtr = Object,\n strTrim = String[protoProp].trim || function () {\n return this.replace(/^\\s+|\\s+$/g, \"\");\n },\n arrIndexOf = Array[protoProp].indexOf || function (item) {\n var i = 0,\n len = this.length;\n for (; i < len; i++) {\n if (i in this && this[i] === item) {\n return i;\n }\n }\n return -1;\n }\n // Vendors: please allow content code to instantiate DOMExceptions\n ,\n DOMEx = function (type, message) {\n this.name = type;\n this.code = DOMException[type];\n this.message = message;\n },\n checkTokenAndGetIndex = function (classList, token) {\n if (token === \"\") {\n throw new DOMEx(\"SYNTAX_ERR\", \"An invalid or illegal string was specified\");\n }\n if (/\\s/.test(token)) {\n throw new DOMEx(\"INVALID_CHARACTER_ERR\", \"String contains an invalid character\");\n }\n return arrIndexOf.call(classList, token);\n },\n ClassList = function (elem) {\n var trimmedClasses = strTrim.call(elem.getAttribute(\"class\") || \"\"),\n classes = trimmedClasses ? trimmedClasses.split(/\\s+/) : [],\n i = 0,\n len = classes.length;\n for (; i < len; i++) {\n this.push(classes[i]);\n }\n this._updateClassName = function () {\n elem.setAttribute(\"class\", this.toString());\n };\n },\n classListProto = ClassList[protoProp] = [],\n classListGetter = function () {\n return new ClassList(this);\n };\n // Most DOMException implementations don't allow calling DOMException's toString()\n // on non-DOMExceptions. Error's toString() is sufficient here.\n DOMEx[protoProp] = Error[protoProp];\n classListProto.item = function (i) {\n return this[i] || null;\n };\n classListProto.contains = function (token) {\n token += \"\";\n return checkTokenAndGetIndex(this, token) !== -1;\n };\n classListProto.add = function () {\n var tokens = arguments,\n i = 0,\n l = tokens.length,\n token,\n updated = false;\n do {\n token = tokens[i] + \"\";\n if (checkTokenAndGetIndex(this, token) === -1) {\n this.push(token);\n updated = true;\n }\n } while (++i < l);\n if (updated) {\n this._updateClassName();\n }\n };\n classListProto.remove = function () {\n var tokens = arguments,\n i = 0,\n l = tokens.length,\n token,\n updated = false,\n index;\n do {\n token = tokens[i] + \"\";\n index = checkTokenAndGetIndex(this, token);\n while (index !== -1) {\n this.splice(index, 1);\n updated = true;\n index = checkTokenAndGetIndex(this, token);\n }\n } while (++i < l);\n if (updated) {\n this._updateClassName();\n }\n };\n classListProto.toggle = function (token, force) {\n token += \"\";\n var result = this.contains(token),\n method = result ? force !== true && \"remove\" : force !== false && \"add\";\n if (method) {\n this[method](token);\n }\n if (force === true || force === false) {\n return force;\n } else {\n return !result;\n }\n };\n classListProto.toString = function () {\n return this.join(\" \");\n };\n if (objCtr.defineProperty) {\n var classListPropDesc = {\n get: classListGetter,\n enumerable: true,\n configurable: true\n };\n try {\n objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n } catch (ex) {\n // IE 8 doesn't support enumerable:true\n if (ex.number === -0x7FF5EC54) {\n classListPropDesc.enumerable = false;\n objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n }\n }\n } else if (objCtr[protoProp].__defineGetter__) {\n elemCtrProto.__defineGetter__(classListProp, classListGetter);\n }\n })(self);\n}\n\n/* Blob.js\n * A Blob implementation.\n * 2014-07-24\n *\n * By Eli Grey, http://eligrey.com\n * By Devin Samarin, https://github.com/dsamarin\n * License: X11/MIT\n * See https://github.com/eligrey/Blob.js/blob/master/LICENSE.md\n */\n\n/*global self, unescape */\n/*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,\n plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */\n\n(function (view) {\n \"use strict\";\n\n view.URL = view.URL || view.webkitURL;\n if (view.Blob && view.URL) {\n try {\n new Blob();\n return;\n } catch (e) {}\n }\n\n // Internally we use a BlobBuilder implementation to base Blob off of\n // in order to support older browsers that only have BlobBuilder\n var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || function (view) {\n var get_class = function (object) {\n return Object.prototype.toString.call(object).match(/^\\[object\\s(.*)\\]$/)[1];\n },\n FakeBlobBuilder = function BlobBuilder() {\n this.data = [];\n },\n FakeBlob = function Blob(data, type, encoding) {\n this.data = data;\n this.size = data.length;\n this.type = type;\n this.encoding = encoding;\n },\n FBB_proto = FakeBlobBuilder.prototype,\n FB_proto = FakeBlob.prototype,\n FileReaderSync = view.FileReaderSync,\n FileException = function (type) {\n this.code = this[this.name = type];\n },\n file_ex_codes = (\"NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR \" + \"NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR\").split(\" \"),\n file_ex_code = file_ex_codes.length,\n real_URL = view.URL || view.webkitURL || view,\n real_create_object_URL = real_URL.createObjectURL,\n real_revoke_object_URL = real_URL.revokeObjectURL,\n URL = real_URL,\n btoa = view.btoa,\n atob = view.atob,\n ArrayBuffer = view.ArrayBuffer,\n Uint8Array = view.Uint8Array,\n origin = /^[\\w-]+:\\/*\\[?[\\w\\.:-]+\\]?(?::[0-9]+)?/;\n FakeBlob.fake = FB_proto.fake = true;\n while (file_ex_code--) {\n FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;\n }\n // Polyfill URL\n if (!real_URL.createObjectURL) {\n URL = view.URL = function (uri) {\n var uri_info = document.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\"),\n uri_origin;\n uri_info.href = uri;\n if (!(\"origin\" in uri_info)) {\n if (uri_info.protocol.toLowerCase() === \"data:\") {\n uri_info.origin = null;\n } else {\n uri_origin = uri.match(origin);\n uri_info.origin = uri_origin && uri_origin[1];\n }\n }\n return uri_info;\n };\n }\n URL.createObjectURL = function (blob) {\n var type = blob.type,\n data_URI_header;\n if (type === null) {\n type = \"application/octet-stream\";\n }\n if (blob instanceof FakeBlob) {\n data_URI_header = \"data:\" + type;\n if (blob.encoding === \"base64\") {\n return data_URI_header + \";base64,\" + blob.data;\n } else if (blob.encoding === \"URI\") {\n return data_URI_header + \",\" + decodeURIComponent(blob.data);\n }\n if (btoa) {\n return data_URI_header + \";base64,\" + btoa(blob.data);\n } else {\n return data_URI_header + \",\" + encodeURIComponent(blob.data);\n }\n } else if (real_create_object_URL) {\n return real_create_object_URL.call(real_URL, blob);\n }\n };\n URL.revokeObjectURL = function (object_URL) {\n if (object_URL.substring(0, 5) !== \"data:\" && real_revoke_object_URL) {\n real_revoke_object_URL.call(real_URL, object_URL);\n }\n };\n FBB_proto.append = function (data /*, endings*/) {\n var bb = this.data;\n // decode data to a binary string\n if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {\n var str = \"\",\n buf = new Uint8Array(data),\n i = 0,\n buf_len = buf.length;\n for (; i < buf_len; i++) {\n str += String.fromCharCode(buf[i]);\n }\n bb.push(str);\n } else if (get_class(data) === \"Blob\" || get_class(data) === \"File\") {\n if (FileReaderSync) {\n var fr = new FileReaderSync();\n bb.push(fr.readAsBinaryString(data));\n } else {\n // async FileReader won't work as BlobBuilder is sync\n throw new FileException(\"NOT_READABLE_ERR\");\n }\n } else if (data instanceof FakeBlob) {\n if (data.encoding === \"base64\" && atob) {\n bb.push(atob(data.data));\n } else if (data.encoding === \"URI\") {\n bb.push(decodeURIComponent(data.data));\n } else if (data.encoding === \"raw\") {\n bb.push(data.data);\n }\n } else {\n if (typeof data !== \"string\") {\n data += \"\"; // convert unsupported types to strings\n }\n // decode UTF-16 to binary string\n bb.push(unescape(encodeURIComponent(data)));\n }\n };\n FBB_proto.getBlob = function (type) {\n if (!arguments.length) {\n type = null;\n }\n return new FakeBlob(this.data.join(\"\"), type, \"raw\");\n };\n FBB_proto.toString = function () {\n return \"[object BlobBuilder]\";\n };\n FB_proto.slice = function (start, end, type) {\n var args = arguments.length;\n if (args < 3) {\n type = null;\n }\n return new FakeBlob(this.data.slice(start, args > 1 ? end : this.data.length), type, this.encoding);\n };\n FB_proto.toString = function () {\n return \"[object Blob]\";\n };\n FB_proto.close = function () {\n this.size = 0;\n delete this.data;\n };\n return FakeBlobBuilder;\n }(view);\n view.Blob = function (blobParts, options) {\n var type = options ? options.type || \"\" : \"\";\n var builder = new BlobBuilder();\n if (blobParts) {\n for (var i = 0, len = blobParts.length; i < len; i++) {\n if (Uint8Array && blobParts[i] instanceof Uint8Array) {\n builder.append(blobParts[i].buffer);\n } else {\n builder.append(blobParts[i]);\n }\n }\n }\n var blob = builder.getBlob(type);\n if (!blob.slice && blob.webkitSlice) {\n blob.slice = blob.webkitSlice;\n }\n return blob;\n };\n var getPrototypeOf = Object.getPrototypeOf || function (object) {\n return object.__proto__;\n };\n view.Blob.prototype = getPrototypeOf(new view.Blob());\n})(typeof self !== \"undefined\" && self || typeof window !== \"undefined\" && window || this.content || this);\n(function (root, factory) {\n 'use strict';\n\n var isElectron = typeof module === 'object' && typeof process !== 'undefined' && process && process.versions && process.versions.electron;\n if (!isElectron && typeof module === 'object') {\n module.exports = factory;\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return factory;\n });\n } else {\n root.MediumEditor = factory;\n }\n})(this, function () {\n 'use strict';\n\n function MediumEditor(elements, options) {\n 'use strict';\n\n return this.init(elements, options);\n }\n MediumEditor.extensions = {};\n /*jshint unused: true */\n (function (window) {\n 'use strict';\n\n function copyInto(overwrite, dest) {\n var prop,\n sources = Array.prototype.slice.call(arguments, 2);\n dest = dest || {};\n for (var i = 0; i < sources.length; i++) {\n var source = sources[i];\n if (source) {\n for (prop in source) {\n if (source.hasOwnProperty(prop) && typeof source[prop] !== 'undefined' && (overwrite || dest.hasOwnProperty(prop) === false)) {\n dest[prop] = source[prop];\n }\n }\n }\n }\n return dest;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/contains\n // Some browsers (including phantom) don't return true for Node.contains(child)\n // if child is a text node. Detect these cases here and use a fallback\n // for calls to Util.isDescendant()\n var nodeContainsWorksWithTextNodes = false;\n try {\n var testParent = document.createElement('div'),\n testText = document.createTextNode(' ');\n testParent.appendChild(testText);\n nodeContainsWorksWithTextNodes = testParent.contains(testText);\n } catch (exc) {}\n var Util = {\n // http://stackoverflow.com/questions/17907445/how-to-detect-ie11#comment30165888_17907562\n // by rg89\n isIE: navigator.appName === 'Microsoft Internet Explorer' || navigator.appName === 'Netscape' && new RegExp('Trident/.*rv:([0-9]{1,}[.0-9]{0,})').exec(navigator.userAgent) !== null,\n isEdge: /Edge\\/\\d+/.exec(navigator.userAgent) !== null,\n // if firefox\n isFF: navigator.userAgent.toLowerCase().indexOf('firefox') > -1,\n // http://stackoverflow.com/a/11752084/569101\n isMac: window.navigator.platform.toUpperCase().indexOf('MAC') >= 0,\n // https://github.com/jashkenas/underscore\n // Lonely letter MUST USE the uppercase code\n keyCode: {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n DELETE: 46,\n K: 75,\n // K keycode, and not k\n M: 77,\n V: 86\n },\n /**\n * Returns true if it's metaKey on Mac, or ctrlKey on non-Mac.\n * See #591\n */\n isMetaCtrlKey: function (event) {\n if (Util.isMac && event.metaKey || !Util.isMac && event.ctrlKey) {\n return true;\n }\n return false;\n },\n /**\n * Returns true if the key associated to the event is inside keys array\n *\n * @see : https://github.com/jquery/jquery/blob/0705be475092aede1eddae01319ec931fb9c65fc/src/event.js#L473-L484\n * @see : http://stackoverflow.com/q/4471582/569101\n */\n isKey: function (event, keys) {\n var keyCode = Util.getKeyCode(event);\n\n // it's not an array let's just compare strings!\n if (false === Array.isArray(keys)) {\n return keyCode === keys;\n }\n if (-1 === keys.indexOf(keyCode)) {\n return false;\n }\n return true;\n },\n getKeyCode: function (event) {\n var keyCode = event.which;\n\n // getting the key code from event\n if (null === keyCode) {\n keyCode = event.charCode !== null ? event.charCode : event.keyCode;\n }\n return keyCode;\n },\n blockContainerElementNames: [\n // elements our editor generates\n 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'pre', 'ul', 'li', 'ol',\n // all other known block elements\n 'address', 'article', 'aside', 'audio', 'canvas', 'dd', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'header', 'hgroup', 'main', 'nav', 'noscript', 'output', 'section', 'video', 'table', 'thead', 'tbody', 'tfoot', 'tr', 'th', 'td'],\n emptyElementNames: ['br', 'col', 'colgroup', 'hr', 'img', 'input', 'source', 'wbr'],\n extend: function extend( /* dest, source1, source2, ...*/\n ) {\n var args = [true].concat(Array.prototype.slice.call(arguments));\n return copyInto.apply(this, args);\n },\n defaults: function defaults( /*dest, source1, source2, ...*/\n ) {\n var args = [false].concat(Array.prototype.slice.call(arguments));\n return copyInto.apply(this, args);\n },\n /*\n * Create a link around the provided text nodes which must be adjacent to each other and all be\n * descendants of the same closest block container. If the preconditions are not met, unexpected\n * behavior will result.\n */\n createLink: function (document, textNodes, href, target) {\n var anchor = document.createElement('a');\n Util.moveTextRangeIntoElement(textNodes[0], textNodes[textNodes.length - 1], anchor);\n anchor.setAttribute('href', href);\n if (target) {\n if (target === '_blank') {\n anchor.setAttribute('rel', 'noopener noreferrer');\n }\n anchor.setAttribute('target', target);\n }\n return anchor;\n },\n /*\n * Given the provided match in the format {start: 1, end: 2} where start and end are indices into the\n * textContent of the provided element argument, modify the DOM inside element to ensure that the text\n * identified by the provided match can be returned as text nodes that contain exactly that text, without\n * any additional text at the beginning or end of the returned array of adjacent text nodes.\n *\n * The only DOM manipulation performed by this function is splitting the text nodes, non-text nodes are\n * not affected in any way.\n */\n findOrCreateMatchingTextNodes: function (document, element, match) {\n var treeWalker = document.createTreeWalker(element, NodeFilter.SHOW_ALL, null, false),\n matchedNodes = [],\n currentTextIndex = 0,\n startReached = false,\n currentNode = null,\n newNode = null;\n while ((currentNode = treeWalker.nextNode()) !== null) {\n if (currentNode.nodeType > 3) {\n continue;\n } else if (currentNode.nodeType === 3) {\n if (!startReached && match.start < currentTextIndex + currentNode.nodeValue.length) {\n startReached = true;\n newNode = Util.splitStartNodeIfNeeded(currentNode, match.start, currentTextIndex);\n }\n if (startReached) {\n Util.splitEndNodeIfNeeded(currentNode, newNode, match.end, currentTextIndex);\n }\n if (startReached && currentTextIndex === match.end) {\n break; // Found the node(s) corresponding to the link. Break out and move on to the next.\n } else if (startReached && currentTextIndex > match.end + 1) {\n throw new Error('PerformLinking overshot the target!'); // should never happen...\n }\n\n if (startReached) {\n matchedNodes.push(newNode || currentNode);\n }\n currentTextIndex += currentNode.nodeValue.length;\n if (newNode !== null) {\n currentTextIndex += newNode.nodeValue.length;\n // Skip the newNode as we'll already have pushed it to the matches\n treeWalker.nextNode();\n }\n newNode = null;\n } else if (currentNode.tagName.toLowerCase() === 'img') {\n if (!startReached && match.start <= currentTextIndex) {\n startReached = true;\n }\n if (startReached) {\n matchedNodes.push(currentNode);\n }\n }\n }\n return matchedNodes;\n },\n /*\n * Given the provided text node and text coordinates, split the text node if needed to make it align\n * precisely with the coordinates.\n *\n * This function is intended to be called from Util.findOrCreateMatchingTextNodes.\n */\n splitStartNodeIfNeeded: function (currentNode, matchStartIndex, currentTextIndex) {\n if (matchStartIndex !== currentTextIndex) {\n return currentNode.splitText(matchStartIndex - currentTextIndex);\n }\n return null;\n },\n /*\n * Given the provided text node and text coordinates, split the text node if needed to make it align\n * precisely with the coordinates. The newNode argument should from the result of Util.splitStartNodeIfNeeded,\n * if that function has been called on the same currentNode.\n *\n * This function is intended to be called from Util.findOrCreateMatchingTextNodes.\n */\n splitEndNodeIfNeeded: function (currentNode, newNode, matchEndIndex, currentTextIndex) {\n var textIndexOfEndOfFarthestNode, endSplitPoint;\n textIndexOfEndOfFarthestNode = currentTextIndex + currentNode.nodeValue.length + (newNode ? newNode.nodeValue.length : 0) - 1;\n endSplitPoint = matchEndIndex - currentTextIndex - (newNode ? currentNode.nodeValue.length : 0);\n if (textIndexOfEndOfFarthestNode >= matchEndIndex && currentTextIndex !== textIndexOfEndOfFarthestNode && endSplitPoint !== 0) {\n (newNode || currentNode).splitText(endSplitPoint);\n }\n },\n /*\n * Take an element, and break up all of its text content into unique pieces such that:\n * 1) All text content of the elements are in separate blocks. No piece of text content should span\n * across multiple blocks. This means no element return by this function should have\n * any blocks as children.\n * 2) The union of the textcontent of all of the elements returned here covers all\n * of the text within the element.\n *\n *\n * EXAMPLE:\n * In the event that we have something like:\n *\n * <blockquote>\n * <p>Some Text</p>\n * <ol>\n * <li>List Item 1</li>\n * <li>List Item 2</li>\n * </ol>\n * </blockquote>\n *\n * This function would return these elements as an array:\n * [ <p>Some Text</p>, <li>List Item 1</li>, <li>List Item 2</li> ]\n *\n * Since the <blockquote> and <ol> elements contain blocks within them they are not returned.\n * Since the <p> and <li>'s don't contain block elements and cover all the text content of the\n * <blockquote> container, they are the elements returned.\n */\n splitByBlockElements: function (element) {\n if (element.nodeType !== 3 && element.nodeType !== 1) {\n return [];\n }\n var toRet = [],\n blockElementQuery = MediumEditor.util.blockContainerElementNames.join(',');\n if (element.nodeType === 3 || element.querySelectorAll(blockElementQuery).length === 0) {\n return [element];\n }\n for (var i = 0; i < element.childNodes.length; i++) {\n var child = element.childNodes[i];\n if (child.nodeType === 3) {\n toRet.push(child);\n } else if (child.nodeType === 1) {\n var blockElements = child.querySelectorAll(blockElementQuery);\n if (blockElements.length === 0) {\n toRet.push(child);\n } else {\n toRet = toRet.concat(MediumEditor.util.splitByBlockElements(child));\n }\n }\n }\n return toRet;\n },\n // Find the next node in the DOM tree that represents any text that is being\n // displayed directly next to the targetNode (passed as an argument)\n // Text that appears directly next to the current node can be:\n // - A sibling text node\n // - A descendant of a sibling element\n // - A sibling text node of an ancestor\n // - A descendant of a sibling element of an ancestor\n findAdjacentTextNodeWithContent: function findAdjacentTextNodeWithContent(rootNode, targetNode, ownerDocument) {\n var pastTarget = false,\n nextNode,\n nodeIterator = ownerDocument.createNodeIterator(rootNode, NodeFilter.SHOW_TEXT, null, false);\n\n // Use a native NodeIterator to iterate over all the text nodes that are descendants\n // of the rootNode. Once past the targetNode, choose the first non-empty text node\n nextNode = nodeIterator.nextNode();\n while (nextNode) {\n if (nextNode === targetNode) {\n pastTarget = true;\n } else if (pastTarget) {\n if (nextNode.nodeType === 3 && nextNode.nodeValue && nextNode.nodeValue.trim().length > 0) {\n break;\n }\n }\n nextNode = nodeIterator.nextNode();\n }\n return nextNode;\n },\n // Find an element's previous sibling within a medium-editor element\n // If one doesn't exist, find the closest ancestor's previous sibling\n findPreviousSibling: function (node) {\n if (!node || Util.isMediumEditorElement(node)) {\n return false;\n }\n var previousSibling = node.previousSibling;\n while (!previousSibling && !Util.isMediumEditorElement(node.parentNode)) {\n node = node.parentNode;\n previousSibling = node.previousSibling;\n }\n return previousSibling;\n },\n isDescendant: function isDescendant(parent, child, checkEquality) {\n if (!parent || !child) {\n return false;\n }\n if (parent === child) {\n return !!checkEquality;\n }\n // If parent is not an element, it can't have any descendants\n if (parent.nodeType !== 1) {\n return false;\n }\n if (nodeContainsWorksWithTextNodes || child.nodeType !== 3) {\n return parent.contains(child);\n }\n var node = child.parentNode;\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n },\n // https://github.com/jashkenas/underscore\n isElement: function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n },\n // https://github.com/jashkenas/underscore\n throttle: function (func, wait) {\n var THROTTLE_INTERVAL = 50,\n context,\n args,\n result,\n timeout = null,\n previous = 0,\n later = function () {\n previous = Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n if (!wait && wait !== 0) {\n wait = THROTTLE_INTERVAL;\n }\n return function () {\n var now = Date.now(),\n remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n } else if (!timeout) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n },\n traverseUp: function (current, testElementFunction) {\n if (!current) {\n return false;\n }\n do {\n if (current.nodeType === 1) {\n if (testElementFunction(current)) {\n return current;\n }\n // do not traverse upwards past the nearest containing editor\n if (Util.isMediumEditorElement(current)) {\n return false;\n }\n }\n current = current.parentNode;\n } while (current);\n return false;\n },\n htmlEntities: function (str) {\n // converts special characters (like <) into their escaped/encoded values (like <).\n // This allows you to show to display the string without the browser reading it as HTML.\n return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"');\n },\n // http://stackoverflow.com/questions/6690752/insert-html-at-caret-in-a-contenteditable-div\n insertHTMLCommand: function (doc, html) {\n var selection,\n range,\n el,\n fragment,\n node,\n lastNode,\n toReplace,\n res = false,\n ecArgs = ['insertHTML', false, html];\n\n /* Edge's implementation of insertHTML is just buggy right now:\n * - Doesn't allow leading white space at the beginning of an element\n * - Found a case when a <font size=\"2\"> tag was inserted when calling alignCenter inside a blockquote\n *\n * There are likely other bugs, these are just the ones we found so far.\n * For now, let's just use the same fallback we did for IE\n */\n if (!MediumEditor.util.isEdge && doc.queryCommandSupported('insertHTML')) {\n try {\n return doc.execCommand.apply(doc, ecArgs);\n } catch (ignore) {}\n }\n selection = doc.getSelection();\n if (selection.rangeCount) {\n range = selection.getRangeAt(0);\n toReplace = range.commonAncestorContainer;\n\n // https://github.com/yabwe/medium-editor/issues/748\n // If the selection is an empty editor element, create a temporary text node inside of the editor\n // and select it so that we don't delete the editor element\n if (Util.isMediumEditorElement(toReplace) && !toReplace.firstChild) {\n range.selectNode(toReplace.appendChild(doc.createTextNode('')));\n } else if (toReplace.nodeType === 3 && range.startOffset === 0 && range.endOffset === toReplace.nodeValue.length || toReplace.nodeType !== 3 && toReplace.innerHTML === range.toString()) {\n // Ensure range covers maximum amount of nodes as possible\n // By moving up the DOM and selecting ancestors whose only child is the range\n while (!Util.isMediumEditorElement(toReplace) && toReplace.parentNode && toReplace.parentNode.childNodes.length === 1 && !Util.isMediumEditorElement(toReplace.parentNode)) {\n toReplace = toReplace.parentNode;\n }\n range.selectNode(toReplace);\n }\n range.deleteContents();\n el = doc.createElement('div');\n el.innerHTML = html;\n fragment = doc.createDocumentFragment();\n while (el.firstChild) {\n node = el.firstChild;\n lastNode = fragment.appendChild(node);\n }\n range.insertNode(fragment);\n\n // Preserve the selection:\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n MediumEditor.selection.selectRange(doc, range);\n }\n res = true;\n }\n\n // https://github.com/yabwe/medium-editor/issues/992\n // If we're monitoring calls to execCommand, notify listeners as if a real call had happened\n if (doc.execCommand.callListeners) {\n doc.execCommand.callListeners(ecArgs, res);\n }\n return res;\n },\n execFormatBlock: function (doc, tagName) {\n // Get the top level block element that contains the selection\n var blockContainer = Util.getTopBlockContainer(MediumEditor.selection.getSelectionStart(doc)),\n childNodes;\n\n // Special handling for blockquote\n if (tagName === 'blockquote') {\n if (blockContainer) {\n childNodes = Array.prototype.slice.call(blockContainer.childNodes);\n // Check if the blockquote has a block element as a child (nested blocks)\n if (childNodes.some(function (childNode) {\n return Util.isBlockContainer(childNode);\n })) {\n // FF handles blockquote differently on formatBlock\n // allowing nesting, we need to use outdent\n // https://developer.mozilla.org/en-US/docs/Rich-Text_Editing_in_Mozilla\n return doc.execCommand('outdent', false, null);\n }\n }\n\n // When IE blockquote needs to be called as indent\n // http://stackoverflow.com/questions/1816223/rich-text-editor-with-blockquote-function/1821777#1821777\n if (Util.isIE) {\n return doc.execCommand('indent', false, tagName);\n }\n }\n\n // If the blockContainer is already the element type being passed in\n // treat it as 'undo' formatting and just convert it to a <p>\n if (blockContainer && tagName === blockContainer.nodeName.toLowerCase()) {\n tagName = 'p';\n }\n\n // When IE we need to add <> to heading elements\n // http://stackoverflow.com/questions/10741831/execcommand-formatblock-headings-in-ie\n if (Util.isIE) {\n tagName = '<' + tagName + '>';\n }\n\n // When FF, IE and Edge, we have to handle blockquote node seperately as 'formatblock' does not work.\n // https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand#Commands\n if (blockContainer && blockContainer.nodeName.toLowerCase() === 'blockquote') {\n // For IE, just use outdent\n if (Util.isIE && tagName === '<p>') {\n return doc.execCommand('outdent', false, tagName);\n }\n\n // For Firefox and Edge, make sure there's a nested block element before calling outdent\n if ((Util.isFF || Util.isEdge) && tagName === 'p') {\n childNodes = Array.prototype.slice.call(blockContainer.childNodes);\n // If there are some non-block elements we need to wrap everything in a <p> before we outdent\n if (childNodes.some(function (childNode) {\n return !Util.isBlockContainer(childNode);\n })) {\n doc.execCommand('formatBlock', false, tagName);\n }\n return doc.execCommand('outdent', false, tagName);\n }\n }\n return doc.execCommand('formatBlock', false, tagName);\n },\n /**\n * Set target to blank on the given el element\n *\n * TODO: not sure if this should be here\n *\n * When creating a link (using core -> createLink) the selection returned by Firefox will be the parent of the created link\n * instead of the created link itself (as it is for Chrome for example), so we retrieve all \"a\" children to grab the good one by\n * using `anchorUrl` to ensure that we are adding target=\"_blank\" on the good one.\n * This isn't a bulletproof solution anyway ..\n */\n setTargetBlank: function (el, anchorUrl) {\n var i,\n url = anchorUrl || false;\n if (el.nodeName.toLowerCase() === 'a') {\n el.target = '_blank';\n el.rel = 'noopener noreferrer';\n } else {\n el = el.getElementsByTagName('a');\n for (i = 0; i < el.length; i += 1) {\n if (false === url || url === el[i].attributes.href.value) {\n el[i].target = '_blank';\n el[i].rel = 'noopener noreferrer';\n }\n }\n }\n },\n /*\n * this function is called to explicitly remove the target='_blank' as FF holds on to _blank value even\n * after unchecking the checkbox on anchor form\n */\n removeTargetBlank: function (el, anchorUrl) {\n var i;\n if (el.nodeName.toLowerCase() === 'a') {\n el.removeAttribute('target');\n el.removeAttribute('rel');\n } else {\n el = el.getElementsByTagName('a');\n for (i = 0; i < el.length; i += 1) {\n if (anchorUrl === el[i].attributes.href.value) {\n el[i].removeAttribute('target');\n el[i].removeAttribute('rel');\n }\n }\n }\n },\n /*\n * this function adds one or several classes on an a element.\n * if el parameter is not an a, it will look for a children of el.\n * if no a children are found, it will look for the a parent.\n */\n addClassToAnchors: function (el, buttonClass) {\n var classes = buttonClass.split(' '),\n i,\n j;\n if (el.nodeName.toLowerCase() === 'a') {\n for (j = 0; j < classes.length; j += 1) {\n el.classList.add(classes[j]);\n }\n } else {\n var aChildren = el.getElementsByTagName('a');\n if (aChildren.length === 0) {\n var parentAnchor = Util.getClosestTag(el, 'a');\n el = parentAnchor ? [parentAnchor] : [];\n } else {\n el = aChildren;\n }\n for (i = 0; i < el.length; i += 1) {\n for (j = 0; j < classes.length; j += 1) {\n el[i].classList.add(classes[j]);\n }\n }\n }\n },\n isListItem: function (node) {\n if (!node) {\n return false;\n }\n if (node.nodeName.toLowerCase() === 'li') {\n return true;\n }\n var parentNode = node.parentNode,\n tagName = parentNode.nodeName.toLowerCase();\n while (tagName === 'li' || !Util.isBlockContainer(parentNode) && tagName !== 'div') {\n if (tagName === 'li') {\n return true;\n }\n parentNode = parentNode.parentNode;\n if (parentNode) {\n tagName = parentNode.nodeName.toLowerCase();\n } else {\n return false;\n }\n }\n return false;\n },\n cleanListDOM: function (ownerDocument, element) {\n if (element.nodeName.toLowerCase() !== 'li') {\n return;\n }\n var list = element.parentElement;\n if (list.parentElement.nodeName.toLowerCase() === 'p') {\n // yes we need to clean up\n Util.unwrap(list.parentElement, ownerDocument);\n\n // move cursor at the end of the text inside the list\n // for some unknown reason, the cursor is moved to end of the \"visual\" line\n MediumEditor.selection.moveCursor(ownerDocument, element.firstChild, element.firstChild.textContent.length);\n }\n },\n /* splitDOMTree\n *\n * Given a root element some descendant element, split the root element\n * into its own element containing the descendant element and all elements\n * on the left or right side of the descendant ('right' is default)\n *\n * example:\n *\n * <div>\n * / | \\\n * <span> <span> <span>\n * / \\ / \\ / \\\n * 1 2 3 4 5 6\n *\n * If I wanted to split this tree given the <div> as the root and \"4\" as the leaf\n * the result would be (the prime ' marks indicates nodes that are created as clones):\n *\n * SPLITTING OFF 'RIGHT' TREE SPLITTING OFF 'LEFT' TREE\n *\n * <div> <div>' <div>' <div>\n * / \\ / \\ / \\ |\n * <span> <span> <span>' <span> <span> <span> <span>\n * / \\ | | / \\ /\\ /\\ /\\\n * 1 2 3 4 5 6 1 2 3 4 5 6\n *\n * The above example represents splitting off the 'right' or 'left' part of a tree, where\n * the <div>' would be returned as an element not appended to the DOM, and the <div>\n * would remain in place where it was\n *\n */\n splitOffDOMTree: function (rootNode, leafNode, splitLeft) {\n var splitOnNode = leafNode,\n createdNode = null,\n splitRight = !splitLeft;\n\n // loop until we hit the root\n while (splitOnNode !== rootNode) {\n var currParent = splitOnNode.parentNode,\n newParent = currParent.cloneNode(false),\n targetNode = splitRight ? splitOnNode : currParent.firstChild,\n appendLast;\n\n // Create a new parent element which is a clone of the current parent\n if (createdNode) {\n if (splitRight) {\n // If we're splitting right, add previous created element before siblings\n newParent.appendChild(createdNode);\n } else {\n // If we're splitting left, add previous created element last\n appendLast = createdNode;\n }\n }\n createdNode = newParent;\n while (targetNode) {\n var sibling = targetNode.nextSibling;\n // Special handling for the 'splitNode'\n if (targetNode === splitOnNode) {\n if (!targetNode.hasChildNodes()) {\n targetNode.parentNode.removeChild(targetNode);\n } else {\n // For the node we're splitting on, if it has children, we need to clone it\n // and not just move it\n targetNode = targetNode.cloneNode(false);\n }\n // If the resulting split node has content, add it\n if (targetNode.textContent) {\n createdNode.appendChild(targetNode);\n }\n targetNode = splitRight ? sibling : null;\n } else {\n // For general case, just remove the element and only\n // add it to the split tree if it contains something\n targetNode.parentNode.removeChild(targetNode);\n if (targetNode.hasChildNodes() || targetNode.textContent) {\n createdNode.appendChild(targetNode);\n }\n targetNode = sibling;\n }\n }\n\n // If we had an element we wanted to append at the end, do that now\n if (appendLast) {\n createdNode.appendChild(appendLast);\n }\n splitOnNode = currParent;\n }\n return createdNode;\n },\n moveTextRangeIntoElement: function (startNode, endNode, newElement) {\n if (!startNode || !endNode) {\n return false;\n }\n var rootNode = Util.findCommonRoot(startNode, endNode);\n if (!rootNode) {\n return false;\n }\n if (endNode === startNode) {\n var temp = startNode.parentNode,\n sibling = startNode.nextSibling;\n temp.removeChild(startNode);\n newElement.appendChild(startNode);\n if (sibling) {\n temp.insertBefore(newElement, sibling);\n } else {\n temp.appendChild(newElement);\n }\n return newElement.hasChildNodes();\n }\n\n // create rootChildren array which includes all the children\n // we care about\n var rootChildren = [],\n firstChild,\n lastChild,\n nextNode;\n for (var i = 0; i < rootNode.childNodes.length; i++) {\n nextNode = rootNode.childNodes[i];\n if (!firstChild) {\n if (Util.isDescendant(nextNode, startNode, true)) {\n firstChild = nextNode;\n }\n } else {\n if (Util.isDescendant(nextNode, endNode, true)) {\n lastChild = nextNode;\n break;\n } else {\n rootChildren.push(nextNode);\n }\n }\n }\n var afterLast = lastChild.nextSibling,\n fragment = rootNode.ownerDocument.createDocumentFragment();\n\n // build up fragment on startNode side of tree\n if (firstChild === startNode) {\n firstChild.parentNode.removeChild(firstChild);\n fragment.appendChild(firstChild);\n } else {\n fragment.appendChild(Util.splitOffDOMTree(firstChild, startNode));\n }\n\n // add any elements between firstChild & lastChild\n rootChildren.forEach(function (element) {\n element.parentNode.removeChild(element);\n fragment.appendChild(element);\n });\n\n // build up fragment on endNode side of the tree\n if (lastChild === endNode) {\n lastChild.parentNode.removeChild(lastChild);\n fragment.appendChild(lastChild);\n } else {\n fragment.appendChild(Util.splitOffDOMTree(lastChild, endNode, true));\n }\n\n // Add fragment into passed in element\n newElement.appendChild(fragment);\n if (lastChild.parentNode === rootNode) {\n // If last child is in the root, insert newElement in front of it\n rootNode.insertBefore(newElement, lastChild);\n } else if (afterLast) {\n // If last child was removed, but it had a sibling, insert in front of it\n rootNode.insertBefore(newElement, afterLast);\n } else {\n // lastChild was removed and was the last actual element just append\n rootNode.appendChild(newElement);\n }\n return newElement.hasChildNodes();\n },\n /* based on http://stackoverflow.com/a/6183069 */\n depthOfNode: function (inNode) {\n var theDepth = 0,\n node = inNode;\n while (node.parentNode !== null) {\n node = node.parentNode;\n theDepth++;\n }\n return theDepth;\n },\n findCommonRoot: function (inNode1, inNode2) {\n var depth1 = Util.depthOfNode(inNode1),\n depth2 = Util.depthOfNode(inNode2),\n node1 = inNode1,\n node2 = inNode2;\n while (depth1 !== depth2) {\n if (depth1 > depth2) {\n node1 = node1.parentNode;\n depth1 -= 1;\n } else {\n node2 = node2.parentNode;\n depth2 -= 1;\n }\n }\n while (node1 !== node2) {\n node1 = node1.parentNode;\n node2 = node2.parentNode;\n }\n return node1;\n },\n /* END - based on http://stackoverflow.com/a/6183069 */\n\n isElementAtBeginningOfBlock: function (node) {\n var textVal, sibling;\n while (!Util.isBlockContainer(node) && !Util.isMediumEditorElement(node)) {\n sibling = node;\n while (sibling = sibling.previousSibling) {\n textVal = sibling.nodeType === 3 ? sibling.nodeValue : sibling.textContent;\n if (textVal.length > 0) {\n return false;\n }\n }\n node = node.parentNode;\n }\n return true;\n },\n isMediumEditorElement: function (element) {\n return element && element.getAttribute && !!element.getAttribute('data-medium-editor-element');\n },\n getContainerEditorElement: function (element) {\n return Util.traverseUp(element, function (node) {\n return Util.isMediumEditorElement(node);\n });\n },\n isBlockContainer: function (element) {\n return element && element.nodeType !== 3 && Util.blockContainerElementNames.indexOf(element.nodeName.toLowerCase()) !== -1;\n },\n /* Finds the closest ancestor which is a block container element\n * If element is within editor element but not within any other block element,\n * the editor element is returned\n */\n getClosestBlockContainer: function (node) {\n return Util.traverseUp(node, function (node) {\n return Util.isBlockContainer(node) || Util.isMediumEditorElement(node);\n });\n },\n /* Finds highest level ancestor element which is a block container element\n * If element is within editor element but not within any other block element,\n * the editor element is returned\n */\n getTopBlockContainer: function (element) {\n var topBlock = Util.isBlockContainer(element) ? element : false;\n Util.traverseUp(element, function (el) {\n if (Util.isBlockContainer(el)) {\n topBlock = el;\n }\n if (!topBlock && Util.isMediumEditorElement(el)) {\n topBlock = el;\n return true;\n }\n return false;\n });\n return topBlock;\n },\n getFirstSelectableLeafNode: function (element) {\n while (element && element.firstChild) {\n element = element.firstChild;\n }\n\n // We don't want to set the selection to an element that can't have children, this messes up Gecko.\n element = Util.traverseUp(element, function (el) {\n return Util.emptyElementNames.indexOf(el.nodeName.toLowerCase()) === -1;\n });\n // Selecting at the beginning of a table doesn't work in PhantomJS.\n if (element.nodeName.toLowerCase() === 'table') {\n var firstCell = element.querySelector('th, td');\n if (firstCell) {\n element = firstCell;\n }\n }\n return element;\n },\n // TODO: remove getFirstTextNode AND _getFirstTextNode when jumping in 6.0.0 (no code references)\n getFirstTextNode: function (element) {\n Util.warn('getFirstTextNode is deprecated and will be removed in version 6.0.0');\n return Util._getFirstTextNode(element);\n },\n _getFirstTextNode: function (element) {\n if (element.nodeType === 3) {\n return element;\n }\n for (var i = 0; i < element.childNodes.length; i++) {\n var textNode = Util._getFirstTextNode(element.childNodes[i]);\n if (textNode !== null) {\n return textNode;\n }\n }\n return null;\n },\n ensureUrlHasProtocol: function (url) {\n if (url.indexOf('://') === -1) {\n return 'http://' + url;\n }\n return url;\n },\n warn: function () {\n if (window.console !== undefined && typeof window.console.warn === 'function') {\n window.console.warn.apply(window.console, arguments);\n }\n },\n deprecated: function (oldName, newName, version) {\n // simple deprecation warning mechanism.\n var m = oldName + ' is deprecated, please use ' + newName + ' instead.';\n if (version) {\n m += ' Will be removed in ' + version;\n }\n Util.warn(m);\n },\n deprecatedMethod: function (oldName, newName, args, version) {\n // run the replacement and warn when someone calls a deprecated method\n Util.deprecated(oldName, newName, version);\n if (typeof this[newName] === 'function') {\n this[newName].apply(this, args);\n }\n },\n cleanupAttrs: function (el, attrs) {\n attrs.forEach(function (attr) {\n el.removeAttribute(attr);\n });\n },\n cleanupTags: function (el, tags) {\n if (tags.indexOf(el.nodeName.toLowerCase()) !== -1) {\n el.parentNode.removeChild(el);\n }\n },\n unwrapTags: function (el, tags) {\n if (tags.indexOf(el.nodeName.toLowerCase()) !== -1) {\n MediumEditor.util.unwrap(el, document);\n }\n },\n // get the closest parent\n getClosestTag: function (el, tag) {\n return Util.traverseUp(el, function (element) {\n return element.nodeName.toLowerCase() === tag.toLowerCase();\n });\n },\n unwrap: function (el, doc) {\n var fragment = doc.createDocumentFragment(),\n nodes = Array.prototype.slice.call(el.childNodes);\n\n // cast nodeList to array since appending child\n // to a different node will alter length of el.childNodes\n for (var i = 0; i < nodes.length; i++) {\n fragment.appendChild(nodes[i]);\n }\n if (fragment.childNodes.length) {\n el.parentNode.replaceChild(fragment, el);\n } else {\n el.parentNode.removeChild(el);\n }\n },\n guid: function () {\n function _s4() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n return _s4() + _s4() + '-' + _s4() + '-' + _s4() + '-' + _s4() + '-' + _s4() + _s4() + _s4();\n }\n };\n MediumEditor.util = Util;\n })(window);\n (function () {\n 'use strict';\n\n var Extension = function (options) {\n MediumEditor.util.extend(this, options);\n };\n Extension.extend = function (protoProps) {\n // magic extender thinger. mostly borrowed from backbone/goog.inherits\n // place this function on some thing you want extend-able.\n //\n // example:\n //\n // function Thing(args){\n // this.options = args;\n // }\n //\n // Thing.prototype = { foo: \"bar\" };\n // Thing.extend = extenderify;\n //\n // var ThingTwo = Thing.extend({ foo: \"baz\" });\n //\n // var thingOne = new Thing(); // foo === \"bar\"\n // var thingTwo = new ThingTwo(); // foo === \"baz\"\n //\n // which seems like some simply shallow copy nonsense\n // at first, but a lot more is going on there.\n //\n // passing a `constructor` to the extend props\n // will cause the instance to instantiate through that\n // instead of the parent's constructor.\n\n var parent = this,\n child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent's constructor.\n\n if (protoProps && protoProps.hasOwnProperty('constructor')) {\n child = protoProps.constructor;\n } else {\n child = function () {\n return parent.apply(this, arguments);\n };\n }\n\n // das statics (.extend comes over, so your subclass can have subclasses too)\n MediumEditor.util.extend(child, parent);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n var Surrogate = function () {\n this.constructor = child;\n };\n Surrogate.prototype = parent.prototype;\n child.prototype = new Surrogate();\n if (protoProps) {\n MediumEditor.util.extend(child.prototype, protoProps);\n }\n\n // todo: $super?\n\n return child;\n };\n Extension.prototype = {\n /* init: [function]\n *\n * Called by MediumEditor during initialization.\n * The .base property will already have been set to\n * current instance of MediumEditor when this is called.\n * All helper methods will exist as well\n */\n init: function () {},\n /* base: [MediumEditor instance]\n *\n * If not overriden, this will be set to the current instance\n * of MediumEditor, before the init method is called\n */\n base: undefined,\n /* name: [string]\n *\n * 'name' of the extension, used for retrieving the extension.\n * If not set, MediumEditor will set this to be the key\n * used when passing the extension into MediumEditor via the\n * 'extensions' option\n */\n name: undefined,\n /* checkState: [function (node)]\n *\n * If implemented, this function will be called one or more times\n * the state of the editor & toolbar are updated.\n * When the state is updated, the editor does the following:\n *\n * 1) Find the parent node containing the current selection\n * 2) Call checkState on the extension, passing the node as an argument\n * 3) Get the parent node of the previous node\n * 4) Repeat steps #2 and #3 until we move outside the parent contenteditable\n */\n checkState: undefined,\n /* destroy: [function ()]\n *\n * This method should remove any created html, custom event handlers\n * or any other cleanup tasks that should be performed.\n * If implemented, this function will be called when MediumEditor's\n * destroy method has been called.\n */\n destroy: undefined,\n /* As alternatives to checkState, these functions provide a more structured\n * path to updating the state of an extension (usually a button) whenever\n * the state of the editor & toolbar are updated.\n */\n\n /* queryCommandState: [function ()]\n *\n * If implemented, this function will be called once on each extension\n * when the state of the editor/toolbar is being updated.\n *\n * If this function returns a non-null value, the extension will\n * be ignored as the code climbs the dom tree.\n *\n * If this function returns true, and the setActive() function is defined\n * setActive() will be called\n */\n queryCommandState: undefined,\n /* isActive: [function ()]\n *\n * If implemented, this function will be called when MediumEditor\n * has determined that this extension is 'active' for the current selection.\n * This may be called when the editor & toolbar are being updated,\n * but only if queryCommandState() or isAlreadyApplied() functions\n * are implemented, and when called, return true.\n */\n isActive: undefined,\n /* isAlreadyApplied: [function (node)]\n *\n * If implemented, this function is similar to checkState() in\n * that it will be called repeatedly as MediumEditor moves up\n * the DOM to update the editor & toolbar after a state change.\n *\n * NOTE: This function will NOT be called if checkState() has\n * been implemented. This function will NOT be called if\n * queryCommandState() is implemented and returns a non-null\n * value when called\n */\n isAlreadyApplied: undefined,\n /* setActive: [function ()]\n *\n * If implemented, this function is called when MediumEditor knows\n * that this extension is currently enabled. Currently, this\n * function is called when updating the editor & toolbar, and\n * only if queryCommandState() or isAlreadyApplied(node) return\n * true when called\n */\n setActive: undefined,\n /* setInactive: [function ()]\n *\n * If implemented, this function is called when MediumEditor knows\n * that this extension is currently disabled. Curently, this\n * is called at the beginning of each state change for\n * the editor & toolbar. After calling this, MediumEditor\n * will attempt to update the extension, either via checkState()\n * or the combination of queryCommandState(), isAlreadyApplied(node),\n * isActive(), and setActive()\n */\n setInactive: undefined,\n /* getInteractionElements: [function ()]\n *\n * If the extension renders any elements that the user can interact with,\n * this method should be implemented and return the root element or an array\n * containing all of the root elements. MediumEditor will call this function\n * during interaction to see if the user clicked on something outside of the editor.\n * The elements are used to check if the target element of a click or\n * other user event is a descendant of any extension elements.\n * This way, the editor can also count user interaction within editor elements as\n * interactions with the editor, and thus not trigger 'blur'\n */\n getInteractionElements: undefined,\n /************************ Helpers ************************\n * The following are helpers that are either set by MediumEditor\n * during initialization, or are helper methods which either\n * route calls to the MediumEditor instance or provide common\n * functionality for all extensions\n *********************************************************/\n\n /* window: [Window]\n *\n * If not overriden, this will be set to the window object\n * to be used by MediumEditor and its extensions. This is\n * passed via the 'contentWindow' option to MediumEditor\n * and is the global 'window' object by default\n */\n 'window': undefined,\n /* document: [Document]\n *\n * If not overriden, this will be set to the document object\n * to be used by MediumEditor and its extensions. This is\n * passed via the 'ownerDocument' optin to MediumEditor\n * and is the global 'document' object by default\n */\n 'document': undefined,\n /* getEditorElements: [function ()]\n *\n * Helper function which returns an array containing\n * all the contenteditable elements for this instance\n * of MediumEditor\n */\n getEditorElements: function () {\n return this.base.elements;\n },\n /* getEditorId: [function ()]\n *\n * Helper function which returns a unique identifier\n * for this instance of MediumEditor\n */\n getEditorId: function () {\n return this.base.id;\n },\n /* getEditorOptions: [function (option)]\n *\n * Helper function which returns the value of an option\n * used to initialize this instance of MediumEditor\n */\n getEditorOption: function (option) {\n return this.base.options[option];\n }\n };\n\n /* List of method names to add to the prototype of Extension\n * Each of these methods will be defined as helpers that\n * just call directly into the MediumEditor instance.\n *\n * example for 'on' method:\n * Extension.prototype.on = function () {\n * return this.base.on.apply(this.base, arguments);\n * }\n */\n [\n // general helpers\n 'execAction',\n // event handling\n 'on', 'off', 'subscribe', 'trigger'].forEach(function (helper) {\n Extension.prototype[helper] = function () {\n return this.base[helper].apply(this.base, arguments);\n };\n });\n MediumEditor.Extension = Extension;\n })();\n (function () {\n 'use strict';\n\n function filterOnlyParentElements(node) {\n if (MediumEditor.util.isBlockContainer(node)) {\n return NodeFilter.FILTER_ACCEPT;\n } else {\n return NodeFilter.FILTER_SKIP;\n }\n }\n var Selection = {\n findMatchingSelectionParent: function (testElementFunction, contentWindow) {\n var selection = contentWindow.getSelection(),\n range,\n current;\n if (selection.rangeCount === 0) {\n return false;\n }\n range = selection.getRangeAt(0);\n current = range.commonAncestorContainer;\n return MediumEditor.util.traverseUp(current, testElementFunction);\n },\n getSelectionElement: function (contentWindow) {\n return this.findMatchingSelectionParent(function (el) {\n return MediumEditor.util.isMediumEditorElement(el);\n }, contentWindow);\n },\n // http://stackoverflow.com/questions/17678843/cant-restore-selection-after-html-modify-even-if-its-the-same-html\n // Tim Down\n exportSelection: function (root, doc) {\n if (!root) {\n return null;\n }\n var selectionState = null,\n selection = doc.getSelection();\n if (selection.rangeCount > 0) {\n var range = selection.getRangeAt(0),\n preSelectionRange = range.cloneRange(),\n start;\n preSelectionRange.selectNodeContents(root);\n preSelectionRange.setEnd(range.startContainer, range.startOffset);\n start = preSelectionRange.toString().length;\n selectionState = {\n start: start,\n end: start + range.toString().length\n };\n\n // Check to see if the selection starts with any images\n // if so we need to make sure the the beginning of the selection is\n // set correctly when importing selection\n if (this.doesRangeStartWithImages(range, doc)) {\n selectionState.startsWithImage = true;\n }\n\n // Check to see if the selection has any trailing images\n // if so, this this means we need to look for them when we import selection\n var trailingImageCount = this.getTrailingImageCount(root, selectionState, range.endContainer, range.endOffset);\n if (trailingImageCount) {\n selectionState.trailingImageCount = trailingImageCount;\n }\n\n // If start = 0 there may still be an empty paragraph before it, but we don't care.\n if (start !== 0) {\n var emptyBlocksIndex = this.getIndexRelativeToAdjacentEmptyBlocks(doc, root, range.startContainer, range.startOffset);\n if (emptyBlocksIndex !== -1) {\n selectionState.emptyBlocksIndex = emptyBlocksIndex;\n }\n }\n }\n return selectionState;\n },\n // http://stackoverflow.com/questions/17678843/cant-restore-selection-after-html-modify-even-if-its-the-same-html\n // Tim Down\n //\n // {object} selectionState - the selection to import\n // {DOMElement} root - the root element the selection is being restored inside of\n // {Document} doc - the document to use for managing selection\n // {boolean} [favorLaterSelectionAnchor] - defaults to false. If true, import the cursor immediately\n // subsequent to an anchor tag if it would otherwise be placed right at the trailing edge inside the\n // anchor. This cursor positioning, even though visually equivalent to the user, can affect behavior\n // in MS IE.\n importSelection: function (selectionState, root, doc, favorLaterSelectionAnchor) {\n if (!selectionState || !root) {\n return;\n }\n var range = doc.createRange();\n range.setStart(root, 0);\n range.collapse(true);\n var node = root,\n nodeStack = [],\n charIndex = 0,\n foundStart = false,\n foundEnd = false,\n trailingImageCount = 0,\n stop = false,\n nextCharIndex,\n allowRangeToStartAtEndOfNode = false,\n lastTextNode = null;\n\n // When importing selection, the start of the selection may lie at the end of an element\n // or at the beginning of an element. Since visually there is no difference between these 2\n // we will try to move the selection to the beginning of an element since this is generally\n // what users will expect and it's a more predictable behavior.\n //\n // However, there are some specific cases when we don't want to do this:\n // 1) We're attempting to move the cursor outside of the end of an anchor [favorLaterSelectionAnchor = true]\n // 2) The selection starts with an image, which is special since an image doesn't have any 'content'\n // as far as selection and ranges are concerned\n // 3) The selection starts after a specified number of empty block elements (selectionState.emptyBlocksIndex)\n //\n // For these cases, we want the selection to start at a very specific location, so we should NOT\n // automatically move the cursor to the beginning of the first actual chunk of text\n if (favorLaterSelectionAnchor || selectionState.startsWithImage || typeof selectionState.emptyBlocksIndex !== 'undefined') {\n allowRangeToStartAtEndOfNode = true;\n }\n while (!stop && node) {\n // Only iterate over elements and text nodes\n if (node.nodeType > 3) {\n node = nodeStack.pop();\n continue;\n }\n\n // If we hit a text node, we need to add the amount of characters to the overall count\n if (node.nodeType === 3 && !foundEnd) {\n nextCharIndex = charIndex + node.length;\n // Check if we're at or beyond the start of the selection we're importing\n if (!foundStart && selectionState.start >= charIndex && selectionState.start <= nextCharIndex) {\n // NOTE: We only want to allow a selection to start at the END of an element if\n // allowRangeToStartAtEndOfNode is true\n if (allowRangeToStartAtEndOfNode || selectionState.start < nextCharIndex) {\n range.setStart(node, selectionState.start - charIndex);\n foundStart = true;\n }\n // We're at the end of a text node where the selection could start but we shouldn't\n // make the selection start here because allowRangeToStartAtEndOfNode is false.\n // However, we should keep a reference to this node in case there aren't any more\n // text nodes after this, so that we have somewhere to import the selection to\n else {\n lastTextNode = node;\n }\n }\n // We've found the start of the selection, check if we're at or beyond the end of the selection we're importing\n if (foundStart && selectionState.end >= charIndex && selectionState.end <= nextCharIndex) {\n if (!selectionState.trailingImageCount) {\n range.setEnd(node, selectionState.end - charIndex);\n stop = true;\n } else {\n foundEnd = true;\n }\n }\n charIndex = nextCharIndex;\n } else {\n if (selectionState.trailingImageCount && foundEnd) {\n if (node.nodeName.toLowerCase() === 'img') {\n trailingImageCount++;\n }\n if (trailingImageCount === selectionState.trailingImageCount) {\n // Find which index the image is in its parent's children\n var endIndex = 0;\n while (node.parentNode.childNodes[endIndex] !== node) {\n endIndex++;\n }\n range.setEnd(node.parentNode, endIndex + 1);\n stop = true;\n }\n }\n if (!stop && node.nodeType === 1) {\n // this is an element\n // add all its children to the stack\n var i = node.childNodes.length - 1;\n while (i >= 0) {\n nodeStack.push(node.childNodes[i]);\n i -= 1;\n }\n }\n }\n if (!stop) {\n node = nodeStack.pop();\n }\n }\n\n // If we've gone through the entire text but didn't find the beginning of a text node\n // to make the selection start at, we should fall back to starting the selection\n // at the END of the last text node we found\n if (!foundStart && lastTextNode) {\n range.setStart(lastTextNode, lastTextNode.length);\n range.setEnd(lastTextNode, lastTextNode.length);\n }\n if (typeof selectionState.emptyBlocksIndex !== 'undefined') {\n range = this.importSelectionMoveCursorPastBlocks(doc, root, selectionState.emptyBlocksIndex, range);\n }\n\n // If the selection is right at the ending edge of a link, put it outside the anchor tag instead of inside.\n if (favorLaterSelectionAnchor) {\n range = this.importSelectionMoveCursorPastAnchor(selectionState, range);\n }\n this.selectRange(doc, range);\n },\n // Utility method called from importSelection only\n importSelectionMoveCursorPastAnchor: function (selectionState, range) {\n var nodeInsideAnchorTagFunction = function (node) {\n return node.nodeName.toLowerCase() === 'a';\n };\n if (selectionState.start === selectionState.end && range.startContainer.nodeType === 3 && range.startOffset === range.startContainer.nodeValue.length && MediumEditor.util.traverseUp(range.startContainer, nodeInsideAnchorTagFunction)) {\n var prevNode = range.startContainer,\n currentNode = range.startContainer.parentNode;\n while (currentNode !== null && currentNode.nodeName.toLowerCase() !== 'a') {\n if (currentNode.childNodes[currentNode.childNodes.length - 1] !== prevNode) {\n currentNode = null;\n } else {\n prevNode = currentNode;\n currentNode = currentNode.parentNode;\n }\n }\n if (currentNode !== null && currentNode.nodeName.toLowerCase() === 'a') {\n var currentNodeIndex = null;\n for (var i = 0; currentNodeIndex === null && i < currentNode.parentNode.childNodes.length; i++) {\n if (currentNode.parentNode.childNodes[i] === currentNode) {\n currentNodeIndex = i;\n }\n }\n range.setStart(currentNode.parentNode, currentNodeIndex + 1);\n range.collapse(true);\n }\n }\n return range;\n },\n // Uses the emptyBlocksIndex calculated by getIndexRelativeToAdjacentEmptyBlocks\n // to move the cursor back to the start of the correct paragraph\n importSelectionMoveCursorPastBlocks: function (doc, root, index, range) {\n var treeWalker = doc.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, filterOnlyParentElements, false),\n startContainer = range.startContainer,\n startBlock,\n targetNode,\n currIndex = 0;\n index = index || 1; // If index is 0, we still want to move to the next block\n\n // Chrome counts newlines and spaces that separate block elements as actual elements.\n // If the selection is inside one of these text nodes, and it has a previous sibling\n // which is a block element, we want the treewalker to start at the previous sibling\n // and NOT at the parent of the textnode\n if (startContainer.nodeType === 3 && MediumEditor.util.isBlockContainer(startContainer.previousSibling)) {\n startBlock = startContainer.previousSibling;\n } else {\n startBlock = MediumEditor.util.getClosestBlockContainer(startContainer);\n }\n\n // Skip over empty blocks until we hit the block we want the selection to be in\n while (treeWalker.nextNode()) {\n if (!targetNode) {\n // Loop through all blocks until we hit the starting block element\n if (startBlock === treeWalker.currentNode) {\n targetNode = treeWalker.currentNode;\n }\n } else {\n targetNode = treeWalker.currentNode;\n currIndex++;\n // We hit the target index, bail\n if (currIndex === index) {\n break;\n }\n // If we find a non-empty block, ignore the emptyBlocksIndex and just put selection here\n if (targetNode.textContent.length > 0) {\n break;\n }\n }\n }\n if (!targetNode) {\n targetNode = startBlock;\n }\n\n // We're selecting a high-level block node, so make sure the cursor gets moved into the deepest\n // element at the beginning of the block\n range.setStart(MediumEditor.util.getFirstSelectableLeafNode(targetNode), 0);\n return range;\n },\n // Returns -1 unless the cursor is at the beginning of a paragraph/block\n // If the paragraph/block is preceeded by empty paragraphs/block (with no text)\n // it will return the number of empty paragraphs before the cursor.\n // Otherwise, it will return 0, which indicates the cursor is at the beginning\n // of a paragraph/block, and not at the end of the paragraph/block before it\n getIndexRelativeToAdjacentEmptyBlocks: function (doc, root, cursorContainer, cursorOffset) {\n // If there is text in front of the cursor, that means there isn't only empty blocks before it\n if (cursorContainer.textContent.length > 0 && cursorOffset > 0) {\n return -1;\n }\n\n // Check if the block that contains the cursor has any other text in front of the cursor\n var node = cursorContainer;\n if (node.nodeType !== 3) {\n node = cursorContainer.childNodes[cursorOffset];\n }\n if (node) {\n // The element isn't at the beginning of a block, so it has content before it\n if (!MediumEditor.util.isElementAtBeginningOfBlock(node)) {\n return -1;\n }\n var previousSibling = MediumEditor.util.findPreviousSibling(node);\n // If there is no previous sibling, this is the first text element in the editor\n if (!previousSibling) {\n return -1;\n }\n // If the previous sibling has text, then there are no empty blocks before this\n else if (previousSibling.nodeValue) {\n return -1;\n }\n }\n\n // Walk over block elements, counting number of empty blocks between last piece of text\n // and the block the cursor is in\n var closestBlock = MediumEditor.util.getClosestBlockContainer(cursorContainer),\n treeWalker = doc.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, filterOnlyParentElements, false),\n emptyBlocksCount = 0;\n while (treeWalker.nextNode()) {\n var blockIsEmpty = treeWalker.currentNode.textContent === '';\n if (blockIsEmpty || emptyBlocksCount > 0) {\n emptyBlocksCount += 1;\n }\n if (treeWalker.currentNode === closestBlock) {\n return emptyBlocksCount;\n }\n if (!blockIsEmpty) {\n emptyBlocksCount = 0;\n }\n }\n return emptyBlocksCount;\n },\n // Returns true if the selection range begins with an image tag\n // Returns false if the range starts with any non empty text nodes\n doesRangeStartWithImages: function (range, doc) {\n if (range.startOffset !== 0 || range.startContainer.nodeType !== 1) {\n return false;\n }\n if (range.startContainer.nodeName.toLowerCase() === 'img') {\n return true;\n }\n var img = range.startContainer.querySelector('img');\n if (!img) {\n return false;\n }\n var treeWalker = doc.createTreeWalker(range.startContainer, NodeFilter.SHOW_ALL, null, false);\n while (treeWalker.nextNode()) {\n var next = treeWalker.currentNode;\n // If we hit the image, then there isn't any text before the image so\n // the image is at the beginning of the range\n if (next === img) {\n break;\n }\n // If we haven't hit the iamge, but found text that contains content\n // then the range doesn't start with an image\n if (next.nodeValue) {\n return false;\n }\n }\n return true;\n },\n getTrailingImageCount: function (root, selectionState, endContainer, endOffset) {\n // If the endOffset of a range is 0, the endContainer doesn't contain images\n // If the endContainer is a text node, there are no trailing images\n if (endOffset === 0 || endContainer.nodeType !== 1) {\n return 0;\n }\n\n // If the endContainer isn't an image, and doesn't have an image descendants\n // there are no trailing images\n if (endContainer.nodeName.toLowerCase() !== 'img' && !endContainer.querySelector('img')) {\n return 0;\n }\n var lastNode = endContainer.childNodes[endOffset - 1];\n while (lastNode.hasChildNodes()) {\n lastNode = lastNode.lastChild;\n }\n var node = root,\n nodeStack = [],\n charIndex = 0,\n foundStart = false,\n foundEnd = false,\n stop = false,\n nextCharIndex,\n trailingImages = 0;\n while (!stop && node) {\n // Only iterate over elements and text nodes\n if (node.nodeType > 3) {\n node = nodeStack.pop();\n continue;\n }\n if (node.nodeType === 3 && !foundEnd) {\n trailingImages = 0;\n nextCharIndex = charIndex + node.length;\n if (!foundStart && selectionState.start >= charIndex && selectionState.start <= nextCharIndex) {\n foundStart = true;\n }\n if (foundStart && selectionState.end >= charIndex && selectionState.end <= nextCharIndex) {\n foundEnd = true;\n }\n charIndex = nextCharIndex;\n } else {\n if (node.nodeName.toLowerCase() === 'img') {\n trailingImages++;\n }\n if (node === lastNode) {\n stop = true;\n } else if (node.nodeType === 1) {\n // this is an element\n // add all its children to the stack\n var i = node.childNodes.length - 1;\n while (i >= 0) {\n nodeStack.push(node.childNodes[i]);\n i -= 1;\n }\n }\n }\n if (!stop) {\n node = nodeStack.pop();\n }\n }\n return trailingImages;\n },\n // determine if the current selection contains any 'content'\n // content being any non-white space text or an image\n selectionContainsContent: function (doc) {\n var sel = doc.getSelection();\n\n // collapsed selection or selection withour range doesn't contain content\n if (!sel || sel.isCollapsed || !sel.rangeCount) {\n return false;\n }\n\n // if toString() contains any text, the selection contains some content\n if (sel.toString().trim() !== '') {\n return true;\n }\n\n // if selection contains only image(s), it will return empty for toString()\n // so check for an image manually\n var selectionNode = this.getSelectedParentElement(sel.getRangeAt(0));\n if (selectionNode) {\n if (selectionNode.nodeName.toLowerCase() === 'img' || selectionNode.nodeType === 1 && selectionNode.querySelector('img')) {\n return true;\n }\n }\n return false;\n },\n selectionInContentEditableFalse: function (contentWindow) {\n // determine if the current selection is exclusively inside\n // a contenteditable=\"false\", though treat the case of an\n // explicit contenteditable=\"true\" inside a \"false\" as false.\n var sawtrue,\n sawfalse = this.findMatchingSelectionParent(function (el) {\n var ce = el && el.getAttribute('contenteditable');\n if (ce === 'true') {\n sawtrue = true;\n }\n return el.nodeName !== '#text' && ce === 'false';\n }, contentWindow);\n return !sawtrue && sawfalse;\n },\n // http://stackoverflow.com/questions/4176923/html-of-selected-text\n // by Tim Down\n getSelectionHtml: function getSelectionHtml(doc) {\n var i,\n html = '',\n sel = doc.getSelection(),\n len,\n container;\n if (sel.rangeCount) {\n container = doc.createElement('div');\n for (i = 0, len = sel.rangeCount; i < len; i += 1) {\n container.appendChild(sel.getRangeAt(i).cloneContents());\n }\n html = container.innerHTML;\n }\n return html;\n },\n /**\n * Find the caret position within an element irrespective of any inline tags it may contain.\n *\n * @param {DOMElement} An element containing the cursor to find offsets relative to.\n * @param {Range} A Range representing cursor position. Will window.getSelection if none is passed.\n * @return {Object} 'left' and 'right' attributes contain offsets from begining and end of Element\n */\n getCaretOffsets: function getCaretOffsets(element, range) {\n var preCaretRange, postCaretRange;\n if (!range) {\n range = window.getSelection().getRangeAt(0);\n }\n preCaretRange = range.cloneRange();\n postCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n postCaretRange.selectNodeContents(element);\n postCaretRange.setStart(range.endContainer, range.endOffset);\n return {\n left: preCaretRange.toString().length,\n right: postCaretRange.toString().length\n };\n },\n // http://stackoverflow.com/questions/15867542/range-object-get-selection-parent-node-chrome-vs-firefox\n rangeSelectsSingleNode: function (range) {\n var startNode = range.startContainer;\n return startNode === range.endContainer && startNode.hasChildNodes() && range.endOffset === range.startOffset + 1;\n },\n getSelectedParentElement: function (range) {\n if (!range) {\n return null;\n }\n\n // Selection encompasses a single element\n if (this.rangeSelectsSingleNode(range) && range.startContainer.childNodes[range.startOffset].nodeType !== 3) {\n return range.startContainer.childNodes[range.startOffset];\n }\n\n // Selection range starts inside a text node, so get its parent\n if (range.startContainer.nodeType === 3) {\n return range.startContainer.parentNode;\n }\n\n // Selection starts inside an element\n return range.startContainer;\n },\n getSelectedElements: function (doc) {\n var selection = doc.getSelection(),\n range,\n toRet,\n currNode;\n if (!selection.rangeCount || selection.isCollapsed || !selection.getRangeAt(0).commonAncestorContainer) {\n return [];\n }\n range = selection.getRangeAt(0);\n if (range.commonAncestorContainer.nodeType === 3) {\n toRet = [];\n currNode = range.commonAncestorContainer;\n while (currNode.parentNode && currNode.parentNode.childNodes.length === 1) {\n toRet.push(currNode.parentNode);\n currNode = currNode.parentNode;\n }\n return toRet;\n }\n return [].filter.call(range.commonAncestorContainer.getElementsByTagName('*'), function (el) {\n return typeof selection.containsNode === 'function' ? selection.containsNode(el, true) : true;\n });\n },\n selectNode: function (node, doc) {\n var range = doc.createRange();\n range.selectNodeContents(node);\n this.selectRange(doc, range);\n },\n select: function (doc, startNode, startOffset, endNode, endOffset) {\n var range = doc.createRange();\n range.setStart(startNode, startOffset);\n if (endNode) {\n range.setEnd(endNode, endOffset);\n } else {\n range.collapse(true);\n }\n this.selectRange(doc, range);\n return range;\n },\n /**\n * Clear the current highlighted selection and set the caret to the start or the end of that prior selection, defaults to end.\n *\n * @param {DomDocument} doc Current document\n * @param {boolean} moveCursorToStart A boolean representing whether or not to set the caret to the beginning of the prior selection.\n */\n clearSelection: function (doc, moveCursorToStart) {\n if (moveCursorToStart) {\n doc.getSelection().collapseToStart();\n } else {\n doc.getSelection().collapseToEnd();\n }\n },\n /**\n * Move cursor to the given node with the given offset.\n *\n * @param {DomDocument} doc Current document\n * @param {DomElement} node Element where to jump\n * @param {integer} offset Where in the element should we jump, 0 by default\n */\n moveCursor: function (doc, node, offset) {\n this.select(doc, node, offset);\n },\n getSelectionRange: function (ownerDocument) {\n var selection = ownerDocument.getSelection();\n if (selection.rangeCount === 0) {\n return null;\n }\n return selection.getRangeAt(0);\n },\n selectRange: function (ownerDocument, range) {\n var selection = ownerDocument.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n // http://stackoverflow.com/questions/1197401/how-can-i-get-the-element-the-caret-is-in-with-javascript-when-using-contentedi\n // by You\n getSelectionStart: function (ownerDocument) {\n var node = ownerDocument.getSelection().anchorNode,\n startNode = node && node.nodeType === 3 ? node.parentNode : node;\n return startNode;\n }\n };\n MediumEditor.selection = Selection;\n })();\n (function () {\n 'use strict';\n\n function isElementDescendantOfExtension(extensions, element) {\n if (!extensions) {\n return false;\n }\n return extensions.some(function (extension) {\n if (typeof extension.getInteractionElements !== 'function') {\n return false;\n }\n var extensionElements = extension.getInteractionElements();\n if (!extensionElements) {\n return false;\n }\n if (!Array.isArray(extensionElements)) {\n extensionElements = [extensionElements];\n }\n return extensionElements.some(function (el) {\n return MediumEditor.util.isDescendant(el, element, true);\n });\n });\n }\n var Events = function (instance) {\n this.base = instance;\n this.options = this.base.options;\n this.events = [];\n this.disabledEvents = {};\n this.customEvents = {};\n this.listeners = {};\n };\n Events.prototype = {\n InputEventOnContenteditableSupported: !MediumEditor.util.isIE && !MediumEditor.util.isEdge,\n // Helpers for event handling\n\n attachDOMEvent: function (targets, event, listener, useCapture) {\n var win = this.base.options.contentWindow,\n doc = this.base.options.ownerDocument;\n targets = MediumEditor.util.isElement(targets) || [win, doc].indexOf(targets) > -1 ? [targets] : targets;\n Array.prototype.forEach.call(targets, function (target) {\n target.addEventListener(event, listener, useCapture);\n this.events.push([target, event, listener, useCapture]);\n }.bind(this));\n },\n detachDOMEvent: function (targets, event, listener, useCapture) {\n var index,\n e,\n win = this.base.options.contentWindow,\n doc = this.base.options.ownerDocument;\n if (targets) {\n targets = MediumEditor.util.isElement(targets) || [win, doc].indexOf(targets) > -1 ? [targets] : targets;\n Array.prototype.forEach.call(targets, function (target) {\n index = this.indexOfListener(target, event, listener, useCapture);\n if (index !== -1) {\n e = this.events.splice(index, 1)[0];\n e[0].removeEventListener(e[1], e[2], e[3]);\n }\n }.bind(this));\n }\n },\n indexOfListener: function (target, event, listener, useCapture) {\n var i, n, item;\n for (i = 0, n = this.events.length; i < n; i = i + 1) {\n item = this.events[i];\n if (item[0] === target && item[1] === event && item[2] === listener && item[3] === useCapture) {\n return i;\n }\n }\n return -1;\n },\n detachAllDOMEvents: function () {\n var e = this.events.pop();\n while (e) {\n e[0].removeEventListener(e[1], e[2], e[3]);\n e = this.events.pop();\n }\n },\n detachAllEventsFromElement: function (element) {\n var filtered = this.events.filter(function (e) {\n return e && e[0].getAttribute && e[0].getAttribute('medium-editor-index') === element.getAttribute('medium-editor-index');\n });\n for (var i = 0, len = filtered.length; i < len; i++) {\n var e = filtered[i];\n this.detachDOMEvent(e[0], e[1], e[2], e[3]);\n }\n },\n // Attach all existing handlers to a new element\n attachAllEventsToElement: function (element) {\n if (this.listeners['editableInput']) {\n this.contentCache[element.getAttribute('medium-editor-index')] = element.innerHTML;\n }\n if (this.eventsCache) {\n this.eventsCache.forEach(function (e) {\n this.attachDOMEvent(element, e['name'], e['handler'].bind(this));\n }, this);\n }\n },\n enableCustomEvent: function (event) {\n if (this.disabledEvents[event] !== undefined) {\n delete this.disabledEvents[event];\n }\n },\n disableCustomEvent: function (event) {\n this.disabledEvents[event] = true;\n },\n // custom events\n attachCustomEvent: function (event, listener) {\n this.setupListener(event);\n if (!this.customEvents[event]) {\n this.customEvents[event] = [];\n }\n this.customEvents[event].push(listener);\n },\n detachCustomEvent: function (event, listener) {\n var index = this.indexOfCustomListener(event, listener);\n if (index !== -1) {\n this.customEvents[event].splice(index, 1);\n // TODO: If array is empty, should detach internal listeners via destroyListener()\n }\n },\n\n indexOfCustomListener: function (event, listener) {\n if (!this.customEvents[event] || !this.customEvents[event].length) {\n return -1;\n }\n return this.customEvents[event].indexOf(listener);\n },\n detachAllCustomEvents: function () {\n this.customEvents = {};\n // TODO: Should detach internal listeners here via destroyListener()\n },\n\n triggerCustomEvent: function (name, data, editable) {\n if (this.customEvents[name] && !this.disabledEvents[name]) {\n this.customEvents[name].forEach(function (listener) {\n listener(data, editable);\n });\n }\n },\n // Cleaning up\n\n destroy: function () {\n this.detachAllDOMEvents();\n this.detachAllCustomEvents();\n this.detachExecCommand();\n if (this.base.elements) {\n this.base.elements.forEach(function (element) {\n element.removeAttribute('data-medium-focused');\n });\n }\n },\n // Listening to calls to document.execCommand\n\n // Attach a listener to be notified when document.execCommand is called\n attachToExecCommand: function () {\n if (this.execCommandListener) {\n return;\n }\n\n // Store an instance of the listener so:\n // 1) We only attach to execCommand once\n // 2) We can remove the listener later\n this.execCommandListener = function (execInfo) {\n this.handleDocumentExecCommand(execInfo);\n }.bind(this);\n\n // Ensure that execCommand has been wrapped correctly\n this.wrapExecCommand();\n\n // Add listener to list of execCommand listeners\n this.options.ownerDocument.execCommand.listeners.push(this.execCommandListener);\n },\n // Remove our listener for calls to document.execCommand\n detachExecCommand: function () {\n var doc = this.options.ownerDocument;\n if (!this.execCommandListener || !doc.execCommand.listeners) {\n return;\n }\n\n // Find the index of this listener in the array of listeners so it can be removed\n var index = doc.execCommand.listeners.indexOf(this.execCommandListener);\n if (index !== -1) {\n doc.execCommand.listeners.splice(index, 1);\n }\n\n // If the list of listeners is now empty, put execCommand back to its original state\n if (!doc.execCommand.listeners.length) {\n this.unwrapExecCommand();\n }\n },\n // Wrap document.execCommand in a custom method so we can listen to calls to it\n wrapExecCommand: function () {\n var doc = this.options.ownerDocument;\n\n // Ensure all instance of MediumEditor only wrap execCommand once\n if (doc.execCommand.listeners) {\n return;\n }\n\n // Helper method to call all listeners to execCommand\n var callListeners = function (args, result) {\n if (doc.execCommand.listeners) {\n doc.execCommand.listeners.forEach(function (listener) {\n listener({\n command: args[0],\n value: args[2],\n args: args,\n result: result\n });\n });\n }\n },\n // Create a wrapper method for execCommand which will:\n // 1) Call document.execCommand with the correct arguments\n // 2) Loop through any listeners and notify them that execCommand was called\n // passing extra info on the call\n // 3) Return the result\n wrapper = function () {\n var result = doc.execCommand.orig.apply(this, arguments);\n if (!doc.execCommand.listeners) {\n return result;\n }\n var args = Array.prototype.slice.call(arguments);\n callListeners(args, result);\n return result;\n };\n\n // Store a reference to the original execCommand\n wrapper.orig = doc.execCommand;\n\n // Attach an array for storing listeners\n wrapper.listeners = [];\n\n // Helper for notifying listeners\n wrapper.callListeners = callListeners;\n\n // Overwrite execCommand\n doc.execCommand = wrapper;\n },\n // Revert document.execCommand back to its original self\n unwrapExecCommand: function () {\n var doc = this.options.ownerDocument;\n if (!doc.execCommand.orig) {\n return;\n }\n\n // Use the reference to the original execCommand to revert back\n doc.execCommand = doc.execCommand.orig;\n },\n // Listening to browser events to emit events medium-editor cares about\n setupListener: function (name) {\n if (this.listeners[name]) {\n return;\n }\n switch (name) {\n case 'externalInteraction':\n // Detecting when user has interacted with elements outside of MediumEditor\n this.attachDOMEvent(this.options.ownerDocument.body, 'mousedown', this.handleBodyMousedown.bind(this), true);\n this.attachDOMEvent(this.options.ownerDocument.body, 'click', this.handleBodyClick.bind(this), true);\n this.attachDOMEvent(this.options.ownerDocument.body, 'focus', this.handleBodyFocus.bind(this), true);\n break;\n case 'blur':\n // Detecting when focus is lost\n this.setupListener('externalInteraction');\n break;\n case 'focus':\n // Detecting when focus moves into some part of MediumEditor\n this.setupListener('externalInteraction');\n break;\n case 'editableInput':\n // setup cache for knowing when the content has changed\n this.contentCache = {};\n this.base.elements.forEach(function (element) {\n this.contentCache[element.getAttribute('medium-editor-index')] = element.innerHTML;\n }, this);\n\n // Attach to the 'oninput' event, handled correctly by most browsers\n if (this.InputEventOnContenteditableSupported) {\n this.attachToEachElement('input', this.handleInput);\n }\n\n // For browsers which don't support the input event on contenteditable (IE)\n // we'll attach to 'selectionchange' on the document and 'keypress' on the editables\n if (!this.InputEventOnContenteditableSupported) {\n this.setupListener('editableKeypress');\n this.keypressUpdateInput = true;\n this.attachDOMEvent(document, 'selectionchange', this.handleDocumentSelectionChange.bind(this));\n // Listen to calls to execCommand\n this.attachToExecCommand();\n }\n break;\n case 'editableClick':\n // Detecting click in the contenteditables\n this.attachToEachElement('click', this.handleClick);\n break;\n case 'editableBlur':\n // Detecting blur in the contenteditables\n this.attachToEachElement('blur', this.handleBlur);\n break;\n case 'editableKeypress':\n // Detecting keypress in the contenteditables\n this.attachToEachElement('keypress', this.handleKeypress);\n break;\n case 'editableKeyup':\n // Detecting keyup in the contenteditables\n this.attachToEachElement('keyup', this.handleKeyup);\n break;\n case 'editableKeydown':\n // Detecting keydown on the contenteditables\n this.attachToEachElement('keydown', this.handleKeydown);\n break;\n case 'editableKeydownSpace':\n // Detecting keydown for SPACE on the contenteditables\n this.setupListener('editableKeydown');\n break;\n case 'editableKeydownEnter':\n // Detecting keydown for ENTER on the contenteditables\n this.setupListener('editableKeydown');\n break;\n case 'editableKeydownTab':\n // Detecting keydown for TAB on the contenteditable\n this.setupListener('editableKeydown');\n break;\n case 'editableKeydownDelete':\n // Detecting keydown for DELETE/BACKSPACE on the contenteditables\n this.setupListener('editableKeydown');\n break;\n case 'editableMouseover':\n // Detecting mouseover on the contenteditables\n this.attachToEachElement('mouseover', this.handleMouseover);\n break;\n case 'editableDrag':\n // Detecting dragover and dragleave on the contenteditables\n this.attachToEachElement('dragover', this.handleDragging);\n this.attachToEachElement('dragleave', this.handleDragging);\n break;\n case 'editableDrop':\n // Detecting drop on the contenteditables\n this.attachToEachElement('drop', this.handleDrop);\n break;\n // TODO: We need to have a custom 'paste' event separate from 'editablePaste'\n // Need to think about the way to introduce this without breaking folks\n case 'editablePaste':\n // Detecting paste on the contenteditables\n this.attachToEachElement('paste', this.handlePaste);\n break;\n }\n this.listeners[name] = true;\n },\n attachToEachElement: function (name, handler) {\n // build our internal cache to know which element got already what handler attached\n if (!this.eventsCache) {\n this.eventsCache = [];\n }\n this.base.elements.forEach(function (element) {\n this.attachDOMEvent(element, name, handler.bind(this));\n }, this);\n this.eventsCache.push({\n 'name': name,\n 'handler': handler\n });\n },\n cleanupElement: function (element) {\n var index = element.getAttribute('medium-editor-index');\n if (index) {\n this.detachAllEventsFromElement(element);\n if (this.contentCache) {\n delete this.contentCache[index];\n }\n }\n },\n focusElement: function (element) {\n element.focus();\n this.updateFocus(element, {\n target: element,\n type: 'focus'\n });\n },\n updateFocus: function (target, eventObj) {\n var hadFocus = this.base.getFocusedElement(),\n toFocus;\n\n // For clicks, we need to know if the mousedown that caused the click happened inside the existing focused element\n // or one of the extension elements. If so, we don't want to focus another element\n if (hadFocus && eventObj.type === 'click' && this.lastMousedownTarget && (MediumEditor.util.isDescendant(hadFocus, this.lastMousedownTarget, true) || isElementDescendantOfExtension(this.base.extensions, this.lastMousedownTarget))) {\n toFocus = hadFocus;\n }\n if (!toFocus) {\n this.base.elements.some(function (element) {\n // If the target is part of an editor element, this is the element getting focus\n if (!toFocus && MediumEditor.util.isDescendant(element, target, true)) {\n toFocus = element;\n }\n\n // bail if we found an element that's getting focus\n return !!toFocus;\n }, this);\n }\n\n // Check if the target is external (not part of the editor, toolbar, or any other extension)\n var externalEvent = !MediumEditor.util.isDescendant(hadFocus, target, true) && !isElementDescendantOfExtension(this.base.extensions, target);\n if (toFocus !== hadFocus) {\n // If element has focus, and focus is going outside of editor\n // Don't blur focused element if clicking on editor, toolbar, or anchorpreview\n if (hadFocus && externalEvent) {\n // Trigger blur on the editable that has lost focus\n hadFocus.removeAttribute('data-medium-focused');\n this.triggerCustomEvent('blur', eventObj, hadFocus);\n }\n\n // If focus is going into an editor element\n if (toFocus) {\n // Trigger focus on the editable that now has focus\n toFocus.setAttribute('data-medium-focused', true);\n this.triggerCustomEvent('focus', eventObj, toFocus);\n }\n }\n if (externalEvent) {\n this.triggerCustomEvent('externalInteraction', eventObj);\n }\n },\n updateInput: function (target, eventObj) {\n if (!this.contentCache) {\n return;\n }\n // An event triggered which signifies that the user may have changed someting\n // Look in our cache of input for the contenteditables to see if something changed\n var index = target.getAttribute('medium-editor-index'),\n html = target.innerHTML;\n if (html !== this.contentCache[index]) {\n // The content has changed since the last time we checked, fire the event\n this.triggerCustomEvent('editableInput', eventObj, target);\n }\n this.contentCache[index] = html;\n },\n handleDocumentSelectionChange: function (event) {\n // When selectionchange fires, target and current target are set\n // to document, since this is where the event is handled\n // However, currentTarget will have an 'activeElement' property\n // which will point to whatever element has focus.\n if (event.currentTarget && event.currentTarget.activeElement) {\n var activeElement = event.currentTarget.activeElement,\n currentTarget;\n // We can look at the 'activeElement' to determine if the selectionchange has\n // happened within a contenteditable owned by this instance of MediumEditor\n this.base.elements.some(function (element) {\n if (MediumEditor.util.isDescendant(element, activeElement, true)) {\n currentTarget = element;\n return true;\n }\n return false;\n }, this);\n\n // We know selectionchange fired within one of our contenteditables\n if (currentTarget) {\n this.updateInput(currentTarget, {\n target: activeElement,\n currentTarget: currentTarget\n });\n }\n }\n },\n handleDocumentExecCommand: function () {\n // document.execCommand has been called\n // If one of our contenteditables currently has focus, we should\n // attempt to trigger the 'editableInput' event\n var target = this.base.getFocusedElement();\n if (target) {\n this.updateInput(target, {\n target: target,\n currentTarget: target\n });\n }\n },\n handleBodyClick: function (event) {\n this.updateFocus(event.target, event);\n },\n handleBodyFocus: function (event) {\n this.updateFocus(event.target, event);\n },\n handleBodyMousedown: function (event) {\n this.lastMousedownTarget = event.target;\n },\n handleInput: function (event) {\n this.updateInput(event.currentTarget, event);\n },\n handleClick: function (event) {\n this.triggerCustomEvent('editableClick', event, event.currentTarget);\n },\n handleBlur: function (event) {\n this.triggerCustomEvent('editableBlur', event, event.currentTarget);\n },\n handleKeypress: function (event) {\n this.triggerCustomEvent('editableKeypress', event, event.currentTarget);\n\n // If we're doing manual detection of the editableInput event we need\n // to check for input changes during 'keypress'\n if (this.keypressUpdateInput) {\n var eventObj = {\n target: event.target,\n currentTarget: event.currentTarget\n };\n\n // In IE, we need to let the rest of the event stack complete before we detect\n // changes to input, so using setTimeout here\n setTimeout(function () {\n this.updateInput(eventObj.currentTarget, eventObj);\n }.bind(this), 0);\n }\n },\n handleKeyup: function (event) {\n this.triggerCustomEvent('editableKeyup', event, event.currentTarget);\n },\n handleMouseover: function (event) {\n this.triggerCustomEvent('editableMouseover', event, event.currentTarget);\n },\n handleDragging: function (event) {\n this.triggerCustomEvent('editableDrag', event, event.currentTarget);\n },\n handleDrop: function (event) {\n this.triggerCustomEvent('editableDrop', event, event.currentTarget);\n },\n handlePaste: function (event) {\n this.triggerCustomEvent('editablePaste', event, event.currentTarget);\n },\n handleKeydown: function (event) {\n this.triggerCustomEvent('editableKeydown', event, event.currentTarget);\n if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.SPACE)) {\n return this.triggerCustomEvent('editableKeydownSpace', event, event.currentTarget);\n }\n if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.ENTER) || event.ctrlKey && MediumEditor.util.isKey(event, MediumEditor.util.keyCode.M)) {\n return this.triggerCustomEvent('editableKeydownEnter', event, event.currentTarget);\n }\n if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.TAB)) {\n return this.triggerCustomEvent('editableKeydownTab', event, event.currentTarget);\n }\n if (MediumEditor.util.isKey(event, [MediumEditor.util.keyCode.DELETE, MediumEditor.util.keyCode.BACKSPACE])) {\n return this.triggerCustomEvent('editableKeydownDelete', event, event.currentTarget);\n }\n }\n };\n MediumEditor.Events = Events;\n })();\n (function () {\n 'use strict';\n\n var Button = MediumEditor.Extension.extend({\n /* Button Options */\n\n /* action: [string]\n * The action argument to pass to MediumEditor.execAction()\n * when the button is clicked\n */\n action: undefined,\n /* aria: [string]\n * The value to add as the aria-label attribute of the button\n * element displayed in the toolbar.\n * This is also used as the tooltip for the button\n */\n aria: undefined,\n /* tagNames: [Array]\n * NOTE: This is not used if useQueryState is set to true.\n *\n * Array of element tag names that would indicate that this\n * button has already been applied. If this action has already\n * been applied, the button will be displayed as 'active' in the toolbar\n *\n * Example:\n * For 'bold', if the text is ever within a <b> or <strong>\n * tag that indicates the text is already bold. So the array\n * of tagNames for bold would be: ['b', 'strong']\n */\n tagNames: undefined,\n /* style: [Object]\n * NOTE: This is not used if useQueryState is set to true.\n *\n * A pair of css property & value(s) that indicate that this\n * button has already been applied. If this action has already\n * been applied, the button will be displayed as 'active' in the toolbar\n * Properties of the object:\n * prop [String]: name of the css property\n * value [String]: value(s) of the css property\n * multiple values can be separated by a '|'\n *\n * Example:\n * For 'bold', if the text is ever within an element with a 'font-weight'\n * style property set to '700' or 'bold', that indicates the text\n * is already bold. So the style object for bold would be:\n * { prop: 'font-weight', value: '700|bold' }\n */\n style: undefined,\n /* useQueryState: [boolean]\n * Enables/disables whether this button should use the built-in\n * document.queryCommandState() method to determine whether\n * the action has already been applied. If the action has already\n * been applied, the button will be displayed as 'active' in the toolbar\n *\n * Example:\n * For 'bold', if this is set to true, the code will call:\n * document.queryCommandState('bold') which will return true if the\n * browser thinks the text is already bold, and false otherwise\n */\n useQueryState: undefined,\n /* contentDefault: [string]\n * Default innerHTML to put inside the button\n */\n contentDefault: undefined,\n /* contentFA: [string]\n * The innerHTML to use for the content of the button\n * if the `buttonLabels` option for MediumEditor is set to 'fontawesome'\n */\n contentFA: undefined,\n /* classList: [Array]\n * An array of classNames (strings) to be added to the button\n */\n classList: undefined,\n /* attrs: [object]\n * A set of key-value pairs to add to the button as custom attributes\n */\n attrs: undefined,\n // The button constructor can optionally accept the name of a built-in button\n // (ie 'bold', 'italic', etc.)\n // When the name of a button is passed, it will initialize itself with the\n // configuration for that button\n constructor: function (options) {\n if (Button.isBuiltInButton(options)) {\n MediumEditor.Extension.call(this, this.defaults[options]);\n } else {\n MediumEditor.Extension.call(this, options);\n }\n },\n init: function () {\n MediumEditor.Extension.prototype.init.apply(this, arguments);\n this.button = this.createButton();\n this.on(this.button, 'click', this.handleClick.bind(this));\n },\n /* getButton: [function ()]\n *\n * If implemented, this function will be called when\n * the toolbar is being created. The DOM Element returned\n * by this function will be appended to the toolbar along\n * with any other buttons.\n */\n getButton: function () {\n return this.button;\n },\n getAction: function () {\n return typeof this.action === 'function' ? this.action(this.base.options) : this.action;\n },\n getAria: function () {\n return typeof this.aria === 'function' ? this.aria(this.base.options) : this.aria;\n },\n getTagNames: function () {\n return typeof this.tagNames === 'function' ? this.tagNames(this.base.options) : this.tagNames;\n },\n createButton: function () {\n var button = this.document.createElement('button'),\n content = this.contentDefault,\n ariaLabel = this.getAria(),\n buttonLabels = this.getEditorOption('buttonLabels');\n // Add class names\n button.classList.add('medium-editor-action');\n button.classList.add('medium-editor-action-' + this.name);\n if (this.classList) {\n this.classList.forEach(function (className) {\n button.classList.add(className);\n });\n }\n\n // Add attributes\n button.setAttribute('data-action', this.getAction());\n if (ariaLabel) {\n button.setAttribute('title', ariaLabel);\n button.setAttribute('aria-label', ariaLabel);\n }\n if (this.attrs) {\n Object.keys(this.attrs).forEach(function (attr) {\n button.setAttribute(attr, this.attrs[attr]);\n }, this);\n }\n if (buttonLabels === 'fontawesome' && this.contentFA) {\n content = this.contentFA;\n }\n button.innerHTML = content;\n return button;\n },\n handleClick: function (event) {\n event.preventDefault();\n event.stopPropagation();\n var action = this.getAction();\n if (action) {\n this.execAction(action);\n }\n },\n isActive: function () {\n return this.button.classList.contains(this.getEditorOption('activeButtonClass'));\n },\n setInactive: function () {\n this.button.classList.remove(this.getEditorOption('activeButtonClass'));\n delete this.knownState;\n },\n setActive: function () {\n this.button.classList.add(this.getEditorOption('activeButtonClass'));\n delete this.knownState;\n },\n queryCommandState: function () {\n var queryState = null;\n if (this.useQueryState) {\n queryState = this.base.queryCommandState(this.getAction());\n }\n return queryState;\n },\n isAlreadyApplied: function (node) {\n var isMatch = false,\n tagNames = this.getTagNames(),\n styleVals,\n computedStyle;\n if (this.knownState === false || this.knownState === true) {\n return this.knownState;\n }\n if (tagNames && tagNames.length > 0) {\n isMatch = tagNames.indexOf(node.nodeName.toLowerCase()) !== -1;\n }\n if (!isMatch && this.style) {\n styleVals = this.style.value.split('|');\n computedStyle = this.window.getComputedStyle(node, null).getPropertyValue(this.style.prop);\n styleVals.forEach(function (val) {\n if (!this.knownState) {\n isMatch = computedStyle.indexOf(val) !== -1;\n // text-decoration is not inherited by default\n // so if the computed style for text-decoration doesn't match\n // don't write to knownState so we can fallback to other checks\n if (isMatch || this.style.prop !== 'text-decoration') {\n this.knownState = isMatch;\n }\n }\n }, this);\n }\n return isMatch;\n }\n });\n Button.isBuiltInButton = function (name) {\n return typeof name === 'string' && MediumEditor.extensions.button.prototype.defaults.hasOwnProperty(name);\n };\n MediumEditor.extensions.button = Button;\n })();\n (function () {\n 'use strict';\n\n /* MediumEditor.extensions.button.defaults: [Object]\n * Set of default config options for all of the built-in MediumEditor buttons\n */\n MediumEditor.extensions.button.prototype.defaults = {\n 'bold': {\n name: 'bold',\n action: 'bold',\n aria: 'bold',\n tagNames: ['b', 'strong'],\n style: {\n prop: 'font-weight',\n value: '700|bold'\n },\n useQueryState: true,\n contentDefault: '<b>B</b>',\n contentFA: '<i class=\"fa fa-bold\"></i>'\n },\n 'italic': {\n name: 'italic',\n action: 'italic',\n aria: 'italic',\n tagNames: ['i', 'em'],\n style: {\n prop: 'font-style',\n value: 'italic'\n },\n useQueryState: true,\n contentDefault: '<b><i>I</i></b>',\n contentFA: '<i class=\"fa fa-italic\"></i>'\n },\n 'underline': {\n name: 'underline',\n action: 'underline',\n aria: 'underline',\n tagNames: ['u'],\n style: {\n prop: 'text-decoration',\n value: 'underline'\n },\n useQueryState: true,\n contentDefault: '<b><u>U</u></b>',\n contentFA: '<i class=\"fa fa-underline\"></i>'\n },\n 'strikethrough': {\n name: 'strikethrough',\n action: 'strikethrough',\n aria: 'strike through',\n tagNames: ['strike'],\n style: {\n prop: 'text-decoration',\n value: 'line-through'\n },\n useQueryState: true,\n contentDefault: '<s>A</s>',\n contentFA: '<i class=\"fa fa-strikethrough\"></i>'\n },\n 'superscript': {\n name: 'superscript',\n action: 'superscript',\n aria: 'superscript',\n tagNames: ['sup'],\n /* firefox doesn't behave the way we want it to, so we CAN'T use queryCommandState for superscript\n https://github.com/guardian/scribe/blob/master/BROWSERINCONSISTENCIES.md#documentquerycommandstate */\n // useQueryState: true\n contentDefault: '<b>x<sup>1</sup></b>',\n contentFA: '<i class=\"fa fa-superscript\"></i>'\n },\n 'subscript': {\n name: 'subscript',\n action: 'subscript',\n aria: 'subscript',\n tagNames: ['sub'],\n /* firefox doesn't behave the way we want it to, so we CAN'T use queryCommandState for subscript\n https://github.com/guardian/scribe/blob/master/BROWSERINCONSISTENCIES.md#documentquerycommandstate */\n // useQueryState: true\n contentDefault: '<b>x<sub>1</sub></b>',\n contentFA: '<i class=\"fa fa-subscript\"></i>'\n },\n 'image': {\n name: 'image',\n action: 'image',\n aria: 'image',\n tagNames: ['img'],\n contentDefault: '<b>image</b>',\n contentFA: '<i class=\"fa fa-picture-o\"></i>'\n },\n 'html': {\n name: 'html',\n action: 'html',\n aria: 'evaluate html',\n tagNames: ['iframe', 'object'],\n contentDefault: '<b>html</b>',\n contentFA: '<i class=\"fa fa-code\"></i>'\n },\n 'orderedlist': {\n name: 'orderedlist',\n action: 'insertorderedlist',\n aria: 'ordered list',\n tagNames: ['ol'],\n useQueryState: true,\n contentDefault: '<b>1.</b>',\n contentFA: '<i class=\"fa fa-list-ol\"></i>'\n },\n 'unorderedlist': {\n name: 'unorderedlist',\n action: 'insertunorderedlist',\n aria: 'unordered list',\n tagNames: ['ul'],\n useQueryState: true,\n contentDefault: '<b>•</b>',\n contentFA: '<i class=\"fa fa-list-ul\"></i>'\n },\n 'indent': {\n name: 'indent',\n action: 'indent',\n aria: 'indent',\n tagNames: [],\n contentDefault: '<b>→</b>',\n contentFA: '<i class=\"fa fa-indent\"></i>'\n },\n 'outdent': {\n name: 'outdent',\n action: 'outdent',\n aria: 'outdent',\n tagNames: [],\n contentDefault: '<b>←</b>',\n contentFA: '<i class=\"fa fa-outdent\"></i>'\n },\n 'justifyCenter': {\n name: 'justifyCenter',\n action: 'justifyCenter',\n aria: 'center justify',\n tagNames: [],\n style: {\n prop: 'text-align',\n value: 'center'\n },\n contentDefault: '<b>C</b>',\n contentFA: '<i class=\"fa fa-align-center\"></i>'\n },\n 'justifyFull': {\n name: 'justifyFull',\n action: 'justifyFull',\n aria: 'full justify',\n tagNames: [],\n style: {\n prop: 'text-align',\n value: 'justify'\n },\n contentDefault: '<b>J</b>',\n contentFA: '<i class=\"fa fa-align-justify\"></i>'\n },\n 'justifyLeft': {\n name: 'justifyLeft',\n action: 'justifyLeft',\n aria: 'left justify',\n tagNames: [],\n style: {\n prop: 'text-align',\n value: 'left'\n },\n contentDefault: '<b>L</b>',\n contentFA: '<i class=\"fa fa-align-left\"></i>'\n },\n 'justifyRight': {\n name: 'justifyRight',\n action: 'justifyRight',\n aria: 'right justify',\n tagNames: [],\n style: {\n prop: 'text-align',\n value: 'right'\n },\n contentDefault: '<b>R</b>',\n contentFA: '<i class=\"fa fa-align-right\"></i>'\n },\n // Known inline elements that are not removed, or not removed consistantly across browsers:\n // <span>, <label>, <br>\n 'removeFormat': {\n name: 'removeFormat',\n aria: 'remove formatting',\n action: 'removeFormat',\n contentDefault: '<b>X</b>',\n contentFA: '<i class=\"fa fa-eraser\"></i>'\n },\n /***** Buttons for appending block elements (append-<element> action) *****/\n\n 'quote': {\n name: 'quote',\n action: 'append-blockquote',\n aria: 'blockquote',\n tagNames: ['blockquote'],\n contentDefault: '<b>“</b>',\n contentFA: '<i class=\"fa fa-quote-right\"></i>'\n },\n 'pre': {\n name: 'pre',\n action: 'append-pre',\n aria: 'preformatted text',\n tagNames: ['pre'],\n contentDefault: '<b>0101</b>',\n contentFA: '<i class=\"fa fa-code fa-lg\"></i>'\n },\n 'h1': {\n name: 'h1',\n action: 'append-h1',\n aria: 'header type one',\n tagNames: ['h1'],\n contentDefault: '<b>H1</b>',\n contentFA: '<i class=\"fa fa-header\"><sup>1</sup>'\n },\n 'h2': {\n name: 'h2',\n action: 'append-h2',\n aria: 'header type two',\n tagNames: ['h2'],\n contentDefault: '<b>H2</b>',\n contentFA: '<i class=\"fa fa-header\"><sup>2</sup>'\n },\n 'h3': {\n name: 'h3',\n action: 'append-h3',\n aria: 'header type three',\n tagNames: ['h3'],\n contentDefault: '<b>H3</b>',\n contentFA: '<i class=\"fa fa-header\"><sup>3</sup>'\n },\n 'h4': {\n name: 'h4',\n action: 'append-h4',\n aria: 'header type four',\n tagNames: ['h4'],\n contentDefault: '<b>H4</b>',\n contentFA: '<i class=\"fa fa-header\"><sup>4</sup>'\n },\n 'h5': {\n name: 'h5',\n action: 'append-h5',\n aria: 'header type five',\n tagNames: ['h5'],\n contentDefault: '<b>H5</b>',\n contentFA: '<i class=\"fa fa-header\"><sup>5</sup>'\n },\n 'h6': {\n name: 'h6',\n action: 'append-h6',\n aria: 'header type six',\n tagNames: ['h6'],\n contentDefault: '<b>H6</b>',\n contentFA: '<i class=\"fa fa-header\"><sup>6</sup>'\n }\n };\n })();\n (function () {\n 'use strict';\n\n /* Base functionality for an extension which will display\n * a 'form' inside the toolbar\n */\n var FormExtension = MediumEditor.extensions.button.extend({\n init: function () {\n MediumEditor.extensions.button.prototype.init.apply(this, arguments);\n },\n // default labels for the form buttons\n formSaveLabel: '✓',\n formCloseLabel: '×',\n /* activeClass: [string]\n * set class which added to shown form\n */\n activeClass: 'medium-editor-toolbar-form-active',\n /* hasForm: [boolean]\n *\n * Setting this to true will cause getForm() to be called\n * when the toolbar is created, so the form can be appended\n * inside the toolbar container\n */\n hasForm: true,\n /* getForm: [function ()]\n *\n * When hasForm is true, this function must be implemented\n * and return a DOM Element which will be appended to\n * the toolbar container. The form should start hidden, and\n * the extension can choose when to hide/show it\n */\n getForm: function () {},\n /* isDisplayed: [function ()]\n *\n * This function should return true/false reflecting\n * whether the form is currently displayed\n */\n isDisplayed: function () {\n if (this.hasForm) {\n return this.getForm().classList.contains(this.activeClass);\n }\n return false;\n },\n /* hideForm: [function ()]\n *\n * This function should show the form element inside\n * the toolbar container\n */\n showForm: function () {\n if (this.hasForm) {\n this.getForm().classList.add(this.activeClass);\n }\n },\n /* hideForm: [function ()]\n *\n * This function should hide the form element inside\n * the toolbar container\n */\n hideForm: function () {\n if (this.hasForm) {\n this.getForm().classList.remove(this.activeClass);\n }\n },\n /************************ Helpers ************************\n * The following are helpers that are either set by MediumEditor\n * during initialization, or are helper methods which either\n * route calls to the MediumEditor instance or provide common\n * functionality for all form extensions\n *********************************************************/\n\n /* showToolbarDefaultActions: [function ()]\n *\n * Helper method which will turn back the toolbar after canceling\n * the customized form\n */\n showToolbarDefaultActions: function () {\n var toolbar = this.base.getExtensionByName('toolbar');\n if (toolbar) {\n toolbar.showToolbarDefaultActions();\n }\n },\n /* hideToolbarDefaultActions: [function ()]\n *\n * Helper function which will hide the default contents of the\n * toolbar, but leave the toolbar container in the same state\n * to allow a form to display its custom contents inside the toolbar\n */\n hideToolbarDefaultActions: function () {\n var toolbar = this.base.getExtensionByName('toolbar');\n if (toolbar) {\n toolbar.hideToolbarDefaultActions();\n }\n },\n /* setToolbarPosition: [function ()]\n *\n * Helper function which will update the size and position\n * of the toolbar based on the toolbar content and the current\n * position of the user's selection\n */\n setToolbarPosition: function () {\n var toolbar = this.base.getExtensionByName('toolbar');\n if (toolbar) {\n toolbar.setToolbarPosition();\n }\n }\n });\n MediumEditor.extensions.form = FormExtension;\n })();\n (function () {\n 'use strict';\n\n var AnchorForm = MediumEditor.extensions.form.extend({\n /* Anchor Form Options */\n\n /* customClassOption: [string] (previously options.anchorButton + options.anchorButtonClass)\n * Custom class name the user can optionally have added to their created links (ie 'button').\n * If passed as a non-empty string, a checkbox will be displayed allowing the user to choose\n * whether to have the class added to the created link or not.\n */\n customClassOption: null,\n /* customClassOptionText: [string]\n * text to be shown in the checkbox when the __customClassOption__ is being used.\n */\n customClassOptionText: 'Button',\n /* linkValidation: [boolean] (previously options.checkLinkFormat)\n * enables/disables check for common URL protocols on anchor links.\n */\n linkValidation: false,\n /* placeholderText: [string] (previously options.anchorInputPlaceholder)\n * text to be shown as placeholder of the anchor input.\n */\n placeholderText: 'Paste or type a link',\n /* targetCheckbox: [boolean] (previously options.anchorTarget)\n * enables/disables displaying a \"Open in new window\" checkbox, which when checked\n * changes the `target` attribute of the created link.\n */\n targetCheckbox: false,\n /* targetCheckboxText: [string] (previously options.anchorInputCheckboxLabel)\n * text to be shown in the checkbox enabled via the __targetCheckbox__ option.\n */\n targetCheckboxText: 'Open in new window',\n // Options for the Button base class\n name: 'anchor',\n action: 'createLink',\n aria: 'link',\n tagNames: ['a'],\n contentDefault: '<b>#</b>',\n contentFA: '<i class=\"fa fa-link\"></i>',\n init: function () {\n MediumEditor.extensions.form.prototype.init.apply(this, arguments);\n this.subscribe('editableKeydown', this.handleKeydown.bind(this));\n },\n // Called when the button the toolbar is clicked\n // Overrides ButtonExtension.handleClick\n handleClick: function (event) {\n event.preventDefault();\n event.stopPropagation();\n var range = MediumEditor.selection.getSelectionRange(this.document);\n if (range.startContainer.nodeName.toLowerCase() === 'a' || range.endContainer.nodeName.toLowerCase() === 'a' || MediumEditor.util.getClosestTag(MediumEditor.selection.getSelectedParentElement(range), 'a')) {\n return this.execAction('unlink');\n }\n if (!this.isDisplayed()) {\n this.showForm();\n }\n return false;\n },\n // Called when user hits the defined shortcut (CTRL / COMMAND + K)\n handleKeydown: function (event) {\n if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.K) && MediumEditor.util.isMetaCtrlKey(event) && !event.shiftKey) {\n this.handleClick(event);\n }\n },\n // Called by medium-editor to append form to the toolbar\n getForm: function () {\n if (!this.form) {\n this.form = this.createForm();\n }\n return this.form;\n },\n getTemplate: function () {\n var template = ['<input type=\"text\" class=\"medium-editor-toolbar-input\" placeholder=\"', this.placeholderText, '\">'];\n template.push('<a href=\"#\" class=\"medium-editor-toolbar-save\">', this.getEditorOption('buttonLabels') === 'fontawesome' ? '<i class=\"fa fa-check\"></i>' : this.formSaveLabel, '</a>');\n template.push('<a href=\"#\" class=\"medium-editor-toolbar-close\">', this.getEditorOption('buttonLabels') === 'fontawesome' ? '<i class=\"fa fa-times\"></i>' : this.formCloseLabel, '</a>');\n\n // both of these options are slightly moot with the ability to\n // override the various form buildup/serialize functions.\n\n if (this.targetCheckbox) {\n // fixme: ideally, this targetCheckboxText would be a formLabel too,\n // figure out how to deprecate? also consider `fa-` icon default implcations.\n template.push('<div class=\"medium-editor-toolbar-form-row\">', '<input type=\"checkbox\" class=\"medium-editor-toolbar-anchor-target\" id=\"medium-editor-toolbar-anchor-target-field-' + this.getEditorId() + '\">', '<label for=\"medium-editor-toolbar-anchor-target-field-' + this.getEditorId() + '\">', this.targetCheckboxText, '</label>', '</div>');\n }\n if (this.customClassOption) {\n // fixme: expose this `Button` text as a formLabel property, too\n // and provide similar access to a `fa-` icon default.\n template.push('<div class=\"medium-editor-toolbar-form-row\">', '<input type=\"checkbox\" class=\"medium-editor-toolbar-anchor-button\">', '<label>', this.customClassOptionText, '</label>', '</div>');\n }\n return template.join('');\n },\n // Used by medium-editor when the default toolbar is to be displayed\n isDisplayed: function () {\n return MediumEditor.extensions.form.prototype.isDisplayed.apply(this);\n },\n hideForm: function () {\n MediumEditor.extensions.form.prototype.hideForm.apply(this);\n this.getInput().value = '';\n },\n showForm: function (opts) {\n var input = this.getInput(),\n targetCheckbox = this.getAnchorTargetCheckbox(),\n buttonCheckbox = this.getAnchorButtonCheckbox();\n opts = opts || {\n value: ''\n };\n // TODO: This is for backwards compatability\n // We don't need to support the 'string' argument in 6.0.0\n if (typeof opts === 'string') {\n opts = {\n value: opts\n };\n }\n this.base.saveSelection();\n this.hideToolbarDefaultActions();\n MediumEditor.extensions.form.prototype.showForm.apply(this);\n this.setToolbarPosition();\n input.value = opts.value;\n input.focus();\n\n // If we have a target checkbox, we want it to be checked/unchecked\n // based on whether the existing link has target=_blank\n if (targetCheckbox) {\n targetCheckbox.checked = opts.target === '_blank';\n }\n\n // If we have a custom class checkbox, we want it to be checked/unchecked\n // based on whether an existing link already has the class\n if (buttonCheckbox) {\n var classList = opts.buttonClass ? opts.buttonClass.split(' ') : [];\n buttonCheckbox.checked = classList.indexOf(this.customClassOption) !== -1;\n }\n },\n // Called by core when tearing down medium-editor (destroy)\n destroy: function () {\n if (!this.form) {\n return false;\n }\n if (this.form.parentNode) {\n this.form.parentNode.removeChild(this.form);\n }\n delete this.form;\n },\n // core methods\n\n getFormOpts: function () {\n // no notion of private functions? wanted `_getFormOpts`\n var targetCheckbox = this.getAnchorTargetCheckbox(),\n buttonCheckbox = this.getAnchorButtonCheckbox(),\n opts = {\n value: this.getInput().value.trim()\n };\n if (this.linkValidation) {\n opts.value = this.checkLinkFormat(opts.value);\n }\n opts.target = '_self';\n if (targetCheckbox && targetCheckbox.checked) {\n opts.target = '_blank';\n }\n if (buttonCheckbox && buttonCheckbox.checked) {\n opts.buttonClass = this.customClassOption;\n }\n return opts;\n },\n doFormSave: function () {\n var opts = this.getFormOpts();\n this.completeFormSave(opts);\n },\n completeFormSave: function (opts) {\n this.base.restoreSelection();\n this.execAction(this.action, opts);\n this.base.checkSelection();\n },\n ensureEncodedUri: function (str) {\n return str === decodeURI(str) ? encodeURI(str) : str;\n },\n ensureEncodedUriComponent: function (str) {\n return str === decodeURIComponent(str) ? encodeURIComponent(str) : str;\n },\n ensureEncodedParam: function (param) {\n var split = param.split('='),\n key = split[0],\n val = split[1];\n return key + (val === undefined ? '' : '=' + this.ensureEncodedUriComponent(val));\n },\n ensureEncodedQuery: function (queryString) {\n return queryString.split('&').map(this.ensureEncodedParam.bind(this)).join('&');\n },\n checkLinkFormat: function (value) {\n // Matches any alphabetical characters followed by ://\n // Matches protocol relative \"//\"\n // Matches common external protocols \"mailto:\" \"tel:\" \"maps:\"\n // Matches relative hash link, begins with \"#\"\n var urlSchemeRegex = /^([a-z]+:)?\\/\\/|^(mailto|tel|maps):|^\\#/i,\n hasScheme = urlSchemeRegex.test(value),\n scheme = '',\n // telRegex is a regex for checking if the string is a telephone number\n telRegex = /^\\+?\\s?\\(?(?:\\d\\s?\\-?\\)?){3,20}$/,\n urlParts = value.match(/^(.*?)(?:\\?(.*?))?(?:#(.*))?$/),\n path = urlParts[1],\n query = urlParts[2],\n fragment = urlParts[3];\n if (telRegex.test(value)) {\n return 'tel:' + value;\n }\n if (!hasScheme) {\n var host = path.split('/')[0];\n // if the host part of the path looks like a hostname\n if (host.match(/.+(\\.|:).+/) || host === 'localhost') {\n scheme = 'http://';\n }\n }\n return scheme +\n // Ensure path is encoded\n this.ensureEncodedUri(path) + (\n // Ensure query is encoded\n query === undefined ? '' : '?' + this.ensureEncodedQuery(query)) + (\n // Include fragment unencoded as encodeUriComponent is too\n // heavy handed for the many characters allowed in a fragment\n fragment === undefined ? '' : '#' + fragment);\n },\n doFormCancel: function () {\n this.base.restoreSelection();\n this.base.checkSelection();\n },\n // form creation and event handling\n attachFormEvents: function (form) {\n var close = form.querySelector('.medium-editor-toolbar-close'),\n save = form.querySelector('.medium-editor-toolbar-save'),\n input = form.querySelector('.medium-editor-toolbar-input');\n\n // Handle clicks on the form itself\n this.on(form, 'click', this.handleFormClick.bind(this));\n\n // Handle typing in the textbox\n this.on(input, 'keyup', this.handleTextboxKeyup.bind(this));\n\n // Handle close button clicks\n this.on(close, 'click', this.handleCloseClick.bind(this));\n\n // Handle save button clicks (capture)\n this.on(save, 'click', this.handleSaveClick.bind(this), true);\n },\n createForm: function () {\n var doc = this.document,\n form = doc.createElement('div');\n\n // Anchor Form (div)\n form.className = 'medium-editor-toolbar-form';\n form.id = 'medium-editor-toolbar-form-anchor-' + this.getEditorId();\n form.innerHTML = this.getTemplate();\n this.attachFormEvents(form);\n return form;\n },\n getInput: function () {\n return this.getForm().querySelector('input.medium-editor-toolbar-input');\n },\n getAnchorTargetCheckbox: function () {\n return this.getForm().querySelector('.medium-editor-toolbar-anchor-target');\n },\n getAnchorButtonCheckbox: function () {\n return this.getForm().querySelector('.medium-editor-toolbar-anchor-button');\n },\n handleTextboxKeyup: function (event) {\n // For ENTER -> create the anchor\n if (event.keyCode === MediumEditor.util.keyCode.ENTER) {\n event.preventDefault();\n this.doFormSave();\n return;\n }\n\n // For ESCAPE -> close the form\n if (event.keyCode === MediumEditor.util.keyCode.ESCAPE) {\n event.preventDefault();\n this.doFormCancel();\n }\n },\n handleFormClick: function (event) {\n // make sure not to hide form when clicking inside the form\n event.stopPropagation();\n },\n handleSaveClick: function (event) {\n // Clicking Save -> create the anchor\n event.preventDefault();\n this.doFormSave();\n },\n handleCloseClick: function (event) {\n // Click Close -> close the form\n event.preventDefault();\n this.doFormCancel();\n }\n });\n MediumEditor.extensions.anchor = AnchorForm;\n })();\n (function () {\n 'use strict';\n\n var AnchorPreview = MediumEditor.Extension.extend({\n name: 'anchor-preview',\n // Anchor Preview Options\n\n /* hideDelay: [number] (previously options.anchorPreviewHideDelay)\n * time in milliseconds to show the anchor tag preview after the mouse has left the anchor tag.\n */\n hideDelay: 500,\n /* previewValueSelector: [string]\n * the default selector to locate where to put the activeAnchor value in the preview\n */\n previewValueSelector: 'a',\n /* showWhenToolbarIsVisible: [boolean]\n * determines whether the anchor tag preview shows up when the toolbar is visible\n */\n showWhenToolbarIsVisible: false,\n /* showOnEmptyLinks: [boolean]\n * determines whether the anchor tag preview shows up on links with href=\"\" or href=\"#something\"\n */\n showOnEmptyLinks: true,\n init: function () {\n this.anchorPreview = this.createPreview();\n this.getEditorOption('elementsContainer').appendChild(this.anchorPreview);\n this.attachToEditables();\n },\n getInteractionElements: function () {\n return this.getPreviewElement();\n },\n // TODO: Remove this function in 6.0.0\n getPreviewElement: function () {\n return this.anchorPreview;\n },\n createPreview: function () {\n var el = this.document.createElement('div');\n el.id = 'medium-editor-anchor-preview-' + this.getEditorId();\n el.className = 'medium-editor-anchor-preview';\n el.innerHTML = this.getTemplate();\n this.on(el, 'click', this.handleClick.bind(this));\n return el;\n },\n getTemplate: function () {\n return '<div class=\"medium-editor-toolbar-anchor-preview\" id=\"medium-editor-toolbar-anchor-preview\">' + ' <a class=\"medium-editor-toolbar-anchor-preview-inner\"></a>' + '</div>';\n },\n destroy: function () {\n if (this.anchorPreview) {\n if (this.anchorPreview.parentNode) {\n this.anchorPreview.parentNode.removeChild(this.anchorPreview);\n }\n delete this.anchorPreview;\n }\n },\n hidePreview: function () {\n if (this.anchorPreview) {\n this.anchorPreview.classList.remove('medium-editor-anchor-preview-active');\n }\n this.activeAnchor = null;\n },\n showPreview: function (anchorEl) {\n if (this.anchorPreview.classList.contains('medium-editor-anchor-preview-active') || anchorEl.getAttribute('data-disable-preview')) {\n return true;\n }\n if (this.previewValueSelector) {\n this.anchorPreview.querySelector(this.previewValueSelector).textContent = anchorEl.attributes.href.value;\n this.anchorPreview.querySelector(this.previewValueSelector).href = anchorEl.attributes.href.value;\n }\n this.anchorPreview.classList.add('medium-toolbar-arrow-over');\n this.anchorPreview.classList.remove('medium-toolbar-arrow-under');\n if (!this.anchorPreview.classList.contains('medium-editor-anchor-preview-active')) {\n this.anchorPreview.classList.add('medium-editor-anchor-preview-active');\n }\n this.activeAnchor = anchorEl;\n this.positionPreview();\n this.attachPreviewHandlers();\n return this;\n },\n positionPreview: function (activeAnchor) {\n activeAnchor = activeAnchor || this.activeAnchor;\n var containerWidth = this.window.innerWidth,\n buttonHeight = this.anchorPreview.offsetHeight,\n boundary = activeAnchor.getBoundingClientRect(),\n diffLeft = this.diffLeft,\n diffTop = this.diffTop,\n elementsContainer = this.getEditorOption('elementsContainer'),\n elementsContainerAbsolute = ['absolute', 'fixed'].indexOf(window.getComputedStyle(elementsContainer).getPropertyValue('position')) > -1,\n relativeBoundary = {},\n halfOffsetWidth,\n defaultLeft,\n middleBoundary,\n elementsContainerBoundary,\n top;\n halfOffsetWidth = this.anchorPreview.offsetWidth / 2;\n var toolbarExtension = this.base.getExtensionByName('toolbar');\n if (toolbarExtension) {\n diffLeft = toolbarExtension.diffLeft;\n diffTop = toolbarExtension.diffTop;\n }\n defaultLeft = diffLeft - halfOffsetWidth;\n\n // If container element is absolute / fixed, recalculate boundaries to be relative to the container\n if (elementsContainerAbsolute) {\n elementsContainerBoundary = elementsContainer.getBoundingClientRect();\n ['top', 'left'].forEach(function (key) {\n relativeBoundary[key] = boundary[key] - elementsContainerBoundary[key];\n });\n relativeBoundary.width = boundary.width;\n relativeBoundary.height = boundary.height;\n boundary = relativeBoundary;\n containerWidth = elementsContainerBoundary.width;\n\n // Adjust top position according to container scroll position\n top = elementsContainer.scrollTop;\n } else {\n // Adjust top position according to window scroll position\n top = this.window.pageYOffset;\n }\n middleBoundary = boundary.left + boundary.width / 2;\n top += buttonHeight + boundary.top + boundary.height - diffTop - this.anchorPreview.offsetHeight;\n this.anchorPreview.style.top = Math.round(top) + 'px';\n this.anchorPreview.style.right = 'initial';\n if (middleBoundary < halfOffsetWidth) {\n this.anchorPreview.style.left = defaultLeft + halfOffsetWidth + 'px';\n this.anchorPreview.style.right = 'initial';\n } else if (containerWidth - middleBoundary < halfOffsetWidth) {\n this.anchorPreview.style.left = 'auto';\n this.anchorPreview.style.right = 0;\n } else {\n this.anchorPreview.style.left = defaultLeft + middleBoundary + 'px';\n this.anchorPreview.style.right = 'initial';\n }\n },\n attachToEditables: function () {\n this.subscribe('editableMouseover', this.handleEditableMouseover.bind(this));\n this.subscribe('positionedToolbar', this.handlePositionedToolbar.bind(this));\n },\n handlePositionedToolbar: function () {\n // If the toolbar is visible and positioned, we don't need to hide the preview\n // when showWhenToolbarIsVisible is true\n if (!this.showWhenToolbarIsVisible) {\n this.hidePreview();\n }\n },\n handleClick: function (event) {\n var anchorExtension = this.base.getExtensionByName('anchor'),\n activeAnchor = this.activeAnchor;\n if (anchorExtension && activeAnchor) {\n event.preventDefault();\n this.base.selectElement(this.activeAnchor);\n\n // Using setTimeout + delay because:\n // We may actually be displaying the anchor form, which should be controlled by delay\n this.base.delay(function () {\n if (activeAnchor) {\n var opts = {\n value: activeAnchor.attributes.href.value,\n target: activeAnchor.getAttribute('target'),\n buttonClass: activeAnchor.getAttribute('class')\n };\n anchorExtension.showForm(opts);\n activeAnchor = null;\n }\n }.bind(this));\n }\n this.hidePreview();\n },\n handleAnchorMouseout: function () {\n this.anchorToPreview = null;\n this.off(this.activeAnchor, 'mouseout', this.instanceHandleAnchorMouseout);\n this.instanceHandleAnchorMouseout = null;\n },\n handleEditableMouseover: function (event) {\n var target = MediumEditor.util.getClosestTag(event.target, 'a');\n if (false === target) {\n return;\n }\n\n // Detect empty href attributes\n // The browser will make href=\"\" or href=\"#top\"\n // into absolute urls when accessed as event.target.href, so check the html\n if (!this.showOnEmptyLinks && (!/href=[\"']\\S+[\"']/.test(target.outerHTML) || /href=[\"']#\\S+[\"']/.test(target.outerHTML))) {\n return true;\n }\n\n // only show when toolbar is not present\n var toolbar = this.base.getExtensionByName('toolbar');\n if (!this.showWhenToolbarIsVisible && toolbar && toolbar.isDisplayed && toolbar.isDisplayed()) {\n return true;\n }\n\n // detach handler for other anchor in case we hovered multiple anchors quickly\n if (this.activeAnchor && this.activeAnchor !== target) {\n this.detachPreviewHandlers();\n }\n this.anchorToPreview = target;\n this.instanceHandleAnchorMouseout = this.handleAnchorMouseout.bind(this);\n this.on(this.anchorToPreview, 'mouseout', this.instanceHandleAnchorMouseout);\n // Using setTimeout + delay because:\n // - We're going to show the anchor preview according to the configured delay\n // if the mouse has not left the anchor tag in that time\n this.base.delay(function () {\n if (this.anchorToPreview) {\n this.showPreview(this.anchorToPreview);\n }\n }.bind(this));\n },\n handlePreviewMouseover: function () {\n this.lastOver = new Date().getTime();\n this.hovering = true;\n },\n handlePreviewMouseout: function (event) {\n if (!event.relatedTarget || !/anchor-preview/.test(event.relatedTarget.className)) {\n this.hovering = false;\n }\n },\n updatePreview: function () {\n if (this.hovering) {\n return true;\n }\n var durr = new Date().getTime() - this.lastOver;\n if (durr > this.hideDelay) {\n // hide the preview 1/2 second after mouse leaves the link\n this.detachPreviewHandlers();\n }\n },\n detachPreviewHandlers: function () {\n // cleanup\n clearInterval(this.intervalTimer);\n if (this.instanceHandlePreviewMouseover) {\n this.off(this.anchorPreview, 'mouseover', this.instanceHandlePreviewMouseover);\n this.off(this.anchorPreview, 'mouseout', this.instanceHandlePreviewMouseout);\n if (this.activeAnchor) {\n this.off(this.activeAnchor, 'mouseover', this.instanceHandlePreviewMouseover);\n this.off(this.activeAnchor, 'mouseout', this.instanceHandlePreviewMouseout);\n }\n }\n this.hidePreview();\n this.hovering = this.instanceHandlePreviewMouseover = this.instanceHandlePreviewMouseout = null;\n },\n // TODO: break up method and extract out handlers\n attachPreviewHandlers: function () {\n this.lastOver = new Date().getTime();\n this.hovering = true;\n this.instanceHandlePreviewMouseover = this.handlePreviewMouseover.bind(this);\n this.instanceHandlePreviewMouseout = this.handlePreviewMouseout.bind(this);\n this.intervalTimer = setInterval(this.updatePreview.bind(this), 200);\n this.on(this.anchorPreview, 'mouseover', this.instanceHandlePreviewMouseover);\n this.on(this.anchorPreview, 'mouseout', this.instanceHandlePreviewMouseout);\n this.on(this.activeAnchor, 'mouseover', this.instanceHandlePreviewMouseover);\n this.on(this.activeAnchor, 'mouseout', this.instanceHandlePreviewMouseout);\n }\n });\n MediumEditor.extensions.anchorPreview = AnchorPreview;\n })();\n (function () {\n 'use strict';\n\n var WHITESPACE_CHARS, KNOWN_TLDS_FRAGMENT, LINK_REGEXP_TEXT, KNOWN_TLDS_REGEXP, LINK_REGEXP;\n WHITESPACE_CHARS = [' ', '\\t', '\\n', '\\r', '\\u00A0', '\\u2000', '\\u2001', '\\u2002', '\\u2003', '\\u2028', '\\u2029'];\n KNOWN_TLDS_FRAGMENT = 'com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|' + 'xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|' + 'bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|' + 'fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|' + 'is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|' + 'mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|' + 'pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|' + 'tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw';\n LINK_REGEXP_TEXT = '(' +\n // Version of Gruber URL Regexp optimized for JS: http://stackoverflow.com/a/17733640\n '((?:(https?://|ftps?://|nntp://)|www\\\\d{0,3}[.]|[a-z0-9.\\\\-]+[.](' + KNOWN_TLDS_FRAGMENT + ')\\\\\\/)\\\\S+(?:[^\\\\s`!\\\\[\\\\]{};:\\'\\\".,?\\u00AB\\u00BB\\u201C\\u201D\\u2018\\u2019]))' +\n // Addition to above Regexp to support bare domains/one level subdomains with common non-i18n TLDs and without www prefix:\n ')|(([a-z0-9\\\\-]+\\\\.)?[a-z0-9\\\\-]+\\\\.(' + KNOWN_TLDS_FRAGMENT + '))';\n KNOWN_TLDS_REGEXP = new RegExp('^(' + KNOWN_TLDS_FRAGMENT + ')$', 'i');\n LINK_REGEXP = new RegExp(LINK_REGEXP_TEXT, 'gi');\n function nodeIsNotInsideAnchorTag(node) {\n return !MediumEditor.util.getClosestTag(node, 'a');\n }\n var AutoLink = MediumEditor.Extension.extend({\n init: function () {\n MediumEditor.Extension.prototype.init.apply(this, arguments);\n this.disableEventHandling = false;\n this.subscribe('editableKeypress', this.onKeypress.bind(this));\n this.subscribe('editableBlur', this.onBlur.bind(this));\n // MS IE has it's own auto-URL detect feature but ours is better in some ways. Be consistent.\n this.document.execCommand('AutoUrlDetect', false, false);\n },\n isLastInstance: function () {\n var activeInstances = 0;\n for (var i = 0; i < this.window._mediumEditors.length; i++) {\n var editor = this.window._mediumEditors[i];\n if (editor !== null && editor.getExtensionByName('autoLink') !== undefined) {\n activeInstances++;\n }\n }\n return activeInstances === 1;\n },\n destroy: function () {\n // Turn AutoUrlDetect back on\n if (this.document.queryCommandSupported('AutoUrlDetect') && this.isLastInstance()) {\n this.document.execCommand('AutoUrlDetect', false, true);\n }\n },\n onBlur: function (blurEvent, editable) {\n this.performLinking(editable);\n },\n onKeypress: function (keyPressEvent) {\n if (this.disableEventHandling) {\n return;\n }\n if (MediumEditor.util.isKey(keyPressEvent, [MediumEditor.util.keyCode.SPACE, MediumEditor.util.keyCode.ENTER])) {\n clearTimeout(this.performLinkingTimeout);\n // Saving/restoring the selection in the middle of a keypress doesn't work well...\n this.performLinkingTimeout = setTimeout(function () {\n try {\n var sel = this.base.exportSelection();\n if (this.performLinking(keyPressEvent.target)) {\n // pass true for favorLaterSelectionAnchor - this is needed for links at the end of a\n // paragraph in MS IE, or MS IE causes the link to be deleted right after adding it.\n this.base.importSelection(sel, true);\n }\n } catch (e) {\n if (window.console) {\n window.console.error('Failed to perform linking', e);\n }\n this.disableEventHandling = true;\n }\n }.bind(this), 0);\n }\n },\n performLinking: function (contenteditable) {\n /*\n Perform linking on blockElement basis, blockElements are HTML elements with text content and without\n child element.\n Example:\n - HTML content\n <blockquote>\n <p>link.</p>\n <p>my</p>\n </blockquote>\n - blockElements\n [<p>link.</p>, <p>my</p>]\n otherwise the detection can wrongly find the end of one paragraph and the beginning of another paragraph\n to constitute a link, such as a paragraph ending \"link.\" and the next paragraph beginning with \"my\" is\n interpreted into \"link.my\" and the code tries to create a link across blockElements - which doesn't work\n and is terrible.\n (Medium deletes the spaces/returns between P tags so the textContent ends up without paragraph spacing)\n */\n var blockElements = MediumEditor.util.splitByBlockElements(contenteditable),\n documentModified = false;\n if (blockElements.length === 0) {\n blockElements = [contenteditable];\n }\n for (var i = 0; i < blockElements.length; i++) {\n documentModified = this.removeObsoleteAutoLinkSpans(blockElements[i]) || documentModified;\n documentModified = this.performLinkingWithinElement(blockElements[i]) || documentModified;\n }\n this.base.events.updateInput(contenteditable, {\n target: contenteditable,\n currentTarget: contenteditable\n });\n return documentModified;\n },\n removeObsoleteAutoLinkSpans: function (element) {\n if (!element || element.nodeType === 3) {\n return false;\n }\n var spans = element.querySelectorAll('span[data-auto-link=\"true\"]'),\n documentModified = false;\n for (var i = 0; i < spans.length; i++) {\n var textContent = spans[i].textContent;\n if (textContent.indexOf('://') === -1) {\n textContent = MediumEditor.util.ensureUrlHasProtocol(textContent);\n }\n if (spans[i].getAttribute('data-href') !== textContent && nodeIsNotInsideAnchorTag(spans[i])) {\n documentModified = true;\n var trimmedTextContent = textContent.replace(/\\s+$/, '');\n if (spans[i].getAttribute('data-href') === trimmedTextContent) {\n var charactersTrimmed = textContent.length - trimmedTextContent.length,\n subtree = MediumEditor.util.splitOffDOMTree(spans[i], this.splitTextBeforeEnd(spans[i], charactersTrimmed));\n spans[i].parentNode.insertBefore(subtree, spans[i].nextSibling);\n } else {\n // Some editing has happened to the span, so just remove it entirely. The user can put it back\n // around just the href content if they need to prevent it from linking\n MediumEditor.util.unwrap(spans[i], this.document);\n }\n }\n }\n return documentModified;\n },\n splitTextBeforeEnd: function (element, characterCount) {\n var treeWalker = this.document.createTreeWalker(element, NodeFilter.SHOW_TEXT, null, false),\n lastChildNotExhausted = true;\n\n // Start the tree walker at the last descendant of the span\n while (lastChildNotExhausted) {\n lastChildNotExhausted = treeWalker.lastChild() !== null;\n }\n var currentNode, currentNodeValue, previousNode;\n while (characterCount > 0 && previousNode !== null) {\n currentNode = treeWalker.currentNode;\n currentNodeValue = currentNode.nodeValue;\n if (currentNodeValue.length > characterCount) {\n previousNode = currentNode.splitText(currentNodeValue.length - characterCount);\n characterCount = 0;\n } else {\n previousNode = treeWalker.previousNode();\n characterCount -= currentNodeValue.length;\n }\n }\n return previousNode;\n },\n performLinkingWithinElement: function (element) {\n var matches = this.findLinkableText(element),\n linkCreated = false;\n for (var matchIndex = 0; matchIndex < matches.length; matchIndex++) {\n var matchingTextNodes = MediumEditor.util.findOrCreateMatchingTextNodes(this.document, element, matches[matchIndex]);\n if (this.shouldNotLink(matchingTextNodes)) {\n continue;\n }\n this.createAutoLink(matchingTextNodes, matches[matchIndex].href);\n }\n return linkCreated;\n },\n shouldNotLink: function (textNodes) {\n var shouldNotLink = false;\n for (var i = 0; i < textNodes.length && shouldNotLink === false; i++) {\n // Do not link if the text node is either inside an anchor or inside span[data-auto-link]\n shouldNotLink = !!MediumEditor.util.traverseUp(textNodes[i], function (node) {\n return node.nodeName.toLowerCase() === 'a' || node.getAttribute && node.getAttribute('data-auto-link') === 'true';\n });\n }\n return shouldNotLink;\n },\n findLinkableText: function (contenteditable) {\n var textContent = contenteditable.textContent,\n match = null,\n matches = [];\n while ((match = LINK_REGEXP.exec(textContent)) !== null) {\n var matchOk = true,\n matchEnd = match.index + match[0].length;\n // If the regexp detected something as a link that has text immediately preceding/following it, bail out.\n matchOk = (match.index === 0 || WHITESPACE_CHARS.indexOf(textContent[match.index - 1]) !== -1) && (matchEnd === textContent.length || WHITESPACE_CHARS.indexOf(textContent[matchEnd]) !== -1);\n // If the regexp detected a bare domain that doesn't use one of our expected TLDs, bail out.\n matchOk = matchOk && (match[0].indexOf('/') !== -1 || KNOWN_TLDS_REGEXP.test(match[0].split('.').pop().split('?').shift()));\n if (matchOk) {\n matches.push({\n href: match[0],\n start: match.index,\n end: matchEnd\n });\n }\n }\n return matches;\n },\n createAutoLink: function (textNodes, href) {\n href = MediumEditor.util.ensureUrlHasProtocol(href);\n var anchor = MediumEditor.util.createLink(this.document, textNodes, href, this.getEditorOption('targetBlank') ? '_blank' : null),\n span = this.document.createElement('span');\n span.setAttribute('data-auto-link', 'true');\n span.setAttribute('data-href', href);\n anchor.insertBefore(span, anchor.firstChild);\n while (anchor.childNodes.length > 1) {\n span.appendChild(anchor.childNodes[1]);\n }\n }\n });\n MediumEditor.extensions.autoLink = AutoLink;\n })();\n (function () {\n 'use strict';\n\n var CLASS_DRAG_OVER = 'medium-editor-dragover';\n function clearClassNames(element) {\n var editable = MediumEditor.util.getContainerEditorElement(element),\n existing = Array.prototype.slice.call(editable.parentElement.querySelectorAll('.' + CLASS_DRAG_OVER));\n existing.forEach(function (el) {\n el.classList.remove(CLASS_DRAG_OVER);\n });\n }\n var FileDragging = MediumEditor.Extension.extend({\n name: 'fileDragging',\n allowedTypes: ['image'],\n init: function () {\n MediumEditor.Extension.prototype.init.apply(this, arguments);\n this.subscribe('editableDrag', this.handleDrag.bind(this));\n this.subscribe('editableDrop', this.handleDrop.bind(this));\n },\n handleDrag: function (event) {\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n var target = event.target.classList ? event.target : event.target.parentElement;\n\n // Ensure the class gets removed from anything that had it before\n clearClassNames(target);\n if (event.type === 'dragover') {\n target.classList.add(CLASS_DRAG_OVER);\n }\n },\n handleDrop: function (event) {\n // Prevent file from opening in the current window\n event.preventDefault();\n event.stopPropagation();\n // Select the dropping target, and set the selection to the end of the target\n // https://github.com/yabwe/medium-editor/issues/980\n this.base.selectElement(event.target);\n var selection = this.base.exportSelection();\n selection.start = selection.end;\n this.base.importSelection(selection);\n // IE9 does not support the File API, so prevent file from opening in the window\n // but also don't try to actually get the file\n if (event.dataTransfer.files) {\n Array.prototype.slice.call(event.dataTransfer.files).forEach(function (file) {\n if (this.isAllowedFile(file)) {\n if (file.type.match('image')) {\n this.insertImageFile(file);\n }\n }\n }, this);\n }\n\n // Make sure we remove our class from everything\n clearClassNames(event.target);\n },\n isAllowedFile: function (file) {\n return this.allowedTypes.some(function (fileType) {\n return !!file.type.match(fileType);\n });\n },\n insertImageFile: function (file) {\n if (typeof FileReader !== 'function') {\n return;\n }\n var fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n\n // attach the onload event handler, makes it easier to listen in with jasmine\n fileReader.addEventListener('load', function (e) {\n var addImageElement = this.document.createElement('img');\n addImageElement.src = e.target.result;\n MediumEditor.util.insertHTMLCommand(this.document, addImageElement.outerHTML);\n }.bind(this));\n }\n });\n MediumEditor.extensions.fileDragging = FileDragging;\n })();\n (function () {\n 'use strict';\n\n var KeyboardCommands = MediumEditor.Extension.extend({\n name: 'keyboard-commands',\n /* KeyboardCommands Options */\n\n /* commands: [Array]\n * Array of objects describing each command and the combination of keys that will trigger it\n * Required for each object:\n * command [String] (argument passed to editor.execAction())\n * key [String] (keyboard character that triggers this command)\n * meta [boolean] (whether the ctrl/meta key has to be active or inactive)\n * shift [boolean] (whether the shift key has to be active or inactive)\n * alt [boolean] (whether the alt key has to be active or inactive)\n */\n commands: [{\n command: 'bold',\n key: 'B',\n meta: true,\n shift: false,\n alt: false\n }, {\n command: 'italic',\n key: 'I',\n meta: true,\n shift: false,\n alt: false\n }, {\n command: 'underline',\n key: 'U',\n meta: true,\n shift: false,\n alt: false\n }],\n init: function () {\n MediumEditor.Extension.prototype.init.apply(this, arguments);\n this.subscribe('editableKeydown', this.handleKeydown.bind(this));\n this.keys = {};\n this.commands.forEach(function (command) {\n var keyCode = command.key.charCodeAt(0);\n if (!this.keys[keyCode]) {\n this.keys[keyCode] = [];\n }\n this.keys[keyCode].push(command);\n }, this);\n },\n handleKeydown: function (event) {\n var keyCode = MediumEditor.util.getKeyCode(event);\n if (!this.keys[keyCode]) {\n return;\n }\n var isMeta = MediumEditor.util.isMetaCtrlKey(event),\n isShift = !!event.shiftKey,\n isAlt = !!event.altKey;\n this.keys[keyCode].forEach(function (data) {\n if (data.meta === isMeta && data.shift === isShift && (data.alt === isAlt || undefined === data.alt)) {\n // TODO deprecated: remove check for undefined === data.alt when jumping to 6.0.0\n event.preventDefault();\n event.stopPropagation();\n\n // command can be a function to execute\n if (typeof data.command === 'function') {\n data.command.apply(this);\n }\n // command can be false so the shortcut is just disabled\n else if (false !== data.command) {\n this.execAction(data.command);\n }\n }\n }, this);\n }\n });\n MediumEditor.extensions.keyboardCommands = KeyboardCommands;\n })();\n (function () {\n 'use strict';\n\n var FontNameForm = MediumEditor.extensions.form.extend({\n name: 'fontname',\n action: 'fontName',\n aria: 'change font name',\n contentDefault: '±',\n // ±\n contentFA: '<i class=\"fa fa-font\"></i>',\n fonts: ['', 'Arial', 'Verdana', 'Times New Roman'],\n init: function () {\n MediumEditor.extensions.form.prototype.init.apply(this, arguments);\n },\n // Called when the button the toolbar is clicked\n // Overrides ButtonExtension.handleClick\n handleClick: function (event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.isDisplayed()) {\n // Get FontName of current selection (convert to string since IE returns this as number)\n var fontName = this.document.queryCommandValue('fontName') + '';\n this.showForm(fontName);\n }\n return false;\n },\n // Called by medium-editor to append form to the toolbar\n getForm: function () {\n if (!this.form) {\n this.form = this.createForm();\n }\n return this.form;\n },\n // Used by medium-editor when the default toolbar is to be displayed\n isDisplayed: function () {\n return this.getForm().style.display === 'block';\n },\n hideForm: function () {\n this.getForm().style.display = 'none';\n this.getSelect().value = '';\n },\n showForm: function (fontName) {\n var select = this.getSelect();\n this.base.saveSelection();\n this.hideToolbarDefaultActions();\n this.getForm().style.display = 'block';\n this.setToolbarPosition();\n select.value = fontName || '';\n select.focus();\n },\n // Called by core when tearing down medium-editor (destroy)\n destroy: function () {\n if (!this.form) {\n return false;\n }\n if (this.form.parentNode) {\n this.form.parentNode.removeChild(this.form);\n }\n delete this.form;\n },\n // core methods\n\n doFormSave: function () {\n this.base.restoreSelection();\n this.base.checkSelection();\n },\n doFormCancel: function () {\n this.base.restoreSelection();\n this.clearFontName();\n this.base.checkSelection();\n },\n // form creation and event handling\n createForm: function () {\n var doc = this.document,\n form = doc.createElement('div'),\n select = doc.createElement('select'),\n close = doc.createElement('a'),\n save = doc.createElement('a'),\n option;\n\n // Font Name Form (div)\n form.className = 'medium-editor-toolbar-form';\n form.id = 'medium-editor-toolbar-form-fontname-' + this.getEditorId();\n\n // Handle clicks on the form itself\n this.on(form, 'click', this.handleFormClick.bind(this));\n\n // Add font names\n for (var i = 0; i < this.fonts.length; i++) {\n option = doc.createElement('option');\n option.innerHTML = this.fonts[i];\n option.value = this.fonts[i];\n select.appendChild(option);\n }\n select.className = 'medium-editor-toolbar-select';\n form.appendChild(select);\n\n // Handle typing in the textbox\n this.on(select, 'change', this.handleFontChange.bind(this));\n\n // Add save buton\n save.setAttribute('href', '#');\n save.className = 'medium-editor-toobar-save';\n save.innerHTML = this.getEditorOption('buttonLabels') === 'fontawesome' ? '<i class=\"fa fa-check\"></i>' : '✓';\n form.appendChild(save);\n\n // Handle save button clicks (capture)\n this.on(save, 'click', this.handleSaveClick.bind(this), true);\n\n // Add close button\n close.setAttribute('href', '#');\n close.className = 'medium-editor-toobar-close';\n close.innerHTML = this.getEditorOption('buttonLabels') === 'fontawesome' ? '<i class=\"fa fa-times\"></i>' : '×';\n form.appendChild(close);\n\n // Handle close button clicks\n this.on(close, 'click', this.handleCloseClick.bind(this));\n return form;\n },\n getSelect: function () {\n return this.getForm().querySelector('select.medium-editor-toolbar-select');\n },\n clearFontName: function () {\n MediumEditor.selection.getSelectedElements(this.document).forEach(function (el) {\n if (el.nodeName.toLowerCase() === 'font' && el.hasAttribute('face')) {\n el.removeAttribute('face');\n }\n });\n },\n handleFontChange: function () {\n var font = this.getSelect().value;\n if (font === '') {\n this.clearFontName();\n } else {\n this.execAction('fontName', {\n value: font\n });\n }\n },\n handleFormClick: function (event) {\n // make sure not to hide form when clicking inside the form\n event.stopPropagation();\n },\n handleSaveClick: function (event) {\n // Clicking Save -> create the font size\n event.preventDefault();\n this.doFormSave();\n },\n handleCloseClick: function (event) {\n // Click Close -> close the form\n event.preventDefault();\n this.doFormCancel();\n }\n });\n MediumEditor.extensions.fontName = FontNameForm;\n })();\n (function () {\n 'use strict';\n\n var FontSizeForm = MediumEditor.extensions.form.extend({\n name: 'fontsize',\n action: 'fontSize',\n aria: 'increase/decrease font size',\n contentDefault: '±',\n // ±\n contentFA: '<i class=\"fa fa-text-height\"></i>',\n init: function () {\n MediumEditor.extensions.form.prototype.init.apply(this, arguments);\n },\n // Called when the button the toolbar is clicked\n // Overrides ButtonExtension.handleClick\n handleClick: function (event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.isDisplayed()) {\n // Get fontsize of current selection (convert to string since IE returns this as number)\n var fontSize = this.document.queryCommandValue('fontSize') + '';\n this.showForm(fontSize);\n }\n return false;\n },\n // Called by medium-editor to append form to the toolbar\n getForm: function () {\n if (!this.form) {\n this.form = this.createForm();\n }\n return this.form;\n },\n // Used by medium-editor when the default toolbar is to be displayed\n isDisplayed: function () {\n return this.getForm().style.display === 'block';\n },\n hideForm: function () {\n this.getForm().style.display = 'none';\n this.getInput().value = '';\n },\n showForm: function (fontSize) {\n var input = this.getInput();\n this.base.saveSelection();\n this.hideToolbarDefaultActions();\n this.getForm().style.display = 'block';\n this.setToolbarPosition();\n input.value = fontSize || '';\n input.focus();\n },\n // Called by core when tearing down medium-editor (destroy)\n destroy: function () {\n if (!this.form) {\n return false;\n }\n if (this.form.parentNode) {\n this.form.parentNode.removeChild(this.form);\n }\n delete this.form;\n },\n // core methods\n\n doFormSave: function () {\n this.base.restoreSelection();\n this.base.checkSelection();\n },\n doFormCancel: function () {\n this.base.restoreSelection();\n this.clearFontSize();\n this.base.checkSelection();\n },\n // form creation and event handling\n createForm: function () {\n var doc = this.document,\n form = doc.createElement('div'),\n input = doc.createElement('input'),\n close = doc.createElement('a'),\n save = doc.createElement('a');\n\n // Font Size Form (div)\n form.className = 'medium-editor-toolbar-form';\n form.id = 'medium-editor-toolbar-form-fontsize-' + this.getEditorId();\n\n // Handle clicks on the form itself\n this.on(form, 'click', this.handleFormClick.bind(this));\n\n // Add font size slider\n input.setAttribute('type', 'range');\n input.setAttribute('min', '1');\n input.setAttribute('max', '7');\n input.className = 'medium-editor-toolbar-input';\n form.appendChild(input);\n\n // Handle typing in the textbox\n this.on(input, 'change', this.handleSliderChange.bind(this));\n\n // Add save buton\n save.setAttribute('href', '#');\n save.className = 'medium-editor-toobar-save';\n save.innerHTML = this.getEditorOption('buttonLabels') === 'fontawesome' ? '<i class=\"fa fa-check\"></i>' : '✓';\n form.appendChild(save);\n\n // Handle save button clicks (capture)\n this.on(save, 'click', this.handleSaveClick.bind(this), true);\n\n // Add close button\n close.setAttribute('href', '#');\n close.className = 'medium-editor-toobar-close';\n close.innerHTML = this.getEditorOption('buttonLabels') === 'fontawesome' ? '<i class=\"fa fa-times\"></i>' : '×';\n form.appendChild(close);\n\n // Handle close button clicks\n this.on(close, 'click', this.handleCloseClick.bind(this));\n return form;\n },\n getInput: function () {\n return this.getForm().querySelector('input.medium-editor-toolbar-input');\n },\n clearFontSize: function () {\n MediumEditor.selection.getSelectedElements(this.document).forEach(function (el) {\n if (el.nodeName.toLowerCase() === 'font' && el.hasAttribute('size')) {\n el.removeAttribute('size');\n }\n });\n },\n handleSliderChange: function () {\n var size = this.getInput().value;\n if (size === '4') {\n this.clearFontSize();\n } else {\n this.execAction('fontSize', {\n value: size\n });\n }\n },\n handleFormClick: function (event) {\n // make sure not to hide form when clicking inside the form\n event.stopPropagation();\n },\n handleSaveClick: function (event) {\n // Clicking Save -> create the font size\n event.preventDefault();\n this.doFormSave();\n },\n handleCloseClick: function (event) {\n // Click Close -> close the form\n event.preventDefault();\n this.doFormCancel();\n }\n });\n MediumEditor.extensions.fontSize = FontSizeForm;\n })();\n (function () {\n 'use strict';\n\n /* Helpers and internal variables that don't need to be members of actual paste handler */\n var pasteBinDefaultContent = '%ME_PASTEBIN%',\n lastRange = null,\n keyboardPasteEditable = null,\n stopProp = function (event) {\n event.stopPropagation();\n };\n\n /*jslint regexp: true*/\n /*\n jslint does not allow character negation, because the negation\n will not match any unicode characters. In the regexes in this\n block, negation is used specifically to match the end of an html\n tag, and in fact unicode characters *should* be allowed.\n */\n function createReplacements() {\n return [\n // Remove anything but the contents within the BODY element\n [new RegExp(/^[\\s\\S]*<body[^>]*>\\s*|\\s*<\\/body[^>]*>[\\s\\S]*$/g), ''],\n // cleanup comments added by Chrome when pasting html\n [new RegExp(/<!--StartFragment-->|<!--EndFragment-->/g), ''],\n // Trailing BR elements\n [new RegExp(/<br>$/i), ''],\n // replace two bogus tags that begin pastes from google docs\n [new RegExp(/<[^>]*docs-internal-guid[^>]*>/gi), ''], [new RegExp(/<\\/b>(<br[^>]*>)?$/gi), ''],\n // un-html spaces and newlines inserted by OS X\n [new RegExp(/<span class=\"Apple-converted-space\">\\s+<\\/span>/g), ' '], [new RegExp(/<br class=\"Apple-interchange-newline\">/g), '<br>'],\n // replace google docs italics+bold with a span to be replaced once the html is inserted\n [new RegExp(/<span[^>]*(font-style:italic;font-weight:(bold|700)|font-weight:(bold|700);font-style:italic)[^>]*>/gi), '<span class=\"replace-with italic bold\">'],\n // replace google docs italics with a span to be replaced once the html is inserted\n [new RegExp(/<span[^>]*font-style:italic[^>]*>/gi), '<span class=\"replace-with italic\">'],\n //[replace google docs bolds with a span to be replaced once the html is inserted\n [new RegExp(/<span[^>]*font-weight:(bold|700)[^>]*>/gi), '<span class=\"replace-with bold\">'],\n // replace manually entered b/i/a tags with real ones\n [new RegExp(/<(\\/?)(i|b|a)>/gi), '<$1$2>'],\n // replace manually a tags with real ones, converting smart-quotes from google docs\n [new RegExp(/<a(?:(?!href).)+href=(?:"|”|“|\"|“|â€)(((?!"|”|“|\"|“|â€).)*)(?:"|”|“|\"|“|â€)(?:(?!>).)*>/gi), '<a href=\"$1\">'],\n // Newlines between paragraphs in html have no syntactic value,\n // but then have a tendency to accidentally become additional paragraphs down the line\n [new RegExp(/<\\/p>\\n+/gi), '</p>'], [new RegExp(/\\n+<p/gi), '<p'],\n // Microsoft Word makes these odd tags, like <o:p></o:p>\n [new RegExp(/<\\/?o:[a-z]*>/gi), ''],\n // Microsoft Word adds some special elements around list items\n [new RegExp(/<!\\[if !supportLists\\]>(((?!<!).)*)<!\\[endif]\\>/gi), '$1']];\n }\n /*jslint regexp: false*/\n\n /**\n * Gets various content types out of the Clipboard API. It will also get the\n * plain text using older IE and WebKit API.\n *\n * @param {event} event Event fired on paste.\n * @param {win} reference to window\n * @param {doc} reference to document\n * @return {Object} Object with mime types and data for those mime types.\n */\n function getClipboardContent(event, win, doc) {\n var dataTransfer = event.clipboardData || win.clipboardData || doc.dataTransfer,\n data = {};\n if (!dataTransfer) {\n return data;\n }\n\n // Use old WebKit/IE API\n if (dataTransfer.getData) {\n var legacyText = dataTransfer.getData('Text');\n if (legacyText && legacyText.length > 0) {\n data['text/plain'] = legacyText;\n }\n }\n if (dataTransfer.types) {\n for (var i = 0; i < dataTransfer.types.length; i++) {\n var contentType = dataTransfer.types[i];\n data[contentType] = dataTransfer.getData(contentType);\n }\n }\n return data;\n }\n var PasteHandler = MediumEditor.Extension.extend({\n /* Paste Options */\n\n /* forcePlainText: [boolean]\n * Forces pasting as plain text.\n */\n forcePlainText: true,\n /* cleanPastedHTML: [boolean]\n * cleans pasted content from different sources, like google docs etc.\n */\n cleanPastedHTML: false,\n /* preCleanReplacements: [Array]\n * custom pairs (2 element arrays) of RegExp and replacement text to use during past when\n * __forcePlainText__ or __cleanPastedHTML__ are `true` OR when calling `cleanPaste(text)` helper method.\n * These replacements are executed before any medium editor defined replacements.\n */\n preCleanReplacements: [],\n /* cleanReplacements: [Array]\n * custom pairs (2 element arrays) of RegExp and replacement text to use during paste when\n * __forcePlainText__ or __cleanPastedHTML__ are `true` OR when calling `cleanPaste(text)` helper method.\n * These replacements are executed after any medium editor defined replacements.\n */\n cleanReplacements: [],\n /* cleanAttrs:: [Array]\n * list of element attributes to remove during paste when __cleanPastedHTML__ is `true` or when\n * calling `cleanPaste(text)` or `pasteHTML(html, options)` helper methods.\n */\n cleanAttrs: ['class', 'style', 'dir'],\n /* cleanTags: [Array]\n * list of element tag names to remove during paste when __cleanPastedHTML__ is `true` or when\n * calling `cleanPaste(text)` or `pasteHTML(html, options)` helper methods.\n */\n cleanTags: ['meta'],\n /* unwrapTags: [Array]\n * list of element tag names to unwrap (remove the element tag but retain its child elements)\n * during paste when __cleanPastedHTML__ is `true` or when\n * calling `cleanPaste(text)` or `pasteHTML(html, options)` helper methods.\n */\n unwrapTags: [],\n init: function () {\n MediumEditor.Extension.prototype.init.apply(this, arguments);\n if (this.forcePlainText || this.cleanPastedHTML) {\n this.subscribe('editableKeydown', this.handleKeydown.bind(this));\n // We need access to the full event data in paste\n // so we can't use the editablePaste event here\n this.getEditorElements().forEach(function (element) {\n this.on(element, 'paste', this.handlePaste.bind(this));\n }, this);\n this.subscribe('addElement', this.handleAddElement.bind(this));\n }\n },\n handleAddElement: function (event, editable) {\n this.on(editable, 'paste', this.handlePaste.bind(this));\n },\n destroy: function () {\n // Make sure pastebin is destroyed in case it's still around for some reason\n if (this.forcePlainText || this.cleanPastedHTML) {\n this.removePasteBin();\n }\n },\n handlePaste: function (event, editable) {\n if (event.defaultPrevented) {\n return;\n }\n var clipboardContent = getClipboardContent(event, this.window, this.document),\n pastedHTML = clipboardContent['text/html'],\n pastedPlain = clipboardContent['text/plain'];\n if (this.window.clipboardData && event.clipboardData === undefined && !pastedHTML) {\n // If window.clipboardData exists, but event.clipboardData doesn't exist,\n // we're probably in IE. IE only has two possibilities for clipboard\n // data format: 'Text' and 'URL'.\n //\n // For IE, we'll fallback to 'Text' for text/html\n pastedHTML = pastedPlain;\n }\n if (pastedHTML || pastedPlain) {\n event.preventDefault();\n this.doPaste(pastedHTML, pastedPlain, editable);\n }\n },\n doPaste: function (pastedHTML, pastedPlain, editable) {\n var paragraphs,\n html = '',\n p;\n if (this.cleanPastedHTML && pastedHTML) {\n return this.cleanPaste(pastedHTML);\n }\n if (!pastedPlain) {\n return;\n }\n if (!(this.getEditorOption('disableReturn') || editable && editable.getAttribute('data-disable-return'))) {\n paragraphs = pastedPlain.split(/[\\r\\n]+/g);\n // If there are no \\r\\n in data, don't wrap in <p>\n if (paragraphs.length > 1) {\n for (p = 0; p < paragraphs.length; p += 1) {\n if (paragraphs[p] !== '') {\n html += '<p>' + MediumEditor.util.htmlEntities(paragraphs[p]) + '</p>';\n }\n }\n } else {\n html = MediumEditor.util.htmlEntities(paragraphs[0]);\n }\n } else {\n html = MediumEditor.util.htmlEntities(pastedPlain);\n }\n MediumEditor.util.insertHTMLCommand(this.document, html);\n },\n handlePasteBinPaste: function (event) {\n if (event.defaultPrevented) {\n this.removePasteBin();\n return;\n }\n var clipboardContent = getClipboardContent(event, this.window, this.document),\n pastedHTML = clipboardContent['text/html'],\n pastedPlain = clipboardContent['text/plain'],\n editable = keyboardPasteEditable;\n\n // If we have valid html already, or we're not in cleanPastedHTML mode\n // we can ignore the paste bin and just paste now\n if (!this.cleanPastedHTML || pastedHTML) {\n event.preventDefault();\n this.removePasteBin();\n this.doPaste(pastedHTML, pastedPlain, editable);\n\n // The event handling code listens for paste on the editable element\n // in order to trigger the editablePaste event. Since this paste event\n // is happening on the pastebin, the event handling code never knows about it\n // So, we have to trigger editablePaste manually\n this.trigger('editablePaste', {\n currentTarget: editable,\n target: editable\n }, editable);\n return;\n }\n\n // We need to look at the paste bin, so do a setTimeout to let the paste\n // fall through into the paste bin\n setTimeout(function () {\n // Only look for HTML if we're in cleanPastedHTML mode\n if (this.cleanPastedHTML) {\n // If clipboard didn't have HTML, try the paste bin\n pastedHTML = this.getPasteBinHtml();\n }\n\n // If we needed the paste bin, we're done with it now, remove it\n this.removePasteBin();\n\n // Handle the paste with the html from the paste bin\n this.doPaste(pastedHTML, pastedPlain, editable);\n\n // The event handling code listens for paste on the editable element\n // in order to trigger the editablePaste event. Since this paste event\n // is happening on the pastebin, the event handling code never knows about it\n // So, we have to trigger editablePaste manually\n this.trigger('editablePaste', {\n currentTarget: editable,\n target: editable\n }, editable);\n }.bind(this), 0);\n },\n handleKeydown: function (event, editable) {\n // if it's not Ctrl+V, do nothing\n if (!(MediumEditor.util.isKey(event, MediumEditor.util.keyCode.V) && MediumEditor.util.isMetaCtrlKey(event))) {\n return;\n }\n event.stopImmediatePropagation();\n this.removePasteBin();\n this.createPasteBin(editable);\n },\n createPasteBin: function (editable) {\n var rects,\n range = MediumEditor.selection.getSelectionRange(this.document),\n top = this.window.pageYOffset;\n keyboardPasteEditable = editable;\n if (range) {\n rects = range.getClientRects();\n\n // on empty line, rects is empty so we grab information from the first container of the range\n if (rects.length) {\n top += rects[0].top;\n } else if (range.startContainer.getBoundingClientRect !== undefined) {\n top += range.startContainer.getBoundingClientRect().top;\n } else {\n top += range.getBoundingClientRect().top;\n }\n }\n lastRange = range;\n var pasteBinElm = this.document.createElement('div');\n pasteBinElm.id = this.pasteBinId = 'medium-editor-pastebin-' + +Date.now();\n pasteBinElm.setAttribute('style', 'border: 1px red solid; position: absolute; top: ' + top + 'px; width: 10px; height: 10px; overflow: hidden; opacity: 0');\n pasteBinElm.setAttribute('contentEditable', true);\n pasteBinElm.innerHTML = pasteBinDefaultContent;\n this.document.body.appendChild(pasteBinElm);\n\n // avoid .focus() to stop other event (actually the paste event)\n this.on(pasteBinElm, 'focus', stopProp);\n this.on(pasteBinElm, 'focusin', stopProp);\n this.on(pasteBinElm, 'focusout', stopProp);\n pasteBinElm.focus();\n MediumEditor.selection.selectNode(pasteBinElm, this.document);\n if (!this.boundHandlePaste) {\n this.boundHandlePaste = this.handlePasteBinPaste.bind(this);\n }\n this.on(pasteBinElm, 'paste', this.boundHandlePaste);\n },\n removePasteBin: function () {\n if (null !== lastRange) {\n MediumEditor.selection.selectRange(this.document, lastRange);\n lastRange = null;\n }\n if (null !== keyboardPasteEditable) {\n keyboardPasteEditable = null;\n }\n var pasteBinElm = this.getPasteBin();\n if (!pasteBinElm) {\n return;\n }\n if (pasteBinElm) {\n this.off(pasteBinElm, 'focus', stopProp);\n this.off(pasteBinElm, 'focusin', stopProp);\n this.off(pasteBinElm, 'focusout', stopProp);\n this.off(pasteBinElm, 'paste', this.boundHandlePaste);\n pasteBinElm.parentElement.removeChild(pasteBinElm);\n }\n },\n getPasteBin: function () {\n return this.document.getElementById(this.pasteBinId);\n },\n getPasteBinHtml: function () {\n var pasteBinElm = this.getPasteBin();\n if (!pasteBinElm) {\n return false;\n }\n\n // WebKit has a nice bug where it clones the paste bin if you paste from for example notepad\n // so we need to force plain text mode in this case\n if (pasteBinElm.firstChild && pasteBinElm.firstChild.id === 'mcepastebin') {\n return false;\n }\n var pasteBinHtml = pasteBinElm.innerHTML;\n\n // If paste bin is empty try using plain text mode\n // since that is better than nothing right\n if (!pasteBinHtml || pasteBinHtml === pasteBinDefaultContent) {\n return false;\n }\n return pasteBinHtml;\n },\n cleanPaste: function (text) {\n var i,\n elList,\n tmp,\n workEl,\n multiline = /<p|<br|<div/.test(text),\n replacements = [].concat(this.preCleanReplacements || [], createReplacements(), this.cleanReplacements || []);\n for (i = 0; i < replacements.length; i += 1) {\n text = text.replace(replacements[i][0], replacements[i][1]);\n }\n if (!multiline) {\n return this.pasteHTML(text);\n }\n\n // create a temporary div to cleanup block elements\n tmp = this.document.createElement('div');\n\n // double br's aren't converted to p tags, but we want paragraphs.\n tmp.innerHTML = '<p>' + text.split('<br><br>').join('</p><p>') + '</p>';\n\n // block element cleanup\n elList = tmp.querySelectorAll('a,p,div,br');\n for (i = 0; i < elList.length; i += 1) {\n workEl = elList[i];\n\n // Microsoft Word replaces some spaces with newlines.\n // While newlines between block elements are meaningless, newlines within\n // elements are sometimes actually spaces.\n workEl.innerHTML = workEl.innerHTML.replace(/\\n/gi, ' ');\n switch (workEl.nodeName.toLowerCase()) {\n case 'p':\n case 'div':\n this.filterCommonBlocks(workEl);\n break;\n case 'br':\n this.filterLineBreak(workEl);\n break;\n }\n }\n this.pasteHTML(tmp.innerHTML);\n },\n pasteHTML: function (html, options) {\n options = MediumEditor.util.defaults({}, options, {\n cleanAttrs: this.cleanAttrs,\n cleanTags: this.cleanTags,\n unwrapTags: this.unwrapTags\n });\n var elList,\n workEl,\n i,\n fragmentBody,\n pasteBlock = this.document.createDocumentFragment();\n pasteBlock.appendChild(this.document.createElement('body'));\n fragmentBody = pasteBlock.querySelector('body');\n fragmentBody.innerHTML = html;\n this.cleanupSpans(fragmentBody);\n elList = fragmentBody.querySelectorAll('*');\n for (i = 0; i < elList.length; i += 1) {\n workEl = elList[i];\n if ('a' === workEl.nodeName.toLowerCase() && this.getEditorOption('targetBlank')) {\n MediumEditor.util.setTargetBlank(workEl);\n }\n MediumEditor.util.cleanupAttrs(workEl, options.cleanAttrs);\n MediumEditor.util.cleanupTags(workEl, options.cleanTags);\n MediumEditor.util.unwrapTags(workEl, options.unwrapTags);\n }\n MediumEditor.util.insertHTMLCommand(this.document, fragmentBody.innerHTML.replace(/ /g, ' '));\n },\n // TODO (6.0): Make this an internal helper instead of member of paste handler\n isCommonBlock: function (el) {\n return el && (el.nodeName.toLowerCase() === 'p' || el.nodeName.toLowerCase() === 'div');\n },\n // TODO (6.0): Make this an internal helper instead of member of paste handler\n filterCommonBlocks: function (el) {\n if (/^\\s*$/.test(el.textContent) && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n },\n // TODO (6.0): Make this an internal helper instead of member of paste handler\n filterLineBreak: function (el) {\n if (this.isCommonBlock(el.previousElementSibling)) {\n // remove stray br's following common block elements\n this.removeWithParent(el);\n } else if (this.isCommonBlock(el.parentNode) && (el.parentNode.firstChild === el || el.parentNode.lastChild === el)) {\n // remove br's just inside open or close tags of a div/p\n this.removeWithParent(el);\n } else if (el.parentNode && el.parentNode.childElementCount === 1 && el.parentNode.textContent === '') {\n // and br's that are the only child of elements other than div/p\n this.removeWithParent(el);\n }\n },\n // TODO (6.0): Make this an internal helper instead of member of paste handler\n // remove an element, including its parent, if it is the only element within its parent\n removeWithParent: function (el) {\n if (el && el.parentNode) {\n if (el.parentNode.parentNode && el.parentNode.childElementCount === 1) {\n el.parentNode.parentNode.removeChild(el.parentNode);\n } else {\n el.parentNode.removeChild(el);\n }\n }\n },\n // TODO (6.0): Make this an internal helper instead of member of paste handler\n cleanupSpans: function (containerEl) {\n var i,\n el,\n newEl,\n spans = containerEl.querySelectorAll('.replace-with'),\n isCEF = function (el) {\n return el && el.nodeName !== '#text' && el.getAttribute('contenteditable') === 'false';\n };\n for (i = 0; i < spans.length; i += 1) {\n el = spans[i];\n newEl = this.document.createElement(el.classList.contains('bold') ? 'b' : 'i');\n if (el.classList.contains('bold') && el.classList.contains('italic')) {\n // add an i tag as well if this has both italics and bold\n newEl.innerHTML = '<i>' + el.innerHTML + '</i>';\n } else {\n newEl.innerHTML = el.innerHTML;\n }\n el.parentNode.replaceChild(newEl, el);\n }\n spans = containerEl.querySelectorAll('span');\n for (i = 0; i < spans.length; i += 1) {\n el = spans[i];\n\n // bail if span is in contenteditable = false\n if (MediumEditor.util.traverseUp(el, isCEF)) {\n return false;\n }\n\n // remove empty spans, replace others with their contents\n MediumEditor.util.unwrap(el, this.document);\n }\n }\n });\n MediumEditor.extensions.paste = PasteHandler;\n })();\n (function () {\n 'use strict';\n\n var Placeholder = MediumEditor.Extension.extend({\n name: 'placeholder',\n /* Placeholder Options */\n\n /* text: [string]\n * Text to display in the placeholder\n */\n text: 'Type your text',\n /* hideOnClick: [boolean]\n * Should we hide the placeholder on click (true) or when user starts typing (false)\n */\n hideOnClick: true,\n init: function () {\n MediumEditor.Extension.prototype.init.apply(this, arguments);\n this.initPlaceholders();\n this.attachEventHandlers();\n },\n initPlaceholders: function () {\n this.getEditorElements().forEach(this.initElement, this);\n },\n handleAddElement: function (event, editable) {\n this.initElement(editable);\n },\n initElement: function (el) {\n if (!el.getAttribute('data-placeholder')) {\n el.setAttribute('data-placeholder', this.text);\n }\n this.updatePlaceholder(el);\n },\n destroy: function () {\n this.getEditorElements().forEach(this.cleanupElement, this);\n },\n handleRemoveElement: function (event, editable) {\n this.cleanupElement(editable);\n },\n cleanupElement: function (el) {\n if (el.getAttribute('data-placeholder') === this.text) {\n el.removeAttribute('data-placeholder');\n }\n },\n showPlaceholder: function (el) {\n if (el) {\n // https://github.com/yabwe/medium-editor/issues/234\n // In firefox, styling the placeholder with an absolutely positioned\n // pseudo element causes the cursor to appear in a bad location\n // when the element is completely empty, so apply a different class to\n // style it with a relatively positioned pseudo element\n if (MediumEditor.util.isFF && el.childNodes.length === 0) {\n el.classList.add('medium-editor-placeholder-relative');\n el.classList.remove('medium-editor-placeholder');\n } else {\n el.classList.add('medium-editor-placeholder');\n el.classList.remove('medium-editor-placeholder-relative');\n }\n }\n },\n hidePlaceholder: function (el) {\n if (el) {\n el.classList.remove('medium-editor-placeholder');\n el.classList.remove('medium-editor-placeholder-relative');\n }\n },\n updatePlaceholder: function (el, dontShow) {\n // If the element has content, hide the placeholder\n if (el.querySelector('img, blockquote, ul, ol, table') || el.textContent.replace(/^\\s+|\\s+$/g, '') !== '') {\n return this.hidePlaceholder(el);\n }\n if (!dontShow) {\n this.showPlaceholder(el);\n }\n },\n attachEventHandlers: function () {\n if (this.hideOnClick) {\n // For the 'hideOnClick' option, the placeholder should always be hidden on focus\n this.subscribe('focus', this.handleFocus.bind(this));\n }\n\n // If the editor has content, it should always hide the placeholder\n this.subscribe('editableInput', this.handleInput.bind(this));\n\n // When the editor loses focus, check if the placeholder should be visible\n this.subscribe('blur', this.handleBlur.bind(this));\n\n // Need to know when elements are added/removed from the editor\n this.subscribe('addElement', this.handleAddElement.bind(this));\n this.subscribe('removeElement', this.handleRemoveElement.bind(this));\n },\n handleInput: function (event, element) {\n // If the placeholder should be hidden on focus and the\n // element has focus, don't show the placeholder\n var dontShow = this.hideOnClick && element === this.base.getFocusedElement();\n\n // Editor's content has changed, check if the placeholder should be hidden\n this.updatePlaceholder(element, dontShow);\n },\n handleFocus: function (event, element) {\n // Editor has focus, hide the placeholder\n this.hidePlaceholder(element);\n },\n handleBlur: function (event, element) {\n // Editor has lost focus, check if the placeholder should be shown\n this.updatePlaceholder(element);\n }\n });\n MediumEditor.extensions.placeholder = Placeholder;\n })();\n (function () {\n 'use strict';\n\n var Toolbar = MediumEditor.Extension.extend({\n name: 'toolbar',\n /* Toolbar Options */\n\n /* align: ['left'|'center'|'right']\n * When the __static__ option is true, this aligns the static toolbar\n * relative to the medium-editor element.\n */\n align: 'center',\n /* allowMultiParagraphSelection: [boolean]\n * enables/disables whether the toolbar should be displayed when\n * selecting multiple paragraphs/block elements\n */\n allowMultiParagraphSelection: true,\n /* buttons: [Array]\n * the names of the set of buttons to display on the toolbar.\n */\n buttons: ['bold', 'italic', 'underline', 'anchor', 'h2', 'h3', 'quote'],\n /* diffLeft: [Number]\n * value in pixels to be added to the X axis positioning of the toolbar.\n */\n diffLeft: 0,\n /* diffTop: [Number]\n * value in pixels to be added to the Y axis positioning of the toolbar.\n */\n diffTop: -10,\n /* firstButtonClass: [string]\n * CSS class added to the first button in the toolbar.\n */\n firstButtonClass: 'medium-editor-button-first',\n /* lastButtonClass: [string]\n * CSS class added to the last button in the toolbar.\n */\n lastButtonClass: 'medium-editor-button-last',\n /* standardizeSelectionStart: [boolean]\n * enables/disables standardizing how the beginning of a range is decided\n * between browsers whenever the selected text is analyzed for updating toolbar buttons status.\n */\n standardizeSelectionStart: false,\n /* static: [boolean]\n * enable/disable the toolbar always displaying in the same location\n * relative to the medium-editor element.\n */\n static: false,\n /* sticky: [boolean]\n * When the __static__ option is true, this enables/disables the toolbar\n * \"sticking\" to the viewport and staying visible on the screen while\n * the page scrolls.\n */\n sticky: false,\n /* stickyTopOffset: [Number]\n * Value in pixel of the top offset above the toolbar\n */\n stickyTopOffset: 0,\n /* updateOnEmptySelection: [boolean]\n * When the __static__ option is true, this enables/disables updating\n * the state of the toolbar buttons even when the selection is collapsed\n * (there is no selection, just a cursor).\n */\n updateOnEmptySelection: false,\n /* relativeContainer: [node]\n * appending the toolbar to a given node instead of body\n */\n relativeContainer: null,\n init: function () {\n MediumEditor.Extension.prototype.init.apply(this, arguments);\n this.initThrottledMethods();\n if (!this.relativeContainer) {\n this.getEditorOption('elementsContainer').appendChild(this.getToolbarElement());\n } else {\n this.relativeContainer.appendChild(this.getToolbarElement());\n }\n },\n // Helper method to execute method for every extension, but ignoring the toolbar extension\n forEachExtension: function (iterator, context) {\n return this.base.extensions.forEach(function (command) {\n if (command === this) {\n return;\n }\n return iterator.apply(context || this, arguments);\n }, this);\n },\n // Toolbar creation/deletion\n\n createToolbar: function () {\n var toolbar = this.document.createElement('div');\n toolbar.id = 'medium-editor-toolbar-' + this.getEditorId();\n toolbar.className = 'medium-editor-toolbar';\n if (this.static) {\n toolbar.className += ' static-toolbar';\n } else if (this.relativeContainer) {\n toolbar.className += ' medium-editor-relative-toolbar';\n } else {\n toolbar.className += ' medium-editor-stalker-toolbar';\n }\n toolbar.appendChild(this.createToolbarButtons());\n\n // Add any forms that extensions may have\n this.forEachExtension(function (extension) {\n if (extension.hasForm) {\n toolbar.appendChild(extension.getForm());\n }\n });\n this.attachEventHandlers();\n return toolbar;\n },\n createToolbarButtons: function () {\n var ul = this.document.createElement('ul'),\n li,\n btn,\n buttons,\n extension,\n buttonName,\n buttonOpts;\n ul.id = 'medium-editor-toolbar-actions' + this.getEditorId();\n ul.className = 'medium-editor-toolbar-actions';\n ul.style.display = 'block';\n this.buttons.forEach(function (button) {\n if (typeof button === 'string') {\n buttonName = button;\n buttonOpts = null;\n } else {\n buttonName = button.name;\n buttonOpts = button;\n }\n\n // If the button already exists as an extension, it'll be returned\n // othwerise it'll create the default built-in button\n extension = this.base.addBuiltInExtension(buttonName, buttonOpts);\n if (extension && typeof extension.getButton === 'function') {\n btn = extension.getButton(this.base);\n li = this.document.createElement('li');\n if (MediumEditor.util.isElement(btn)) {\n li.appendChild(btn);\n } else {\n li.innerHTML = btn;\n }\n ul.appendChild(li);\n }\n }, this);\n buttons = ul.querySelectorAll('button');\n if (buttons.length > 0) {\n buttons[0].classList.add(this.firstButtonClass);\n buttons[buttons.length - 1].classList.add(this.lastButtonClass);\n }\n return ul;\n },\n destroy: function () {\n if (this.toolbar) {\n if (this.toolbar.parentNode) {\n this.toolbar.parentNode.removeChild(this.toolbar);\n }\n delete this.toolbar;\n }\n },\n // Toolbar accessors\n\n getInteractionElements: function () {\n return this.getToolbarElement();\n },\n getToolbarElement: function () {\n if (!this.toolbar) {\n this.toolbar = this.createToolbar();\n }\n return this.toolbar;\n },\n getToolbarActionsElement: function () {\n return this.getToolbarElement().querySelector('.medium-editor-toolbar-actions');\n },\n // Toolbar event handlers\n\n initThrottledMethods: function () {\n // throttledPositionToolbar is throttled because:\n // - It will be called when the browser is resizing, which can fire many times very quickly\n // - For some event (like resize) a slight lag in UI responsiveness is OK and provides performance benefits\n this.throttledPositionToolbar = MediumEditor.util.throttle(function () {\n if (this.base.isActive) {\n this.positionToolbarIfShown();\n }\n }.bind(this));\n },\n attachEventHandlers: function () {\n // MediumEditor custom events for when user beings and ends interaction with a contenteditable and its elements\n this.subscribe('blur', this.handleBlur.bind(this));\n this.subscribe('focus', this.handleFocus.bind(this));\n\n // Updating the state of the toolbar as things change\n this.subscribe('editableClick', this.handleEditableClick.bind(this));\n this.subscribe('editableKeyup', this.handleEditableKeyup.bind(this));\n\n // Handle mouseup on document for updating the selection in the toolbar\n this.on(this.document.documentElement, 'mouseup', this.handleDocumentMouseup.bind(this));\n\n // Add a scroll event for sticky toolbar\n if (this.static && this.sticky) {\n // On scroll (capture), re-position the toolbar\n this.on(this.window, 'scroll', this.handleWindowScroll.bind(this), true);\n }\n\n // On resize, re-position the toolbar\n this.on(this.window, 'resize', this.handleWindowResize.bind(this));\n },\n handleWindowScroll: function () {\n this.positionToolbarIfShown();\n },\n handleWindowResize: function () {\n this.throttledPositionToolbar();\n },\n handleDocumentMouseup: function (event) {\n // Do not trigger checkState when mouseup fires over the toolbar\n if (event && event.target && MediumEditor.util.isDescendant(this.getToolbarElement(), event.target)) {\n return false;\n }\n this.checkState();\n },\n handleEditableClick: function () {\n // Delay the call to checkState to handle bug where selection is empty\n // immediately after clicking inside a pre-existing selection\n setTimeout(function () {\n this.checkState();\n }.bind(this), 0);\n },\n handleEditableKeyup: function () {\n this.checkState();\n },\n handleBlur: function () {\n // Kill any previously delayed calls to hide the toolbar\n clearTimeout(this.hideTimeout);\n\n // Blur may fire even if we have a selection, so we want to prevent any delayed showToolbar\n // calls from happening in this specific case\n clearTimeout(this.delayShowTimeout);\n\n // Delay the call to hideToolbar to handle bug with multiple editors on the page at once\n this.hideTimeout = setTimeout(function () {\n this.hideToolbar();\n }.bind(this), 1);\n },\n handleFocus: function () {\n this.checkState();\n },\n // Hiding/showing toolbar\n\n isDisplayed: function () {\n return this.getToolbarElement().classList.contains('medium-editor-toolbar-active');\n },\n showToolbar: function () {\n clearTimeout(this.hideTimeout);\n if (!this.isDisplayed()) {\n this.getToolbarElement().classList.add('medium-editor-toolbar-active');\n this.trigger('showToolbar', {}, this.base.getFocusedElement());\n }\n },\n hideToolbar: function () {\n if (this.isDisplayed()) {\n this.getToolbarElement().classList.remove('medium-editor-toolbar-active');\n this.trigger('hideToolbar', {}, this.base.getFocusedElement());\n }\n },\n isToolbarDefaultActionsDisplayed: function () {\n return this.getToolbarActionsElement().style.display === 'block';\n },\n hideToolbarDefaultActions: function () {\n if (this.isToolbarDefaultActionsDisplayed()) {\n this.getToolbarActionsElement().style.display = 'none';\n }\n },\n showToolbarDefaultActions: function () {\n this.hideExtensionForms();\n if (!this.isToolbarDefaultActionsDisplayed()) {\n this.getToolbarActionsElement().style.display = 'block';\n }\n\n // Using setTimeout + options.delay because:\n // We will actually be displaying the toolbar, which should be controlled by options.delay\n this.delayShowTimeout = this.base.delay(function () {\n this.showToolbar();\n }.bind(this));\n },\n hideExtensionForms: function () {\n // Hide all extension forms\n this.forEachExtension(function (extension) {\n if (extension.hasForm && extension.isDisplayed()) {\n extension.hideForm();\n }\n });\n },\n // Responding to changes in user selection\n\n // Checks for existance of multiple block elements in the current selection\n multipleBlockElementsSelected: function () {\n var regexEmptyHTMLTags = /<[^\\/>][^>]*><\\/[^>]+>/gim,\n // http://stackoverflow.com/questions/3129738/remove-empty-tags-using-regex\n regexBlockElements = new RegExp('<(' + MediumEditor.util.blockContainerElementNames.join('|') + ')[^>]*>', 'g'),\n selectionHTML = MediumEditor.selection.getSelectionHtml(this.document).replace(regexEmptyHTMLTags, ''),\n // Filter out empty blocks from selection\n hasMultiParagraphs = selectionHTML.match(regexBlockElements); // Find how many block elements are within the html\n\n return !!hasMultiParagraphs && hasMultiParagraphs.length > 1;\n },\n modifySelection: function () {\n var selection = this.window.getSelection(),\n selectionRange = selection.getRangeAt(0);\n\n /*\n * In firefox, there are cases (ie doubleclick of a word) where the selectionRange start\n * will be at the very end of an element. In other browsers, the selectionRange start\n * would instead be at the very beginning of an element that actually has content.\n * example:\n * <span>foo</span><span>bar</span>\n *\n * If the text 'bar' is selected, most browsers will have the selectionRange start at the beginning\n * of the 'bar' span. However, there are cases where firefox will have the selectionRange start\n * at the end of the 'foo' span. The contenteditable behavior will be ok, but if there are any\n * properties on the 'bar' span, they won't be reflected accurately in the toolbar\n * (ie 'Bold' button wouldn't be active)\n *\n * So, for cases where the selectionRange start is at the end of an element/node, find the next\n * adjacent text node that actually has content in it, and move the selectionRange start there.\n */\n if (this.standardizeSelectionStart && selectionRange.startContainer.nodeValue && selectionRange.startOffset === selectionRange.startContainer.nodeValue.length) {\n var adjacentNode = MediumEditor.util.findAdjacentTextNodeWithContent(MediumEditor.selection.getSelectionElement(this.window), selectionRange.startContainer, this.document);\n if (adjacentNode) {\n var offset = 0;\n while (adjacentNode.nodeValue.substr(offset, 1).trim().length === 0) {\n offset = offset + 1;\n }\n selectionRange = MediumEditor.selection.select(this.document, adjacentNode, offset, selectionRange.endContainer, selectionRange.endOffset);\n }\n }\n },\n checkState: function () {\n if (this.base.preventSelectionUpdates) {\n return;\n }\n\n // If no editable has focus OR selection is inside contenteditable = false\n // hide toolbar\n if (!this.base.getFocusedElement() || MediumEditor.selection.selectionInContentEditableFalse(this.window)) {\n return this.hideToolbar();\n }\n\n // If there's no selection element, selection element doesn't belong to this editor\n // or toolbar is disabled for this selection element\n // hide toolbar\n var selectionElement = MediumEditor.selection.getSelectionElement(this.window);\n if (!selectionElement || this.getEditorElements().indexOf(selectionElement) === -1 || selectionElement.getAttribute('data-disable-toolbar')) {\n return this.hideToolbar();\n }\n\n // Now we know there's a focused editable with a selection\n\n // If the updateOnEmptySelection option is true, show the toolbar\n if (this.updateOnEmptySelection && this.static) {\n return this.showAndUpdateToolbar();\n }\n\n // If we don't have a 'valid' selection -> hide toolbar\n if (!MediumEditor.selection.selectionContainsContent(this.document) || this.allowMultiParagraphSelection === false && this.multipleBlockElementsSelected()) {\n return this.hideToolbar();\n }\n this.showAndUpdateToolbar();\n },\n // Updating the toolbar\n\n showAndUpdateToolbar: function () {\n this.modifySelection();\n this.setToolbarButtonStates();\n this.trigger('positionToolbar', {}, this.base.getFocusedElement());\n this.showToolbarDefaultActions();\n this.setToolbarPosition();\n },\n setToolbarButtonStates: function () {\n this.forEachExtension(function (extension) {\n if (typeof extension.isActive === 'function' && typeof extension.setInactive === 'function') {\n extension.setInactive();\n }\n });\n this.checkActiveButtons();\n },\n checkActiveButtons: function () {\n var manualStateChecks = [],\n queryState = null,\n selectionRange = MediumEditor.selection.getSelectionRange(this.document),\n parentNode,\n updateExtensionState = function (extension) {\n if (typeof extension.checkState === 'function') {\n extension.checkState(parentNode);\n } else if (typeof extension.isActive === 'function' && typeof extension.isAlreadyApplied === 'function' && typeof extension.setActive === 'function') {\n if (!extension.isActive() && extension.isAlreadyApplied(parentNode)) {\n extension.setActive();\n }\n }\n };\n if (!selectionRange) {\n return;\n }\n\n // Loop through all extensions\n this.forEachExtension(function (extension) {\n // For those extensions where we can use document.queryCommandState(), do so\n if (typeof extension.queryCommandState === 'function') {\n queryState = extension.queryCommandState();\n // If queryCommandState returns a valid value, we can trust the browser\n // and don't need to do our manual checks\n if (queryState !== null) {\n if (queryState && typeof extension.setActive === 'function') {\n extension.setActive();\n }\n return;\n }\n }\n // We can't use queryCommandState for this extension, so add to manualStateChecks\n manualStateChecks.push(extension);\n });\n parentNode = MediumEditor.selection.getSelectedParentElement(selectionRange);\n\n // Make sure the selection parent isn't outside of the contenteditable\n if (!this.getEditorElements().some(function (element) {\n return MediumEditor.util.isDescendant(element, parentNode, true);\n })) {\n return;\n }\n\n // Climb up the DOM and do manual checks for whether a certain extension is currently enabled for this node\n while (parentNode) {\n manualStateChecks.forEach(updateExtensionState);\n\n // we can abort the search upwards if we leave the contentEditable element\n if (MediumEditor.util.isMediumEditorElement(parentNode)) {\n break;\n }\n parentNode = parentNode.parentNode;\n }\n },\n // Positioning toolbar\n\n positionToolbarIfShown: function () {\n if (this.isDisplayed()) {\n this.setToolbarPosition();\n }\n },\n setToolbarPosition: function () {\n var container = this.base.getFocusedElement(),\n selection = this.window.getSelection();\n\n // If there isn't a valid selection, bail\n if (!container) {\n return this;\n }\n if (this.static || !selection.isCollapsed) {\n this.showToolbar();\n\n // we don't need any absolute positioning if relativeContainer is set\n if (!this.relativeContainer) {\n if (this.static) {\n this.positionStaticToolbar(container);\n } else {\n this.positionToolbar(selection);\n }\n }\n this.trigger('positionedToolbar', {}, this.base.getFocusedElement());\n }\n },\n positionStaticToolbar: function (container) {\n // position the toolbar at left 0, so we can get the real width of the toolbar\n this.getToolbarElement().style.left = '0';\n\n // document.documentElement for IE 9\n var scrollTop = this.document.documentElement && this.document.documentElement.scrollTop || this.document.body.scrollTop,\n windowWidth = this.window.innerWidth,\n toolbarElement = this.getToolbarElement(),\n containerRect = container.getBoundingClientRect(),\n containerTop = containerRect.top + scrollTop,\n containerCenter = containerRect.left + containerRect.width / 2,\n toolbarHeight = toolbarElement.offsetHeight,\n toolbarWidth = toolbarElement.offsetWidth,\n halfOffsetWidth = toolbarWidth / 2,\n targetLeft;\n if (this.sticky) {\n // If it's beyond the height of the editor, position it at the bottom of the editor\n if (scrollTop > containerTop + container.offsetHeight - toolbarHeight - this.stickyTopOffset) {\n toolbarElement.style.top = containerTop + container.offsetHeight - toolbarHeight + 'px';\n toolbarElement.classList.remove('medium-editor-sticky-toolbar');\n // Stick the toolbar to the top of the window\n } else if (scrollTop > containerTop - toolbarHeight - this.stickyTopOffset) {\n toolbarElement.classList.add('medium-editor-sticky-toolbar');\n toolbarElement.style.top = this.stickyTopOffset + 'px';\n // Normal static toolbar position\n } else {\n toolbarElement.classList.remove('medium-editor-sticky-toolbar');\n toolbarElement.style.top = containerTop - toolbarHeight + 'px';\n }\n } else {\n toolbarElement.style.top = containerTop - toolbarHeight + 'px';\n }\n switch (this.align) {\n case 'left':\n targetLeft = containerRect.left;\n break;\n case 'right':\n targetLeft = containerRect.right - toolbarWidth;\n break;\n case 'center':\n targetLeft = containerCenter - halfOffsetWidth;\n break;\n }\n if (targetLeft < 0) {\n targetLeft = 0;\n } else if (targetLeft + toolbarWidth > windowWidth) {\n targetLeft = windowWidth - Math.ceil(toolbarWidth) - 1;\n }\n toolbarElement.style.left = targetLeft + 'px';\n },\n positionToolbar: function (selection) {\n // position the toolbar at left 0, so we can get the real width of the toolbar\n this.getToolbarElement().style.left = '0';\n this.getToolbarElement().style.right = 'initial';\n var range = selection.getRangeAt(0),\n boundary = range.getBoundingClientRect();\n\n // Handle selections with just images\n if (!boundary || boundary.height === 0 && boundary.width === 0 && range.startContainer === range.endContainer) {\n // If there's a nested image, use that for the bounding rectangle\n if (range.startContainer.nodeType === 1 && range.startContainer.querySelector('img')) {\n boundary = range.startContainer.querySelector('img').getBoundingClientRect();\n } else {\n boundary = range.startContainer.getBoundingClientRect();\n }\n }\n var containerWidth = this.window.innerWidth,\n toolbarElement = this.getToolbarElement(),\n toolbarHeight = toolbarElement.offsetHeight,\n toolbarWidth = toolbarElement.offsetWidth,\n halfOffsetWidth = toolbarWidth / 2,\n buttonHeight = 50,\n defaultLeft = this.diffLeft - halfOffsetWidth,\n elementsContainer = this.getEditorOption('elementsContainer'),\n elementsContainerAbsolute = ['absolute', 'fixed'].indexOf(window.getComputedStyle(elementsContainer).getPropertyValue('position')) > -1,\n positions = {},\n relativeBoundary = {},\n middleBoundary,\n elementsContainerBoundary;\n\n // If container element is absolute / fixed, recalculate boundaries to be relative to the container\n if (elementsContainerAbsolute) {\n elementsContainerBoundary = elementsContainer.getBoundingClientRect();\n ['top', 'left'].forEach(function (key) {\n relativeBoundary[key] = boundary[key] - elementsContainerBoundary[key];\n });\n relativeBoundary.width = boundary.width;\n relativeBoundary.height = boundary.height;\n boundary = relativeBoundary;\n containerWidth = elementsContainerBoundary.width;\n\n // Adjust top position according to container scroll position\n positions.top = elementsContainer.scrollTop;\n } else {\n // Adjust top position according to window scroll position\n positions.top = this.window.pageYOffset;\n }\n middleBoundary = boundary.left + boundary.width / 2;\n positions.top += boundary.top - toolbarHeight;\n if (boundary.top < buttonHeight) {\n toolbarElement.classList.add('medium-toolbar-arrow-over');\n toolbarElement.classList.remove('medium-toolbar-arrow-under');\n positions.top += buttonHeight + boundary.height - this.diffTop;\n } else {\n toolbarElement.classList.add('medium-toolbar-arrow-under');\n toolbarElement.classList.remove('medium-toolbar-arrow-over');\n positions.top += this.diffTop;\n }\n if (middleBoundary < halfOffsetWidth) {\n positions.left = defaultLeft + halfOffsetWidth;\n positions.right = 'initial';\n } else if (containerWidth - middleBoundary < halfOffsetWidth) {\n positions.left = 'auto';\n positions.right = 0;\n } else {\n positions.left = defaultLeft + middleBoundary;\n positions.right = 'initial';\n }\n ['top', 'left', 'right'].forEach(function (key) {\n toolbarElement.style[key] = positions[key] + (isNaN(positions[key]) ? '' : 'px');\n });\n }\n });\n MediumEditor.extensions.toolbar = Toolbar;\n })();\n (function () {\n 'use strict';\n\n var ImageDragging = MediumEditor.Extension.extend({\n init: function () {\n MediumEditor.Extension.prototype.init.apply(this, arguments);\n this.subscribe('editableDrag', this.handleDrag.bind(this));\n this.subscribe('editableDrop', this.handleDrop.bind(this));\n },\n handleDrag: function (event) {\n var className = 'medium-editor-dragover';\n event.preventDefault();\n event.dataTransfer.dropEffect = 'copy';\n if (event.type === 'dragover') {\n event.target.classList.add(className);\n } else if (event.type === 'dragleave') {\n event.target.classList.remove(className);\n }\n },\n handleDrop: function (event) {\n var className = 'medium-editor-dragover',\n files;\n event.preventDefault();\n event.stopPropagation();\n\n // IE9 does not support the File API, so prevent file from opening in a new window\n // but also don't try to actually get the file\n if (event.dataTransfer.files) {\n files = Array.prototype.slice.call(event.dataTransfer.files, 0);\n files.some(function (file) {\n if (file.type.match('image')) {\n var fileReader, id;\n fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n id = 'medium-img-' + +new Date();\n MediumEditor.util.insertHTMLCommand(this.document, '<img class=\"medium-editor-image-loading\" id=\"' + id + '\" />');\n fileReader.onload = function () {\n var img = this.document.getElementById(id);\n if (img) {\n img.removeAttribute('id');\n img.removeAttribute('class');\n img.src = fileReader.result;\n }\n }.bind(this);\n }\n }.bind(this));\n }\n event.target.classList.remove(className);\n }\n });\n MediumEditor.extensions.imageDragging = ImageDragging;\n })();\n (function () {\n 'use strict';\n\n // Event handlers that shouldn't be exposed externally\n function handleDisableExtraSpaces(event) {\n var node = MediumEditor.selection.getSelectionStart(this.options.ownerDocument),\n textContent = node.textContent,\n caretPositions = MediumEditor.selection.getCaretOffsets(node);\n if (textContent[caretPositions.left - 1] === undefined || textContent[caretPositions.left - 1].trim() === '' || textContent[caretPositions.left] !== undefined && textContent[caretPositions.left].trim() === '') {\n event.preventDefault();\n }\n }\n function handleDisabledEnterKeydown(event, element) {\n if (this.options.disableReturn || element.getAttribute('data-disable-return')) {\n event.preventDefault();\n } else if (this.options.disableDoubleReturn || element.getAttribute('data-disable-double-return')) {\n var node = MediumEditor.selection.getSelectionStart(this.options.ownerDocument);\n\n // if current text selection is empty OR previous sibling text is empty OR it is not a list\n if (node && node.textContent.trim() === '' && node.nodeName.toLowerCase() !== 'li' || node.previousElementSibling && node.previousElementSibling.nodeName.toLowerCase() !== 'br' && node.previousElementSibling.textContent.trim() === '') {\n event.preventDefault();\n }\n }\n }\n function handleTabKeydown(event) {\n // Override tab only for pre nodes\n var node = MediumEditor.selection.getSelectionStart(this.options.ownerDocument),\n tag = node && node.nodeName.toLowerCase();\n if (tag === 'pre') {\n event.preventDefault();\n MediumEditor.util.insertHTMLCommand(this.options.ownerDocument, ' ');\n }\n\n // Tab to indent list structures!\n if (MediumEditor.util.isListItem(node)) {\n event.preventDefault();\n\n // If Shift is down, outdent, otherwise indent\n if (event.shiftKey) {\n this.options.ownerDocument.execCommand('outdent', false, null);\n } else {\n this.options.ownerDocument.execCommand('indent', false, null);\n }\n }\n }\n function handleBlockDeleteKeydowns(event) {\n var p,\n node = MediumEditor.selection.getSelectionStart(this.options.ownerDocument),\n tagName = node.nodeName.toLowerCase(),\n isEmpty = /^(\\s+|<br\\/?>)?$/i,\n isHeader = /h\\d/i;\n if (MediumEditor.util.isKey(event, [MediumEditor.util.keyCode.BACKSPACE, MediumEditor.util.keyCode.ENTER]) &&\n // has a preceeding sibling\n node.previousElementSibling &&\n // in a header\n isHeader.test(tagName) &&\n // at the very end of the block\n MediumEditor.selection.getCaretOffsets(node).left === 0) {\n if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.BACKSPACE) && isEmpty.test(node.previousElementSibling.innerHTML)) {\n // backspacing the begining of a header into an empty previous element will\n // change the tagName of the current node to prevent one\n // instead delete previous node and cancel the event.\n node.previousElementSibling.parentNode.removeChild(node.previousElementSibling);\n event.preventDefault();\n } else if (!this.options.disableDoubleReturn && MediumEditor.util.isKey(event, MediumEditor.util.keyCode.ENTER)) {\n // hitting return in the begining of a header will create empty header elements before the current one\n // instead, make \"<p><br></p>\" element, which are what happens if you hit return in an empty paragraph\n p = this.options.ownerDocument.createElement('p');\n p.innerHTML = '<br>';\n node.previousElementSibling.parentNode.insertBefore(p, node);\n event.preventDefault();\n }\n } else if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.DELETE) &&\n // between two sibling elements\n node.nextElementSibling && node.previousElementSibling &&\n // not in a header\n !isHeader.test(tagName) &&\n // in an empty tag\n isEmpty.test(node.innerHTML) &&\n // when the next tag *is* a header\n isHeader.test(node.nextElementSibling.nodeName.toLowerCase())) {\n // hitting delete in an empty element preceding a header, ex:\n // <p>[CURSOR]</p><h1>Header</h1>\n // Will cause the h1 to become a paragraph.\n // Instead, delete the paragraph node and move the cursor to the begining of the h1\n\n // remove node and move cursor to start of header\n MediumEditor.selection.moveCursor(this.options.ownerDocument, node.nextElementSibling);\n node.previousElementSibling.parentNode.removeChild(node);\n event.preventDefault();\n } else if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.BACKSPACE) && tagName === 'li' &&\n // hitting backspace inside an empty li\n isEmpty.test(node.innerHTML) &&\n // is first element (no preceeding siblings)\n !node.previousElementSibling &&\n // parent also does not have a sibling\n !node.parentElement.previousElementSibling &&\n // is not the only li in a list\n node.nextElementSibling && node.nextElementSibling.nodeName.toLowerCase() === 'li') {\n // backspacing in an empty first list element in the first list (with more elements) ex:\n // <ul><li>[CURSOR]</li><li>List Item 2</li></ul>\n // will remove the first <li> but add some extra element before (varies based on browser)\n // Instead, this will:\n // 1) remove the list element\n // 2) create a paragraph before the list\n // 3) move the cursor into the paragraph\n\n // create a paragraph before the list\n p = this.options.ownerDocument.createElement('p');\n p.innerHTML = '<br>';\n node.parentElement.parentElement.insertBefore(p, node.parentElement);\n\n // move the cursor into the new paragraph\n MediumEditor.selection.moveCursor(this.options.ownerDocument, p);\n\n // remove the list element\n node.parentElement.removeChild(node);\n event.preventDefault();\n } else if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.BACKSPACE) && MediumEditor.util.getClosestTag(node, 'blockquote') !== false && MediumEditor.selection.getCaretOffsets(node).left === 0) {\n // when cursor is at the begining of the element and the element is <blockquote>\n // then pressing backspace key should change the <blockquote> to a <p> tag\n event.preventDefault();\n MediumEditor.util.execFormatBlock(this.options.ownerDocument, 'p');\n } else if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.ENTER) && MediumEditor.util.getClosestTag(node, 'blockquote') !== false && MediumEditor.selection.getCaretOffsets(node).right === 0) {\n // when cursor is at the end of <blockquote>,\n // then pressing enter key should create <p> tag, not <blockquote>\n p = this.options.ownerDocument.createElement('p');\n p.innerHTML = '<br>';\n node.parentElement.insertBefore(p, node.nextSibling);\n\n // move the cursor into the new paragraph\n MediumEditor.selection.moveCursor(this.options.ownerDocument, p);\n event.preventDefault();\n } else if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.BACKSPACE) && MediumEditor.util.isMediumEditorElement(node.parentElement) && !node.previousElementSibling && node.nextElementSibling && isEmpty.test(node.innerHTML)) {\n // when cursor is in the first element, it's empty and user presses backspace,\n // do delete action instead to get rid of the first element and move caret to 2nd\n event.preventDefault();\n MediumEditor.selection.moveCursor(this.options.ownerDocument, node.nextSibling);\n node.parentElement.removeChild(node);\n }\n }\n function handleKeyup(event) {\n var node = MediumEditor.selection.getSelectionStart(this.options.ownerDocument),\n tagName;\n if (!node) {\n return;\n }\n\n // https://github.com/yabwe/medium-editor/issues/994\n // Firefox thrown an error when calling `formatBlock` on an empty editable blockContainer that's not a <div>\n if (MediumEditor.util.isMediumEditorElement(node) && node.children.length === 0 && !MediumEditor.util.isBlockContainer(node)) {\n this.options.ownerDocument.execCommand('formatBlock', false, 'p');\n }\n\n // https://github.com/yabwe/medium-editor/issues/834\n // https://github.com/yabwe/medium-editor/pull/382\n // Don't call format block if this is a block element (ie h1, figCaption, etc.)\n if (MediumEditor.util.isKey(event, MediumEditor.util.keyCode.ENTER) && !MediumEditor.util.isListItem(node) && !MediumEditor.util.isBlockContainer(node)) {\n tagName = node.nodeName.toLowerCase();\n // For anchor tags, unlink\n if (tagName === 'a') {\n this.options.ownerDocument.execCommand('unlink', false, null);\n } else if (!event.shiftKey && !event.ctrlKey) {\n this.options.ownerDocument.execCommand('formatBlock', false, 'p');\n }\n }\n }\n function handleEditableInput(event, editable) {\n var textarea = editable.parentNode.querySelector('textarea[medium-editor-textarea-id=\"' + editable.getAttribute('medium-editor-textarea-id') + '\"]');\n if (textarea) {\n textarea.value = editable.innerHTML.trim();\n }\n }\n\n // Internal helper methods which shouldn't be exposed externally\n\n function addToEditors(win) {\n if (!win._mediumEditors) {\n // To avoid breaking users who are assuming that the unique id on\n // medium-editor elements will start at 1, inserting a 'null' in the\n // array so the unique-id can always map to the index of the editor instance\n win._mediumEditors = [null];\n }\n\n // If this already has a unique id, re-use it\n if (!this.id) {\n this.id = win._mediumEditors.length;\n }\n win._mediumEditors[this.id] = this;\n }\n function removeFromEditors(win) {\n if (!win._mediumEditors || !win._mediumEditors[this.id]) {\n return;\n }\n\n /* Setting the instance to null in the array instead of deleting it allows:\n * 1) Each instance to preserve its own unique-id, even after being destroyed\n * and initialized again\n * 2) The unique-id to always correspond to an index in the array of medium-editor\n * instances. Thus, we will be able to look at a contenteditable, and determine\n * which instance it belongs to, by indexing into the global array.\n */\n win._mediumEditors[this.id] = null;\n }\n function createElementsArray(selector, doc, filterEditorElements) {\n var elements = [];\n if (!selector) {\n selector = [];\n }\n // If string, use as query selector\n if (typeof selector === 'string') {\n selector = doc.querySelectorAll(selector);\n }\n // If element, put into array\n if (MediumEditor.util.isElement(selector)) {\n selector = [selector];\n }\n if (filterEditorElements) {\n // Remove elements that have already been initialized by the editor\n // selecotr might not be an array (ie NodeList) so use for loop\n for (var i = 0; i < selector.length; i++) {\n var el = selector[i];\n if (MediumEditor.util.isElement(el) && !el.getAttribute('data-medium-editor-element') && !el.getAttribute('medium-editor-textarea-id')) {\n elements.push(el);\n }\n }\n } else {\n // Convert NodeList (or other array like object) into an array\n elements = Array.prototype.slice.apply(selector);\n }\n return elements;\n }\n function cleanupTextareaElement(element) {\n var textarea = element.parentNode.querySelector('textarea[medium-editor-textarea-id=\"' + element.getAttribute('medium-editor-textarea-id') + '\"]');\n if (textarea) {\n // Un-hide the textarea\n textarea.classList.remove('medium-editor-hidden');\n textarea.removeAttribute('medium-editor-textarea-id');\n }\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n function setExtensionDefaults(extension, defaults) {\n Object.keys(defaults).forEach(function (prop) {\n if (extension[prop] === undefined) {\n extension[prop] = defaults[prop];\n }\n });\n return extension;\n }\n function initExtension(extension, name, instance) {\n var extensionDefaults = {\n 'window': instance.options.contentWindow,\n 'document': instance.options.ownerDocument,\n 'base': instance\n };\n\n // Add default options into the extension\n extension = setExtensionDefaults(extension, extensionDefaults);\n\n // Call init on the extension\n if (typeof extension.init === 'function') {\n extension.init();\n }\n\n // Set extension name (if not already set)\n if (!extension.name) {\n extension.name = name;\n }\n return extension;\n }\n function isToolbarEnabled() {\n // If any of the elements don't have the toolbar disabled\n // We need a toolbar\n if (this.elements.every(function (element) {\n return !!element.getAttribute('data-disable-toolbar');\n })) {\n return false;\n }\n return this.options.toolbar !== false;\n }\n function isAnchorPreviewEnabled() {\n // If toolbar is disabled, don't add\n if (!isToolbarEnabled.call(this)) {\n return false;\n }\n return this.options.anchorPreview !== false;\n }\n function isPlaceholderEnabled() {\n return this.options.placeholder !== false;\n }\n function isAutoLinkEnabled() {\n return this.options.autoLink !== false;\n }\n function isImageDraggingEnabled() {\n return this.options.imageDragging !== false;\n }\n function isKeyboardCommandsEnabled() {\n return this.options.keyboardCommands !== false;\n }\n function shouldUseFileDraggingExtension() {\n // Since the file-dragging extension replaces the image-dragging extension,\n // we need to check if the user passed an overrided image-dragging extension.\n // If they have, to avoid breaking users, we won't use file-dragging extension.\n return !this.options.extensions['imageDragging'];\n }\n function createContentEditable(textarea) {\n var div = this.options.ownerDocument.createElement('div'),\n now = Date.now(),\n uniqueId = 'medium-editor-' + now,\n atts = textarea.attributes;\n\n // Some browsers can move pretty fast, since we're using a timestamp\n // to make a unique-id, ensure that the id is actually unique on the page\n while (this.options.ownerDocument.getElementById(uniqueId)) {\n now++;\n uniqueId = 'medium-editor-' + now;\n }\n div.className = textarea.className;\n div.id = uniqueId;\n div.innerHTML = textarea.value;\n textarea.setAttribute('medium-editor-textarea-id', uniqueId);\n\n // re-create all attributes from the textearea to the new created div\n for (var i = 0, n = atts.length; i < n; i++) {\n // do not re-create existing attributes\n if (!div.hasAttribute(atts[i].nodeName)) {\n div.setAttribute(atts[i].nodeName, atts[i].value);\n }\n }\n\n // If textarea has a form, listen for reset on the form to clear\n // the content of the created div\n if (textarea.form) {\n this.on(textarea.form, 'reset', function (event) {\n if (!event.defaultPrevented) {\n this.resetContent(this.options.ownerDocument.getElementById(uniqueId));\n }\n }.bind(this));\n }\n textarea.classList.add('medium-editor-hidden');\n textarea.parentNode.insertBefore(div, textarea);\n return div;\n }\n function initElement(element, editorId) {\n if (!element.getAttribute('data-medium-editor-element')) {\n if (element.nodeName.toLowerCase() === 'textarea') {\n element = createContentEditable.call(this, element);\n\n // Make sure we only attach to editableInput once for <textarea> elements\n if (!this.instanceHandleEditableInput) {\n this.instanceHandleEditableInput = handleEditableInput.bind(this);\n this.subscribe('editableInput', this.instanceHandleEditableInput);\n }\n }\n if (!this.options.disableEditing && !element.getAttribute('data-disable-editing')) {\n element.setAttribute('contentEditable', true);\n element.setAttribute('spellcheck', this.options.spellcheck);\n }\n\n // Make sure we only attach to editableKeydownEnter once for disable-return options\n if (!this.instanceHandleEditableKeydownEnter) {\n if (element.getAttribute('data-disable-return') || element.getAttribute('data-disable-double-return')) {\n this.instanceHandleEditableKeydownEnter = handleDisabledEnterKeydown.bind(this);\n this.subscribe('editableKeydownEnter', this.instanceHandleEditableKeydownEnter);\n }\n }\n\n // if we're not disabling return, add a handler to help handle cleanup\n // for certain cases when enter is pressed\n if (!this.options.disableReturn && !element.getAttribute('data-disable-return')) {\n this.on(element, 'keyup', handleKeyup.bind(this));\n }\n var elementId = MediumEditor.util.guid();\n element.setAttribute('data-medium-editor-element', true);\n element.classList.add('medium-editor-element');\n element.setAttribute('role', 'textbox');\n element.setAttribute('aria-multiline', true);\n element.setAttribute('data-medium-editor-editor-index', editorId);\n // TODO: Merge data-medium-editor-element and medium-editor-index attributes for 6.0.0\n // medium-editor-index is not named correctly anymore and can be re-purposed to signify\n // whether the element has been initialized or not\n element.setAttribute('medium-editor-index', elementId);\n initialContent[elementId] = element.innerHTML;\n this.events.attachAllEventsToElement(element);\n }\n return element;\n }\n function attachHandlers() {\n // attach to tabs\n this.subscribe('editableKeydownTab', handleTabKeydown.bind(this));\n\n // Bind keys which can create or destroy a block element: backspace, delete, return\n this.subscribe('editableKeydownDelete', handleBlockDeleteKeydowns.bind(this));\n this.subscribe('editableKeydownEnter', handleBlockDeleteKeydowns.bind(this));\n\n // Bind double space event\n if (this.options.disableExtraSpaces) {\n this.subscribe('editableKeydownSpace', handleDisableExtraSpaces.bind(this));\n }\n\n // Make sure we only attach to editableKeydownEnter once for disable-return options\n if (!this.instanceHandleEditableKeydownEnter) {\n // disabling return or double return\n if (this.options.disableReturn || this.options.disableDoubleReturn) {\n this.instanceHandleEditableKeydownEnter = handleDisabledEnterKeydown.bind(this);\n this.subscribe('editableKeydownEnter', this.instanceHandleEditableKeydownEnter);\n }\n }\n }\n function initExtensions() {\n this.extensions = [];\n\n // Passed in extensions\n Object.keys(this.options.extensions).forEach(function (name) {\n // Always save the toolbar extension for last\n if (name !== 'toolbar' && this.options.extensions[name]) {\n this.extensions.push(initExtension(this.options.extensions[name], name, this));\n }\n }, this);\n\n // 4 Cases for imageDragging + fileDragging extensons:\n //\n // 1. ImageDragging ON + No Custom Image Dragging Extension:\n // * Use fileDragging extension (default options)\n // 2. ImageDragging OFF + No Custom Image Dragging Extension:\n // * Use fileDragging extension w/ images turned off\n // 3. ImageDragging ON + Custom Image Dragging Extension:\n // * Don't use fileDragging (could interfere with custom image dragging extension)\n // 4. ImageDragging OFF + Custom Image Dragging:\n // * Don't use fileDragging (could interfere with custom image dragging extension)\n if (shouldUseFileDraggingExtension.call(this)) {\n var opts = this.options.fileDragging;\n if (!opts) {\n opts = {};\n\n // Image is in the 'allowedTypes' list by default.\n // If imageDragging is off override the 'allowedTypes' list with an empty one\n if (!isImageDraggingEnabled.call(this)) {\n opts.allowedTypes = [];\n }\n }\n this.addBuiltInExtension('fileDragging', opts);\n }\n\n // Built-in extensions\n var builtIns = {\n paste: true,\n 'anchor-preview': isAnchorPreviewEnabled.call(this),\n autoLink: isAutoLinkEnabled.call(this),\n keyboardCommands: isKeyboardCommandsEnabled.call(this),\n placeholder: isPlaceholderEnabled.call(this)\n };\n Object.keys(builtIns).forEach(function (name) {\n if (builtIns[name]) {\n this.addBuiltInExtension(name);\n }\n }, this);\n\n // Users can pass in a custom toolbar extension\n // so check for that first and if it's not present\n // just create the default toolbar\n var toolbarExtension = this.options.extensions['toolbar'];\n if (!toolbarExtension && isToolbarEnabled.call(this)) {\n // Backwards compatability\n var toolbarOptions = MediumEditor.util.extend({}, this.options.toolbar, {\n allowMultiParagraphSelection: this.options.allowMultiParagraphSelection // deprecated\n });\n\n toolbarExtension = new MediumEditor.extensions.toolbar(toolbarOptions);\n }\n\n // If the toolbar is not disabled, so we actually have an extension\n // initialize it and add it to the extensions array\n if (toolbarExtension) {\n this.extensions.push(initExtension(toolbarExtension, 'toolbar', this));\n }\n }\n function mergeOptions(defaults, options) {\n var deprecatedProperties = [['allowMultiParagraphSelection', 'toolbar.allowMultiParagraphSelection']];\n // warn about using deprecated properties\n if (options) {\n deprecatedProperties.forEach(function (pair) {\n if (options.hasOwnProperty(pair[0]) && options[pair[0]] !== undefined) {\n MediumEditor.util.deprecated(pair[0], pair[1], 'v6.0.0');\n }\n });\n }\n return MediumEditor.util.defaults({}, options, defaults);\n }\n function execActionInternal(action, opts) {\n /*jslint regexp: true*/\n var appendAction = /^append-(.+)$/gi,\n justifyAction = /justify([A-Za-z]*)$/g,\n /* Detecting if is justifyCenter|Right|Left */\n match,\n cmdValueArgument;\n /*jslint regexp: false*/\n\n // Actions starting with 'append-' should attempt to format a block of text ('formatBlock') using a specific\n // type of block element (ie append-blockquote, append-h1, append-pre, etc.)\n match = appendAction.exec(action);\n if (match) {\n return MediumEditor.util.execFormatBlock(this.options.ownerDocument, match[1]);\n }\n if (action === 'fontSize') {\n // TODO: Deprecate support for opts.size in 6.0.0\n if (opts.size) {\n MediumEditor.util.deprecated('.size option for fontSize command', '.value', '6.0.0');\n }\n cmdValueArgument = opts.value || opts.size;\n return this.options.ownerDocument.execCommand('fontSize', false, cmdValueArgument);\n }\n if (action === 'fontName') {\n // TODO: Deprecate support for opts.name in 6.0.0\n if (opts.name) {\n MediumEditor.util.deprecated('.name option for fontName command', '.value', '6.0.0');\n }\n cmdValueArgument = opts.value || opts.name;\n return this.options.ownerDocument.execCommand('fontName', false, cmdValueArgument);\n }\n if (action === 'createLink') {\n return this.createLink(opts);\n }\n if (action === 'image') {\n var src = this.options.contentWindow.getSelection().toString().trim();\n return this.options.ownerDocument.execCommand('insertImage', false, src);\n }\n if (action === 'html') {\n var html = this.options.contentWindow.getSelection().toString().trim();\n return MediumEditor.util.insertHTMLCommand(this.options.ownerDocument, html);\n }\n\n /* Issue: https://github.com/yabwe/medium-editor/issues/595\n * If the action is to justify the text */\n if (justifyAction.exec(action)) {\n var result = this.options.ownerDocument.execCommand(action, false, null),\n parentNode = MediumEditor.selection.getSelectedParentElement(MediumEditor.selection.getSelectionRange(this.options.ownerDocument));\n if (parentNode) {\n cleanupJustifyDivFragments.call(this, MediumEditor.util.getTopBlockContainer(parentNode));\n }\n return result;\n }\n cmdValueArgument = opts && opts.value;\n return this.options.ownerDocument.execCommand(action, false, cmdValueArgument);\n }\n\n /* If we've just justified text within a container block\n * Chrome may have removed <br> elements and instead wrapped lines in <div> elements\n * with a text-align property. If so, we want to fix this\n */\n function cleanupJustifyDivFragments(blockContainer) {\n if (!blockContainer) {\n return;\n }\n var textAlign,\n childDivs = Array.prototype.slice.call(blockContainer.childNodes).filter(function (element) {\n var isDiv = element.nodeName.toLowerCase() === 'div';\n if (isDiv && !textAlign) {\n textAlign = element.style.textAlign;\n }\n return isDiv;\n });\n\n /* If we found child <div> elements with text-align style attributes\n * we should fix this by:\n *\n * 1) Unwrapping each <div> which has a text-align style\n * 2) Insert a <br> element after each set of 'unwrapped' div children\n * 3) Set the text-align style of the parent block element\n */\n if (childDivs.length) {\n // Since we're mucking with the HTML, preserve selection\n this.saveSelection();\n childDivs.forEach(function (div) {\n if (div.style.textAlign === textAlign) {\n var lastChild = div.lastChild;\n if (lastChild) {\n // Instead of a div, extract the child elements and add a <br>\n MediumEditor.util.unwrap(div, this.options.ownerDocument);\n var br = this.options.ownerDocument.createElement('BR');\n lastChild.parentNode.insertBefore(br, lastChild.nextSibling);\n }\n }\n }, this);\n blockContainer.style.textAlign = textAlign;\n // We're done, so restore selection\n this.restoreSelection();\n }\n }\n var initialContent = {};\n MediumEditor.prototype = {\n // NOT DOCUMENTED - exposed for backwards compatability\n init: function (elements, options) {\n this.options = mergeOptions.call(this, this.defaults, options);\n this.origElements = elements;\n if (!this.options.elementsContainer) {\n this.options.elementsContainer = this.options.ownerDocument.body;\n }\n return this.setup();\n },\n setup: function () {\n if (this.isActive) {\n return;\n }\n addToEditors.call(this, this.options.contentWindow);\n this.events = new MediumEditor.Events(this);\n this.elements = [];\n this.addElements(this.origElements);\n if (this.elements.length === 0) {\n return;\n }\n this.isActive = true;\n\n // Call initialization helpers\n initExtensions.call(this);\n attachHandlers.call(this);\n },\n destroy: function () {\n if (!this.isActive) {\n return;\n }\n this.isActive = false;\n this.extensions.forEach(function (extension) {\n if (typeof extension.destroy === 'function') {\n extension.destroy();\n }\n }, this);\n this.events.destroy();\n this.elements.forEach(function (element) {\n // Reset elements content, fix for issue where after editor destroyed the red underlines on spelling errors are left\n if (this.options.spellcheck) {\n element.innerHTML = element.innerHTML;\n }\n\n // cleanup extra added attributes\n element.removeAttribute('contentEditable');\n element.removeAttribute('spellcheck');\n element.removeAttribute('data-medium-editor-element');\n element.classList.remove('medium-editor-element');\n element.removeAttribute('role');\n element.removeAttribute('aria-multiline');\n element.removeAttribute('medium-editor-index');\n element.removeAttribute('data-medium-editor-editor-index');\n\n // Remove any elements created for textareas\n if (element.getAttribute('medium-editor-textarea-id')) {\n cleanupTextareaElement(element);\n }\n }, this);\n this.elements = [];\n this.instanceHandleEditableKeydownEnter = null;\n this.instanceHandleEditableInput = null;\n removeFromEditors.call(this, this.options.contentWindow);\n },\n on: function (target, event, listener, useCapture) {\n this.events.attachDOMEvent(target, event, listener, useCapture);\n return this;\n },\n off: function (target, event, listener, useCapture) {\n this.events.detachDOMEvent(target, event, listener, useCapture);\n return this;\n },\n subscribe: function (event, listener) {\n this.events.attachCustomEvent(event, listener);\n return this;\n },\n unsubscribe: function (event, listener) {\n this.events.detachCustomEvent(event, listener);\n return this;\n },\n trigger: function (name, data, editable) {\n this.events.triggerCustomEvent(name, data, editable);\n return this;\n },\n delay: function (fn) {\n var self = this;\n return setTimeout(function () {\n if (self.isActive) {\n fn();\n }\n }, this.options.delay);\n },\n serialize: function () {\n var i,\n elementid,\n content = {},\n len = this.elements.length;\n for (i = 0; i < len; i += 1) {\n elementid = this.elements[i].id !== '' ? this.elements[i].id : 'element-' + i;\n content[elementid] = {\n value: this.elements[i].innerHTML.trim()\n };\n }\n return content;\n },\n getExtensionByName: function (name) {\n var extension;\n if (this.extensions && this.extensions.length) {\n this.extensions.some(function (ext) {\n if (ext.name === name) {\n extension = ext;\n return true;\n }\n return false;\n });\n }\n return extension;\n },\n /**\n * NOT DOCUMENTED - exposed as a helper for other extensions to use\n */\n addBuiltInExtension: function (name, opts) {\n var extension = this.getExtensionByName(name),\n merged;\n if (extension) {\n return extension;\n }\n switch (name) {\n case 'anchor':\n merged = MediumEditor.util.extend({}, this.options.anchor, opts);\n extension = new MediumEditor.extensions.anchor(merged);\n break;\n case 'anchor-preview':\n extension = new MediumEditor.extensions.anchorPreview(this.options.anchorPreview);\n break;\n case 'autoLink':\n extension = new MediumEditor.extensions.autoLink();\n break;\n case 'fileDragging':\n extension = new MediumEditor.extensions.fileDragging(opts);\n break;\n case 'fontname':\n extension = new MediumEditor.extensions.fontName(this.options.fontName);\n break;\n case 'fontsize':\n extension = new MediumEditor.extensions.fontSize(opts);\n break;\n case 'keyboardCommands':\n extension = new MediumEditor.extensions.keyboardCommands(this.options.keyboardCommands);\n break;\n case 'paste':\n extension = new MediumEditor.extensions.paste(this.options.paste);\n break;\n case 'placeholder':\n extension = new MediumEditor.extensions.placeholder(this.options.placeholder);\n break;\n default:\n // All of the built-in buttons for MediumEditor are extensions\n // so check to see if the extension we're creating is a built-in button\n if (MediumEditor.extensions.button.isBuiltInButton(name)) {\n if (opts) {\n merged = MediumEditor.util.defaults({}, opts, MediumEditor.extensions.button.prototype.defaults[name]);\n extension = new MediumEditor.extensions.button(merged);\n } else {\n extension = new MediumEditor.extensions.button(name);\n }\n }\n }\n if (extension) {\n this.extensions.push(initExtension(extension, name, this));\n }\n return extension;\n },\n stopSelectionUpdates: function () {\n this.preventSelectionUpdates = true;\n },\n startSelectionUpdates: function () {\n this.preventSelectionUpdates = false;\n },\n checkSelection: function () {\n var toolbar = this.getExtensionByName('toolbar');\n if (toolbar) {\n toolbar.checkState();\n }\n return this;\n },\n // Wrapper around document.queryCommandState for checking whether an action has already\n // been applied to the current selection\n queryCommandState: function (action) {\n var fullAction = /^full-(.+)$/gi,\n match,\n queryState = null;\n\n // Actions starting with 'full-' need to be modified since this is a medium-editor concept\n match = fullAction.exec(action);\n if (match) {\n action = match[1];\n }\n try {\n queryState = this.options.ownerDocument.queryCommandState(action);\n } catch (exc) {\n queryState = null;\n }\n return queryState;\n },\n execAction: function (action, opts) {\n /*jslint regexp: true*/\n var fullAction = /^full-(.+)$/gi,\n match,\n result;\n /*jslint regexp: false*/\n\n // Actions starting with 'full-' should be applied to to the entire contents of the editable element\n // (ie full-bold, full-append-pre, etc.)\n match = fullAction.exec(action);\n if (match) {\n // Store the current selection to be restored after applying the action\n this.saveSelection();\n // Select all of the contents before calling the action\n this.selectAllContents();\n result = execActionInternal.call(this, match[1], opts);\n // Restore the previous selection\n this.restoreSelection();\n } else {\n result = execActionInternal.call(this, action, opts);\n }\n\n // do some DOM clean-up for known browser issues after the action\n if (action === 'insertunorderedlist' || action === 'insertorderedlist') {\n MediumEditor.util.cleanListDOM(this.options.ownerDocument, this.getSelectedParentElement());\n }\n this.checkSelection();\n return result;\n },\n getSelectedParentElement: function (range) {\n if (range === undefined) {\n range = this.options.contentWindow.getSelection().getRangeAt(0);\n }\n return MediumEditor.selection.getSelectedParentElement(range);\n },\n selectAllContents: function () {\n var currNode = MediumEditor.selection.getSelectionElement(this.options.contentWindow);\n if (currNode) {\n // Move to the lowest descendant node that still selects all of the contents\n while (currNode.children.length === 1) {\n currNode = currNode.children[0];\n }\n this.selectElement(currNode);\n }\n },\n selectElement: function (element) {\n MediumEditor.selection.selectNode(element, this.options.ownerDocument);\n var selElement = MediumEditor.selection.getSelectionElement(this.options.contentWindow);\n if (selElement) {\n this.events.focusElement(selElement);\n }\n },\n getFocusedElement: function () {\n var focused;\n this.elements.some(function (element) {\n // Find the element that has focus\n if (!focused && element.getAttribute('data-medium-focused')) {\n focused = element;\n }\n\n // bail if we found the element that had focus\n return !!focused;\n }, this);\n return focused;\n },\n // Export the state of the selection in respect to one of this\n // instance of MediumEditor's elements\n exportSelection: function () {\n var selectionElement = MediumEditor.selection.getSelectionElement(this.options.contentWindow),\n editableElementIndex = this.elements.indexOf(selectionElement),\n selectionState = null;\n if (editableElementIndex >= 0) {\n selectionState = MediumEditor.selection.exportSelection(selectionElement, this.options.ownerDocument);\n }\n if (selectionState !== null && editableElementIndex !== 0) {\n selectionState.editableElementIndex = editableElementIndex;\n }\n return selectionState;\n },\n saveSelection: function () {\n this.selectionState = this.exportSelection();\n },\n // Restore a selection based on a selectionState returned by a call\n // to MediumEditor.exportSelection\n importSelection: function (selectionState, favorLaterSelectionAnchor) {\n if (!selectionState) {\n return;\n }\n var editableElement = this.elements[selectionState.editableElementIndex || 0];\n MediumEditor.selection.importSelection(selectionState, editableElement, this.options.ownerDocument, favorLaterSelectionAnchor);\n },\n restoreSelection: function () {\n this.importSelection(this.selectionState);\n },\n createLink: function (opts) {\n var currentEditor = MediumEditor.selection.getSelectionElement(this.options.contentWindow),\n customEvent = {},\n targetUrl;\n\n // Make sure the selection is within an element this editor is tracking\n if (this.elements.indexOf(currentEditor) === -1) {\n return;\n }\n try {\n this.events.disableCustomEvent('editableInput');\n // TODO: Deprecate support for opts.url in 6.0.0\n if (opts.url) {\n MediumEditor.util.deprecated('.url option for createLink', '.value', '6.0.0');\n }\n targetUrl = opts.url || opts.value;\n if (targetUrl && targetUrl.trim().length > 0) {\n var currentSelection = this.options.contentWindow.getSelection();\n if (currentSelection) {\n var currRange = currentSelection.getRangeAt(0),\n commonAncestorContainer = currRange.commonAncestorContainer,\n exportedSelection,\n startContainerParentElement,\n endContainerParentElement,\n textNodes;\n\n // If the selection is contained within a single text node\n // and the selection starts at the beginning of the text node,\n // MSIE still says the startContainer is the parent of the text node.\n // If the selection is contained within a single text node, we\n // want to just use the default browser 'createLink', so we need\n // to account for this case and adjust the commonAncestorContainer accordingly\n if (currRange.endContainer.nodeType === 3 && currRange.startContainer.nodeType !== 3 && currRange.startOffset === 0 && currRange.startContainer.firstChild === currRange.endContainer) {\n commonAncestorContainer = currRange.endContainer;\n }\n startContainerParentElement = MediumEditor.util.getClosestBlockContainer(currRange.startContainer);\n endContainerParentElement = MediumEditor.util.getClosestBlockContainer(currRange.endContainer);\n\n // If the selection is not contained within a single text node\n // but the selection is contained within the same block element\n // we want to make sure we create a single link, and not multiple links\n // which can happen with the built in browser functionality\n if (commonAncestorContainer.nodeType !== 3 && commonAncestorContainer.textContent.length !== 0 && startContainerParentElement === endContainerParentElement) {\n var parentElement = startContainerParentElement || currentEditor,\n fragment = this.options.ownerDocument.createDocumentFragment();\n\n // since we are going to create a link from an extracted text,\n // be sure that if we are updating a link, we won't let an empty link behind (see #754)\n // (Workaroung for Chrome)\n this.execAction('unlink');\n exportedSelection = this.exportSelection();\n fragment.appendChild(parentElement.cloneNode(true));\n if (currentEditor === parentElement) {\n // We have to avoid the editor itself being wiped out when it's the only block element,\n // as our reference inside this.elements gets detached from the page when insertHTML runs.\n // If we just use [parentElement, 0] and [parentElement, parentElement.childNodes.length]\n // as the range boundaries, this happens whenever parentElement === currentEditor.\n // The tradeoff to this workaround is that a orphaned tag can sometimes be left behind at\n // the end of the editor's content.\n // In Gecko:\n // as an empty <strong></strong> if parentElement.lastChild is a <strong> tag.\n // In WebKit:\n // an invented <br /> tag at the end in the same situation\n MediumEditor.selection.select(this.options.ownerDocument, parentElement.firstChild, 0, parentElement.lastChild, parentElement.lastChild.nodeType === 3 ? parentElement.lastChild.nodeValue.length : parentElement.lastChild.childNodes.length);\n } else {\n MediumEditor.selection.select(this.options.ownerDocument, parentElement, 0, parentElement, parentElement.childNodes.length);\n }\n var modifiedExportedSelection = this.exportSelection();\n textNodes = MediumEditor.util.findOrCreateMatchingTextNodes(this.options.ownerDocument, fragment, {\n start: exportedSelection.start - modifiedExportedSelection.start,\n end: exportedSelection.end - modifiedExportedSelection.start,\n editableElementIndex: exportedSelection.editableElementIndex\n });\n // If textNodes are not present, when changing link on images\n // ex: <a><img src=\"http://image.test.com\"></a>, change fragment to currRange.startContainer\n // and set textNodes array to [imageElement, imageElement]\n if (textNodes.length === 0) {\n fragment = this.options.ownerDocument.createDocumentFragment();\n fragment.appendChild(commonAncestorContainer.cloneNode(true));\n textNodes = [fragment.firstChild.firstChild, fragment.firstChild.lastChild];\n }\n\n // Creates the link in the document fragment\n MediumEditor.util.createLink(this.options.ownerDocument, textNodes, targetUrl.trim());\n\n // Chrome trims the leading whitespaces when inserting HTML, which messes up restoring the selection.\n var leadingWhitespacesCount = (fragment.firstChild.innerHTML.match(/^\\s+/) || [''])[0].length;\n\n // Now move the created link back into the original document in a way to preserve undo/redo history\n MediumEditor.util.insertHTMLCommand(this.options.ownerDocument, fragment.firstChild.innerHTML.replace(/^\\s+/, ''));\n exportedSelection.start -= leadingWhitespacesCount;\n exportedSelection.end -= leadingWhitespacesCount;\n this.importSelection(exportedSelection);\n } else {\n this.options.ownerDocument.execCommand('createLink', false, targetUrl);\n }\n if (this.options.targetBlank || opts.target === '_blank') {\n MediumEditor.util.setTargetBlank(MediumEditor.selection.getSelectionStart(this.options.ownerDocument), targetUrl);\n } else {\n MediumEditor.util.removeTargetBlank(MediumEditor.selection.getSelectionStart(this.options.ownerDocument), targetUrl);\n }\n if (opts.buttonClass) {\n MediumEditor.util.addClassToAnchors(MediumEditor.selection.getSelectionStart(this.options.ownerDocument), opts.buttonClass);\n }\n }\n }\n // Fire input event for backwards compatibility if anyone was listening directly to the DOM input event\n if (this.options.targetBlank || opts.target === '_blank' || opts.buttonClass) {\n customEvent = this.options.ownerDocument.createEvent('HTMLEvents');\n customEvent.initEvent('input', true, true, this.options.contentWindow);\n for (var i = 0, len = this.elements.length; i < len; i += 1) {\n this.elements[i].dispatchEvent(customEvent);\n }\n }\n } finally {\n this.events.enableCustomEvent('editableInput');\n }\n // Fire our custom editableInput event\n this.events.triggerCustomEvent('editableInput', customEvent, currentEditor);\n },\n cleanPaste: function (text) {\n this.getExtensionByName('paste').cleanPaste(text);\n },\n pasteHTML: function (html, options) {\n this.getExtensionByName('paste').pasteHTML(html, options);\n },\n setContent: function (html, index) {\n index = index || 0;\n if (this.elements[index]) {\n var target = this.elements[index];\n target.innerHTML = html;\n this.checkContentChanged(target);\n }\n },\n getContent: function (index) {\n index = index || 0;\n if (this.elements[index]) {\n return this.elements[index].innerHTML.trim();\n }\n return null;\n },\n checkContentChanged: function (editable) {\n editable = editable || MediumEditor.selection.getSelectionElement(this.options.contentWindow);\n this.events.updateInput(editable, {\n target: editable,\n currentTarget: editable\n });\n },\n resetContent: function (element) {\n // For all elements that exist in the this.elements array, we can assume:\n // - Its initial content has been set in the initialContent object\n // - It has a medium-editor-index attribute which is the key value in the initialContent object\n\n if (element) {\n var index = this.elements.indexOf(element);\n if (index !== -1) {\n this.setContent(initialContent[element.getAttribute('medium-editor-index')], index);\n }\n return;\n }\n this.elements.forEach(function (el, idx) {\n this.setContent(initialContent[el.getAttribute('medium-editor-index')], idx);\n }, this);\n },\n addElements: function (selector) {\n // Convert elements into an array\n var elements = createElementsArray(selector, this.options.ownerDocument, true);\n\n // Do we have elements to add now?\n if (elements.length === 0) {\n return false;\n }\n elements.forEach(function (element) {\n // Initialize all new elements (we check that in those functions don't worry)\n element = initElement.call(this, element, this.id);\n\n // Add new elements to our internal elements array\n this.elements.push(element);\n\n // Trigger event so extensions can know when an element has been added\n this.trigger('addElement', {\n target: element,\n currentTarget: element\n }, element);\n }, this);\n },\n removeElements: function (selector) {\n // Convert elements into an array\n var elements = createElementsArray(selector, this.options.ownerDocument),\n toRemove = elements.map(function (el) {\n // For textareas, make sure we're looking at the editor div and not the textarea itself\n if (el.getAttribute('medium-editor-textarea-id') && el.parentNode) {\n return el.parentNode.querySelector('div[medium-editor-textarea-id=\"' + el.getAttribute('medium-editor-textarea-id') + '\"]');\n } else {\n return el;\n }\n });\n this.elements = this.elements.filter(function (element) {\n // If this is an element we want to remove\n if (toRemove.indexOf(element) !== -1) {\n this.events.cleanupElement(element);\n if (element.getAttribute('medium-editor-textarea-id')) {\n cleanupTextareaElement(element);\n }\n // Trigger event so extensions can clean-up elements that are being removed\n this.trigger('removeElement', {\n target: element,\n currentTarget: element\n }, element);\n return false;\n }\n return true;\n }, this);\n }\n };\n MediumEditor.getEditorFromElement = function (element) {\n var index = element.getAttribute('data-medium-editor-editor-index'),\n win = element && element.ownerDocument && (element.ownerDocument.defaultView || element.ownerDocument.parentWindow);\n if (win && win._mediumEditors && win._mediumEditors[index]) {\n return win._mediumEditors[index];\n }\n return null;\n };\n })();\n (function () {\n // summary: The default options hash used by the Editor\n\n MediumEditor.prototype.defaults = {\n activeButtonClass: 'medium-editor-button-active',\n buttonLabels: false,\n delay: 0,\n disableReturn: false,\n disableDoubleReturn: false,\n disableExtraSpaces: false,\n disableEditing: false,\n autoLink: false,\n elementsContainer: false,\n contentWindow: window,\n ownerDocument: document,\n targetBlank: false,\n extensions: {},\n spellcheck: true\n };\n })();\n MediumEditor.parseVersionString = function (release) {\n var split = release.split('-'),\n version = split[0].split('.'),\n preRelease = split.length > 1 ? split[1] : '';\n return {\n major: parseInt(version[0], 10),\n minor: parseInt(version[1], 10),\n revision: parseInt(version[2], 10),\n preRelease: preRelease,\n toString: function () {\n return [version[0], version[1], version[2]].join('.') + (preRelease ? '-' + preRelease : '');\n }\n };\n };\n MediumEditor.version = MediumEditor.parseVersionString.call(this, {\n // grunt-bump looks for this:\n 'version': '5.23.3'\n }.version);\n return MediumEditor;\n}());","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var g;\n\n// This works in non-strict mode\ng = function () {\n return this;\n}();\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","/**\n * Rangy, a cross-browser JavaScript range and selection library\n * https://github.com/timdown/rangy\n *\n * Copyright 2022, Tim Down\n * Licensed under the MIT license.\n * Version: 1.3.1\n * Build date: 17 August 2022\n */\n\n(function (factory, root) {\n if (typeof define == \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof module != \"undefined\" && typeof exports == \"object\") {\n // Node/CommonJS style\n module.exports = factory();\n } else {\n // No AMD or CommonJS support so we place Rangy in (probably) the global variable\n root.rangy = factory();\n }\n})(function () {\n var OBJECT = \"object\",\n FUNCTION = \"function\",\n UNDEFINED = \"undefined\";\n\n // Minimal set of properties required for DOM Level 2 Range compliance. Comparison constants such as START_TO_START\n // are omitted because ranges in KHTML do not have them but otherwise work perfectly well. See issue 113.\n var domRangeProperties = [\"startContainer\", \"startOffset\", \"endContainer\", \"endOffset\", \"collapsed\", \"commonAncestorContainer\"];\n\n // Minimal set of methods required for DOM Level 2 Range compliance\n var domRangeMethods = [\"setStart\", \"setStartBefore\", \"setStartAfter\", \"setEnd\", \"setEndBefore\", \"setEndAfter\", \"collapse\", \"selectNode\", \"selectNodeContents\", \"compareBoundaryPoints\", \"deleteContents\", \"extractContents\", \"cloneContents\", \"insertNode\", \"surroundContents\", \"cloneRange\", \"toString\", \"detach\"];\n var textRangeProperties = [\"boundingHeight\", \"boundingLeft\", \"boundingTop\", \"boundingWidth\", \"htmlText\", \"text\"];\n\n // Subset of TextRange's full set of methods that we're interested in\n var textRangeMethods = [\"collapse\", \"compareEndPoints\", \"duplicate\", \"moveToElementText\", \"parentElement\", \"select\", \"setEndPoint\", \"getBoundingClientRect\"];\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Trio of functions taken from Peter Michaux's article:\n // http://peter.michaux.ca/articles/feature-detection-state-of-the-art-browser-scripting\n function isHostMethod(o, p) {\n var t = typeof o[p];\n return t == FUNCTION || !!(t == OBJECT && o[p]) || t == \"unknown\";\n }\n function isHostObject(o, p) {\n return !!(typeof o[p] == OBJECT && o[p]);\n }\n function isHostProperty(o, p) {\n return typeof o[p] != UNDEFINED;\n }\n\n // Creates a convenience function to save verbose repeated calls to tests functions\n function createMultiplePropertyTest(testFunc) {\n return function (o, props) {\n var i = props.length;\n while (i--) {\n if (!testFunc(o, props[i])) {\n return false;\n }\n }\n return true;\n };\n }\n\n // Next trio of functions are a convenience to save verbose repeated calls to previous two functions\n var areHostMethods = createMultiplePropertyTest(isHostMethod);\n var areHostObjects = createMultiplePropertyTest(isHostObject);\n var areHostProperties = createMultiplePropertyTest(isHostProperty);\n function isTextRange(range) {\n return range && areHostMethods(range, textRangeMethods) && areHostProperties(range, textRangeProperties);\n }\n function getBody(doc) {\n return isHostObject(doc, \"body\") ? doc.body : doc.getElementsByTagName(\"body\")[0];\n }\n var forEach = [].forEach ? function (arr, func) {\n arr.forEach(func);\n } : function (arr, func) {\n for (var i = 0, len = arr.length; i < len; ++i) {\n func(arr[i], i);\n }\n };\n var modules = {};\n var isBrowser = typeof window != UNDEFINED && typeof document != UNDEFINED;\n var util = {\n isHostMethod: isHostMethod,\n isHostObject: isHostObject,\n isHostProperty: isHostProperty,\n areHostMethods: areHostMethods,\n areHostObjects: areHostObjects,\n areHostProperties: areHostProperties,\n isTextRange: isTextRange,\n getBody: getBody,\n forEach: forEach\n };\n var api = {\n version: \"1.3.1\",\n initialized: false,\n isBrowser: isBrowser,\n supported: true,\n util: util,\n features: {},\n modules: modules,\n config: {\n alertOnFail: false,\n alertOnWarn: false,\n preferTextRange: false,\n autoInitialize: typeof rangyAutoInitialize == UNDEFINED ? true : rangyAutoInitialize\n }\n };\n function consoleLog(msg) {\n if (typeof console != UNDEFINED && isHostMethod(console, \"log\")) {\n console.log(msg);\n }\n }\n function alertOrLog(msg, shouldAlert) {\n if (isBrowser && shouldAlert) {\n alert(msg);\n } else {\n consoleLog(msg);\n }\n }\n function fail(reason) {\n api.initialized = true;\n api.supported = false;\n alertOrLog(\"Rangy is not supported in this environment. Reason: \" + reason, api.config.alertOnFail);\n }\n api.fail = fail;\n function warn(msg) {\n alertOrLog(\"Rangy warning: \" + msg, api.config.alertOnWarn);\n }\n api.warn = warn;\n\n // Add utility extend() method\n var extend;\n if ({}.hasOwnProperty) {\n util.extend = extend = function (obj, props, deep) {\n var o, p;\n for (var i in props) {\n if (props.hasOwnProperty(i)) {\n o = obj[i];\n p = props[i];\n if (deep && o !== null && typeof o == \"object\" && p !== null && typeof p == \"object\") {\n extend(o, p, true);\n }\n obj[i] = p;\n }\n }\n // Special case for toString, which does not show up in for...in loops in IE <= 8\n if (props.hasOwnProperty(\"toString\")) {\n obj.toString = props.toString;\n }\n return obj;\n };\n util.createOptions = function (optionsParam, defaults) {\n var options = {};\n extend(options, defaults);\n if (optionsParam) {\n extend(options, optionsParam);\n }\n return options;\n };\n } else {\n fail(\"hasOwnProperty not supported\");\n }\n\n // Test whether we're in a browser and bail out if not\n if (!isBrowser) {\n fail(\"Rangy can only run in a browser\");\n }\n\n // Test whether Array.prototype.slice can be relied on for NodeLists and use an alternative toArray() if not\n (function () {\n var toArray;\n if (isBrowser) {\n var el = document.createElement(\"div\");\n el.appendChild(document.createElement(\"span\"));\n var slice = [].slice;\n try {\n if (slice.call(el.childNodes, 0)[0].nodeType == 1) {\n toArray = function (arrayLike) {\n return slice.call(arrayLike, 0);\n };\n }\n } catch (e) {}\n }\n if (!toArray) {\n toArray = function (arrayLike) {\n var arr = [];\n for (var i = 0, len = arrayLike.length; i < len; ++i) {\n arr[i] = arrayLike[i];\n }\n return arr;\n };\n }\n util.toArray = toArray;\n })();\n\n // Very simple event handler wrapper function that doesn't attempt to solve issues such as \"this\" handling or\n // normalization of event properties because we don't need this.\n var addListener;\n if (isBrowser) {\n if (isHostMethod(document, \"addEventListener\")) {\n addListener = function (obj, eventType, listener) {\n obj.addEventListener(eventType, listener, false);\n };\n } else if (isHostMethod(document, \"attachEvent\")) {\n addListener = function (obj, eventType, listener) {\n obj.attachEvent(\"on\" + eventType, listener);\n };\n } else {\n fail(\"Document does not have required addEventListener or attachEvent method\");\n }\n util.addListener = addListener;\n }\n var initListeners = [];\n function getErrorDesc(ex) {\n return ex.message || ex.description || String(ex);\n }\n\n // Initialization\n function init() {\n if (!isBrowser || api.initialized) {\n return;\n }\n var testRange;\n var implementsDomRange = false,\n implementsTextRange = false;\n\n // First, perform basic feature tests\n\n if (isHostMethod(document, \"createRange\")) {\n testRange = document.createRange();\n if (areHostMethods(testRange, domRangeMethods) && areHostProperties(testRange, domRangeProperties)) {\n implementsDomRange = true;\n }\n }\n var body = getBody(document);\n if (!body || body.nodeName.toLowerCase() != \"body\") {\n fail(\"No body element found\");\n return;\n }\n if (body && isHostMethod(body, \"createTextRange\")) {\n testRange = body.createTextRange();\n if (isTextRange(testRange)) {\n implementsTextRange = true;\n }\n }\n if (!implementsDomRange && !implementsTextRange) {\n fail(\"Neither Range nor TextRange are available\");\n return;\n }\n api.initialized = true;\n api.features = {\n implementsDomRange: implementsDomRange,\n implementsTextRange: implementsTextRange\n };\n\n // Initialize modules\n var module, errorMessage;\n for (var moduleName in modules) {\n if ((module = modules[moduleName]) instanceof Module) {\n module.init(module, api);\n }\n }\n\n // Call init listeners\n for (var i = 0, len = initListeners.length; i < len; ++i) {\n try {\n initListeners[i](api);\n } catch (ex) {\n errorMessage = \"Rangy init listener threw an exception. Continuing. Detail: \" + getErrorDesc(ex);\n consoleLog(errorMessage);\n }\n }\n }\n function deprecationNotice(deprecated, replacement, module) {\n if (module) {\n deprecated += \" in module \" + module.name;\n }\n api.warn(\"DEPRECATED: \" + deprecated + \" is deprecated. Please use \" + replacement + \" instead.\");\n }\n function createAliasForDeprecatedMethod(owner, deprecated, replacement, module) {\n owner[deprecated] = function () {\n deprecationNotice(deprecated, replacement, module);\n return owner[replacement].apply(owner, util.toArray(arguments));\n };\n }\n util.deprecationNotice = deprecationNotice;\n util.createAliasForDeprecatedMethod = createAliasForDeprecatedMethod;\n\n // Allow external scripts to initialize this library in case it's loaded after the document has loaded\n api.init = init;\n\n // Execute listener immediately if already initialized\n api.addInitListener = function (listener) {\n if (api.initialized) {\n listener(api);\n } else {\n initListeners.push(listener);\n }\n };\n var shimListeners = [];\n api.addShimListener = function (listener) {\n shimListeners.push(listener);\n };\n function shim(win) {\n win = win || window;\n init();\n\n // Notify listeners\n for (var i = 0, len = shimListeners.length; i < len; ++i) {\n shimListeners[i](win);\n }\n }\n if (isBrowser) {\n api.shim = api.createMissingNativeApi = shim;\n createAliasForDeprecatedMethod(api, \"createMissingNativeApi\", \"shim\");\n }\n function Module(name, dependencies, initializer) {\n this.name = name;\n this.dependencies = dependencies;\n this.initialized = false;\n this.supported = false;\n this.initializer = initializer;\n }\n Module.prototype = {\n init: function () {\n var requiredModuleNames = this.dependencies || [];\n for (var i = 0, len = requiredModuleNames.length, requiredModule, moduleName; i < len; ++i) {\n moduleName = requiredModuleNames[i];\n requiredModule = modules[moduleName];\n if (!requiredModule || !(requiredModule instanceof Module)) {\n throw new Error(\"required module '\" + moduleName + \"' not found\");\n }\n requiredModule.init();\n if (!requiredModule.supported) {\n throw new Error(\"required module '\" + moduleName + \"' not supported\");\n }\n }\n\n // Now run initializer\n this.initializer(this);\n },\n fail: function (reason) {\n this.initialized = true;\n this.supported = false;\n throw new Error(reason);\n },\n warn: function (msg) {\n api.warn(\"Module \" + this.name + \": \" + msg);\n },\n deprecationNotice: function (deprecated, replacement) {\n api.warn(\"DEPRECATED: \" + deprecated + \" in module \" + this.name + \" is deprecated. Please use \" + replacement + \" instead\");\n },\n createError: function (msg) {\n return new Error(\"Error in Rangy \" + this.name + \" module: \" + msg);\n }\n };\n function createModule(name, dependencies, initFunc) {\n var newModule = new Module(name, dependencies, function (module) {\n if (!module.initialized) {\n module.initialized = true;\n try {\n initFunc(api, module);\n module.supported = true;\n } catch (ex) {\n var errorMessage = \"Module '\" + name + \"' failed to load: \" + getErrorDesc(ex);\n consoleLog(errorMessage);\n if (ex.stack) {\n consoleLog(ex.stack);\n }\n }\n }\n });\n modules[name] = newModule;\n return newModule;\n }\n api.createModule = function (name) {\n // Allow 2 or 3 arguments (second argument is an optional array of dependencies)\n var initFunc, dependencies;\n if (arguments.length == 2) {\n initFunc = arguments[1];\n dependencies = [];\n } else {\n initFunc = arguments[2];\n dependencies = arguments[1];\n }\n var module = createModule(name, dependencies, initFunc);\n\n // Initialize the module immediately if the core is already initialized\n if (api.initialized && api.supported) {\n module.init();\n }\n };\n api.createCoreModule = function (name, dependencies, initFunc) {\n createModule(name, dependencies, initFunc);\n };\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Ensure rangy.rangePrototype and rangy.selectionPrototype are available immediately\n\n function RangePrototype() {}\n api.RangePrototype = RangePrototype;\n api.rangePrototype = new RangePrototype();\n function SelectionPrototype() {}\n api.selectionPrototype = new SelectionPrototype();\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // DOM utility methods used by Rangy\n api.createCoreModule(\"DomUtil\", [], function (api, module) {\n var UNDEF = \"undefined\";\n var util = api.util;\n var getBody = util.getBody;\n\n // Perform feature tests\n if (!util.areHostMethods(document, [\"createDocumentFragment\", \"createElement\", \"createTextNode\"])) {\n module.fail(\"document missing a Node creation method\");\n }\n if (!util.isHostMethod(document, \"getElementsByTagName\")) {\n module.fail(\"document missing getElementsByTagName method\");\n }\n var el = document.createElement(\"div\");\n if (!util.areHostMethods(el, [\"insertBefore\", \"appendChild\", \"cloneNode\"] || !util.areHostObjects(el, [\"previousSibling\", \"nextSibling\", \"childNodes\", \"parentNode\"]))) {\n module.fail(\"Incomplete Element implementation\");\n }\n\n // innerHTML is required for Range's createContextualFragment method\n if (!util.isHostProperty(el, \"innerHTML\")) {\n module.fail(\"Element is missing innerHTML property\");\n }\n var textNode = document.createTextNode(\"test\");\n if (!util.areHostMethods(textNode, [\"splitText\", \"deleteData\", \"insertData\", \"appendData\", \"cloneNode\"] || !util.areHostObjects(el, [\"previousSibling\", \"nextSibling\", \"childNodes\", \"parentNode\"]) || !util.areHostProperties(textNode, [\"data\"]))) {\n module.fail(\"Incomplete Text Node implementation\");\n }\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Removed use of indexOf because of a bizarre bug in Opera that is thrown in one of the Acid3 tests. I haven't been\n // able to replicate it outside of the test. The bug is that indexOf returns -1 when called on an Array that\n // contains just the document as a single element and the value searched for is the document.\n var arrayContains =\n /*Array.prototype.indexOf ?\n function(arr, val) {\n return arr.indexOf(val) > -1;\n }:*/\n\n function (arr, val) {\n var i = arr.length;\n while (i--) {\n if (arr[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n // Opera 11 puts HTML elements in the null namespace, it seems, and IE 7 has undefined namespaceURI\n function isHtmlNamespace(node) {\n var ns;\n return typeof node.namespaceURI == UNDEF || (ns = node.namespaceURI) === null || ns == \"http://www.w3.org/1999/xhtml\";\n }\n function parentElement(node) {\n var parent = node.parentNode;\n return parent.nodeType == 1 ? parent : null;\n }\n function getNodeIndex(node) {\n var i = 0;\n while (node = node.previousSibling) {\n ++i;\n }\n return i;\n }\n function getNodeLength(node) {\n switch (node.nodeType) {\n case 7:\n case 10:\n return 0;\n case 3:\n case 8:\n return node.length;\n default:\n return node.childNodes.length;\n }\n }\n function getCommonAncestor(node1, node2) {\n var ancestors = [],\n n;\n for (n = node1; n; n = n.parentNode) {\n ancestors.push(n);\n }\n for (n = node2; n; n = n.parentNode) {\n if (arrayContains(ancestors, n)) {\n return n;\n }\n }\n return null;\n }\n function isAncestorOf(ancestor, descendant, selfIsAncestor) {\n var n = selfIsAncestor ? descendant : descendant.parentNode;\n while (n) {\n if (n === ancestor) {\n return true;\n } else {\n n = n.parentNode;\n }\n }\n return false;\n }\n function isOrIsAncestorOf(ancestor, descendant) {\n return isAncestorOf(ancestor, descendant, true);\n }\n function getClosestAncestorIn(node, ancestor, selfIsAncestor) {\n var p,\n n = selfIsAncestor ? node : node.parentNode;\n while (n) {\n p = n.parentNode;\n if (p === ancestor) {\n return n;\n }\n n = p;\n }\n return null;\n }\n function isCharacterDataNode(node) {\n var t = node.nodeType;\n return t == 3 || t == 4 || t == 8; // Text, CDataSection or Comment\n }\n\n function isTextOrCommentNode(node) {\n if (!node) {\n return false;\n }\n var t = node.nodeType;\n return t == 3 || t == 8; // Text or Comment\n }\n\n function insertAfter(node, precedingNode) {\n var nextNode = precedingNode.nextSibling,\n parent = precedingNode.parentNode;\n if (nextNode) {\n parent.insertBefore(node, nextNode);\n } else {\n parent.appendChild(node);\n }\n return node;\n }\n\n // Note that we cannot use splitText() because it is bugridden in IE 9.\n function splitDataNode(node, index, positionsToPreserve) {\n var newNode = node.cloneNode(false);\n newNode.deleteData(0, index);\n node.deleteData(index, node.length - index);\n insertAfter(newNode, node);\n\n // Preserve positions\n if (positionsToPreserve) {\n for (var i = 0, position; position = positionsToPreserve[i++];) {\n // Handle case where position was inside the portion of node after the split point\n if (position.node == node && position.offset > index) {\n position.node = newNode;\n position.offset -= index;\n }\n // Handle the case where the position is a node offset within node's parent\n else if (position.node == node.parentNode && position.offset > getNodeIndex(node)) {\n ++position.offset;\n }\n }\n }\n return newNode;\n }\n function getDocument(node) {\n if (node.nodeType == 9) {\n return node;\n } else if (typeof node.ownerDocument != UNDEF) {\n return node.ownerDocument;\n } else if (typeof node.document != UNDEF) {\n return node.document;\n } else if (node.parentNode) {\n return getDocument(node.parentNode);\n } else {\n throw module.createError(\"getDocument: no document found for node\");\n }\n }\n function getWindow(node) {\n var doc = getDocument(node);\n if (typeof doc.defaultView != UNDEF) {\n return doc.defaultView;\n } else if (typeof doc.parentWindow != UNDEF) {\n return doc.parentWindow;\n } else {\n throw module.createError(\"Cannot get a window object for node\");\n }\n }\n function getIframeDocument(iframeEl) {\n if (typeof iframeEl.contentDocument != UNDEF) {\n return iframeEl.contentDocument;\n } else if (typeof iframeEl.contentWindow != UNDEF) {\n return iframeEl.contentWindow.document;\n } else {\n throw module.createError(\"getIframeDocument: No Document object found for iframe element\");\n }\n }\n function getIframeWindow(iframeEl) {\n if (typeof iframeEl.contentWindow != UNDEF) {\n return iframeEl.contentWindow;\n } else if (typeof iframeEl.contentDocument != UNDEF) {\n return iframeEl.contentDocument.defaultView;\n } else {\n throw module.createError(\"getIframeWindow: No Window object found for iframe element\");\n }\n }\n\n // This looks bad. Is it worth it?\n function isWindow(obj) {\n return obj && util.isHostMethod(obj, \"setTimeout\") && util.isHostObject(obj, \"document\");\n }\n function getContentDocument(obj, module, methodName) {\n var doc;\n if (!obj) {\n doc = document;\n }\n\n // Test if a DOM node has been passed and obtain a document object for it if so\n else if (util.isHostProperty(obj, \"nodeType\")) {\n doc = obj.nodeType == 1 && obj.tagName.toLowerCase() == \"iframe\" ? getIframeDocument(obj) : getDocument(obj);\n }\n\n // Test if the doc parameter appears to be a Window object\n else if (isWindow(obj)) {\n doc = obj.document;\n }\n if (!doc) {\n throw module.createError(methodName + \"(): Parameter must be a Window object or DOM node\");\n }\n return doc;\n }\n function getRootContainer(node) {\n var parent;\n while (parent = node.parentNode) {\n node = parent;\n }\n return node;\n }\n function comparePoints(nodeA, offsetA, nodeB, offsetB) {\n // See http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Comparing\n var nodeC, root, childA, childB, n;\n if (nodeA == nodeB) {\n // Case 1: nodes are the same\n return offsetA === offsetB ? 0 : offsetA < offsetB ? -1 : 1;\n } else if (nodeC = getClosestAncestorIn(nodeB, nodeA, true)) {\n // Case 2: node C (container B or an ancestor) is a child node of A\n return offsetA <= getNodeIndex(nodeC) ? -1 : 1;\n } else if (nodeC = getClosestAncestorIn(nodeA, nodeB, true)) {\n // Case 3: node C (container A or an ancestor) is a child node of B\n return getNodeIndex(nodeC) < offsetB ? -1 : 1;\n } else {\n root = getCommonAncestor(nodeA, nodeB);\n if (!root) {\n throw new Error(\"comparePoints error: nodes have no common ancestor\");\n }\n\n // Case 4: containers are siblings or descendants of siblings\n childA = nodeA === root ? root : getClosestAncestorIn(nodeA, root, true);\n childB = nodeB === root ? root : getClosestAncestorIn(nodeB, root, true);\n if (childA === childB) {\n // This shouldn't be possible\n throw module.createError(\"comparePoints got to case 4 and childA and childB are the same!\");\n } else {\n n = root.firstChild;\n while (n) {\n if (n === childA) {\n return -1;\n } else if (n === childB) {\n return 1;\n }\n n = n.nextSibling;\n }\n }\n }\n }\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Test for IE's crash (IE 6/7) or exception (IE >= 8) when a reference to garbage-collected text node is queried\n var crashyTextNodes = false;\n function isBrokenNode(node) {\n var n;\n try {\n n = node.parentNode;\n return false;\n } catch (e) {\n return true;\n }\n }\n (function () {\n var el = document.createElement(\"b\");\n el.innerHTML = \"1\";\n var textNode = el.firstChild;\n el.innerHTML = \"<br />\";\n crashyTextNodes = isBrokenNode(textNode);\n api.features.crashyTextNodes = crashyTextNodes;\n })();\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n function inspectNode(node) {\n if (!node) {\n return \"[No node]\";\n }\n if (crashyTextNodes && isBrokenNode(node)) {\n return \"[Broken node]\";\n }\n if (isCharacterDataNode(node)) {\n return '\"' + node.data + '\"';\n }\n if (node.nodeType == 1) {\n var idAttr = node.id ? ' id=\"' + node.id + '\"' : \"\";\n return \"<\" + node.nodeName + idAttr + \">[index:\" + getNodeIndex(node) + \",length:\" + node.childNodes.length + \"][\" + (node.innerHTML || \"[innerHTML not supported]\").slice(0, 25) + \"]\";\n }\n return node.nodeName;\n }\n function fragmentFromNodeChildren(node) {\n var fragment = getDocument(node).createDocumentFragment(),\n child;\n while (child = node.firstChild) {\n fragment.appendChild(child);\n }\n return fragment;\n }\n var getComputedStyleProperty;\n if (typeof window.getComputedStyle != UNDEF) {\n getComputedStyleProperty = function (el, propName) {\n return getWindow(el).getComputedStyle(el, null)[propName];\n };\n } else if (typeof document.documentElement.currentStyle != UNDEF) {\n getComputedStyleProperty = function (el, propName) {\n return el.currentStyle ? el.currentStyle[propName] : \"\";\n };\n } else {\n module.fail(\"No means of obtaining computed style properties found\");\n }\n function createTestElement(doc, html, contentEditable) {\n var body = getBody(doc);\n var el = doc.createElement(\"div\");\n el.contentEditable = \"\" + !!contentEditable;\n if (html) {\n el.innerHTML = html;\n }\n\n // Insert the test element at the start of the body to prevent scrolling to the bottom in iOS (issue #292)\n var bodyFirstChild = body.firstChild;\n if (bodyFirstChild) {\n body.insertBefore(el, bodyFirstChild);\n } else {\n body.appendChild(el);\n }\n return el;\n }\n function removeNode(node) {\n return node.parentNode.removeChild(node);\n }\n function NodeIterator(root) {\n this.root = root;\n this._next = root;\n }\n NodeIterator.prototype = {\n _current: null,\n hasNext: function () {\n return !!this._next;\n },\n next: function () {\n var n = this._current = this._next;\n var child, next;\n if (this._current) {\n child = n.firstChild;\n if (child) {\n this._next = child;\n } else {\n next = null;\n while (n !== this.root && !(next = n.nextSibling)) {\n n = n.parentNode;\n }\n this._next = next;\n }\n }\n return this._current;\n },\n detach: function () {\n this._current = this._next = this.root = null;\n }\n };\n function createIterator(root) {\n return new NodeIterator(root);\n }\n function DomPosition(node, offset) {\n this.node = node;\n this.offset = offset;\n }\n DomPosition.prototype = {\n equals: function (pos) {\n return !!pos && this.node === pos.node && this.offset == pos.offset;\n },\n inspect: function () {\n return \"[DomPosition(\" + inspectNode(this.node) + \":\" + this.offset + \")]\";\n },\n toString: function () {\n return this.inspect();\n }\n };\n function DOMException(codeName) {\n this.code = this[codeName];\n this.codeName = codeName;\n this.message = \"DOMException: \" + this.codeName;\n }\n DOMException.prototype = {\n INDEX_SIZE_ERR: 1,\n HIERARCHY_REQUEST_ERR: 3,\n WRONG_DOCUMENT_ERR: 4,\n NO_MODIFICATION_ALLOWED_ERR: 7,\n NOT_FOUND_ERR: 8,\n NOT_SUPPORTED_ERR: 9,\n INVALID_STATE_ERR: 11,\n INVALID_NODE_TYPE_ERR: 24\n };\n DOMException.prototype.toString = function () {\n return this.message;\n };\n api.dom = {\n arrayContains: arrayContains,\n isHtmlNamespace: isHtmlNamespace,\n parentElement: parentElement,\n getNodeIndex: getNodeIndex,\n getNodeLength: getNodeLength,\n getCommonAncestor: getCommonAncestor,\n isAncestorOf: isAncestorOf,\n isOrIsAncestorOf: isOrIsAncestorOf,\n getClosestAncestorIn: getClosestAncestorIn,\n isCharacterDataNode: isCharacterDataNode,\n isTextOrCommentNode: isTextOrCommentNode,\n insertAfter: insertAfter,\n splitDataNode: splitDataNode,\n getDocument: getDocument,\n getWindow: getWindow,\n getIframeWindow: getIframeWindow,\n getIframeDocument: getIframeDocument,\n getBody: getBody,\n isWindow: isWindow,\n getContentDocument: getContentDocument,\n getRootContainer: getRootContainer,\n comparePoints: comparePoints,\n isBrokenNode: isBrokenNode,\n inspectNode: inspectNode,\n getComputedStyleProperty: getComputedStyleProperty,\n createTestElement: createTestElement,\n removeNode: removeNode,\n fragmentFromNodeChildren: fragmentFromNodeChildren,\n createIterator: createIterator,\n DomPosition: DomPosition\n };\n api.DOMException = DOMException;\n });\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Pure JavaScript implementation of DOM Range\n api.createCoreModule(\"DomRange\", [\"DomUtil\"], function (api, module) {\n var dom = api.dom;\n var util = api.util;\n var DomPosition = dom.DomPosition;\n var DOMException = api.DOMException;\n var isCharacterDataNode = dom.isCharacterDataNode;\n var getNodeIndex = dom.getNodeIndex;\n var isOrIsAncestorOf = dom.isOrIsAncestorOf;\n var getDocument = dom.getDocument;\n var comparePoints = dom.comparePoints;\n var splitDataNode = dom.splitDataNode;\n var getClosestAncestorIn = dom.getClosestAncestorIn;\n var getNodeLength = dom.getNodeLength;\n var arrayContains = dom.arrayContains;\n var getRootContainer = dom.getRootContainer;\n var crashyTextNodes = api.features.crashyTextNodes;\n var removeNode = dom.removeNode;\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Utility functions\n\n function isNonTextPartiallySelected(node, range) {\n return node.nodeType != 3 && (isOrIsAncestorOf(node, range.startContainer) || isOrIsAncestorOf(node, range.endContainer));\n }\n function getRangeDocument(range) {\n return range.document || getDocument(range.startContainer);\n }\n function getRangeRoot(range) {\n return getRootContainer(range.startContainer);\n }\n function getBoundaryBeforeNode(node) {\n return new DomPosition(node.parentNode, getNodeIndex(node));\n }\n function getBoundaryAfterNode(node) {\n return new DomPosition(node.parentNode, getNodeIndex(node) + 1);\n }\n function insertNodeAtPosition(node, n, o) {\n var firstNodeInserted = node.nodeType == 11 ? node.firstChild : node;\n if (isCharacterDataNode(n)) {\n if (o == n.length) {\n dom.insertAfter(node, n);\n } else {\n n.parentNode.insertBefore(node, o == 0 ? n : splitDataNode(n, o));\n }\n } else if (o >= n.childNodes.length) {\n n.appendChild(node);\n } else {\n n.insertBefore(node, n.childNodes[o]);\n }\n return firstNodeInserted;\n }\n function rangesIntersect(rangeA, rangeB, touchingIsIntersecting) {\n assertRangeValid(rangeA);\n assertRangeValid(rangeB);\n if (getRangeDocument(rangeB) != getRangeDocument(rangeA)) {\n throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n }\n var startComparison = comparePoints(rangeA.startContainer, rangeA.startOffset, rangeB.endContainer, rangeB.endOffset),\n endComparison = comparePoints(rangeA.endContainer, rangeA.endOffset, rangeB.startContainer, rangeB.startOffset);\n return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0;\n }\n function cloneSubtree(iterator) {\n var partiallySelected;\n for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next();) {\n partiallySelected = iterator.isPartiallySelectedSubtree();\n node = node.cloneNode(!partiallySelected);\n if (partiallySelected) {\n subIterator = iterator.getSubtreeIterator();\n node.appendChild(cloneSubtree(subIterator));\n subIterator.detach();\n }\n if (node.nodeType == 10) {\n // DocumentType\n throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n }\n frag.appendChild(node);\n }\n return frag;\n }\n function iterateSubtree(rangeIterator, func, iteratorState) {\n var it, n;\n iteratorState = iteratorState || {\n stop: false\n };\n for (var node, subRangeIterator; node = rangeIterator.next();) {\n if (rangeIterator.isPartiallySelectedSubtree()) {\n if (func(node) === false) {\n iteratorState.stop = true;\n return;\n } else {\n // The node is partially selected by the Range, so we can use a new RangeIterator on the portion of\n // the node selected by the Range.\n subRangeIterator = rangeIterator.getSubtreeIterator();\n iterateSubtree(subRangeIterator, func, iteratorState);\n subRangeIterator.detach();\n if (iteratorState.stop) {\n return;\n }\n }\n } else {\n // The whole node is selected, so we can use efficient DOM iteration to iterate over the node and its\n // descendants\n it = dom.createIterator(node);\n while (n = it.next()) {\n if (func(n) === false) {\n iteratorState.stop = true;\n return;\n }\n }\n }\n }\n }\n function deleteSubtree(iterator) {\n var subIterator;\n while (iterator.next()) {\n if (iterator.isPartiallySelectedSubtree()) {\n subIterator = iterator.getSubtreeIterator();\n deleteSubtree(subIterator);\n subIterator.detach();\n } else {\n iterator.remove();\n }\n }\n }\n function extractSubtree(iterator) {\n for (var node, frag = getRangeDocument(iterator.range).createDocumentFragment(), subIterator; node = iterator.next();) {\n if (iterator.isPartiallySelectedSubtree()) {\n node = node.cloneNode(false);\n subIterator = iterator.getSubtreeIterator();\n node.appendChild(extractSubtree(subIterator));\n subIterator.detach();\n } else {\n iterator.remove();\n }\n if (node.nodeType == 10) {\n // DocumentType\n throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n }\n frag.appendChild(node);\n }\n return frag;\n }\n function getNodesInRange(range, nodeTypes, filter) {\n var filterNodeTypes = !!(nodeTypes && nodeTypes.length),\n regex;\n var filterExists = !!filter;\n if (filterNodeTypes) {\n regex = new RegExp(\"^(\" + nodeTypes.join(\"|\") + \")$\");\n }\n var nodes = [];\n iterateSubtree(new RangeIterator(range, false), function (node) {\n if (filterNodeTypes && !regex.test(node.nodeType)) {\n return;\n }\n if (filterExists && !filter(node)) {\n return;\n }\n // Don't include a boundary container if it is a character data node and the range does not contain any\n // of its character data. See issue 190.\n var sc = range.startContainer;\n if (node == sc && isCharacterDataNode(sc) && range.startOffset == sc.length) {\n return;\n }\n var ec = range.endContainer;\n if (node == ec && isCharacterDataNode(ec) && range.endOffset == 0) {\n return;\n }\n nodes.push(node);\n });\n return nodes;\n }\n function inspect(range) {\n var name = typeof range.getName == \"undefined\" ? \"Range\" : range.getName();\n return \"[\" + name + \"(\" + dom.inspectNode(range.startContainer) + \":\" + range.startOffset + \", \" + dom.inspectNode(range.endContainer) + \":\" + range.endOffset + \")]\";\n }\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // RangeIterator code partially borrows from IERange by Tim Ryan (http://github.com/timcameronryan/IERange)\n\n function RangeIterator(range, clonePartiallySelectedTextNodes) {\n this.range = range;\n this.clonePartiallySelectedTextNodes = clonePartiallySelectedTextNodes;\n if (!range.collapsed) {\n this.sc = range.startContainer;\n this.so = range.startOffset;\n this.ec = range.endContainer;\n this.eo = range.endOffset;\n var root = range.commonAncestorContainer;\n if (this.sc === this.ec && isCharacterDataNode(this.sc)) {\n this.isSingleCharacterDataNode = true;\n this._first = this._last = this._next = this.sc;\n } else {\n this._first = this._next = this.sc === root && !isCharacterDataNode(this.sc) ? this.sc.childNodes[this.so] : getClosestAncestorIn(this.sc, root, true);\n this._last = this.ec === root && !isCharacterDataNode(this.ec) ? this.ec.childNodes[this.eo - 1] : getClosestAncestorIn(this.ec, root, true);\n }\n }\n }\n RangeIterator.prototype = {\n _current: null,\n _next: null,\n _first: null,\n _last: null,\n isSingleCharacterDataNode: false,\n reset: function () {\n this._current = null;\n this._next = this._first;\n },\n hasNext: function () {\n return !!this._next;\n },\n next: function () {\n // Move to next node\n var current = this._current = this._next;\n if (current) {\n this._next = current !== this._last ? current.nextSibling : null;\n\n // Check for partially selected text nodes\n if (isCharacterDataNode(current) && this.clonePartiallySelectedTextNodes) {\n if (current === this.ec) {\n (current = current.cloneNode(true)).deleteData(this.eo, current.length - this.eo);\n }\n if (this._current === this.sc) {\n (current = current.cloneNode(true)).deleteData(0, this.so);\n }\n }\n }\n return current;\n },\n remove: function () {\n var current = this._current,\n start,\n end;\n if (isCharacterDataNode(current) && (current === this.sc || current === this.ec)) {\n start = current === this.sc ? this.so : 0;\n end = current === this.ec ? this.eo : current.length;\n if (start != end) {\n current.deleteData(start, end - start);\n }\n } else {\n if (current.parentNode) {\n removeNode(current);\n } else {}\n }\n },\n // Checks if the current node is partially selected\n isPartiallySelectedSubtree: function () {\n var current = this._current;\n return isNonTextPartiallySelected(current, this.range);\n },\n getSubtreeIterator: function () {\n var subRange;\n if (this.isSingleCharacterDataNode) {\n subRange = this.range.cloneRange();\n subRange.collapse(false);\n } else {\n subRange = new Range(getRangeDocument(this.range));\n var current = this._current;\n var startContainer = current,\n startOffset = 0,\n endContainer = current,\n endOffset = getNodeLength(current);\n if (isOrIsAncestorOf(current, this.sc)) {\n startContainer = this.sc;\n startOffset = this.so;\n }\n if (isOrIsAncestorOf(current, this.ec)) {\n endContainer = this.ec;\n endOffset = this.eo;\n }\n updateBoundaries(subRange, startContainer, startOffset, endContainer, endOffset);\n }\n return new RangeIterator(subRange, this.clonePartiallySelectedTextNodes);\n },\n detach: function () {\n this.range = this._current = this._next = this._first = this._last = this.sc = this.so = this.ec = this.eo = null;\n }\n };\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n var beforeAfterNodeTypes = [1, 3, 4, 5, 7, 8, 10];\n var rootContainerNodeTypes = [2, 9, 11];\n var readonlyNodeTypes = [5, 6, 10, 12];\n var insertableNodeTypes = [1, 3, 4, 5, 7, 8, 10, 11];\n var surroundNodeTypes = [1, 3, 4, 5, 7, 8];\n function createAncestorFinder(nodeTypes) {\n return function (node, selfIsAncestor) {\n var t,\n n = selfIsAncestor ? node : node.parentNode;\n while (n) {\n t = n.nodeType;\n if (arrayContains(nodeTypes, t)) {\n return n;\n }\n n = n.parentNode;\n }\n return null;\n };\n }\n var getDocumentOrFragmentContainer = createAncestorFinder([9, 11]);\n var getReadonlyAncestor = createAncestorFinder(readonlyNodeTypes);\n var getDocTypeNotationEntityAncestor = createAncestorFinder([6, 10, 12]);\n var getElementAncestor = createAncestorFinder([1]);\n function assertNoDocTypeNotationEntityAncestor(node, allowSelf) {\n if (getDocTypeNotationEntityAncestor(node, allowSelf)) {\n throw new DOMException(\"INVALID_NODE_TYPE_ERR\");\n }\n }\n function assertValidNodeType(node, invalidTypes) {\n if (!arrayContains(invalidTypes, node.nodeType)) {\n throw new DOMException(\"INVALID_NODE_TYPE_ERR\");\n }\n }\n function assertValidOffset(node, offset) {\n if (offset < 0 || offset > (isCharacterDataNode(node) ? node.length : node.childNodes.length)) {\n throw new DOMException(\"INDEX_SIZE_ERR\");\n }\n }\n function assertSameDocumentOrFragment(node1, node2) {\n if (getDocumentOrFragmentContainer(node1, true) !== getDocumentOrFragmentContainer(node2, true)) {\n throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n }\n }\n function assertNodeNotReadOnly(node) {\n if (getReadonlyAncestor(node, true)) {\n throw new DOMException(\"NO_MODIFICATION_ALLOWED_ERR\");\n }\n }\n function assertNode(node, codeName) {\n if (!node) {\n throw new DOMException(codeName);\n }\n }\n function isValidOffset(node, offset) {\n return offset <= (isCharacterDataNode(node) ? node.length : node.childNodes.length);\n }\n function isRangeValid(range) {\n return !!range.startContainer && !!range.endContainer && !(crashyTextNodes && (dom.isBrokenNode(range.startContainer) || dom.isBrokenNode(range.endContainer))) && getRootContainer(range.startContainer) == getRootContainer(range.endContainer) && isValidOffset(range.startContainer, range.startOffset) && isValidOffset(range.endContainer, range.endOffset);\n }\n function assertRangeValid(range) {\n if (!isRangeValid(range)) {\n throw new Error(\"Range error: Range is not valid. This usually happens after DOM mutation. Range: (\" + range.inspect() + \")\");\n }\n }\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Test the browser's innerHTML support to decide how to implement createContextualFragment\n var styleEl = document.createElement(\"style\");\n var htmlParsingConforms = false;\n try {\n styleEl.innerHTML = \"<b>x</b>\";\n htmlParsingConforms = styleEl.firstChild.nodeType == 3; // Pre-Blink Opera incorrectly creates an element node\n } catch (e) {\n // IE 6 and 7 throw\n }\n api.features.htmlParsingConforms = htmlParsingConforms;\n var createContextualFragment = htmlParsingConforms ?\n // Implementation as per HTML parsing spec, trusting in the browser's implementation of innerHTML. See\n // discussion and base code for this implementation at issue 67.\n // Spec: http://html5.org/specs/dom-parsing.html#extensions-to-the-range-interface\n // Thanks to Aleks Williams.\n function (fragmentStr) {\n // \"Let node the context object's start's node.\"\n var node = this.startContainer;\n var doc = getDocument(node);\n\n // \"If the context object's start's node is null, raise an INVALID_STATE_ERR\n // exception and abort these steps.\"\n if (!node) {\n throw new DOMException(\"INVALID_STATE_ERR\");\n }\n\n // \"Let element be as follows, depending on node's interface:\"\n // Document, Document Fragment: null\n var el = null;\n\n // \"Element: node\"\n if (node.nodeType == 1) {\n el = node;\n\n // \"Text, Comment: node's parentElement\"\n } else if (isCharacterDataNode(node)) {\n el = dom.parentElement(node);\n }\n\n // \"If either element is null or element's ownerDocument is an HTML document\n // and element's local name is \"html\" and element's namespace is the HTML\n // namespace\"\n if (el === null || el.nodeName == \"HTML\" && dom.isHtmlNamespace(getDocument(el).documentElement) && dom.isHtmlNamespace(el)) {\n // \"let element be a new Element with \"body\" as its local name and the HTML\n // namespace as its namespace.\"\"\n el = doc.createElement(\"body\");\n } else {\n el = el.cloneNode(false);\n }\n\n // \"If the node's document is an HTML document: Invoke the HTML fragment parsing algorithm.\"\n // \"If the node's document is an XML document: Invoke the XML fragment parsing algorithm.\"\n // \"In either case, the algorithm must be invoked with fragment as the input\n // and element as the context element.\"\n el.innerHTML = fragmentStr;\n\n // \"If this raises an exception, then abort these steps. Otherwise, let new\n // children be the nodes returned.\"\n\n // \"Let fragment be a new DocumentFragment.\"\n // \"Append all new children to fragment.\"\n // \"Return fragment.\"\n return dom.fragmentFromNodeChildren(el);\n } :\n // In this case, innerHTML cannot be trusted, so fall back to a simpler, non-conformant implementation that\n // previous versions of Rangy used (with the exception of using a body element rather than a div)\n function (fragmentStr) {\n var doc = getRangeDocument(this);\n var el = doc.createElement(\"body\");\n el.innerHTML = fragmentStr;\n return dom.fragmentFromNodeChildren(el);\n };\n function splitRangeBoundaries(range, positionsToPreserve) {\n assertRangeValid(range);\n var sc = range.startContainer,\n so = range.startOffset,\n ec = range.endContainer,\n eo = range.endOffset;\n var startEndSame = sc === ec;\n if (isCharacterDataNode(ec) && eo > 0 && eo < ec.length) {\n splitDataNode(ec, eo, positionsToPreserve);\n }\n if (isCharacterDataNode(sc) && so > 0 && so < sc.length) {\n sc = splitDataNode(sc, so, positionsToPreserve);\n if (startEndSame) {\n eo -= so;\n ec = sc;\n } else if (ec == sc.parentNode && eo >= getNodeIndex(sc)) {\n eo++;\n }\n so = 0;\n }\n range.setStartAndEnd(sc, so, ec, eo);\n }\n function rangeToHtml(range) {\n assertRangeValid(range);\n var container = range.commonAncestorContainer.parentNode.cloneNode(false);\n container.appendChild(range.cloneContents());\n return container.innerHTML;\n }\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n var rangeProperties = [\"startContainer\", \"startOffset\", \"endContainer\", \"endOffset\", \"collapsed\", \"commonAncestorContainer\"];\n var s2s = 0,\n s2e = 1,\n e2e = 2,\n e2s = 3;\n var n_b = 0,\n n_a = 1,\n n_b_a = 2,\n n_i = 3;\n util.extend(api.rangePrototype, {\n compareBoundaryPoints: function (how, range) {\n assertRangeValid(this);\n assertSameDocumentOrFragment(this.startContainer, range.startContainer);\n var nodeA, offsetA, nodeB, offsetB;\n var prefixA = how == e2s || how == s2s ? \"start\" : \"end\";\n var prefixB = how == s2e || how == s2s ? \"start\" : \"end\";\n nodeA = this[prefixA + \"Container\"];\n offsetA = this[prefixA + \"Offset\"];\n nodeB = range[prefixB + \"Container\"];\n offsetB = range[prefixB + \"Offset\"];\n return comparePoints(nodeA, offsetA, nodeB, offsetB);\n },\n insertNode: function (node) {\n assertRangeValid(this);\n assertValidNodeType(node, insertableNodeTypes);\n assertNodeNotReadOnly(this.startContainer);\n if (isOrIsAncestorOf(node, this.startContainer)) {\n throw new DOMException(\"HIERARCHY_REQUEST_ERR\");\n }\n\n // No check for whether the container of the start of the Range is of a type that does not allow\n // children of the type of node: the browser's DOM implementation should do this for us when we attempt\n // to add the node\n\n var firstNodeInserted = insertNodeAtPosition(node, this.startContainer, this.startOffset);\n this.setStartBefore(firstNodeInserted);\n },\n cloneContents: function () {\n assertRangeValid(this);\n var clone, frag;\n if (this.collapsed) {\n return getRangeDocument(this).createDocumentFragment();\n } else {\n if (this.startContainer === this.endContainer && isCharacterDataNode(this.startContainer)) {\n clone = this.startContainer.cloneNode(true);\n clone.data = clone.data.slice(this.startOffset, this.endOffset);\n frag = getRangeDocument(this).createDocumentFragment();\n frag.appendChild(clone);\n return frag;\n } else {\n var iterator = new RangeIterator(this, true);\n clone = cloneSubtree(iterator);\n iterator.detach();\n }\n return clone;\n }\n },\n canSurroundContents: function () {\n assertRangeValid(this);\n assertNodeNotReadOnly(this.startContainer);\n assertNodeNotReadOnly(this.endContainer);\n\n // Check if the contents can be surrounded. Specifically, this means whether the range partially selects\n // no non-text nodes.\n var iterator = new RangeIterator(this, true);\n var boundariesInvalid = iterator._first && isNonTextPartiallySelected(iterator._first, this) || iterator._last && isNonTextPartiallySelected(iterator._last, this);\n iterator.detach();\n return !boundariesInvalid;\n },\n surroundContents: function (node) {\n assertValidNodeType(node, surroundNodeTypes);\n if (!this.canSurroundContents()) {\n throw new DOMException(\"INVALID_STATE_ERR\");\n }\n\n // Extract the contents\n var content = this.extractContents();\n\n // Clear the children of the node\n if (node.hasChildNodes()) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n }\n\n // Insert the new node and add the extracted contents\n insertNodeAtPosition(node, this.startContainer, this.startOffset);\n node.appendChild(content);\n this.selectNode(node);\n },\n cloneRange: function () {\n assertRangeValid(this);\n var range = new Range(getRangeDocument(this));\n var i = rangeProperties.length,\n prop;\n while (i--) {\n prop = rangeProperties[i];\n range[prop] = this[prop];\n }\n return range;\n },\n toString: function () {\n assertRangeValid(this);\n var sc = this.startContainer;\n if (sc === this.endContainer && isCharacterDataNode(sc)) {\n return sc.nodeType == 3 || sc.nodeType == 4 ? sc.data.slice(this.startOffset, this.endOffset) : \"\";\n } else {\n var textParts = [],\n iterator = new RangeIterator(this, true);\n iterateSubtree(iterator, function (node) {\n // Accept only text or CDATA nodes, not comments\n if (node.nodeType == 3 || node.nodeType == 4) {\n textParts.push(node.data);\n }\n });\n iterator.detach();\n return textParts.join(\"\");\n }\n },\n // The methods below are all non-standard. The following batch were introduced by Mozilla but have since\n // been removed from Mozilla.\n\n compareNode: function (node) {\n assertRangeValid(this);\n var parent = node.parentNode;\n var nodeIndex = getNodeIndex(node);\n if (!parent) {\n throw new DOMException(\"NOT_FOUND_ERR\");\n }\n var startComparison = this.comparePoint(parent, nodeIndex),\n endComparison = this.comparePoint(parent, nodeIndex + 1);\n if (startComparison < 0) {\n // Node starts before\n return endComparison > 0 ? n_b_a : n_b;\n } else {\n return endComparison > 0 ? n_a : n_i;\n }\n },\n comparePoint: function (node, offset) {\n assertRangeValid(this);\n assertNode(node, \"HIERARCHY_REQUEST_ERR\");\n assertSameDocumentOrFragment(node, this.startContainer);\n if (comparePoints(node, offset, this.startContainer, this.startOffset) < 0) {\n return -1;\n } else if (comparePoints(node, offset, this.endContainer, this.endOffset) > 0) {\n return 1;\n }\n return 0;\n },\n createContextualFragment: createContextualFragment,\n toHtml: function () {\n return rangeToHtml(this);\n },\n // touchingIsIntersecting determines whether this method considers a node that borders a range intersects\n // with it (as in WebKit) or not (as in Gecko pre-1.9, and the default)\n intersectsNode: function (node, touchingIsIntersecting) {\n assertRangeValid(this);\n if (getRootContainer(node) != getRangeRoot(this)) {\n return false;\n }\n var parent = node.parentNode,\n offset = getNodeIndex(node);\n if (!parent) {\n return true;\n }\n var startComparison = comparePoints(parent, offset, this.endContainer, this.endOffset),\n endComparison = comparePoints(parent, offset + 1, this.startContainer, this.startOffset);\n return touchingIsIntersecting ? startComparison <= 0 && endComparison >= 0 : startComparison < 0 && endComparison > 0;\n },\n isPointInRange: function (node, offset) {\n assertRangeValid(this);\n assertNode(node, \"HIERARCHY_REQUEST_ERR\");\n assertSameDocumentOrFragment(node, this.startContainer);\n return comparePoints(node, offset, this.startContainer, this.startOffset) >= 0 && comparePoints(node, offset, this.endContainer, this.endOffset) <= 0;\n },\n // The methods below are non-standard and invented by me.\n\n // Sharing a boundary start-to-end or end-to-start does not count as intersection.\n intersectsRange: function (range) {\n return rangesIntersect(this, range, false);\n },\n // Sharing a boundary start-to-end or end-to-start does count as intersection.\n intersectsOrTouchesRange: function (range) {\n return rangesIntersect(this, range, true);\n },\n intersection: function (range) {\n if (this.intersectsRange(range)) {\n var startComparison = comparePoints(this.startContainer, this.startOffset, range.startContainer, range.startOffset),\n endComparison = comparePoints(this.endContainer, this.endOffset, range.endContainer, range.endOffset);\n var intersectionRange = this.cloneRange();\n if (startComparison == -1) {\n intersectionRange.setStart(range.startContainer, range.startOffset);\n }\n if (endComparison == 1) {\n intersectionRange.setEnd(range.endContainer, range.endOffset);\n }\n return intersectionRange;\n }\n return null;\n },\n union: function (range) {\n if (this.intersectsOrTouchesRange(range)) {\n var unionRange = this.cloneRange();\n if (comparePoints(range.startContainer, range.startOffset, this.startContainer, this.startOffset) == -1) {\n unionRange.setStart(range.startContainer, range.startOffset);\n }\n if (comparePoints(range.endContainer, range.endOffset, this.endContainer, this.endOffset) == 1) {\n unionRange.setEnd(range.endContainer, range.endOffset);\n }\n return unionRange;\n } else {\n throw new DOMException(\"Ranges do not intersect\");\n }\n },\n containsNode: function (node, allowPartial) {\n if (allowPartial) {\n return this.intersectsNode(node, false);\n } else {\n return this.compareNode(node) == n_i;\n }\n },\n containsNodeContents: function (node) {\n return this.comparePoint(node, 0) >= 0 && this.comparePoint(node, getNodeLength(node)) <= 0;\n },\n containsRange: function (range) {\n var intersection = this.intersection(range);\n return intersection !== null && range.equals(intersection);\n },\n containsNodeText: function (node) {\n var nodeRange = this.cloneRange();\n nodeRange.selectNode(node);\n var textNodes = nodeRange.getNodes([3]);\n if (textNodes.length > 0) {\n nodeRange.setStart(textNodes[0], 0);\n var lastTextNode = textNodes.pop();\n nodeRange.setEnd(lastTextNode, lastTextNode.length);\n return this.containsRange(nodeRange);\n } else {\n return this.containsNodeContents(node);\n }\n },\n getNodes: function (nodeTypes, filter) {\n assertRangeValid(this);\n return getNodesInRange(this, nodeTypes, filter);\n },\n getDocument: function () {\n return getRangeDocument(this);\n },\n collapseBefore: function (node) {\n this.setEndBefore(node);\n this.collapse(false);\n },\n collapseAfter: function (node) {\n this.setStartAfter(node);\n this.collapse(true);\n },\n getBookmark: function (containerNode) {\n var doc = getRangeDocument(this);\n var preSelectionRange = api.createRange(doc);\n containerNode = containerNode || dom.getBody(doc);\n preSelectionRange.selectNodeContents(containerNode);\n var range = this.intersection(preSelectionRange);\n var start = 0,\n end = 0;\n if (range) {\n preSelectionRange.setEnd(range.startContainer, range.startOffset);\n start = preSelectionRange.toString().length;\n end = start + range.toString().length;\n }\n return {\n start: start,\n end: end,\n containerNode: containerNode\n };\n },\n moveToBookmark: function (bookmark) {\n var containerNode = bookmark.containerNode;\n var charIndex = 0;\n this.setStart(containerNode, 0);\n this.collapse(true);\n var nodeStack = [containerNode],\n node,\n foundStart = false,\n stop = false;\n var nextCharIndex, i, childNodes;\n while (!stop && (node = nodeStack.pop())) {\n if (node.nodeType == 3) {\n nextCharIndex = charIndex + node.length;\n if (!foundStart && bookmark.start >= charIndex && bookmark.start <= nextCharIndex) {\n this.setStart(node, bookmark.start - charIndex);\n foundStart = true;\n }\n if (foundStart && bookmark.end >= charIndex && bookmark.end <= nextCharIndex) {\n this.setEnd(node, bookmark.end - charIndex);\n stop = true;\n }\n charIndex = nextCharIndex;\n } else {\n childNodes = node.childNodes;\n i = childNodes.length;\n while (i--) {\n nodeStack.push(childNodes[i]);\n }\n }\n }\n },\n getName: function () {\n return \"DomRange\";\n },\n equals: function (range) {\n return Range.rangesEqual(this, range);\n },\n isValid: function () {\n return isRangeValid(this);\n },\n inspect: function () {\n return inspect(this);\n },\n detach: function () {\n // In DOM4, detach() is now a no-op.\n }\n });\n function copyComparisonConstantsToObject(obj) {\n obj.START_TO_START = s2s;\n obj.START_TO_END = s2e;\n obj.END_TO_END = e2e;\n obj.END_TO_START = e2s;\n obj.NODE_BEFORE = n_b;\n obj.NODE_AFTER = n_a;\n obj.NODE_BEFORE_AND_AFTER = n_b_a;\n obj.NODE_INSIDE = n_i;\n }\n function copyComparisonConstants(constructor) {\n copyComparisonConstantsToObject(constructor);\n copyComparisonConstantsToObject(constructor.prototype);\n }\n function createRangeContentRemover(remover, boundaryUpdater) {\n return function () {\n assertRangeValid(this);\n var sc = this.startContainer,\n so = this.startOffset,\n root = this.commonAncestorContainer;\n var iterator = new RangeIterator(this, true);\n\n // Work out where to position the range after content removal\n var node, boundary;\n if (sc !== root) {\n node = getClosestAncestorIn(sc, root, true);\n boundary = getBoundaryAfterNode(node);\n sc = boundary.node;\n so = boundary.offset;\n }\n\n // Check none of the range is read-only\n iterateSubtree(iterator, assertNodeNotReadOnly);\n iterator.reset();\n\n // Remove the content\n var returnValue = remover(iterator);\n iterator.detach();\n\n // Move to the new position\n boundaryUpdater(this, sc, so, sc, so);\n return returnValue;\n };\n }\n function createPrototypeRange(constructor, boundaryUpdater) {\n function createBeforeAfterNodeSetter(isBefore, isStart) {\n return function (node) {\n assertValidNodeType(node, beforeAfterNodeTypes);\n assertValidNodeType(getRootContainer(node), rootContainerNodeTypes);\n var boundary = (isBefore ? getBoundaryBeforeNode : getBoundaryAfterNode)(node);\n (isStart ? setRangeStart : setRangeEnd)(this, boundary.node, boundary.offset);\n };\n }\n function setRangeStart(range, node, offset) {\n var ec = range.endContainer,\n eo = range.endOffset;\n if (node !== range.startContainer || offset !== range.startOffset) {\n // Check the root containers of the range and the new boundary, and also check whether the new boundary\n // is after the current end. In either case, collapse the range to the new position\n if (getRootContainer(node) != getRootContainer(ec) || comparePoints(node, offset, ec, eo) == 1) {\n ec = node;\n eo = offset;\n }\n boundaryUpdater(range, node, offset, ec, eo);\n }\n }\n function setRangeEnd(range, node, offset) {\n var sc = range.startContainer,\n so = range.startOffset;\n if (node !== range.endContainer || offset !== range.endOffset) {\n // Check the root containers of the range and the new boundary, and also check whether the new boundary\n // is after the current end. In either case, collapse the range to the new position\n if (getRootContainer(node) != getRootContainer(sc) || comparePoints(node, offset, sc, so) == -1) {\n sc = node;\n so = offset;\n }\n boundaryUpdater(range, sc, so, node, offset);\n }\n }\n\n // Set up inheritance\n var F = function () {};\n F.prototype = api.rangePrototype;\n constructor.prototype = new F();\n util.extend(constructor.prototype, {\n setStart: function (node, offset) {\n assertNoDocTypeNotationEntityAncestor(node, true);\n assertValidOffset(node, offset);\n setRangeStart(this, node, offset);\n },\n setEnd: function (node, offset) {\n assertNoDocTypeNotationEntityAncestor(node, true);\n assertValidOffset(node, offset);\n setRangeEnd(this, node, offset);\n },\n /**\n * Convenience method to set a range's start and end boundaries. Overloaded as follows:\n * - Two parameters (node, offset) creates a collapsed range at that position\n * - Three parameters (node, startOffset, endOffset) creates a range contained with node starting at\n * startOffset and ending at endOffset\n * - Four parameters (startNode, startOffset, endNode, endOffset) creates a range starting at startOffset in\n * startNode and ending at endOffset in endNode\n */\n setStartAndEnd: function () {\n var args = arguments;\n var sc = args[0],\n so = args[1],\n ec = sc,\n eo = so;\n switch (args.length) {\n case 3:\n eo = args[2];\n break;\n case 4:\n ec = args[2];\n eo = args[3];\n break;\n }\n assertNoDocTypeNotationEntityAncestor(sc, true);\n assertValidOffset(sc, so);\n assertNoDocTypeNotationEntityAncestor(ec, true);\n assertValidOffset(ec, eo);\n boundaryUpdater(this, sc, so, ec, eo);\n },\n setBoundary: function (node, offset, isStart) {\n this[\"set\" + (isStart ? \"Start\" : \"End\")](node, offset);\n },\n setStartBefore: createBeforeAfterNodeSetter(true, true),\n setStartAfter: createBeforeAfterNodeSetter(false, true),\n setEndBefore: createBeforeAfterNodeSetter(true, false),\n setEndAfter: createBeforeAfterNodeSetter(false, false),\n collapse: function (isStart) {\n assertRangeValid(this);\n if (isStart) {\n boundaryUpdater(this, this.startContainer, this.startOffset, this.startContainer, this.startOffset);\n } else {\n boundaryUpdater(this, this.endContainer, this.endOffset, this.endContainer, this.endOffset);\n }\n },\n selectNodeContents: function (node) {\n assertNoDocTypeNotationEntityAncestor(node, true);\n boundaryUpdater(this, node, 0, node, getNodeLength(node));\n },\n selectNode: function (node) {\n assertNoDocTypeNotationEntityAncestor(node, false);\n assertValidNodeType(node, beforeAfterNodeTypes);\n var start = getBoundaryBeforeNode(node),\n end = getBoundaryAfterNode(node);\n boundaryUpdater(this, start.node, start.offset, end.node, end.offset);\n },\n extractContents: createRangeContentRemover(extractSubtree, boundaryUpdater),\n deleteContents: createRangeContentRemover(deleteSubtree, boundaryUpdater),\n canSurroundContents: function () {\n assertRangeValid(this);\n assertNodeNotReadOnly(this.startContainer);\n assertNodeNotReadOnly(this.endContainer);\n\n // Check if the contents can be surrounded. Specifically, this means whether the range partially selects\n // no non-text nodes.\n var iterator = new RangeIterator(this, true);\n var boundariesInvalid = iterator._first && isNonTextPartiallySelected(iterator._first, this) || iterator._last && isNonTextPartiallySelected(iterator._last, this);\n iterator.detach();\n return !boundariesInvalid;\n },\n splitBoundaries: function () {\n splitRangeBoundaries(this);\n },\n splitBoundariesPreservingPositions: function (positionsToPreserve) {\n splitRangeBoundaries(this, positionsToPreserve);\n },\n normalizeBoundaries: function () {\n assertRangeValid(this);\n var sc = this.startContainer,\n so = this.startOffset,\n ec = this.endContainer,\n eo = this.endOffset;\n var mergeForward = function (node) {\n var sibling = node.nextSibling;\n if (sibling && sibling.nodeType == node.nodeType) {\n ec = node;\n eo = node.length;\n node.appendData(sibling.data);\n removeNode(sibling);\n }\n };\n var mergeBackward = function (node) {\n var sibling = node.previousSibling;\n if (sibling && sibling.nodeType == node.nodeType) {\n sc = node;\n var nodeLength = node.length;\n so = sibling.length;\n node.insertData(0, sibling.data);\n removeNode(sibling);\n if (sc == ec) {\n eo += so;\n ec = sc;\n } else if (ec == node.parentNode) {\n var nodeIndex = getNodeIndex(node);\n if (eo == nodeIndex) {\n ec = node;\n eo = nodeLength;\n } else if (eo > nodeIndex) {\n eo--;\n }\n }\n }\n };\n var normalizeStart = true;\n var sibling;\n if (isCharacterDataNode(ec)) {\n if (eo == ec.length) {\n mergeForward(ec);\n } else if (eo == 0) {\n sibling = ec.previousSibling;\n if (sibling && sibling.nodeType == ec.nodeType) {\n eo = sibling.length;\n if (sc == ec) {\n normalizeStart = false;\n }\n sibling.appendData(ec.data);\n removeNode(ec);\n ec = sibling;\n }\n }\n } else {\n if (eo > 0) {\n var endNode = ec.childNodes[eo - 1];\n if (endNode && isCharacterDataNode(endNode)) {\n mergeForward(endNode);\n }\n }\n normalizeStart = !this.collapsed;\n }\n if (normalizeStart) {\n if (isCharacterDataNode(sc)) {\n if (so == 0) {\n mergeBackward(sc);\n } else if (so == sc.length) {\n sibling = sc.nextSibling;\n if (sibling && sibling.nodeType == sc.nodeType) {\n if (ec == sibling) {\n ec = sc;\n eo += sc.length;\n }\n sc.appendData(sibling.data);\n removeNode(sibling);\n }\n }\n } else {\n if (so < sc.childNodes.length) {\n var startNode = sc.childNodes[so];\n if (startNode && isCharacterDataNode(startNode)) {\n mergeBackward(startNode);\n }\n }\n }\n } else {\n sc = ec;\n so = eo;\n }\n boundaryUpdater(this, sc, so, ec, eo);\n },\n collapseToPoint: function (node, offset) {\n assertNoDocTypeNotationEntityAncestor(node, true);\n assertValidOffset(node, offset);\n this.setStartAndEnd(node, offset);\n },\n parentElement: function () {\n assertRangeValid(this);\n var parentNode = this.commonAncestorContainer;\n return parentNode ? getElementAncestor(this.commonAncestorContainer, true) : null;\n }\n });\n copyComparisonConstants(constructor);\n }\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Updates commonAncestorContainer and collapsed after boundary change\n function updateCollapsedAndCommonAncestor(range) {\n range.collapsed = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n range.commonAncestorContainer = range.collapsed ? range.startContainer : dom.getCommonAncestor(range.startContainer, range.endContainer);\n }\n function updateBoundaries(range, startContainer, startOffset, endContainer, endOffset) {\n range.startContainer = startContainer;\n range.startOffset = startOffset;\n range.endContainer = endContainer;\n range.endOffset = endOffset;\n range.document = dom.getDocument(startContainer);\n updateCollapsedAndCommonAncestor(range);\n }\n function Range(doc) {\n updateBoundaries(this, doc, 0, doc, 0);\n }\n createPrototypeRange(Range, updateBoundaries);\n util.extend(Range, {\n rangeProperties: rangeProperties,\n RangeIterator: RangeIterator,\n copyComparisonConstants: copyComparisonConstants,\n createPrototypeRange: createPrototypeRange,\n inspect: inspect,\n toHtml: rangeToHtml,\n getRangeDocument: getRangeDocument,\n rangesEqual: function (r1, r2) {\n return r1.startContainer === r2.startContainer && r1.startOffset === r2.startOffset && r1.endContainer === r2.endContainer && r1.endOffset === r2.endOffset;\n }\n });\n api.DomRange = Range;\n });\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Wrappers for the browser's native DOM Range and/or TextRange implementation\n api.createCoreModule(\"WrappedRange\", [\"DomRange\"], function (api, module) {\n var WrappedRange, WrappedTextRange;\n var dom = api.dom;\n var util = api.util;\n var DomPosition = dom.DomPosition;\n var DomRange = api.DomRange;\n var getBody = dom.getBody;\n var getContentDocument = dom.getContentDocument;\n var isCharacterDataNode = dom.isCharacterDataNode;\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n if (api.features.implementsDomRange) {\n // This is a wrapper around the browser's native DOM Range. It has two aims:\n // - Provide workarounds for specific browser bugs\n // - provide convenient extensions, which are inherited from Rangy's DomRange\n\n (function () {\n var rangeProto;\n var rangeProperties = DomRange.rangeProperties;\n function updateRangeProperties(range) {\n var i = rangeProperties.length,\n prop;\n while (i--) {\n prop = rangeProperties[i];\n range[prop] = range.nativeRange[prop];\n }\n // Fix for broken collapsed property in IE 9.\n range.collapsed = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n }\n function updateNativeRange(range, startContainer, startOffset, endContainer, endOffset) {\n var startMoved = range.startContainer !== startContainer || range.startOffset != startOffset;\n var endMoved = range.endContainer !== endContainer || range.endOffset != endOffset;\n var nativeRangeDifferent = !range.equals(range.nativeRange);\n\n // Always set both boundaries for the benefit of IE9 (see issue 35)\n if (startMoved || endMoved || nativeRangeDifferent) {\n range.setEnd(endContainer, endOffset);\n range.setStart(startContainer, startOffset);\n }\n }\n var createBeforeAfterNodeSetter;\n WrappedRange = function (range) {\n if (!range) {\n throw module.createError(\"WrappedRange: Range must be specified\");\n }\n this.nativeRange = range;\n updateRangeProperties(this);\n };\n DomRange.createPrototypeRange(WrappedRange, updateNativeRange);\n rangeProto = WrappedRange.prototype;\n rangeProto.selectNode = function (node) {\n this.nativeRange.selectNode(node);\n updateRangeProperties(this);\n };\n rangeProto.cloneContents = function () {\n return this.nativeRange.cloneContents();\n };\n\n // Due to a long-standing Firefox bug that I have not been able to find a reliable way to detect,\n // insertNode() is never delegated to the native range.\n\n rangeProto.surroundContents = function (node) {\n this.nativeRange.surroundContents(node);\n updateRangeProperties(this);\n };\n rangeProto.collapse = function (isStart) {\n this.nativeRange.collapse(isStart);\n updateRangeProperties(this);\n };\n rangeProto.cloneRange = function () {\n return new WrappedRange(this.nativeRange.cloneRange());\n };\n rangeProto.refresh = function () {\n updateRangeProperties(this);\n };\n rangeProto.toString = function () {\n return this.nativeRange.toString();\n };\n\n // Create test range and node for feature detection\n\n var testTextNode = document.createTextNode(\"test\");\n getBody(document).appendChild(testTextNode);\n var range = document.createRange();\n\n /*--------------------------------------------------------------------------------------------------------*/\n\n // Test for Firefox 2 bug that prevents moving the start of a Range to a point after its current end and\n // correct for it\n\n range.setStart(testTextNode, 0);\n range.setEnd(testTextNode, 0);\n try {\n range.setStart(testTextNode, 1);\n rangeProto.setStart = function (node, offset) {\n this.nativeRange.setStart(node, offset);\n updateRangeProperties(this);\n };\n rangeProto.setEnd = function (node, offset) {\n this.nativeRange.setEnd(node, offset);\n updateRangeProperties(this);\n };\n createBeforeAfterNodeSetter = function (name) {\n return function (node) {\n this.nativeRange[name](node);\n updateRangeProperties(this);\n };\n };\n } catch (ex) {\n rangeProto.setStart = function (node, offset) {\n try {\n this.nativeRange.setStart(node, offset);\n } catch (ex) {\n this.nativeRange.setEnd(node, offset);\n this.nativeRange.setStart(node, offset);\n }\n updateRangeProperties(this);\n };\n rangeProto.setEnd = function (node, offset) {\n try {\n this.nativeRange.setEnd(node, offset);\n } catch (ex) {\n this.nativeRange.setStart(node, offset);\n this.nativeRange.setEnd(node, offset);\n }\n updateRangeProperties(this);\n };\n createBeforeAfterNodeSetter = function (name, oppositeName) {\n return function (node) {\n try {\n this.nativeRange[name](node);\n } catch (ex) {\n this.nativeRange[oppositeName](node);\n this.nativeRange[name](node);\n }\n updateRangeProperties(this);\n };\n };\n }\n rangeProto.setStartBefore = createBeforeAfterNodeSetter(\"setStartBefore\", \"setEndBefore\");\n rangeProto.setStartAfter = createBeforeAfterNodeSetter(\"setStartAfter\", \"setEndAfter\");\n rangeProto.setEndBefore = createBeforeAfterNodeSetter(\"setEndBefore\", \"setStartBefore\");\n rangeProto.setEndAfter = createBeforeAfterNodeSetter(\"setEndAfter\", \"setStartAfter\");\n\n /*--------------------------------------------------------------------------------------------------------*/\n\n // Always use DOM4-compliant selectNodeContents implementation: it's simpler and less code than testing\n // whether the native implementation can be trusted\n rangeProto.selectNodeContents = function (node) {\n this.setStartAndEnd(node, 0, dom.getNodeLength(node));\n };\n\n /*--------------------------------------------------------------------------------------------------------*/\n\n // Test for and correct WebKit bug that has the behaviour of compareBoundaryPoints round the wrong way for\n // constants START_TO_END and END_TO_START: https://bugs.webkit.org/show_bug.cgi?id=20738\n\n range.selectNodeContents(testTextNode);\n range.setEnd(testTextNode, 3);\n var range2 = document.createRange();\n range2.selectNodeContents(testTextNode);\n range2.setEnd(testTextNode, 4);\n range2.setStart(testTextNode, 2);\n if (range.compareBoundaryPoints(range.START_TO_END, range2) == -1 && range.compareBoundaryPoints(range.END_TO_START, range2) == 1) {\n // This is the wrong way round, so correct for it\n\n rangeProto.compareBoundaryPoints = function (type, range) {\n range = range.nativeRange || range;\n if (type == range.START_TO_END) {\n type = range.END_TO_START;\n } else if (type == range.END_TO_START) {\n type = range.START_TO_END;\n }\n return this.nativeRange.compareBoundaryPoints(type, range);\n };\n } else {\n rangeProto.compareBoundaryPoints = function (type, range) {\n return this.nativeRange.compareBoundaryPoints(type, range.nativeRange || range);\n };\n }\n\n /*--------------------------------------------------------------------------------------------------------*/\n\n // Test for IE deleteContents() and extractContents() bug and correct it. See issue 107.\n\n var el = document.createElement(\"div\");\n el.innerHTML = \"123\";\n var textNode = el.firstChild;\n var body = getBody(document);\n body.appendChild(el);\n range.setStart(textNode, 1);\n range.setEnd(textNode, 2);\n range.deleteContents();\n if (textNode.data == \"13\") {\n // Behaviour is correct per DOM4 Range so wrap the browser's implementation of deleteContents() and\n // extractContents()\n rangeProto.deleteContents = function () {\n this.nativeRange.deleteContents();\n updateRangeProperties(this);\n };\n rangeProto.extractContents = function () {\n var frag = this.nativeRange.extractContents();\n updateRangeProperties(this);\n return frag;\n };\n } else {}\n body.removeChild(el);\n body = null;\n\n /*--------------------------------------------------------------------------------------------------------*/\n\n // Test for existence of createContextualFragment and delegate to it if it exists\n if (util.isHostMethod(range, \"createContextualFragment\")) {\n rangeProto.createContextualFragment = function (fragmentStr) {\n return this.nativeRange.createContextualFragment(fragmentStr);\n };\n }\n\n /*--------------------------------------------------------------------------------------------------------*/\n\n // Clean up\n getBody(document).removeChild(testTextNode);\n rangeProto.getName = function () {\n return \"WrappedRange\";\n };\n api.WrappedRange = WrappedRange;\n api.createNativeRange = function (doc) {\n doc = getContentDocument(doc, module, \"createNativeRange\");\n return doc.createRange();\n };\n })();\n }\n if (api.features.implementsTextRange) {\n /*\n This is a workaround for a bug where IE returns the wrong container element from the TextRange's parentElement()\n method. For example, in the following (where pipes denote the selection boundaries):\n <ul id=\"ul\"><li id=\"a\">| a </li><li id=\"b\"> b |</li></ul>\n var range = document.selection.createRange();\n alert(range.parentElement().id); // Should alert \"ul\" but alerts \"b\"\n This method returns the common ancestor node of the following:\n - the parentElement() of the textRange\n - the parentElement() of the textRange after calling collapse(true)\n - the parentElement() of the textRange after calling collapse(false)\n */\n var getTextRangeContainerElement = function (textRange) {\n var parentEl = textRange.parentElement();\n var range = textRange.duplicate();\n range.collapse(true);\n var startEl = range.parentElement();\n range = textRange.duplicate();\n range.collapse(false);\n var endEl = range.parentElement();\n var startEndContainer = startEl == endEl ? startEl : dom.getCommonAncestor(startEl, endEl);\n return startEndContainer == parentEl ? startEndContainer : dom.getCommonAncestor(parentEl, startEndContainer);\n };\n var textRangeIsCollapsed = function (textRange) {\n return textRange.compareEndPoints(\"StartToEnd\", textRange) == 0;\n };\n\n // Gets the boundary of a TextRange expressed as a node and an offset within that node. This function started\n // out as an improved version of code found in Tim Cameron Ryan's IERange (http://code.google.com/p/ierange/)\n // but has grown, fixing problems with line breaks in preformatted text, adding workaround for IE TextRange\n // bugs, handling for inputs and images, plus optimizations.\n var getTextRangeBoundaryPosition = function (textRange, wholeRangeContainerElement, isStart, isCollapsed, startInfo) {\n var workingRange = textRange.duplicate();\n workingRange.collapse(isStart);\n var containerElement = workingRange.parentElement();\n\n // Sometimes collapsing a TextRange that's at the start of a text node can move it into the previous node, so\n // check for that\n if (!dom.isOrIsAncestorOf(wholeRangeContainerElement, containerElement)) {\n containerElement = wholeRangeContainerElement;\n }\n\n // Deal with nodes that cannot \"contain rich HTML markup\". In practice, this means form inputs, images and\n // similar. See http://msdn.microsoft.com/en-us/library/aa703950%28VS.85%29.aspx\n if (!containerElement.canHaveHTML) {\n var pos = new DomPosition(containerElement.parentNode, dom.getNodeIndex(containerElement));\n return {\n boundaryPosition: pos,\n nodeInfo: {\n nodeIndex: pos.offset,\n containerElement: pos.node\n }\n };\n }\n var workingNode = dom.getDocument(containerElement).createElement(\"span\");\n\n // Workaround for HTML5 Shiv's insane violation of document.createElement(). See Rangy issue 104 and HTML5\n // Shiv issue 64: https://github.com/aFarkas/html5shiv/issues/64\n if (workingNode.parentNode) {\n dom.removeNode(workingNode);\n }\n var comparison,\n workingComparisonType = isStart ? \"StartToStart\" : \"StartToEnd\";\n var previousNode, nextNode, boundaryPosition, boundaryNode;\n var start = startInfo && startInfo.containerElement == containerElement ? startInfo.nodeIndex : 0;\n var childNodeCount = containerElement.childNodes.length;\n var end = childNodeCount;\n\n // Check end first. Code within the loop assumes that the endth child node of the container is definitely\n // after the range boundary.\n var nodeIndex = end;\n while (true) {\n if (nodeIndex == childNodeCount) {\n containerElement.appendChild(workingNode);\n } else {\n containerElement.insertBefore(workingNode, containerElement.childNodes[nodeIndex]);\n }\n workingRange.moveToElementText(workingNode);\n comparison = workingRange.compareEndPoints(workingComparisonType, textRange);\n if (comparison == 0 || start == end) {\n break;\n } else if (comparison == -1) {\n if (end == start + 1) {\n // We know the endth child node is after the range boundary, so we must be done.\n break;\n } else {\n start = nodeIndex;\n }\n } else {\n end = end == start + 1 ? start : nodeIndex;\n }\n nodeIndex = Math.floor((start + end) / 2);\n containerElement.removeChild(workingNode);\n }\n\n // We've now reached or gone past the boundary of the text range we're interested in\n // so have identified the node we want\n boundaryNode = workingNode.nextSibling;\n if (comparison == -1 && boundaryNode && isCharacterDataNode(boundaryNode)) {\n // This is a character data node (text, comment, cdata). The working range is collapsed at the start of\n // the node containing the text range's boundary, so we move the end of the working range to the\n // boundary point and measure the length of its text to get the boundary's offset within the node.\n workingRange.setEndPoint(isStart ? \"EndToStart\" : \"EndToEnd\", textRange);\n var offset;\n if (/[\\r\\n]/.test(boundaryNode.data)) {\n /*\n For the particular case of a boundary within a text node containing rendered line breaks (within a\n <pre> element, for example), we need a slightly complicated approach to get the boundary's offset in\n IE. The facts:\n - Each line break is represented as \\r in the text node's data/nodeValue properties\n - Each line break is represented as \\r\\n in the TextRange's 'text' property\n - The 'text' property of the TextRange does not contain trailing line breaks\n To get round the problem presented by the final fact above, we can use the fact that TextRange's\n moveStart() and moveEnd() methods return the actual number of characters moved, which is not\n necessarily the same as the number of characters it was instructed to move. The simplest approach is\n to use this to store the characters moved when moving both the start and end of the range to the\n start of the document body and subtracting the start offset from the end offset (the\n \"move-negative-gazillion\" method). However, this is extremely slow when the document is large and\n the range is near the end of it. Clearly doing the mirror image (i.e. moving the range boundaries to\n the end of the document) has the same problem.\n Another approach that works is to use moveStart() to move the start boundary of the range up to the\n end boundary one character at a time and incrementing a counter with the value returned by the\n moveStart() call. However, the check for whether the start boundary has reached the end boundary is\n expensive, so this method is slow (although unlike \"move-negative-gazillion\" is largely unaffected\n by the location of the range within the document).\n The approach used below is a hybrid of the two methods above. It uses the fact that a string\n containing the TextRange's 'text' property with each \\r\\n converted to a single \\r character cannot\n be longer than the text of the TextRange, so the start of the range is moved that length initially\n and then a character at a time to make up for any trailing line breaks not contained in the 'text'\n property. This has good performance in most situations compared to the previous two methods.\n */\n var tempRange = workingRange.duplicate();\n var rangeLength = tempRange.text.replace(/\\r\\n/g, \"\\r\").length;\n offset = tempRange.moveStart(\"character\", rangeLength);\n while ((comparison = tempRange.compareEndPoints(\"StartToEnd\", tempRange)) == -1) {\n offset++;\n tempRange.moveStart(\"character\", 1);\n }\n } else {\n offset = workingRange.text.length;\n }\n boundaryPosition = new DomPosition(boundaryNode, offset);\n } else {\n // If the boundary immediately follows a character data node and this is the end boundary, we should favour\n // a position within that, and likewise for a start boundary preceding a character data node\n previousNode = (isCollapsed || !isStart) && workingNode.previousSibling;\n nextNode = (isCollapsed || isStart) && workingNode.nextSibling;\n if (nextNode && isCharacterDataNode(nextNode)) {\n boundaryPosition = new DomPosition(nextNode, 0);\n } else if (previousNode && isCharacterDataNode(previousNode)) {\n boundaryPosition = new DomPosition(previousNode, previousNode.data.length);\n } else {\n boundaryPosition = new DomPosition(containerElement, dom.getNodeIndex(workingNode));\n }\n }\n\n // Clean up\n dom.removeNode(workingNode);\n return {\n boundaryPosition: boundaryPosition,\n nodeInfo: {\n nodeIndex: nodeIndex,\n containerElement: containerElement\n }\n };\n };\n\n // Returns a TextRange representing the boundary of a TextRange expressed as a node and an offset within that\n // node. This function started out as an optimized version of code found in Tim Cameron Ryan's IERange\n // (http://code.google.com/p/ierange/)\n var createBoundaryTextRange = function (boundaryPosition, isStart) {\n var boundaryNode,\n boundaryParent,\n boundaryOffset = boundaryPosition.offset;\n var doc = dom.getDocument(boundaryPosition.node);\n var workingNode,\n childNodes,\n workingRange = getBody(doc).createTextRange();\n var nodeIsDataNode = isCharacterDataNode(boundaryPosition.node);\n if (nodeIsDataNode) {\n boundaryNode = boundaryPosition.node;\n boundaryParent = boundaryNode.parentNode;\n } else {\n childNodes = boundaryPosition.node.childNodes;\n boundaryNode = boundaryOffset < childNodes.length ? childNodes[boundaryOffset] : null;\n boundaryParent = boundaryPosition.node;\n }\n\n // Position the range immediately before the node containing the boundary\n workingNode = doc.createElement(\"span\");\n\n // Making the working element non-empty element persuades IE to consider the TextRange boundary to be within\n // the element rather than immediately before or after it\n workingNode.innerHTML = \"&#feff;\";\n\n // insertBefore is supposed to work like appendChild if the second parameter is null. However, a bug report\n // for IERange suggests that it can crash the browser: http://code.google.com/p/ierange/issues/detail?id=12\n if (boundaryNode) {\n boundaryParent.insertBefore(workingNode, boundaryNode);\n } else {\n boundaryParent.appendChild(workingNode);\n }\n workingRange.moveToElementText(workingNode);\n workingRange.collapse(!isStart);\n\n // Clean up\n boundaryParent.removeChild(workingNode);\n\n // Move the working range to the text offset, if required\n if (nodeIsDataNode) {\n workingRange[isStart ? \"moveStart\" : \"moveEnd\"](\"character\", boundaryOffset);\n }\n return workingRange;\n };\n\n /*------------------------------------------------------------------------------------------------------------*/\n\n // This is a wrapper around a TextRange, providing full DOM Range functionality using rangy's DomRange as a\n // prototype\n\n WrappedTextRange = function (textRange) {\n this.textRange = textRange;\n this.refresh();\n };\n WrappedTextRange.prototype = new DomRange(document);\n WrappedTextRange.prototype.refresh = function () {\n var start, end, startBoundary;\n\n // TextRange's parentElement() method cannot be trusted. getTextRangeContainerElement() works around that.\n var rangeContainerElement = getTextRangeContainerElement(this.textRange);\n if (textRangeIsCollapsed(this.textRange)) {\n end = start = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, true).boundaryPosition;\n } else {\n startBoundary = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, true, false);\n start = startBoundary.boundaryPosition;\n\n // An optimization used here is that if the start and end boundaries have the same parent element, the\n // search scope for the end boundary can be limited to exclude the portion of the element that precedes\n // the start boundary\n end = getTextRangeBoundaryPosition(this.textRange, rangeContainerElement, false, false, startBoundary.nodeInfo).boundaryPosition;\n }\n this.setStart(start.node, start.offset);\n this.setEnd(end.node, end.offset);\n };\n WrappedTextRange.prototype.getName = function () {\n return \"WrappedTextRange\";\n };\n DomRange.copyComparisonConstants(WrappedTextRange);\n var rangeToTextRange = function (range) {\n if (range.collapsed) {\n return createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);\n } else {\n var startRange = createBoundaryTextRange(new DomPosition(range.startContainer, range.startOffset), true);\n var endRange = createBoundaryTextRange(new DomPosition(range.endContainer, range.endOffset), false);\n var textRange = getBody(DomRange.getRangeDocument(range)).createTextRange();\n textRange.setEndPoint(\"StartToStart\", startRange);\n textRange.setEndPoint(\"EndToEnd\", endRange);\n return textRange;\n }\n };\n WrappedTextRange.rangeToTextRange = rangeToTextRange;\n WrappedTextRange.prototype.toTextRange = function () {\n return rangeToTextRange(this);\n };\n api.WrappedTextRange = WrappedTextRange;\n\n // IE 9 and above have both implementations and Rangy makes both available. The next few lines sets which\n // implementation to use by default.\n if (!api.features.implementsDomRange || api.config.preferTextRange) {\n // Add WrappedTextRange as the Range property of the global object to allow expression like Range.END_TO_END to work\n var globalObj = function (f) {\n return f(\"return this;\")();\n }(Function);\n if (typeof globalObj.Range == \"undefined\") {\n globalObj.Range = WrappedTextRange;\n }\n api.createNativeRange = function (doc) {\n doc = getContentDocument(doc, module, \"createNativeRange\");\n return getBody(doc).createTextRange();\n };\n api.WrappedRange = WrappedTextRange;\n }\n }\n api.createRange = function (doc) {\n doc = getContentDocument(doc, module, \"createRange\");\n return new api.WrappedRange(api.createNativeRange(doc));\n };\n api.createRangyRange = function (doc) {\n doc = getContentDocument(doc, module, \"createRangyRange\");\n return new DomRange(doc);\n };\n util.createAliasForDeprecatedMethod(api, \"createIframeRange\", \"createRange\");\n util.createAliasForDeprecatedMethod(api, \"createIframeRangyRange\", \"createRangyRange\");\n api.addShimListener(function (win) {\n var doc = win.document;\n if (typeof doc.createRange == \"undefined\") {\n doc.createRange = function () {\n return api.createRange(doc);\n };\n }\n doc = win = null;\n });\n });\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // This module creates a selection object wrapper that conforms as closely as possible to the Selection specification\n // in the W3C Selection API spec (https://www.w3.org/TR/selection-api)\n api.createCoreModule(\"WrappedSelection\", [\"DomRange\", \"WrappedRange\"], function (api, module) {\n api.config.checkSelectionRanges = true;\n var BOOLEAN = \"boolean\";\n var NUMBER = \"number\";\n var dom = api.dom;\n var util = api.util;\n var isHostMethod = util.isHostMethod;\n var DomRange = api.DomRange;\n var WrappedRange = api.WrappedRange;\n var DOMException = api.DOMException;\n var DomPosition = dom.DomPosition;\n var getNativeSelection;\n var selectionIsCollapsed;\n var features = api.features;\n var CONTROL = \"Control\";\n var getDocument = dom.getDocument;\n var getBody = dom.getBody;\n var rangesEqual = DomRange.rangesEqual;\n\n // Utility function to support direction parameters in the API that may be a string (\"backward\", \"backwards\",\n // \"forward\" or \"forwards\") or a Boolean (true for backwards).\n function isDirectionBackward(dir) {\n return typeof dir == \"string\" ? /^backward(s)?$/i.test(dir) : !!dir;\n }\n function getWindow(win, methodName) {\n if (!win) {\n return window;\n } else if (dom.isWindow(win)) {\n return win;\n } else if (win instanceof WrappedSelection) {\n return win.win;\n } else {\n var doc = dom.getContentDocument(win, module, methodName);\n return dom.getWindow(doc);\n }\n }\n function getWinSelection(winParam) {\n return getWindow(winParam, \"getWinSelection\").getSelection();\n }\n function getDocSelection(winParam) {\n return getWindow(winParam, \"getDocSelection\").document.selection;\n }\n function winSelectionIsBackward(sel) {\n var backward = false;\n if (sel.anchorNode) {\n backward = dom.comparePoints(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset) == 1;\n }\n return backward;\n }\n\n // Test for the Range/TextRange and Selection features required\n // Test for ability to retrieve selection\n var implementsWinGetSelection = isHostMethod(window, \"getSelection\"),\n implementsDocSelection = util.isHostObject(document, \"selection\");\n features.implementsWinGetSelection = implementsWinGetSelection;\n features.implementsDocSelection = implementsDocSelection;\n var useDocumentSelection = implementsDocSelection && (!implementsWinGetSelection || api.config.preferTextRange);\n if (useDocumentSelection) {\n getNativeSelection = getDocSelection;\n api.isSelectionValid = function (winParam) {\n var doc = getWindow(winParam, \"isSelectionValid\").document,\n nativeSel = doc.selection;\n\n // Check whether the selection TextRange is actually contained within the correct document\n return nativeSel.type != \"None\" || getDocument(nativeSel.createRange().parentElement()) == doc;\n };\n } else if (implementsWinGetSelection) {\n getNativeSelection = getWinSelection;\n api.isSelectionValid = function () {\n return true;\n };\n } else {\n module.fail(\"Neither document.selection or window.getSelection() detected.\");\n return false;\n }\n api.getNativeSelection = getNativeSelection;\n var testSelection = getNativeSelection();\n\n // In Firefox, the selection is null in an iframe with display: none. See issue #138.\n if (!testSelection) {\n module.fail(\"Native selection was null (possibly issue 138?)\");\n return false;\n }\n var testRange = api.createNativeRange(document);\n var body = getBody(document);\n\n // Obtaining a range from a selection\n var selectionHasAnchorAndFocus = util.areHostProperties(testSelection, [\"anchorNode\", \"focusNode\", \"anchorOffset\", \"focusOffset\"]);\n features.selectionHasAnchorAndFocus = selectionHasAnchorAndFocus;\n\n // Test for existence of native selection extend() method\n var selectionHasExtend = isHostMethod(testSelection, \"extend\");\n features.selectionHasExtend = selectionHasExtend;\n\n // Test for existence of native selection setBaseAndExtent() method\n var selectionHasSetBaseAndExtent = isHostMethod(testSelection, \"setBaseAndExtent\");\n features.selectionHasSetBaseAndExtent = selectionHasSetBaseAndExtent;\n\n // Test if rangeCount exists\n var selectionHasRangeCount = typeof testSelection.rangeCount == NUMBER;\n features.selectionHasRangeCount = selectionHasRangeCount;\n var selectionSupportsMultipleRanges = false;\n var collapsedNonEditableSelectionsSupported = true;\n var addRangeBackwardToNative = selectionHasExtend ? function (nativeSelection, range) {\n var doc = DomRange.getRangeDocument(range);\n var endRange = api.createRange(doc);\n endRange.collapseToPoint(range.endContainer, range.endOffset);\n nativeSelection.addRange(getNativeRange(endRange));\n nativeSelection.extend(range.startContainer, range.startOffset);\n } : null;\n if (util.areHostMethods(testSelection, [\"addRange\", \"getRangeAt\", \"removeAllRanges\"]) && typeof testSelection.rangeCount == NUMBER && features.implementsDomRange) {\n (function () {\n // Previously an iframe was used but this caused problems in some circumstances in IE, so tests are\n // performed on the current document's selection. See issue 109.\n\n // Note also that if a selection previously existed, it is wiped and later restored by these tests. This\n // will result in the selection direction being reversed if the original selection was backwards and the\n // browser does not support setting backwards selections (Internet Explorer, I'm looking at you).\n var sel = window.getSelection();\n if (sel) {\n // Store the current selection\n var originalSelectionRangeCount = sel.rangeCount;\n var selectionHasMultipleRanges = originalSelectionRangeCount > 1;\n var originalSelectionRanges = [];\n var originalSelectionBackward = winSelectionIsBackward(sel);\n for (var i = 0; i < originalSelectionRangeCount; ++i) {\n originalSelectionRanges[i] = sel.getRangeAt(i);\n }\n\n // Create some test elements\n var testEl = dom.createTestElement(document, \"\", false);\n var textNode = testEl.appendChild(document.createTextNode(\"\\u00a0\\u00a0\\u00a0\"));\n\n // Test whether the native selection will allow a collapsed selection within a non-editable element\n var r1 = document.createRange();\n r1.setStart(textNode, 1);\n r1.collapse(true);\n sel.removeAllRanges();\n sel.addRange(r1);\n collapsedNonEditableSelectionsSupported = sel.rangeCount == 1;\n sel.removeAllRanges();\n\n // Test whether the native selection is capable of supporting multiple ranges.\n if (!selectionHasMultipleRanges) {\n // Doing the original feature test here in Chrome 36 (and presumably later versions) prints a\n // console error of \"Discontiguous selection is not supported.\" that cannot be suppressed. There's\n // nothing we can do about this while retaining the feature test so we have to resort to a browser\n // sniff. I'm not happy about it. See\n // https://code.google.com/p/chromium/issues/detail?id=399791\n var chromeMatch = window.navigator.appVersion.match(/Chrome\\/(.*?) /);\n if (chromeMatch && parseInt(chromeMatch[1]) >= 36) {\n selectionSupportsMultipleRanges = false;\n } else {\n var r2 = r1.cloneRange();\n r1.setStart(textNode, 0);\n r2.setEnd(textNode, 3);\n r2.setStart(textNode, 2);\n sel.addRange(r1);\n sel.addRange(r2);\n selectionSupportsMultipleRanges = sel.rangeCount == 2;\n }\n }\n\n // Clean up\n dom.removeNode(testEl);\n sel.removeAllRanges();\n for (i = 0; i < originalSelectionRangeCount; ++i) {\n if (i == 0 && originalSelectionBackward) {\n if (addRangeBackwardToNative) {\n addRangeBackwardToNative(sel, originalSelectionRanges[i]);\n } else {\n api.warn(\"Rangy initialization: original selection was backwards but selection has been restored forwards because the browser does not support Selection.extend\");\n sel.addRange(originalSelectionRanges[i]);\n }\n } else {\n sel.addRange(originalSelectionRanges[i]);\n }\n }\n }\n })();\n }\n features.selectionSupportsMultipleRanges = selectionSupportsMultipleRanges;\n features.collapsedNonEditableSelectionsSupported = collapsedNonEditableSelectionsSupported;\n\n // ControlRanges\n var implementsControlRange = false,\n testControlRange;\n if (body && isHostMethod(body, \"createControlRange\")) {\n testControlRange = body.createControlRange();\n if (util.areHostProperties(testControlRange, [\"item\", \"add\"])) {\n implementsControlRange = true;\n }\n }\n features.implementsControlRange = implementsControlRange;\n\n // Selection collapsedness\n if (selectionHasAnchorAndFocus) {\n selectionIsCollapsed = function (sel) {\n return sel.anchorNode === sel.focusNode && sel.anchorOffset === sel.focusOffset;\n };\n } else {\n selectionIsCollapsed = function (sel) {\n return sel.rangeCount ? sel.getRangeAt(sel.rangeCount - 1).collapsed : false;\n };\n }\n function updateAnchorAndFocusFromRange(sel, range, backward) {\n var anchorPrefix = backward ? \"end\" : \"start\",\n focusPrefix = backward ? \"start\" : \"end\";\n sel.anchorNode = range[anchorPrefix + \"Container\"];\n sel.anchorOffset = range[anchorPrefix + \"Offset\"];\n sel.focusNode = range[focusPrefix + \"Container\"];\n sel.focusOffset = range[focusPrefix + \"Offset\"];\n }\n function updateAnchorAndFocusFromNativeSelection(sel) {\n var nativeSel = sel.nativeSelection;\n sel.anchorNode = nativeSel.anchorNode;\n sel.anchorOffset = nativeSel.anchorOffset;\n sel.focusNode = nativeSel.focusNode;\n sel.focusOffset = nativeSel.focusOffset;\n }\n function updateEmptySelection(sel) {\n sel.anchorNode = sel.focusNode = null;\n sel.anchorOffset = sel.focusOffset = 0;\n sel.rangeCount = 0;\n sel.isCollapsed = true;\n sel._ranges.length = 0;\n updateType(sel);\n }\n function updateType(sel) {\n sel.type = sel.rangeCount == 0 ? \"None\" : selectionIsCollapsed(sel) ? \"Caret\" : \"Range\";\n }\n function getNativeRange(range) {\n var nativeRange;\n if (range instanceof DomRange) {\n nativeRange = api.createNativeRange(range.getDocument());\n nativeRange.setEnd(range.endContainer, range.endOffset);\n nativeRange.setStart(range.startContainer, range.startOffset);\n } else if (range instanceof WrappedRange) {\n nativeRange = range.nativeRange;\n } else if (features.implementsDomRange && range instanceof dom.getWindow(range.startContainer).Range) {\n nativeRange = range;\n }\n return nativeRange;\n }\n function rangeContainsSingleElement(rangeNodes) {\n if (!rangeNodes.length || rangeNodes[0].nodeType != 1) {\n return false;\n }\n for (var i = 1, len = rangeNodes.length; i < len; ++i) {\n if (!dom.isAncestorOf(rangeNodes[0], rangeNodes[i])) {\n return false;\n }\n }\n return true;\n }\n function getSingleElementFromRange(range) {\n var nodes = range.getNodes();\n if (!rangeContainsSingleElement(nodes)) {\n throw module.createError(\"getSingleElementFromRange: range \" + range.inspect() + \" did not consist of a single element\");\n }\n return nodes[0];\n }\n\n // Simple, quick test which only needs to distinguish between a TextRange and a ControlRange\n function isTextRange(range) {\n return !!range && typeof range.text != \"undefined\";\n }\n function updateFromTextRange(sel, range) {\n // Create a Range from the selected TextRange\n var wrappedRange = new WrappedRange(range);\n sel._ranges = [wrappedRange];\n updateAnchorAndFocusFromRange(sel, wrappedRange, false);\n sel.rangeCount = 1;\n sel.isCollapsed = wrappedRange.collapsed;\n updateType(sel);\n }\n function updateControlSelection(sel) {\n // Update the wrapped selection based on what's now in the native selection\n sel._ranges.length = 0;\n if (sel.docSelection.type == \"None\") {\n updateEmptySelection(sel);\n } else {\n var controlRange = sel.docSelection.createRange();\n if (isTextRange(controlRange)) {\n // This case (where the selection type is \"Control\" and calling createRange() on the selection returns\n // a TextRange) can happen in IE 9. It happens, for example, when all elements in the selected\n // ControlRange have been removed from the ControlRange and removed from the document.\n updateFromTextRange(sel, controlRange);\n } else {\n sel.rangeCount = controlRange.length;\n var range,\n doc = getDocument(controlRange.item(0));\n for (var i = 0; i < sel.rangeCount; ++i) {\n range = api.createRange(doc);\n range.selectNode(controlRange.item(i));\n sel._ranges.push(range);\n }\n sel.isCollapsed = sel.rangeCount == 1 && sel._ranges[0].collapsed;\n updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], false);\n updateType(sel);\n }\n }\n }\n function addRangeToControlSelection(sel, range) {\n var controlRange = sel.docSelection.createRange();\n var rangeElement = getSingleElementFromRange(range);\n\n // Create a new ControlRange containing all the elements in the selected ControlRange plus the element\n // contained by the supplied range\n var doc = getDocument(controlRange.item(0));\n var newControlRange = getBody(doc).createControlRange();\n for (var i = 0, len = controlRange.length; i < len; ++i) {\n newControlRange.add(controlRange.item(i));\n }\n try {\n newControlRange.add(rangeElement);\n } catch (ex) {\n throw module.createError(\"addRange(): Element within the specified Range could not be added to control selection (does it have layout?)\");\n }\n newControlRange.select();\n\n // Update the wrapped selection based on what's now in the native selection\n updateControlSelection(sel);\n }\n var getSelectionRangeAt;\n if (isHostMethod(testSelection, \"getRangeAt\")) {\n // try/catch is present because getRangeAt() must have thrown an error in some browser and some situation.\n // Unfortunately, I didn't write a comment about the specifics and am now scared to take it out. Let that be a\n // lesson to us all, especially me.\n getSelectionRangeAt = function (sel, index) {\n try {\n return sel.getRangeAt(index);\n } catch (ex) {\n return null;\n }\n };\n } else if (selectionHasAnchorAndFocus) {\n getSelectionRangeAt = function (sel) {\n var doc = getDocument(sel.anchorNode);\n var range = api.createRange(doc);\n range.setStartAndEnd(sel.anchorNode, sel.anchorOffset, sel.focusNode, sel.focusOffset);\n\n // Handle the case when the selection was selected backwards (from the end to the start in the\n // document)\n if (range.collapsed !== this.isCollapsed) {\n range.setStartAndEnd(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset);\n }\n return range;\n };\n }\n function WrappedSelection(selection, docSelection, win) {\n this.nativeSelection = selection;\n this.docSelection = docSelection;\n this._ranges = [];\n this.win = win;\n this.refresh();\n }\n WrappedSelection.prototype = api.selectionPrototype;\n function deleteProperties(sel) {\n sel.win = sel.anchorNode = sel.focusNode = sel._ranges = null;\n sel.rangeCount = sel.anchorOffset = sel.focusOffset = 0;\n sel.detached = true;\n updateType(sel);\n }\n var cachedRangySelections = [];\n function actOnCachedSelection(win, action) {\n var i = cachedRangySelections.length,\n cached,\n sel;\n while (i--) {\n cached = cachedRangySelections[i];\n sel = cached.selection;\n if (action == \"deleteAll\") {\n deleteProperties(sel);\n } else if (cached.win == win) {\n if (action == \"delete\") {\n cachedRangySelections.splice(i, 1);\n return true;\n } else {\n return sel;\n }\n }\n }\n if (action == \"deleteAll\") {\n cachedRangySelections.length = 0;\n }\n return null;\n }\n var getSelection = function (win) {\n // Check if the parameter is a Rangy Selection object\n if (win && win instanceof WrappedSelection) {\n win.refresh();\n return win;\n }\n win = getWindow(win, \"getNativeSelection\");\n var sel = actOnCachedSelection(win);\n var nativeSel = getNativeSelection(win),\n docSel = implementsDocSelection ? getDocSelection(win) : null;\n if (sel) {\n sel.nativeSelection = nativeSel;\n sel.docSelection = docSel;\n sel.refresh();\n } else {\n sel = new WrappedSelection(nativeSel, docSel, win);\n cachedRangySelections.push({\n win: win,\n selection: sel\n });\n }\n return sel;\n };\n api.getSelection = getSelection;\n util.createAliasForDeprecatedMethod(api, \"getIframeSelection\", \"getSelection\");\n var selProto = WrappedSelection.prototype;\n function createControlSelection(sel, ranges) {\n // Ensure that the selection becomes of type \"Control\"\n var doc = getDocument(ranges[0].startContainer);\n var controlRange = getBody(doc).createControlRange();\n for (var i = 0, el, len = ranges.length; i < len; ++i) {\n el = getSingleElementFromRange(ranges[i]);\n try {\n controlRange.add(el);\n } catch (ex) {\n throw module.createError(\"setRanges(): Element within one of the specified Ranges could not be added to control selection (does it have layout?)\");\n }\n }\n controlRange.select();\n\n // Update the wrapped selection based on what's now in the native selection\n updateControlSelection(sel);\n }\n\n // Selecting a range\n if (!useDocumentSelection && selectionHasAnchorAndFocus && util.areHostMethods(testSelection, [\"removeAllRanges\", \"addRange\"])) {\n selProto.removeAllRanges = function () {\n this.nativeSelection.removeAllRanges();\n updateEmptySelection(this);\n };\n var addRangeBackward = function (sel, range) {\n addRangeBackwardToNative(sel.nativeSelection, range);\n sel.refresh();\n };\n if (selectionHasRangeCount) {\n selProto.addRange = function (range, direction) {\n if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {\n addRangeToControlSelection(this, range);\n } else {\n if (isDirectionBackward(direction) && selectionHasExtend) {\n addRangeBackward(this, range);\n } else {\n var previousRangeCount;\n if (selectionSupportsMultipleRanges) {\n previousRangeCount = this.rangeCount;\n } else {\n this.removeAllRanges();\n previousRangeCount = 0;\n }\n // Clone the native range so that changing the selected range does not affect the selection.\n // This is contrary to the spec but is the only way to achieve consistency between browsers. See\n // issue 80.\n var clonedNativeRange = getNativeRange(range).cloneRange();\n try {\n this.nativeSelection.addRange(clonedNativeRange);\n } catch (ex) {}\n\n // Check whether adding the range was successful\n this.rangeCount = this.nativeSelection.rangeCount;\n if (this.rangeCount == previousRangeCount + 1) {\n // The range was added successfully\n\n // Check whether the range that we added to the selection is reflected in the last range extracted from\n // the selection\n if (api.config.checkSelectionRanges) {\n var nativeRange = getSelectionRangeAt(this.nativeSelection, this.rangeCount - 1);\n if (nativeRange && !rangesEqual(nativeRange, range)) {\n // Happens in WebKit with, for example, a selection placed at the start of a text node\n range = new WrappedRange(nativeRange);\n }\n }\n this._ranges[this.rangeCount - 1] = range;\n updateAnchorAndFocusFromRange(this, range, selectionIsBackward(this.nativeSelection));\n this.isCollapsed = selectionIsCollapsed(this);\n updateType(this);\n } else {\n // The range was not added successfully. The simplest thing is to refresh\n this.refresh();\n }\n }\n }\n };\n } else {\n selProto.addRange = function (range, direction) {\n if (isDirectionBackward(direction) && selectionHasExtend) {\n addRangeBackward(this, range);\n } else {\n this.nativeSelection.addRange(getNativeRange(range));\n this.refresh();\n }\n };\n }\n selProto.setRanges = function (ranges) {\n if (implementsControlRange && implementsDocSelection && ranges.length > 1) {\n createControlSelection(this, ranges);\n } else {\n this.removeAllRanges();\n for (var i = 0, len = ranges.length; i < len; ++i) {\n this.addRange(ranges[i]);\n }\n }\n };\n } else if (isHostMethod(testSelection, \"empty\") && isHostMethod(testRange, \"select\") && implementsControlRange && useDocumentSelection) {\n selProto.removeAllRanges = function () {\n // Added try/catch as fix for issue #21\n try {\n this.docSelection.empty();\n\n // Check for empty() not working (issue #24)\n if (this.docSelection.type != \"None\") {\n // Work around failure to empty a control selection by instead selecting a TextRange and then\n // calling empty()\n var doc;\n if (this.anchorNode) {\n doc = getDocument(this.anchorNode);\n } else if (this.docSelection.type == CONTROL) {\n var controlRange = this.docSelection.createRange();\n if (controlRange.length) {\n doc = getDocument(controlRange.item(0));\n }\n }\n if (doc) {\n var textRange = getBody(doc).createTextRange();\n textRange.select();\n this.docSelection.empty();\n }\n }\n } catch (ex) {}\n updateEmptySelection(this);\n };\n selProto.addRange = function (range) {\n if (this.docSelection.type == CONTROL) {\n addRangeToControlSelection(this, range);\n } else {\n api.WrappedTextRange.rangeToTextRange(range).select();\n this._ranges[0] = range;\n this.rangeCount = 1;\n this.isCollapsed = this._ranges[0].collapsed;\n updateAnchorAndFocusFromRange(this, range, false);\n updateType(this);\n }\n };\n selProto.setRanges = function (ranges) {\n this.removeAllRanges();\n var rangeCount = ranges.length;\n if (rangeCount > 1) {\n createControlSelection(this, ranges);\n } else if (rangeCount) {\n this.addRange(ranges[0]);\n }\n };\n } else {\n module.fail(\"No means of selecting a Range or TextRange was found\");\n return false;\n }\n selProto.getRangeAt = function (index) {\n if (index < 0 || index >= this.rangeCount) {\n throw new DOMException(\"INDEX_SIZE_ERR\");\n } else {\n // Clone the range to preserve selection-range independence. See issue 80.\n return this._ranges[index].cloneRange();\n }\n };\n var refreshSelection;\n if (useDocumentSelection) {\n refreshSelection = function (sel) {\n var range;\n if (api.isSelectionValid(sel.win)) {\n range = sel.docSelection.createRange();\n } else {\n range = getBody(sel.win.document).createTextRange();\n range.collapse(true);\n }\n if (sel.docSelection.type == CONTROL) {\n updateControlSelection(sel);\n } else if (isTextRange(range)) {\n updateFromTextRange(sel, range);\n } else {\n updateEmptySelection(sel);\n }\n };\n } else if (isHostMethod(testSelection, \"getRangeAt\") && typeof testSelection.rangeCount == NUMBER) {\n refreshSelection = function (sel) {\n if (implementsControlRange && implementsDocSelection && sel.docSelection.type == CONTROL) {\n updateControlSelection(sel);\n } else {\n sel._ranges.length = sel.rangeCount = sel.nativeSelection.rangeCount;\n if (sel.rangeCount) {\n for (var i = 0, len = sel.rangeCount; i < len; ++i) {\n sel._ranges[i] = new api.WrappedRange(sel.nativeSelection.getRangeAt(i));\n }\n updateAnchorAndFocusFromRange(sel, sel._ranges[sel.rangeCount - 1], selectionIsBackward(sel.nativeSelection));\n sel.isCollapsed = selectionIsCollapsed(sel);\n updateType(sel);\n } else {\n updateEmptySelection(sel);\n }\n }\n };\n } else if (selectionHasAnchorAndFocus && typeof testSelection.isCollapsed == BOOLEAN && typeof testRange.collapsed == BOOLEAN && features.implementsDomRange) {\n refreshSelection = function (sel) {\n var range,\n nativeSel = sel.nativeSelection;\n if (nativeSel.anchorNode) {\n range = getSelectionRangeAt(nativeSel, 0);\n sel._ranges = [range];\n sel.rangeCount = 1;\n updateAnchorAndFocusFromNativeSelection(sel);\n sel.isCollapsed = selectionIsCollapsed(sel);\n updateType(sel);\n } else {\n updateEmptySelection(sel);\n }\n };\n } else {\n module.fail(\"No means of obtaining a Range or TextRange from the user's selection was found\");\n return false;\n }\n selProto.refresh = function (checkForChanges) {\n var oldRanges = checkForChanges ? this._ranges.slice(0) : null;\n var oldAnchorNode = this.anchorNode,\n oldAnchorOffset = this.anchorOffset;\n refreshSelection(this);\n if (checkForChanges) {\n // Check the range count first\n var i = oldRanges.length;\n if (i != this._ranges.length) {\n return true;\n }\n\n // Now check the direction. Checking the anchor position is the same is enough since we're checking all the\n // ranges after this\n if (this.anchorNode != oldAnchorNode || this.anchorOffset != oldAnchorOffset) {\n return true;\n }\n\n // Finally, compare each range in turn\n while (i--) {\n if (!rangesEqual(oldRanges[i], this._ranges[i])) {\n return true;\n }\n }\n return false;\n }\n };\n\n // Removal of a single range\n var removeRangeManually = function (sel, range) {\n var ranges = sel.getAllRanges();\n sel.removeAllRanges();\n for (var i = 0, len = ranges.length; i < len; ++i) {\n if (!rangesEqual(range, ranges[i])) {\n sel.addRange(ranges[i]);\n }\n }\n if (!sel.rangeCount) {\n updateEmptySelection(sel);\n }\n };\n if (implementsControlRange && implementsDocSelection) {\n selProto.removeRange = function (range) {\n if (this.docSelection.type == CONTROL) {\n var controlRange = this.docSelection.createRange();\n var rangeElement = getSingleElementFromRange(range);\n\n // Create a new ControlRange containing all the elements in the selected ControlRange minus the\n // element contained by the supplied range\n var doc = getDocument(controlRange.item(0));\n var newControlRange = getBody(doc).createControlRange();\n var el,\n removed = false;\n for (var i = 0, len = controlRange.length; i < len; ++i) {\n el = controlRange.item(i);\n if (el !== rangeElement || removed) {\n newControlRange.add(controlRange.item(i));\n } else {\n removed = true;\n }\n }\n newControlRange.select();\n\n // Update the wrapped selection based on what's now in the native selection\n updateControlSelection(this);\n } else {\n removeRangeManually(this, range);\n }\n };\n } else {\n selProto.removeRange = function (range) {\n removeRangeManually(this, range);\n };\n }\n\n // Detecting if a selection is backward\n var selectionIsBackward;\n if (!useDocumentSelection && selectionHasAnchorAndFocus && features.implementsDomRange) {\n selectionIsBackward = winSelectionIsBackward;\n selProto.isBackward = function () {\n return selectionIsBackward(this);\n };\n } else {\n selectionIsBackward = selProto.isBackward = function () {\n return false;\n };\n }\n\n // Create an alias for backwards compatibility. From 1.3, everything is \"backward\" rather than \"backwards\"\n selProto.isBackwards = selProto.isBackward;\n\n // Selection stringifier\n // This is conformant to the old HTML5 selections draft spec but differs from WebKit and Mozilla's implementation.\n // The current spec does not yet define this method.\n selProto.toString = function () {\n var rangeTexts = [];\n for (var i = 0, len = this.rangeCount; i < len; ++i) {\n rangeTexts[i] = \"\" + this._ranges[i];\n }\n return rangeTexts.join(\"\");\n };\n function assertNodeInSameDocument(sel, node) {\n if (sel.win.document != getDocument(node)) {\n throw new DOMException(\"WRONG_DOCUMENT_ERR\");\n }\n }\n function assertValidOffset(node, offset) {\n if (offset < 0 || offset > (dom.isCharacterDataNode(node) ? node.length : node.childNodes.length)) {\n throw new DOMException(\"INDEX_SIZE_ERR\");\n }\n }\n\n // No current browser conforms fully to the spec for this method, so Rangy's own method is always used\n selProto.collapse = function (node, offset) {\n assertNodeInSameDocument(this, node);\n var range = api.createRange(node);\n range.collapseToPoint(node, offset);\n this.setSingleRange(range);\n this.isCollapsed = true;\n };\n selProto.collapseToStart = function () {\n if (this.rangeCount) {\n var range = this._ranges[0];\n this.collapse(range.startContainer, range.startOffset);\n } else {\n throw new DOMException(\"INVALID_STATE_ERR\");\n }\n };\n selProto.collapseToEnd = function () {\n if (this.rangeCount) {\n var range = this._ranges[this.rangeCount - 1];\n this.collapse(range.endContainer, range.endOffset);\n } else {\n throw new DOMException(\"INVALID_STATE_ERR\");\n }\n };\n\n // The spec is very specific on how selectAllChildren should be implemented and not all browsers implement it as\n // specified so the native implementation is never used by Rangy.\n selProto.selectAllChildren = function (node) {\n assertNodeInSameDocument(this, node);\n var range = api.createRange(node);\n range.selectNodeContents(node);\n this.setSingleRange(range);\n };\n if (selectionHasSetBaseAndExtent) {\n selProto.setBaseAndExtent = function (anchorNode, anchorOffset, focusNode, focusOffset) {\n this.nativeSelection.setBaseAndExtent(anchorNode, anchorOffset, focusNode, focusOffset);\n this.refresh();\n };\n } else if (selectionHasExtend) {\n selProto.setBaseAndExtent = function (anchorNode, anchorOffset, focusNode, focusOffset) {\n assertValidOffset(anchorNode, anchorOffset);\n assertValidOffset(focusNode, focusOffset);\n assertNodeInSameDocument(this, anchorNode);\n assertNodeInSameDocument(this, focusNode);\n var range = api.createRange(node);\n var isBackwards = dom.comparePoints(anchorNode, anchorOffset, focusNode, focusOffset) == -1;\n if (isBackwards) {\n range.setStartAndEnd(focusNode, focusOffset, anchorNode, anchorOffset);\n } else {\n range.setStartAndEnd(anchorNode, anchorOffset, focusNode, focusOffset);\n }\n this.setSingleRange(range, isBackwards);\n };\n }\n selProto.deleteFromDocument = function () {\n // Sepcial behaviour required for IE's control selections\n if (implementsControlRange && implementsDocSelection && this.docSelection.type == CONTROL) {\n var controlRange = this.docSelection.createRange();\n var element;\n while (controlRange.length) {\n element = controlRange.item(0);\n controlRange.remove(element);\n dom.removeNode(element);\n }\n this.refresh();\n } else if (this.rangeCount) {\n var ranges = this.getAllRanges();\n if (ranges.length) {\n this.removeAllRanges();\n for (var i = 0, len = ranges.length; i < len; ++i) {\n ranges[i].deleteContents();\n }\n // The spec says nothing about what the selection should contain after calling deleteContents on each\n // range. Firefox moves the selection to where the final selected range was, so we emulate that\n this.addRange(ranges[len - 1]);\n }\n }\n };\n\n // The following are non-standard extensions\n selProto.eachRange = function (func, returnValue) {\n for (var i = 0, len = this._ranges.length; i < len; ++i) {\n if (func(this.getRangeAt(i))) {\n return returnValue;\n }\n }\n };\n selProto.getAllRanges = function () {\n var ranges = [];\n this.eachRange(function (range) {\n ranges.push(range);\n });\n return ranges;\n };\n selProto.setSingleRange = function (range, direction) {\n this.removeAllRanges();\n this.addRange(range, direction);\n };\n selProto.callMethodOnEachRange = function (methodName, params) {\n var results = [];\n this.eachRange(function (range) {\n results.push(range[methodName].apply(range, params || []));\n });\n return results;\n };\n function createStartOrEndSetter(isStart) {\n return function (node, offset) {\n var range;\n if (this.rangeCount) {\n range = this.getRangeAt(0);\n range[\"set\" + (isStart ? \"Start\" : \"End\")](node, offset);\n } else {\n range = api.createRange(this.win.document);\n range.setStartAndEnd(node, offset);\n }\n this.setSingleRange(range, this.isBackward());\n };\n }\n selProto.setStart = createStartOrEndSetter(true);\n selProto.setEnd = createStartOrEndSetter(false);\n\n // Add select() method to Range prototype. Any existing selection will be removed.\n api.rangePrototype.select = function (direction) {\n getSelection(this.getDocument()).setSingleRange(this, direction);\n };\n selProto.changeEachRange = function (func) {\n var ranges = [];\n var backward = this.isBackward();\n this.eachRange(function (range) {\n func(range);\n ranges.push(range);\n });\n this.removeAllRanges();\n if (backward && ranges.length == 1) {\n this.addRange(ranges[0], \"backward\");\n } else {\n this.setRanges(ranges);\n }\n };\n selProto.containsNode = function (node, allowPartial) {\n return this.eachRange(function (range) {\n return range.containsNode(node, allowPartial);\n }, true) || false;\n };\n selProto.getBookmark = function (containerNode) {\n return {\n backward: this.isBackward(),\n rangeBookmarks: this.callMethodOnEachRange(\"getBookmark\", [containerNode])\n };\n };\n selProto.moveToBookmark = function (bookmark) {\n var selRanges = [];\n for (var i = 0, rangeBookmark, range; rangeBookmark = bookmark.rangeBookmarks[i++];) {\n range = api.createRange(this.win);\n range.moveToBookmark(rangeBookmark);\n selRanges.push(range);\n }\n if (bookmark.backward) {\n this.setSingleRange(selRanges[0], \"backward\");\n } else {\n this.setRanges(selRanges);\n }\n };\n selProto.saveRanges = function () {\n return {\n backward: this.isBackward(),\n ranges: this.callMethodOnEachRange(\"cloneRange\")\n };\n };\n selProto.restoreRanges = function (selRanges) {\n this.removeAllRanges();\n for (var i = 0, range; range = selRanges.ranges[i]; ++i) {\n this.addRange(range, selRanges.backward && i == 0);\n }\n };\n selProto.toHtml = function () {\n var rangeHtmls = [];\n this.eachRange(function (range) {\n rangeHtmls.push(DomRange.toHtml(range));\n });\n return rangeHtmls.join(\"\");\n };\n if (features.implementsTextRange) {\n selProto.getNativeTextRange = function () {\n var sel, textRange;\n if (sel = this.docSelection) {\n var range = sel.createRange();\n if (isTextRange(range)) {\n return range;\n } else {\n throw module.createError(\"getNativeTextRange: selection is a control selection\");\n }\n } else if (this.rangeCount > 0) {\n return api.WrappedTextRange.rangeToTextRange(this.getRangeAt(0));\n } else {\n throw module.createError(\"getNativeTextRange: selection contains no range\");\n }\n };\n }\n function inspect(sel) {\n var rangeInspects = [];\n var anchor = new DomPosition(sel.anchorNode, sel.anchorOffset);\n var focus = new DomPosition(sel.focusNode, sel.focusOffset);\n var name = typeof sel.getName == \"function\" ? sel.getName() : \"Selection\";\n if (typeof sel.rangeCount != \"undefined\") {\n for (var i = 0, len = sel.rangeCount; i < len; ++i) {\n rangeInspects[i] = DomRange.inspect(sel.getRangeAt(i));\n }\n }\n return \"[\" + name + \"(Ranges: \" + rangeInspects.join(\", \") + \")(anchor: \" + anchor.inspect() + \", focus: \" + focus.inspect() + \"]\";\n }\n selProto.getName = function () {\n return \"WrappedSelection\";\n };\n selProto.inspect = function () {\n return inspect(this);\n };\n selProto.detach = function () {\n actOnCachedSelection(this.win, \"delete\");\n deleteProperties(this);\n };\n WrappedSelection.detachAll = function () {\n actOnCachedSelection(null, \"deleteAll\");\n };\n WrappedSelection.inspect = inspect;\n WrappedSelection.isDirectionBackward = isDirectionBackward;\n api.Selection = WrappedSelection;\n api.selectionPrototype = selProto;\n api.addShimListener(function (win) {\n if (typeof win.getSelection == \"undefined\") {\n win.getSelection = function () {\n return getSelection(win);\n };\n }\n win = null;\n });\n });\n\n /*----------------------------------------------------------------------------------------------------------------*/\n\n // Wait for document to load before initializing\n var docReady = false;\n var loadHandler = function (e) {\n if (!docReady) {\n docReady = true;\n if (!api.initialized && api.config.autoInitialize) {\n init();\n }\n }\n };\n if (isBrowser) {\n // Test whether the document has already been loaded and initialize immediately if so\n if (document.readyState == \"complete\") {\n loadHandler();\n } else {\n if (isHostMethod(document, \"addEventListener\")) {\n document.addEventListener(\"DOMContentLoaded\", loadHandler, false);\n }\n\n // Add a fallback in case the DOMContentLoaded event isn't supported\n addListener(window, \"load\", loadHandler);\n }\n }\n return api;\n}, this);","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","/*! jQuery UI - v1.13.2 - 2022-07-14\n* http://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function (factory) {\n \"use strict\";\n\n if (typeof define === \"function\" && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"jquery\"], factory);\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function ($) {\n \"use strict\";\n\n $.ui = $.ui || {};\n var version = $.ui.version = \"1.13.2\";\n\n /*!\n * jQuery UI Widget 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Widget\n //>>group: Core\n //>>description: Provides a factory for creating stateful widgets with a common API.\n //>>docs: http://api.jqueryui.com/jQuery.widget/\n //>>demos: http://jqueryui.com/widget/\n\n var widgetUuid = 0;\n var widgetHasOwnProperty = Array.prototype.hasOwnProperty;\n var widgetSlice = Array.prototype.slice;\n $.cleanData = function (orig) {\n return function (elems) {\n var events, elem, i;\n for (i = 0; (elem = elems[i]) != null; i++) {\n // Only trigger remove when necessary to save time\n events = $._data(elem, \"events\");\n if (events && events.remove) {\n $(elem).triggerHandler(\"remove\");\n }\n }\n orig(elems);\n };\n }($.cleanData);\n $.widget = function (name, base, prototype) {\n var existingConstructor, constructor, basePrototype;\n\n // ProxiedPrototype allows the provided prototype to remain unmodified\n // so that it can be used as a mixin for multiple widgets (#8876)\n var proxiedPrototype = {};\n var namespace = name.split(\".\")[0];\n name = name.split(\".\")[1];\n var fullName = namespace + \"-\" + name;\n if (!prototype) {\n prototype = base;\n base = $.Widget;\n }\n if (Array.isArray(prototype)) {\n prototype = $.extend.apply(null, [{}].concat(prototype));\n }\n\n // Create selector for plugin\n $.expr.pseudos[fullName.toLowerCase()] = function (elem) {\n return !!$.data(elem, fullName);\n };\n $[namespace] = $[namespace] || {};\n existingConstructor = $[namespace][name];\n constructor = $[namespace][name] = function (options, element) {\n // Allow instantiation without \"new\" keyword\n if (!this || !this._createWidget) {\n return new constructor(options, element);\n }\n\n // Allow instantiation without initializing for simple inheritance\n // must use \"new\" keyword (the code above always passes args)\n if (arguments.length) {\n this._createWidget(options, element);\n }\n };\n\n // Extend with the existing constructor to carry over any static properties\n $.extend(constructor, existingConstructor, {\n version: prototype.version,\n // Copy the object used to create the prototype in case we need to\n // redefine the widget later\n _proto: $.extend({}, prototype),\n // Track widgets that inherit from this widget in case this widget is\n // redefined after a widget inherits from it\n _childConstructors: []\n });\n basePrototype = new base();\n\n // We need to make the options hash a property directly on the new instance\n // otherwise we'll modify the options hash on the prototype that we're\n // inheriting from\n basePrototype.options = $.widget.extend({}, basePrototype.options);\n $.each(prototype, function (prop, value) {\n if (typeof value !== \"function\") {\n proxiedPrototype[prop] = value;\n return;\n }\n proxiedPrototype[prop] = function () {\n function _super() {\n return base.prototype[prop].apply(this, arguments);\n }\n function _superApply(args) {\n return base.prototype[prop].apply(this, args);\n }\n return function () {\n var __super = this._super;\n var __superApply = this._superApply;\n var returnValue;\n this._super = _super;\n this._superApply = _superApply;\n returnValue = value.apply(this, arguments);\n this._super = __super;\n this._superApply = __superApply;\n return returnValue;\n };\n }();\n });\n constructor.prototype = $.widget.extend(basePrototype, {\n // TODO: remove support for widgetEventPrefix\n // always use the name + a colon as the prefix, e.g., draggable:start\n // don't prefix for widgets that aren't DOM-based\n widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix || name : name\n }, proxiedPrototype, {\n constructor: constructor,\n namespace: namespace,\n widgetName: name,\n widgetFullName: fullName\n });\n\n // If this widget is being redefined then we need to find all widgets that\n // are inheriting from it and redefine all of them so that they inherit from\n // the new version of this widget. We're essentially trying to replace one\n // level in the prototype chain.\n if (existingConstructor) {\n $.each(existingConstructor._childConstructors, function (i, child) {\n var childPrototype = child.prototype;\n\n // Redefine the child widget using the same prototype that was\n // originally used, but inherit from the new version of the base\n $.widget(childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto);\n });\n\n // Remove the list of existing child constructors from the old constructor\n // so the old child constructors can be garbage collected\n delete existingConstructor._childConstructors;\n } else {\n base._childConstructors.push(constructor);\n }\n $.widget.bridge(name, constructor);\n return constructor;\n };\n $.widget.extend = function (target) {\n var input = widgetSlice.call(arguments, 1);\n var inputIndex = 0;\n var inputLength = input.length;\n var key;\n var value;\n for (; inputIndex < inputLength; inputIndex++) {\n for (key in input[inputIndex]) {\n value = input[inputIndex][key];\n if (widgetHasOwnProperty.call(input[inputIndex], key) && value !== undefined) {\n // Clone objects\n if ($.isPlainObject(value)) {\n target[key] = $.isPlainObject(target[key]) ? $.widget.extend({}, target[key], value) :\n // Don't extend strings, arrays, etc. with objects\n $.widget.extend({}, value);\n\n // Copy everything else by reference\n } else {\n target[key] = value;\n }\n }\n }\n }\n return target;\n };\n $.widget.bridge = function (name, object) {\n var fullName = object.prototype.widgetFullName || name;\n $.fn[name] = function (options) {\n var isMethodCall = typeof options === \"string\";\n var args = widgetSlice.call(arguments, 1);\n var returnValue = this;\n if (isMethodCall) {\n // If this is an empty collection, we need to have the instance method\n // return undefined instead of the jQuery instance\n if (!this.length && options === \"instance\") {\n returnValue = undefined;\n } else {\n this.each(function () {\n var methodValue;\n var instance = $.data(this, fullName);\n if (options === \"instance\") {\n returnValue = instance;\n return false;\n }\n if (!instance) {\n return $.error(\"cannot call methods on \" + name + \" prior to initialization; \" + \"attempted to call method '\" + options + \"'\");\n }\n if (typeof instance[options] !== \"function\" || options.charAt(0) === \"_\") {\n return $.error(\"no such method '\" + options + \"' for \" + name + \" widget instance\");\n }\n methodValue = instance[options].apply(instance, args);\n if (methodValue !== instance && methodValue !== undefined) {\n returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue;\n return false;\n }\n });\n }\n } else {\n // Allow multiple hashes to be passed on init\n if (args.length) {\n options = $.widget.extend.apply(null, [options].concat(args));\n }\n this.each(function () {\n var instance = $.data(this, fullName);\n if (instance) {\n instance.option(options || {});\n if (instance._init) {\n instance._init();\n }\n } else {\n $.data(this, fullName, new object(options, this));\n }\n });\n }\n return returnValue;\n };\n };\n $.Widget = function /* options, element */ () {};\n $.Widget._childConstructors = [];\n $.Widget.prototype = {\n widgetName: \"widget\",\n widgetEventPrefix: \"\",\n defaultElement: \"<div>\",\n options: {\n classes: {},\n disabled: false,\n // Callbacks\n create: null\n },\n _createWidget: function (options, element) {\n element = $(element || this.defaultElement || this)[0];\n this.element = $(element);\n this.uuid = widgetUuid++;\n this.eventNamespace = \".\" + this.widgetName + this.uuid;\n this.bindings = $();\n this.hoverable = $();\n this.focusable = $();\n this.classesElementLookup = {};\n if (element !== this) {\n $.data(element, this.widgetFullName, this);\n this._on(true, this.element, {\n remove: function (event) {\n if (event.target === element) {\n this.destroy();\n }\n }\n });\n this.document = $(element.style ?\n // Element within the document\n element.ownerDocument :\n // Element is window or document\n element.document || element);\n this.window = $(this.document[0].defaultView || this.document[0].parentWindow);\n }\n this.options = $.widget.extend({}, this.options, this._getCreateOptions(), options);\n this._create();\n if (this.options.disabled) {\n this._setOptionDisabled(this.options.disabled);\n }\n this._trigger(\"create\", null, this._getCreateEventData());\n this._init();\n },\n _getCreateOptions: function () {\n return {};\n },\n _getCreateEventData: $.noop,\n _create: $.noop,\n _init: $.noop,\n destroy: function () {\n var that = this;\n this._destroy();\n $.each(this.classesElementLookup, function (key, value) {\n that._removeClass(value, key);\n });\n\n // We can probably remove the unbind calls in 2.0\n // all event bindings should go through this._on()\n this.element.off(this.eventNamespace).removeData(this.widgetFullName);\n this.widget().off(this.eventNamespace).removeAttr(\"aria-disabled\");\n\n // Clean up events and states\n this.bindings.off(this.eventNamespace);\n },\n _destroy: $.noop,\n widget: function () {\n return this.element;\n },\n option: function (key, value) {\n var options = key;\n var parts;\n var curOption;\n var i;\n if (arguments.length === 0) {\n // Don't return a reference to the internal hash\n return $.widget.extend({}, this.options);\n }\n if (typeof key === \"string\") {\n // Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n options = {};\n parts = key.split(\".\");\n key = parts.shift();\n if (parts.length) {\n curOption = options[key] = $.widget.extend({}, this.options[key]);\n for (i = 0; i < parts.length - 1; i++) {\n curOption[parts[i]] = curOption[parts[i]] || {};\n curOption = curOption[parts[i]];\n }\n key = parts.pop();\n if (arguments.length === 1) {\n return curOption[key] === undefined ? null : curOption[key];\n }\n curOption[key] = value;\n } else {\n if (arguments.length === 1) {\n return this.options[key] === undefined ? null : this.options[key];\n }\n options[key] = value;\n }\n }\n this._setOptions(options);\n return this;\n },\n _setOptions: function (options) {\n var key;\n for (key in options) {\n this._setOption(key, options[key]);\n }\n return this;\n },\n _setOption: function (key, value) {\n if (key === \"classes\") {\n this._setOptionClasses(value);\n }\n this.options[key] = value;\n if (key === \"disabled\") {\n this._setOptionDisabled(value);\n }\n return this;\n },\n _setOptionClasses: function (value) {\n var classKey, elements, currentElements;\n for (classKey in value) {\n currentElements = this.classesElementLookup[classKey];\n if (value[classKey] === this.options.classes[classKey] || !currentElements || !currentElements.length) {\n continue;\n }\n\n // We are doing this to create a new jQuery object because the _removeClass() call\n // on the next line is going to destroy the reference to the current elements being\n // tracked. We need to save a copy of this collection so that we can add the new classes\n // below.\n elements = $(currentElements.get());\n this._removeClass(currentElements, classKey);\n\n // We don't use _addClass() here, because that uses this.options.classes\n // for generating the string of classes. We want to use the value passed in from\n // _setOption(), this is the new value of the classes option which was passed to\n // _setOption(). We pass this value directly to _classes().\n elements.addClass(this._classes({\n element: elements,\n keys: classKey,\n classes: value,\n add: true\n }));\n }\n },\n _setOptionDisabled: function (value) {\n this._toggleClass(this.widget(), this.widgetFullName + \"-disabled\", null, !!value);\n\n // If the widget is becoming disabled, then nothing is interactive\n if (value) {\n this._removeClass(this.hoverable, null, \"ui-state-hover\");\n this._removeClass(this.focusable, null, \"ui-state-focus\");\n }\n },\n enable: function () {\n return this._setOptions({\n disabled: false\n });\n },\n disable: function () {\n return this._setOptions({\n disabled: true\n });\n },\n _classes: function (options) {\n var full = [];\n var that = this;\n options = $.extend({\n element: this.element,\n classes: this.options.classes || {}\n }, options);\n function bindRemoveEvent() {\n var nodesToBind = [];\n options.element.each(function (_, element) {\n var isTracked = $.map(that.classesElementLookup, function (elements) {\n return elements;\n }).some(function (elements) {\n return elements.is(element);\n });\n if (!isTracked) {\n nodesToBind.push(element);\n }\n });\n that._on($(nodesToBind), {\n remove: \"_untrackClassesElement\"\n });\n }\n function processClassString(classes, checkOption) {\n var current, i;\n for (i = 0; i < classes.length; i++) {\n current = that.classesElementLookup[classes[i]] || $();\n if (options.add) {\n bindRemoveEvent();\n current = $($.uniqueSort(current.get().concat(options.element.get())));\n } else {\n current = $(current.not(options.element).get());\n }\n that.classesElementLookup[classes[i]] = current;\n full.push(classes[i]);\n if (checkOption && options.classes[classes[i]]) {\n full.push(options.classes[classes[i]]);\n }\n }\n }\n if (options.keys) {\n processClassString(options.keys.match(/\\S+/g) || [], true);\n }\n if (options.extra) {\n processClassString(options.extra.match(/\\S+/g) || []);\n }\n return full.join(\" \");\n },\n _untrackClassesElement: function (event) {\n var that = this;\n $.each(that.classesElementLookup, function (key, value) {\n if ($.inArray(event.target, value) !== -1) {\n that.classesElementLookup[key] = $(value.not(event.target).get());\n }\n });\n this._off($(event.target));\n },\n _removeClass: function (element, keys, extra) {\n return this._toggleClass(element, keys, extra, false);\n },\n _addClass: function (element, keys, extra) {\n return this._toggleClass(element, keys, extra, true);\n },\n _toggleClass: function (element, keys, extra, add) {\n add = typeof add === \"boolean\" ? add : extra;\n var shift = typeof element === \"string\" || element === null,\n options = {\n extra: shift ? keys : extra,\n keys: shift ? element : keys,\n element: shift ? this.element : element,\n add: add\n };\n options.element.toggleClass(this._classes(options), add);\n return this;\n },\n _on: function (suppressDisabledCheck, element, handlers) {\n var delegateElement;\n var instance = this;\n\n // No suppressDisabledCheck flag, shuffle arguments\n if (typeof suppressDisabledCheck !== \"boolean\") {\n handlers = element;\n element = suppressDisabledCheck;\n suppressDisabledCheck = false;\n }\n\n // No element argument, shuffle and use this.element\n if (!handlers) {\n handlers = element;\n element = this.element;\n delegateElement = this.widget();\n } else {\n element = delegateElement = $(element);\n this.bindings = this.bindings.add(element);\n }\n $.each(handlers, function (event, handler) {\n function handlerProxy() {\n // Allow widgets to customize the disabled handling\n // - disabled as an array instead of boolean\n // - disabled class as method for disabling individual parts\n if (!suppressDisabledCheck && (instance.options.disabled === true || $(this).hasClass(\"ui-state-disabled\"))) {\n return;\n }\n return (typeof handler === \"string\" ? instance[handler] : handler).apply(instance, arguments);\n }\n\n // Copy the guid so direct unbinding works\n if (typeof handler !== \"string\") {\n handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++;\n }\n var match = event.match(/^([\\w:-]*)\\s*(.*)$/);\n var eventName = match[1] + instance.eventNamespace;\n var selector = match[2];\n if (selector) {\n delegateElement.on(eventName, selector, handlerProxy);\n } else {\n element.on(eventName, handlerProxy);\n }\n });\n },\n _off: function (element, eventName) {\n eventName = (eventName || \"\").split(\" \").join(this.eventNamespace + \" \") + this.eventNamespace;\n element.off(eventName);\n\n // Clear the stack to avoid memory leaks (#10056)\n this.bindings = $(this.bindings.not(element).get());\n this.focusable = $(this.focusable.not(element).get());\n this.hoverable = $(this.hoverable.not(element).get());\n },\n _delay: function (handler, delay) {\n function handlerProxy() {\n return (typeof handler === \"string\" ? instance[handler] : handler).apply(instance, arguments);\n }\n var instance = this;\n return setTimeout(handlerProxy, delay || 0);\n },\n _hoverable: function (element) {\n this.hoverable = this.hoverable.add(element);\n this._on(element, {\n mouseenter: function (event) {\n this._addClass($(event.currentTarget), null, \"ui-state-hover\");\n },\n mouseleave: function (event) {\n this._removeClass($(event.currentTarget), null, \"ui-state-hover\");\n }\n });\n },\n _focusable: function (element) {\n this.focusable = this.focusable.add(element);\n this._on(element, {\n focusin: function (event) {\n this._addClass($(event.currentTarget), null, \"ui-state-focus\");\n },\n focusout: function (event) {\n this._removeClass($(event.currentTarget), null, \"ui-state-focus\");\n }\n });\n },\n _trigger: function (type, event, data) {\n var prop, orig;\n var callback = this.options[type];\n data = data || {};\n event = $.Event(event);\n event.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase();\n\n // The original event may come from any element\n // so we need to reset the target on the new event\n event.target = this.element[0];\n\n // Copy original event properties over to the new event\n orig = event.originalEvent;\n if (orig) {\n for (prop in orig) {\n if (!(prop in event)) {\n event[prop] = orig[prop];\n }\n }\n }\n this.element.trigger(event, data);\n return !(typeof callback === \"function\" && callback.apply(this.element[0], [event].concat(data)) === false || event.isDefaultPrevented());\n }\n };\n $.each({\n show: \"fadeIn\",\n hide: \"fadeOut\"\n }, function (method, defaultEffect) {\n $.Widget.prototype[\"_\" + method] = function (element, options, callback) {\n if (typeof options === \"string\") {\n options = {\n effect: options\n };\n }\n var hasOptions;\n var effectName = !options ? method : options === true || typeof options === \"number\" ? defaultEffect : options.effect || defaultEffect;\n options = options || {};\n if (typeof options === \"number\") {\n options = {\n duration: options\n };\n } else if (options === true) {\n options = {};\n }\n hasOptions = !$.isEmptyObject(options);\n options.complete = callback;\n if (options.delay) {\n element.delay(options.delay);\n }\n if (hasOptions && $.effects && $.effects.effect[effectName]) {\n element[method](options);\n } else if (effectName !== method && element[effectName]) {\n element[effectName](options.duration, options.easing, callback);\n } else {\n element.queue(function (next) {\n $(this)[method]();\n if (callback) {\n callback.call(element[0]);\n }\n next();\n });\n }\n };\n });\n var widget = $.widget;\n\n /*!\n * jQuery UI Position 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n //>>label: Position\n //>>group: Core\n //>>description: Positions elements relative to other elements.\n //>>docs: http://api.jqueryui.com/position/\n //>>demos: http://jqueryui.com/position/\n\n (function () {\n var cachedScrollbarWidth,\n max = Math.max,\n abs = Math.abs,\n rhorizontal = /left|center|right/,\n rvertical = /top|center|bottom/,\n roffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n rposition = /^\\w+/,\n rpercent = /%$/,\n _position = $.fn.position;\n function getOffsets(offsets, width, height) {\n return [parseFloat(offsets[0]) * (rpercent.test(offsets[0]) ? width / 100 : 1), parseFloat(offsets[1]) * (rpercent.test(offsets[1]) ? height / 100 : 1)];\n }\n function parseCss(element, property) {\n return parseInt($.css(element, property), 10) || 0;\n }\n function isWindow(obj) {\n return obj != null && obj === obj.window;\n }\n function getDimensions(elem) {\n var raw = elem[0];\n if (raw.nodeType === 9) {\n return {\n width: elem.width(),\n height: elem.height(),\n offset: {\n top: 0,\n left: 0\n }\n };\n }\n if (isWindow(raw)) {\n return {\n width: elem.width(),\n height: elem.height(),\n offset: {\n top: elem.scrollTop(),\n left: elem.scrollLeft()\n }\n };\n }\n if (raw.preventDefault) {\n return {\n width: 0,\n height: 0,\n offset: {\n top: raw.pageY,\n left: raw.pageX\n }\n };\n }\n return {\n width: elem.outerWidth(),\n height: elem.outerHeight(),\n offset: elem.offset()\n };\n }\n $.position = {\n scrollbarWidth: function () {\n if (cachedScrollbarWidth !== undefined) {\n return cachedScrollbarWidth;\n }\n var w1,\n w2,\n div = $(\"<div style=\" + \"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>\" + \"<div style='height:300px;width:auto;'></div></div>\"),\n innerDiv = div.children()[0];\n $(\"body\").append(div);\n w1 = innerDiv.offsetWidth;\n div.css(\"overflow\", \"scroll\");\n w2 = innerDiv.offsetWidth;\n if (w1 === w2) {\n w2 = div[0].clientWidth;\n }\n div.remove();\n return cachedScrollbarWidth = w1 - w2;\n },\n getScrollInfo: function (within) {\n var overflowX = within.isWindow || within.isDocument ? \"\" : within.element.css(\"overflow-x\"),\n overflowY = within.isWindow || within.isDocument ? \"\" : within.element.css(\"overflow-y\"),\n hasOverflowX = overflowX === \"scroll\" || overflowX === \"auto\" && within.width < within.element[0].scrollWidth,\n hasOverflowY = overflowY === \"scroll\" || overflowY === \"auto\" && within.height < within.element[0].scrollHeight;\n return {\n width: hasOverflowY ? $.position.scrollbarWidth() : 0,\n height: hasOverflowX ? $.position.scrollbarWidth() : 0\n };\n },\n getWithinInfo: function (element) {\n var withinElement = $(element || window),\n isElemWindow = isWindow(withinElement[0]),\n isDocument = !!withinElement[0] && withinElement[0].nodeType === 9,\n hasOffset = !isElemWindow && !isDocument;\n return {\n element: withinElement,\n isWindow: isElemWindow,\n isDocument: isDocument,\n offset: hasOffset ? $(element).offset() : {\n left: 0,\n top: 0\n },\n scrollLeft: withinElement.scrollLeft(),\n scrollTop: withinElement.scrollTop(),\n width: withinElement.outerWidth(),\n height: withinElement.outerHeight()\n };\n }\n };\n $.fn.position = function (options) {\n if (!options || !options.of) {\n return _position.apply(this, arguments);\n }\n\n // Make a copy, we don't want to modify arguments\n options = $.extend({}, options);\n var atOffset,\n targetWidth,\n targetHeight,\n targetOffset,\n basePosition,\n dimensions,\n // Make sure string options are treated as CSS selectors\n target = typeof options.of === \"string\" ? $(document).find(options.of) : $(options.of),\n within = $.position.getWithinInfo(options.within),\n scrollInfo = $.position.getScrollInfo(within),\n collision = (options.collision || \"flip\").split(\" \"),\n offsets = {};\n dimensions = getDimensions(target);\n if (target[0].preventDefault) {\n // Force left top to allow flipping\n options.at = \"left top\";\n }\n targetWidth = dimensions.width;\n targetHeight = dimensions.height;\n targetOffset = dimensions.offset;\n\n // Clone to reuse original targetOffset later\n basePosition = $.extend({}, targetOffset);\n\n // Force my and at to have valid horizontal and vertical positions\n // if a value is missing or invalid, it will be converted to center\n $.each([\"my\", \"at\"], function () {\n var pos = (options[this] || \"\").split(\" \"),\n horizontalOffset,\n verticalOffset;\n if (pos.length === 1) {\n pos = rhorizontal.test(pos[0]) ? pos.concat([\"center\"]) : rvertical.test(pos[0]) ? [\"center\"].concat(pos) : [\"center\", \"center\"];\n }\n pos[0] = rhorizontal.test(pos[0]) ? pos[0] : \"center\";\n pos[1] = rvertical.test(pos[1]) ? pos[1] : \"center\";\n\n // Calculate offsets\n horizontalOffset = roffset.exec(pos[0]);\n verticalOffset = roffset.exec(pos[1]);\n offsets[this] = [horizontalOffset ? horizontalOffset[0] : 0, verticalOffset ? verticalOffset[0] : 0];\n\n // Reduce to just the positions without the offsets\n options[this] = [rposition.exec(pos[0])[0], rposition.exec(pos[1])[0]];\n });\n\n // Normalize collision option\n if (collision.length === 1) {\n collision[1] = collision[0];\n }\n if (options.at[0] === \"right\") {\n basePosition.left += targetWidth;\n } else if (options.at[0] === \"center\") {\n basePosition.left += targetWidth / 2;\n }\n if (options.at[1] === \"bottom\") {\n basePosition.top += targetHeight;\n } else if (options.at[1] === \"center\") {\n basePosition.top += targetHeight / 2;\n }\n atOffset = getOffsets(offsets.at, targetWidth, targetHeight);\n basePosition.left += atOffset[0];\n basePosition.top += atOffset[1];\n return this.each(function () {\n var collisionPosition,\n using,\n elem = $(this),\n elemWidth = elem.outerWidth(),\n elemHeight = elem.outerHeight(),\n marginLeft = parseCss(this, \"marginLeft\"),\n marginTop = parseCss(this, \"marginTop\"),\n collisionWidth = elemWidth + marginLeft + parseCss(this, \"marginRight\") + scrollInfo.width,\n collisionHeight = elemHeight + marginTop + parseCss(this, \"marginBottom\") + scrollInfo.height,\n position = $.extend({}, basePosition),\n myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight());\n if (options.my[0] === \"right\") {\n position.left -= elemWidth;\n } else if (options.my[0] === \"center\") {\n position.left -= elemWidth / 2;\n }\n if (options.my[1] === \"bottom\") {\n position.top -= elemHeight;\n } else if (options.my[1] === \"center\") {\n position.top -= elemHeight / 2;\n }\n position.left += myOffset[0];\n position.top += myOffset[1];\n collisionPosition = {\n marginLeft: marginLeft,\n marginTop: marginTop\n };\n $.each([\"left\", \"top\"], function (i, dir) {\n if ($.ui.position[collision[i]]) {\n $.ui.position[collision[i]][dir](position, {\n targetWidth: targetWidth,\n targetHeight: targetHeight,\n elemWidth: elemWidth,\n elemHeight: elemHeight,\n collisionPosition: collisionPosition,\n collisionWidth: collisionWidth,\n collisionHeight: collisionHeight,\n offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]],\n my: options.my,\n at: options.at,\n within: within,\n elem: elem\n });\n }\n });\n if (options.using) {\n // Adds feedback as second argument to using callback, if present\n using = function (props) {\n var left = targetOffset.left - position.left,\n right = left + targetWidth - elemWidth,\n top = targetOffset.top - position.top,\n bottom = top + targetHeight - elemHeight,\n feedback = {\n target: {\n element: target,\n left: targetOffset.left,\n top: targetOffset.top,\n width: targetWidth,\n height: targetHeight\n },\n element: {\n element: elem,\n left: position.left,\n top: position.top,\n width: elemWidth,\n height: elemHeight\n },\n horizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n vertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n };\n if (targetWidth < elemWidth && abs(left + right) < targetWidth) {\n feedback.horizontal = \"center\";\n }\n if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) {\n feedback.vertical = \"middle\";\n }\n if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) {\n feedback.important = \"horizontal\";\n } else {\n feedback.important = \"vertical\";\n }\n options.using.call(this, props, feedback);\n };\n }\n elem.offset($.extend(position, {\n using: using\n }));\n });\n };\n $.ui.position = {\n fit: {\n left: function (position, data) {\n var within = data.within,\n withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n outerWidth = within.width,\n collisionPosLeft = position.left - data.collisionPosition.marginLeft,\n overLeft = withinOffset - collisionPosLeft,\n overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n newOverRight;\n\n // Element is wider than within\n if (data.collisionWidth > outerWidth) {\n // Element is initially over the left side of within\n if (overLeft > 0 && overRight <= 0) {\n newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset;\n position.left += overLeft - newOverRight;\n\n // Element is initially over right side of within\n } else if (overRight > 0 && overLeft <= 0) {\n position.left = withinOffset;\n\n // Element is initially over both left and right sides of within\n } else {\n if (overLeft > overRight) {\n position.left = withinOffset + outerWidth - data.collisionWidth;\n } else {\n position.left = withinOffset;\n }\n }\n\n // Too far left -> align with left edge\n } else if (overLeft > 0) {\n position.left += overLeft;\n\n // Too far right -> align with right edge\n } else if (overRight > 0) {\n position.left -= overRight;\n\n // Adjust based on position and margin\n } else {\n position.left = max(position.left - collisionPosLeft, position.left);\n }\n },\n top: function (position, data) {\n var within = data.within,\n withinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n outerHeight = data.within.height,\n collisionPosTop = position.top - data.collisionPosition.marginTop,\n overTop = withinOffset - collisionPosTop,\n overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n newOverBottom;\n\n // Element is taller than within\n if (data.collisionHeight > outerHeight) {\n // Element is initially over the top of within\n if (overTop > 0 && overBottom <= 0) {\n newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset;\n position.top += overTop - newOverBottom;\n\n // Element is initially over bottom of within\n } else if (overBottom > 0 && overTop <= 0) {\n position.top = withinOffset;\n\n // Element is initially over both top and bottom of within\n } else {\n if (overTop > overBottom) {\n position.top = withinOffset + outerHeight - data.collisionHeight;\n } else {\n position.top = withinOffset;\n }\n }\n\n // Too far up -> align with top\n } else if (overTop > 0) {\n position.top += overTop;\n\n // Too far down -> align with bottom edge\n } else if (overBottom > 0) {\n position.top -= overBottom;\n\n // Adjust based on position and margin\n } else {\n position.top = max(position.top - collisionPosTop, position.top);\n }\n }\n },\n flip: {\n left: function (position, data) {\n var within = data.within,\n withinOffset = within.offset.left + within.scrollLeft,\n outerWidth = within.width,\n offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n collisionPosLeft = position.left - data.collisionPosition.marginLeft,\n overLeft = collisionPosLeft - offsetLeft,\n overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n myOffset = data.my[0] === \"left\" ? -data.elemWidth : data.my[0] === \"right\" ? data.elemWidth : 0,\n atOffset = data.at[0] === \"left\" ? data.targetWidth : data.at[0] === \"right\" ? -data.targetWidth : 0,\n offset = -2 * data.offset[0],\n newOverRight,\n newOverLeft;\n if (overLeft < 0) {\n newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset;\n if (newOverRight < 0 || newOverRight < abs(overLeft)) {\n position.left += myOffset + atOffset + offset;\n }\n } else if (overRight > 0) {\n newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft;\n if (newOverLeft > 0 || abs(newOverLeft) < overRight) {\n position.left += myOffset + atOffset + offset;\n }\n }\n },\n top: function (position, data) {\n var within = data.within,\n withinOffset = within.offset.top + within.scrollTop,\n outerHeight = within.height,\n offsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n collisionPosTop = position.top - data.collisionPosition.marginTop,\n overTop = collisionPosTop - offsetTop,\n overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n top = data.my[1] === \"top\",\n myOffset = top ? -data.elemHeight : data.my[1] === \"bottom\" ? data.elemHeight : 0,\n atOffset = data.at[1] === \"top\" ? data.targetHeight : data.at[1] === \"bottom\" ? -data.targetHeight : 0,\n offset = -2 * data.offset[1],\n newOverTop,\n newOverBottom;\n if (overTop < 0) {\n newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset;\n if (newOverBottom < 0 || newOverBottom < abs(overTop)) {\n position.top += myOffset + atOffset + offset;\n }\n } else if (overBottom > 0) {\n newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop;\n if (newOverTop > 0 || abs(newOverTop) < overBottom) {\n position.top += myOffset + atOffset + offset;\n }\n }\n }\n },\n flipfit: {\n left: function () {\n $.ui.position.flip.left.apply(this, arguments);\n $.ui.position.fit.left.apply(this, arguments);\n },\n top: function () {\n $.ui.position.flip.top.apply(this, arguments);\n $.ui.position.fit.top.apply(this, arguments);\n }\n }\n };\n })();\n var position = $.ui.position;\n\n /*!\n * jQuery UI :data 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: :data Selector\n //>>group: Core\n //>>description: Selects elements which have data stored under the specified key.\n //>>docs: http://api.jqueryui.com/data-selector/\n\n var data = $.extend($.expr.pseudos, {\n data: $.expr.createPseudo ? $.expr.createPseudo(function (dataName) {\n return function (elem) {\n return !!$.data(elem, dataName);\n };\n }) :\n // Support: jQuery <1.8\n function (elem, i, match) {\n return !!$.data(elem, match[3]);\n }\n });\n\n /*!\n * jQuery UI Disable Selection 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: disableSelection\n //>>group: Core\n //>>description: Disable selection of text content within the set of matched elements.\n //>>docs: http://api.jqueryui.com/disableSelection/\n\n // This file is deprecated\n\n var disableSelection = $.fn.extend({\n disableSelection: function () {\n var eventType = \"onselectstart\" in document.createElement(\"div\") ? \"selectstart\" : \"mousedown\";\n return function () {\n return this.on(eventType + \".ui-disableSelection\", function (event) {\n event.preventDefault();\n });\n };\n }(),\n enableSelection: function () {\n return this.off(\".ui-disableSelection\");\n }\n });\n\n // Create a local jQuery because jQuery Color relies on it and the\n // global may not exist with AMD and a custom build (#10199).\n // This module is a noop if used as a regular AMD module.\n // eslint-disable-next-line no-unused-vars\n var jQuery = $;\n\n /*!\n * jQuery Color Animations v2.2.0\n * https://github.com/jquery/jquery-color\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Sun May 10 09:02:36 2020 +0200\n */\n\n var stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" + \"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n class2type = {},\n toString = class2type.toString,\n // plusequals test for += 100 -= 100\n rplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n // a set of RE's that can match strings and generate color tuples.\n stringParsers = [{\n re: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return [execResult[1], execResult[2], execResult[3], execResult[4]];\n }\n }, {\n re: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return [execResult[1] * 2.55, execResult[2] * 2.55, execResult[3] * 2.55, execResult[4]];\n }\n }, {\n // this regex ignores A-F because it's compared against an already lowercased string\n re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,\n parse: function (execResult) {\n return [parseInt(execResult[1], 16), parseInt(execResult[2], 16), parseInt(execResult[3], 16), execResult[4] ? (parseInt(execResult[4], 16) / 255).toFixed(2) : 1];\n }\n }, {\n // this regex ignores A-F because it's compared against an already lowercased string\n re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,\n parse: function (execResult) {\n return [parseInt(execResult[1] + execResult[1], 16), parseInt(execResult[2] + execResult[2], 16), parseInt(execResult[3] + execResult[3], 16), execResult[4] ? (parseInt(execResult[4] + execResult[4], 16) / 255).toFixed(2) : 1];\n }\n }, {\n re: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n space: \"hsla\",\n parse: function (execResult) {\n return [execResult[1], execResult[2] / 100, execResult[3] / 100, execResult[4]];\n }\n }],\n // jQuery.Color( )\n color = jQuery.Color = function (color, green, blue, alpha) {\n return new jQuery.Color.fn.parse(color, green, blue, alpha);\n },\n spaces = {\n rgba: {\n props: {\n red: {\n idx: 0,\n type: \"byte\"\n },\n green: {\n idx: 1,\n type: \"byte\"\n },\n blue: {\n idx: 2,\n type: \"byte\"\n }\n }\n },\n hsla: {\n props: {\n hue: {\n idx: 0,\n type: \"degrees\"\n },\n saturation: {\n idx: 1,\n type: \"percent\"\n },\n lightness: {\n idx: 2,\n type: \"percent\"\n }\n }\n }\n },\n propTypes = {\n \"byte\": {\n floor: true,\n max: 255\n },\n \"percent\": {\n max: 1\n },\n \"degrees\": {\n mod: 360,\n floor: true\n }\n },\n support = color.support = {},\n // element for support tests\n supportElem = jQuery(\"<p>\")[0],\n // colors = jQuery.Color.names\n colors,\n // local aliases of functions called often\n each = jQuery.each;\n\n // determine rgba support immediately\n supportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\n support.rgba = supportElem.style.backgroundColor.indexOf(\"rgba\") > -1;\n\n // define cache name and alpha properties\n // for rgba and hsla spaces\n each(spaces, function (spaceName, space) {\n space.cache = \"_\" + spaceName;\n space.props.alpha = {\n idx: 3,\n type: \"percent\",\n def: 1\n };\n });\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (_i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function getType(obj) {\n if (obj == null) {\n return obj + \"\";\n }\n return typeof obj === \"object\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n }\n function clamp(value, prop, allowEmpty) {\n var type = propTypes[prop.type] || {};\n if (value == null) {\n return allowEmpty || !prop.def ? null : prop.def;\n }\n\n // ~~ is an short way of doing floor for positive numbers\n value = type.floor ? ~~value : parseFloat(value);\n\n // IE will pass in empty strings as value for alpha,\n // which will hit this case\n if (isNaN(value)) {\n return prop.def;\n }\n if (type.mod) {\n // we add mod before modding to make sure that negatives values\n // get converted properly: -10 -> 350\n return (value + type.mod) % type.mod;\n }\n\n // for now all property types without mod have min and max\n return Math.min(type.max, Math.max(0, value));\n }\n function stringParse(string) {\n var inst = color(),\n rgba = inst._rgba = [];\n string = string.toLowerCase();\n each(stringParsers, function (_i, parser) {\n var parsed,\n match = parser.re.exec(string),\n values = match && parser.parse(match),\n spaceName = parser.space || \"rgba\";\n if (values) {\n parsed = inst[spaceName](values);\n\n // if this was an rgba parse the assignment might happen twice\n // oh well....\n inst[spaces[spaceName].cache] = parsed[spaces[spaceName].cache];\n rgba = inst._rgba = parsed._rgba;\n\n // exit each( stringParsers ) here because we matched\n return false;\n }\n });\n\n // Found a stringParser that handled it\n if (rgba.length) {\n // if this came from a parsed string, force \"transparent\" when alpha is 0\n // chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n if (rgba.join() === \"0,0,0,0\") {\n jQuery.extend(rgba, colors.transparent);\n }\n return inst;\n }\n\n // named colors\n return colors[string];\n }\n color.fn = jQuery.extend(color.prototype, {\n parse: function (red, green, blue, alpha) {\n if (red === undefined) {\n this._rgba = [null, null, null, null];\n return this;\n }\n if (red.jquery || red.nodeType) {\n red = jQuery(red).css(green);\n green = undefined;\n }\n var inst = this,\n type = getType(red),\n rgba = this._rgba = [];\n\n // more than 1 argument specified - assume ( red, green, blue, alpha )\n if (green !== undefined) {\n red = [red, green, blue, alpha];\n type = \"array\";\n }\n if (type === \"string\") {\n return this.parse(stringParse(red) || colors._default);\n }\n if (type === \"array\") {\n each(spaces.rgba.props, function (_key, prop) {\n rgba[prop.idx] = clamp(red[prop.idx], prop);\n });\n return this;\n }\n if (type === \"object\") {\n if (red instanceof color) {\n each(spaces, function (_spaceName, space) {\n if (red[space.cache]) {\n inst[space.cache] = red[space.cache].slice();\n }\n });\n } else {\n each(spaces, function (_spaceName, space) {\n var cache = space.cache;\n each(space.props, function (key, prop) {\n // if the cache doesn't exist, and we know how to convert\n if (!inst[cache] && space.to) {\n // if the value was null, we don't need to copy it\n // if the key was alpha, we don't need to copy it either\n if (key === \"alpha\" || red[key] == null) {\n return;\n }\n inst[cache] = space.to(inst._rgba);\n }\n\n // this is the only case where we allow nulls for ALL properties.\n // call clamp with alwaysAllowEmpty\n inst[cache][prop.idx] = clamp(red[key], prop, true);\n });\n\n // everything defined but alpha?\n if (inst[cache] && jQuery.inArray(null, inst[cache].slice(0, 3)) < 0) {\n // use the default of 1\n if (inst[cache][3] == null) {\n inst[cache][3] = 1;\n }\n if (space.from) {\n inst._rgba = space.from(inst[cache]);\n }\n }\n });\n }\n return this;\n }\n },\n is: function (compare) {\n var is = color(compare),\n same = true,\n inst = this;\n each(spaces, function (_, space) {\n var localCache,\n isCache = is[space.cache];\n if (isCache) {\n localCache = inst[space.cache] || space.to && space.to(inst._rgba) || [];\n each(space.props, function (_, prop) {\n if (isCache[prop.idx] != null) {\n same = isCache[prop.idx] === localCache[prop.idx];\n return same;\n }\n });\n }\n return same;\n });\n return same;\n },\n _space: function () {\n var used = [],\n inst = this;\n each(spaces, function (spaceName, space) {\n if (inst[space.cache]) {\n used.push(spaceName);\n }\n });\n return used.pop();\n },\n transition: function (other, distance) {\n var end = color(other),\n spaceName = end._space(),\n space = spaces[spaceName],\n startColor = this.alpha() === 0 ? color(\"transparent\") : this,\n start = startColor[space.cache] || space.to(startColor._rgba),\n result = start.slice();\n end = end[space.cache];\n each(space.props, function (_key, prop) {\n var index = prop.idx,\n startValue = start[index],\n endValue = end[index],\n type = propTypes[prop.type] || {};\n\n // if null, don't override start value\n if (endValue === null) {\n return;\n }\n\n // if null - use end\n if (startValue === null) {\n result[index] = endValue;\n } else {\n if (type.mod) {\n if (endValue - startValue > type.mod / 2) {\n startValue += type.mod;\n } else if (startValue - endValue > type.mod / 2) {\n startValue -= type.mod;\n }\n }\n result[index] = clamp((endValue - startValue) * distance + startValue, prop);\n }\n });\n return this[spaceName](result);\n },\n blend: function (opaque) {\n // if we are already opaque - return ourself\n if (this._rgba[3] === 1) {\n return this;\n }\n var rgb = this._rgba.slice(),\n a = rgb.pop(),\n blend = color(opaque)._rgba;\n return color(jQuery.map(rgb, function (v, i) {\n return (1 - a) * blend[i] + a * v;\n }));\n },\n toRgbaString: function () {\n var prefix = \"rgba(\",\n rgba = jQuery.map(this._rgba, function (v, i) {\n if (v != null) {\n return v;\n }\n return i > 2 ? 1 : 0;\n });\n if (rgba[3] === 1) {\n rgba.pop();\n prefix = \"rgb(\";\n }\n return prefix + rgba.join() + \")\";\n },\n toHslaString: function () {\n var prefix = \"hsla(\",\n hsla = jQuery.map(this.hsla(), function (v, i) {\n if (v == null) {\n v = i > 2 ? 1 : 0;\n }\n\n // catch 1 and 2\n if (i && i < 3) {\n v = Math.round(v * 100) + \"%\";\n }\n return v;\n });\n if (hsla[3] === 1) {\n hsla.pop();\n prefix = \"hsl(\";\n }\n return prefix + hsla.join() + \")\";\n },\n toHexString: function (includeAlpha) {\n var rgba = this._rgba.slice(),\n alpha = rgba.pop();\n if (includeAlpha) {\n rgba.push(~~(alpha * 255));\n }\n return \"#\" + jQuery.map(rgba, function (v) {\n // default to 0 when nulls exist\n v = (v || 0).toString(16);\n return v.length === 1 ? \"0\" + v : v;\n }).join(\"\");\n },\n toString: function () {\n return this._rgba[3] === 0 ? \"transparent\" : this.toRgbaString();\n }\n });\n color.fn.parse.prototype = color.fn;\n\n // hsla conversions adapted from:\n // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\n function hue2rgb(p, q, h) {\n h = (h + 1) % 1;\n if (h * 6 < 1) {\n return p + (q - p) * h * 6;\n }\n if (h * 2 < 1) {\n return q;\n }\n if (h * 3 < 2) {\n return p + (q - p) * (2 / 3 - h) * 6;\n }\n return p;\n }\n spaces.hsla.to = function (rgba) {\n if (rgba[0] == null || rgba[1] == null || rgba[2] == null) {\n return [null, null, null, rgba[3]];\n }\n var r = rgba[0] / 255,\n g = rgba[1] / 255,\n b = rgba[2] / 255,\n a = rgba[3],\n max = Math.max(r, g, b),\n min = Math.min(r, g, b),\n diff = max - min,\n add = max + min,\n l = add * 0.5,\n h,\n s;\n if (min === max) {\n h = 0;\n } else if (r === max) {\n h = 60 * (g - b) / diff + 360;\n } else if (g === max) {\n h = 60 * (b - r) / diff + 120;\n } else {\n h = 60 * (r - g) / diff + 240;\n }\n\n // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n if (diff === 0) {\n s = 0;\n } else if (l <= 0.5) {\n s = diff / add;\n } else {\n s = diff / (2 - add);\n }\n return [Math.round(h) % 360, s, l, a == null ? 1 : a];\n };\n spaces.hsla.from = function (hsla) {\n if (hsla[0] == null || hsla[1] == null || hsla[2] == null) {\n return [null, null, null, hsla[3]];\n }\n var h = hsla[0] / 360,\n s = hsla[1],\n l = hsla[2],\n a = hsla[3],\n q = l <= 0.5 ? l * (1 + s) : l + s - l * s,\n p = 2 * l - q;\n return [Math.round(hue2rgb(p, q, h + 1 / 3) * 255), Math.round(hue2rgb(p, q, h) * 255), Math.round(hue2rgb(p, q, h - 1 / 3) * 255), a];\n };\n each(spaces, function (spaceName, space) {\n var props = space.props,\n cache = space.cache,\n to = space.to,\n from = space.from;\n\n // makes rgba() and hsla()\n color.fn[spaceName] = function (value) {\n // generate a cache for this space if it doesn't exist\n if (to && !this[cache]) {\n this[cache] = to(this._rgba);\n }\n if (value === undefined) {\n return this[cache].slice();\n }\n var ret,\n type = getType(value),\n arr = type === \"array\" || type === \"object\" ? value : arguments,\n local = this[cache].slice();\n each(props, function (key, prop) {\n var val = arr[type === \"object\" ? key : prop.idx];\n if (val == null) {\n val = local[prop.idx];\n }\n local[prop.idx] = clamp(val, prop);\n });\n if (from) {\n ret = color(from(local));\n ret[cache] = local;\n return ret;\n } else {\n return color(local);\n }\n };\n\n // makes red() green() blue() alpha() hue() saturation() lightness()\n each(props, function (key, prop) {\n // alpha is included in more than one space\n if (color.fn[key]) {\n return;\n }\n color.fn[key] = function (value) {\n var local,\n cur,\n match,\n fn,\n vtype = getType(value);\n if (key === \"alpha\") {\n fn = this._hsla ? \"hsla\" : \"rgba\";\n } else {\n fn = spaceName;\n }\n local = this[fn]();\n cur = local[prop.idx];\n if (vtype === \"undefined\") {\n return cur;\n }\n if (vtype === \"function\") {\n value = value.call(this, cur);\n vtype = getType(value);\n }\n if (value == null && prop.empty) {\n return this;\n }\n if (vtype === \"string\") {\n match = rplusequals.exec(value);\n if (match) {\n value = cur + parseFloat(match[2]) * (match[1] === \"+\" ? 1 : -1);\n }\n }\n local[prop.idx] = value;\n return this[fn](local);\n };\n });\n });\n\n // add cssHook and .fx.step function for each named hook.\n // accept a space separated string of properties\n color.hook = function (hook) {\n var hooks = hook.split(\" \");\n each(hooks, function (_i, hook) {\n jQuery.cssHooks[hook] = {\n set: function (elem, value) {\n var parsed,\n curElem,\n backgroundColor = \"\";\n if (value !== \"transparent\" && (getType(value) !== \"string\" || (parsed = stringParse(value)))) {\n value = color(parsed || value);\n if (!support.rgba && value._rgba[3] !== 1) {\n curElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n while ((backgroundColor === \"\" || backgroundColor === \"transparent\") && curElem && curElem.style) {\n try {\n backgroundColor = jQuery.css(curElem, \"backgroundColor\");\n curElem = curElem.parentNode;\n } catch (e) {}\n }\n value = value.blend(backgroundColor && backgroundColor !== \"transparent\" ? backgroundColor : \"_default\");\n }\n value = value.toRgbaString();\n }\n try {\n elem.style[hook] = value;\n } catch (e) {\n\n // wrapped to prevent IE from throwing errors on \"invalid\" values like 'auto' or 'inherit'\n }\n }\n };\n jQuery.fx.step[hook] = function (fx) {\n if (!fx.colorInit) {\n fx.start = color(fx.elem, hook);\n fx.end = color(fx.end);\n fx.colorInit = true;\n }\n jQuery.cssHooks[hook].set(fx.elem, fx.start.transition(fx.end, fx.pos));\n };\n });\n };\n color.hook(stepHooks);\n jQuery.cssHooks.borderColor = {\n expand: function (value) {\n var expanded = {};\n each([\"Top\", \"Right\", \"Bottom\", \"Left\"], function (_i, part) {\n expanded[\"border\" + part + \"Color\"] = value;\n });\n return expanded;\n }\n };\n\n // Basic color names only.\n // Usage of any of the other color names requires adding yourself or including\n // jquery.color.svg-names.js.\n colors = jQuery.Color.names = {\n // 4.1. Basic color keywords\n aqua: \"#00ffff\",\n black: \"#000000\",\n blue: \"#0000ff\",\n fuchsia: \"#ff00ff\",\n gray: \"#808080\",\n green: \"#008000\",\n lime: \"#00ff00\",\n maroon: \"#800000\",\n navy: \"#000080\",\n olive: \"#808000\",\n purple: \"#800080\",\n red: \"#ff0000\",\n silver: \"#c0c0c0\",\n teal: \"#008080\",\n white: \"#ffffff\",\n yellow: \"#ffff00\",\n // 4.2.3. \"transparent\" color keyword\n transparent: [null, null, null, 0],\n _default: \"#ffffff\"\n };\n\n /*!\n * jQuery UI Effects 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Effects Core\n //>>group: Effects\n /* eslint-disable max-len */\n //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n /* eslint-enable max-len */\n //>>docs: http://api.jqueryui.com/category/effects-core/\n //>>demos: http://jqueryui.com/effect/\n\n var dataSpace = \"ui-effects-\",\n dataSpaceStyle = \"ui-effects-style\",\n dataSpaceAnimated = \"ui-effects-animated\";\n $.effects = {\n effect: {}\n };\n\n /******************************************************************************/\n /****************************** CLASS ANIMATIONS ******************************/\n /******************************************************************************/\n (function () {\n var classAnimationActions = [\"add\", \"remove\", \"toggle\"],\n shorthandStyles = {\n border: 1,\n borderBottom: 1,\n borderColor: 1,\n borderLeft: 1,\n borderRight: 1,\n borderTop: 1,\n borderWidth: 1,\n margin: 1,\n padding: 1\n };\n $.each([\"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\"], function (_, prop) {\n $.fx.step[prop] = function (fx) {\n if (fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr) {\n jQuery.style(fx.elem, prop, fx.end);\n fx.setAttr = true;\n }\n };\n });\n function camelCase(string) {\n return string.replace(/-([\\da-z])/gi, function (all, letter) {\n return letter.toUpperCase();\n });\n }\n function getElementStyles(elem) {\n var key,\n len,\n style = elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle(elem, null) : elem.currentStyle,\n styles = {};\n if (style && style.length && style[0] && style[style[0]]) {\n len = style.length;\n while (len--) {\n key = style[len];\n if (typeof style[key] === \"string\") {\n styles[camelCase(key)] = style[key];\n }\n }\n\n // Support: Opera, IE <9\n } else {\n for (key in style) {\n if (typeof style[key] === \"string\") {\n styles[key] = style[key];\n }\n }\n }\n return styles;\n }\n function styleDifference(oldStyle, newStyle) {\n var diff = {},\n name,\n value;\n for (name in newStyle) {\n value = newStyle[name];\n if (oldStyle[name] !== value) {\n if (!shorthandStyles[name]) {\n if ($.fx.step[name] || !isNaN(parseFloat(value))) {\n diff[name] = value;\n }\n }\n }\n }\n return diff;\n }\n\n // Support: jQuery <1.8\n if (!$.fn.addBack) {\n $.fn.addBack = function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n };\n }\n $.effects.animateClass = function (value, duration, easing, callback) {\n var o = $.speed(duration, easing, callback);\n return this.queue(function () {\n var animated = $(this),\n baseClass = animated.attr(\"class\") || \"\",\n applyClassChange,\n allAnimations = o.children ? animated.find(\"*\").addBack() : animated;\n\n // Map the animated objects to store the original styles.\n allAnimations = allAnimations.map(function () {\n var el = $(this);\n return {\n el: el,\n start: getElementStyles(this)\n };\n });\n\n // Apply class change\n applyClassChange = function () {\n $.each(classAnimationActions, function (i, action) {\n if (value[action]) {\n animated[action + \"Class\"](value[action]);\n }\n });\n };\n applyClassChange();\n\n // Map all animated objects again - calculate new styles and diff\n allAnimations = allAnimations.map(function () {\n this.end = getElementStyles(this.el[0]);\n this.diff = styleDifference(this.start, this.end);\n return this;\n });\n\n // Apply original class\n animated.attr(\"class\", baseClass);\n\n // Map all animated objects again - this time collecting a promise\n allAnimations = allAnimations.map(function () {\n var styleInfo = this,\n dfd = $.Deferred(),\n opts = $.extend({}, o, {\n queue: false,\n complete: function () {\n dfd.resolve(styleInfo);\n }\n });\n this.el.animate(this.diff, opts);\n return dfd.promise();\n });\n\n // Once all animations have completed:\n $.when.apply($, allAnimations.get()).done(function () {\n // Set the final class\n applyClassChange();\n\n // For each animated element,\n // clear all css properties that were animated\n $.each(arguments, function () {\n var el = this.el;\n $.each(this.diff, function (key) {\n el.css(key, \"\");\n });\n });\n\n // This is guarnteed to be there if you use jQuery.speed()\n // it also handles dequeuing the next anim...\n o.complete.call(animated[0]);\n });\n });\n };\n $.fn.extend({\n addClass: function (orig) {\n return function (classNames, speed, easing, callback) {\n return speed ? $.effects.animateClass.call(this, {\n add: classNames\n }, speed, easing, callback) : orig.apply(this, arguments);\n };\n }($.fn.addClass),\n removeClass: function (orig) {\n return function (classNames, speed, easing, callback) {\n return arguments.length > 1 ? $.effects.animateClass.call(this, {\n remove: classNames\n }, speed, easing, callback) : orig.apply(this, arguments);\n };\n }($.fn.removeClass),\n toggleClass: function (orig) {\n return function (classNames, force, speed, easing, callback) {\n if (typeof force === \"boolean\" || force === undefined) {\n if (!speed) {\n // Without speed parameter\n return orig.apply(this, arguments);\n } else {\n return $.effects.animateClass.call(this, force ? {\n add: classNames\n } : {\n remove: classNames\n }, speed, easing, callback);\n }\n } else {\n // Without force parameter\n return $.effects.animateClass.call(this, {\n toggle: classNames\n }, force, speed, easing);\n }\n };\n }($.fn.toggleClass),\n switchClass: function (remove, add, speed, easing, callback) {\n return $.effects.animateClass.call(this, {\n add: add,\n remove: remove\n }, speed, easing, callback);\n }\n });\n })();\n\n /******************************************************************************/\n /*********************************** EFFECTS **********************************/\n /******************************************************************************/\n\n (function () {\n if ($.expr && $.expr.pseudos && $.expr.pseudos.animated) {\n $.expr.pseudos.animated = function (orig) {\n return function (elem) {\n return !!$(elem).data(dataSpaceAnimated) || orig(elem);\n };\n }($.expr.pseudos.animated);\n }\n if ($.uiBackCompat !== false) {\n $.extend($.effects, {\n // Saves a set of properties in a data storage\n save: function (element, set) {\n var i = 0,\n length = set.length;\n for (; i < length; i++) {\n if (set[i] !== null) {\n element.data(dataSpace + set[i], element[0].style[set[i]]);\n }\n }\n },\n // Restores a set of previously saved properties from a data storage\n restore: function (element, set) {\n var val,\n i = 0,\n length = set.length;\n for (; i < length; i++) {\n if (set[i] !== null) {\n val = element.data(dataSpace + set[i]);\n element.css(set[i], val);\n }\n }\n },\n setMode: function (el, mode) {\n if (mode === \"toggle\") {\n mode = el.is(\":hidden\") ? \"show\" : \"hide\";\n }\n return mode;\n },\n // Wraps the element around a wrapper that copies position properties\n createWrapper: function (element) {\n // If the element is already wrapped, return it\n if (element.parent().is(\".ui-effects-wrapper\")) {\n return element.parent();\n }\n\n // Wrap the element\n var props = {\n width: element.outerWidth(true),\n height: element.outerHeight(true),\n \"float\": element.css(\"float\")\n },\n wrapper = $(\"<div></div>\").addClass(\"ui-effects-wrapper\").css({\n fontSize: \"100%\",\n background: \"transparent\",\n border: \"none\",\n margin: 0,\n padding: 0\n }),\n // Store the size in case width/height are defined in % - Fixes #5245\n size = {\n width: element.width(),\n height: element.height()\n },\n active = document.activeElement;\n\n // Support: Firefox\n // Firefox incorrectly exposes anonymous content\n // https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n try {\n // eslint-disable-next-line no-unused-expressions\n active.id;\n } catch (e) {\n active = document.body;\n }\n element.wrap(wrapper);\n\n // Fixes #7595 - Elements lose focus when wrapped.\n if (element[0] === active || $.contains(element[0], active)) {\n $(active).trigger(\"focus\");\n }\n\n // Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n // lose the reference to the wrapped element\n wrapper = element.parent();\n\n // Transfer positioning properties to the wrapper\n if (element.css(\"position\") === \"static\") {\n wrapper.css({\n position: \"relative\"\n });\n element.css({\n position: \"relative\"\n });\n } else {\n $.extend(props, {\n position: element.css(\"position\"),\n zIndex: element.css(\"z-index\")\n });\n $.each([\"top\", \"left\", \"bottom\", \"right\"], function (i, pos) {\n props[pos] = element.css(pos);\n if (isNaN(parseInt(props[pos], 10))) {\n props[pos] = \"auto\";\n }\n });\n element.css({\n position: \"relative\",\n top: 0,\n left: 0,\n right: \"auto\",\n bottom: \"auto\"\n });\n }\n element.css(size);\n return wrapper.css(props).show();\n },\n removeWrapper: function (element) {\n var active = document.activeElement;\n if (element.parent().is(\".ui-effects-wrapper\")) {\n element.parent().replaceWith(element);\n\n // Fixes #7595 - Elements lose focus when wrapped.\n if (element[0] === active || $.contains(element[0], active)) {\n $(active).trigger(\"focus\");\n }\n }\n return element;\n }\n });\n }\n $.extend($.effects, {\n version: \"1.13.2\",\n define: function (name, mode, effect) {\n if (!effect) {\n effect = mode;\n mode = \"effect\";\n }\n $.effects.effect[name] = effect;\n $.effects.effect[name].mode = mode;\n return effect;\n },\n scaledDimensions: function (element, percent, direction) {\n if (percent === 0) {\n return {\n height: 0,\n width: 0,\n outerHeight: 0,\n outerWidth: 0\n };\n }\n var x = direction !== \"horizontal\" ? (percent || 100) / 100 : 1,\n y = direction !== \"vertical\" ? (percent || 100) / 100 : 1;\n return {\n height: element.height() * y,\n width: element.width() * x,\n outerHeight: element.outerHeight() * y,\n outerWidth: element.outerWidth() * x\n };\n },\n clipToBox: function (animation) {\n return {\n width: animation.clip.right - animation.clip.left,\n height: animation.clip.bottom - animation.clip.top,\n left: animation.clip.left,\n top: animation.clip.top\n };\n },\n // Injects recently queued functions to be first in line (after \"inprogress\")\n unshift: function (element, queueLength, count) {\n var queue = element.queue();\n if (queueLength > 1) {\n queue.splice.apply(queue, [1, 0].concat(queue.splice(queueLength, count)));\n }\n element.dequeue();\n },\n saveStyle: function (element) {\n element.data(dataSpaceStyle, element[0].style.cssText);\n },\n restoreStyle: function (element) {\n element[0].style.cssText = element.data(dataSpaceStyle) || \"\";\n element.removeData(dataSpaceStyle);\n },\n mode: function (element, mode) {\n var hidden = element.is(\":hidden\");\n if (mode === \"toggle\") {\n mode = hidden ? \"show\" : \"hide\";\n }\n if (hidden ? mode === \"hide\" : mode === \"show\") {\n mode = \"none\";\n }\n return mode;\n },\n // Translates a [top,left] array into a baseline value\n getBaseline: function (origin, original) {\n var y, x;\n switch (origin[0]) {\n case \"top\":\n y = 0;\n break;\n case \"middle\":\n y = 0.5;\n break;\n case \"bottom\":\n y = 1;\n break;\n default:\n y = origin[0] / original.height;\n }\n switch (origin[1]) {\n case \"left\":\n x = 0;\n break;\n case \"center\":\n x = 0.5;\n break;\n case \"right\":\n x = 1;\n break;\n default:\n x = origin[1] / original.width;\n }\n return {\n x: x,\n y: y\n };\n },\n // Creates a placeholder element so that the original element can be made absolute\n createPlaceholder: function (element) {\n var placeholder,\n cssPosition = element.css(\"position\"),\n position = element.position();\n\n // Lock in margins first to account for form elements, which\n // will change margin if you explicitly set height\n // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n // Support: Safari\n element.css({\n marginTop: element.css(\"marginTop\"),\n marginBottom: element.css(\"marginBottom\"),\n marginLeft: element.css(\"marginLeft\"),\n marginRight: element.css(\"marginRight\")\n }).outerWidth(element.outerWidth()).outerHeight(element.outerHeight());\n if (/^(static|relative)/.test(cssPosition)) {\n cssPosition = \"absolute\";\n placeholder = $(\"<\" + element[0].nodeName + \">\").insertAfter(element).css({\n // Convert inline to inline block to account for inline elements\n // that turn to inline block based on content (like img)\n display: /^(inline|ruby)/.test(element.css(\"display\")) ? \"inline-block\" : \"block\",\n visibility: \"hidden\",\n // Margins need to be set to account for margin collapse\n marginTop: element.css(\"marginTop\"),\n marginBottom: element.css(\"marginBottom\"),\n marginLeft: element.css(\"marginLeft\"),\n marginRight: element.css(\"marginRight\"),\n \"float\": element.css(\"float\")\n }).outerWidth(element.outerWidth()).outerHeight(element.outerHeight()).addClass(\"ui-effects-placeholder\");\n element.data(dataSpace + \"placeholder\", placeholder);\n }\n element.css({\n position: cssPosition,\n left: position.left,\n top: position.top\n });\n return placeholder;\n },\n removePlaceholder: function (element) {\n var dataKey = dataSpace + \"placeholder\",\n placeholder = element.data(dataKey);\n if (placeholder) {\n placeholder.remove();\n element.removeData(dataKey);\n }\n },\n // Removes a placeholder if it exists and restores\n // properties that were modified during placeholder creation\n cleanUp: function (element) {\n $.effects.restoreStyle(element);\n $.effects.removePlaceholder(element);\n },\n setTransition: function (element, list, factor, value) {\n value = value || {};\n $.each(list, function (i, x) {\n var unit = element.cssUnit(x);\n if (unit[0] > 0) {\n value[x] = unit[0] * factor + unit[1];\n }\n });\n return value;\n }\n });\n\n // Return an effect options object for the given parameters:\n function _normalizeArguments(effect, options, speed, callback) {\n // Allow passing all options as the first parameter\n if ($.isPlainObject(effect)) {\n options = effect;\n effect = effect.effect;\n }\n\n // Convert to an object\n effect = {\n effect: effect\n };\n\n // Catch (effect, null, ...)\n if (options == null) {\n options = {};\n }\n\n // Catch (effect, callback)\n if (typeof options === \"function\") {\n callback = options;\n speed = null;\n options = {};\n }\n\n // Catch (effect, speed, ?)\n if (typeof options === \"number\" || $.fx.speeds[options]) {\n callback = speed;\n speed = options;\n options = {};\n }\n\n // Catch (effect, options, callback)\n if (typeof speed === \"function\") {\n callback = speed;\n speed = null;\n }\n\n // Add options to effect\n if (options) {\n $.extend(effect, options);\n }\n speed = speed || options.duration;\n effect.duration = $.fx.off ? 0 : typeof speed === \"number\" ? speed : speed in $.fx.speeds ? $.fx.speeds[speed] : $.fx.speeds._default;\n effect.complete = callback || options.complete;\n return effect;\n }\n function standardAnimationOption(option) {\n // Valid standard speeds (nothing, number, named speed)\n if (!option || typeof option === \"number\" || $.fx.speeds[option]) {\n return true;\n }\n\n // Invalid strings - treat as \"normal\" speed\n if (typeof option === \"string\" && !$.effects.effect[option]) {\n return true;\n }\n\n // Complete callback\n if (typeof option === \"function\") {\n return true;\n }\n\n // Options hash (but not naming an effect)\n if (typeof option === \"object\" && !option.effect) {\n return true;\n }\n\n // Didn't match any standard API\n return false;\n }\n $.fn.extend({\n effect: function /* effect, options, speed, callback */\n () {\n var args = _normalizeArguments.apply(this, arguments),\n effectMethod = $.effects.effect[args.effect],\n defaultMode = effectMethod.mode,\n queue = args.queue,\n queueName = queue || \"fx\",\n complete = args.complete,\n mode = args.mode,\n modes = [],\n prefilter = function (next) {\n var el = $(this),\n normalizedMode = $.effects.mode(el, mode) || defaultMode;\n\n // Sentinel for duck-punching the :animated pseudo-selector\n el.data(dataSpaceAnimated, true);\n\n // Save effect mode for later use,\n // we can't just call $.effects.mode again later,\n // as the .show() below destroys the initial state\n modes.push(normalizedMode);\n\n // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14\n if (defaultMode && (normalizedMode === \"show\" || normalizedMode === defaultMode && normalizedMode === \"hide\")) {\n el.show();\n }\n if (!defaultMode || normalizedMode !== \"none\") {\n $.effects.saveStyle(el);\n }\n if (typeof next === \"function\") {\n next();\n }\n };\n if ($.fx.off || !effectMethod) {\n // Delegate to the original method (e.g., .show()) if possible\n if (mode) {\n return this[mode](args.duration, complete);\n } else {\n return this.each(function () {\n if (complete) {\n complete.call(this);\n }\n });\n }\n }\n function run(next) {\n var elem = $(this);\n function cleanup() {\n elem.removeData(dataSpaceAnimated);\n $.effects.cleanUp(elem);\n if (args.mode === \"hide\") {\n elem.hide();\n }\n done();\n }\n function done() {\n if (typeof complete === \"function\") {\n complete.call(elem[0]);\n }\n if (typeof next === \"function\") {\n next();\n }\n }\n\n // Override mode option on a per element basis,\n // as toggle can be either show or hide depending on element state\n args.mode = modes.shift();\n if ($.uiBackCompat !== false && !defaultMode) {\n if (elem.is(\":hidden\") ? mode === \"hide\" : mode === \"show\") {\n // Call the core method to track \"olddisplay\" properly\n elem[mode]();\n done();\n } else {\n effectMethod.call(elem[0], args, done);\n }\n } else {\n if (args.mode === \"none\") {\n // Call the core method to track \"olddisplay\" properly\n elem[mode]();\n done();\n } else {\n effectMethod.call(elem[0], args, cleanup);\n }\n }\n }\n\n // Run prefilter on all elements first to ensure that\n // any showing or hiding happens before placeholder creation,\n // which ensures that any layout changes are correctly captured.\n return queue === false ? this.each(prefilter).each(run) : this.queue(queueName, prefilter).queue(queueName, run);\n },\n show: function (orig) {\n return function (option) {\n if (standardAnimationOption(option)) {\n return orig.apply(this, arguments);\n } else {\n var args = _normalizeArguments.apply(this, arguments);\n args.mode = \"show\";\n return this.effect.call(this, args);\n }\n };\n }($.fn.show),\n hide: function (orig) {\n return function (option) {\n if (standardAnimationOption(option)) {\n return orig.apply(this, arguments);\n } else {\n var args = _normalizeArguments.apply(this, arguments);\n args.mode = \"hide\";\n return this.effect.call(this, args);\n }\n };\n }($.fn.hide),\n toggle: function (orig) {\n return function (option) {\n if (standardAnimationOption(option) || typeof option === \"boolean\") {\n return orig.apply(this, arguments);\n } else {\n var args = _normalizeArguments.apply(this, arguments);\n args.mode = \"toggle\";\n return this.effect.call(this, args);\n }\n };\n }($.fn.toggle),\n cssUnit: function (key) {\n var style = this.css(key),\n val = [];\n $.each([\"em\", \"px\", \"%\", \"pt\"], function (i, unit) {\n if (style.indexOf(unit) > 0) {\n val = [parseFloat(style), unit];\n }\n });\n return val;\n },\n cssClip: function (clipObj) {\n if (clipObj) {\n return this.css(\"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" + clipObj.bottom + \"px \" + clipObj.left + \"px)\");\n }\n return parseClip(this.css(\"clip\"), this);\n },\n transfer: function (options, done) {\n var element = $(this),\n target = $(options.to),\n targetFixed = target.css(\"position\") === \"fixed\",\n body = $(\"body\"),\n fixTop = targetFixed ? body.scrollTop() : 0,\n fixLeft = targetFixed ? body.scrollLeft() : 0,\n endPosition = target.offset(),\n animation = {\n top: endPosition.top - fixTop,\n left: endPosition.left - fixLeft,\n height: target.innerHeight(),\n width: target.innerWidth()\n },\n startPosition = element.offset(),\n transfer = $(\"<div class='ui-effects-transfer'></div>\");\n transfer.appendTo(\"body\").addClass(options.className).css({\n top: startPosition.top - fixTop,\n left: startPosition.left - fixLeft,\n height: element.innerHeight(),\n width: element.innerWidth(),\n position: targetFixed ? \"fixed\" : \"absolute\"\n }).animate(animation, options.duration, options.easing, function () {\n transfer.remove();\n if (typeof done === \"function\") {\n done();\n }\n });\n }\n });\n function parseClip(str, element) {\n var outerWidth = element.outerWidth(),\n outerHeight = element.outerHeight(),\n clipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n values = clipRegex.exec(str) || [\"\", 0, outerWidth, outerHeight, 0];\n return {\n top: parseFloat(values[1]) || 0,\n right: values[2] === \"auto\" ? outerWidth : parseFloat(values[2]),\n bottom: values[3] === \"auto\" ? outerHeight : parseFloat(values[3]),\n left: parseFloat(values[4]) || 0\n };\n }\n $.fx.step.clip = function (fx) {\n if (!fx.clipInit) {\n fx.start = $(fx.elem).cssClip();\n if (typeof fx.end === \"string\") {\n fx.end = parseClip(fx.end, fx.elem);\n }\n fx.clipInit = true;\n }\n $(fx.elem).cssClip({\n top: fx.pos * (fx.end.top - fx.start.top) + fx.start.top,\n right: fx.pos * (fx.end.right - fx.start.right) + fx.start.right,\n bottom: fx.pos * (fx.end.bottom - fx.start.bottom) + fx.start.bottom,\n left: fx.pos * (fx.end.left - fx.start.left) + fx.start.left\n });\n };\n })();\n\n /******************************************************************************/\n /*********************************** EASING ***********************************/\n /******************************************************************************/\n\n (function () {\n // Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var baseEasings = {};\n $.each([\"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\"], function (i, name) {\n baseEasings[name] = function (p) {\n return Math.pow(p, i + 2);\n };\n });\n $.extend(baseEasings, {\n Sine: function (p) {\n return 1 - Math.cos(p * Math.PI / 2);\n },\n Circ: function (p) {\n return 1 - Math.sqrt(1 - p * p);\n },\n Elastic: function (p) {\n return p === 0 || p === 1 ? p : -Math.pow(2, 8 * (p - 1)) * Math.sin(((p - 1) * 80 - 7.5) * Math.PI / 15);\n },\n Back: function (p) {\n return p * p * (3 * p - 2);\n },\n Bounce: function (p) {\n var pow2,\n bounce = 4;\n while (p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - p, 2);\n }\n });\n $.each(baseEasings, function (name, easeIn) {\n $.easing[\"easeIn\" + name] = easeIn;\n $.easing[\"easeOut\" + name] = function (p) {\n return 1 - easeIn(1 - p);\n };\n $.easing[\"easeInOut\" + name] = function (p) {\n return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn(p * -2 + 2) / 2;\n };\n });\n })();\n var effect = $.effects;\n\n /*!\n * jQuery UI Effects Blind 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Blind Effect\n //>>group: Effects\n //>>description: Blinds the element.\n //>>docs: http://api.jqueryui.com/blind-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectBlind = $.effects.define(\"blind\", \"hide\", function (options, done) {\n var map = {\n up: [\"bottom\", \"top\"],\n vertical: [\"bottom\", \"top\"],\n down: [\"top\", \"bottom\"],\n left: [\"right\", \"left\"],\n horizontal: [\"right\", \"left\"],\n right: [\"left\", \"right\"]\n },\n element = $(this),\n direction = options.direction || \"up\",\n start = element.cssClip(),\n animate = {\n clip: $.extend({}, start)\n },\n placeholder = $.effects.createPlaceholder(element);\n animate.clip[map[direction][0]] = animate.clip[map[direction][1]];\n if (options.mode === \"show\") {\n element.cssClip(animate.clip);\n if (placeholder) {\n placeholder.css($.effects.clipToBox(animate));\n }\n animate.clip = start;\n }\n if (placeholder) {\n placeholder.animate($.effects.clipToBox(animate), options.duration, options.easing);\n }\n element.animate(animate, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Bounce 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Bounce Effect\n //>>group: Effects\n //>>description: Bounces an element horizontally or vertically n times.\n //>>docs: http://api.jqueryui.com/bounce-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectBounce = $.effects.define(\"bounce\", function (options, done) {\n var upAnim,\n downAnim,\n refValue,\n element = $(this),\n // Defaults:\n mode = options.mode,\n hide = mode === \"hide\",\n show = mode === \"show\",\n direction = options.direction || \"up\",\n distance = options.distance,\n times = options.times || 5,\n // Number of internal animations\n anims = times * 2 + (show || hide ? 1 : 0),\n speed = options.duration / anims,\n easing = options.easing,\n // Utility:\n ref = direction === \"up\" || direction === \"down\" ? \"top\" : \"left\",\n motion = direction === \"up\" || direction === \"left\",\n i = 0,\n queuelen = element.queue().length;\n $.effects.createPlaceholder(element);\n refValue = element.css(ref);\n\n // Default distance for the BIGGEST bounce is the outer Distance / 3\n if (!distance) {\n distance = element[ref === \"top\" ? \"outerHeight\" : \"outerWidth\"]() / 3;\n }\n if (show) {\n downAnim = {\n opacity: 1\n };\n downAnim[ref] = refValue;\n\n // If we are showing, force opacity 0 and set the initial position\n // then do the \"first\" animation\n element.css(\"opacity\", 0).css(ref, motion ? -distance * 2 : distance * 2).animate(downAnim, speed, easing);\n }\n\n // Start at the smallest distance if we are hiding\n if (hide) {\n distance = distance / Math.pow(2, times - 1);\n }\n downAnim = {};\n downAnim[ref] = refValue;\n\n // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here\n for (; i < times; i++) {\n upAnim = {};\n upAnim[ref] = (motion ? \"-=\" : \"+=\") + distance;\n element.animate(upAnim, speed, easing).animate(downAnim, speed, easing);\n distance = hide ? distance * 2 : distance / 2;\n }\n\n // Last Bounce when Hiding\n if (hide) {\n upAnim = {\n opacity: 0\n };\n upAnim[ref] = (motion ? \"-=\" : \"+=\") + distance;\n element.animate(upAnim, speed, easing);\n }\n element.queue(done);\n $.effects.unshift(element, queuelen, anims + 1);\n });\n\n /*!\n * jQuery UI Effects Clip 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Clip Effect\n //>>group: Effects\n //>>description: Clips the element on and off like an old TV.\n //>>docs: http://api.jqueryui.com/clip-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectClip = $.effects.define(\"clip\", \"hide\", function (options, done) {\n var start,\n animate = {},\n element = $(this),\n direction = options.direction || \"vertical\",\n both = direction === \"both\",\n horizontal = both || direction === \"horizontal\",\n vertical = both || direction === \"vertical\";\n start = element.cssClip();\n animate.clip = {\n top: vertical ? (start.bottom - start.top) / 2 : start.top,\n right: horizontal ? (start.right - start.left) / 2 : start.right,\n bottom: vertical ? (start.bottom - start.top) / 2 : start.bottom,\n left: horizontal ? (start.right - start.left) / 2 : start.left\n };\n $.effects.createPlaceholder(element);\n if (options.mode === \"show\") {\n element.cssClip(animate.clip);\n animate.clip = start;\n }\n element.animate(animate, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Drop 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Drop Effect\n //>>group: Effects\n //>>description: Moves an element in one direction and hides it at the same time.\n //>>docs: http://api.jqueryui.com/drop-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectDrop = $.effects.define(\"drop\", \"hide\", function (options, done) {\n var distance,\n element = $(this),\n mode = options.mode,\n show = mode === \"show\",\n direction = options.direction || \"left\",\n ref = direction === \"up\" || direction === \"down\" ? \"top\" : \"left\",\n motion = direction === \"up\" || direction === \"left\" ? \"-=\" : \"+=\",\n oppositeMotion = motion === \"+=\" ? \"-=\" : \"+=\",\n animation = {\n opacity: 0\n };\n $.effects.createPlaceholder(element);\n distance = options.distance || element[ref === \"top\" ? \"outerHeight\" : \"outerWidth\"](true) / 2;\n animation[ref] = motion + distance;\n if (show) {\n element.css(animation);\n animation[ref] = oppositeMotion + distance;\n animation.opacity = 1;\n }\n\n // Animate\n element.animate(animation, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Explode 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Explode Effect\n //>>group: Effects\n /* eslint-disable max-len */\n //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.\n /* eslint-enable max-len */\n //>>docs: http://api.jqueryui.com/explode-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectExplode = $.effects.define(\"explode\", \"hide\", function (options, done) {\n var i,\n j,\n left,\n top,\n mx,\n my,\n rows = options.pieces ? Math.round(Math.sqrt(options.pieces)) : 3,\n cells = rows,\n element = $(this),\n mode = options.mode,\n show = mode === \"show\",\n // Show and then visibility:hidden the element before calculating offset\n offset = element.show().css(\"visibility\", \"hidden\").offset(),\n // Width and height of a piece\n width = Math.ceil(element.outerWidth() / cells),\n height = Math.ceil(element.outerHeight() / rows),\n pieces = [];\n\n // Children animate complete:\n function childComplete() {\n pieces.push(this);\n if (pieces.length === rows * cells) {\n animComplete();\n }\n }\n\n // Clone the element for each row and cell.\n for (i = 0; i < rows; i++) {\n // ===>\n top = offset.top + i * height;\n my = i - (rows - 1) / 2;\n for (j = 0; j < cells; j++) {\n // |||\n left = offset.left + j * width;\n mx = j - (cells - 1) / 2;\n\n // Create a clone of the now hidden main element that will be absolute positioned\n // within a wrapper div off the -left and -top equal to size of our pieces\n element.clone().appendTo(\"body\").wrap(\"<div></div>\").css({\n position: \"absolute\",\n visibility: \"visible\",\n left: -j * width,\n top: -i * height\n })\n\n // Select the wrapper - make it overflow: hidden and absolute positioned based on\n // where the original was located +left and +top equal to the size of pieces\n .parent().addClass(\"ui-effects-explode\").css({\n position: \"absolute\",\n overflow: \"hidden\",\n width: width,\n height: height,\n left: left + (show ? mx * width : 0),\n top: top + (show ? my * height : 0),\n opacity: show ? 0 : 1\n }).animate({\n left: left + (show ? 0 : mx * width),\n top: top + (show ? 0 : my * height),\n opacity: show ? 1 : 0\n }, options.duration || 500, options.easing, childComplete);\n }\n }\n function animComplete() {\n element.css({\n visibility: \"visible\"\n });\n $(pieces).remove();\n done();\n }\n });\n\n /*!\n * jQuery UI Effects Fade 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Fade Effect\n //>>group: Effects\n //>>description: Fades the element.\n //>>docs: http://api.jqueryui.com/fade-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectFade = $.effects.define(\"fade\", \"toggle\", function (options, done) {\n var show = options.mode === \"show\";\n $(this).css(\"opacity\", show ? 0 : 1).animate({\n opacity: show ? 1 : 0\n }, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Fold 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Fold Effect\n //>>group: Effects\n //>>description: Folds an element first horizontally and then vertically.\n //>>docs: http://api.jqueryui.com/fold-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectFold = $.effects.define(\"fold\", \"hide\", function (options, done) {\n // Create element\n var element = $(this),\n mode = options.mode,\n show = mode === \"show\",\n hide = mode === \"hide\",\n size = options.size || 15,\n percent = /([0-9]+)%/.exec(size),\n horizFirst = !!options.horizFirst,\n ref = horizFirst ? [\"right\", \"bottom\"] : [\"bottom\", \"right\"],\n duration = options.duration / 2,\n placeholder = $.effects.createPlaceholder(element),\n start = element.cssClip(),\n animation1 = {\n clip: $.extend({}, start)\n },\n animation2 = {\n clip: $.extend({}, start)\n },\n distance = [start[ref[0]], start[ref[1]]],\n queuelen = element.queue().length;\n if (percent) {\n size = parseInt(percent[1], 10) / 100 * distance[hide ? 0 : 1];\n }\n animation1.clip[ref[0]] = size;\n animation2.clip[ref[0]] = size;\n animation2.clip[ref[1]] = 0;\n if (show) {\n element.cssClip(animation2.clip);\n if (placeholder) {\n placeholder.css($.effects.clipToBox(animation2));\n }\n animation2.clip = start;\n }\n\n // Animate\n element.queue(function (next) {\n if (placeholder) {\n placeholder.animate($.effects.clipToBox(animation1), duration, options.easing).animate($.effects.clipToBox(animation2), duration, options.easing);\n }\n next();\n }).animate(animation1, duration, options.easing).animate(animation2, duration, options.easing).queue(done);\n $.effects.unshift(element, queuelen, 4);\n });\n\n /*!\n * jQuery UI Effects Highlight 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Highlight Effect\n //>>group: Effects\n //>>description: Highlights the background of an element in a defined color for a custom duration.\n //>>docs: http://api.jqueryui.com/highlight-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectHighlight = $.effects.define(\"highlight\", \"show\", function (options, done) {\n var element = $(this),\n animation = {\n backgroundColor: element.css(\"backgroundColor\")\n };\n if (options.mode === \"hide\") {\n animation.opacity = 0;\n }\n $.effects.saveStyle(element);\n element.css({\n backgroundImage: \"none\",\n backgroundColor: options.color || \"#ffff99\"\n }).animate(animation, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Size 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Size Effect\n //>>group: Effects\n //>>description: Resize an element to a specified width and height.\n //>>docs: http://api.jqueryui.com/size-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectSize = $.effects.define(\"size\", function (options, done) {\n // Create element\n var baseline,\n factor,\n temp,\n element = $(this),\n // Copy for children\n cProps = [\"fontSize\"],\n vProps = [\"borderTopWidth\", \"borderBottomWidth\", \"paddingTop\", \"paddingBottom\"],\n hProps = [\"borderLeftWidth\", \"borderRightWidth\", \"paddingLeft\", \"paddingRight\"],\n // Set options\n mode = options.mode,\n restore = mode !== \"effect\",\n scale = options.scale || \"both\",\n origin = options.origin || [\"middle\", \"center\"],\n position = element.css(\"position\"),\n pos = element.position(),\n original = $.effects.scaledDimensions(element),\n from = options.from || original,\n to = options.to || $.effects.scaledDimensions(element, 0);\n $.effects.createPlaceholder(element);\n if (mode === \"show\") {\n temp = from;\n from = to;\n to = temp;\n }\n\n // Set scaling factor\n factor = {\n from: {\n y: from.height / original.height,\n x: from.width / original.width\n },\n to: {\n y: to.height / original.height,\n x: to.width / original.width\n }\n };\n\n // Scale the css box\n if (scale === \"box\" || scale === \"both\") {\n // Vertical props scaling\n if (factor.from.y !== factor.to.y) {\n from = $.effects.setTransition(element, vProps, factor.from.y, from);\n to = $.effects.setTransition(element, vProps, factor.to.y, to);\n }\n\n // Horizontal props scaling\n if (factor.from.x !== factor.to.x) {\n from = $.effects.setTransition(element, hProps, factor.from.x, from);\n to = $.effects.setTransition(element, hProps, factor.to.x, to);\n }\n }\n\n // Scale the content\n if (scale === \"content\" || scale === \"both\") {\n // Vertical props scaling\n if (factor.from.y !== factor.to.y) {\n from = $.effects.setTransition(element, cProps, factor.from.y, from);\n to = $.effects.setTransition(element, cProps, factor.to.y, to);\n }\n }\n\n // Adjust the position properties based on the provided origin points\n if (origin) {\n baseline = $.effects.getBaseline(origin, original);\n from.top = (original.outerHeight - from.outerHeight) * baseline.y + pos.top;\n from.left = (original.outerWidth - from.outerWidth) * baseline.x + pos.left;\n to.top = (original.outerHeight - to.outerHeight) * baseline.y + pos.top;\n to.left = (original.outerWidth - to.outerWidth) * baseline.x + pos.left;\n }\n delete from.outerHeight;\n delete from.outerWidth;\n element.css(from);\n\n // Animate the children if desired\n if (scale === \"content\" || scale === \"both\") {\n vProps = vProps.concat([\"marginTop\", \"marginBottom\"]).concat(cProps);\n hProps = hProps.concat([\"marginLeft\", \"marginRight\"]);\n\n // Only animate children with width attributes specified\n // TODO: is this right? should we include anything with css width specified as well\n element.find(\"*[width]\").each(function () {\n var child = $(this),\n childOriginal = $.effects.scaledDimensions(child),\n childFrom = {\n height: childOriginal.height * factor.from.y,\n width: childOriginal.width * factor.from.x,\n outerHeight: childOriginal.outerHeight * factor.from.y,\n outerWidth: childOriginal.outerWidth * factor.from.x\n },\n childTo = {\n height: childOriginal.height * factor.to.y,\n width: childOriginal.width * factor.to.x,\n outerHeight: childOriginal.height * factor.to.y,\n outerWidth: childOriginal.width * factor.to.x\n };\n\n // Vertical props scaling\n if (factor.from.y !== factor.to.y) {\n childFrom = $.effects.setTransition(child, vProps, factor.from.y, childFrom);\n childTo = $.effects.setTransition(child, vProps, factor.to.y, childTo);\n }\n\n // Horizontal props scaling\n if (factor.from.x !== factor.to.x) {\n childFrom = $.effects.setTransition(child, hProps, factor.from.x, childFrom);\n childTo = $.effects.setTransition(child, hProps, factor.to.x, childTo);\n }\n if (restore) {\n $.effects.saveStyle(child);\n }\n\n // Animate children\n child.css(childFrom);\n child.animate(childTo, options.duration, options.easing, function () {\n // Restore children\n if (restore) {\n $.effects.restoreStyle(child);\n }\n });\n });\n }\n\n // Animate\n element.animate(to, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: function () {\n var offset = element.offset();\n if (to.opacity === 0) {\n element.css(\"opacity\", from.opacity);\n }\n if (!restore) {\n element.css(\"position\", position === \"static\" ? \"relative\" : position).offset(offset);\n\n // Need to save style here so that automatic style restoration\n // doesn't restore to the original styles from before the animation.\n $.effects.saveStyle(element);\n }\n done();\n }\n });\n });\n\n /*!\n * jQuery UI Effects Scale 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Scale Effect\n //>>group: Effects\n //>>description: Grows or shrinks an element and its content.\n //>>docs: http://api.jqueryui.com/scale-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectScale = $.effects.define(\"scale\", function (options, done) {\n // Create element\n var el = $(this),\n mode = options.mode,\n percent = parseInt(options.percent, 10) || (parseInt(options.percent, 10) === 0 ? 0 : mode !== \"effect\" ? 0 : 100),\n newOptions = $.extend(true, {\n from: $.effects.scaledDimensions(el),\n to: $.effects.scaledDimensions(el, percent, options.direction || \"both\"),\n origin: options.origin || [\"middle\", \"center\"]\n }, options);\n\n // Fade option to support puff\n if (options.fade) {\n newOptions.from.opacity = 1;\n newOptions.to.opacity = 0;\n }\n $.effects.effect.size.call(this, newOptions, done);\n });\n\n /*!\n * jQuery UI Effects Puff 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Puff Effect\n //>>group: Effects\n //>>description: Creates a puff effect by scaling the element up and hiding it at the same time.\n //>>docs: http://api.jqueryui.com/puff-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectPuff = $.effects.define(\"puff\", \"hide\", function (options, done) {\n var newOptions = $.extend(true, {}, options, {\n fade: true,\n percent: parseInt(options.percent, 10) || 150\n });\n $.effects.effect.scale.call(this, newOptions, done);\n });\n\n /*!\n * jQuery UI Effects Pulsate 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Pulsate Effect\n //>>group: Effects\n //>>description: Pulsates an element n times by changing the opacity to zero and back.\n //>>docs: http://api.jqueryui.com/pulsate-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectPulsate = $.effects.define(\"pulsate\", \"show\", function (options, done) {\n var element = $(this),\n mode = options.mode,\n show = mode === \"show\",\n hide = mode === \"hide\",\n showhide = show || hide,\n // Showing or hiding leaves off the \"last\" animation\n anims = (options.times || 5) * 2 + (showhide ? 1 : 0),\n duration = options.duration / anims,\n animateTo = 0,\n i = 1,\n queuelen = element.queue().length;\n if (show || !element.is(\":visible\")) {\n element.css(\"opacity\", 0).show();\n animateTo = 1;\n }\n\n // Anims - 1 opacity \"toggles\"\n for (; i < anims; i++) {\n element.animate({\n opacity: animateTo\n }, duration, options.easing);\n animateTo = 1 - animateTo;\n }\n element.animate({\n opacity: animateTo\n }, duration, options.easing);\n element.queue(done);\n $.effects.unshift(element, queuelen, anims + 1);\n });\n\n /*!\n * jQuery UI Effects Shake 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Shake Effect\n //>>group: Effects\n //>>description: Shakes an element horizontally or vertically n times.\n //>>docs: http://api.jqueryui.com/shake-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectShake = $.effects.define(\"shake\", function (options, done) {\n var i = 1,\n element = $(this),\n direction = options.direction || \"left\",\n distance = options.distance || 20,\n times = options.times || 3,\n anims = times * 2 + 1,\n speed = Math.round(options.duration / anims),\n ref = direction === \"up\" || direction === \"down\" ? \"top\" : \"left\",\n positiveMotion = direction === \"up\" || direction === \"left\",\n animation = {},\n animation1 = {},\n animation2 = {},\n queuelen = element.queue().length;\n $.effects.createPlaceholder(element);\n\n // Animation\n animation[ref] = (positiveMotion ? \"-=\" : \"+=\") + distance;\n animation1[ref] = (positiveMotion ? \"+=\" : \"-=\") + distance * 2;\n animation2[ref] = (positiveMotion ? \"-=\" : \"+=\") + distance * 2;\n\n // Animate\n element.animate(animation, speed, options.easing);\n\n // Shakes\n for (; i < times; i++) {\n element.animate(animation1, speed, options.easing).animate(animation2, speed, options.easing);\n }\n element.animate(animation1, speed, options.easing).animate(animation, speed / 2, options.easing).queue(done);\n $.effects.unshift(element, queuelen, anims + 1);\n });\n\n /*!\n * jQuery UI Effects Slide 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Slide Effect\n //>>group: Effects\n //>>description: Slides an element in and out of the viewport.\n //>>docs: http://api.jqueryui.com/slide-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effectsEffectSlide = $.effects.define(\"slide\", \"show\", function (options, done) {\n var startClip,\n startRef,\n element = $(this),\n map = {\n up: [\"bottom\", \"top\"],\n down: [\"top\", \"bottom\"],\n left: [\"right\", \"left\"],\n right: [\"left\", \"right\"]\n },\n mode = options.mode,\n direction = options.direction || \"left\",\n ref = direction === \"up\" || direction === \"down\" ? \"top\" : \"left\",\n positiveMotion = direction === \"up\" || direction === \"left\",\n distance = options.distance || element[ref === \"top\" ? \"outerHeight\" : \"outerWidth\"](true),\n animation = {};\n $.effects.createPlaceholder(element);\n startClip = element.cssClip();\n startRef = element.position()[ref];\n\n // Define hide animation\n animation[ref] = (positiveMotion ? -1 : 1) * distance + startRef;\n animation.clip = element.cssClip();\n animation.clip[map[direction][1]] = animation.clip[map[direction][0]];\n\n // Reverse the animation if we're showing\n if (mode === \"show\") {\n element.cssClip(animation.clip);\n element.css(ref, animation[ref]);\n animation.clip = startClip;\n animation[ref] = startRef;\n }\n\n // Actually animate\n element.animate(animation, {\n queue: false,\n duration: options.duration,\n easing: options.easing,\n complete: done\n });\n });\n\n /*!\n * jQuery UI Effects Transfer 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Transfer Effect\n //>>group: Effects\n //>>description: Displays a transfer effect from one element to another.\n //>>docs: http://api.jqueryui.com/transfer-effect/\n //>>demos: http://jqueryui.com/effect/\n\n var effect;\n if ($.uiBackCompat !== false) {\n effect = $.effects.define(\"transfer\", function (options, done) {\n $(this).transfer(options, done);\n });\n }\n var effectsEffectTransfer = effect;\n\n /*!\n * jQuery UI Focusable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: :focusable Selector\n //>>group: Core\n //>>description: Selects elements which can be focused.\n //>>docs: http://api.jqueryui.com/focusable-selector/\n\n // Selectors\n $.ui.focusable = function (element, hasTabindex) {\n var map,\n mapName,\n img,\n focusableIfVisible,\n fieldset,\n nodeName = element.nodeName.toLowerCase();\n if (\"area\" === nodeName) {\n map = element.parentNode;\n mapName = map.name;\n if (!element.href || !mapName || map.nodeName.toLowerCase() !== \"map\") {\n return false;\n }\n img = $(\"img[usemap='#\" + mapName + \"']\");\n return img.length > 0 && img.is(\":visible\");\n }\n if (/^(input|select|textarea|button|object)$/.test(nodeName)) {\n focusableIfVisible = !element.disabled;\n if (focusableIfVisible) {\n // Form controls within a disabled fieldset are disabled.\n // However, controls within the fieldset's legend do not get disabled.\n // Since controls generally aren't placed inside legends, we skip\n // this portion of the check.\n fieldset = $(element).closest(\"fieldset\")[0];\n if (fieldset) {\n focusableIfVisible = !fieldset.disabled;\n }\n }\n } else if (\"a\" === nodeName) {\n focusableIfVisible = element.href || hasTabindex;\n } else {\n focusableIfVisible = hasTabindex;\n }\n return focusableIfVisible && $(element).is(\":visible\") && visible($(element));\n };\n\n // Support: IE 8 only\n // IE 8 doesn't resolve inherit to visible/hidden for computed values\n function visible(element) {\n var visibility = element.css(\"visibility\");\n while (visibility === \"inherit\") {\n element = element.parent();\n visibility = element.css(\"visibility\");\n }\n return visibility === \"visible\";\n }\n $.extend($.expr.pseudos, {\n focusable: function (element) {\n return $.ui.focusable(element, $.attr(element, \"tabindex\") != null);\n }\n });\n var focusable = $.ui.focusable;\n\n // Support: IE8 Only\n // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop\n // with a string, so we need to find the proper form.\n var form = $.fn._form = function () {\n return typeof this[0].form === \"string\" ? this.closest(\"form\") : $(this[0].form);\n };\n\n /*!\n * jQuery UI Form Reset Mixin 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Form Reset Mixin\n //>>group: Core\n //>>description: Refresh input widgets when their form is reset\n //>>docs: http://api.jqueryui.com/form-reset-mixin/\n\n var formResetMixin = $.ui.formResetMixin = {\n _formResetHandler: function () {\n var form = $(this);\n\n // Wait for the form reset to actually happen before refreshing\n setTimeout(function () {\n var instances = form.data(\"ui-form-reset-instances\");\n $.each(instances, function () {\n this.refresh();\n });\n });\n },\n _bindFormResetHandler: function () {\n this.form = this.element._form();\n if (!this.form.length) {\n return;\n }\n var instances = this.form.data(\"ui-form-reset-instances\") || [];\n if (!instances.length) {\n // We don't use _on() here because we use a single event handler per form\n this.form.on(\"reset.ui-form-reset\", this._formResetHandler);\n }\n instances.push(this);\n this.form.data(\"ui-form-reset-instances\", instances);\n },\n _unbindFormResetHandler: function () {\n if (!this.form.length) {\n return;\n }\n var instances = this.form.data(\"ui-form-reset-instances\");\n instances.splice($.inArray(this, instances), 1);\n if (instances.length) {\n this.form.data(\"ui-form-reset-instances\", instances);\n } else {\n this.form.removeData(\"ui-form-reset-instances\").off(\"reset.ui-form-reset\");\n }\n }\n };\n\n /*!\n * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n */\n\n //>>label: jQuery 1.8+ Support\n //>>group: Core\n //>>description: Support version 1.8.x and newer of jQuery core\n\n // Support: jQuery 1.9.x or older\n // $.expr[ \":\" ] is deprecated.\n if (!$.expr.pseudos) {\n $.expr.pseudos = $.expr[\":\"];\n }\n\n // Support: jQuery 1.11.x or older\n // $.unique has been renamed to $.uniqueSort\n if (!$.uniqueSort) {\n $.uniqueSort = $.unique;\n }\n\n // Support: jQuery 2.2.x or older.\n // This method has been defined in jQuery 3.0.0.\n // Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js\n if (!$.escapeSelector) {\n // CSS string/identifier serialization\n // https://drafts.csswg.org/cssom/#common-serializing-idioms\n var rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n var fcssescape = function (ch, asCodePoint) {\n if (asCodePoint) {\n // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n if (ch === \"\\0\") {\n return \"\\uFFFD\";\n }\n\n // Control characters and (dependent upon position) numbers get escaped as code points\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16) + \" \";\n }\n\n // Other potentially-special ASCII characters get backslash-escaped\n return \"\\\\\" + ch;\n };\n $.escapeSelector = function (sel) {\n return (sel + \"\").replace(rcssescape, fcssescape);\n };\n }\n\n // Support: jQuery 3.4.x or older\n // These methods have been defined in jQuery 3.5.0.\n if (!$.fn.even || !$.fn.odd) {\n $.fn.extend({\n even: function () {\n return this.filter(function (i) {\n return i % 2 === 0;\n });\n },\n odd: function () {\n return this.filter(function (i) {\n return i % 2 === 1;\n });\n }\n });\n }\n ;\n /*!\n * jQuery UI Keycode 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Keycode\n //>>group: Core\n //>>description: Provide keycodes as keynames\n //>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n var keycode = $.ui.keyCode = {\n BACKSPACE: 8,\n COMMA: 188,\n DELETE: 46,\n DOWN: 40,\n END: 35,\n ENTER: 13,\n ESCAPE: 27,\n HOME: 36,\n LEFT: 37,\n PAGE_DOWN: 34,\n PAGE_UP: 33,\n PERIOD: 190,\n RIGHT: 39,\n SPACE: 32,\n TAB: 9,\n UP: 38\n };\n\n /*!\n * jQuery UI Labels 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: labels\n //>>group: Core\n //>>description: Find all the labels associated with a given input\n //>>docs: http://api.jqueryui.com/labels/\n\n var labels = $.fn.labels = function () {\n var ancestor, selector, id, labels, ancestors;\n if (!this.length) {\n return this.pushStack([]);\n }\n\n // Check control.labels first\n if (this[0].labels && this[0].labels.length) {\n return this.pushStack(this[0].labels);\n }\n\n // Support: IE <= 11, FF <= 37, Android <= 2.3 only\n // Above browsers do not support control.labels. Everything below is to support them\n // as well as document fragments. control.labels does not work on document fragments\n labels = this.eq(0).parents(\"label\");\n\n // Look for the label based on the id\n id = this.attr(\"id\");\n if (id) {\n // We don't search against the document in case the element\n // is disconnected from the DOM\n ancestor = this.eq(0).parents().last();\n\n // Get a full set of top level ancestors\n ancestors = ancestor.add(ancestor.length ? ancestor.siblings() : this.siblings());\n\n // Create a selector for the label based on the id\n selector = \"label[for='\" + $.escapeSelector(id) + \"']\";\n labels = labels.add(ancestors.find(selector).addBack(selector));\n }\n\n // Return whatever we have found for labels\n return this.pushStack(labels);\n };\n\n /*!\n * jQuery UI Scroll Parent 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: scrollParent\n //>>group: Core\n //>>description: Get the closest ancestor element that is scrollable.\n //>>docs: http://api.jqueryui.com/scrollParent/\n\n var scrollParent = $.fn.scrollParent = function (includeHidden) {\n var position = this.css(\"position\"),\n excludeStaticParent = position === \"absolute\",\n overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n scrollParent = this.parents().filter(function () {\n var parent = $(this);\n if (excludeStaticParent && parent.css(\"position\") === \"static\") {\n return false;\n }\n return overflowRegex.test(parent.css(\"overflow\") + parent.css(\"overflow-y\") + parent.css(\"overflow-x\"));\n }).eq(0);\n return position === \"fixed\" || !scrollParent.length ? $(this[0].ownerDocument || document) : scrollParent;\n };\n\n /*!\n * jQuery UI Tabbable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: :tabbable Selector\n //>>group: Core\n //>>description: Selects elements which can be tabbed to.\n //>>docs: http://api.jqueryui.com/tabbable-selector/\n\n var tabbable = $.extend($.expr.pseudos, {\n tabbable: function (element) {\n var tabIndex = $.attr(element, \"tabindex\"),\n hasTabindex = tabIndex != null;\n return (!hasTabindex || tabIndex >= 0) && $.ui.focusable(element, hasTabindex);\n }\n });\n\n /*!\n * jQuery UI Unique ID 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: uniqueId\n //>>group: Core\n //>>description: Functions to generate and remove uniqueId's\n //>>docs: http://api.jqueryui.com/uniqueId/\n\n var uniqueId = $.fn.extend({\n uniqueId: function () {\n var uuid = 0;\n return function () {\n return this.each(function () {\n if (!this.id) {\n this.id = \"ui-id-\" + ++uuid;\n }\n });\n };\n }(),\n removeUniqueId: function () {\n return this.each(function () {\n if (/^ui-id-\\d+$/.test(this.id)) {\n $(this).removeAttr(\"id\");\n }\n });\n }\n });\n\n /*!\n * jQuery UI Accordion 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Accordion\n //>>group: Widgets\n /* eslint-disable max-len */\n //>>description: Displays collapsible content panels for presenting information in a limited amount of space.\n /* eslint-enable max-len */\n //>>docs: http://api.jqueryui.com/accordion/\n //>>demos: http://jqueryui.com/accordion/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/accordion.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsAccordion = $.widget(\"ui.accordion\", {\n version: \"1.13.2\",\n options: {\n active: 0,\n animate: {},\n classes: {\n \"ui-accordion-header\": \"ui-corner-top\",\n \"ui-accordion-header-collapsed\": \"ui-corner-all\",\n \"ui-accordion-content\": \"ui-corner-bottom\"\n },\n collapsible: false,\n event: \"click\",\n header: function (elem) {\n return elem.find(\"> li > :first-child\").add(elem.find(\"> :not(li)\").even());\n },\n heightStyle: \"auto\",\n icons: {\n activeHeader: \"ui-icon-triangle-1-s\",\n header: \"ui-icon-triangle-1-e\"\n },\n // Callbacks\n activate: null,\n beforeActivate: null\n },\n hideProps: {\n borderTopWidth: \"hide\",\n borderBottomWidth: \"hide\",\n paddingTop: \"hide\",\n paddingBottom: \"hide\",\n height: \"hide\"\n },\n showProps: {\n borderTopWidth: \"show\",\n borderBottomWidth: \"show\",\n paddingTop: \"show\",\n paddingBottom: \"show\",\n height: \"show\"\n },\n _create: function () {\n var options = this.options;\n this.prevShow = this.prevHide = $();\n this._addClass(\"ui-accordion\", \"ui-widget ui-helper-reset\");\n this.element.attr(\"role\", \"tablist\");\n\n // Don't allow collapsible: false and active: false / null\n if (!options.collapsible && (options.active === false || options.active == null)) {\n options.active = 0;\n }\n this._processPanels();\n\n // handle negative values\n if (options.active < 0) {\n options.active += this.headers.length;\n }\n this._refresh();\n },\n _getCreateEventData: function () {\n return {\n header: this.active,\n panel: !this.active.length ? $() : this.active.next()\n };\n },\n _createIcons: function () {\n var icon,\n children,\n icons = this.options.icons;\n if (icons) {\n icon = $(\"<span>\");\n this._addClass(icon, \"ui-accordion-header-icon\", \"ui-icon \" + icons.header);\n icon.prependTo(this.headers);\n children = this.active.children(\".ui-accordion-header-icon\");\n this._removeClass(children, icons.header)._addClass(children, null, icons.activeHeader)._addClass(this.headers, \"ui-accordion-icons\");\n }\n },\n _destroyIcons: function () {\n this._removeClass(this.headers, \"ui-accordion-icons\");\n this.headers.children(\".ui-accordion-header-icon\").remove();\n },\n _destroy: function () {\n var contents;\n\n // Clean up main element\n this.element.removeAttr(\"role\");\n\n // Clean up headers\n this.headers.removeAttr(\"role aria-expanded aria-selected aria-controls tabIndex\").removeUniqueId();\n this._destroyIcons();\n\n // Clean up content panels\n contents = this.headers.next().css(\"display\", \"\").removeAttr(\"role aria-hidden aria-labelledby\").removeUniqueId();\n if (this.options.heightStyle !== \"content\") {\n contents.css(\"height\", \"\");\n }\n },\n _setOption: function (key, value) {\n if (key === \"active\") {\n // _activate() will handle invalid values and update this.options\n this._activate(value);\n return;\n }\n if (key === \"event\") {\n if (this.options.event) {\n this._off(this.headers, this.options.event);\n }\n this._setupEvents(value);\n }\n this._super(key, value);\n\n // Setting collapsible: false while collapsed; open first panel\n if (key === \"collapsible\" && !value && this.options.active === false) {\n this._activate(0);\n }\n if (key === \"icons\") {\n this._destroyIcons();\n if (value) {\n this._createIcons();\n }\n }\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this.element.attr(\"aria-disabled\", value);\n\n // Support: IE8 Only\n // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE\n // so we need to add the disabled class to the headers and panels\n this._toggleClass(null, \"ui-state-disabled\", !!value);\n this._toggleClass(this.headers.add(this.headers.next()), null, \"ui-state-disabled\", !!value);\n },\n _keydown: function (event) {\n if (event.altKey || event.ctrlKey) {\n return;\n }\n var keyCode = $.ui.keyCode,\n length = this.headers.length,\n currentIndex = this.headers.index(event.target),\n toFocus = false;\n switch (event.keyCode) {\n case keyCode.RIGHT:\n case keyCode.DOWN:\n toFocus = this.headers[(currentIndex + 1) % length];\n break;\n case keyCode.LEFT:\n case keyCode.UP:\n toFocus = this.headers[(currentIndex - 1 + length) % length];\n break;\n case keyCode.SPACE:\n case keyCode.ENTER:\n this._eventHandler(event);\n break;\n case keyCode.HOME:\n toFocus = this.headers[0];\n break;\n case keyCode.END:\n toFocus = this.headers[length - 1];\n break;\n }\n if (toFocus) {\n $(event.target).attr(\"tabIndex\", -1);\n $(toFocus).attr(\"tabIndex\", 0);\n $(toFocus).trigger(\"focus\");\n event.preventDefault();\n }\n },\n _panelKeyDown: function (event) {\n if (event.keyCode === $.ui.keyCode.UP && event.ctrlKey) {\n $(event.currentTarget).prev().trigger(\"focus\");\n }\n },\n refresh: function () {\n var options = this.options;\n this._processPanels();\n\n // Was collapsed or no panel\n if (options.active === false && options.collapsible === true || !this.headers.length) {\n options.active = false;\n this.active = $();\n\n // active false only when collapsible is true\n } else if (options.active === false) {\n this._activate(0);\n\n // was active, but active panel is gone\n } else if (this.active.length && !$.contains(this.element[0], this.active[0])) {\n // all remaining panel are disabled\n if (this.headers.length === this.headers.find(\".ui-state-disabled\").length) {\n options.active = false;\n this.active = $();\n\n // activate previous panel\n } else {\n this._activate(Math.max(0, options.active - 1));\n }\n\n // was active, active panel still exists\n } else {\n // make sure active index is correct\n options.active = this.headers.index(this.active);\n }\n this._destroyIcons();\n this._refresh();\n },\n _processPanels: function () {\n var prevHeaders = this.headers,\n prevPanels = this.panels;\n if (typeof this.options.header === \"function\") {\n this.headers = this.options.header(this.element);\n } else {\n this.headers = this.element.find(this.options.header);\n }\n this._addClass(this.headers, \"ui-accordion-header ui-accordion-header-collapsed\", \"ui-state-default\");\n this.panels = this.headers.next().filter(\":not(.ui-accordion-content-active)\").hide();\n this._addClass(this.panels, \"ui-accordion-content\", \"ui-helper-reset ui-widget-content\");\n\n // Avoid memory leaks (#10056)\n if (prevPanels) {\n this._off(prevHeaders.not(this.headers));\n this._off(prevPanels.not(this.panels));\n }\n },\n _refresh: function () {\n var maxHeight,\n options = this.options,\n heightStyle = options.heightStyle,\n parent = this.element.parent();\n this.active = this._findActive(options.active);\n this._addClass(this.active, \"ui-accordion-header-active\", \"ui-state-active\")._removeClass(this.active, \"ui-accordion-header-collapsed\");\n this._addClass(this.active.next(), \"ui-accordion-content-active\");\n this.active.next().show();\n this.headers.attr(\"role\", \"tab\").each(function () {\n var header = $(this),\n headerId = header.uniqueId().attr(\"id\"),\n panel = header.next(),\n panelId = panel.uniqueId().attr(\"id\");\n header.attr(\"aria-controls\", panelId);\n panel.attr(\"aria-labelledby\", headerId);\n }).next().attr(\"role\", \"tabpanel\");\n this.headers.not(this.active).attr({\n \"aria-selected\": \"false\",\n \"aria-expanded\": \"false\",\n tabIndex: -1\n }).next().attr({\n \"aria-hidden\": \"true\"\n }).hide();\n\n // Make sure at least one header is in the tab order\n if (!this.active.length) {\n this.headers.eq(0).attr(\"tabIndex\", 0);\n } else {\n this.active.attr({\n \"aria-selected\": \"true\",\n \"aria-expanded\": \"true\",\n tabIndex: 0\n }).next().attr({\n \"aria-hidden\": \"false\"\n });\n }\n this._createIcons();\n this._setupEvents(options.event);\n if (heightStyle === \"fill\") {\n maxHeight = parent.height();\n this.element.siblings(\":visible\").each(function () {\n var elem = $(this),\n position = elem.css(\"position\");\n if (position === \"absolute\" || position === \"fixed\") {\n return;\n }\n maxHeight -= elem.outerHeight(true);\n });\n this.headers.each(function () {\n maxHeight -= $(this).outerHeight(true);\n });\n this.headers.next().each(function () {\n $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()));\n }).css(\"overflow\", \"auto\");\n } else if (heightStyle === \"auto\") {\n maxHeight = 0;\n this.headers.next().each(function () {\n var isVisible = $(this).is(\":visible\");\n if (!isVisible) {\n $(this).show();\n }\n maxHeight = Math.max(maxHeight, $(this).css(\"height\", \"\").height());\n if (!isVisible) {\n $(this).hide();\n }\n }).height(maxHeight);\n }\n },\n _activate: function (index) {\n var active = this._findActive(index)[0];\n\n // Trying to activate the already active panel\n if (active === this.active[0]) {\n return;\n }\n\n // Trying to collapse, simulate a click on the currently active header\n active = active || this.active[0];\n this._eventHandler({\n target: active,\n currentTarget: active,\n preventDefault: $.noop\n });\n },\n _findActive: function (selector) {\n return typeof selector === \"number\" ? this.headers.eq(selector) : $();\n },\n _setupEvents: function (event) {\n var events = {\n keydown: \"_keydown\"\n };\n if (event) {\n $.each(event.split(\" \"), function (index, eventName) {\n events[eventName] = \"_eventHandler\";\n });\n }\n this._off(this.headers.add(this.headers.next()));\n this._on(this.headers, events);\n this._on(this.headers.next(), {\n keydown: \"_panelKeyDown\"\n });\n this._hoverable(this.headers);\n this._focusable(this.headers);\n },\n _eventHandler: function (event) {\n var activeChildren,\n clickedChildren,\n options = this.options,\n active = this.active,\n clicked = $(event.currentTarget),\n clickedIsActive = clicked[0] === active[0],\n collapsing = clickedIsActive && options.collapsible,\n toShow = collapsing ? $() : clicked.next(),\n toHide = active.next(),\n eventData = {\n oldHeader: active,\n oldPanel: toHide,\n newHeader: collapsing ? $() : clicked,\n newPanel: toShow\n };\n event.preventDefault();\n if (\n // click on active header, but not collapsible\n clickedIsActive && !options.collapsible ||\n // allow canceling activation\n this._trigger(\"beforeActivate\", event, eventData) === false) {\n return;\n }\n options.active = collapsing ? false : this.headers.index(clicked);\n\n // When the call to ._toggle() comes after the class changes\n // it causes a very odd bug in IE 8 (see #6720)\n this.active = clickedIsActive ? $() : clicked;\n this._toggle(eventData);\n\n // Switch classes\n // corner classes on the previously active header stay after the animation\n this._removeClass(active, \"ui-accordion-header-active\", \"ui-state-active\");\n if (options.icons) {\n activeChildren = active.children(\".ui-accordion-header-icon\");\n this._removeClass(activeChildren, null, options.icons.activeHeader)._addClass(activeChildren, null, options.icons.header);\n }\n if (!clickedIsActive) {\n this._removeClass(clicked, \"ui-accordion-header-collapsed\")._addClass(clicked, \"ui-accordion-header-active\", \"ui-state-active\");\n if (options.icons) {\n clickedChildren = clicked.children(\".ui-accordion-header-icon\");\n this._removeClass(clickedChildren, null, options.icons.header)._addClass(clickedChildren, null, options.icons.activeHeader);\n }\n this._addClass(clicked.next(), \"ui-accordion-content-active\");\n }\n },\n _toggle: function (data) {\n var toShow = data.newPanel,\n toHide = this.prevShow.length ? this.prevShow : data.oldPanel;\n\n // Handle activating a panel during the animation for another activation\n this.prevShow.add(this.prevHide).stop(true, true);\n this.prevShow = toShow;\n this.prevHide = toHide;\n if (this.options.animate) {\n this._animate(toShow, toHide, data);\n } else {\n toHide.hide();\n toShow.show();\n this._toggleComplete(data);\n }\n toHide.attr({\n \"aria-hidden\": \"true\"\n });\n toHide.prev().attr({\n \"aria-selected\": \"false\",\n \"aria-expanded\": \"false\"\n });\n\n // if we're switching panels, remove the old header from the tab order\n // if we're opening from collapsed state, remove the previous header from the tab order\n // if we're collapsing, then keep the collapsing header in the tab order\n if (toShow.length && toHide.length) {\n toHide.prev().attr({\n \"tabIndex\": -1,\n \"aria-expanded\": \"false\"\n });\n } else if (toShow.length) {\n this.headers.filter(function () {\n return parseInt($(this).attr(\"tabIndex\"), 10) === 0;\n }).attr(\"tabIndex\", -1);\n }\n toShow.attr(\"aria-hidden\", \"false\").prev().attr({\n \"aria-selected\": \"true\",\n \"aria-expanded\": \"true\",\n tabIndex: 0\n });\n },\n _animate: function (toShow, toHide, data) {\n var total,\n easing,\n duration,\n that = this,\n adjust = 0,\n boxSizing = toShow.css(\"box-sizing\"),\n down = toShow.length && (!toHide.length || toShow.index() < toHide.index()),\n animate = this.options.animate || {},\n options = down && animate.down || animate,\n complete = function () {\n that._toggleComplete(data);\n };\n if (typeof options === \"number\") {\n duration = options;\n }\n if (typeof options === \"string\") {\n easing = options;\n }\n\n // fall back from options to animation in case of partial down settings\n easing = easing || options.easing || animate.easing;\n duration = duration || options.duration || animate.duration;\n if (!toHide.length) {\n return toShow.animate(this.showProps, duration, easing, complete);\n }\n if (!toShow.length) {\n return toHide.animate(this.hideProps, duration, easing, complete);\n }\n total = toShow.show().outerHeight();\n toHide.animate(this.hideProps, {\n duration: duration,\n easing: easing,\n step: function (now, fx) {\n fx.now = Math.round(now);\n }\n });\n toShow.hide().animate(this.showProps, {\n duration: duration,\n easing: easing,\n complete: complete,\n step: function (now, fx) {\n fx.now = Math.round(now);\n if (fx.prop !== \"height\") {\n if (boxSizing === \"content-box\") {\n adjust += fx.now;\n }\n } else if (that.options.heightStyle !== \"content\") {\n fx.now = Math.round(total - toHide.outerHeight() - adjust);\n adjust = 0;\n }\n }\n });\n },\n _toggleComplete: function (data) {\n var toHide = data.oldPanel,\n prev = toHide.prev();\n this._removeClass(toHide, \"ui-accordion-content-active\");\n this._removeClass(prev, \"ui-accordion-header-active\")._addClass(prev, \"ui-accordion-header-collapsed\");\n\n // Work around for rendering bug in IE (#5421)\n if (toHide.length) {\n toHide.parent()[0].className = toHide.parent()[0].className;\n }\n this._trigger(\"activate\", null, data);\n }\n });\n var safeActiveElement = $.ui.safeActiveElement = function (document) {\n var activeElement;\n\n // Support: IE 9 only\n // IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n try {\n activeElement = document.activeElement;\n } catch (error) {\n activeElement = document.body;\n }\n\n // Support: IE 9 - 11 only\n // IE may return null instead of an element\n // Interestingly, this only seems to occur when NOT in an iframe\n if (!activeElement) {\n activeElement = document.body;\n }\n\n // Support: IE 11 only\n // IE11 returns a seemingly empty object in some cases when accessing\n // document.activeElement from an <iframe>\n if (!activeElement.nodeName) {\n activeElement = document.body;\n }\n return activeElement;\n };\n\n /*!\n * jQuery UI Menu 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Menu\n //>>group: Widgets\n //>>description: Creates nestable menus.\n //>>docs: http://api.jqueryui.com/menu/\n //>>demos: http://jqueryui.com/menu/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/menu.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsMenu = $.widget(\"ui.menu\", {\n version: \"1.13.2\",\n defaultElement: \"<ul>\",\n delay: 300,\n options: {\n icons: {\n submenu: \"ui-icon-caret-1-e\"\n },\n items: \"> *\",\n menus: \"ul\",\n position: {\n my: \"left top\",\n at: \"right top\"\n },\n role: \"menu\",\n // Callbacks\n blur: null,\n focus: null,\n select: null\n },\n _create: function () {\n this.activeMenu = this.element;\n\n // Flag used to prevent firing of the click handler\n // as the event bubbles up through nested menus\n this.mouseHandled = false;\n this.lastMousePosition = {\n x: null,\n y: null\n };\n this.element.uniqueId().attr({\n role: this.options.role,\n tabIndex: 0\n });\n this._addClass(\"ui-menu\", \"ui-widget ui-widget-content\");\n this._on({\n // Prevent focus from sticking to links inside menu after clicking\n // them (focus should always stay on UL during navigation).\n \"mousedown .ui-menu-item\": function (event) {\n event.preventDefault();\n this._activateItem(event);\n },\n \"click .ui-menu-item\": function (event) {\n var target = $(event.target);\n var active = $($.ui.safeActiveElement(this.document[0]));\n if (!this.mouseHandled && target.not(\".ui-state-disabled\").length) {\n this.select(event);\n\n // Only set the mouseHandled flag if the event will bubble, see #9469.\n if (!event.isPropagationStopped()) {\n this.mouseHandled = true;\n }\n\n // Open submenu on click\n if (target.has(\".ui-menu\").length) {\n this.expand(event);\n } else if (!this.element.is(\":focus\") && active.closest(\".ui-menu\").length) {\n // Redirect focus to the menu\n this.element.trigger(\"focus\", [true]);\n\n // If the active item is on the top level, let it stay active.\n // Otherwise, blur the active item since it is no longer visible.\n if (this.active && this.active.parents(\".ui-menu\").length === 1) {\n clearTimeout(this.timer);\n }\n }\n }\n },\n \"mouseenter .ui-menu-item\": \"_activateItem\",\n \"mousemove .ui-menu-item\": \"_activateItem\",\n mouseleave: \"collapseAll\",\n \"mouseleave .ui-menu\": \"collapseAll\",\n focus: function (event, keepActiveItem) {\n // If there's already an active item, keep it active\n // If not, activate the first item\n var item = this.active || this._menuItems().first();\n if (!keepActiveItem) {\n this.focus(event, item);\n }\n },\n blur: function (event) {\n this._delay(function () {\n var notContained = !$.contains(this.element[0], $.ui.safeActiveElement(this.document[0]));\n if (notContained) {\n this.collapseAll(event);\n }\n });\n },\n keydown: \"_keydown\"\n });\n this.refresh();\n\n // Clicks outside of a menu collapse any open menus\n this._on(this.document, {\n click: function (event) {\n if (this._closeOnDocumentClick(event)) {\n this.collapseAll(event, true);\n }\n\n // Reset the mouseHandled flag\n this.mouseHandled = false;\n }\n });\n },\n _activateItem: function (event) {\n // Ignore mouse events while typeahead is active, see #10458.\n // Prevents focusing the wrong item when typeahead causes a scroll while the mouse\n // is over an item in the menu\n if (this.previousFilter) {\n return;\n }\n\n // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)\n if (event.clientX === this.lastMousePosition.x && event.clientY === this.lastMousePosition.y) {\n return;\n }\n this.lastMousePosition = {\n x: event.clientX,\n y: event.clientY\n };\n var actualTarget = $(event.target).closest(\".ui-menu-item\"),\n target = $(event.currentTarget);\n\n // Ignore bubbled events on parent items, see #11641\n if (actualTarget[0] !== target[0]) {\n return;\n }\n\n // If the item is already active, there's nothing to do\n if (target.is(\".ui-state-active\")) {\n return;\n }\n\n // Remove ui-state-active class from siblings of the newly focused menu item\n // to avoid a jump caused by adjacent elements both having a class with a border\n this._removeClass(target.siblings().children(\".ui-state-active\"), null, \"ui-state-active\");\n this.focus(event, target);\n },\n _destroy: function () {\n var items = this.element.find(\".ui-menu-item\").removeAttr(\"role aria-disabled\"),\n submenus = items.children(\".ui-menu-item-wrapper\").removeUniqueId().removeAttr(\"tabIndex role aria-haspopup\");\n\n // Destroy (sub)menus\n this.element.removeAttr(\"aria-activedescendant\").find(\".ui-menu\").addBack().removeAttr(\"role aria-labelledby aria-expanded aria-hidden aria-disabled \" + \"tabIndex\").removeUniqueId().show();\n submenus.children().each(function () {\n var elem = $(this);\n if (elem.data(\"ui-menu-submenu-caret\")) {\n elem.remove();\n }\n });\n },\n _keydown: function (event) {\n var match,\n prev,\n character,\n skip,\n preventDefault = true;\n switch (event.keyCode) {\n case $.ui.keyCode.PAGE_UP:\n this.previousPage(event);\n break;\n case $.ui.keyCode.PAGE_DOWN:\n this.nextPage(event);\n break;\n case $.ui.keyCode.HOME:\n this._move(\"first\", \"first\", event);\n break;\n case $.ui.keyCode.END:\n this._move(\"last\", \"last\", event);\n break;\n case $.ui.keyCode.UP:\n this.previous(event);\n break;\n case $.ui.keyCode.DOWN:\n this.next(event);\n break;\n case $.ui.keyCode.LEFT:\n this.collapse(event);\n break;\n case $.ui.keyCode.RIGHT:\n if (this.active && !this.active.is(\".ui-state-disabled\")) {\n this.expand(event);\n }\n break;\n case $.ui.keyCode.ENTER:\n case $.ui.keyCode.SPACE:\n this._activate(event);\n break;\n case $.ui.keyCode.ESCAPE:\n this.collapse(event);\n break;\n default:\n preventDefault = false;\n prev = this.previousFilter || \"\";\n skip = false;\n\n // Support number pad values\n character = event.keyCode >= 96 && event.keyCode <= 105 ? (event.keyCode - 96).toString() : String.fromCharCode(event.keyCode);\n clearTimeout(this.filterTimer);\n if (character === prev) {\n skip = true;\n } else {\n character = prev + character;\n }\n match = this._filterMenuItems(character);\n match = skip && match.index(this.active.next()) !== -1 ? this.active.nextAll(\".ui-menu-item\") : match;\n\n // If no matches on the current filter, reset to the last character pressed\n // to move down the menu to the first item that starts with that character\n if (!match.length) {\n character = String.fromCharCode(event.keyCode);\n match = this._filterMenuItems(character);\n }\n if (match.length) {\n this.focus(event, match);\n this.previousFilter = character;\n this.filterTimer = this._delay(function () {\n delete this.previousFilter;\n }, 1000);\n } else {\n delete this.previousFilter;\n }\n }\n if (preventDefault) {\n event.preventDefault();\n }\n },\n _activate: function (event) {\n if (this.active && !this.active.is(\".ui-state-disabled\")) {\n if (this.active.children(\"[aria-haspopup='true']\").length) {\n this.expand(event);\n } else {\n this.select(event);\n }\n }\n },\n refresh: function () {\n var menus,\n items,\n newSubmenus,\n newItems,\n newWrappers,\n that = this,\n icon = this.options.icons.submenu,\n submenus = this.element.find(this.options.menus);\n this._toggleClass(\"ui-menu-icons\", null, !!this.element.find(\".ui-icon\").length);\n\n // Initialize nested menus\n newSubmenus = submenus.filter(\":not(.ui-menu)\").hide().attr({\n role: this.options.role,\n \"aria-hidden\": \"true\",\n \"aria-expanded\": \"false\"\n }).each(function () {\n var menu = $(this),\n item = menu.prev(),\n submenuCaret = $(\"<span>\").data(\"ui-menu-submenu-caret\", true);\n that._addClass(submenuCaret, \"ui-menu-icon\", \"ui-icon \" + icon);\n item.attr(\"aria-haspopup\", \"true\").prepend(submenuCaret);\n menu.attr(\"aria-labelledby\", item.attr(\"id\"));\n });\n this._addClass(newSubmenus, \"ui-menu\", \"ui-widget ui-widget-content ui-front\");\n menus = submenus.add(this.element);\n items = menus.find(this.options.items);\n\n // Initialize menu-items containing spaces and/or dashes only as dividers\n items.not(\".ui-menu-item\").each(function () {\n var item = $(this);\n if (that._isDivider(item)) {\n that._addClass(item, \"ui-menu-divider\", \"ui-widget-content\");\n }\n });\n\n // Don't refresh list items that are already adapted\n newItems = items.not(\".ui-menu-item, .ui-menu-divider\");\n newWrappers = newItems.children().not(\".ui-menu\").uniqueId().attr({\n tabIndex: -1,\n role: this._itemRole()\n });\n this._addClass(newItems, \"ui-menu-item\")._addClass(newWrappers, \"ui-menu-item-wrapper\");\n\n // Add aria-disabled attribute to any disabled menu item\n items.filter(\".ui-state-disabled\").attr(\"aria-disabled\", \"true\");\n\n // If the active item has been removed, blur the menu\n if (this.active && !$.contains(this.element[0], this.active[0])) {\n this.blur();\n }\n },\n _itemRole: function () {\n return {\n menu: \"menuitem\",\n listbox: \"option\"\n }[this.options.role];\n },\n _setOption: function (key, value) {\n if (key === \"icons\") {\n var icons = this.element.find(\".ui-menu-icon\");\n this._removeClass(icons, null, this.options.icons.submenu)._addClass(icons, null, value.submenu);\n }\n this._super(key, value);\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this.element.attr(\"aria-disabled\", String(value));\n this._toggleClass(null, \"ui-state-disabled\", !!value);\n },\n focus: function (event, item) {\n var nested, focused, activeParent;\n this.blur(event, event && event.type === \"focus\");\n this._scrollIntoView(item);\n this.active = item.first();\n focused = this.active.children(\".ui-menu-item-wrapper\");\n this._addClass(focused, null, \"ui-state-active\");\n\n // Only update aria-activedescendant if there's a role\n // otherwise we assume focus is managed elsewhere\n if (this.options.role) {\n this.element.attr(\"aria-activedescendant\", focused.attr(\"id\"));\n }\n\n // Highlight active parent menu item, if any\n activeParent = this.active.parent().closest(\".ui-menu-item\").children(\".ui-menu-item-wrapper\");\n this._addClass(activeParent, null, \"ui-state-active\");\n if (event && event.type === \"keydown\") {\n this._close();\n } else {\n this.timer = this._delay(function () {\n this._close();\n }, this.delay);\n }\n nested = item.children(\".ui-menu\");\n if (nested.length && event && /^mouse/.test(event.type)) {\n this._startOpening(nested);\n }\n this.activeMenu = item.parent();\n this._trigger(\"focus\", event, {\n item: item\n });\n },\n _scrollIntoView: function (item) {\n var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n if (this._hasScroll()) {\n borderTop = parseFloat($.css(this.activeMenu[0], \"borderTopWidth\")) || 0;\n paddingTop = parseFloat($.css(this.activeMenu[0], \"paddingTop\")) || 0;\n offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n scroll = this.activeMenu.scrollTop();\n elementHeight = this.activeMenu.height();\n itemHeight = item.outerHeight();\n if (offset < 0) {\n this.activeMenu.scrollTop(scroll + offset);\n } else if (offset + itemHeight > elementHeight) {\n this.activeMenu.scrollTop(scroll + offset - elementHeight + itemHeight);\n }\n }\n },\n blur: function (event, fromFocus) {\n if (!fromFocus) {\n clearTimeout(this.timer);\n }\n if (!this.active) {\n return;\n }\n this._removeClass(this.active.children(\".ui-menu-item-wrapper\"), null, \"ui-state-active\");\n this._trigger(\"blur\", event, {\n item: this.active\n });\n this.active = null;\n },\n _startOpening: function (submenu) {\n clearTimeout(this.timer);\n\n // Don't open if already open fixes a Firefox bug that caused a .5 pixel\n // shift in the submenu position when mousing over the caret icon\n if (submenu.attr(\"aria-hidden\") !== \"true\") {\n return;\n }\n this.timer = this._delay(function () {\n this._close();\n this._open(submenu);\n }, this.delay);\n },\n _open: function (submenu) {\n var position = $.extend({\n of: this.active\n }, this.options.position);\n clearTimeout(this.timer);\n this.element.find(\".ui-menu\").not(submenu.parents(\".ui-menu\")).hide().attr(\"aria-hidden\", \"true\");\n submenu.show().removeAttr(\"aria-hidden\").attr(\"aria-expanded\", \"true\").position(position);\n },\n collapseAll: function (event, all) {\n clearTimeout(this.timer);\n this.timer = this._delay(function () {\n // If we were passed an event, look for the submenu that contains the event\n var currentMenu = all ? this.element : $(event && event.target).closest(this.element.find(\".ui-menu\"));\n\n // If we found no valid submenu ancestor, use the main menu to close all\n // sub menus anyway\n if (!currentMenu.length) {\n currentMenu = this.element;\n }\n this._close(currentMenu);\n this.blur(event);\n\n // Work around active item staying active after menu is blurred\n this._removeClass(currentMenu.find(\".ui-state-active\"), null, \"ui-state-active\");\n this.activeMenu = currentMenu;\n }, all ? 0 : this.delay);\n },\n // With no arguments, closes the currently active menu - if nothing is active\n // it closes all menus. If passed an argument, it will search for menus BELOW\n _close: function (startMenu) {\n if (!startMenu) {\n startMenu = this.active ? this.active.parent() : this.element;\n }\n startMenu.find(\".ui-menu\").hide().attr(\"aria-hidden\", \"true\").attr(\"aria-expanded\", \"false\");\n },\n _closeOnDocumentClick: function (event) {\n return !$(event.target).closest(\".ui-menu\").length;\n },\n _isDivider: function (item) {\n // Match hyphen, em dash, en dash\n return !/[^\\-\\u2014\\u2013\\s]/.test(item.text());\n },\n collapse: function (event) {\n var newItem = this.active && this.active.parent().closest(\".ui-menu-item\", this.element);\n if (newItem && newItem.length) {\n this._close();\n this.focus(event, newItem);\n }\n },\n expand: function (event) {\n var newItem = this.active && this._menuItems(this.active.children(\".ui-menu\")).first();\n if (newItem && newItem.length) {\n this._open(newItem.parent());\n\n // Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n this._delay(function () {\n this.focus(event, newItem);\n });\n }\n },\n next: function (event) {\n this._move(\"next\", \"first\", event);\n },\n previous: function (event) {\n this._move(\"prev\", \"last\", event);\n },\n isFirstItem: function () {\n return this.active && !this.active.prevAll(\".ui-menu-item\").length;\n },\n isLastItem: function () {\n return this.active && !this.active.nextAll(\".ui-menu-item\").length;\n },\n _menuItems: function (menu) {\n return (menu || this.element).find(this.options.items).filter(\".ui-menu-item\");\n },\n _move: function (direction, filter, event) {\n var next;\n if (this.active) {\n if (direction === \"first\" || direction === \"last\") {\n next = this.active[direction === \"first\" ? \"prevAll\" : \"nextAll\"](\".ui-menu-item\").last();\n } else {\n next = this.active[direction + \"All\"](\".ui-menu-item\").first();\n }\n }\n if (!next || !next.length || !this.active) {\n next = this._menuItems(this.activeMenu)[filter]();\n }\n this.focus(event, next);\n },\n nextPage: function (event) {\n var item, base, height;\n if (!this.active) {\n this.next(event);\n return;\n }\n if (this.isLastItem()) {\n return;\n }\n if (this._hasScroll()) {\n base = this.active.offset().top;\n height = this.element.innerHeight();\n\n // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.\n if ($.fn.jquery.indexOf(\"3.2.\") === 0) {\n height += this.element[0].offsetHeight - this.element.outerHeight();\n }\n this.active.nextAll(\".ui-menu-item\").each(function () {\n item = $(this);\n return item.offset().top - base - height < 0;\n });\n this.focus(event, item);\n } else {\n this.focus(event, this._menuItems(this.activeMenu)[!this.active ? \"first\" : \"last\"]());\n }\n },\n previousPage: function (event) {\n var item, base, height;\n if (!this.active) {\n this.next(event);\n return;\n }\n if (this.isFirstItem()) {\n return;\n }\n if (this._hasScroll()) {\n base = this.active.offset().top;\n height = this.element.innerHeight();\n\n // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.\n if ($.fn.jquery.indexOf(\"3.2.\") === 0) {\n height += this.element[0].offsetHeight - this.element.outerHeight();\n }\n this.active.prevAll(\".ui-menu-item\").each(function () {\n item = $(this);\n return item.offset().top - base + height > 0;\n });\n this.focus(event, item);\n } else {\n this.focus(event, this._menuItems(this.activeMenu).first());\n }\n },\n _hasScroll: function () {\n return this.element.outerHeight() < this.element.prop(\"scrollHeight\");\n },\n select: function (event) {\n // TODO: It should never be possible to not have an active item at this\n // point, but the tests don't trigger mouseenter before click.\n this.active = this.active || $(event.target).closest(\".ui-menu-item\");\n var ui = {\n item: this.active\n };\n if (!this.active.has(\".ui-menu\").length) {\n this.collapseAll(event, true);\n }\n this._trigger(\"select\", event, ui);\n },\n _filterMenuItems: function (character) {\n var escapedCharacter = character.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\"),\n regex = new RegExp(\"^\" + escapedCharacter, \"i\");\n return this.activeMenu.find(this.options.items)\n\n // Only match on items, not dividers or other content (#10571)\n .filter(\".ui-menu-item\").filter(function () {\n return regex.test(String.prototype.trim.call($(this).children(\".ui-menu-item-wrapper\").text()));\n });\n }\n });\n\n /*!\n * jQuery UI Autocomplete 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Autocomplete\n //>>group: Widgets\n //>>description: Lists suggested words as the user is typing.\n //>>docs: http://api.jqueryui.com/autocomplete/\n //>>demos: http://jqueryui.com/autocomplete/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/autocomplete.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.autocomplete\", {\n version: \"1.13.2\",\n defaultElement: \"<input>\",\n options: {\n appendTo: null,\n autoFocus: false,\n delay: 300,\n minLength: 1,\n position: {\n my: \"left top\",\n at: \"left bottom\",\n collision: \"none\"\n },\n source: null,\n // Callbacks\n change: null,\n close: null,\n focus: null,\n open: null,\n response: null,\n search: null,\n select: null\n },\n requestIndex: 0,\n pending: 0,\n liveRegionTimer: null,\n _create: function () {\n // Some browsers only repeat keydown events, not keypress events,\n // so we use the suppressKeyPress flag to determine if we've already\n // handled the keydown event. #7269\n // Unfortunately the code for & in keypress is the same as the up arrow,\n // so we use the suppressKeyPressRepeat flag to avoid handling keypress\n // events when we know the keydown event was used to modify the\n // search term. #7799\n var suppressKeyPress,\n suppressKeyPressRepeat,\n suppressInput,\n nodeName = this.element[0].nodeName.toLowerCase(),\n isTextarea = nodeName === \"textarea\",\n isInput = nodeName === \"input\";\n\n // Textareas are always multi-line\n // Inputs are always single-line, even if inside a contentEditable element\n // IE also treats inputs as contentEditable\n // All other element types are determined by whether or not they're contentEditable\n this.isMultiLine = isTextarea || !isInput && this._isContentEditable(this.element);\n this.valueMethod = this.element[isTextarea || isInput ? \"val\" : \"text\"];\n this.isNewMenu = true;\n this._addClass(\"ui-autocomplete-input\");\n this.element.attr(\"autocomplete\", \"off\");\n this._on(this.element, {\n keydown: function (event) {\n if (this.element.prop(\"readOnly\")) {\n suppressKeyPress = true;\n suppressInput = true;\n suppressKeyPressRepeat = true;\n return;\n }\n suppressKeyPress = false;\n suppressInput = false;\n suppressKeyPressRepeat = false;\n var keyCode = $.ui.keyCode;\n switch (event.keyCode) {\n case keyCode.PAGE_UP:\n suppressKeyPress = true;\n this._move(\"previousPage\", event);\n break;\n case keyCode.PAGE_DOWN:\n suppressKeyPress = true;\n this._move(\"nextPage\", event);\n break;\n case keyCode.UP:\n suppressKeyPress = true;\n this._keyEvent(\"previous\", event);\n break;\n case keyCode.DOWN:\n suppressKeyPress = true;\n this._keyEvent(\"next\", event);\n break;\n case keyCode.ENTER:\n // when menu is open and has focus\n if (this.menu.active) {\n // #6055 - Opera still allows the keypress to occur\n // which causes forms to submit\n suppressKeyPress = true;\n event.preventDefault();\n this.menu.select(event);\n }\n break;\n case keyCode.TAB:\n if (this.menu.active) {\n this.menu.select(event);\n }\n break;\n case keyCode.ESCAPE:\n if (this.menu.element.is(\":visible\")) {\n if (!this.isMultiLine) {\n this._value(this.term);\n }\n this.close(event);\n\n // Different browsers have different default behavior for escape\n // Single press can mean undo or clear\n // Double press in IE means clear the whole form\n event.preventDefault();\n }\n break;\n default:\n suppressKeyPressRepeat = true;\n\n // search timeout should be triggered before the input value is changed\n this._searchTimeout(event);\n break;\n }\n },\n keypress: function (event) {\n if (suppressKeyPress) {\n suppressKeyPress = false;\n if (!this.isMultiLine || this.menu.element.is(\":visible\")) {\n event.preventDefault();\n }\n return;\n }\n if (suppressKeyPressRepeat) {\n return;\n }\n\n // Replicate some key handlers to allow them to repeat in Firefox and Opera\n var keyCode = $.ui.keyCode;\n switch (event.keyCode) {\n case keyCode.PAGE_UP:\n this._move(\"previousPage\", event);\n break;\n case keyCode.PAGE_DOWN:\n this._move(\"nextPage\", event);\n break;\n case keyCode.UP:\n this._keyEvent(\"previous\", event);\n break;\n case keyCode.DOWN:\n this._keyEvent(\"next\", event);\n break;\n }\n },\n input: function (event) {\n if (suppressInput) {\n suppressInput = false;\n event.preventDefault();\n return;\n }\n this._searchTimeout(event);\n },\n focus: function () {\n this.selectedItem = null;\n this.previous = this._value();\n },\n blur: function (event) {\n clearTimeout(this.searching);\n this.close(event);\n this._change(event);\n }\n });\n this._initSource();\n this.menu = $(\"<ul>\").appendTo(this._appendTo()).menu({\n // disable ARIA support, the live region takes care of that\n role: null\n }).hide()\n\n // Support: IE 11 only, Edge <= 14\n // For other browsers, we preventDefault() on the mousedown event\n // to keep the dropdown from taking focus from the input. This doesn't\n // work for IE/Edge, causing problems with selection and scrolling (#9638)\n // Happily, IE and Edge support an \"unselectable\" attribute that\n // prevents an element from receiving focus, exactly what we want here.\n .attr({\n \"unselectable\": \"on\"\n }).menu(\"instance\");\n this._addClass(this.menu.element, \"ui-autocomplete\", \"ui-front\");\n this._on(this.menu.element, {\n mousedown: function (event) {\n // Prevent moving focus out of the text field\n event.preventDefault();\n },\n menufocus: function (event, ui) {\n var label, item;\n\n // support: Firefox\n // Prevent accidental activation of menu items in Firefox (#7024 #9118)\n if (this.isNewMenu) {\n this.isNewMenu = false;\n if (event.originalEvent && /^mouse/.test(event.originalEvent.type)) {\n this.menu.blur();\n this.document.one(\"mousemove\", function () {\n $(event.target).trigger(event.originalEvent);\n });\n return;\n }\n }\n item = ui.item.data(\"ui-autocomplete-item\");\n if (false !== this._trigger(\"focus\", event, {\n item: item\n })) {\n // use value to match what will end up in the input, if it was a key event\n if (event.originalEvent && /^key/.test(event.originalEvent.type)) {\n this._value(item.value);\n }\n }\n\n // Announce the value in the liveRegion\n label = ui.item.attr(\"aria-label\") || item.value;\n if (label && String.prototype.trim.call(label).length) {\n clearTimeout(this.liveRegionTimer);\n this.liveRegionTimer = this._delay(function () {\n this.liveRegion.html($(\"<div>\").text(label));\n }, 100);\n }\n },\n menuselect: function (event, ui) {\n var item = ui.item.data(\"ui-autocomplete-item\"),\n previous = this.previous;\n\n // Only trigger when focus was lost (click on menu)\n if (this.element[0] !== $.ui.safeActiveElement(this.document[0])) {\n this.element.trigger(\"focus\");\n this.previous = previous;\n\n // #6109 - IE triggers two focus events and the second\n // is asynchronous, so we need to reset the previous\n // term synchronously and asynchronously :-(\n this._delay(function () {\n this.previous = previous;\n this.selectedItem = item;\n });\n }\n if (false !== this._trigger(\"select\", event, {\n item: item\n })) {\n this._value(item.value);\n }\n\n // reset the term after the select event\n // this allows custom select handling to work properly\n this.term = this._value();\n this.close(event);\n this.selectedItem = item;\n }\n });\n this.liveRegion = $(\"<div>\", {\n role: \"status\",\n \"aria-live\": \"assertive\",\n \"aria-relevant\": \"additions\"\n }).appendTo(this.document[0].body);\n this._addClass(this.liveRegion, null, \"ui-helper-hidden-accessible\");\n\n // Turning off autocomplete prevents the browser from remembering the\n // value when navigating through history, so we re-enable autocomplete\n // if the page is unloaded before the widget is destroyed. #7790\n this._on(this.window, {\n beforeunload: function () {\n this.element.removeAttr(\"autocomplete\");\n }\n });\n },\n _destroy: function () {\n clearTimeout(this.searching);\n this.element.removeAttr(\"autocomplete\");\n this.menu.element.remove();\n this.liveRegion.remove();\n },\n _setOption: function (key, value) {\n this._super(key, value);\n if (key === \"source\") {\n this._initSource();\n }\n if (key === \"appendTo\") {\n this.menu.element.appendTo(this._appendTo());\n }\n if (key === \"disabled\" && value && this.xhr) {\n this.xhr.abort();\n }\n },\n _isEventTargetInWidget: function (event) {\n var menuElement = this.menu.element[0];\n return event.target === this.element[0] || event.target === menuElement || $.contains(menuElement, event.target);\n },\n _closeOnClickOutside: function (event) {\n if (!this._isEventTargetInWidget(event)) {\n this.close();\n }\n },\n _appendTo: function () {\n var element = this.options.appendTo;\n if (element) {\n element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0);\n }\n if (!element || !element[0]) {\n element = this.element.closest(\".ui-front, dialog\");\n }\n if (!element.length) {\n element = this.document[0].body;\n }\n return element;\n },\n _initSource: function () {\n var array,\n url,\n that = this;\n if (Array.isArray(this.options.source)) {\n array = this.options.source;\n this.source = function (request, response) {\n response($.ui.autocomplete.filter(array, request.term));\n };\n } else if (typeof this.options.source === \"string\") {\n url = this.options.source;\n this.source = function (request, response) {\n if (that.xhr) {\n that.xhr.abort();\n }\n that.xhr = $.ajax({\n url: url,\n data: request,\n dataType: \"json\",\n success: function (data) {\n response(data);\n },\n error: function () {\n response([]);\n }\n });\n };\n } else {\n this.source = this.options.source;\n }\n },\n _searchTimeout: function (event) {\n clearTimeout(this.searching);\n this.searching = this._delay(function () {\n // Search if the value has changed, or if the user retypes the same value (see #7434)\n var equalValues = this.term === this._value(),\n menuVisible = this.menu.element.is(\":visible\"),\n modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n if (!equalValues || equalValues && !menuVisible && !modifierKey) {\n this.selectedItem = null;\n this.search(null, event);\n }\n }, this.options.delay);\n },\n search: function (value, event) {\n value = value != null ? value : this._value();\n\n // Always save the actual value, not the one passed as an argument\n this.term = this._value();\n if (value.length < this.options.minLength) {\n return this.close(event);\n }\n if (this._trigger(\"search\", event) === false) {\n return;\n }\n return this._search(value);\n },\n _search: function (value) {\n this.pending++;\n this._addClass(\"ui-autocomplete-loading\");\n this.cancelSearch = false;\n this.source({\n term: value\n }, this._response());\n },\n _response: function () {\n var index = ++this.requestIndex;\n return function (content) {\n if (index === this.requestIndex) {\n this.__response(content);\n }\n this.pending--;\n if (!this.pending) {\n this._removeClass(\"ui-autocomplete-loading\");\n }\n }.bind(this);\n },\n __response: function (content) {\n if (content) {\n content = this._normalize(content);\n }\n this._trigger(\"response\", null, {\n content: content\n });\n if (!this.options.disabled && content && content.length && !this.cancelSearch) {\n this._suggest(content);\n this._trigger(\"open\");\n } else {\n // use ._close() instead of .close() so we don't cancel future searches\n this._close();\n }\n },\n close: function (event) {\n this.cancelSearch = true;\n this._close(event);\n },\n _close: function (event) {\n // Remove the handler that closes the menu on outside clicks\n this._off(this.document, \"mousedown\");\n if (this.menu.element.is(\":visible\")) {\n this.menu.element.hide();\n this.menu.blur();\n this.isNewMenu = true;\n this._trigger(\"close\", event);\n }\n },\n _change: function (event) {\n if (this.previous !== this._value()) {\n this._trigger(\"change\", event, {\n item: this.selectedItem\n });\n }\n },\n _normalize: function (items) {\n // assume all items have the right format when the first item is complete\n if (items.length && items[0].label && items[0].value) {\n return items;\n }\n return $.map(items, function (item) {\n if (typeof item === \"string\") {\n return {\n label: item,\n value: item\n };\n }\n return $.extend({}, item, {\n label: item.label || item.value,\n value: item.value || item.label\n });\n });\n },\n _suggest: function (items) {\n var ul = this.menu.element.empty();\n this._renderMenu(ul, items);\n this.isNewMenu = true;\n this.menu.refresh();\n\n // Size and position menu\n ul.show();\n this._resizeMenu();\n ul.position($.extend({\n of: this.element\n }, this.options.position));\n if (this.options.autoFocus) {\n this.menu.next();\n }\n\n // Listen for interactions outside of the widget (#6642)\n this._on(this.document, {\n mousedown: \"_closeOnClickOutside\"\n });\n },\n _resizeMenu: function () {\n var ul = this.menu.element;\n ul.outerWidth(Math.max(\n // Firefox wraps long text (possibly a rounding bug)\n // so we add 1px to avoid the wrapping (#7513)\n ul.width(\"\").outerWidth() + 1, this.element.outerWidth()));\n },\n _renderMenu: function (ul, items) {\n var that = this;\n $.each(items, function (index, item) {\n that._renderItemData(ul, item);\n });\n },\n _renderItemData: function (ul, item) {\n return this._renderItem(ul, item).data(\"ui-autocomplete-item\", item);\n },\n _renderItem: function (ul, item) {\n return $(\"<li>\").append($(\"<div>\").text(item.label)).appendTo(ul);\n },\n _move: function (direction, event) {\n if (!this.menu.element.is(\":visible\")) {\n this.search(null, event);\n return;\n }\n if (this.menu.isFirstItem() && /^previous/.test(direction) || this.menu.isLastItem() && /^next/.test(direction)) {\n if (!this.isMultiLine) {\n this._value(this.term);\n }\n this.menu.blur();\n return;\n }\n this.menu[direction](event);\n },\n widget: function () {\n return this.menu.element;\n },\n _value: function () {\n return this.valueMethod.apply(this.element, arguments);\n },\n _keyEvent: function (keyEvent, event) {\n if (!this.isMultiLine || this.menu.element.is(\":visible\")) {\n this._move(keyEvent, event);\n\n // Prevents moving cursor to beginning/end of the text field in some browsers\n event.preventDefault();\n }\n },\n // Support: Chrome <=50\n // We should be able to just use this.element.prop( \"isContentEditable\" )\n // but hidden elements always report false in Chrome.\n // https://code.google.com/p/chromium/issues/detail?id=313082\n _isContentEditable: function (element) {\n if (!element.length) {\n return false;\n }\n var editable = element.prop(\"contentEditable\");\n if (editable === \"inherit\") {\n return this._isContentEditable(element.parent());\n }\n return editable === \"true\";\n }\n });\n $.extend($.ui.autocomplete, {\n escapeRegex: function (value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n },\n filter: function (array, term) {\n var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), \"i\");\n return $.grep(array, function (value) {\n return matcher.test(value.label || value.value || value);\n });\n }\n });\n\n // Live region extension, adding a `messages` option\n // NOTE: This is an experimental API. We are still investigating\n // a full solution for string manipulation and internationalization.\n $.widget(\"ui.autocomplete\", $.ui.autocomplete, {\n options: {\n messages: {\n noResults: \"No search results.\",\n results: function (amount) {\n return amount + (amount > 1 ? \" results are\" : \" result is\") + \" available, use up and down arrow keys to navigate.\";\n }\n }\n },\n __response: function (content) {\n var message;\n this._superApply(arguments);\n if (this.options.disabled || this.cancelSearch) {\n return;\n }\n if (content && content.length) {\n message = this.options.messages.results(content.length);\n } else {\n message = this.options.messages.noResults;\n }\n clearTimeout(this.liveRegionTimer);\n this.liveRegionTimer = this._delay(function () {\n this.liveRegion.html($(\"<div>\").text(message));\n }, 100);\n }\n });\n var widgetsAutocomplete = $.ui.autocomplete;\n\n /*!\n * jQuery UI Controlgroup 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Controlgroup\n //>>group: Widgets\n //>>description: Visually groups form control widgets\n //>>docs: http://api.jqueryui.com/controlgroup/\n //>>demos: http://jqueryui.com/controlgroup/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/controlgroup.css\n //>>css.theme: ../../themes/base/theme.css\n\n var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;\n var widgetsControlgroup = $.widget(\"ui.controlgroup\", {\n version: \"1.13.2\",\n defaultElement: \"<div>\",\n options: {\n direction: \"horizontal\",\n disabled: null,\n onlyVisible: true,\n items: {\n \"button\": \"input[type=button], input[type=submit], input[type=reset], button, a\",\n \"controlgroupLabel\": \".ui-controlgroup-label\",\n \"checkboxradio\": \"input[type='checkbox'], input[type='radio']\",\n \"selectmenu\": \"select\",\n \"spinner\": \".ui-spinner-input\"\n }\n },\n _create: function () {\n this._enhance();\n },\n // To support the enhanced option in jQuery Mobile, we isolate DOM manipulation\n _enhance: function () {\n this.element.attr(\"role\", \"toolbar\");\n this.refresh();\n },\n _destroy: function () {\n this._callChildMethod(\"destroy\");\n this.childWidgets.removeData(\"ui-controlgroup-data\");\n this.element.removeAttr(\"role\");\n if (this.options.items.controlgroupLabel) {\n this.element.find(this.options.items.controlgroupLabel).find(\".ui-controlgroup-label-contents\").contents().unwrap();\n }\n },\n _initWidgets: function () {\n var that = this,\n childWidgets = [];\n\n // First we iterate over each of the items options\n $.each(this.options.items, function (widget, selector) {\n var labels;\n var options = {};\n\n // Make sure the widget has a selector set\n if (!selector) {\n return;\n }\n if (widget === \"controlgroupLabel\") {\n labels = that.element.find(selector);\n labels.each(function () {\n var element = $(this);\n if (element.children(\".ui-controlgroup-label-contents\").length) {\n return;\n }\n element.contents().wrapAll(\"<span class='ui-controlgroup-label-contents'></span>\");\n });\n that._addClass(labels, null, \"ui-widget ui-widget-content ui-state-default\");\n childWidgets = childWidgets.concat(labels.get());\n return;\n }\n\n // Make sure the widget actually exists\n if (!$.fn[widget]) {\n return;\n }\n\n // We assume everything is in the middle to start because we can't determine\n // first / last elements until all enhancments are done.\n if (that[\"_\" + widget + \"Options\"]) {\n options = that[\"_\" + widget + \"Options\"](\"middle\");\n } else {\n options = {\n classes: {}\n };\n }\n\n // Find instances of this widget inside controlgroup and init them\n that.element.find(selector).each(function () {\n var element = $(this);\n var instance = element[widget](\"instance\");\n\n // We need to clone the default options for this type of widget to avoid\n // polluting the variable options which has a wider scope than a single widget.\n var instanceOptions = $.widget.extend({}, options);\n\n // If the button is the child of a spinner ignore it\n // TODO: Find a more generic solution\n if (widget === \"button\" && element.parent(\".ui-spinner\").length) {\n return;\n }\n\n // Create the widget if it doesn't exist\n if (!instance) {\n instance = element[widget]()[widget](\"instance\");\n }\n if (instance) {\n instanceOptions.classes = that._resolveClassesValues(instanceOptions.classes, instance);\n }\n element[widget](instanceOptions);\n\n // Store an instance of the controlgroup to be able to reference\n // from the outermost element for changing options and refresh\n var widgetElement = element[widget](\"widget\");\n $.data(widgetElement[0], \"ui-controlgroup-data\", instance ? instance : element[widget](\"instance\"));\n childWidgets.push(widgetElement[0]);\n });\n });\n this.childWidgets = $($.uniqueSort(childWidgets));\n this._addClass(this.childWidgets, \"ui-controlgroup-item\");\n },\n _callChildMethod: function (method) {\n this.childWidgets.each(function () {\n var element = $(this),\n data = element.data(\"ui-controlgroup-data\");\n if (data && data[method]) {\n data[method]();\n }\n });\n },\n _updateCornerClass: function (element, position) {\n var remove = \"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all\";\n var add = this._buildSimpleOptions(position, \"label\").classes.label;\n this._removeClass(element, null, remove);\n this._addClass(element, null, add);\n },\n _buildSimpleOptions: function (position, key) {\n var direction = this.options.direction === \"vertical\";\n var result = {\n classes: {}\n };\n result.classes[key] = {\n \"middle\": \"\",\n \"first\": \"ui-corner-\" + (direction ? \"top\" : \"left\"),\n \"last\": \"ui-corner-\" + (direction ? \"bottom\" : \"right\"),\n \"only\": \"ui-corner-all\"\n }[position];\n return result;\n },\n _spinnerOptions: function (position) {\n var options = this._buildSimpleOptions(position, \"ui-spinner\");\n options.classes[\"ui-spinner-up\"] = \"\";\n options.classes[\"ui-spinner-down\"] = \"\";\n return options;\n },\n _buttonOptions: function (position) {\n return this._buildSimpleOptions(position, \"ui-button\");\n },\n _checkboxradioOptions: function (position) {\n return this._buildSimpleOptions(position, \"ui-checkboxradio-label\");\n },\n _selectmenuOptions: function (position) {\n var direction = this.options.direction === \"vertical\";\n return {\n width: direction ? \"auto\" : false,\n classes: {\n middle: {\n \"ui-selectmenu-button-open\": \"\",\n \"ui-selectmenu-button-closed\": \"\"\n },\n first: {\n \"ui-selectmenu-button-open\": \"ui-corner-\" + (direction ? \"top\" : \"tl\"),\n \"ui-selectmenu-button-closed\": \"ui-corner-\" + (direction ? \"top\" : \"left\")\n },\n last: {\n \"ui-selectmenu-button-open\": direction ? \"\" : \"ui-corner-tr\",\n \"ui-selectmenu-button-closed\": \"ui-corner-\" + (direction ? \"bottom\" : \"right\")\n },\n only: {\n \"ui-selectmenu-button-open\": \"ui-corner-top\",\n \"ui-selectmenu-button-closed\": \"ui-corner-all\"\n }\n }[position]\n };\n },\n _resolveClassesValues: function (classes, instance) {\n var result = {};\n $.each(classes, function (key) {\n var current = instance.options.classes[key] || \"\";\n current = String.prototype.trim.call(current.replace(controlgroupCornerRegex, \"\"));\n result[key] = (current + \" \" + classes[key]).replace(/\\s+/g, \" \");\n });\n return result;\n },\n _setOption: function (key, value) {\n if (key === \"direction\") {\n this._removeClass(\"ui-controlgroup-\" + this.options.direction);\n }\n this._super(key, value);\n if (key === \"disabled\") {\n this._callChildMethod(value ? \"disable\" : \"enable\");\n return;\n }\n this.refresh();\n },\n refresh: function () {\n var children,\n that = this;\n this._addClass(\"ui-controlgroup ui-controlgroup-\" + this.options.direction);\n if (this.options.direction === \"horizontal\") {\n this._addClass(null, \"ui-helper-clearfix\");\n }\n this._initWidgets();\n children = this.childWidgets;\n\n // We filter here because we need to track all childWidgets not just the visible ones\n if (this.options.onlyVisible) {\n children = children.filter(\":visible\");\n }\n if (children.length) {\n // We do this last because we need to make sure all enhancment is done\n // before determining first and last\n $.each([\"first\", \"last\"], function (index, value) {\n var instance = children[value]().data(\"ui-controlgroup-data\");\n if (instance && that[\"_\" + instance.widgetName + \"Options\"]) {\n var options = that[\"_\" + instance.widgetName + \"Options\"](children.length === 1 ? \"only\" : value);\n options.classes = that._resolveClassesValues(options.classes, instance);\n instance.element[instance.widgetName](options);\n } else {\n that._updateCornerClass(children[value](), value);\n }\n });\n\n // Finally call the refresh method on each of the child widgets.\n this._callChildMethod(\"refresh\");\n }\n }\n });\n\n /*!\n * jQuery UI Checkboxradio 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Checkboxradio\n //>>group: Widgets\n //>>description: Enhances a form with multiple themeable checkboxes or radio buttons.\n //>>docs: http://api.jqueryui.com/checkboxradio/\n //>>demos: http://jqueryui.com/checkboxradio/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/button.css\n //>>css.structure: ../../themes/base/checkboxradio.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.checkboxradio\", [$.ui.formResetMixin, {\n version: \"1.13.2\",\n options: {\n disabled: null,\n label: null,\n icon: true,\n classes: {\n \"ui-checkboxradio-label\": \"ui-corner-all\",\n \"ui-checkboxradio-icon\": \"ui-corner-all\"\n }\n },\n _getCreateOptions: function () {\n var disabled, labels, labelContents;\n var options = this._super() || {};\n\n // We read the type here, because it makes more sense to throw a element type error first,\n // rather then the error for lack of a label. Often if its the wrong type, it\n // won't have a label (e.g. calling on a div, btn, etc)\n this._readType();\n labels = this.element.labels();\n\n // If there are multiple labels, use the last one\n this.label = $(labels[labels.length - 1]);\n if (!this.label.length) {\n $.error(\"No label found for checkboxradio widget\");\n }\n this.originalLabel = \"\";\n\n // We need to get the label text but this may also need to make sure it does not contain the\n // input itself.\n // The label contents could be text, html, or a mix. We wrap all elements\n // and read the wrapper's `innerHTML` to get a string representation of\n // the label, without the input as part of it.\n labelContents = this.label.contents().not(this.element[0]);\n if (labelContents.length) {\n this.originalLabel += labelContents.clone().wrapAll(\"<div></div>\").parent().html();\n }\n\n // Set the label option if we found label text\n if (this.originalLabel) {\n options.label = this.originalLabel;\n }\n disabled = this.element[0].disabled;\n if (disabled != null) {\n options.disabled = disabled;\n }\n return options;\n },\n _create: function () {\n var checked = this.element[0].checked;\n this._bindFormResetHandler();\n if (this.options.disabled == null) {\n this.options.disabled = this.element[0].disabled;\n }\n this._setOption(\"disabled\", this.options.disabled);\n this._addClass(\"ui-checkboxradio\", \"ui-helper-hidden-accessible\");\n this._addClass(this.label, \"ui-checkboxradio-label\", \"ui-button ui-widget\");\n if (this.type === \"radio\") {\n this._addClass(this.label, \"ui-checkboxradio-radio-label\");\n }\n if (this.options.label && this.options.label !== this.originalLabel) {\n this._updateLabel();\n } else if (this.originalLabel) {\n this.options.label = this.originalLabel;\n }\n this._enhance();\n if (checked) {\n this._addClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\");\n }\n this._on({\n change: \"_toggleClasses\",\n focus: function () {\n this._addClass(this.label, null, \"ui-state-focus ui-visual-focus\");\n },\n blur: function () {\n this._removeClass(this.label, null, \"ui-state-focus ui-visual-focus\");\n }\n });\n },\n _readType: function () {\n var nodeName = this.element[0].nodeName.toLowerCase();\n this.type = this.element[0].type;\n if (nodeName !== \"input\" || !/radio|checkbox/.test(this.type)) {\n $.error(\"Can't create checkboxradio on element.nodeName=\" + nodeName + \" and element.type=\" + this.type);\n }\n },\n // Support jQuery Mobile enhanced option\n _enhance: function () {\n this._updateIcon(this.element[0].checked);\n },\n widget: function () {\n return this.label;\n },\n _getRadioGroup: function () {\n var group;\n var name = this.element[0].name;\n var nameSelector = \"input[name='\" + $.escapeSelector(name) + \"']\";\n if (!name) {\n return $([]);\n }\n if (this.form.length) {\n group = $(this.form[0].elements).filter(nameSelector);\n } else {\n // Not inside a form, check all inputs that also are not inside a form\n group = $(nameSelector).filter(function () {\n return $(this)._form().length === 0;\n });\n }\n return group.not(this.element);\n },\n _toggleClasses: function () {\n var checked = this.element[0].checked;\n this._toggleClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked);\n if (this.options.icon && this.type === \"checkbox\") {\n this._toggleClass(this.icon, null, \"ui-icon-check ui-state-checked\", checked)._toggleClass(this.icon, null, \"ui-icon-blank\", !checked);\n }\n if (this.type === \"radio\") {\n this._getRadioGroup().each(function () {\n var instance = $(this).checkboxradio(\"instance\");\n if (instance) {\n instance._removeClass(instance.label, \"ui-checkboxradio-checked\", \"ui-state-active\");\n }\n });\n }\n },\n _destroy: function () {\n this._unbindFormResetHandler();\n if (this.icon) {\n this.icon.remove();\n this.iconSpace.remove();\n }\n },\n _setOption: function (key, value) {\n // We don't allow the value to be set to nothing\n if (key === \"label\" && !value) {\n return;\n }\n this._super(key, value);\n if (key === \"disabled\") {\n this._toggleClass(this.label, null, \"ui-state-disabled\", value);\n this.element[0].disabled = value;\n\n // Don't refresh when setting disabled\n return;\n }\n this.refresh();\n },\n _updateIcon: function (checked) {\n var toAdd = \"ui-icon ui-icon-background \";\n if (this.options.icon) {\n if (!this.icon) {\n this.icon = $(\"<span>\");\n this.iconSpace = $(\"<span> </span>\");\n this._addClass(this.iconSpace, \"ui-checkboxradio-icon-space\");\n }\n if (this.type === \"checkbox\") {\n toAdd += checked ? \"ui-icon-check ui-state-checked\" : \"ui-icon-blank\";\n this._removeClass(this.icon, null, checked ? \"ui-icon-blank\" : \"ui-icon-check\");\n } else {\n toAdd += \"ui-icon-blank\";\n }\n this._addClass(this.icon, \"ui-checkboxradio-icon\", toAdd);\n if (!checked) {\n this._removeClass(this.icon, null, \"ui-icon-check ui-state-checked\");\n }\n this.icon.prependTo(this.label).after(this.iconSpace);\n } else if (this.icon !== undefined) {\n this.icon.remove();\n this.iconSpace.remove();\n delete this.icon;\n }\n },\n _updateLabel: function () {\n // Remove the contents of the label ( minus the icon, icon space, and input )\n var contents = this.label.contents().not(this.element[0]);\n if (this.icon) {\n contents = contents.not(this.icon[0]);\n }\n if (this.iconSpace) {\n contents = contents.not(this.iconSpace[0]);\n }\n contents.remove();\n this.label.append(this.options.label);\n },\n refresh: function () {\n var checked = this.element[0].checked,\n isDisabled = this.element[0].disabled;\n this._updateIcon(checked);\n this._toggleClass(this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked);\n if (this.options.label !== null) {\n this._updateLabel();\n }\n if (isDisabled !== this.options.disabled) {\n this._setOptions({\n \"disabled\": isDisabled\n });\n }\n }\n }]);\n var widgetsCheckboxradio = $.ui.checkboxradio;\n\n /*!\n * jQuery UI Button 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Button\n //>>group: Widgets\n //>>description: Enhances a form with themeable buttons.\n //>>docs: http://api.jqueryui.com/button/\n //>>demos: http://jqueryui.com/button/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/button.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.button\", {\n version: \"1.13.2\",\n defaultElement: \"<button>\",\n options: {\n classes: {\n \"ui-button\": \"ui-corner-all\"\n },\n disabled: null,\n icon: null,\n iconPosition: \"beginning\",\n label: null,\n showLabel: true\n },\n _getCreateOptions: function () {\n var disabled,\n // This is to support cases like in jQuery Mobile where the base widget does have\n // an implementation of _getCreateOptions\n options = this._super() || {};\n this.isInput = this.element.is(\"input\");\n disabled = this.element[0].disabled;\n if (disabled != null) {\n options.disabled = disabled;\n }\n this.originalLabel = this.isInput ? this.element.val() : this.element.html();\n if (this.originalLabel) {\n options.label = this.originalLabel;\n }\n return options;\n },\n _create: function () {\n if (!this.option.showLabel & !this.options.icon) {\n this.options.showLabel = true;\n }\n\n // We have to check the option again here even though we did in _getCreateOptions,\n // because null may have been passed on init which would override what was set in\n // _getCreateOptions\n if (this.options.disabled == null) {\n this.options.disabled = this.element[0].disabled || false;\n }\n this.hasTitle = !!this.element.attr(\"title\");\n\n // Check to see if the label needs to be set or if its already correct\n if (this.options.label && this.options.label !== this.originalLabel) {\n if (this.isInput) {\n this.element.val(this.options.label);\n } else {\n this.element.html(this.options.label);\n }\n }\n this._addClass(\"ui-button\", \"ui-widget\");\n this._setOption(\"disabled\", this.options.disabled);\n this._enhance();\n if (this.element.is(\"a\")) {\n this._on({\n \"keyup\": function (event) {\n if (event.keyCode === $.ui.keyCode.SPACE) {\n event.preventDefault();\n\n // Support: PhantomJS <= 1.9, IE 8 Only\n // If a native click is available use it so we actually cause navigation\n // otherwise just trigger a click event\n if (this.element[0].click) {\n this.element[0].click();\n } else {\n this.element.trigger(\"click\");\n }\n }\n }\n });\n }\n },\n _enhance: function () {\n if (!this.element.is(\"button\")) {\n this.element.attr(\"role\", \"button\");\n }\n if (this.options.icon) {\n this._updateIcon(\"icon\", this.options.icon);\n this._updateTooltip();\n }\n },\n _updateTooltip: function () {\n this.title = this.element.attr(\"title\");\n if (!this.options.showLabel && !this.title) {\n this.element.attr(\"title\", this.options.label);\n }\n },\n _updateIcon: function (option, value) {\n var icon = option !== \"iconPosition\",\n position = icon ? this.options.iconPosition : value,\n displayBlock = position === \"top\" || position === \"bottom\";\n\n // Create icon\n if (!this.icon) {\n this.icon = $(\"<span>\");\n this._addClass(this.icon, \"ui-button-icon\", \"ui-icon\");\n if (!this.options.showLabel) {\n this._addClass(\"ui-button-icon-only\");\n }\n } else if (icon) {\n // If we are updating the icon remove the old icon class\n this._removeClass(this.icon, null, this.options.icon);\n }\n\n // If we are updating the icon add the new icon class\n if (icon) {\n this._addClass(this.icon, null, value);\n }\n this._attachIcon(position);\n\n // If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove\n // the iconSpace if there is one.\n if (displayBlock) {\n this._addClass(this.icon, null, \"ui-widget-icon-block\");\n if (this.iconSpace) {\n this.iconSpace.remove();\n }\n } else {\n // Position is beginning or end so remove the ui-widget-icon-block class and add the\n // space if it does not exist\n if (!this.iconSpace) {\n this.iconSpace = $(\"<span> </span>\");\n this._addClass(this.iconSpace, \"ui-button-icon-space\");\n }\n this._removeClass(this.icon, null, \"ui-wiget-icon-block\");\n this._attachIconSpace(position);\n }\n },\n _destroy: function () {\n this.element.removeAttr(\"role\");\n if (this.icon) {\n this.icon.remove();\n }\n if (this.iconSpace) {\n this.iconSpace.remove();\n }\n if (!this.hasTitle) {\n this.element.removeAttr(\"title\");\n }\n },\n _attachIconSpace: function (iconPosition) {\n this.icon[/^(?:end|bottom)/.test(iconPosition) ? \"before\" : \"after\"](this.iconSpace);\n },\n _attachIcon: function (iconPosition) {\n this.element[/^(?:end|bottom)/.test(iconPosition) ? \"append\" : \"prepend\"](this.icon);\n },\n _setOptions: function (options) {\n var newShowLabel = options.showLabel === undefined ? this.options.showLabel : options.showLabel,\n newIcon = options.icon === undefined ? this.options.icon : options.icon;\n if (!newShowLabel && !newIcon) {\n options.showLabel = true;\n }\n this._super(options);\n },\n _setOption: function (key, value) {\n if (key === \"icon\") {\n if (value) {\n this._updateIcon(key, value);\n } else if (this.icon) {\n this.icon.remove();\n if (this.iconSpace) {\n this.iconSpace.remove();\n }\n }\n }\n if (key === \"iconPosition\") {\n this._updateIcon(key, value);\n }\n\n // Make sure we can't end up with a button that has neither text nor icon\n if (key === \"showLabel\") {\n this._toggleClass(\"ui-button-icon-only\", null, !value);\n this._updateTooltip();\n }\n if (key === \"label\") {\n if (this.isInput) {\n this.element.val(value);\n } else {\n // If there is an icon, append it, else nothing then append the value\n // this avoids removal of the icon when setting label text\n this.element.html(value);\n if (this.icon) {\n this._attachIcon(this.options.iconPosition);\n this._attachIconSpace(this.options.iconPosition);\n }\n }\n }\n this._super(key, value);\n if (key === \"disabled\") {\n this._toggleClass(null, \"ui-state-disabled\", value);\n this.element[0].disabled = value;\n if (value) {\n this.element.trigger(\"blur\");\n }\n }\n },\n refresh: function () {\n // Make sure to only check disabled if its an element that supports this otherwise\n // check for the disabled class to determine state\n var isDisabled = this.element.is(\"input, button\") ? this.element[0].disabled : this.element.hasClass(\"ui-button-disabled\");\n if (isDisabled !== this.options.disabled) {\n this._setOptions({\n disabled: isDisabled\n });\n }\n this._updateTooltip();\n }\n });\n\n // DEPRECATED\n if ($.uiBackCompat !== false) {\n // Text and Icons options\n $.widget(\"ui.button\", $.ui.button, {\n options: {\n text: true,\n icons: {\n primary: null,\n secondary: null\n }\n },\n _create: function () {\n if (this.options.showLabel && !this.options.text) {\n this.options.showLabel = this.options.text;\n }\n if (!this.options.showLabel && this.options.text) {\n this.options.text = this.options.showLabel;\n }\n if (!this.options.icon && (this.options.icons.primary || this.options.icons.secondary)) {\n if (this.options.icons.primary) {\n this.options.icon = this.options.icons.primary;\n } else {\n this.options.icon = this.options.icons.secondary;\n this.options.iconPosition = \"end\";\n }\n } else if (this.options.icon) {\n this.options.icons.primary = this.options.icon;\n }\n this._super();\n },\n _setOption: function (key, value) {\n if (key === \"text\") {\n this._super(\"showLabel\", value);\n return;\n }\n if (key === \"showLabel\") {\n this.options.text = value;\n }\n if (key === \"icon\") {\n this.options.icons.primary = value;\n }\n if (key === \"icons\") {\n if (value.primary) {\n this._super(\"icon\", value.primary);\n this._super(\"iconPosition\", \"beginning\");\n } else if (value.secondary) {\n this._super(\"icon\", value.secondary);\n this._super(\"iconPosition\", \"end\");\n }\n }\n this._superApply(arguments);\n }\n });\n $.fn.button = function (orig) {\n return function (options) {\n var isMethodCall = typeof options === \"string\";\n var args = Array.prototype.slice.call(arguments, 1);\n var returnValue = this;\n if (isMethodCall) {\n // If this is an empty collection, we need to have the instance method\n // return undefined instead of the jQuery instance\n if (!this.length && options === \"instance\") {\n returnValue = undefined;\n } else {\n this.each(function () {\n var methodValue;\n var type = $(this).attr(\"type\");\n var name = type !== \"checkbox\" && type !== \"radio\" ? \"button\" : \"checkboxradio\";\n var instance = $.data(this, \"ui-\" + name);\n if (options === \"instance\") {\n returnValue = instance;\n return false;\n }\n if (!instance) {\n return $.error(\"cannot call methods on button\" + \" prior to initialization; \" + \"attempted to call method '\" + options + \"'\");\n }\n if (typeof instance[options] !== \"function\" || options.charAt(0) === \"_\") {\n return $.error(\"no such method '\" + options + \"' for button\" + \" widget instance\");\n }\n methodValue = instance[options].apply(instance, args);\n if (methodValue !== instance && methodValue !== undefined) {\n returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue;\n return false;\n }\n });\n }\n } else {\n // Allow multiple hashes to be passed on init\n if (args.length) {\n options = $.widget.extend.apply(null, [options].concat(args));\n }\n this.each(function () {\n var type = $(this).attr(\"type\");\n var name = type !== \"checkbox\" && type !== \"radio\" ? \"button\" : \"checkboxradio\";\n var instance = $.data(this, \"ui-\" + name);\n if (instance) {\n instance.option(options || {});\n if (instance._init) {\n instance._init();\n }\n } else {\n if (name === \"button\") {\n orig.call($(this), options);\n return;\n }\n $(this).checkboxradio($.extend({\n icon: false\n }, options));\n }\n });\n }\n return returnValue;\n };\n }($.fn.button);\n $.fn.buttonset = function () {\n if (!$.ui.controlgroup) {\n $.error(\"Controlgroup widget missing\");\n }\n if (arguments[0] === \"option\" && arguments[1] === \"items\" && arguments[2]) {\n return this.controlgroup.apply(this, [arguments[0], \"items.button\", arguments[2]]);\n }\n if (arguments[0] === \"option\" && arguments[1] === \"items\") {\n return this.controlgroup.apply(this, [arguments[0], \"items.button\"]);\n }\n if (typeof arguments[0] === \"object\" && arguments[0].items) {\n arguments[0].items = {\n button: arguments[0].items\n };\n }\n return this.controlgroup.apply(this, arguments);\n };\n }\n var widgetsButton = $.ui.button;\n\n /* eslint-disable max-len, camelcase */\n /*!\n * jQuery UI Datepicker 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Datepicker\n //>>group: Widgets\n //>>description: Displays a calendar from an input or inline for selecting dates.\n //>>docs: http://api.jqueryui.com/datepicker/\n //>>demos: http://jqueryui.com/datepicker/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/datepicker.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.extend($.ui, {\n datepicker: {\n version: \"1.13.2\"\n }\n });\n var datepicker_instActive;\n function datepicker_getZindex(elem) {\n var position, value;\n while (elem.length && elem[0] !== document) {\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\n // This makes behavior of this function consistent across browsers\n // WebKit always returns auto if the element is positioned\n position = elem.css(\"position\");\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\n // IE returns 0 when zIndex is not specified\n // other browsers return a string\n // we ignore the case of nested elements with an explicit value of 0\n // <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n value = parseInt(elem.css(\"zIndex\"), 10);\n if (!isNaN(value) && value !== 0) {\n return value;\n }\n }\n elem = elem.parent();\n }\n return 0;\n }\n\n /* Date picker manager.\n Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n Settings for (groups of) date pickers are maintained in an instance object,\n allowing multiple different settings on the same page. */\n\n function Datepicker() {\n this._curInst = null; // The current instance in use\n this._keyEvent = false; // If the last event was a key event\n this._disabledInputs = []; // List of date picker inputs that have been disabled\n this._datepickerShowing = false; // True if the popup picker is showing , false if not\n this._inDialog = false; // True if showing within a \"dialog\", false if not\n this._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n this._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n this._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n this._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n this._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n this._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n this._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n this._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n this._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n this.regional = []; // Available regional settings, indexed by language code\n this.regional[\"\"] = {\n // Default regional settings\n closeText: \"Done\",\n // Display text for close link\n prevText: \"Prev\",\n // Display text for previous month link\n nextText: \"Next\",\n // Display text for next month link\n currentText: \"Today\",\n // Display text for current month link\n monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n // Names of months for drop-down and formatting\n monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n // For formatting\n dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n // For formatting\n dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n // For formatting\n dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n // Column headings for days starting at Sunday\n weekHeader: \"Wk\",\n // Column header for week of the year\n dateFormat: \"mm/dd/yy\",\n // See format options on parseDate\n firstDay: 0,\n // The first day of the week, Sun = 0, Mon = 1, ...\n isRTL: false,\n // True if right-to-left language, false if left-to-right\n showMonthAfterYear: false,\n // True if the year select precedes month, false for month then year\n yearSuffix: \"\",\n // Additional text to append to the year in the month headers,\n selectMonthLabel: \"Select month\",\n // Invisible label for month selector\n selectYearLabel: \"Select year\" // Invisible label for year selector\n };\n\n this._defaults = {\n // Global defaults for all the date picker instances\n showOn: \"focus\",\n // \"focus\" for popup on focus,\n // \"button\" for trigger button, or \"both\" for either\n showAnim: \"fadeIn\",\n // Name of jQuery animation for popup\n showOptions: {},\n // Options for enhanced animations\n defaultDate: null,\n // Used when field is blank: actual date,\n // +/-number for offset from today, null for today\n appendText: \"\",\n // Display text following the input box, e.g. showing the format\n buttonText: \"...\",\n // Text for trigger button\n buttonImage: \"\",\n // URL for trigger button image\n buttonImageOnly: false,\n // True if the image appears alone, false if it appears on a button\n hideIfNoPrevNext: false,\n // True to hide next/previous month links\n // if not applicable, false to just disable them\n navigationAsDateFormat: false,\n // True if date formatting applied to prev/today/next links\n gotoCurrent: false,\n // True if today link goes back to current selection instead\n changeMonth: false,\n // True if month can be selected directly, false if only prev/next\n changeYear: false,\n // True if year can be selected directly, false if only prev/next\n yearRange: \"c-10:c+10\",\n // Range of years to display in drop-down,\n // either relative to today's year (-nn:+nn), relative to currently displayed year\n // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n showOtherMonths: false,\n // True to show dates in other months, false to leave blank\n selectOtherMonths: false,\n // True to allow selection of dates in other months, false for unselectable\n showWeek: false,\n // True to show week of the year, false to not show it\n calculateWeek: this.iso8601Week,\n // How to calculate the week of the year,\n // takes a Date and returns the number of the week for it\n shortYearCutoff: \"+10\",\n // Short year values < this are in the current century,\n // > this are in the previous century,\n // string value starting with \"+\" for current year + value\n minDate: null,\n // The earliest selectable date, or null for no limit\n maxDate: null,\n // The latest selectable date, or null for no limit\n duration: \"fast\",\n // Duration of display/closure\n beforeShowDay: null,\n // Function that takes a date and returns an array with\n // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n // [2] = cell title (optional), e.g. $.datepicker.noWeekends\n beforeShow: null,\n // Function that takes an input field and\n // returns a set of custom settings for the date picker\n onSelect: null,\n // Define a callback function when a date is selected\n onChangeMonthYear: null,\n // Define a callback function when the month or year is changed\n onClose: null,\n // Define a callback function when the datepicker is closed\n onUpdateDatepicker: null,\n // Define a callback function when the datepicker is updated\n numberOfMonths: 1,\n // Number of months to show at a time\n showCurrentAtPos: 0,\n // The position in multipe months at which to show the current month (starting at 0)\n stepMonths: 1,\n // Number of months to step back/forward\n stepBigMonths: 12,\n // Number of months to step back/forward for the big links\n altField: \"\",\n // Selector for an alternate field to store selected dates into\n altFormat: \"\",\n // The date format to use for the alternate field\n constrainInput: true,\n // The input is constrained by the current date format\n showButtonPanel: false,\n // True to show button panel, false to not show it\n autoSize: false,\n // True to size the input for the date format, false to leave as is\n disabled: false // The initial disabled state\n };\n\n $.extend(this._defaults, this.regional[\"\"]);\n this.regional.en = $.extend(true, {}, this.regional[\"\"]);\n this.regional[\"en-US\"] = $.extend(true, {}, this.regional.en);\n this.dpDiv = datepicker_bindHover($(\"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"));\n }\n $.extend(Datepicker.prototype, {\n /* Class name added to elements to indicate already configured with a date picker. */\n markerClassName: \"hasDatepicker\",\n //Keep track of the maximum number of rows displayed (see #7043)\n maxRows: 4,\n // TODO rename to \"widget\" when switching to widget factory\n _widgetDatepicker: function () {\n return this.dpDiv;\n },\n /* Override the default settings for all instances of the date picker.\n * @param settings object - the new settings to use as defaults (anonymous object)\n * @return the manager object\n */\n setDefaults: function (settings) {\n datepicker_extendRemove(this._defaults, settings || {});\n return this;\n },\n /* Attach the date picker to a jQuery selection.\n * @param target\telement - the target input field or division or span\n * @param settings object - the new settings to use for this date picker instance (anonymous)\n */\n _attachDatepicker: function (target, settings) {\n var nodeName, inline, inst;\n nodeName = target.nodeName.toLowerCase();\n inline = nodeName === \"div\" || nodeName === \"span\";\n if (!target.id) {\n this.uuid += 1;\n target.id = \"dp\" + this.uuid;\n }\n inst = this._newInst($(target), inline);\n inst.settings = $.extend({}, settings || {});\n if (nodeName === \"input\") {\n this._connectDatepicker(target, inst);\n } else if (inline) {\n this._inlineDatepicker(target, inst);\n }\n },\n /* Create a new instance object. */\n _newInst: function (target, inline) {\n var id = target[0].id.replace(/([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\"); // escape jQuery meta chars\n return {\n id: id,\n input: target,\n // associated target\n selectedDay: 0,\n selectedMonth: 0,\n selectedYear: 0,\n // current selection\n drawMonth: 0,\n drawYear: 0,\n // month being drawn\n inline: inline,\n // is datepicker inline or not\n dpDiv: !inline ? this.dpDiv :\n // presentation div\n datepicker_bindHover($(\"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\"))\n };\n },\n /* Attach the date picker to an input field. */\n _connectDatepicker: function (target, inst) {\n var input = $(target);\n inst.append = $([]);\n inst.trigger = $([]);\n if (input.hasClass(this.markerClassName)) {\n return;\n }\n this._attachments(input, inst);\n input.addClass(this.markerClassName).on(\"keydown\", this._doKeyDown).on(\"keypress\", this._doKeyPress).on(\"keyup\", this._doKeyUp);\n this._autoSize(inst);\n $.data(target, \"datepicker\", inst);\n\n //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n if (inst.settings.disabled) {\n this._disableDatepicker(target);\n }\n },\n /* Make attachments based on settings. */\n _attachments: function (input, inst) {\n var showOn,\n buttonText,\n buttonImage,\n appendText = this._get(inst, \"appendText\"),\n isRTL = this._get(inst, \"isRTL\");\n if (inst.append) {\n inst.append.remove();\n }\n if (appendText) {\n inst.append = $(\"<span>\").addClass(this._appendClass).text(appendText);\n input[isRTL ? \"before\" : \"after\"](inst.append);\n }\n input.off(\"focus\", this._showDatepicker);\n if (inst.trigger) {\n inst.trigger.remove();\n }\n showOn = this._get(inst, \"showOn\");\n if (showOn === \"focus\" || showOn === \"both\") {\n // pop-up date picker when in the marked field\n input.on(\"focus\", this._showDatepicker);\n }\n if (showOn === \"button\" || showOn === \"both\") {\n // pop-up date picker when button clicked\n buttonText = this._get(inst, \"buttonText\");\n buttonImage = this._get(inst, \"buttonImage\");\n if (this._get(inst, \"buttonImageOnly\")) {\n inst.trigger = $(\"<img>\").addClass(this._triggerClass).attr({\n src: buttonImage,\n alt: buttonText,\n title: buttonText\n });\n } else {\n inst.trigger = $(\"<button type='button'>\").addClass(this._triggerClass);\n if (buttonImage) {\n inst.trigger.html($(\"<img>\").attr({\n src: buttonImage,\n alt: buttonText,\n title: buttonText\n }));\n } else {\n inst.trigger.text(buttonText);\n }\n }\n input[isRTL ? \"before\" : \"after\"](inst.trigger);\n inst.trigger.on(\"click\", function () {\n if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) {\n $.datepicker._hideDatepicker();\n } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) {\n $.datepicker._hideDatepicker();\n $.datepicker._showDatepicker(input[0]);\n } else {\n $.datepicker._showDatepicker(input[0]);\n }\n return false;\n });\n }\n },\n /* Apply the maximum length for the date format. */\n _autoSize: function (inst) {\n if (this._get(inst, \"autoSize\") && !inst.inline) {\n var findMax,\n max,\n maxI,\n i,\n date = new Date(2009, 12 - 1, 20),\n // Ensure double digits\n dateFormat = this._get(inst, \"dateFormat\");\n if (dateFormat.match(/[DM]/)) {\n findMax = function (names) {\n max = 0;\n maxI = 0;\n for (i = 0; i < names.length; i++) {\n if (names[i].length > max) {\n max = names[i].length;\n maxI = i;\n }\n }\n return maxI;\n };\n date.setMonth(findMax(this._get(inst, dateFormat.match(/MM/) ? \"monthNames\" : \"monthNamesShort\")));\n date.setDate(findMax(this._get(inst, dateFormat.match(/DD/) ? \"dayNames\" : \"dayNamesShort\")) + 20 - date.getDay());\n }\n inst.input.attr(\"size\", this._formatDate(inst, date).length);\n }\n },\n /* Attach an inline date picker to a div. */\n _inlineDatepicker: function (target, inst) {\n var divSpan = $(target);\n if (divSpan.hasClass(this.markerClassName)) {\n return;\n }\n divSpan.addClass(this.markerClassName).append(inst.dpDiv);\n $.data(target, \"datepicker\", inst);\n this._setDate(inst, this._getDefaultDate(inst), true);\n this._updateDatepicker(inst);\n this._updateAlternate(inst);\n\n //If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n if (inst.settings.disabled) {\n this._disableDatepicker(target);\n }\n\n // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n inst.dpDiv.css(\"display\", \"block\");\n },\n /* Pop-up the date picker in a \"dialog\" box.\n * @param input element - ignored\n * @param date\tstring or Date - the initial date to display\n * @param onSelect function - the function to call when a date is selected\n * @param settings object - update the dialog date picker instance's settings (anonymous object)\n * @param pos int[2] - coordinates for the dialog's position within the screen or\n *\t\t\t\t\tevent - with x/y coordinates or\n *\t\t\t\t\tleave empty for default (screen centre)\n * @return the manager object\n */\n _dialogDatepicker: function (input, date, onSelect, settings, pos) {\n var id,\n browserWidth,\n browserHeight,\n scrollX,\n scrollY,\n inst = this._dialogInst; // internal instance\n\n if (!inst) {\n this.uuid += 1;\n id = \"dp\" + this.uuid;\n this._dialogInput = $(\"<input type='text' id='\" + id + \"' style='position: absolute; top: -100px; width: 0px;'/>\");\n this._dialogInput.on(\"keydown\", this._doKeyDown);\n $(\"body\").append(this._dialogInput);\n inst = this._dialogInst = this._newInst(this._dialogInput, false);\n inst.settings = {};\n $.data(this._dialogInput[0], \"datepicker\", inst);\n }\n datepicker_extendRemove(inst.settings, settings || {});\n date = date && date.constructor === Date ? this._formatDate(inst, date) : date;\n this._dialogInput.val(date);\n this._pos = pos ? pos.length ? pos : [pos.pageX, pos.pageY] : null;\n if (!this._pos) {\n browserWidth = document.documentElement.clientWidth;\n browserHeight = document.documentElement.clientHeight;\n scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n scrollY = document.documentElement.scrollTop || document.body.scrollTop;\n this._pos =\n // should use actual width/height below\n [browserWidth / 2 - 100 + scrollX, browserHeight / 2 - 150 + scrollY];\n }\n\n // Move input on screen for focus, but hidden behind dialog\n this._dialogInput.css(\"left\", this._pos[0] + 20 + \"px\").css(\"top\", this._pos[1] + \"px\");\n inst.settings.onSelect = onSelect;\n this._inDialog = true;\n this.dpDiv.addClass(this._dialogClass);\n this._showDatepicker(this._dialogInput[0]);\n if ($.blockUI) {\n $.blockUI(this.dpDiv);\n }\n $.data(this._dialogInput[0], \"datepicker\", inst);\n return this;\n },\n /* Detach a datepicker from its control.\n * @param target\telement - the target input field or division or span\n */\n _destroyDatepicker: function (target) {\n var nodeName,\n $target = $(target),\n inst = $.data(target, \"datepicker\");\n if (!$target.hasClass(this.markerClassName)) {\n return;\n }\n nodeName = target.nodeName.toLowerCase();\n $.removeData(target, \"datepicker\");\n if (nodeName === \"input\") {\n inst.append.remove();\n inst.trigger.remove();\n $target.removeClass(this.markerClassName).off(\"focus\", this._showDatepicker).off(\"keydown\", this._doKeyDown).off(\"keypress\", this._doKeyPress).off(\"keyup\", this._doKeyUp);\n } else if (nodeName === \"div\" || nodeName === \"span\") {\n $target.removeClass(this.markerClassName).empty();\n }\n if (datepicker_instActive === inst) {\n datepicker_instActive = null;\n this._curInst = null;\n }\n },\n /* Enable the date picker to a jQuery selection.\n * @param target\telement - the target input field or division or span\n */\n _enableDatepicker: function (target) {\n var nodeName,\n inline,\n $target = $(target),\n inst = $.data(target, \"datepicker\");\n if (!$target.hasClass(this.markerClassName)) {\n return;\n }\n nodeName = target.nodeName.toLowerCase();\n if (nodeName === \"input\") {\n target.disabled = false;\n inst.trigger.filter(\"button\").each(function () {\n this.disabled = false;\n }).end().filter(\"img\").css({\n opacity: \"1.0\",\n cursor: \"\"\n });\n } else if (nodeName === \"div\" || nodeName === \"span\") {\n inline = $target.children(\".\" + this._inlineClass);\n inline.children().removeClass(\"ui-state-disabled\");\n inline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\", false);\n }\n this._disabledInputs = $.map(this._disabledInputs,\n // Delete entry\n function (value) {\n return value === target ? null : value;\n });\n },\n /* Disable the date picker to a jQuery selection.\n * @param target\telement - the target input field or division or span\n */\n _disableDatepicker: function (target) {\n var nodeName,\n inline,\n $target = $(target),\n inst = $.data(target, \"datepicker\");\n if (!$target.hasClass(this.markerClassName)) {\n return;\n }\n nodeName = target.nodeName.toLowerCase();\n if (nodeName === \"input\") {\n target.disabled = true;\n inst.trigger.filter(\"button\").each(function () {\n this.disabled = true;\n }).end().filter(\"img\").css({\n opacity: \"0.5\",\n cursor: \"default\"\n });\n } else if (nodeName === \"div\" || nodeName === \"span\") {\n inline = $target.children(\".\" + this._inlineClass);\n inline.children().addClass(\"ui-state-disabled\");\n inline.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\", true);\n }\n this._disabledInputs = $.map(this._disabledInputs,\n // Delete entry\n function (value) {\n return value === target ? null : value;\n });\n this._disabledInputs[this._disabledInputs.length] = target;\n },\n /* Is the first field in a jQuery collection disabled as a datepicker?\n * @param target\telement - the target input field or division or span\n * @return boolean - true if disabled, false if enabled\n */\n _isDisabledDatepicker: function (target) {\n if (!target) {\n return false;\n }\n for (var i = 0; i < this._disabledInputs.length; i++) {\n if (this._disabledInputs[i] === target) {\n return true;\n }\n }\n return false;\n },\n /* Retrieve the instance data for the target control.\n * @param target element - the target input field or division or span\n * @return object - the associated instance data\n * @throws error if a jQuery problem getting data\n */\n _getInst: function (target) {\n try {\n return $.data(target, \"datepicker\");\n } catch (err) {\n throw \"Missing instance data for this datepicker\";\n }\n },\n /* Update or retrieve the settings for a date picker attached to an input field or division.\n * @param target element - the target input field or division or span\n * @param name\tobject - the new settings to update or\n *\t\t\t\tstring - the name of the setting to change or retrieve,\n *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n *\t\t\t\t\"defaults\" for all global defaults\n * @param value any - the new value for the setting\n *\t\t\t\t(omit if above is an object or to retrieve a value)\n */\n _optionDatepicker: function (target, name, value) {\n var settings,\n date,\n minDate,\n maxDate,\n inst = this._getInst(target);\n if (arguments.length === 2 && typeof name === \"string\") {\n return name === \"defaults\" ? $.extend({}, $.datepicker._defaults) : inst ? name === \"all\" ? $.extend({}, inst.settings) : this._get(inst, name) : null;\n }\n settings = name || {};\n if (typeof name === \"string\") {\n settings = {};\n settings[name] = value;\n }\n if (inst) {\n if (this._curInst === inst) {\n this._hideDatepicker();\n }\n date = this._getDateDatepicker(target, true);\n minDate = this._getMinMaxDate(inst, \"min\");\n maxDate = this._getMinMaxDate(inst, \"max\");\n datepicker_extendRemove(inst.settings, settings);\n\n // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) {\n inst.settings.minDate = this._formatDate(inst, minDate);\n }\n if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) {\n inst.settings.maxDate = this._formatDate(inst, maxDate);\n }\n if (\"disabled\" in settings) {\n if (settings.disabled) {\n this._disableDatepicker(target);\n } else {\n this._enableDatepicker(target);\n }\n }\n this._attachments($(target), inst);\n this._autoSize(inst);\n this._setDate(inst, date);\n this._updateAlternate(inst);\n this._updateDatepicker(inst);\n }\n },\n // Change method deprecated\n _changeDatepicker: function (target, name, value) {\n this._optionDatepicker(target, name, value);\n },\n /* Redraw the date picker attached to an input field or division.\n * @param target element - the target input field or division or span\n */\n _refreshDatepicker: function (target) {\n var inst = this._getInst(target);\n if (inst) {\n this._updateDatepicker(inst);\n }\n },\n /* Set the dates for a jQuery selection.\n * @param target element - the target input field or division or span\n * @param date\tDate - the new date\n */\n _setDateDatepicker: function (target, date) {\n var inst = this._getInst(target);\n if (inst) {\n this._setDate(inst, date);\n this._updateDatepicker(inst);\n this._updateAlternate(inst);\n }\n },\n /* Get the date(s) for the first entry in a jQuery selection.\n * @param target element - the target input field or division or span\n * @param noDefault boolean - true if no default date is to be used\n * @return Date - the current date\n */\n _getDateDatepicker: function (target, noDefault) {\n var inst = this._getInst(target);\n if (inst && !inst.inline) {\n this._setDateFromField(inst, noDefault);\n }\n return inst ? this._getDate(inst) : null;\n },\n /* Handle keystrokes. */\n _doKeyDown: function (event) {\n var onSelect,\n dateStr,\n sel,\n inst = $.datepicker._getInst(event.target),\n handled = true,\n isRTL = inst.dpDiv.is(\".ui-datepicker-rtl\");\n inst._keyEvent = true;\n if ($.datepicker._datepickerShowing) {\n switch (event.keyCode) {\n case 9:\n $.datepicker._hideDatepicker();\n handled = false;\n break;\n // hide on tab out\n case 13:\n sel = $(\"td.\" + $.datepicker._dayOverClass + \":not(.\" + $.datepicker._currentClass + \")\", inst.dpDiv);\n if (sel[0]) {\n $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]);\n }\n onSelect = $.datepicker._get(inst, \"onSelect\");\n if (onSelect) {\n dateStr = $.datepicker._formatDate(inst);\n\n // Trigger custom callback\n onSelect.apply(inst.input ? inst.input[0] : null, [dateStr, inst]);\n } else {\n $.datepicker._hideDatepicker();\n }\n return false;\n // don't submit the form\n case 27:\n $.datepicker._hideDatepicker();\n break;\n // hide on escape\n case 33:\n $.datepicker._adjustDate(event.target, event.ctrlKey ? -$.datepicker._get(inst, \"stepBigMonths\") : -$.datepicker._get(inst, \"stepMonths\"), \"M\");\n break;\n // previous month/year on page up/+ ctrl\n case 34:\n $.datepicker._adjustDate(event.target, event.ctrlKey ? +$.datepicker._get(inst, \"stepBigMonths\") : +$.datepicker._get(inst, \"stepMonths\"), \"M\");\n break;\n // next month/year on page down/+ ctrl\n case 35:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._clearDate(event.target);\n }\n handled = event.ctrlKey || event.metaKey;\n break;\n // clear on ctrl or command +end\n case 36:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._gotoToday(event.target);\n }\n handled = event.ctrlKey || event.metaKey;\n break;\n // current on ctrl or command +home\n case 37:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._adjustDate(event.target, isRTL ? +1 : -1, \"D\");\n }\n handled = event.ctrlKey || event.metaKey;\n\n // -1 day on ctrl or command +left\n if (event.originalEvent.altKey) {\n $.datepicker._adjustDate(event.target, event.ctrlKey ? -$.datepicker._get(inst, \"stepBigMonths\") : -$.datepicker._get(inst, \"stepMonths\"), \"M\");\n }\n\n // next month/year on alt +left on Mac\n break;\n case 38:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._adjustDate(event.target, -7, \"D\");\n }\n handled = event.ctrlKey || event.metaKey;\n break;\n // -1 week on ctrl or command +up\n case 39:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._adjustDate(event.target, isRTL ? -1 : +1, \"D\");\n }\n handled = event.ctrlKey || event.metaKey;\n\n // +1 day on ctrl or command +right\n if (event.originalEvent.altKey) {\n $.datepicker._adjustDate(event.target, event.ctrlKey ? +$.datepicker._get(inst, \"stepBigMonths\") : +$.datepicker._get(inst, \"stepMonths\"), \"M\");\n }\n\n // next month/year on alt +right\n break;\n case 40:\n if (event.ctrlKey || event.metaKey) {\n $.datepicker._adjustDate(event.target, +7, \"D\");\n }\n handled = event.ctrlKey || event.metaKey;\n break;\n // +1 week on ctrl or command +down\n default:\n handled = false;\n }\n } else if (event.keyCode === 36 && event.ctrlKey) {\n // display the date picker on ctrl+home\n $.datepicker._showDatepicker(this);\n } else {\n handled = false;\n }\n if (handled) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n /* Filter entered characters - based on date format. */\n _doKeyPress: function (event) {\n var chars,\n chr,\n inst = $.datepicker._getInst(event.target);\n if ($.datepicker._get(inst, \"constrainInput\")) {\n chars = $.datepicker._possibleChars($.datepicker._get(inst, \"dateFormat\"));\n chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode);\n return event.ctrlKey || event.metaKey || chr < \" \" || !chars || chars.indexOf(chr) > -1;\n }\n },\n /* Synchronise manual entry and field/alternate field. */\n _doKeyUp: function (event) {\n var date,\n inst = $.datepicker._getInst(event.target);\n if (inst.input.val() !== inst.lastVal) {\n try {\n date = $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"), inst.input ? inst.input.val() : null, $.datepicker._getFormatConfig(inst));\n if (date) {\n // only if valid\n $.datepicker._setDateFromField(inst);\n $.datepicker._updateAlternate(inst);\n $.datepicker._updateDatepicker(inst);\n }\n } catch (err) {}\n }\n return true;\n },\n /* Pop-up the date picker for a given input field.\n * If false returned from beforeShow event handler do not show.\n * @param input element - the input field attached to the date picker or\n *\t\t\t\t\tevent - if triggered by focus\n */\n _showDatepicker: function (input) {\n input = input.target || input;\n if (input.nodeName.toLowerCase() !== \"input\") {\n // find from button/image trigger\n input = $(\"input\", input.parentNode)[0];\n }\n if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) {\n // already here\n return;\n }\n var inst, beforeShow, beforeShowSettings, isFixed, offset, showAnim, duration;\n inst = $.datepicker._getInst(input);\n if ($.datepicker._curInst && $.datepicker._curInst !== inst) {\n $.datepicker._curInst.dpDiv.stop(true, true);\n if (inst && $.datepicker._datepickerShowing) {\n $.datepicker._hideDatepicker($.datepicker._curInst.input[0]);\n }\n }\n beforeShow = $.datepicker._get(inst, \"beforeShow\");\n beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {};\n if (beforeShowSettings === false) {\n return;\n }\n datepicker_extendRemove(inst.settings, beforeShowSettings);\n inst.lastVal = null;\n $.datepicker._lastInput = input;\n $.datepicker._setDateFromField(inst);\n if ($.datepicker._inDialog) {\n // hide cursor\n input.value = \"\";\n }\n if (!$.datepicker._pos) {\n // position below input\n $.datepicker._pos = $.datepicker._findPos(input);\n $.datepicker._pos[1] += input.offsetHeight; // add the height\n }\n\n isFixed = false;\n $(input).parents().each(function () {\n isFixed |= $(this).css(\"position\") === \"fixed\";\n return !isFixed;\n });\n offset = {\n left: $.datepicker._pos[0],\n top: $.datepicker._pos[1]\n };\n $.datepicker._pos = null;\n\n //to avoid flashes on Firefox\n inst.dpDiv.empty();\n\n // determine sizing offscreen\n inst.dpDiv.css({\n position: \"absolute\",\n display: \"block\",\n top: \"-1000px\"\n });\n $.datepicker._updateDatepicker(inst);\n\n // fix width for dynamic number of date pickers\n // and adjust position before showing\n offset = $.datepicker._checkOffset(inst, offset, isFixed);\n inst.dpDiv.css({\n position: $.datepicker._inDialog && $.blockUI ? \"static\" : isFixed ? \"fixed\" : \"absolute\",\n display: \"none\",\n left: offset.left + \"px\",\n top: offset.top + \"px\"\n });\n if (!inst.inline) {\n showAnim = $.datepicker._get(inst, \"showAnim\");\n duration = $.datepicker._get(inst, \"duration\");\n inst.dpDiv.css(\"z-index\", datepicker_getZindex($(input)) + 1);\n $.datepicker._datepickerShowing = true;\n if ($.effects && $.effects.effect[showAnim]) {\n inst.dpDiv.show(showAnim, $.datepicker._get(inst, \"showOptions\"), duration);\n } else {\n inst.dpDiv[showAnim || \"show\"](showAnim ? duration : null);\n }\n if ($.datepicker._shouldFocusInput(inst)) {\n inst.input.trigger(\"focus\");\n }\n $.datepicker._curInst = inst;\n }\n },\n /* Generate the date picker content. */\n _updateDatepicker: function (inst) {\n this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n datepicker_instActive = inst; // for delegate hover events\n inst.dpDiv.empty().append(this._generateHTML(inst));\n this._attachHandlers(inst);\n var origyearshtml,\n numMonths = this._getNumberOfMonths(inst),\n cols = numMonths[1],\n width = 17,\n activeCell = inst.dpDiv.find(\".\" + this._dayOverClass + \" a\"),\n onUpdateDatepicker = $.datepicker._get(inst, \"onUpdateDatepicker\");\n if (activeCell.length > 0) {\n datepicker_handleMouseover.apply(activeCell.get(0));\n }\n inst.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\");\n if (cols > 1) {\n inst.dpDiv.addClass(\"ui-datepicker-multi-\" + cols).css(\"width\", width * cols + \"em\");\n }\n inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? \"add\" : \"remove\") + \"Class\"](\"ui-datepicker-multi\");\n inst.dpDiv[(this._get(inst, \"isRTL\") ? \"add\" : \"remove\") + \"Class\"](\"ui-datepicker-rtl\");\n if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput(inst)) {\n inst.input.trigger(\"focus\");\n }\n\n // Deffered render of the years select (to avoid flashes on Firefox)\n if (inst.yearshtml) {\n origyearshtml = inst.yearshtml;\n setTimeout(function () {\n //assure that inst.yearshtml didn't change.\n if (origyearshtml === inst.yearshtml && inst.yearshtml) {\n inst.dpDiv.find(\"select.ui-datepicker-year\").first().replaceWith(inst.yearshtml);\n }\n origyearshtml = inst.yearshtml = null;\n }, 0);\n }\n if (onUpdateDatepicker) {\n onUpdateDatepicker.apply(inst.input ? inst.input[0] : null, [inst]);\n }\n },\n // #6694 - don't focus the input if it's already focused\n // this breaks the change event in IE\n // Support: IE and jQuery <1.9\n _shouldFocusInput: function (inst) {\n return inst.input && inst.input.is(\":visible\") && !inst.input.is(\":disabled\") && !inst.input.is(\":focus\");\n },\n /* Check positioning to remain on screen. */\n _checkOffset: function (inst, offset, isFixed) {\n var dpWidth = inst.dpDiv.outerWidth(),\n dpHeight = inst.dpDiv.outerHeight(),\n inputWidth = inst.input ? inst.input.outerWidth() : 0,\n inputHeight = inst.input ? inst.input.outerHeight() : 0,\n viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()),\n viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop());\n offset.left -= this._get(inst, \"isRTL\") ? dpWidth - inputWidth : 0;\n offset.left -= isFixed && offset.left === inst.input.offset().left ? $(document).scrollLeft() : 0;\n offset.top -= isFixed && offset.top === inst.input.offset().top + inputHeight ? $(document).scrollTop() : 0;\n\n // Now check if datepicker is showing outside window viewport - move to a better place if so.\n offset.left -= Math.min(offset.left, offset.left + dpWidth > viewWidth && viewWidth > dpWidth ? Math.abs(offset.left + dpWidth - viewWidth) : 0);\n offset.top -= Math.min(offset.top, offset.top + dpHeight > viewHeight && viewHeight > dpHeight ? Math.abs(dpHeight + inputHeight) : 0);\n return offset;\n },\n /* Find an object's position on the screen. */\n _findPos: function (obj) {\n var position,\n inst = this._getInst(obj),\n isRTL = this._get(inst, \"isRTL\");\n while (obj && (obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.pseudos.hidden(obj))) {\n obj = obj[isRTL ? \"previousSibling\" : \"nextSibling\"];\n }\n position = $(obj).offset();\n return [position.left, position.top];\n },\n /* Hide the date picker from view.\n * @param input element - the input field attached to the date picker\n */\n _hideDatepicker: function (input) {\n var showAnim,\n duration,\n postProcess,\n onClose,\n inst = this._curInst;\n if (!inst || input && inst !== $.data(input, \"datepicker\")) {\n return;\n }\n if (this._datepickerShowing) {\n showAnim = this._get(inst, \"showAnim\");\n duration = this._get(inst, \"duration\");\n postProcess = function () {\n $.datepicker._tidyDialog(inst);\n };\n\n // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n if ($.effects && ($.effects.effect[showAnim] || $.effects[showAnim])) {\n inst.dpDiv.hide(showAnim, $.datepicker._get(inst, \"showOptions\"), duration, postProcess);\n } else {\n inst.dpDiv[showAnim === \"slideDown\" ? \"slideUp\" : showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\"](showAnim ? duration : null, postProcess);\n }\n if (!showAnim) {\n postProcess();\n }\n this._datepickerShowing = false;\n onClose = this._get(inst, \"onClose\");\n if (onClose) {\n onClose.apply(inst.input ? inst.input[0] : null, [inst.input ? inst.input.val() : \"\", inst]);\n }\n this._lastInput = null;\n if (this._inDialog) {\n this._dialogInput.css({\n position: \"absolute\",\n left: \"0\",\n top: \"-100px\"\n });\n if ($.blockUI) {\n $.unblockUI();\n $(\"body\").append(this.dpDiv);\n }\n }\n this._inDialog = false;\n }\n },\n /* Tidy up after a dialog display. */\n _tidyDialog: function (inst) {\n inst.dpDiv.removeClass(this._dialogClass).off(\".ui-datepicker-calendar\");\n },\n /* Close date picker if clicked elsewhere. */\n _checkExternalClick: function (event) {\n if (!$.datepicker._curInst) {\n return;\n }\n var $target = $(event.target),\n inst = $.datepicker._getInst($target[0]);\n if ($target[0].id !== $.datepicker._mainDivId && $target.parents(\"#\" + $.datepicker._mainDivId).length === 0 && !$target.hasClass($.datepicker.markerClassName) && !$target.closest(\".\" + $.datepicker._triggerClass).length && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) || $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst) {\n $.datepicker._hideDatepicker();\n }\n },\n /* Adjust one of the date sub-fields. */\n _adjustDate: function (id, offset, period) {\n var target = $(id),\n inst = this._getInst(target[0]);\n if (this._isDisabledDatepicker(target[0])) {\n return;\n }\n this._adjustInstDate(inst, offset, period);\n this._updateDatepicker(inst);\n },\n /* Action for current link. */\n _gotoToday: function (id) {\n var date,\n target = $(id),\n inst = this._getInst(target[0]);\n if (this._get(inst, \"gotoCurrent\") && inst.currentDay) {\n inst.selectedDay = inst.currentDay;\n inst.drawMonth = inst.selectedMonth = inst.currentMonth;\n inst.drawYear = inst.selectedYear = inst.currentYear;\n } else {\n date = new Date();\n inst.selectedDay = date.getDate();\n inst.drawMonth = inst.selectedMonth = date.getMonth();\n inst.drawYear = inst.selectedYear = date.getFullYear();\n }\n this._notifyChange(inst);\n this._adjustDate(target);\n },\n /* Action for selecting a new month/year. */\n _selectMonthYear: function (id, select, period) {\n var target = $(id),\n inst = this._getInst(target[0]);\n inst[\"selected\" + (period === \"M\" ? \"Month\" : \"Year\")] = inst[\"draw\" + (period === \"M\" ? \"Month\" : \"Year\")] = parseInt(select.options[select.selectedIndex].value, 10);\n this._notifyChange(inst);\n this._adjustDate(target);\n },\n /* Action for selecting a day. */\n _selectDay: function (id, month, year, td) {\n var inst,\n target = $(id);\n if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) {\n return;\n }\n inst = this._getInst(target[0]);\n inst.selectedDay = inst.currentDay = parseInt($(\"a\", td).attr(\"data-date\"));\n inst.selectedMonth = inst.currentMonth = month;\n inst.selectedYear = inst.currentYear = year;\n this._selectDate(id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear));\n },\n /* Erase the input field and hide the date picker. */\n _clearDate: function (id) {\n var target = $(id);\n this._selectDate(target, \"\");\n },\n /* Update the input field with the selected date. */\n _selectDate: function (id, dateStr) {\n var onSelect,\n target = $(id),\n inst = this._getInst(target[0]);\n dateStr = dateStr != null ? dateStr : this._formatDate(inst);\n if (inst.input) {\n inst.input.val(dateStr);\n }\n this._updateAlternate(inst);\n onSelect = this._get(inst, \"onSelect\");\n if (onSelect) {\n onSelect.apply(inst.input ? inst.input[0] : null, [dateStr, inst]); // trigger custom callback\n } else if (inst.input) {\n inst.input.trigger(\"change\"); // fire the change event\n }\n\n if (inst.inline) {\n this._updateDatepicker(inst);\n } else {\n this._hideDatepicker();\n this._lastInput = inst.input[0];\n if (typeof inst.input[0] !== \"object\") {\n inst.input.trigger(\"focus\"); // restore focus\n }\n\n this._lastInput = null;\n }\n },\n /* Update any alternate field to synchronise with the main field. */\n _updateAlternate: function (inst) {\n var altFormat,\n date,\n dateStr,\n altField = this._get(inst, \"altField\");\n if (altField) {\n // update alternate field too\n altFormat = this._get(inst, \"altFormat\") || this._get(inst, \"dateFormat\");\n date = this._getDate(inst);\n dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst));\n $(document).find(altField).val(dateStr);\n }\n },\n /* Set as beforeShowDay function to prevent selection of weekends.\n * @param date Date - the date to customise\n * @return [boolean, string] - is this date selectable?, what is its CSS class?\n */\n noWeekends: function (date) {\n var day = date.getDay();\n return [day > 0 && day < 6, \"\"];\n },\n /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n * @param date Date - the date to get the week for\n * @return number - the number of the week within the year that contains this date\n */\n iso8601Week: function (date) {\n var time,\n checkDate = new Date(date.getTime());\n\n // Find Thursday of this week starting on Monday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n time = checkDate.getTime();\n checkDate.setMonth(0); // Compare with Jan 1\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\n },\n /* Parse a string value into a date object.\n * See formatDate below for the possible formats.\n *\n * @param format string - the expected format of the date\n * @param value string - the date in the above format\n * @param settings Object - attributes include:\n *\t\t\t\t\tshortYearCutoff number - the cutoff year for determining the century (optional)\n *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n * @return Date - the extracted date value or null if value is blank\n */\n parseDate: function (format, value, settings) {\n if (format == null || value == null) {\n throw \"Invalid arguments\";\n }\n value = typeof value === \"object\" ? value.toString() : value + \"\";\n if (value === \"\") {\n return null;\n }\n var iFormat,\n dim,\n extra,\n iValue = 0,\n shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,\n shortYearCutoff = typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp : new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10),\n dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n year = -1,\n month = -1,\n day = -1,\n doy = -1,\n literal = false,\n date,\n // Check whether a format character is doubled\n lookAhead = function (match) {\n var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n if (matches) {\n iFormat++;\n }\n return matches;\n },\n // Extract a number from the string value\n getNumber = function (match) {\n var isDoubled = lookAhead(match),\n size = match === \"@\" ? 14 : match === \"!\" ? 20 : match === \"y\" && isDoubled ? 4 : match === \"o\" ? 3 : 2,\n minSize = match === \"y\" ? size : 1,\n digits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"),\n num = value.substring(iValue).match(digits);\n if (!num) {\n throw \"Missing number at position \" + iValue;\n }\n iValue += num[0].length;\n return parseInt(num[0], 10);\n },\n // Extract a name from the string value and convert to an index\n getName = function (match, shortNames, longNames) {\n var index = -1,\n names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) {\n return [[k, v]];\n }).sort(function (a, b) {\n return -(a[1].length - b[1].length);\n });\n $.each(names, function (i, pair) {\n var name = pair[1];\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = pair[0];\n iValue += name.length;\n return false;\n }\n });\n if (index !== -1) {\n return index + 1;\n } else {\n throw \"Unknown name at position \" + iValue;\n }\n },\n // Confirm that a literal character matches the string value\n checkLiteral = function () {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw \"Unexpected literal at position \" + iValue;\n }\n iValue++;\n };\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n day = getNumber(\"d\");\n break;\n case \"D\":\n getName(\"D\", dayNamesShort, dayNames);\n break;\n case \"o\":\n doy = getNumber(\"o\");\n break;\n case \"m\":\n month = getNumber(\"m\");\n break;\n case \"M\":\n month = getName(\"M\", monthNamesShort, monthNames);\n break;\n case \"y\":\n year = getNumber(\"y\");\n break;\n case \"@\":\n date = new Date(getNumber(\"@\"));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"!\":\n date = new Date((getNumber(\"!\") - this._ticksTo1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n } else {\n literal = true;\n }\n break;\n default:\n checkLiteral();\n }\n }\n }\n if (iValue < value.length) {\n extra = value.substr(iValue);\n if (!/^\\s+/.test(extra)) {\n throw \"Extra/unparsed characters found in date: \" + extra;\n }\n }\n if (year === -1) {\n year = new Date().getFullYear();\n } else if (year < 100) {\n year += new Date().getFullYear() - new Date().getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100);\n }\n if (doy > -1) {\n month = 1;\n day = doy;\n do {\n dim = this._getDaysInMonth(year, month - 1);\n if (day <= dim) {\n break;\n }\n month++;\n day -= dim;\n } while (true);\n }\n date = this._daylightSavingAdjust(new Date(year, month - 1, day));\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw \"Invalid date\"; // E.g. 31/02/00\n }\n\n return date;\n },\n /* Standard date formats. */\n ATOM: \"yy-mm-dd\",\n // RFC 3339 (ISO 8601)\n COOKIE: \"D, dd M yy\",\n ISO_8601: \"yy-mm-dd\",\n RFC_822: \"D, d M y\",\n RFC_850: \"DD, dd-M-y\",\n RFC_1036: \"D, d M y\",\n RFC_1123: \"D, d M yy\",\n RFC_2822: \"D, d M yy\",\n RSS: \"D, d M y\",\n // RFC 822\n TICKS: \"!\",\n TIMESTAMP: \"@\",\n W3C: \"yy-mm-dd\",\n // ISO 8601\n\n _ticksTo1970: ((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000,\n /* Format a date object into a string value.\n * The format can be combinations of the following:\n * d - day of month (no leading zero)\n * dd - day of month (two digit)\n * o - day of year (no leading zeros)\n * oo - day of year (three digit)\n * D - day name short\n * DD - day name long\n * m - month of year (no leading zero)\n * mm - month of year (two digit)\n * M - month name short\n * MM - month name long\n * y - year (two digit)\n * yy - year (four digit)\n * @ - Unix timestamp (ms since 01/01/1970)\n * ! - Windows ticks (100ns since 01/01/0001)\n * \"...\" - literal text\n * '' - single quote\n *\n * @param format string - the desired format of the date\n * @param date Date - the date value to format\n * @param settings Object - attributes include:\n *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n * @return string - the date in the above format\n */\n formatDate: function (format, date, settings) {\n if (!date) {\n return \"\";\n }\n var iFormat,\n dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort,\n dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames,\n monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort,\n monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames,\n // Check whether a format character is doubled\n lookAhead = function (match) {\n var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n if (matches) {\n iFormat++;\n }\n return matches;\n },\n // Format a number, with leading zero if necessary\n formatNumber = function (match, value, len) {\n var num = \"\" + value;\n if (lookAhead(match)) {\n while (num.length < len) {\n num = \"0\" + num;\n }\n }\n return num;\n },\n // Format a name, short or long as requested\n formatName = function (match, value, shortNames, longNames) {\n return lookAhead(match) ? longNames[value] : shortNames[value];\n },\n output = \"\",\n literal = false;\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n output += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n output += formatNumber(\"d\", date.getDate(), 2);\n break;\n case \"D\":\n output += formatName(\"D\", date.getDay(), dayNamesShort, dayNames);\n break;\n case \"o\":\n output += formatNumber(\"o\", Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n case \"m\":\n output += formatNumber(\"m\", date.getMonth() + 1, 2);\n break;\n case \"M\":\n output += formatName(\"M\", date.getMonth(), monthNamesShort, monthNames);\n break;\n case \"y\":\n output += lookAhead(\"y\") ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? \"0\" : \"\") + date.getFullYear() % 100;\n break;\n case \"@\":\n output += date.getTime();\n break;\n case \"!\":\n output += date.getTime() * 10000 + this._ticksTo1970;\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n output += \"'\";\n } else {\n literal = true;\n }\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n return output;\n },\n /* Extract all possible characters from the date format. */\n _possibleChars: function (format) {\n var iFormat,\n chars = \"\",\n literal = false,\n // Check whether a format character is doubled\n lookAhead = function (match) {\n var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n if (matches) {\n iFormat++;\n }\n return matches;\n };\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n chars += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n case \"m\":\n case \"y\":\n case \"@\":\n chars += \"0123456789\";\n break;\n case \"D\":\n case \"M\":\n return null;\n // Accept anything\n case \"'\":\n if (lookAhead(\"'\")) {\n chars += \"'\";\n } else {\n literal = true;\n }\n break;\n default:\n chars += format.charAt(iFormat);\n }\n }\n }\n return chars;\n },\n /* Get a setting value, defaulting if necessary. */\n _get: function (inst, name) {\n return inst.settings[name] !== undefined ? inst.settings[name] : this._defaults[name];\n },\n /* Parse existing date and initialise date picker. */\n _setDateFromField: function (inst, noDefault) {\n if (inst.input.val() === inst.lastVal) {\n return;\n }\n var dateFormat = this._get(inst, \"dateFormat\"),\n dates = inst.lastVal = inst.input ? inst.input.val() : null,\n defaultDate = this._getDefaultDate(inst),\n date = defaultDate,\n settings = this._getFormatConfig(inst);\n try {\n date = this.parseDate(dateFormat, dates, settings) || defaultDate;\n } catch (event) {\n dates = noDefault ? \"\" : dates;\n }\n inst.selectedDay = date.getDate();\n inst.drawMonth = inst.selectedMonth = date.getMonth();\n inst.drawYear = inst.selectedYear = date.getFullYear();\n inst.currentDay = dates ? date.getDate() : 0;\n inst.currentMonth = dates ? date.getMonth() : 0;\n inst.currentYear = dates ? date.getFullYear() : 0;\n this._adjustInstDate(inst);\n },\n /* Retrieve the default date shown on opening. */\n _getDefaultDate: function (inst) {\n return this._restrictMinMax(inst, this._determineDate(inst, this._get(inst, \"defaultDate\"), new Date()));\n },\n /* A date may be specified as an exact value or a relative one. */\n _determineDate: function (inst, date, defaultDate) {\n var offsetNumeric = function (offset) {\n var date = new Date();\n date.setDate(date.getDate() + offset);\n return date;\n },\n offsetString = function (offset) {\n try {\n return $.datepicker.parseDate($.datepicker._get(inst, \"dateFormat\"), offset, $.datepicker._getFormatConfig(inst));\n } catch (e) {\n\n // Ignore\n }\n var date = (offset.toLowerCase().match(/^c/) ? $.datepicker._getDate(inst) : null) || new Date(),\n year = date.getFullYear(),\n month = date.getMonth(),\n day = date.getDate(),\n pattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n matches = pattern.exec(offset);\n while (matches) {\n switch (matches[2] || \"d\") {\n case \"d\":\n case \"D\":\n day += parseInt(matches[1], 10);\n break;\n case \"w\":\n case \"W\":\n day += parseInt(matches[1], 10) * 7;\n break;\n case \"m\":\n case \"M\":\n month += parseInt(matches[1], 10);\n day = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n break;\n case \"y\":\n case \"Y\":\n year += parseInt(matches[1], 10);\n day = Math.min(day, $.datepicker._getDaysInMonth(year, month));\n break;\n }\n matches = pattern.exec(offset);\n }\n return new Date(year, month, day);\n },\n newDate = date == null || date === \"\" ? defaultDate : typeof date === \"string\" ? offsetString(date) : typeof date === \"number\" ? isNaN(date) ? defaultDate : offsetNumeric(date) : new Date(date.getTime());\n newDate = newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate;\n if (newDate) {\n newDate.setHours(0);\n newDate.setMinutes(0);\n newDate.setSeconds(0);\n newDate.setMilliseconds(0);\n }\n return this._daylightSavingAdjust(newDate);\n },\n /* Handle switch to/from daylight saving.\n * Hours may be non-zero on daylight saving cut-over:\n * > 12 when midnight changeover, but then cannot generate\n * midnight datetime, so jump to 1AM, otherwise reset.\n * @param date (Date) the date to check\n * @return (Date) the corrected date\n */\n _daylightSavingAdjust: function (date) {\n if (!date) {\n return null;\n }\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n return date;\n },\n /* Set the date(s) directly. */\n _setDate: function (inst, date, noChange) {\n var clear = !date,\n origMonth = inst.selectedMonth,\n origYear = inst.selectedYear,\n newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date()));\n inst.selectedDay = inst.currentDay = newDate.getDate();\n inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) {\n this._notifyChange(inst);\n }\n this._adjustInstDate(inst);\n if (inst.input) {\n inst.input.val(clear ? \"\" : this._formatDate(inst));\n }\n },\n /* Retrieve the date(s) directly. */\n _getDate: function (inst) {\n var startDate = !inst.currentYear || inst.input && inst.input.val() === \"\" ? null : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay));\n return startDate;\n },\n /* Attach the onxxx handlers. These are declared statically so\n * they work with static code transformers like Caja.\n */\n _attachHandlers: function (inst) {\n var stepMonths = this._get(inst, \"stepMonths\"),\n id = \"#\" + inst.id.replace(/\\\\\\\\/g, \"\\\\\");\n inst.dpDiv.find(\"[data-handler]\").map(function () {\n var handler = {\n prev: function () {\n $.datepicker._adjustDate(id, -stepMonths, \"M\");\n },\n next: function () {\n $.datepicker._adjustDate(id, +stepMonths, \"M\");\n },\n hide: function () {\n $.datepicker._hideDatepicker();\n },\n today: function () {\n $.datepicker._gotoToday(id);\n },\n selectDay: function () {\n $.datepicker._selectDay(id, +this.getAttribute(\"data-month\"), +this.getAttribute(\"data-year\"), this);\n return false;\n },\n selectMonth: function () {\n $.datepicker._selectMonthYear(id, this, \"M\");\n return false;\n },\n selectYear: function () {\n $.datepicker._selectMonthYear(id, this, \"Y\");\n return false;\n }\n };\n $(this).on(this.getAttribute(\"data-event\"), handler[this.getAttribute(\"data-handler\")]);\n });\n },\n /* Generate the HTML for the current state of the date picker. */\n _generateHTML: function (inst) {\n var maxDraw,\n prevText,\n prev,\n nextText,\n next,\n currentText,\n gotoDate,\n controls,\n buttonPanel,\n firstDay,\n showWeek,\n dayNames,\n dayNamesMin,\n monthNames,\n monthNamesShort,\n beforeShowDay,\n showOtherMonths,\n selectOtherMonths,\n defaultDate,\n html,\n dow,\n row,\n group,\n col,\n selectedDate,\n cornerClass,\n calender,\n thead,\n day,\n daysInMonth,\n leadDays,\n curRows,\n numRows,\n printDate,\n dRow,\n tbody,\n daySettings,\n otherMonth,\n unselectable,\n tempDate = new Date(),\n today = this._daylightSavingAdjust(new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())),\n // clear time\n isRTL = this._get(inst, \"isRTL\"),\n showButtonPanel = this._get(inst, \"showButtonPanel\"),\n hideIfNoPrevNext = this._get(inst, \"hideIfNoPrevNext\"),\n navigationAsDateFormat = this._get(inst, \"navigationAsDateFormat\"),\n numMonths = this._getNumberOfMonths(inst),\n showCurrentAtPos = this._get(inst, \"showCurrentAtPos\"),\n stepMonths = this._get(inst, \"stepMonths\"),\n isMultiMonth = numMonths[0] !== 1 || numMonths[1] !== 1,\n currentDate = this._daylightSavingAdjust(!inst.currentDay ? new Date(9999, 9, 9) : new Date(inst.currentYear, inst.currentMonth, inst.currentDay)),\n minDate = this._getMinMaxDate(inst, \"min\"),\n maxDate = this._getMinMaxDate(inst, \"max\"),\n drawMonth = inst.drawMonth - showCurrentAtPos,\n drawYear = inst.drawYear;\n if (drawMonth < 0) {\n drawMonth += 12;\n drawYear--;\n }\n if (maxDate) {\n maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), maxDate.getMonth() - numMonths[0] * numMonths[1] + 1, maxDate.getDate()));\n maxDraw = minDate && maxDraw < minDate ? minDate : maxDraw;\n while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) {\n drawMonth--;\n if (drawMonth < 0) {\n drawMonth = 11;\n drawYear--;\n }\n }\n }\n inst.drawMonth = drawMonth;\n inst.drawYear = drawYear;\n prevText = this._get(inst, \"prevText\");\n prevText = !navigationAsDateFormat ? prevText : this.formatDate(prevText, this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), this._getFormatConfig(inst));\n if (this._canAdjustMonth(inst, -1, drawYear, drawMonth)) {\n prev = $(\"<a>\").attr({\n \"class\": \"ui-datepicker-prev ui-corner-all\",\n \"data-handler\": \"prev\",\n \"data-event\": \"click\",\n title: prevText\n }).append($(\"<span>\").addClass(\"ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"e\" : \"w\")).text(prevText))[0].outerHTML;\n } else if (hideIfNoPrevNext) {\n prev = \"\";\n } else {\n prev = $(\"<a>\").attr({\n \"class\": \"ui-datepicker-prev ui-corner-all ui-state-disabled\",\n title: prevText\n }).append($(\"<span>\").addClass(\"ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"e\" : \"w\")).text(prevText))[0].outerHTML;\n }\n nextText = this._get(inst, \"nextText\");\n nextText = !navigationAsDateFormat ? nextText : this.formatDate(nextText, this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), this._getFormatConfig(inst));\n if (this._canAdjustMonth(inst, +1, drawYear, drawMonth)) {\n next = $(\"<a>\").attr({\n \"class\": \"ui-datepicker-next ui-corner-all\",\n \"data-handler\": \"next\",\n \"data-event\": \"click\",\n title: nextText\n }).append($(\"<span>\").addClass(\"ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"w\" : \"e\")).text(nextText))[0].outerHTML;\n } else if (hideIfNoPrevNext) {\n next = \"\";\n } else {\n next = $(\"<a>\").attr({\n \"class\": \"ui-datepicker-next ui-corner-all ui-state-disabled\",\n title: nextText\n }).append($(\"<span>\").attr(\"class\", \"ui-icon ui-icon-circle-triangle-\" + (isRTL ? \"w\" : \"e\")).text(nextText))[0].outerHTML;\n }\n currentText = this._get(inst, \"currentText\");\n gotoDate = this._get(inst, \"gotoCurrent\") && inst.currentDay ? currentDate : today;\n currentText = !navigationAsDateFormat ? currentText : this.formatDate(currentText, gotoDate, this._getFormatConfig(inst));\n controls = \"\";\n if (!inst.inline) {\n controls = $(\"<button>\").attr({\n type: \"button\",\n \"class\": \"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\",\n \"data-handler\": \"hide\",\n \"data-event\": \"click\"\n }).text(this._get(inst, \"closeText\"))[0].outerHTML;\n }\n buttonPanel = \"\";\n if (showButtonPanel) {\n buttonPanel = $(\"<div class='ui-datepicker-buttonpane ui-widget-content'>\").append(isRTL ? controls : \"\").append(this._isInRange(inst, gotoDate) ? $(\"<button>\").attr({\n type: \"button\",\n \"class\": \"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\",\n \"data-handler\": \"today\",\n \"data-event\": \"click\"\n }).text(currentText) : \"\").append(isRTL ? \"\" : controls)[0].outerHTML;\n }\n firstDay = parseInt(this._get(inst, \"firstDay\"), 10);\n firstDay = isNaN(firstDay) ? 0 : firstDay;\n showWeek = this._get(inst, \"showWeek\");\n dayNames = this._get(inst, \"dayNames\");\n dayNamesMin = this._get(inst, \"dayNamesMin\");\n monthNames = this._get(inst, \"monthNames\");\n monthNamesShort = this._get(inst, \"monthNamesShort\");\n beforeShowDay = this._get(inst, \"beforeShowDay\");\n showOtherMonths = this._get(inst, \"showOtherMonths\");\n selectOtherMonths = this._get(inst, \"selectOtherMonths\");\n defaultDate = this._getDefaultDate(inst);\n html = \"\";\n for (row = 0; row < numMonths[0]; row++) {\n group = \"\";\n this.maxRows = 4;\n for (col = 0; col < numMonths[1]; col++) {\n selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay));\n cornerClass = \" ui-corner-all\";\n calender = \"\";\n if (isMultiMonth) {\n calender += \"<div class='ui-datepicker-group\";\n if (numMonths[1] > 1) {\n switch (col) {\n case 0:\n calender += \" ui-datepicker-group-first\";\n cornerClass = \" ui-corner-\" + (isRTL ? \"right\" : \"left\");\n break;\n case numMonths[1] - 1:\n calender += \" ui-datepicker-group-last\";\n cornerClass = \" ui-corner-\" + (isRTL ? \"left\" : \"right\");\n break;\n default:\n calender += \" ui-datepicker-group-middle\";\n cornerClass = \"\";\n break;\n }\n }\n calender += \"'>\";\n }\n calender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" + (/all|left/.test(cornerClass) && row === 0 ? isRTL ? next : prev : \"\") + (/all|right/.test(cornerClass) && row === 0 ? isRTL ? prev : next : \"\") + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, row > 0 || col > 0, monthNames, monthNamesShort) +\n // draw month headers\n \"</div><table class='ui-datepicker-calendar'><thead>\" + \"<tr>\";\n thead = showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get(inst, \"weekHeader\") + \"</th>\" : \"\";\n for (dow = 0; dow < 7; dow++) {\n // days of the week\n day = (dow + firstDay) % 7;\n thead += \"<th scope='col'\" + ((dow + firstDay + 6) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\") + \">\" + \"<span title='\" + dayNames[day] + \"'>\" + dayNamesMin[day] + \"</span></th>\";\n }\n calender += thead + \"</tr></thead><tbody>\";\n daysInMonth = this._getDaysInMonth(drawYear, drawMonth);\n if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) {\n inst.selectedDay = Math.min(inst.selectedDay, daysInMonth);\n }\n leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;\n curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate\n numRows = isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows; //If multiple months, use the higher number of rows (see #7043)\n this.maxRows = numRows;\n printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays));\n for (dRow = 0; dRow < numRows; dRow++) {\n // create date picker rows\n calender += \"<tr>\";\n tbody = !showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" + this._get(inst, \"calculateWeek\")(printDate) + \"</td>\";\n for (dow = 0; dow < 7; dow++) {\n // create date picker days\n daySettings = beforeShowDay ? beforeShowDay.apply(inst.input ? inst.input[0] : null, [printDate]) : [true, \"\"];\n otherMonth = printDate.getMonth() !== drawMonth;\n unselectable = otherMonth && !selectOtherMonths || !daySettings[0] || minDate && printDate < minDate || maxDate && printDate > maxDate;\n tbody += \"<td class='\" + ((dow + firstDay + 6) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\") + (\n // highlight weekends\n otherMonth ? \" ui-datepicker-other-month\" : \"\") + (\n // highlight days from other months\n printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ||\n // user pressed key\n defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ?\n // or defaultDate is current printedDate and defaultDate is selectedDate\n \" \" + this._dayOverClass : \"\") + (\n // highlight selected day\n unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\") + (\n // highlight unselectable days\n otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[1] + (\n // highlight custom dates\n printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\") + (\n // highlight selected day\n printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\")) + \"'\" + (\n // highlight today (if different)\n (!otherMonth || showOtherMonths) && daySettings[2] ? \" title='\" + daySettings[2].replace(/'/g, \"'\") + \"'\" : \"\") + (\n // cell title\n unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\") + \">\" + (\n // actions\n otherMonth && !showOtherMonths ? \" \" :\n // display for other months\n unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" + (printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\") + (printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\") + (\n // highlight selected day\n otherMonth ? \" ui-priority-secondary\" : \"\") +\n // distinguish dates from other months\n \"' href='#' aria-current='\" + (printDate.getTime() === currentDate.getTime() ? \"true\" : \"false\") +\n // mark date as selected for screen reader\n \"' data-date='\" + printDate.getDate() +\n // store date as data\n \"'>\" + printDate.getDate() + \"</a>\") + \"</td>\"; // display selectable date\n printDate.setDate(printDate.getDate() + 1);\n printDate = this._daylightSavingAdjust(printDate);\n }\n calender += tbody + \"</tr>\";\n }\n drawMonth++;\n if (drawMonth > 11) {\n drawMonth = 0;\n drawYear++;\n }\n calender += \"</tbody></table>\" + (isMultiMonth ? \"</div>\" + (numMonths[0] > 0 && col === numMonths[1] - 1 ? \"<div class='ui-datepicker-row-break'></div>\" : \"\") : \"\");\n group += calender;\n }\n html += group;\n }\n html += buttonPanel;\n inst._keyEvent = false;\n return html;\n },\n /* Generate the month and year header. */\n _generateMonthYearHeader: function (inst, drawMonth, drawYear, minDate, maxDate, secondary, monthNames, monthNamesShort) {\n var inMinYear,\n inMaxYear,\n month,\n years,\n thisYear,\n determineYear,\n year,\n endYear,\n changeMonth = this._get(inst, \"changeMonth\"),\n changeYear = this._get(inst, \"changeYear\"),\n showMonthAfterYear = this._get(inst, \"showMonthAfterYear\"),\n selectMonthLabel = this._get(inst, \"selectMonthLabel\"),\n selectYearLabel = this._get(inst, \"selectYearLabel\"),\n html = \"<div class='ui-datepicker-title'>\",\n monthHtml = \"\";\n\n // Month selection\n if (secondary || !changeMonth) {\n monthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[drawMonth] + \"</span>\";\n } else {\n inMinYear = minDate && minDate.getFullYear() === drawYear;\n inMaxYear = maxDate && maxDate.getFullYear() === drawYear;\n monthHtml += \"<select class='ui-datepicker-month' aria-label='\" + selectMonthLabel + \"' data-handler='selectMonth' data-event='change'>\";\n for (month = 0; month < 12; month++) {\n if ((!inMinYear || month >= minDate.getMonth()) && (!inMaxYear || month <= maxDate.getMonth())) {\n monthHtml += \"<option value='\" + month + \"'\" + (month === drawMonth ? \" selected='selected'\" : \"\") + \">\" + monthNamesShort[month] + \"</option>\";\n }\n }\n monthHtml += \"</select>\";\n }\n if (!showMonthAfterYear) {\n html += monthHtml + (secondary || !(changeMonth && changeYear) ? \" \" : \"\");\n }\n\n // Year selection\n if (!inst.yearshtml) {\n inst.yearshtml = \"\";\n if (secondary || !changeYear) {\n html += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n } else {\n // determine range of years to display\n years = this._get(inst, \"yearRange\").split(\":\");\n thisYear = new Date().getFullYear();\n determineYear = function (value) {\n var year = value.match(/c[+\\-].*/) ? drawYear + parseInt(value.substring(1), 10) : value.match(/[+\\-].*/) ? thisYear + parseInt(value, 10) : parseInt(value, 10);\n return isNaN(year) ? thisYear : year;\n };\n year = determineYear(years[0]);\n endYear = Math.max(year, determineYear(years[1] || \"\"));\n year = minDate ? Math.max(year, minDate.getFullYear()) : year;\n endYear = maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear;\n inst.yearshtml += \"<select class='ui-datepicker-year' aria-label='\" + selectYearLabel + \"' data-handler='selectYear' data-event='change'>\";\n for (; year <= endYear; year++) {\n inst.yearshtml += \"<option value='\" + year + \"'\" + (year === drawYear ? \" selected='selected'\" : \"\") + \">\" + year + \"</option>\";\n }\n inst.yearshtml += \"</select>\";\n html += inst.yearshtml;\n inst.yearshtml = null;\n }\n }\n html += this._get(inst, \"yearSuffix\");\n if (showMonthAfterYear) {\n html += (secondary || !(changeMonth && changeYear) ? \" \" : \"\") + monthHtml;\n }\n html += \"</div>\"; // Close datepicker_header\n return html;\n },\n /* Adjust one of the date sub-fields. */\n _adjustInstDate: function (inst, offset, period) {\n var year = inst.selectedYear + (period === \"Y\" ? offset : 0),\n month = inst.selectedMonth + (period === \"M\" ? offset : 0),\n day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === \"D\" ? offset : 0),\n date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day)));\n inst.selectedDay = date.getDate();\n inst.drawMonth = inst.selectedMonth = date.getMonth();\n inst.drawYear = inst.selectedYear = date.getFullYear();\n if (period === \"M\" || period === \"Y\") {\n this._notifyChange(inst);\n }\n },\n /* Ensure a date is within any min/max bounds. */\n _restrictMinMax: function (inst, date) {\n var minDate = this._getMinMaxDate(inst, \"min\"),\n maxDate = this._getMinMaxDate(inst, \"max\"),\n newDate = minDate && date < minDate ? minDate : date;\n return maxDate && newDate > maxDate ? maxDate : newDate;\n },\n /* Notify change of month/year. */\n _notifyChange: function (inst) {\n var onChange = this._get(inst, \"onChangeMonthYear\");\n if (onChange) {\n onChange.apply(inst.input ? inst.input[0] : null, [inst.selectedYear, inst.selectedMonth + 1, inst]);\n }\n },\n /* Determine the number of months to show. */\n _getNumberOfMonths: function (inst) {\n var numMonths = this._get(inst, \"numberOfMonths\");\n return numMonths == null ? [1, 1] : typeof numMonths === \"number\" ? [1, numMonths] : numMonths;\n },\n /* Determine the current maximum date - ensure no time components are set. */\n _getMinMaxDate: function (inst, minMax) {\n return this._determineDate(inst, this._get(inst, minMax + \"Date\"), null);\n },\n /* Find the number of days in a given month. */\n _getDaysInMonth: function (year, month) {\n return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate();\n },\n /* Find the day of the week of the first of a month. */\n _getFirstDayOfMonth: function (year, month) {\n return new Date(year, month, 1).getDay();\n },\n /* Determines if we should allow a \"next/prev\" month display change. */\n _canAdjustMonth: function (inst, offset, curYear, curMonth) {\n var numMonths = this._getNumberOfMonths(inst),\n date = this._daylightSavingAdjust(new Date(curYear, curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1));\n if (offset < 0) {\n date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()));\n }\n return this._isInRange(inst, date);\n },\n /* Is the given date in the accepted range? */\n _isInRange: function (inst, date) {\n var yearSplit,\n currentYear,\n minDate = this._getMinMaxDate(inst, \"min\"),\n maxDate = this._getMinMaxDate(inst, \"max\"),\n minYear = null,\n maxYear = null,\n years = this._get(inst, \"yearRange\");\n if (years) {\n yearSplit = years.split(\":\");\n currentYear = new Date().getFullYear();\n minYear = parseInt(yearSplit[0], 10);\n maxYear = parseInt(yearSplit[1], 10);\n if (yearSplit[0].match(/[+\\-].*/)) {\n minYear += currentYear;\n }\n if (yearSplit[1].match(/[+\\-].*/)) {\n maxYear += currentYear;\n }\n }\n return (!minDate || date.getTime() >= minDate.getTime()) && (!maxDate || date.getTime() <= maxDate.getTime()) && (!minYear || date.getFullYear() >= minYear) && (!maxYear || date.getFullYear() <= maxYear);\n },\n /* Provide the configuration settings for formatting/parsing. */\n _getFormatConfig: function (inst) {\n var shortYearCutoff = this._get(inst, \"shortYearCutoff\");\n shortYearCutoff = typeof shortYearCutoff !== \"string\" ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10);\n return {\n shortYearCutoff: shortYearCutoff,\n dayNamesShort: this._get(inst, \"dayNamesShort\"),\n dayNames: this._get(inst, \"dayNames\"),\n monthNamesShort: this._get(inst, \"monthNamesShort\"),\n monthNames: this._get(inst, \"monthNames\")\n };\n },\n /* Format the given date for display. */\n _formatDate: function (inst, day, month, year) {\n if (!day) {\n inst.currentDay = inst.selectedDay;\n inst.currentMonth = inst.selectedMonth;\n inst.currentYear = inst.selectedYear;\n }\n var date = day ? typeof day === \"object\" ? day : this._daylightSavingAdjust(new Date(year, month, day)) : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay));\n return this.formatDate(this._get(inst, \"dateFormat\"), date, this._getFormatConfig(inst));\n }\n });\n\n /*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\n function datepicker_bindHover(dpDiv) {\n var selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n return dpDiv.on(\"mouseout\", selector, function () {\n $(this).removeClass(\"ui-state-hover\");\n if (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n $(this).removeClass(\"ui-datepicker-prev-hover\");\n }\n if (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n $(this).removeClass(\"ui-datepicker-next-hover\");\n }\n }).on(\"mouseover\", selector, datepicker_handleMouseover);\n }\n function datepicker_handleMouseover() {\n if (!$.datepicker._isDisabledDatepicker(datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) {\n $(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\");\n $(this).addClass(\"ui-state-hover\");\n if (this.className.indexOf(\"ui-datepicker-prev\") !== -1) {\n $(this).addClass(\"ui-datepicker-prev-hover\");\n }\n if (this.className.indexOf(\"ui-datepicker-next\") !== -1) {\n $(this).addClass(\"ui-datepicker-next-hover\");\n }\n }\n }\n\n /* jQuery extend now ignores nulls! */\n function datepicker_extendRemove(target, props) {\n $.extend(target, props);\n for (var name in props) {\n if (props[name] == null) {\n target[name] = props[name];\n }\n }\n return target;\n }\n\n /* Invoke the datepicker functionality.\n @param options string - a command, optionally followed by additional parameters or\n \t\t\t\t\tObject - settings for attaching new datepicker functionality\n @return jQuery object */\n $.fn.datepicker = function (options) {\n /* Verify an empty collection wasn't passed - Fixes #6976 */\n if (!this.length) {\n return this;\n }\n\n /* Initialise the date picker. */\n if (!$.datepicker.initialized) {\n $(document).on(\"mousedown\", $.datepicker._checkExternalClick);\n $.datepicker.initialized = true;\n }\n\n /* Append datepicker main container to body if not exist. */\n if ($(\"#\" + $.datepicker._mainDivId).length === 0) {\n $(\"body\").append($.datepicker.dpDiv);\n }\n var otherArgs = Array.prototype.slice.call(arguments, 1);\n if (typeof options === \"string\" && (options === \"isDisabled\" || options === \"getDate\" || options === \"widget\")) {\n return $.datepicker[\"_\" + options + \"Datepicker\"].apply($.datepicker, [this[0]].concat(otherArgs));\n }\n if (options === \"option\" && arguments.length === 2 && typeof arguments[1] === \"string\") {\n return $.datepicker[\"_\" + options + \"Datepicker\"].apply($.datepicker, [this[0]].concat(otherArgs));\n }\n return this.each(function () {\n if (typeof options === \"string\") {\n $.datepicker[\"_\" + options + \"Datepicker\"].apply($.datepicker, [this].concat(otherArgs));\n } else {\n $.datepicker._attachDatepicker(this, options);\n }\n });\n };\n $.datepicker = new Datepicker(); // singleton instance\n $.datepicker.initialized = false;\n $.datepicker.uuid = new Date().getTime();\n $.datepicker.version = \"1.13.2\";\n var widgetsDatepicker = $.datepicker;\n\n // This file is deprecated\n var ie = $.ui.ie = !!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase());\n\n /*!\n * jQuery UI Mouse 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Mouse\n //>>group: Widgets\n //>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n //>>docs: http://api.jqueryui.com/mouse/\n\n var mouseHandled = false;\n $(document).on(\"mouseup\", function () {\n mouseHandled = false;\n });\n var widgetsMouse = $.widget(\"ui.mouse\", {\n version: \"1.13.2\",\n options: {\n cancel: \"input, textarea, button, select, option\",\n distance: 1,\n delay: 0\n },\n _mouseInit: function () {\n var that = this;\n this.element.on(\"mousedown.\" + this.widgetName, function (event) {\n return that._mouseDown(event);\n }).on(\"click.\" + this.widgetName, function (event) {\n if (true === $.data(event.target, that.widgetName + \".preventClickEvent\")) {\n $.removeData(event.target, that.widgetName + \".preventClickEvent\");\n event.stopImmediatePropagation();\n return false;\n }\n });\n this.started = false;\n },\n // TODO: make sure destroying one instance of mouse doesn't mess with\n // other instances of mouse\n _mouseDestroy: function () {\n this.element.off(\".\" + this.widgetName);\n if (this._mouseMoveDelegate) {\n this.document.off(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).off(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n }\n },\n _mouseDown: function (event) {\n // don't let more than one widget handle mouseStart\n if (mouseHandled) {\n return;\n }\n this._mouseMoved = false;\n\n // We may have missed mouseup (out of window)\n if (this._mouseStarted) {\n this._mouseUp(event);\n }\n this._mouseDownEvent = event;\n var that = this,\n btnIsLeft = event.which === 1,\n // event.target.nodeName works around a bug in IE 8 with\n // disabled inputs (#7620)\n elIsCancel = typeof this.options.cancel === \"string\" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false;\n if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {\n return true;\n }\n this.mouseDelayMet = !this.options.delay;\n if (!this.mouseDelayMet) {\n this._mouseDelayTimer = setTimeout(function () {\n that.mouseDelayMet = true;\n }, this.options.delay);\n }\n if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n this._mouseStarted = this._mouseStart(event) !== false;\n if (!this._mouseStarted) {\n event.preventDefault();\n return true;\n }\n }\n\n // Click event may never have fired (Gecko & Opera)\n if (true === $.data(event.target, this.widgetName + \".preventClickEvent\")) {\n $.removeData(event.target, this.widgetName + \".preventClickEvent\");\n }\n\n // These delegates are required to keep context\n this._mouseMoveDelegate = function (event) {\n return that._mouseMove(event);\n };\n this._mouseUpDelegate = function (event) {\n return that._mouseUp(event);\n };\n this.document.on(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).on(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n event.preventDefault();\n mouseHandled = true;\n return true;\n },\n _mouseMove: function (event) {\n // Only check for mouseups outside the document if you've moved inside the document\n // at least once. This prevents the firing of mouseup in the case of IE<9, which will\n // fire a mousemove event if content is placed under the cursor. See #7778\n // Support: IE <9\n if (this._mouseMoved) {\n // IE mouseup check - mouseup happened when mouse was out of window\n if ($.ui.ie && (!document.documentMode || document.documentMode < 9) && !event.button) {\n return this._mouseUp(event);\n\n // Iframe mouseup check - mouseup occurred in another document\n } else if (!event.which) {\n // Support: Safari <=8 - 9\n // Safari sets which to 0 if you press any of the following keys\n // during a drag (#14461)\n if (event.originalEvent.altKey || event.originalEvent.ctrlKey || event.originalEvent.metaKey || event.originalEvent.shiftKey) {\n this.ignoreMissingWhich = true;\n } else if (!this.ignoreMissingWhich) {\n return this._mouseUp(event);\n }\n }\n }\n if (event.which || event.button) {\n this._mouseMoved = true;\n }\n if (this._mouseStarted) {\n this._mouseDrag(event);\n return event.preventDefault();\n }\n if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {\n this._mouseStarted = this._mouseStart(this._mouseDownEvent, event) !== false;\n if (this._mouseStarted) {\n this._mouseDrag(event);\n } else {\n this._mouseUp(event);\n }\n }\n return !this._mouseStarted;\n },\n _mouseUp: function (event) {\n this.document.off(\"mousemove.\" + this.widgetName, this._mouseMoveDelegate).off(\"mouseup.\" + this.widgetName, this._mouseUpDelegate);\n if (this._mouseStarted) {\n this._mouseStarted = false;\n if (event.target === this._mouseDownEvent.target) {\n $.data(event.target, this.widgetName + \".preventClickEvent\", true);\n }\n this._mouseStop(event);\n }\n if (this._mouseDelayTimer) {\n clearTimeout(this._mouseDelayTimer);\n delete this._mouseDelayTimer;\n }\n this.ignoreMissingWhich = false;\n mouseHandled = false;\n event.preventDefault();\n },\n _mouseDistanceMet: function (event) {\n return Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance;\n },\n _mouseDelayMet: function /* event */\n () {\n return this.mouseDelayMet;\n },\n // These are placeholder methods, to be overriden by extending plugin\n _mouseStart: function /* event */ () {},\n _mouseDrag: function /* event */ () {},\n _mouseStop: function /* event */ () {},\n _mouseCapture: function /* event */\n () {\n return true;\n }\n });\n\n // $.ui.plugin is deprecated. Use $.widget() extensions instead.\n var plugin = $.ui.plugin = {\n add: function (module, option, set) {\n var i,\n proto = $.ui[module].prototype;\n for (i in set) {\n proto.plugins[i] = proto.plugins[i] || [];\n proto.plugins[i].push([option, set[i]]);\n }\n },\n call: function (instance, name, args, allowDisconnected) {\n var i,\n set = instance.plugins[name];\n if (!set) {\n return;\n }\n if (!allowDisconnected && (!instance.element[0].parentNode || instance.element[0].parentNode.nodeType === 11)) {\n return;\n }\n for (i = 0; i < set.length; i++) {\n if (instance.options[set[i][0]]) {\n set[i][1].apply(instance.element, args);\n }\n }\n }\n };\n var safeBlur = $.ui.safeBlur = function (element) {\n // Support: IE9 - 10 only\n // If the <body> is blurred, IE will switch windows, see #9420\n if (element && element.nodeName.toLowerCase() !== \"body\") {\n $(element).trigger(\"blur\");\n }\n };\n\n /*!\n * jQuery UI Draggable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Draggable\n //>>group: Interactions\n //>>description: Enables dragging functionality for any element.\n //>>docs: http://api.jqueryui.com/draggable/\n //>>demos: http://jqueryui.com/draggable/\n //>>css.structure: ../../themes/base/draggable.css\n\n $.widget(\"ui.draggable\", $.ui.mouse, {\n version: \"1.13.2\",\n widgetEventPrefix: \"drag\",\n options: {\n addClasses: true,\n appendTo: \"parent\",\n axis: false,\n connectToSortable: false,\n containment: false,\n cursor: \"auto\",\n cursorAt: false,\n grid: false,\n handle: false,\n helper: \"original\",\n iframeFix: false,\n opacity: false,\n refreshPositions: false,\n revert: false,\n revertDuration: 500,\n scope: \"default\",\n scroll: true,\n scrollSensitivity: 20,\n scrollSpeed: 20,\n snap: false,\n snapMode: \"both\",\n snapTolerance: 20,\n stack: false,\n zIndex: false,\n // Callbacks\n drag: null,\n start: null,\n stop: null\n },\n _create: function () {\n if (this.options.helper === \"original\") {\n this._setPositionRelative();\n }\n if (this.options.addClasses) {\n this._addClass(\"ui-draggable\");\n }\n this._setHandleClassName();\n this._mouseInit();\n },\n _setOption: function (key, value) {\n this._super(key, value);\n if (key === \"handle\") {\n this._removeHandleClassName();\n this._setHandleClassName();\n }\n },\n _destroy: function () {\n if ((this.helper || this.element).is(\".ui-draggable-dragging\")) {\n this.destroyOnClear = true;\n return;\n }\n this._removeHandleClassName();\n this._mouseDestroy();\n },\n _mouseCapture: function (event) {\n var o = this.options;\n\n // Among others, prevent a drag on a resizable-handle\n if (this.helper || o.disabled || $(event.target).closest(\".ui-resizable-handle\").length > 0) {\n return false;\n }\n\n //Quit if we're not on a valid handle\n this.handle = this._getHandle(event);\n if (!this.handle) {\n return false;\n }\n this._blurActiveElement(event);\n this._blockFrames(o.iframeFix === true ? \"iframe\" : o.iframeFix);\n return true;\n },\n _blockFrames: function (selector) {\n this.iframeBlocks = this.document.find(selector).map(function () {\n var iframe = $(this);\n return $(\"<div>\").css(\"position\", \"absolute\").appendTo(iframe.parent()).outerWidth(iframe.outerWidth()).outerHeight(iframe.outerHeight()).offset(iframe.offset())[0];\n });\n },\n _unblockFrames: function () {\n if (this.iframeBlocks) {\n this.iframeBlocks.remove();\n delete this.iframeBlocks;\n }\n },\n _blurActiveElement: function (event) {\n var activeElement = $.ui.safeActiveElement(this.document[0]),\n target = $(event.target);\n\n // Don't blur if the event occurred on an element that is within\n // the currently focused element\n // See #10527, #12472\n if (target.closest(activeElement).length) {\n return;\n }\n\n // Blur any element that currently has focus, see #4261\n $.ui.safeBlur(activeElement);\n },\n _mouseStart: function (event) {\n var o = this.options;\n\n //Create and append the visible helper\n this.helper = this._createHelper(event);\n this._addClass(this.helper, \"ui-draggable-dragging\");\n\n //Cache the helper size\n this._cacheHelperProportions();\n\n //If ddmanager is used for droppables, set the global draggable\n if ($.ui.ddmanager) {\n $.ui.ddmanager.current = this;\n }\n\n /*\n * - Position generation -\n * This block generates everything position related - it's the core of draggables.\n */\n\n //Cache the margins of the original element\n this._cacheMargins();\n\n //Store the helper's css position\n this.cssPosition = this.helper.css(\"position\");\n this.scrollParent = this.helper.scrollParent(true);\n this.offsetParent = this.helper.offsetParent();\n this.hasFixedAncestor = this.helper.parents().filter(function () {\n return $(this).css(\"position\") === \"fixed\";\n }).length > 0;\n\n //The element's absolute position on the page minus margins\n this.positionAbs = this.element.offset();\n this._refreshOffsets(event);\n\n //Generate the original position\n this.originalPosition = this.position = this._generatePosition(event, false);\n this.originalPageX = event.pageX;\n this.originalPageY = event.pageY;\n\n //Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n if (o.cursorAt) {\n this._adjustOffsetFromHelper(o.cursorAt);\n }\n\n //Set a containment if given in the options\n this._setContainment();\n\n //Trigger event + callbacks\n if (this._trigger(\"start\", event) === false) {\n this._clear();\n return false;\n }\n\n //Recache the helper size\n this._cacheHelperProportions();\n\n //Prepare the droppable offsets\n if ($.ui.ddmanager && !o.dropBehaviour) {\n $.ui.ddmanager.prepareOffsets(this, event);\n }\n\n // Execute the drag once - this causes the helper not to be visible before getting its\n // correct position\n this._mouseDrag(event, true);\n\n // If the ddmanager is used for droppables, inform the manager that dragging has started\n // (see #5003)\n if ($.ui.ddmanager) {\n $.ui.ddmanager.dragStart(this, event);\n }\n return true;\n },\n _refreshOffsets: function (event) {\n this.offset = {\n top: this.positionAbs.top - this.margins.top,\n left: this.positionAbs.left - this.margins.left,\n scroll: false,\n parent: this._getParentOffset(),\n relative: this._getRelativeOffset()\n };\n this.offset.click = {\n left: event.pageX - this.offset.left,\n top: event.pageY - this.offset.top\n };\n },\n _mouseDrag: function (event, noPropagation) {\n // reset any necessary cached properties (see #5009)\n if (this.hasFixedAncestor) {\n this.offset.parent = this._getParentOffset();\n }\n\n //Compute the helpers position\n this.position = this._generatePosition(event, true);\n this.positionAbs = this._convertPositionTo(\"absolute\");\n\n //Call plugins and callbacks and use the resulting position if something is returned\n if (!noPropagation) {\n var ui = this._uiHash();\n if (this._trigger(\"drag\", event, ui) === false) {\n this._mouseUp(new $.Event(\"mouseup\", event));\n return false;\n }\n this.position = ui.position;\n }\n this.helper[0].style.left = this.position.left + \"px\";\n this.helper[0].style.top = this.position.top + \"px\";\n if ($.ui.ddmanager) {\n $.ui.ddmanager.drag(this, event);\n }\n return false;\n },\n _mouseStop: function (event) {\n //If we are using droppables, inform the manager about the drop\n var that = this,\n dropped = false;\n if ($.ui.ddmanager && !this.options.dropBehaviour) {\n dropped = $.ui.ddmanager.drop(this, event);\n }\n\n //if a drop comes from outside (a sortable)\n if (this.dropped) {\n dropped = this.dropped;\n this.dropped = false;\n }\n if (this.options.revert === \"invalid\" && !dropped || this.options.revert === \"valid\" && dropped || this.options.revert === true || typeof this.options.revert === \"function\" && this.options.revert.call(this.element, dropped)) {\n $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function () {\n if (that._trigger(\"stop\", event) !== false) {\n that._clear();\n }\n });\n } else {\n if (this._trigger(\"stop\", event) !== false) {\n this._clear();\n }\n }\n return false;\n },\n _mouseUp: function (event) {\n this._unblockFrames();\n\n // If the ddmanager is used for droppables, inform the manager that dragging has stopped\n // (see #5003)\n if ($.ui.ddmanager) {\n $.ui.ddmanager.dragStop(this, event);\n }\n\n // Only need to focus if the event occurred on the draggable itself, see #10527\n if (this.handleElement.is(event.target)) {\n // The interaction is over; whether or not the click resulted in a drag,\n // focus the element\n this.element.trigger(\"focus\");\n }\n return $.ui.mouse.prototype._mouseUp.call(this, event);\n },\n cancel: function () {\n if (this.helper.is(\".ui-draggable-dragging\")) {\n this._mouseUp(new $.Event(\"mouseup\", {\n target: this.element[0]\n }));\n } else {\n this._clear();\n }\n return this;\n },\n _getHandle: function (event) {\n return this.options.handle ? !!$(event.target).closest(this.element.find(this.options.handle)).length : true;\n },\n _setHandleClassName: function () {\n this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element;\n this._addClass(this.handleElement, \"ui-draggable-handle\");\n },\n _removeHandleClassName: function () {\n this._removeClass(this.handleElement, \"ui-draggable-handle\");\n },\n _createHelper: function (event) {\n var o = this.options,\n helperIsFunction = typeof o.helper === \"function\",\n helper = helperIsFunction ? $(o.helper.apply(this.element[0], [event])) : o.helper === \"clone\" ? this.element.clone().removeAttr(\"id\") : this.element;\n if (!helper.parents(\"body\").length) {\n helper.appendTo(o.appendTo === \"parent\" ? this.element[0].parentNode : o.appendTo);\n }\n\n // Http://bugs.jqueryui.com/ticket/9446\n // a helper function can return the original element\n // which wouldn't have been set to relative in _create\n if (helperIsFunction && helper[0] === this.element[0]) {\n this._setPositionRelative();\n }\n if (helper[0] !== this.element[0] && !/(fixed|absolute)/.test(helper.css(\"position\"))) {\n helper.css(\"position\", \"absolute\");\n }\n return helper;\n },\n _setPositionRelative: function () {\n if (!/^(?:r|a|f)/.test(this.element.css(\"position\"))) {\n this.element[0].style.position = \"relative\";\n }\n },\n _adjustOffsetFromHelper: function (obj) {\n if (typeof obj === \"string\") {\n obj = obj.split(\" \");\n }\n if (Array.isArray(obj)) {\n obj = {\n left: +obj[0],\n top: +obj[1] || 0\n };\n }\n if (\"left\" in obj) {\n this.offset.click.left = obj.left + this.margins.left;\n }\n if (\"right\" in obj) {\n this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n }\n if (\"top\" in obj) {\n this.offset.click.top = obj.top + this.margins.top;\n }\n if (\"bottom\" in obj) {\n this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n }\n },\n _isRootNode: function (element) {\n return /(html|body)/i.test(element.tagName) || element === this.document[0];\n },\n _getParentOffset: function () {\n //Get the offsetParent and cache its position\n var po = this.offsetParent.offset(),\n document = this.document[0];\n\n // This is a special case where we need to modify a offset calculated on start, since the\n // following happened:\n // 1. The position of the helper is absolute, so it's position is calculated based on the\n // next positioned parent\n // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n // the document, which means that the scroll is included in the initial calculation of the\n // offset of the parent, and never recalculated upon drag\n if (this.cssPosition === \"absolute\" && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n po.left += this.scrollParent.scrollLeft();\n po.top += this.scrollParent.scrollTop();\n }\n if (this._isRootNode(this.offsetParent[0])) {\n po = {\n top: 0,\n left: 0\n };\n }\n return {\n top: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n left: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n };\n },\n _getRelativeOffset: function () {\n if (this.cssPosition !== \"relative\") {\n return {\n top: 0,\n left: 0\n };\n }\n var p = this.element.position(),\n scrollIsRootNode = this._isRootNode(this.scrollParent[0]);\n return {\n top: p.top - (parseInt(this.helper.css(\"top\"), 10) || 0) + (!scrollIsRootNode ? this.scrollParent.scrollTop() : 0),\n left: p.left - (parseInt(this.helper.css(\"left\"), 10) || 0) + (!scrollIsRootNode ? this.scrollParent.scrollLeft() : 0)\n };\n },\n _cacheMargins: function () {\n this.margins = {\n left: parseInt(this.element.css(\"marginLeft\"), 10) || 0,\n top: parseInt(this.element.css(\"marginTop\"), 10) || 0,\n right: parseInt(this.element.css(\"marginRight\"), 10) || 0,\n bottom: parseInt(this.element.css(\"marginBottom\"), 10) || 0\n };\n },\n _cacheHelperProportions: function () {\n this.helperProportions = {\n width: this.helper.outerWidth(),\n height: this.helper.outerHeight()\n };\n },\n _setContainment: function () {\n var isUserScrollable,\n c,\n ce,\n o = this.options,\n document = this.document[0];\n this.relativeContainer = null;\n if (!o.containment) {\n this.containment = null;\n return;\n }\n if (o.containment === \"window\") {\n this.containment = [$(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, $(window).scrollLeft() + $(window).width() - this.helperProportions.width - this.margins.left, $(window).scrollTop() + ($(window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];\n return;\n }\n if (o.containment === \"document\") {\n this.containment = [0, 0, $(document).width() - this.helperProportions.width - this.margins.left, ($(document).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];\n return;\n }\n if (o.containment.constructor === Array) {\n this.containment = o.containment;\n return;\n }\n if (o.containment === \"parent\") {\n o.containment = this.helper[0].parentNode;\n }\n c = $(o.containment);\n ce = c[0];\n if (!ce) {\n return;\n }\n isUserScrollable = /(scroll|auto)/.test(c.css(\"overflow\"));\n this.containment = [(parseInt(c.css(\"borderLeftWidth\"), 10) || 0) + (parseInt(c.css(\"paddingLeft\"), 10) || 0), (parseInt(c.css(\"borderTopWidth\"), 10) || 0) + (parseInt(c.css(\"paddingTop\"), 10) || 0), (isUserScrollable ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt(c.css(\"borderRightWidth\"), 10) || 0) - (parseInt(c.css(\"paddingRight\"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (isUserScrollable ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt(c.css(\"borderBottomWidth\"), 10) || 0) - (parseInt(c.css(\"paddingBottom\"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom];\n this.relativeContainer = c;\n },\n _convertPositionTo: function (d, pos) {\n if (!pos) {\n pos = this.position;\n }\n var mod = d === \"absolute\" ? 1 : -1,\n scrollIsRootNode = this._isRootNode(this.scrollParent[0]);\n return {\n top:\n // The absolute mouse position\n pos.top +\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.top * mod +\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.top * mod - (this.cssPosition === \"fixed\" ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top) * mod,\n left:\n // The absolute mouse position\n pos.left +\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.left * mod +\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.left * mod - (this.cssPosition === \"fixed\" ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left) * mod\n };\n },\n _generatePosition: function (event, constrainPosition) {\n var containment,\n co,\n top,\n left,\n o = this.options,\n scrollIsRootNode = this._isRootNode(this.scrollParent[0]),\n pageX = event.pageX,\n pageY = event.pageY;\n\n // Cache the scroll\n if (!scrollIsRootNode || !this.offset.scroll) {\n this.offset.scroll = {\n top: this.scrollParent.scrollTop(),\n left: this.scrollParent.scrollLeft()\n };\n }\n\n /*\n * - Position constraining -\n * Constrain the position to a mix of grid, containment.\n */\n\n // If we are not dragging yet, we won't check for options\n if (constrainPosition) {\n if (this.containment) {\n if (this.relativeContainer) {\n co = this.relativeContainer.offset();\n containment = [this.containment[0] + co.left, this.containment[1] + co.top, this.containment[2] + co.left, this.containment[3] + co.top];\n } else {\n containment = this.containment;\n }\n if (event.pageX - this.offset.click.left < containment[0]) {\n pageX = containment[0] + this.offset.click.left;\n }\n if (event.pageY - this.offset.click.top < containment[1]) {\n pageY = containment[1] + this.offset.click.top;\n }\n if (event.pageX - this.offset.click.left > containment[2]) {\n pageX = containment[2] + this.offset.click.left;\n }\n if (event.pageY - this.offset.click.top > containment[3]) {\n pageY = containment[3] + this.offset.click.top;\n }\n }\n if (o.grid) {\n //Check for grid elements set to 0 to prevent divide by 0 error causing invalid\n // argument errors in IE (see ticket #6950)\n top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY;\n pageY = containment ? top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3] ? top : top - this.offset.click.top >= containment[1] ? top - o.grid[1] : top + o.grid[1] : top;\n left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX;\n pageX = containment ? left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2] ? left : left - this.offset.click.left >= containment[0] ? left - o.grid[0] : left + o.grid[0] : left;\n }\n if (o.axis === \"y\") {\n pageX = this.originalPageX;\n }\n if (o.axis === \"x\") {\n pageY = this.originalPageY;\n }\n }\n return {\n top:\n // The absolute mouse position\n pageY -\n // Click offset (relative to the element)\n this.offset.click.top -\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.top -\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.top + (this.cssPosition === \"fixed\" ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top),\n left:\n // The absolute mouse position\n pageX -\n // Click offset (relative to the element)\n this.offset.click.left -\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.left -\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.left + (this.cssPosition === \"fixed\" ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left)\n };\n },\n _clear: function () {\n this._removeClass(this.helper, \"ui-draggable-dragging\");\n if (this.helper[0] !== this.element[0] && !this.cancelHelperRemoval) {\n this.helper.remove();\n }\n this.helper = null;\n this.cancelHelperRemoval = false;\n if (this.destroyOnClear) {\n this.destroy();\n }\n },\n // From now on bulk stuff - mainly helpers\n\n _trigger: function (type, event, ui) {\n ui = ui || this._uiHash();\n $.ui.plugin.call(this, type, [event, ui, this], true);\n\n // Absolute position and offset (see #6884 ) have to be recalculated after plugins\n if (/^(drag|start|stop)/.test(type)) {\n this.positionAbs = this._convertPositionTo(\"absolute\");\n ui.offset = this.positionAbs;\n }\n return $.Widget.prototype._trigger.call(this, type, event, ui);\n },\n plugins: {},\n _uiHash: function () {\n return {\n helper: this.helper,\n position: this.position,\n originalPosition: this.originalPosition,\n offset: this.positionAbs\n };\n }\n });\n $.ui.plugin.add(\"draggable\", \"connectToSortable\", {\n start: function (event, ui, draggable) {\n var uiSortable = $.extend({}, ui, {\n item: draggable.element\n });\n draggable.sortables = [];\n $(draggable.options.connectToSortable).each(function () {\n var sortable = $(this).sortable(\"instance\");\n if (sortable && !sortable.options.disabled) {\n draggable.sortables.push(sortable);\n\n // RefreshPositions is called at drag start to refresh the containerCache\n // which is used in drag. This ensures it's initialized and synchronized\n // with any changes that might have happened on the page since initialization.\n sortable.refreshPositions();\n sortable._trigger(\"activate\", event, uiSortable);\n }\n });\n },\n stop: function (event, ui, draggable) {\n var uiSortable = $.extend({}, ui, {\n item: draggable.element\n });\n draggable.cancelHelperRemoval = false;\n $.each(draggable.sortables, function () {\n var sortable = this;\n if (sortable.isOver) {\n sortable.isOver = 0;\n\n // Allow this sortable to handle removing the helper\n draggable.cancelHelperRemoval = true;\n sortable.cancelHelperRemoval = false;\n\n // Use _storedCSS To restore properties in the sortable,\n // as this also handles revert (#9675) since the draggable\n // may have modified them in unexpected ways (#8809)\n sortable._storedCSS = {\n position: sortable.placeholder.css(\"position\"),\n top: sortable.placeholder.css(\"top\"),\n left: sortable.placeholder.css(\"left\")\n };\n sortable._mouseStop(event);\n\n // Once drag has ended, the sortable should return to using\n // its original helper, not the shared helper from draggable\n sortable.options.helper = sortable.options._helper;\n } else {\n // Prevent this Sortable from removing the helper.\n // However, don't set the draggable to remove the helper\n // either as another connected Sortable may yet handle the removal.\n sortable.cancelHelperRemoval = true;\n sortable._trigger(\"deactivate\", event, uiSortable);\n }\n });\n },\n drag: function (event, ui, draggable) {\n $.each(draggable.sortables, function () {\n var innermostIntersecting = false,\n sortable = this;\n\n // Copy over variables that sortable's _intersectsWith uses\n sortable.positionAbs = draggable.positionAbs;\n sortable.helperProportions = draggable.helperProportions;\n sortable.offset.click = draggable.offset.click;\n if (sortable._intersectsWith(sortable.containerCache)) {\n innermostIntersecting = true;\n $.each(draggable.sortables, function () {\n // Copy over variables that sortable's _intersectsWith uses\n this.positionAbs = draggable.positionAbs;\n this.helperProportions = draggable.helperProportions;\n this.offset.click = draggable.offset.click;\n if (this !== sortable && this._intersectsWith(this.containerCache) && $.contains(sortable.element[0], this.element[0])) {\n innermostIntersecting = false;\n }\n return innermostIntersecting;\n });\n }\n if (innermostIntersecting) {\n // If it intersects, we use a little isOver variable and set it once,\n // so that the move-in stuff gets fired only once.\n if (!sortable.isOver) {\n sortable.isOver = 1;\n\n // Store draggable's parent in case we need to reappend to it later.\n draggable._parent = ui.helper.parent();\n sortable.currentItem = ui.helper.appendTo(sortable.element).data(\"ui-sortable-item\", true);\n\n // Store helper option to later restore it\n sortable.options._helper = sortable.options.helper;\n sortable.options.helper = function () {\n return ui.helper[0];\n };\n\n // Fire the start events of the sortable with our passed browser event,\n // and our own helper (so it doesn't create a new one)\n event.target = sortable.currentItem[0];\n sortable._mouseCapture(event, true);\n sortable._mouseStart(event, true, true);\n\n // Because the browser event is way off the new appended portlet,\n // modify necessary variables to reflect the changes\n sortable.offset.click.top = draggable.offset.click.top;\n sortable.offset.click.left = draggable.offset.click.left;\n sortable.offset.parent.left -= draggable.offset.parent.left - sortable.offset.parent.left;\n sortable.offset.parent.top -= draggable.offset.parent.top - sortable.offset.parent.top;\n draggable._trigger(\"toSortable\", event);\n\n // Inform draggable that the helper is in a valid drop zone,\n // used solely in the revert option to handle \"valid/invalid\".\n draggable.dropped = sortable.element;\n\n // Need to refreshPositions of all sortables in the case that\n // adding to one sortable changes the location of the other sortables (#9675)\n $.each(draggable.sortables, function () {\n this.refreshPositions();\n });\n\n // Hack so receive/update callbacks work (mostly)\n draggable.currentItem = draggable.element;\n sortable.fromOutside = draggable;\n }\n if (sortable.currentItem) {\n sortable._mouseDrag(event);\n\n // Copy the sortable's position because the draggable's can potentially reflect\n // a relative position, while sortable is always absolute, which the dragged\n // element has now become. (#8809)\n ui.position = sortable.position;\n }\n } else {\n // If it doesn't intersect with the sortable, and it intersected before,\n // we fake the drag stop of the sortable, but make sure it doesn't remove\n // the helper by using cancelHelperRemoval.\n if (sortable.isOver) {\n sortable.isOver = 0;\n sortable.cancelHelperRemoval = true;\n\n // Calling sortable's mouseStop would trigger a revert,\n // so revert must be temporarily false until after mouseStop is called.\n sortable.options._revert = sortable.options.revert;\n sortable.options.revert = false;\n sortable._trigger(\"out\", event, sortable._uiHash(sortable));\n sortable._mouseStop(event, true);\n\n // Restore sortable behaviors that were modfied\n // when the draggable entered the sortable area (#9481)\n sortable.options.revert = sortable.options._revert;\n sortable.options.helper = sortable.options._helper;\n if (sortable.placeholder) {\n sortable.placeholder.remove();\n }\n\n // Restore and recalculate the draggable's offset considering the sortable\n // may have modified them in unexpected ways. (#8809, #10669)\n ui.helper.appendTo(draggable._parent);\n draggable._refreshOffsets(event);\n ui.position = draggable._generatePosition(event, true);\n draggable._trigger(\"fromSortable\", event);\n\n // Inform draggable that the helper is no longer in a valid drop zone\n draggable.dropped = false;\n\n // Need to refreshPositions of all sortables just in case removing\n // from one sortable changes the location of other sortables (#9675)\n $.each(draggable.sortables, function () {\n this.refreshPositions();\n });\n }\n }\n });\n }\n });\n $.ui.plugin.add(\"draggable\", \"cursor\", {\n start: function (event, ui, instance) {\n var t = $(\"body\"),\n o = instance.options;\n if (t.css(\"cursor\")) {\n o._cursor = t.css(\"cursor\");\n }\n t.css(\"cursor\", o.cursor);\n },\n stop: function (event, ui, instance) {\n var o = instance.options;\n if (o._cursor) {\n $(\"body\").css(\"cursor\", o._cursor);\n }\n }\n });\n $.ui.plugin.add(\"draggable\", \"opacity\", {\n start: function (event, ui, instance) {\n var t = $(ui.helper),\n o = instance.options;\n if (t.css(\"opacity\")) {\n o._opacity = t.css(\"opacity\");\n }\n t.css(\"opacity\", o.opacity);\n },\n stop: function (event, ui, instance) {\n var o = instance.options;\n if (o._opacity) {\n $(ui.helper).css(\"opacity\", o._opacity);\n }\n }\n });\n $.ui.plugin.add(\"draggable\", \"scroll\", {\n start: function (event, ui, i) {\n if (!i.scrollParentNotHidden) {\n i.scrollParentNotHidden = i.helper.scrollParent(false);\n }\n if (i.scrollParentNotHidden[0] !== i.document[0] && i.scrollParentNotHidden[0].tagName !== \"HTML\") {\n i.overflowOffset = i.scrollParentNotHidden.offset();\n }\n },\n drag: function (event, ui, i) {\n var o = i.options,\n scrolled = false,\n scrollParent = i.scrollParentNotHidden[0],\n document = i.document[0];\n if (scrollParent !== document && scrollParent.tagName !== \"HTML\") {\n if (!o.axis || o.axis !== \"x\") {\n if (i.overflowOffset.top + scrollParent.offsetHeight - event.pageY < o.scrollSensitivity) {\n scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n } else if (event.pageY - i.overflowOffset.top < o.scrollSensitivity) {\n scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n }\n }\n if (!o.axis || o.axis !== \"y\") {\n if (i.overflowOffset.left + scrollParent.offsetWidth - event.pageX < o.scrollSensitivity) {\n scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n } else if (event.pageX - i.overflowOffset.left < o.scrollSensitivity) {\n scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n }\n }\n } else {\n if (!o.axis || o.axis !== \"x\") {\n if (event.pageY - $(document).scrollTop() < o.scrollSensitivity) {\n scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);\n } else if ($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) {\n scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);\n }\n }\n if (!o.axis || o.axis !== \"y\") {\n if (event.pageX - $(document).scrollLeft() < o.scrollSensitivity) {\n scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);\n } else if ($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) {\n scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);\n }\n }\n }\n if (scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) {\n $.ui.ddmanager.prepareOffsets(i, event);\n }\n }\n });\n $.ui.plugin.add(\"draggable\", \"snap\", {\n start: function (event, ui, i) {\n var o = i.options;\n i.snapElements = [];\n $(o.snap.constructor !== String ? o.snap.items || \":data(ui-draggable)\" : o.snap).each(function () {\n var $t = $(this),\n $o = $t.offset();\n if (this !== i.element[0]) {\n i.snapElements.push({\n item: this,\n width: $t.outerWidth(),\n height: $t.outerHeight(),\n top: $o.top,\n left: $o.left\n });\n }\n });\n },\n drag: function (event, ui, inst) {\n var ts,\n bs,\n ls,\n rs,\n l,\n r,\n t,\n b,\n i,\n first,\n o = inst.options,\n d = o.snapTolerance,\n x1 = ui.offset.left,\n x2 = x1 + inst.helperProportions.width,\n y1 = ui.offset.top,\n y2 = y1 + inst.helperProportions.height;\n for (i = inst.snapElements.length - 1; i >= 0; i--) {\n l = inst.snapElements[i].left - inst.margins.left;\n r = l + inst.snapElements[i].width;\n t = inst.snapElements[i].top - inst.margins.top;\n b = t + inst.snapElements[i].height;\n if (x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d || !$.contains(inst.snapElements[i].item.ownerDocument, inst.snapElements[i].item)) {\n if (inst.snapElements[i].snapping) {\n if (inst.options.snap.release) {\n inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), {\n snapItem: inst.snapElements[i].item\n }));\n }\n }\n inst.snapElements[i].snapping = false;\n continue;\n }\n if (o.snapMode !== \"inner\") {\n ts = Math.abs(t - y2) <= d;\n bs = Math.abs(b - y1) <= d;\n ls = Math.abs(l - x2) <= d;\n rs = Math.abs(r - x1) <= d;\n if (ts) {\n ui.position.top = inst._convertPositionTo(\"relative\", {\n top: t - inst.helperProportions.height,\n left: 0\n }).top;\n }\n if (bs) {\n ui.position.top = inst._convertPositionTo(\"relative\", {\n top: b,\n left: 0\n }).top;\n }\n if (ls) {\n ui.position.left = inst._convertPositionTo(\"relative\", {\n top: 0,\n left: l - inst.helperProportions.width\n }).left;\n }\n if (rs) {\n ui.position.left = inst._convertPositionTo(\"relative\", {\n top: 0,\n left: r\n }).left;\n }\n }\n first = ts || bs || ls || rs;\n if (o.snapMode !== \"outer\") {\n ts = Math.abs(t - y1) <= d;\n bs = Math.abs(b - y2) <= d;\n ls = Math.abs(l - x1) <= d;\n rs = Math.abs(r - x2) <= d;\n if (ts) {\n ui.position.top = inst._convertPositionTo(\"relative\", {\n top: t,\n left: 0\n }).top;\n }\n if (bs) {\n ui.position.top = inst._convertPositionTo(\"relative\", {\n top: b - inst.helperProportions.height,\n left: 0\n }).top;\n }\n if (ls) {\n ui.position.left = inst._convertPositionTo(\"relative\", {\n top: 0,\n left: l\n }).left;\n }\n if (rs) {\n ui.position.left = inst._convertPositionTo(\"relative\", {\n top: 0,\n left: r - inst.helperProportions.width\n }).left;\n }\n }\n if (!inst.snapElements[i].snapping && (ts || bs || ls || rs || first)) {\n if (inst.options.snap.snap) {\n inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), {\n snapItem: inst.snapElements[i].item\n }));\n }\n }\n inst.snapElements[i].snapping = ts || bs || ls || rs || first;\n }\n }\n });\n $.ui.plugin.add(\"draggable\", \"stack\", {\n start: function (event, ui, instance) {\n var min,\n o = instance.options,\n group = $.makeArray($(o.stack)).sort(function (a, b) {\n return (parseInt($(a).css(\"zIndex\"), 10) || 0) - (parseInt($(b).css(\"zIndex\"), 10) || 0);\n });\n if (!group.length) {\n return;\n }\n min = parseInt($(group[0]).css(\"zIndex\"), 10) || 0;\n $(group).each(function (i) {\n $(this).css(\"zIndex\", min + i);\n });\n this.css(\"zIndex\", min + group.length);\n }\n });\n $.ui.plugin.add(\"draggable\", \"zIndex\", {\n start: function (event, ui, instance) {\n var t = $(ui.helper),\n o = instance.options;\n if (t.css(\"zIndex\")) {\n o._zIndex = t.css(\"zIndex\");\n }\n t.css(\"zIndex\", o.zIndex);\n },\n stop: function (event, ui, instance) {\n var o = instance.options;\n if (o._zIndex) {\n $(ui.helper).css(\"zIndex\", o._zIndex);\n }\n }\n });\n var widgetsDraggable = $.ui.draggable;\n\n /*!\n * jQuery UI Resizable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Resizable\n //>>group: Interactions\n //>>description: Enables resize functionality for any element.\n //>>docs: http://api.jqueryui.com/resizable/\n //>>demos: http://jqueryui.com/resizable/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/resizable.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.resizable\", $.ui.mouse, {\n version: \"1.13.2\",\n widgetEventPrefix: \"resize\",\n options: {\n alsoResize: false,\n animate: false,\n animateDuration: \"slow\",\n animateEasing: \"swing\",\n aspectRatio: false,\n autoHide: false,\n classes: {\n \"ui-resizable-se\": \"ui-icon ui-icon-gripsmall-diagonal-se\"\n },\n containment: false,\n ghost: false,\n grid: false,\n handles: \"e,s,se\",\n helper: false,\n maxHeight: null,\n maxWidth: null,\n minHeight: 10,\n minWidth: 10,\n // See #7960\n zIndex: 90,\n // Callbacks\n resize: null,\n start: null,\n stop: null\n },\n _num: function (value) {\n return parseFloat(value) || 0;\n },\n _isNumber: function (value) {\n return !isNaN(parseFloat(value));\n },\n _hasScroll: function (el, a) {\n if ($(el).css(\"overflow\") === \"hidden\") {\n return false;\n }\n var scroll = a && a === \"left\" ? \"scrollLeft\" : \"scrollTop\",\n has = false;\n if (el[scroll] > 0) {\n return true;\n }\n\n // TODO: determine which cases actually cause this to happen\n // if the element doesn't have the scroll set, see if it's possible to\n // set the scroll\n try {\n el[scroll] = 1;\n has = el[scroll] > 0;\n el[scroll] = 0;\n } catch (e) {\n\n // `el` might be a string, then setting `scroll` will throw\n // an error in strict mode; ignore it.\n }\n return has;\n },\n _create: function () {\n var margins,\n o = this.options,\n that = this;\n this._addClass(\"ui-resizable\");\n $.extend(this, {\n _aspectRatio: !!o.aspectRatio,\n aspectRatio: o.aspectRatio,\n originalElement: this.element,\n _proportionallyResizeElements: [],\n _helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\n });\n\n // Wrap the element if it cannot hold child nodes\n if (this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)) {\n this.element.wrap($(\"<div class='ui-wrapper'></div>\").css({\n overflow: \"hidden\",\n position: this.element.css(\"position\"),\n width: this.element.outerWidth(),\n height: this.element.outerHeight(),\n top: this.element.css(\"top\"),\n left: this.element.css(\"left\")\n }));\n this.element = this.element.parent().data(\"ui-resizable\", this.element.resizable(\"instance\"));\n this.elementIsWrapper = true;\n margins = {\n marginTop: this.originalElement.css(\"marginTop\"),\n marginRight: this.originalElement.css(\"marginRight\"),\n marginBottom: this.originalElement.css(\"marginBottom\"),\n marginLeft: this.originalElement.css(\"marginLeft\")\n };\n this.element.css(margins);\n this.originalElement.css(\"margin\", 0);\n\n // support: Safari\n // Prevent Safari textarea resize\n this.originalResizeStyle = this.originalElement.css(\"resize\");\n this.originalElement.css(\"resize\", \"none\");\n this._proportionallyResizeElements.push(this.originalElement.css({\n position: \"static\",\n zoom: 1,\n display: \"block\"\n }));\n\n // Support: IE9\n // avoid IE jump (hard set the margin)\n this.originalElement.css(margins);\n this._proportionallyResize();\n }\n this._setupHandles();\n if (o.autoHide) {\n $(this.element).on(\"mouseenter\", function () {\n if (o.disabled) {\n return;\n }\n that._removeClass(\"ui-resizable-autohide\");\n that._handles.show();\n }).on(\"mouseleave\", function () {\n if (o.disabled) {\n return;\n }\n if (!that.resizing) {\n that._addClass(\"ui-resizable-autohide\");\n that._handles.hide();\n }\n });\n }\n this._mouseInit();\n },\n _destroy: function () {\n this._mouseDestroy();\n this._addedHandles.remove();\n var wrapper,\n _destroy = function (exp) {\n $(exp).removeData(\"resizable\").removeData(\"ui-resizable\").off(\".resizable\");\n };\n\n // TODO: Unwrap at same DOM position\n if (this.elementIsWrapper) {\n _destroy(this.element);\n wrapper = this.element;\n this.originalElement.css({\n position: wrapper.css(\"position\"),\n width: wrapper.outerWidth(),\n height: wrapper.outerHeight(),\n top: wrapper.css(\"top\"),\n left: wrapper.css(\"left\")\n }).insertAfter(wrapper);\n wrapper.remove();\n }\n this.originalElement.css(\"resize\", this.originalResizeStyle);\n _destroy(this.originalElement);\n return this;\n },\n _setOption: function (key, value) {\n this._super(key, value);\n switch (key) {\n case \"handles\":\n this._removeHandles();\n this._setupHandles();\n break;\n case \"aspectRatio\":\n this._aspectRatio = !!value;\n break;\n default:\n break;\n }\n },\n _setupHandles: function () {\n var o = this.options,\n handle,\n i,\n n,\n hname,\n axis,\n that = this;\n this.handles = o.handles || (!$(\".ui-resizable-handle\", this.element).length ? \"e,s,se\" : {\n n: \".ui-resizable-n\",\n e: \".ui-resizable-e\",\n s: \".ui-resizable-s\",\n w: \".ui-resizable-w\",\n se: \".ui-resizable-se\",\n sw: \".ui-resizable-sw\",\n ne: \".ui-resizable-ne\",\n nw: \".ui-resizable-nw\"\n });\n this._handles = $();\n this._addedHandles = $();\n if (this.handles.constructor === String) {\n if (this.handles === \"all\") {\n this.handles = \"n,e,s,w,se,sw,ne,nw\";\n }\n n = this.handles.split(\",\");\n this.handles = {};\n for (i = 0; i < n.length; i++) {\n handle = String.prototype.trim.call(n[i]);\n hname = \"ui-resizable-\" + handle;\n axis = $(\"<div>\");\n this._addClass(axis, \"ui-resizable-handle \" + hname);\n axis.css({\n zIndex: o.zIndex\n });\n this.handles[handle] = \".ui-resizable-\" + handle;\n if (!this.element.children(this.handles[handle]).length) {\n this.element.append(axis);\n this._addedHandles = this._addedHandles.add(axis);\n }\n }\n }\n this._renderAxis = function (target) {\n var i, axis, padPos, padWrapper;\n target = target || this.element;\n for (i in this.handles) {\n if (this.handles[i].constructor === String) {\n this.handles[i] = this.element.children(this.handles[i]).first().show();\n } else if (this.handles[i].jquery || this.handles[i].nodeType) {\n this.handles[i] = $(this.handles[i]);\n this._on(this.handles[i], {\n \"mousedown\": that._mouseDown\n });\n }\n if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)) {\n axis = $(this.handles[i], this.element);\n padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();\n padPos = [\"padding\", /ne|nw|n/.test(i) ? \"Top\" : /se|sw|s/.test(i) ? \"Bottom\" : /^e$/.test(i) ? \"Right\" : \"Left\"].join(\"\");\n target.css(padPos, padWrapper);\n this._proportionallyResize();\n }\n this._handles = this._handles.add(this.handles[i]);\n }\n };\n\n // TODO: make renderAxis a prototype function\n this._renderAxis(this.element);\n this._handles = this._handles.add(this.element.find(\".ui-resizable-handle\"));\n this._handles.disableSelection();\n this._handles.on(\"mouseover\", function () {\n if (!that.resizing) {\n if (this.className) {\n axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);\n }\n that.axis = axis && axis[1] ? axis[1] : \"se\";\n }\n });\n if (o.autoHide) {\n this._handles.hide();\n this._addClass(\"ui-resizable-autohide\");\n }\n },\n _removeHandles: function () {\n this._addedHandles.remove();\n },\n _mouseCapture: function (event) {\n var i,\n handle,\n capture = false;\n for (i in this.handles) {\n handle = $(this.handles[i])[0];\n if (handle === event.target || $.contains(handle, event.target)) {\n capture = true;\n }\n }\n return !this.options.disabled && capture;\n },\n _mouseStart: function (event) {\n var curleft,\n curtop,\n cursor,\n o = this.options,\n el = this.element;\n this.resizing = true;\n this._renderProxy();\n curleft = this._num(this.helper.css(\"left\"));\n curtop = this._num(this.helper.css(\"top\"));\n if (o.containment) {\n curleft += $(o.containment).scrollLeft() || 0;\n curtop += $(o.containment).scrollTop() || 0;\n }\n this.offset = this.helper.offset();\n this.position = {\n left: curleft,\n top: curtop\n };\n this.size = this._helper ? {\n width: this.helper.width(),\n height: this.helper.height()\n } : {\n width: el.width(),\n height: el.height()\n };\n this.originalSize = this._helper ? {\n width: el.outerWidth(),\n height: el.outerHeight()\n } : {\n width: el.width(),\n height: el.height()\n };\n this.sizeDiff = {\n width: el.outerWidth() - el.width(),\n height: el.outerHeight() - el.height()\n };\n this.originalPosition = {\n left: curleft,\n top: curtop\n };\n this.originalMousePosition = {\n left: event.pageX,\n top: event.pageY\n };\n this.aspectRatio = typeof o.aspectRatio === \"number\" ? o.aspectRatio : this.originalSize.width / this.originalSize.height || 1;\n cursor = $(\".ui-resizable-\" + this.axis).css(\"cursor\");\n $(\"body\").css(\"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor);\n this._addClass(\"ui-resizable-resizing\");\n this._propagate(\"start\", event);\n return true;\n },\n _mouseDrag: function (event) {\n var data,\n props,\n smp = this.originalMousePosition,\n a = this.axis,\n dx = event.pageX - smp.left || 0,\n dy = event.pageY - smp.top || 0,\n trigger = this._change[a];\n this._updatePrevProperties();\n if (!trigger) {\n return false;\n }\n data = trigger.apply(this, [event, dx, dy]);\n this._updateVirtualBoundaries(event.shiftKey);\n if (this._aspectRatio || event.shiftKey) {\n data = this._updateRatio(data, event);\n }\n data = this._respectSize(data, event);\n this._updateCache(data);\n this._propagate(\"resize\", event);\n props = this._applyChanges();\n if (!this._helper && this._proportionallyResizeElements.length) {\n this._proportionallyResize();\n }\n if (!$.isEmptyObject(props)) {\n this._updatePrevProperties();\n this._trigger(\"resize\", event, this.ui());\n this._applyChanges();\n }\n return false;\n },\n _mouseStop: function (event) {\n this.resizing = false;\n var pr,\n ista,\n soffseth,\n soffsetw,\n s,\n left,\n top,\n o = this.options,\n that = this;\n if (this._helper) {\n pr = this._proportionallyResizeElements;\n ista = pr.length && /textarea/i.test(pr[0].nodeName);\n soffseth = ista && this._hasScroll(pr[0], \"left\") ? 0 : that.sizeDiff.height;\n soffsetw = ista ? 0 : that.sizeDiff.width;\n s = {\n width: that.helper.width() - soffsetw,\n height: that.helper.height() - soffseth\n };\n left = parseFloat(that.element.css(\"left\")) + (that.position.left - that.originalPosition.left) || null;\n top = parseFloat(that.element.css(\"top\")) + (that.position.top - that.originalPosition.top) || null;\n if (!o.animate) {\n this.element.css($.extend(s, {\n top: top,\n left: left\n }));\n }\n that.helper.height(that.size.height);\n that.helper.width(that.size.width);\n if (this._helper && !o.animate) {\n this._proportionallyResize();\n }\n }\n $(\"body\").css(\"cursor\", \"auto\");\n this._removeClass(\"ui-resizable-resizing\");\n this._propagate(\"stop\", event);\n if (this._helper) {\n this.helper.remove();\n }\n return false;\n },\n _updatePrevProperties: function () {\n this.prevPosition = {\n top: this.position.top,\n left: this.position.left\n };\n this.prevSize = {\n width: this.size.width,\n height: this.size.height\n };\n },\n _applyChanges: function () {\n var props = {};\n if (this.position.top !== this.prevPosition.top) {\n props.top = this.position.top + \"px\";\n }\n if (this.position.left !== this.prevPosition.left) {\n props.left = this.position.left + \"px\";\n }\n if (this.size.width !== this.prevSize.width) {\n props.width = this.size.width + \"px\";\n }\n if (this.size.height !== this.prevSize.height) {\n props.height = this.size.height + \"px\";\n }\n this.helper.css(props);\n return props;\n },\n _updateVirtualBoundaries: function (forceAspectRatio) {\n var pMinWidth,\n pMaxWidth,\n pMinHeight,\n pMaxHeight,\n b,\n o = this.options;\n b = {\n minWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,\n maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : Infinity,\n minHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,\n maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : Infinity\n };\n if (this._aspectRatio || forceAspectRatio) {\n pMinWidth = b.minHeight * this.aspectRatio;\n pMinHeight = b.minWidth / this.aspectRatio;\n pMaxWidth = b.maxHeight * this.aspectRatio;\n pMaxHeight = b.maxWidth / this.aspectRatio;\n if (pMinWidth > b.minWidth) {\n b.minWidth = pMinWidth;\n }\n if (pMinHeight > b.minHeight) {\n b.minHeight = pMinHeight;\n }\n if (pMaxWidth < b.maxWidth) {\n b.maxWidth = pMaxWidth;\n }\n if (pMaxHeight < b.maxHeight) {\n b.maxHeight = pMaxHeight;\n }\n }\n this._vBoundaries = b;\n },\n _updateCache: function (data) {\n this.offset = this.helper.offset();\n if (this._isNumber(data.left)) {\n this.position.left = data.left;\n }\n if (this._isNumber(data.top)) {\n this.position.top = data.top;\n }\n if (this._isNumber(data.height)) {\n this.size.height = data.height;\n }\n if (this._isNumber(data.width)) {\n this.size.width = data.width;\n }\n },\n _updateRatio: function (data) {\n var cpos = this.position,\n csize = this.size,\n a = this.axis;\n if (this._isNumber(data.height)) {\n data.width = data.height * this.aspectRatio;\n } else if (this._isNumber(data.width)) {\n data.height = data.width / this.aspectRatio;\n }\n if (a === \"sw\") {\n data.left = cpos.left + (csize.width - data.width);\n data.top = null;\n }\n if (a === \"nw\") {\n data.top = cpos.top + (csize.height - data.height);\n data.left = cpos.left + (csize.width - data.width);\n }\n return data;\n },\n _respectSize: function (data) {\n var o = this._vBoundaries,\n a = this.axis,\n ismaxw = this._isNumber(data.width) && o.maxWidth && o.maxWidth < data.width,\n ismaxh = this._isNumber(data.height) && o.maxHeight && o.maxHeight < data.height,\n isminw = this._isNumber(data.width) && o.minWidth && o.minWidth > data.width,\n isminh = this._isNumber(data.height) && o.minHeight && o.minHeight > data.height,\n dw = this.originalPosition.left + this.originalSize.width,\n dh = this.originalPosition.top + this.originalSize.height,\n cw = /sw|nw|w/.test(a),\n ch = /nw|ne|n/.test(a);\n if (isminw) {\n data.width = o.minWidth;\n }\n if (isminh) {\n data.height = o.minHeight;\n }\n if (ismaxw) {\n data.width = o.maxWidth;\n }\n if (ismaxh) {\n data.height = o.maxHeight;\n }\n if (isminw && cw) {\n data.left = dw - o.minWidth;\n }\n if (ismaxw && cw) {\n data.left = dw - o.maxWidth;\n }\n if (isminh && ch) {\n data.top = dh - o.minHeight;\n }\n if (ismaxh && ch) {\n data.top = dh - o.maxHeight;\n }\n\n // Fixing jump error on top/left - bug #2330\n if (!data.width && !data.height && !data.left && data.top) {\n data.top = null;\n } else if (!data.width && !data.height && !data.top && data.left) {\n data.left = null;\n }\n return data;\n },\n _getPaddingPlusBorderDimensions: function (element) {\n var i = 0,\n widths = [],\n borders = [element.css(\"borderTopWidth\"), element.css(\"borderRightWidth\"), element.css(\"borderBottomWidth\"), element.css(\"borderLeftWidth\")],\n paddings = [element.css(\"paddingTop\"), element.css(\"paddingRight\"), element.css(\"paddingBottom\"), element.css(\"paddingLeft\")];\n for (; i < 4; i++) {\n widths[i] = parseFloat(borders[i]) || 0;\n widths[i] += parseFloat(paddings[i]) || 0;\n }\n return {\n height: widths[0] + widths[2],\n width: widths[1] + widths[3]\n };\n },\n _proportionallyResize: function () {\n if (!this._proportionallyResizeElements.length) {\n return;\n }\n var prel,\n i = 0,\n element = this.helper || this.element;\n for (; i < this._proportionallyResizeElements.length; i++) {\n prel = this._proportionallyResizeElements[i];\n\n // TODO: Seems like a bug to cache this.outerDimensions\n // considering that we are in a loop.\n if (!this.outerDimensions) {\n this.outerDimensions = this._getPaddingPlusBorderDimensions(prel);\n }\n prel.css({\n height: element.height() - this.outerDimensions.height || 0,\n width: element.width() - this.outerDimensions.width || 0\n });\n }\n },\n _renderProxy: function () {\n var el = this.element,\n o = this.options;\n this.elementOffset = el.offset();\n if (this._helper) {\n this.helper = this.helper || $(\"<div></div>\").css({\n overflow: \"hidden\"\n });\n this._addClass(this.helper, this._helper);\n this.helper.css({\n width: this.element.outerWidth(),\n height: this.element.outerHeight(),\n position: \"absolute\",\n left: this.elementOffset.left + \"px\",\n top: this.elementOffset.top + \"px\",\n zIndex: ++o.zIndex //TODO: Don't modify option\n });\n\n this.helper.appendTo(\"body\").disableSelection();\n } else {\n this.helper = this.element;\n }\n },\n _change: {\n e: function (event, dx) {\n return {\n width: this.originalSize.width + dx\n };\n },\n w: function (event, dx) {\n var cs = this.originalSize,\n sp = this.originalPosition;\n return {\n left: sp.left + dx,\n width: cs.width - dx\n };\n },\n n: function (event, dx, dy) {\n var cs = this.originalSize,\n sp = this.originalPosition;\n return {\n top: sp.top + dy,\n height: cs.height - dy\n };\n },\n s: function (event, dx, dy) {\n return {\n height: this.originalSize.height + dy\n };\n },\n se: function (event, dx, dy) {\n return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n },\n sw: function (event, dx, dy) {\n return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n },\n ne: function (event, dx, dy) {\n return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));\n },\n nw: function (event, dx, dy) {\n return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));\n }\n },\n _propagate: function (n, event) {\n $.ui.plugin.call(this, n, [event, this.ui()]);\n if (n !== \"resize\") {\n this._trigger(n, event, this.ui());\n }\n },\n plugins: {},\n ui: function () {\n return {\n originalElement: this.originalElement,\n element: this.element,\n helper: this.helper,\n position: this.position,\n size: this.size,\n originalSize: this.originalSize,\n originalPosition: this.originalPosition\n };\n }\n });\n\n /*\n * Resizable Extensions\n */\n\n $.ui.plugin.add(\"resizable\", \"animate\", {\n stop: function (event) {\n var that = $(this).resizable(\"instance\"),\n o = that.options,\n pr = that._proportionallyResizeElements,\n ista = pr.length && /textarea/i.test(pr[0].nodeName),\n soffseth = ista && that._hasScroll(pr[0], \"left\") ? 0 : that.sizeDiff.height,\n soffsetw = ista ? 0 : that.sizeDiff.width,\n style = {\n width: that.size.width - soffsetw,\n height: that.size.height - soffseth\n },\n left = parseFloat(that.element.css(\"left\")) + (that.position.left - that.originalPosition.left) || null,\n top = parseFloat(that.element.css(\"top\")) + (that.position.top - that.originalPosition.top) || null;\n that.element.animate($.extend(style, top && left ? {\n top: top,\n left: left\n } : {}), {\n duration: o.animateDuration,\n easing: o.animateEasing,\n step: function () {\n var data = {\n width: parseFloat(that.element.css(\"width\")),\n height: parseFloat(that.element.css(\"height\")),\n top: parseFloat(that.element.css(\"top\")),\n left: parseFloat(that.element.css(\"left\"))\n };\n if (pr && pr.length) {\n $(pr[0]).css({\n width: data.width,\n height: data.height\n });\n }\n\n // Propagating resize, and updating values for each animation step\n that._updateCache(data);\n that._propagate(\"resize\", event);\n }\n });\n }\n });\n $.ui.plugin.add(\"resizable\", \"containment\", {\n start: function () {\n var element,\n p,\n co,\n ch,\n cw,\n width,\n height,\n that = $(this).resizable(\"instance\"),\n o = that.options,\n el = that.element,\n oc = o.containment,\n ce = oc instanceof $ ? oc.get(0) : /parent/.test(oc) ? el.parent().get(0) : oc;\n if (!ce) {\n return;\n }\n that.containerElement = $(ce);\n if (/document/.test(oc) || oc === document) {\n that.containerOffset = {\n left: 0,\n top: 0\n };\n that.containerPosition = {\n left: 0,\n top: 0\n };\n that.parentData = {\n element: $(document),\n left: 0,\n top: 0,\n width: $(document).width(),\n height: $(document).height() || document.body.parentNode.scrollHeight\n };\n } else {\n element = $(ce);\n p = [];\n $([\"Top\", \"Right\", \"Left\", \"Bottom\"]).each(function (i, name) {\n p[i] = that._num(element.css(\"padding\" + name));\n });\n that.containerOffset = element.offset();\n that.containerPosition = element.position();\n that.containerSize = {\n height: element.innerHeight() - p[3],\n width: element.innerWidth() - p[1]\n };\n co = that.containerOffset;\n ch = that.containerSize.height;\n cw = that.containerSize.width;\n width = that._hasScroll(ce, \"left\") ? ce.scrollWidth : cw;\n height = that._hasScroll(ce) ? ce.scrollHeight : ch;\n that.parentData = {\n element: ce,\n left: co.left,\n top: co.top,\n width: width,\n height: height\n };\n }\n },\n resize: function (event) {\n var woset,\n hoset,\n isParent,\n isOffsetRelative,\n that = $(this).resizable(\"instance\"),\n o = that.options,\n co = that.containerOffset,\n cp = that.position,\n pRatio = that._aspectRatio || event.shiftKey,\n cop = {\n top: 0,\n left: 0\n },\n ce = that.containerElement,\n continueResize = true;\n if (ce[0] !== document && /static/.test(ce.css(\"position\"))) {\n cop = co;\n }\n if (cp.left < (that._helper ? co.left : 0)) {\n that.size.width = that.size.width + (that._helper ? that.position.left - co.left : that.position.left - cop.left);\n if (pRatio) {\n that.size.height = that.size.width / that.aspectRatio;\n continueResize = false;\n }\n that.position.left = o.helper ? co.left : 0;\n }\n if (cp.top < (that._helper ? co.top : 0)) {\n that.size.height = that.size.height + (that._helper ? that.position.top - co.top : that.position.top);\n if (pRatio) {\n that.size.width = that.size.height * that.aspectRatio;\n continueResize = false;\n }\n that.position.top = that._helper ? co.top : 0;\n }\n isParent = that.containerElement.get(0) === that.element.parent().get(0);\n isOffsetRelative = /relative|absolute/.test(that.containerElement.css(\"position\"));\n if (isParent && isOffsetRelative) {\n that.offset.left = that.parentData.left + that.position.left;\n that.offset.top = that.parentData.top + that.position.top;\n } else {\n that.offset.left = that.element.offset().left;\n that.offset.top = that.element.offset().top;\n }\n woset = Math.abs(that.sizeDiff.width + (that._helper ? that.offset.left - cop.left : that.offset.left - co.left));\n hoset = Math.abs(that.sizeDiff.height + (that._helper ? that.offset.top - cop.top : that.offset.top - co.top));\n if (woset + that.size.width >= that.parentData.width) {\n that.size.width = that.parentData.width - woset;\n if (pRatio) {\n that.size.height = that.size.width / that.aspectRatio;\n continueResize = false;\n }\n }\n if (hoset + that.size.height >= that.parentData.height) {\n that.size.height = that.parentData.height - hoset;\n if (pRatio) {\n that.size.width = that.size.height * that.aspectRatio;\n continueResize = false;\n }\n }\n if (!continueResize) {\n that.position.left = that.prevPosition.left;\n that.position.top = that.prevPosition.top;\n that.size.width = that.prevSize.width;\n that.size.height = that.prevSize.height;\n }\n },\n stop: function () {\n var that = $(this).resizable(\"instance\"),\n o = that.options,\n co = that.containerOffset,\n cop = that.containerPosition,\n ce = that.containerElement,\n helper = $(that.helper),\n ho = helper.offset(),\n w = helper.outerWidth() - that.sizeDiff.width,\n h = helper.outerHeight() - that.sizeDiff.height;\n if (that._helper && !o.animate && /relative/.test(ce.css(\"position\"))) {\n $(this).css({\n left: ho.left - cop.left - co.left,\n width: w,\n height: h\n });\n }\n if (that._helper && !o.animate && /static/.test(ce.css(\"position\"))) {\n $(this).css({\n left: ho.left - cop.left - co.left,\n width: w,\n height: h\n });\n }\n }\n });\n $.ui.plugin.add(\"resizable\", \"alsoResize\", {\n start: function () {\n var that = $(this).resizable(\"instance\"),\n o = that.options;\n $(o.alsoResize).each(function () {\n var el = $(this);\n el.data(\"ui-resizable-alsoresize\", {\n width: parseFloat(el.width()),\n height: parseFloat(el.height()),\n left: parseFloat(el.css(\"left\")),\n top: parseFloat(el.css(\"top\"))\n });\n });\n },\n resize: function (event, ui) {\n var that = $(this).resizable(\"instance\"),\n o = that.options,\n os = that.originalSize,\n op = that.originalPosition,\n delta = {\n height: that.size.height - os.height || 0,\n width: that.size.width - os.width || 0,\n top: that.position.top - op.top || 0,\n left: that.position.left - op.left || 0\n };\n $(o.alsoResize).each(function () {\n var el = $(this),\n start = $(this).data(\"ui-resizable-alsoresize\"),\n style = {},\n css = el.parents(ui.originalElement[0]).length ? [\"width\", \"height\"] : [\"width\", \"height\", \"top\", \"left\"];\n $.each(css, function (i, prop) {\n var sum = (start[prop] || 0) + (delta[prop] || 0);\n if (sum && sum >= 0) {\n style[prop] = sum || null;\n }\n });\n el.css(style);\n });\n },\n stop: function () {\n $(this).removeData(\"ui-resizable-alsoresize\");\n }\n });\n $.ui.plugin.add(\"resizable\", \"ghost\", {\n start: function () {\n var that = $(this).resizable(\"instance\"),\n cs = that.size;\n that.ghost = that.originalElement.clone();\n that.ghost.css({\n opacity: 0.25,\n display: \"block\",\n position: \"relative\",\n height: cs.height,\n width: cs.width,\n margin: 0,\n left: 0,\n top: 0\n });\n that._addClass(that.ghost, \"ui-resizable-ghost\");\n\n // DEPRECATED\n // TODO: remove after 1.12\n if ($.uiBackCompat !== false && typeof that.options.ghost === \"string\") {\n // Ghost option\n that.ghost.addClass(this.options.ghost);\n }\n that.ghost.appendTo(that.helper);\n },\n resize: function () {\n var that = $(this).resizable(\"instance\");\n if (that.ghost) {\n that.ghost.css({\n position: \"relative\",\n height: that.size.height,\n width: that.size.width\n });\n }\n },\n stop: function () {\n var that = $(this).resizable(\"instance\");\n if (that.ghost && that.helper) {\n that.helper.get(0).removeChild(that.ghost.get(0));\n }\n }\n });\n $.ui.plugin.add(\"resizable\", \"grid\", {\n resize: function () {\n var outerDimensions,\n that = $(this).resizable(\"instance\"),\n o = that.options,\n cs = that.size,\n os = that.originalSize,\n op = that.originalPosition,\n a = that.axis,\n grid = typeof o.grid === \"number\" ? [o.grid, o.grid] : o.grid,\n gridX = grid[0] || 1,\n gridY = grid[1] || 1,\n ox = Math.round((cs.width - os.width) / gridX) * gridX,\n oy = Math.round((cs.height - os.height) / gridY) * gridY,\n newWidth = os.width + ox,\n newHeight = os.height + oy,\n isMaxWidth = o.maxWidth && o.maxWidth < newWidth,\n isMaxHeight = o.maxHeight && o.maxHeight < newHeight,\n isMinWidth = o.minWidth && o.minWidth > newWidth,\n isMinHeight = o.minHeight && o.minHeight > newHeight;\n o.grid = grid;\n if (isMinWidth) {\n newWidth += gridX;\n }\n if (isMinHeight) {\n newHeight += gridY;\n }\n if (isMaxWidth) {\n newWidth -= gridX;\n }\n if (isMaxHeight) {\n newHeight -= gridY;\n }\n if (/^(se|s|e)$/.test(a)) {\n that.size.width = newWidth;\n that.size.height = newHeight;\n } else if (/^(ne)$/.test(a)) {\n that.size.width = newWidth;\n that.size.height = newHeight;\n that.position.top = op.top - oy;\n } else if (/^(sw)$/.test(a)) {\n that.size.width = newWidth;\n that.size.height = newHeight;\n that.position.left = op.left - ox;\n } else {\n if (newHeight - gridY <= 0 || newWidth - gridX <= 0) {\n outerDimensions = that._getPaddingPlusBorderDimensions(this);\n }\n if (newHeight - gridY > 0) {\n that.size.height = newHeight;\n that.position.top = op.top - oy;\n } else {\n newHeight = gridY - outerDimensions.height;\n that.size.height = newHeight;\n that.position.top = op.top + os.height - newHeight;\n }\n if (newWidth - gridX > 0) {\n that.size.width = newWidth;\n that.position.left = op.left - ox;\n } else {\n newWidth = gridX - outerDimensions.width;\n that.size.width = newWidth;\n that.position.left = op.left + os.width - newWidth;\n }\n }\n }\n });\n var widgetsResizable = $.ui.resizable;\n\n /*!\n * jQuery UI Dialog 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Dialog\n //>>group: Widgets\n //>>description: Displays customizable dialog windows.\n //>>docs: http://api.jqueryui.com/dialog/\n //>>demos: http://jqueryui.com/dialog/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/dialog.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.dialog\", {\n version: \"1.13.2\",\n options: {\n appendTo: \"body\",\n autoOpen: true,\n buttons: [],\n classes: {\n \"ui-dialog\": \"ui-corner-all\",\n \"ui-dialog-titlebar\": \"ui-corner-all\"\n },\n closeOnEscape: true,\n closeText: \"Close\",\n draggable: true,\n hide: null,\n height: \"auto\",\n maxHeight: null,\n maxWidth: null,\n minHeight: 150,\n minWidth: 150,\n modal: false,\n position: {\n my: \"center\",\n at: \"center\",\n of: window,\n collision: \"fit\",\n // Ensure the titlebar is always visible\n using: function (pos) {\n var topOffset = $(this).css(pos).offset().top;\n if (topOffset < 0) {\n $(this).css(\"top\", pos.top - topOffset);\n }\n }\n },\n resizable: true,\n show: null,\n title: null,\n width: 300,\n // Callbacks\n beforeClose: null,\n close: null,\n drag: null,\n dragStart: null,\n dragStop: null,\n focus: null,\n open: null,\n resize: null,\n resizeStart: null,\n resizeStop: null\n },\n sizeRelatedOptions: {\n buttons: true,\n height: true,\n maxHeight: true,\n maxWidth: true,\n minHeight: true,\n minWidth: true,\n width: true\n },\n resizableRelatedOptions: {\n maxHeight: true,\n maxWidth: true,\n minHeight: true,\n minWidth: true\n },\n _create: function () {\n this.originalCss = {\n display: this.element[0].style.display,\n width: this.element[0].style.width,\n minHeight: this.element[0].style.minHeight,\n maxHeight: this.element[0].style.maxHeight,\n height: this.element[0].style.height\n };\n this.originalPosition = {\n parent: this.element.parent(),\n index: this.element.parent().children().index(this.element)\n };\n this.originalTitle = this.element.attr(\"title\");\n if (this.options.title == null && this.originalTitle != null) {\n this.options.title = this.originalTitle;\n }\n\n // Dialogs can't be disabled\n if (this.options.disabled) {\n this.options.disabled = false;\n }\n this._createWrapper();\n this.element.show().removeAttr(\"title\").appendTo(this.uiDialog);\n this._addClass(\"ui-dialog-content\", \"ui-widget-content\");\n this._createTitlebar();\n this._createButtonPane();\n if (this.options.draggable && $.fn.draggable) {\n this._makeDraggable();\n }\n if (this.options.resizable && $.fn.resizable) {\n this._makeResizable();\n }\n this._isOpen = false;\n this._trackFocus();\n },\n _init: function () {\n if (this.options.autoOpen) {\n this.open();\n }\n },\n _appendTo: function () {\n var element = this.options.appendTo;\n if (element && (element.jquery || element.nodeType)) {\n return $(element);\n }\n return this.document.find(element || \"body\").eq(0);\n },\n _destroy: function () {\n var next,\n originalPosition = this.originalPosition;\n this._untrackInstance();\n this._destroyOverlay();\n this.element.removeUniqueId().css(this.originalCss)\n\n // Without detaching first, the following becomes really slow\n .detach();\n this.uiDialog.remove();\n if (this.originalTitle) {\n this.element.attr(\"title\", this.originalTitle);\n }\n next = originalPosition.parent.children().eq(originalPosition.index);\n\n // Don't try to place the dialog next to itself (#8613)\n if (next.length && next[0] !== this.element[0]) {\n next.before(this.element);\n } else {\n originalPosition.parent.append(this.element);\n }\n },\n widget: function () {\n return this.uiDialog;\n },\n disable: $.noop,\n enable: $.noop,\n close: function (event) {\n var that = this;\n if (!this._isOpen || this._trigger(\"beforeClose\", event) === false) {\n return;\n }\n this._isOpen = false;\n this._focusedElement = null;\n this._destroyOverlay();\n this._untrackInstance();\n if (!this.opener.filter(\":focusable\").trigger(\"focus\").length) {\n // Hiding a focused element doesn't trigger blur in WebKit\n // so in case we have nothing to focus on, explicitly blur the active element\n // https://bugs.webkit.org/show_bug.cgi?id=47182\n $.ui.safeBlur($.ui.safeActiveElement(this.document[0]));\n }\n this._hide(this.uiDialog, this.options.hide, function () {\n that._trigger(\"close\", event);\n });\n },\n isOpen: function () {\n return this._isOpen;\n },\n moveToTop: function () {\n this._moveToTop();\n },\n _moveToTop: function (event, silent) {\n var moved = false,\n zIndices = this.uiDialog.siblings(\".ui-front:visible\").map(function () {\n return +$(this).css(\"z-index\");\n }).get(),\n zIndexMax = Math.max.apply(null, zIndices);\n if (zIndexMax >= +this.uiDialog.css(\"z-index\")) {\n this.uiDialog.css(\"z-index\", zIndexMax + 1);\n moved = true;\n }\n if (moved && !silent) {\n this._trigger(\"focus\", event);\n }\n return moved;\n },\n open: function () {\n var that = this;\n if (this._isOpen) {\n if (this._moveToTop()) {\n this._focusTabbable();\n }\n return;\n }\n this._isOpen = true;\n this.opener = $($.ui.safeActiveElement(this.document[0]));\n this._size();\n this._position();\n this._createOverlay();\n this._moveToTop(null, true);\n\n // Ensure the overlay is moved to the top with the dialog, but only when\n // opening. The overlay shouldn't move after the dialog is open so that\n // modeless dialogs opened after the modal dialog stack properly.\n if (this.overlay) {\n this.overlay.css(\"z-index\", this.uiDialog.css(\"z-index\") - 1);\n }\n this._show(this.uiDialog, this.options.show, function () {\n that._focusTabbable();\n that._trigger(\"focus\");\n });\n\n // Track the dialog immediately upon opening in case a focus event\n // somehow occurs outside of the dialog before an element inside the\n // dialog is focused (#10152)\n this._makeFocusTarget();\n this._trigger(\"open\");\n },\n _focusTabbable: function () {\n // Set focus to the first match:\n // 1. An element that was focused previously\n // 2. First element inside the dialog matching [autofocus]\n // 3. Tabbable element inside the content element\n // 4. Tabbable element inside the buttonpane\n // 5. The close button\n // 6. The dialog itself\n var hasFocus = this._focusedElement;\n if (!hasFocus) {\n hasFocus = this.element.find(\"[autofocus]\");\n }\n if (!hasFocus.length) {\n hasFocus = this.element.find(\":tabbable\");\n }\n if (!hasFocus.length) {\n hasFocus = this.uiDialogButtonPane.find(\":tabbable\");\n }\n if (!hasFocus.length) {\n hasFocus = this.uiDialogTitlebarClose.filter(\":tabbable\");\n }\n if (!hasFocus.length) {\n hasFocus = this.uiDialog;\n }\n hasFocus.eq(0).trigger(\"focus\");\n },\n _restoreTabbableFocus: function () {\n var activeElement = $.ui.safeActiveElement(this.document[0]),\n isActive = this.uiDialog[0] === activeElement || $.contains(this.uiDialog[0], activeElement);\n if (!isActive) {\n this._focusTabbable();\n }\n },\n _keepFocus: function (event) {\n event.preventDefault();\n this._restoreTabbableFocus();\n\n // support: IE\n // IE <= 8 doesn't prevent moving focus even with event.preventDefault()\n // so we check again later\n this._delay(this._restoreTabbableFocus);\n },\n _createWrapper: function () {\n this.uiDialog = $(\"<div>\").hide().attr({\n // Setting tabIndex makes the div focusable\n tabIndex: -1,\n role: \"dialog\"\n }).appendTo(this._appendTo());\n this._addClass(this.uiDialog, \"ui-dialog\", \"ui-widget ui-widget-content ui-front\");\n this._on(this.uiDialog, {\n keydown: function (event) {\n if (this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) {\n event.preventDefault();\n this.close(event);\n return;\n }\n\n // Prevent tabbing out of dialogs\n if (event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented()) {\n return;\n }\n var tabbables = this.uiDialog.find(\":tabbable\"),\n first = tabbables.first(),\n last = tabbables.last();\n if ((event.target === last[0] || event.target === this.uiDialog[0]) && !event.shiftKey) {\n this._delay(function () {\n first.trigger(\"focus\");\n });\n event.preventDefault();\n } else if ((event.target === first[0] || event.target === this.uiDialog[0]) && event.shiftKey) {\n this._delay(function () {\n last.trigger(\"focus\");\n });\n event.preventDefault();\n }\n },\n mousedown: function (event) {\n if (this._moveToTop(event)) {\n this._focusTabbable();\n }\n }\n });\n\n // We assume that any existing aria-describedby attribute means\n // that the dialog content is marked up properly\n // otherwise we brute force the content as the description\n if (!this.element.find(\"[aria-describedby]\").length) {\n this.uiDialog.attr({\n \"aria-describedby\": this.element.uniqueId().attr(\"id\")\n });\n }\n },\n _createTitlebar: function () {\n var uiDialogTitle;\n this.uiDialogTitlebar = $(\"<div>\");\n this._addClass(this.uiDialogTitlebar, \"ui-dialog-titlebar\", \"ui-widget-header ui-helper-clearfix\");\n this._on(this.uiDialogTitlebar, {\n mousedown: function (event) {\n // Don't prevent click on close button (#8838)\n // Focusing a dialog that is partially scrolled out of view\n // causes the browser to scroll it into view, preventing the click event\n if (!$(event.target).closest(\".ui-dialog-titlebar-close\")) {\n // Dialog isn't getting focus when dragging (#8063)\n this.uiDialog.trigger(\"focus\");\n }\n }\n });\n\n // Support: IE\n // Use type=\"button\" to prevent enter keypresses in textboxes from closing the\n // dialog in IE (#9312)\n this.uiDialogTitlebarClose = $(\"<button type='button'></button>\").button({\n label: $(\"<a>\").text(this.options.closeText).html(),\n icon: \"ui-icon-closethick\",\n showLabel: false\n }).appendTo(this.uiDialogTitlebar);\n this._addClass(this.uiDialogTitlebarClose, \"ui-dialog-titlebar-close\");\n this._on(this.uiDialogTitlebarClose, {\n click: function (event) {\n event.preventDefault();\n this.close(event);\n }\n });\n uiDialogTitle = $(\"<span>\").uniqueId().prependTo(this.uiDialogTitlebar);\n this._addClass(uiDialogTitle, \"ui-dialog-title\");\n this._title(uiDialogTitle);\n this.uiDialogTitlebar.prependTo(this.uiDialog);\n this.uiDialog.attr({\n \"aria-labelledby\": uiDialogTitle.attr(\"id\")\n });\n },\n _title: function (title) {\n if (this.options.title) {\n title.text(this.options.title);\n } else {\n title.html(\" \");\n }\n },\n _createButtonPane: function () {\n this.uiDialogButtonPane = $(\"<div>\");\n this._addClass(this.uiDialogButtonPane, \"ui-dialog-buttonpane\", \"ui-widget-content ui-helper-clearfix\");\n this.uiButtonSet = $(\"<div>\").appendTo(this.uiDialogButtonPane);\n this._addClass(this.uiButtonSet, \"ui-dialog-buttonset\");\n this._createButtons();\n },\n _createButtons: function () {\n var that = this,\n buttons = this.options.buttons;\n\n // If we already have a button pane, remove it\n this.uiDialogButtonPane.remove();\n this.uiButtonSet.empty();\n if ($.isEmptyObject(buttons) || Array.isArray(buttons) && !buttons.length) {\n this._removeClass(this.uiDialog, \"ui-dialog-buttons\");\n return;\n }\n $.each(buttons, function (name, props) {\n var click, buttonOptions;\n props = typeof props === \"function\" ? {\n click: props,\n text: name\n } : props;\n\n // Default to a non-submitting button\n props = $.extend({\n type: \"button\"\n }, props);\n\n // Change the context for the click callback to be the main element\n click = props.click;\n buttonOptions = {\n icon: props.icon,\n iconPosition: props.iconPosition,\n showLabel: props.showLabel,\n // Deprecated options\n icons: props.icons,\n text: props.text\n };\n delete props.click;\n delete props.icon;\n delete props.iconPosition;\n delete props.showLabel;\n\n // Deprecated options\n delete props.icons;\n if (typeof props.text === \"boolean\") {\n delete props.text;\n }\n $(\"<button></button>\", props).button(buttonOptions).appendTo(that.uiButtonSet).on(\"click\", function () {\n click.apply(that.element[0], arguments);\n });\n });\n this._addClass(this.uiDialog, \"ui-dialog-buttons\");\n this.uiDialogButtonPane.appendTo(this.uiDialog);\n },\n _makeDraggable: function () {\n var that = this,\n options = this.options;\n function filteredUi(ui) {\n return {\n position: ui.position,\n offset: ui.offset\n };\n }\n this.uiDialog.draggable({\n cancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n handle: \".ui-dialog-titlebar\",\n containment: \"document\",\n start: function (event, ui) {\n that._addClass($(this), \"ui-dialog-dragging\");\n that._blockFrames();\n that._trigger(\"dragStart\", event, filteredUi(ui));\n },\n drag: function (event, ui) {\n that._trigger(\"drag\", event, filteredUi(ui));\n },\n stop: function (event, ui) {\n var left = ui.offset.left - that.document.scrollLeft(),\n top = ui.offset.top - that.document.scrollTop();\n options.position = {\n my: \"left top\",\n at: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" + \"top\" + (top >= 0 ? \"+\" : \"\") + top,\n of: that.window\n };\n that._removeClass($(this), \"ui-dialog-dragging\");\n that._unblockFrames();\n that._trigger(\"dragStop\", event, filteredUi(ui));\n }\n });\n },\n _makeResizable: function () {\n var that = this,\n options = this.options,\n handles = options.resizable,\n // .ui-resizable has position: relative defined in the stylesheet\n // but dialogs have to use absolute or fixed positioning\n position = this.uiDialog.css(\"position\"),\n resizeHandles = typeof handles === \"string\" ? handles : \"n,e,s,w,se,sw,ne,nw\";\n function filteredUi(ui) {\n return {\n originalPosition: ui.originalPosition,\n originalSize: ui.originalSize,\n position: ui.position,\n size: ui.size\n };\n }\n this.uiDialog.resizable({\n cancel: \".ui-dialog-content\",\n containment: \"document\",\n alsoResize: this.element,\n maxWidth: options.maxWidth,\n maxHeight: options.maxHeight,\n minWidth: options.minWidth,\n minHeight: this._minHeight(),\n handles: resizeHandles,\n start: function (event, ui) {\n that._addClass($(this), \"ui-dialog-resizing\");\n that._blockFrames();\n that._trigger(\"resizeStart\", event, filteredUi(ui));\n },\n resize: function (event, ui) {\n that._trigger(\"resize\", event, filteredUi(ui));\n },\n stop: function (event, ui) {\n var offset = that.uiDialog.offset(),\n left = offset.left - that.document.scrollLeft(),\n top = offset.top - that.document.scrollTop();\n options.height = that.uiDialog.height();\n options.width = that.uiDialog.width();\n options.position = {\n my: \"left top\",\n at: \"left\" + (left >= 0 ? \"+\" : \"\") + left + \" \" + \"top\" + (top >= 0 ? \"+\" : \"\") + top,\n of: that.window\n };\n that._removeClass($(this), \"ui-dialog-resizing\");\n that._unblockFrames();\n that._trigger(\"resizeStop\", event, filteredUi(ui));\n }\n }).css(\"position\", position);\n },\n _trackFocus: function () {\n this._on(this.widget(), {\n focusin: function (event) {\n this._makeFocusTarget();\n this._focusedElement = $(event.target);\n }\n });\n },\n _makeFocusTarget: function () {\n this._untrackInstance();\n this._trackingInstances().unshift(this);\n },\n _untrackInstance: function () {\n var instances = this._trackingInstances(),\n exists = $.inArray(this, instances);\n if (exists !== -1) {\n instances.splice(exists, 1);\n }\n },\n _trackingInstances: function () {\n var instances = this.document.data(\"ui-dialog-instances\");\n if (!instances) {\n instances = [];\n this.document.data(\"ui-dialog-instances\", instances);\n }\n return instances;\n },\n _minHeight: function () {\n var options = this.options;\n return options.height === \"auto\" ? options.minHeight : Math.min(options.minHeight, options.height);\n },\n _position: function () {\n // Need to show the dialog to get the actual offset in the position plugin\n var isVisible = this.uiDialog.is(\":visible\");\n if (!isVisible) {\n this.uiDialog.show();\n }\n this.uiDialog.position(this.options.position);\n if (!isVisible) {\n this.uiDialog.hide();\n }\n },\n _setOptions: function (options) {\n var that = this,\n resize = false,\n resizableOptions = {};\n $.each(options, function (key, value) {\n that._setOption(key, value);\n if (key in that.sizeRelatedOptions) {\n resize = true;\n }\n if (key in that.resizableRelatedOptions) {\n resizableOptions[key] = value;\n }\n });\n if (resize) {\n this._size();\n this._position();\n }\n if (this.uiDialog.is(\":data(ui-resizable)\")) {\n this.uiDialog.resizable(\"option\", resizableOptions);\n }\n },\n _setOption: function (key, value) {\n var isDraggable,\n isResizable,\n uiDialog = this.uiDialog;\n if (key === \"disabled\") {\n return;\n }\n this._super(key, value);\n if (key === \"appendTo\") {\n this.uiDialog.appendTo(this._appendTo());\n }\n if (key === \"buttons\") {\n this._createButtons();\n }\n if (key === \"closeText\") {\n this.uiDialogTitlebarClose.button({\n // Ensure that we always pass a string\n label: $(\"<a>\").text(\"\" + this.options.closeText).html()\n });\n }\n if (key === \"draggable\") {\n isDraggable = uiDialog.is(\":data(ui-draggable)\");\n if (isDraggable && !value) {\n uiDialog.draggable(\"destroy\");\n }\n if (!isDraggable && value) {\n this._makeDraggable();\n }\n }\n if (key === \"position\") {\n this._position();\n }\n if (key === \"resizable\") {\n // currently resizable, becoming non-resizable\n isResizable = uiDialog.is(\":data(ui-resizable)\");\n if (isResizable && !value) {\n uiDialog.resizable(\"destroy\");\n }\n\n // Currently resizable, changing handles\n if (isResizable && typeof value === \"string\") {\n uiDialog.resizable(\"option\", \"handles\", value);\n }\n\n // Currently non-resizable, becoming resizable\n if (!isResizable && value !== false) {\n this._makeResizable();\n }\n }\n if (key === \"title\") {\n this._title(this.uiDialogTitlebar.find(\".ui-dialog-title\"));\n }\n },\n _size: function () {\n // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n // divs will both have width and height set, so we need to reset them\n var nonContentHeight,\n minContentHeight,\n maxContentHeight,\n options = this.options;\n\n // Reset content sizing\n this.element.show().css({\n width: \"auto\",\n minHeight: 0,\n maxHeight: \"none\",\n height: 0\n });\n if (options.minWidth > options.width) {\n options.width = options.minWidth;\n }\n\n // Reset wrapper sizing\n // determine the height of all the non-content elements\n nonContentHeight = this.uiDialog.css({\n height: \"auto\",\n width: options.width\n }).outerHeight();\n minContentHeight = Math.max(0, options.minHeight - nonContentHeight);\n maxContentHeight = typeof options.maxHeight === \"number\" ? Math.max(0, options.maxHeight - nonContentHeight) : \"none\";\n if (options.height === \"auto\") {\n this.element.css({\n minHeight: minContentHeight,\n maxHeight: maxContentHeight,\n height: \"auto\"\n });\n } else {\n this.element.height(Math.max(0, options.height - nonContentHeight));\n }\n if (this.uiDialog.is(\":data(ui-resizable)\")) {\n this.uiDialog.resizable(\"option\", \"minHeight\", this._minHeight());\n }\n },\n _blockFrames: function () {\n this.iframeBlocks = this.document.find(\"iframe\").map(function () {\n var iframe = $(this);\n return $(\"<div>\").css({\n position: \"absolute\",\n width: iframe.outerWidth(),\n height: iframe.outerHeight()\n }).appendTo(iframe.parent()).offset(iframe.offset())[0];\n });\n },\n _unblockFrames: function () {\n if (this.iframeBlocks) {\n this.iframeBlocks.remove();\n delete this.iframeBlocks;\n }\n },\n _allowInteraction: function (event) {\n if ($(event.target).closest(\".ui-dialog\").length) {\n return true;\n }\n\n // TODO: Remove hack when datepicker implements\n // the .ui-front logic (#8989)\n return !!$(event.target).closest(\".ui-datepicker\").length;\n },\n _createOverlay: function () {\n if (!this.options.modal) {\n return;\n }\n var jqMinor = $.fn.jquery.substring(0, 4);\n\n // We use a delay in case the overlay is created from an\n // event that we're going to be cancelling (#2804)\n var isOpening = true;\n this._delay(function () {\n isOpening = false;\n });\n if (!this.document.data(\"ui-dialog-overlays\")) {\n // Prevent use of anchors and inputs\n // This doesn't use `_on()` because it is a shared event handler\n // across all open modal dialogs.\n this.document.on(\"focusin.ui-dialog\", function (event) {\n if (isOpening) {\n return;\n }\n var instance = this._trackingInstances()[0];\n if (!instance._allowInteraction(event)) {\n event.preventDefault();\n instance._focusTabbable();\n\n // Support: jQuery >=3.4 <3.6 only\n // Focus re-triggering in jQuery 3.4/3.5 makes the original element\n // have its focus event propagated last, breaking the re-targeting.\n // Trigger focus in a delay in addition if needed to avoid the issue\n // See https://github.com/jquery/jquery/issues/4382\n if (jqMinor === \"3.4.\" || jqMinor === \"3.5.\") {\n instance._delay(instance._restoreTabbableFocus);\n }\n }\n }.bind(this));\n }\n this.overlay = $(\"<div>\").appendTo(this._appendTo());\n this._addClass(this.overlay, null, \"ui-widget-overlay ui-front\");\n this._on(this.overlay, {\n mousedown: \"_keepFocus\"\n });\n this.document.data(\"ui-dialog-overlays\", (this.document.data(\"ui-dialog-overlays\") || 0) + 1);\n },\n _destroyOverlay: function () {\n if (!this.options.modal) {\n return;\n }\n if (this.overlay) {\n var overlays = this.document.data(\"ui-dialog-overlays\") - 1;\n if (!overlays) {\n this.document.off(\"focusin.ui-dialog\");\n this.document.removeData(\"ui-dialog-overlays\");\n } else {\n this.document.data(\"ui-dialog-overlays\", overlays);\n }\n this.overlay.remove();\n this.overlay = null;\n }\n }\n });\n\n // DEPRECATED\n // TODO: switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat !== false) {\n // Backcompat for dialogClass option\n $.widget(\"ui.dialog\", $.ui.dialog, {\n options: {\n dialogClass: \"\"\n },\n _createWrapper: function () {\n this._super();\n this.uiDialog.addClass(this.options.dialogClass);\n },\n _setOption: function (key, value) {\n if (key === \"dialogClass\") {\n this.uiDialog.removeClass(this.options.dialogClass).addClass(value);\n }\n this._superApply(arguments);\n }\n });\n }\n var widgetsDialog = $.ui.dialog;\n\n /*!\n * jQuery UI Droppable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Droppable\n //>>group: Interactions\n //>>description: Enables drop targets for draggable elements.\n //>>docs: http://api.jqueryui.com/droppable/\n //>>demos: http://jqueryui.com/droppable/\n\n $.widget(\"ui.droppable\", {\n version: \"1.13.2\",\n widgetEventPrefix: \"drop\",\n options: {\n accept: \"*\",\n addClasses: true,\n greedy: false,\n scope: \"default\",\n tolerance: \"intersect\",\n // Callbacks\n activate: null,\n deactivate: null,\n drop: null,\n out: null,\n over: null\n },\n _create: function () {\n var proportions,\n o = this.options,\n accept = o.accept;\n this.isover = false;\n this.isout = true;\n this.accept = typeof accept === \"function\" ? accept : function (d) {\n return d.is(accept);\n };\n this.proportions = function /* valueToWrite */\n () {\n if (arguments.length) {\n // Store the droppable's proportions\n proportions = arguments[0];\n } else {\n // Retrieve or derive the droppable's proportions\n return proportions ? proportions : proportions = {\n width: this.element[0].offsetWidth,\n height: this.element[0].offsetHeight\n };\n }\n };\n this._addToManager(o.scope);\n if (o.addClasses) {\n this._addClass(\"ui-droppable\");\n }\n },\n _addToManager: function (scope) {\n // Add the reference and positions to the manager\n $.ui.ddmanager.droppables[scope] = $.ui.ddmanager.droppables[scope] || [];\n $.ui.ddmanager.droppables[scope].push(this);\n },\n _splice: function (drop) {\n var i = 0;\n for (; i < drop.length; i++) {\n if (drop[i] === this) {\n drop.splice(i, 1);\n }\n }\n },\n _destroy: function () {\n var drop = $.ui.ddmanager.droppables[this.options.scope];\n this._splice(drop);\n },\n _setOption: function (key, value) {\n if (key === \"accept\") {\n this.accept = typeof value === \"function\" ? value : function (d) {\n return d.is(value);\n };\n } else if (key === \"scope\") {\n var drop = $.ui.ddmanager.droppables[this.options.scope];\n this._splice(drop);\n this._addToManager(value);\n }\n this._super(key, value);\n },\n _activate: function (event) {\n var draggable = $.ui.ddmanager.current;\n this._addActiveClass();\n if (draggable) {\n this._trigger(\"activate\", event, this.ui(draggable));\n }\n },\n _deactivate: function (event) {\n var draggable = $.ui.ddmanager.current;\n this._removeActiveClass();\n if (draggable) {\n this._trigger(\"deactivate\", event, this.ui(draggable));\n }\n },\n _over: function (event) {\n var draggable = $.ui.ddmanager.current;\n\n // Bail if draggable and droppable are same element\n if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {\n return;\n }\n if (this.accept.call(this.element[0], draggable.currentItem || draggable.element)) {\n this._addHoverClass();\n this._trigger(\"over\", event, this.ui(draggable));\n }\n },\n _out: function (event) {\n var draggable = $.ui.ddmanager.current;\n\n // Bail if draggable and droppable are same element\n if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {\n return;\n }\n if (this.accept.call(this.element[0], draggable.currentItem || draggable.element)) {\n this._removeHoverClass();\n this._trigger(\"out\", event, this.ui(draggable));\n }\n },\n _drop: function (event, custom) {\n var draggable = custom || $.ui.ddmanager.current,\n childrenIntersection = false;\n\n // Bail if draggable and droppable are same element\n if (!draggable || (draggable.currentItem || draggable.element)[0] === this.element[0]) {\n return false;\n }\n this.element.find(\":data(ui-droppable)\").not(\".ui-draggable-dragging\").each(function () {\n var inst = $(this).droppable(\"instance\");\n if (inst.options.greedy && !inst.options.disabled && inst.options.scope === draggable.options.scope && inst.accept.call(inst.element[0], draggable.currentItem || draggable.element) && $.ui.intersect(draggable, $.extend(inst, {\n offset: inst.element.offset()\n }), inst.options.tolerance, event)) {\n childrenIntersection = true;\n return false;\n }\n });\n if (childrenIntersection) {\n return false;\n }\n if (this.accept.call(this.element[0], draggable.currentItem || draggable.element)) {\n this._removeActiveClass();\n this._removeHoverClass();\n this._trigger(\"drop\", event, this.ui(draggable));\n return this.element;\n }\n return false;\n },\n ui: function (c) {\n return {\n draggable: c.currentItem || c.element,\n helper: c.helper,\n position: c.position,\n offset: c.positionAbs\n };\n },\n // Extension points just to make backcompat sane and avoid duplicating logic\n // TODO: Remove in 1.14 along with call to it below\n _addHoverClass: function () {\n this._addClass(\"ui-droppable-hover\");\n },\n _removeHoverClass: function () {\n this._removeClass(\"ui-droppable-hover\");\n },\n _addActiveClass: function () {\n this._addClass(\"ui-droppable-active\");\n },\n _removeActiveClass: function () {\n this._removeClass(\"ui-droppable-active\");\n }\n });\n $.ui.intersect = function () {\n function isOverAxis(x, reference, size) {\n return x >= reference && x < reference + size;\n }\n return function (draggable, droppable, toleranceMode, event) {\n if (!droppable.offset) {\n return false;\n }\n var x1 = (draggable.positionAbs || draggable.position.absolute).left + draggable.margins.left,\n y1 = (draggable.positionAbs || draggable.position.absolute).top + draggable.margins.top,\n x2 = x1 + draggable.helperProportions.width,\n y2 = y1 + draggable.helperProportions.height,\n l = droppable.offset.left,\n t = droppable.offset.top,\n r = l + droppable.proportions().width,\n b = t + droppable.proportions().height;\n switch (toleranceMode) {\n case \"fit\":\n return l <= x1 && x2 <= r && t <= y1 && y2 <= b;\n case \"intersect\":\n return l < x1 + draggable.helperProportions.width / 2 &&\n // Right Half\n x2 - draggable.helperProportions.width / 2 < r &&\n // Left Half\n t < y1 + draggable.helperProportions.height / 2 &&\n // Bottom Half\n y2 - draggable.helperProportions.height / 2 < b;\n // Top Half\n case \"pointer\":\n return isOverAxis(event.pageY, t, droppable.proportions().height) && isOverAxis(event.pageX, l, droppable.proportions().width);\n case \"touch\":\n return (y1 >= t && y1 <= b ||\n // Top edge touching\n y2 >= t && y2 <= b ||\n // Bottom edge touching\n y1 < t && y2 > b // Surrounded vertically\n ) && (x1 >= l && x1 <= r ||\n // Left edge touching\n x2 >= l && x2 <= r ||\n // Right edge touching\n x1 < l && x2 > r // Surrounded horizontally\n );\n\n default:\n return false;\n }\n };\n }();\n\n /*\n \tThis manager tracks offsets of draggables and droppables\n */\n $.ui.ddmanager = {\n current: null,\n droppables: {\n \"default\": []\n },\n prepareOffsets: function (t, event) {\n var i,\n j,\n m = $.ui.ddmanager.droppables[t.options.scope] || [],\n type = event ? event.type : null,\n // workaround for #2317\n list = (t.currentItem || t.element).find(\":data(ui-droppable)\").addBack();\n droppablesLoop: for (i = 0; i < m.length; i++) {\n // No disabled and non-accepted\n if (m[i].options.disabled || t && !m[i].accept.call(m[i].element[0], t.currentItem || t.element)) {\n continue;\n }\n\n // Filter out elements in the current dragged item\n for (j = 0; j < list.length; j++) {\n if (list[j] === m[i].element[0]) {\n m[i].proportions().height = 0;\n continue droppablesLoop;\n }\n }\n m[i].visible = m[i].element.css(\"display\") !== \"none\";\n if (!m[i].visible) {\n continue;\n }\n\n // Activate the droppable if used directly from draggables\n if (type === \"mousedown\") {\n m[i]._activate.call(m[i], event);\n }\n m[i].offset = m[i].element.offset();\n m[i].proportions({\n width: m[i].element[0].offsetWidth,\n height: m[i].element[0].offsetHeight\n });\n }\n },\n drop: function (draggable, event) {\n var dropped = false;\n\n // Create a copy of the droppables in case the list changes during the drop (#9116)\n $.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function () {\n if (!this.options) {\n return;\n }\n if (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance, event)) {\n dropped = this._drop.call(this, event) || dropped;\n }\n if (!this.options.disabled && this.visible && this.accept.call(this.element[0], draggable.currentItem || draggable.element)) {\n this.isout = true;\n this.isover = false;\n this._deactivate.call(this, event);\n }\n });\n return dropped;\n },\n dragStart: function (draggable, event) {\n // Listen for scrolling so that if the dragging causes scrolling the position of the\n // droppables can be recalculated (see #5003)\n draggable.element.parentsUntil(\"body\").on(\"scroll.droppable\", function () {\n if (!draggable.options.refreshPositions) {\n $.ui.ddmanager.prepareOffsets(draggable, event);\n }\n });\n },\n drag: function (draggable, event) {\n // If you have a highly dynamic page, you might try this option. It renders positions\n // every time you move the mouse.\n if (draggable.options.refreshPositions) {\n $.ui.ddmanager.prepareOffsets(draggable, event);\n }\n\n // Run through all droppables and check their positions based on specific tolerance options\n $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function () {\n if (this.options.disabled || this.greedyChild || !this.visible) {\n return;\n }\n var parentInstance,\n scope,\n parent,\n intersects = $.ui.intersect(draggable, this, this.options.tolerance, event),\n c = !intersects && this.isover ? \"isout\" : intersects && !this.isover ? \"isover\" : null;\n if (!c) {\n return;\n }\n if (this.options.greedy) {\n // find droppable parents with same scope\n scope = this.options.scope;\n parent = this.element.parents(\":data(ui-droppable)\").filter(function () {\n return $(this).droppable(\"instance\").options.scope === scope;\n });\n if (parent.length) {\n parentInstance = $(parent[0]).droppable(\"instance\");\n parentInstance.greedyChild = c === \"isover\";\n }\n }\n\n // We just moved into a greedy child\n if (parentInstance && c === \"isover\") {\n parentInstance.isover = false;\n parentInstance.isout = true;\n parentInstance._out.call(parentInstance, event);\n }\n this[c] = true;\n this[c === \"isout\" ? \"isover\" : \"isout\"] = false;\n this[c === \"isover\" ? \"_over\" : \"_out\"].call(this, event);\n\n // We just moved out of a greedy child\n if (parentInstance && c === \"isout\") {\n parentInstance.isout = false;\n parentInstance.isover = true;\n parentInstance._over.call(parentInstance, event);\n }\n });\n },\n dragStop: function (draggable, event) {\n draggable.element.parentsUntil(\"body\").off(\"scroll.droppable\");\n\n // Call prepareOffsets one final time since IE does not fire return scroll events when\n // overflow was caused by drag (see #5003)\n if (!draggable.options.refreshPositions) {\n $.ui.ddmanager.prepareOffsets(draggable, event);\n }\n }\n };\n\n // DEPRECATED\n // TODO: switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat !== false) {\n // Backcompat for activeClass and hoverClass options\n $.widget(\"ui.droppable\", $.ui.droppable, {\n options: {\n hoverClass: false,\n activeClass: false\n },\n _addActiveClass: function () {\n this._super();\n if (this.options.activeClass) {\n this.element.addClass(this.options.activeClass);\n }\n },\n _removeActiveClass: function () {\n this._super();\n if (this.options.activeClass) {\n this.element.removeClass(this.options.activeClass);\n }\n },\n _addHoverClass: function () {\n this._super();\n if (this.options.hoverClass) {\n this.element.addClass(this.options.hoverClass);\n }\n },\n _removeHoverClass: function () {\n this._super();\n if (this.options.hoverClass) {\n this.element.removeClass(this.options.hoverClass);\n }\n }\n });\n }\n var widgetsDroppable = $.ui.droppable;\n\n /*!\n * jQuery UI Progressbar 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Progressbar\n //>>group: Widgets\n /* eslint-disable max-len */\n //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.\n /* eslint-enable max-len */\n //>>docs: http://api.jqueryui.com/progressbar/\n //>>demos: http://jqueryui.com/progressbar/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/progressbar.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsProgressbar = $.widget(\"ui.progressbar\", {\n version: \"1.13.2\",\n options: {\n classes: {\n \"ui-progressbar\": \"ui-corner-all\",\n \"ui-progressbar-value\": \"ui-corner-left\",\n \"ui-progressbar-complete\": \"ui-corner-right\"\n },\n max: 100,\n value: 0,\n change: null,\n complete: null\n },\n min: 0,\n _create: function () {\n // Constrain initial value\n this.oldValue = this.options.value = this._constrainedValue();\n this.element.attr({\n // Only set static values; aria-valuenow and aria-valuemax are\n // set inside _refreshValue()\n role: \"progressbar\",\n \"aria-valuemin\": this.min\n });\n this._addClass(\"ui-progressbar\", \"ui-widget ui-widget-content\");\n this.valueDiv = $(\"<div>\").appendTo(this.element);\n this._addClass(this.valueDiv, \"ui-progressbar-value\", \"ui-widget-header\");\n this._refreshValue();\n },\n _destroy: function () {\n this.element.removeAttr(\"role aria-valuemin aria-valuemax aria-valuenow\");\n this.valueDiv.remove();\n },\n value: function (newValue) {\n if (newValue === undefined) {\n return this.options.value;\n }\n this.options.value = this._constrainedValue(newValue);\n this._refreshValue();\n },\n _constrainedValue: function (newValue) {\n if (newValue === undefined) {\n newValue = this.options.value;\n }\n this.indeterminate = newValue === false;\n\n // Sanitize value\n if (typeof newValue !== \"number\") {\n newValue = 0;\n }\n return this.indeterminate ? false : Math.min(this.options.max, Math.max(this.min, newValue));\n },\n _setOptions: function (options) {\n // Ensure \"value\" option is set after other values (like max)\n var value = options.value;\n delete options.value;\n this._super(options);\n this.options.value = this._constrainedValue(value);\n this._refreshValue();\n },\n _setOption: function (key, value) {\n if (key === \"max\") {\n // Don't allow a max less than min\n value = Math.max(this.min, value);\n }\n this._super(key, value);\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this.element.attr(\"aria-disabled\", value);\n this._toggleClass(null, \"ui-state-disabled\", !!value);\n },\n _percentage: function () {\n return this.indeterminate ? 100 : 100 * (this.options.value - this.min) / (this.options.max - this.min);\n },\n _refreshValue: function () {\n var value = this.options.value,\n percentage = this._percentage();\n this.valueDiv.toggle(this.indeterminate || value > this.min).width(percentage.toFixed(0) + \"%\");\n this._toggleClass(this.valueDiv, \"ui-progressbar-complete\", null, value === this.options.max)._toggleClass(\"ui-progressbar-indeterminate\", null, this.indeterminate);\n if (this.indeterminate) {\n this.element.removeAttr(\"aria-valuenow\");\n if (!this.overlayDiv) {\n this.overlayDiv = $(\"<div>\").appendTo(this.valueDiv);\n this._addClass(this.overlayDiv, \"ui-progressbar-overlay\");\n }\n } else {\n this.element.attr({\n \"aria-valuemax\": this.options.max,\n \"aria-valuenow\": value\n });\n if (this.overlayDiv) {\n this.overlayDiv.remove();\n this.overlayDiv = null;\n }\n }\n if (this.oldValue !== value) {\n this.oldValue = value;\n this._trigger(\"change\");\n }\n if (value === this.options.max) {\n this._trigger(\"complete\");\n }\n }\n });\n\n /*!\n * jQuery UI Selectable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Selectable\n //>>group: Interactions\n //>>description: Allows groups of elements to be selected with the mouse.\n //>>docs: http://api.jqueryui.com/selectable/\n //>>demos: http://jqueryui.com/selectable/\n //>>css.structure: ../../themes/base/selectable.css\n\n var widgetsSelectable = $.widget(\"ui.selectable\", $.ui.mouse, {\n version: \"1.13.2\",\n options: {\n appendTo: \"body\",\n autoRefresh: true,\n distance: 0,\n filter: \"*\",\n tolerance: \"touch\",\n // Callbacks\n selected: null,\n selecting: null,\n start: null,\n stop: null,\n unselected: null,\n unselecting: null\n },\n _create: function () {\n var that = this;\n this._addClass(\"ui-selectable\");\n this.dragged = false;\n\n // Cache selectee children based on filter\n this.refresh = function () {\n that.elementPos = $(that.element[0]).offset();\n that.selectees = $(that.options.filter, that.element[0]);\n that._addClass(that.selectees, \"ui-selectee\");\n that.selectees.each(function () {\n var $this = $(this),\n selecteeOffset = $this.offset(),\n pos = {\n left: selecteeOffset.left - that.elementPos.left,\n top: selecteeOffset.top - that.elementPos.top\n };\n $.data(this, \"selectable-item\", {\n element: this,\n $element: $this,\n left: pos.left,\n top: pos.top,\n right: pos.left + $this.outerWidth(),\n bottom: pos.top + $this.outerHeight(),\n startselected: false,\n selected: $this.hasClass(\"ui-selected\"),\n selecting: $this.hasClass(\"ui-selecting\"),\n unselecting: $this.hasClass(\"ui-unselecting\")\n });\n });\n };\n this.refresh();\n this._mouseInit();\n this.helper = $(\"<div>\");\n this._addClass(this.helper, \"ui-selectable-helper\");\n },\n _destroy: function () {\n this.selectees.removeData(\"selectable-item\");\n this._mouseDestroy();\n },\n _mouseStart: function (event) {\n var that = this,\n options = this.options;\n this.opos = [event.pageX, event.pageY];\n this.elementPos = $(this.element[0]).offset();\n if (this.options.disabled) {\n return;\n }\n this.selectees = $(options.filter, this.element[0]);\n this._trigger(\"start\", event);\n $(options.appendTo).append(this.helper);\n\n // position helper (lasso)\n this.helper.css({\n \"left\": event.pageX,\n \"top\": event.pageY,\n \"width\": 0,\n \"height\": 0\n });\n if (options.autoRefresh) {\n this.refresh();\n }\n this.selectees.filter(\".ui-selected\").each(function () {\n var selectee = $.data(this, \"selectable-item\");\n selectee.startselected = true;\n if (!event.metaKey && !event.ctrlKey) {\n that._removeClass(selectee.$element, \"ui-selected\");\n selectee.selected = false;\n that._addClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = true;\n\n // selectable UNSELECTING callback\n that._trigger(\"unselecting\", event, {\n unselecting: selectee.element\n });\n }\n });\n $(event.target).parents().addBack().each(function () {\n var doSelect,\n selectee = $.data(this, \"selectable-item\");\n if (selectee) {\n doSelect = !event.metaKey && !event.ctrlKey || !selectee.$element.hasClass(\"ui-selected\");\n that._removeClass(selectee.$element, doSelect ? \"ui-unselecting\" : \"ui-selected\")._addClass(selectee.$element, doSelect ? \"ui-selecting\" : \"ui-unselecting\");\n selectee.unselecting = !doSelect;\n selectee.selecting = doSelect;\n selectee.selected = doSelect;\n\n // selectable (UN)SELECTING callback\n if (doSelect) {\n that._trigger(\"selecting\", event, {\n selecting: selectee.element\n });\n } else {\n that._trigger(\"unselecting\", event, {\n unselecting: selectee.element\n });\n }\n return false;\n }\n });\n },\n _mouseDrag: function (event) {\n this.dragged = true;\n if (this.options.disabled) {\n return;\n }\n var tmp,\n that = this,\n options = this.options,\n x1 = this.opos[0],\n y1 = this.opos[1],\n x2 = event.pageX,\n y2 = event.pageY;\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.helper.css({\n left: x1,\n top: y1,\n width: x2 - x1,\n height: y2 - y1\n });\n this.selectees.each(function () {\n var selectee = $.data(this, \"selectable-item\"),\n hit = false,\n offset = {};\n\n //prevent helper from being selected if appendTo: selectable\n if (!selectee || selectee.element === that.element[0]) {\n return;\n }\n offset.left = selectee.left + that.elementPos.left;\n offset.right = selectee.right + that.elementPos.left;\n offset.top = selectee.top + that.elementPos.top;\n offset.bottom = selectee.bottom + that.elementPos.top;\n if (options.tolerance === \"touch\") {\n hit = !(offset.left > x2 || offset.right < x1 || offset.top > y2 || offset.bottom < y1);\n } else if (options.tolerance === \"fit\") {\n hit = offset.left > x1 && offset.right < x2 && offset.top > y1 && offset.bottom < y2;\n }\n if (hit) {\n // SELECT\n if (selectee.selected) {\n that._removeClass(selectee.$element, \"ui-selected\");\n selectee.selected = false;\n }\n if (selectee.unselecting) {\n that._removeClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = false;\n }\n if (!selectee.selecting) {\n that._addClass(selectee.$element, \"ui-selecting\");\n selectee.selecting = true;\n\n // selectable SELECTING callback\n that._trigger(\"selecting\", event, {\n selecting: selectee.element\n });\n }\n } else {\n // UNSELECT\n if (selectee.selecting) {\n if ((event.metaKey || event.ctrlKey) && selectee.startselected) {\n that._removeClass(selectee.$element, \"ui-selecting\");\n selectee.selecting = false;\n that._addClass(selectee.$element, \"ui-selected\");\n selectee.selected = true;\n } else {\n that._removeClass(selectee.$element, \"ui-selecting\");\n selectee.selecting = false;\n if (selectee.startselected) {\n that._addClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = true;\n }\n\n // selectable UNSELECTING callback\n that._trigger(\"unselecting\", event, {\n unselecting: selectee.element\n });\n }\n }\n if (selectee.selected) {\n if (!event.metaKey && !event.ctrlKey && !selectee.startselected) {\n that._removeClass(selectee.$element, \"ui-selected\");\n selectee.selected = false;\n that._addClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = true;\n\n // selectable UNSELECTING callback\n that._trigger(\"unselecting\", event, {\n unselecting: selectee.element\n });\n }\n }\n }\n });\n return false;\n },\n _mouseStop: function (event) {\n var that = this;\n this.dragged = false;\n $(\".ui-unselecting\", this.element[0]).each(function () {\n var selectee = $.data(this, \"selectable-item\");\n that._removeClass(selectee.$element, \"ui-unselecting\");\n selectee.unselecting = false;\n selectee.startselected = false;\n that._trigger(\"unselected\", event, {\n unselected: selectee.element\n });\n });\n $(\".ui-selecting\", this.element[0]).each(function () {\n var selectee = $.data(this, \"selectable-item\");\n that._removeClass(selectee.$element, \"ui-selecting\")._addClass(selectee.$element, \"ui-selected\");\n selectee.selecting = false;\n selectee.selected = true;\n selectee.startselected = true;\n that._trigger(\"selected\", event, {\n selected: selectee.element\n });\n });\n this._trigger(\"stop\", event);\n this.helper.remove();\n return false;\n }\n });\n\n /*!\n * jQuery UI Selectmenu 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Selectmenu\n //>>group: Widgets\n /* eslint-disable max-len */\n //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.\n /* eslint-enable max-len */\n //>>docs: http://api.jqueryui.com/selectmenu/\n //>>demos: http://jqueryui.com/selectmenu/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsSelectmenu = $.widget(\"ui.selectmenu\", [$.ui.formResetMixin, {\n version: \"1.13.2\",\n defaultElement: \"<select>\",\n options: {\n appendTo: null,\n classes: {\n \"ui-selectmenu-button-open\": \"ui-corner-top\",\n \"ui-selectmenu-button-closed\": \"ui-corner-all\"\n },\n disabled: null,\n icons: {\n button: \"ui-icon-triangle-1-s\"\n },\n position: {\n my: \"left top\",\n at: \"left bottom\",\n collision: \"none\"\n },\n width: false,\n // Callbacks\n change: null,\n close: null,\n focus: null,\n open: null,\n select: null\n },\n _create: function () {\n var selectmenuId = this.element.uniqueId().attr(\"id\");\n this.ids = {\n element: selectmenuId,\n button: selectmenuId + \"-button\",\n menu: selectmenuId + \"-menu\"\n };\n this._drawButton();\n this._drawMenu();\n this._bindFormResetHandler();\n this._rendered = false;\n this.menuItems = $();\n },\n _drawButton: function () {\n var icon,\n that = this,\n item = this._parseOption(this.element.find(\"option:selected\"), this.element[0].selectedIndex);\n\n // Associate existing label with the new button\n this.labels = this.element.labels().attr(\"for\", this.ids.button);\n this._on(this.labels, {\n click: function (event) {\n this.button.trigger(\"focus\");\n event.preventDefault();\n }\n });\n\n // Hide original select element\n this.element.hide();\n\n // Create button\n this.button = $(\"<span>\", {\n tabindex: this.options.disabled ? -1 : 0,\n id: this.ids.button,\n role: \"combobox\",\n \"aria-expanded\": \"false\",\n \"aria-autocomplete\": \"list\",\n \"aria-owns\": this.ids.menu,\n \"aria-haspopup\": \"true\",\n title: this.element.attr(\"title\")\n }).insertAfter(this.element);\n this._addClass(this.button, \"ui-selectmenu-button ui-selectmenu-button-closed\", \"ui-button ui-widget\");\n icon = $(\"<span>\").appendTo(this.button);\n this._addClass(icon, \"ui-selectmenu-icon\", \"ui-icon \" + this.options.icons.button);\n this.buttonItem = this._renderButtonItem(item).appendTo(this.button);\n if (this.options.width !== false) {\n this._resizeButton();\n }\n this._on(this.button, this._buttonEvents);\n this.button.one(\"focusin\", function () {\n // Delay rendering the menu items until the button receives focus.\n // The menu may have already been rendered via a programmatic open.\n if (!that._rendered) {\n that._refreshMenu();\n }\n });\n },\n _drawMenu: function () {\n var that = this;\n\n // Create menu\n this.menu = $(\"<ul>\", {\n \"aria-hidden\": \"true\",\n \"aria-labelledby\": this.ids.button,\n id: this.ids.menu\n });\n\n // Wrap menu\n this.menuWrap = $(\"<div>\").append(this.menu);\n this._addClass(this.menuWrap, \"ui-selectmenu-menu\", \"ui-front\");\n this.menuWrap.appendTo(this._appendTo());\n\n // Initialize menu widget\n this.menuInstance = this.menu.menu({\n classes: {\n \"ui-menu\": \"ui-corner-bottom\"\n },\n role: \"listbox\",\n select: function (event, ui) {\n event.preventDefault();\n\n // Support: IE8\n // If the item was selected via a click, the text selection\n // will be destroyed in IE\n that._setSelection();\n that._select(ui.item.data(\"ui-selectmenu-item\"), event);\n },\n focus: function (event, ui) {\n var item = ui.item.data(\"ui-selectmenu-item\");\n\n // Prevent inital focus from firing and check if its a newly focused item\n if (that.focusIndex != null && item.index !== that.focusIndex) {\n that._trigger(\"focus\", event, {\n item: item\n });\n if (!that.isOpen) {\n that._select(item, event);\n }\n }\n that.focusIndex = item.index;\n that.button.attr(\"aria-activedescendant\", that.menuItems.eq(item.index).attr(\"id\"));\n }\n }).menu(\"instance\");\n\n // Don't close the menu on mouseleave\n this.menuInstance._off(this.menu, \"mouseleave\");\n\n // Cancel the menu's collapseAll on document click\n this.menuInstance._closeOnDocumentClick = function () {\n return false;\n };\n\n // Selects often contain empty items, but never contain dividers\n this.menuInstance._isDivider = function () {\n return false;\n };\n },\n refresh: function () {\n this._refreshMenu();\n this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(\n // Fall back to an empty object in case there are no options\n this._getSelectedItem().data(\"ui-selectmenu-item\") || {}));\n if (this.options.width === null) {\n this._resizeButton();\n }\n },\n _refreshMenu: function () {\n var item,\n options = this.element.find(\"option\");\n this.menu.empty();\n this._parseOptions(options);\n this._renderMenu(this.menu, this.items);\n this.menuInstance.refresh();\n this.menuItems = this.menu.find(\"li\").not(\".ui-selectmenu-optgroup\").find(\".ui-menu-item-wrapper\");\n this._rendered = true;\n if (!options.length) {\n return;\n }\n item = this._getSelectedItem();\n\n // Update the menu to have the correct item focused\n this.menuInstance.focus(null, item);\n this._setAria(item.data(\"ui-selectmenu-item\"));\n\n // Set disabled state\n this._setOption(\"disabled\", this.element.prop(\"disabled\"));\n },\n open: function (event) {\n if (this.options.disabled) {\n return;\n }\n\n // If this is the first time the menu is being opened, render the items\n if (!this._rendered) {\n this._refreshMenu();\n } else {\n // Menu clears focus on close, reset focus to selected item\n this._removeClass(this.menu.find(\".ui-state-active\"), null, \"ui-state-active\");\n this.menuInstance.focus(null, this._getSelectedItem());\n }\n\n // If there are no options, don't open the menu\n if (!this.menuItems.length) {\n return;\n }\n this.isOpen = true;\n this._toggleAttr();\n this._resizeMenu();\n this._position();\n this._on(this.document, this._documentClick);\n this._trigger(\"open\", event);\n },\n _position: function () {\n this.menuWrap.position($.extend({\n of: this.button\n }, this.options.position));\n },\n close: function (event) {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this._toggleAttr();\n this.range = null;\n this._off(this.document);\n this._trigger(\"close\", event);\n },\n widget: function () {\n return this.button;\n },\n menuWidget: function () {\n return this.menu;\n },\n _renderButtonItem: function (item) {\n var buttonItem = $(\"<span>\");\n this._setText(buttonItem, item.label);\n this._addClass(buttonItem, \"ui-selectmenu-text\");\n return buttonItem;\n },\n _renderMenu: function (ul, items) {\n var that = this,\n currentOptgroup = \"\";\n $.each(items, function (index, item) {\n var li;\n if (item.optgroup !== currentOptgroup) {\n li = $(\"<li>\", {\n text: item.optgroup\n });\n that._addClass(li, \"ui-selectmenu-optgroup\", \"ui-menu-divider\" + (item.element.parent(\"optgroup\").prop(\"disabled\") ? \" ui-state-disabled\" : \"\"));\n li.appendTo(ul);\n currentOptgroup = item.optgroup;\n }\n that._renderItemData(ul, item);\n });\n },\n _renderItemData: function (ul, item) {\n return this._renderItem(ul, item).data(\"ui-selectmenu-item\", item);\n },\n _renderItem: function (ul, item) {\n var li = $(\"<li>\"),\n wrapper = $(\"<div>\", {\n title: item.element.attr(\"title\")\n });\n if (item.disabled) {\n this._addClass(li, null, \"ui-state-disabled\");\n }\n this._setText(wrapper, item.label);\n return li.append(wrapper).appendTo(ul);\n },\n _setText: function (element, value) {\n if (value) {\n element.text(value);\n } else {\n element.html(\" \");\n }\n },\n _move: function (direction, event) {\n var item,\n next,\n filter = \".ui-menu-item\";\n if (this.isOpen) {\n item = this.menuItems.eq(this.focusIndex).parent(\"li\");\n } else {\n item = this.menuItems.eq(this.element[0].selectedIndex).parent(\"li\");\n filter += \":not(.ui-state-disabled)\";\n }\n if (direction === \"first\" || direction === \"last\") {\n next = item[direction === \"first\" ? \"prevAll\" : \"nextAll\"](filter).eq(-1);\n } else {\n next = item[direction + \"All\"](filter).eq(0);\n }\n if (next.length) {\n this.menuInstance.focus(event, next);\n }\n },\n _getSelectedItem: function () {\n return this.menuItems.eq(this.element[0].selectedIndex).parent(\"li\");\n },\n _toggle: function (event) {\n this[this.isOpen ? \"close\" : \"open\"](event);\n },\n _setSelection: function () {\n var selection;\n if (!this.range) {\n return;\n }\n if (window.getSelection) {\n selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(this.range);\n\n // Support: IE8\n } else {\n this.range.select();\n }\n\n // Support: IE\n // Setting the text selection kills the button focus in IE, but\n // restoring the focus doesn't kill the selection.\n this.button.trigger(\"focus\");\n },\n _documentClick: {\n mousedown: function (event) {\n if (!this.isOpen) {\n return;\n }\n if (!$(event.target).closest(\".ui-selectmenu-menu, #\" + $.escapeSelector(this.ids.button)).length) {\n this.close(event);\n }\n }\n },\n _buttonEvents: {\n // Prevent text selection from being reset when interacting with the selectmenu (#10144)\n mousedown: function () {\n var selection;\n if (window.getSelection) {\n selection = window.getSelection();\n if (selection.rangeCount) {\n this.range = selection.getRangeAt(0);\n }\n\n // Support: IE8\n } else {\n this.range = document.selection.createRange();\n }\n },\n click: function (event) {\n this._setSelection();\n this._toggle(event);\n },\n keydown: function (event) {\n var preventDefault = true;\n switch (event.keyCode) {\n case $.ui.keyCode.TAB:\n case $.ui.keyCode.ESCAPE:\n this.close(event);\n preventDefault = false;\n break;\n case $.ui.keyCode.ENTER:\n if (this.isOpen) {\n this._selectFocusedItem(event);\n }\n break;\n case $.ui.keyCode.UP:\n if (event.altKey) {\n this._toggle(event);\n } else {\n this._move(\"prev\", event);\n }\n break;\n case $.ui.keyCode.DOWN:\n if (event.altKey) {\n this._toggle(event);\n } else {\n this._move(\"next\", event);\n }\n break;\n case $.ui.keyCode.SPACE:\n if (this.isOpen) {\n this._selectFocusedItem(event);\n } else {\n this._toggle(event);\n }\n break;\n case $.ui.keyCode.LEFT:\n this._move(\"prev\", event);\n break;\n case $.ui.keyCode.RIGHT:\n this._move(\"next\", event);\n break;\n case $.ui.keyCode.HOME:\n case $.ui.keyCode.PAGE_UP:\n this._move(\"first\", event);\n break;\n case $.ui.keyCode.END:\n case $.ui.keyCode.PAGE_DOWN:\n this._move(\"last\", event);\n break;\n default:\n this.menu.trigger(event);\n preventDefault = false;\n }\n if (preventDefault) {\n event.preventDefault();\n }\n }\n },\n _selectFocusedItem: function (event) {\n var item = this.menuItems.eq(this.focusIndex).parent(\"li\");\n if (!item.hasClass(\"ui-state-disabled\")) {\n this._select(item.data(\"ui-selectmenu-item\"), event);\n }\n },\n _select: function (item, event) {\n var oldIndex = this.element[0].selectedIndex;\n\n // Change native select element\n this.element[0].selectedIndex = item.index;\n this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(item));\n this._setAria(item);\n this._trigger(\"select\", event, {\n item: item\n });\n if (item.index !== oldIndex) {\n this._trigger(\"change\", event, {\n item: item\n });\n }\n this.close(event);\n },\n _setAria: function (item) {\n var id = this.menuItems.eq(item.index).attr(\"id\");\n this.button.attr({\n \"aria-labelledby\": id,\n \"aria-activedescendant\": id\n });\n this.menu.attr(\"aria-activedescendant\", id);\n },\n _setOption: function (key, value) {\n if (key === \"icons\") {\n var icon = this.button.find(\"span.ui-icon\");\n this._removeClass(icon, null, this.options.icons.button)._addClass(icon, null, value.button);\n }\n this._super(key, value);\n if (key === \"appendTo\") {\n this.menuWrap.appendTo(this._appendTo());\n }\n if (key === \"width\") {\n this._resizeButton();\n }\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this.menuInstance.option(\"disabled\", value);\n this.button.attr(\"aria-disabled\", value);\n this._toggleClass(this.button, null, \"ui-state-disabled\", value);\n this.element.prop(\"disabled\", value);\n if (value) {\n this.button.attr(\"tabindex\", -1);\n this.close();\n } else {\n this.button.attr(\"tabindex\", 0);\n }\n },\n _appendTo: function () {\n var element = this.options.appendTo;\n if (element) {\n element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0);\n }\n if (!element || !element[0]) {\n element = this.element.closest(\".ui-front, dialog\");\n }\n if (!element.length) {\n element = this.document[0].body;\n }\n return element;\n },\n _toggleAttr: function () {\n this.button.attr(\"aria-expanded\", this.isOpen);\n\n // We can't use two _toggleClass() calls here, because we need to make sure\n // we always remove classes first and add them second, otherwise if both classes have the\n // same theme class, it will be removed after we add it.\n this._removeClass(this.button, \"ui-selectmenu-button-\" + (this.isOpen ? \"closed\" : \"open\"))._addClass(this.button, \"ui-selectmenu-button-\" + (this.isOpen ? \"open\" : \"closed\"))._toggleClass(this.menuWrap, \"ui-selectmenu-open\", null, this.isOpen);\n this.menu.attr(\"aria-hidden\", !this.isOpen);\n },\n _resizeButton: function () {\n var width = this.options.width;\n\n // For `width: false`, just remove inline style and stop\n if (width === false) {\n this.button.css(\"width\", \"\");\n return;\n }\n\n // For `width: null`, match the width of the original element\n if (width === null) {\n width = this.element.show().outerWidth();\n this.element.hide();\n }\n this.button.outerWidth(width);\n },\n _resizeMenu: function () {\n this.menu.outerWidth(Math.max(this.button.outerWidth(),\n // Support: IE10\n // IE10 wraps long text (possibly a rounding bug)\n // so we add 1px to avoid the wrapping\n this.menu.width(\"\").outerWidth() + 1));\n },\n _getCreateOptions: function () {\n var options = this._super();\n options.disabled = this.element.prop(\"disabled\");\n return options;\n },\n _parseOptions: function (options) {\n var that = this,\n data = [];\n options.each(function (index, item) {\n if (item.hidden) {\n return;\n }\n data.push(that._parseOption($(item), index));\n });\n this.items = data;\n },\n _parseOption: function (option, index) {\n var optgroup = option.parent(\"optgroup\");\n return {\n element: option,\n index: index,\n value: option.val(),\n label: option.text(),\n optgroup: optgroup.attr(\"label\") || \"\",\n disabled: optgroup.prop(\"disabled\") || option.prop(\"disabled\")\n };\n },\n _destroy: function () {\n this._unbindFormResetHandler();\n this.menuWrap.remove();\n this.button.remove();\n this.element.show();\n this.element.removeUniqueId();\n this.labels.attr(\"for\", this.ids.element);\n }\n }]);\n\n /*!\n * jQuery UI Slider 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Slider\n //>>group: Widgets\n //>>description: Displays a flexible slider with ranges and accessibility via keyboard.\n //>>docs: http://api.jqueryui.com/slider/\n //>>demos: http://jqueryui.com/slider/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/slider.css\n //>>css.theme: ../../themes/base/theme.css\n\n var widgetsSlider = $.widget(\"ui.slider\", $.ui.mouse, {\n version: \"1.13.2\",\n widgetEventPrefix: \"slide\",\n options: {\n animate: false,\n classes: {\n \"ui-slider\": \"ui-corner-all\",\n \"ui-slider-handle\": \"ui-corner-all\",\n // Note: ui-widget-header isn't the most fittingly semantic framework class for this\n // element, but worked best visually with a variety of themes\n \"ui-slider-range\": \"ui-corner-all ui-widget-header\"\n },\n distance: 0,\n max: 100,\n min: 0,\n orientation: \"horizontal\",\n range: false,\n step: 1,\n value: 0,\n values: null,\n // Callbacks\n change: null,\n slide: null,\n start: null,\n stop: null\n },\n // Number of pages in a slider\n // (how many times can you page up/down to go through the whole range)\n numPages: 5,\n _create: function () {\n this._keySliding = false;\n this._mouseSliding = false;\n this._animateOff = true;\n this._handleIndex = null;\n this._detectOrientation();\n this._mouseInit();\n this._calculateNewMax();\n this._addClass(\"ui-slider ui-slider-\" + this.orientation, \"ui-widget ui-widget-content\");\n this._refresh();\n this._animateOff = false;\n },\n _refresh: function () {\n this._createRange();\n this._createHandles();\n this._setupEvents();\n this._refreshValue();\n },\n _createHandles: function () {\n var i,\n handleCount,\n options = this.options,\n existingHandles = this.element.find(\".ui-slider-handle\"),\n handle = \"<span tabindex='0'></span>\",\n handles = [];\n handleCount = options.values && options.values.length || 1;\n if (existingHandles.length > handleCount) {\n existingHandles.slice(handleCount).remove();\n existingHandles = existingHandles.slice(0, handleCount);\n }\n for (i = existingHandles.length; i < handleCount; i++) {\n handles.push(handle);\n }\n this.handles = existingHandles.add($(handles.join(\"\")).appendTo(this.element));\n this._addClass(this.handles, \"ui-slider-handle\", \"ui-state-default\");\n this.handle = this.handles.eq(0);\n this.handles.each(function (i) {\n $(this).data(\"ui-slider-handle-index\", i).attr(\"tabIndex\", 0);\n });\n },\n _createRange: function () {\n var options = this.options;\n if (options.range) {\n if (options.range === true) {\n if (!options.values) {\n options.values = [this._valueMin(), this._valueMin()];\n } else if (options.values.length && options.values.length !== 2) {\n options.values = [options.values[0], options.values[0]];\n } else if (Array.isArray(options.values)) {\n options.values = options.values.slice(0);\n }\n }\n if (!this.range || !this.range.length) {\n this.range = $(\"<div>\").appendTo(this.element);\n this._addClass(this.range, \"ui-slider-range\");\n } else {\n this._removeClass(this.range, \"ui-slider-range-min ui-slider-range-max\");\n\n // Handle range switching from true to min/max\n this.range.css({\n \"left\": \"\",\n \"bottom\": \"\"\n });\n }\n if (options.range === \"min\" || options.range === \"max\") {\n this._addClass(this.range, \"ui-slider-range-\" + options.range);\n }\n } else {\n if (this.range) {\n this.range.remove();\n }\n this.range = null;\n }\n },\n _setupEvents: function () {\n this._off(this.handles);\n this._on(this.handles, this._handleEvents);\n this._hoverable(this.handles);\n this._focusable(this.handles);\n },\n _destroy: function () {\n this.handles.remove();\n if (this.range) {\n this.range.remove();\n }\n this._mouseDestroy();\n },\n _mouseCapture: function (event) {\n var position,\n normValue,\n distance,\n closestHandle,\n index,\n allowed,\n offset,\n mouseOverHandle,\n that = this,\n o = this.options;\n if (o.disabled) {\n return false;\n }\n this.elementSize = {\n width: this.element.outerWidth(),\n height: this.element.outerHeight()\n };\n this.elementOffset = this.element.offset();\n position = {\n x: event.pageX,\n y: event.pageY\n };\n normValue = this._normValueFromMouse(position);\n distance = this._valueMax() - this._valueMin() + 1;\n this.handles.each(function (i) {\n var thisDistance = Math.abs(normValue - that.values(i));\n if (distance > thisDistance || distance === thisDistance && (i === that._lastChangedValue || that.values(i) === o.min)) {\n distance = thisDistance;\n closestHandle = $(this);\n index = i;\n }\n });\n allowed = this._start(event, index);\n if (allowed === false) {\n return false;\n }\n this._mouseSliding = true;\n this._handleIndex = index;\n this._addClass(closestHandle, null, \"ui-state-active\");\n closestHandle.trigger(\"focus\");\n offset = closestHandle.offset();\n mouseOverHandle = !$(event.target).parents().addBack().is(\".ui-slider-handle\");\n this._clickOffset = mouseOverHandle ? {\n left: 0,\n top: 0\n } : {\n left: event.pageX - offset.left - closestHandle.width() / 2,\n top: event.pageY - offset.top - closestHandle.height() / 2 - (parseInt(closestHandle.css(\"borderTopWidth\"), 10) || 0) - (parseInt(closestHandle.css(\"borderBottomWidth\"), 10) || 0) + (parseInt(closestHandle.css(\"marginTop\"), 10) || 0)\n };\n if (!this.handles.hasClass(\"ui-state-hover\")) {\n this._slide(event, index, normValue);\n }\n this._animateOff = true;\n return true;\n },\n _mouseStart: function () {\n return true;\n },\n _mouseDrag: function (event) {\n var position = {\n x: event.pageX,\n y: event.pageY\n },\n normValue = this._normValueFromMouse(position);\n this._slide(event, this._handleIndex, normValue);\n return false;\n },\n _mouseStop: function (event) {\n this._removeClass(this.handles, null, \"ui-state-active\");\n this._mouseSliding = false;\n this._stop(event, this._handleIndex);\n this._change(event, this._handleIndex);\n this._handleIndex = null;\n this._clickOffset = null;\n this._animateOff = false;\n return false;\n },\n _detectOrientation: function () {\n this.orientation = this.options.orientation === \"vertical\" ? \"vertical\" : \"horizontal\";\n },\n _normValueFromMouse: function (position) {\n var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse;\n if (this.orientation === \"horizontal\") {\n pixelTotal = this.elementSize.width;\n pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0);\n } else {\n pixelTotal = this.elementSize.height;\n pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0);\n }\n percentMouse = pixelMouse / pixelTotal;\n if (percentMouse > 1) {\n percentMouse = 1;\n }\n if (percentMouse < 0) {\n percentMouse = 0;\n }\n if (this.orientation === \"vertical\") {\n percentMouse = 1 - percentMouse;\n }\n valueTotal = this._valueMax() - this._valueMin();\n valueMouse = this._valueMin() + percentMouse * valueTotal;\n return this._trimAlignValue(valueMouse);\n },\n _uiHash: function (index, value, values) {\n var uiHash = {\n handle: this.handles[index],\n handleIndex: index,\n value: value !== undefined ? value : this.value()\n };\n if (this._hasMultipleValues()) {\n uiHash.value = value !== undefined ? value : this.values(index);\n uiHash.values = values || this.values();\n }\n return uiHash;\n },\n _hasMultipleValues: function () {\n return this.options.values && this.options.values.length;\n },\n _start: function (event, index) {\n return this._trigger(\"start\", event, this._uiHash(index));\n },\n _slide: function (event, index, newVal) {\n var allowed,\n otherVal,\n currentValue = this.value(),\n newValues = this.values();\n if (this._hasMultipleValues()) {\n otherVal = this.values(index ? 0 : 1);\n currentValue = this.values(index);\n if (this.options.values.length === 2 && this.options.range === true) {\n newVal = index === 0 ? Math.min(otherVal, newVal) : Math.max(otherVal, newVal);\n }\n newValues[index] = newVal;\n }\n if (newVal === currentValue) {\n return;\n }\n allowed = this._trigger(\"slide\", event, this._uiHash(index, newVal, newValues));\n\n // A slide can be canceled by returning false from the slide callback\n if (allowed === false) {\n return;\n }\n if (this._hasMultipleValues()) {\n this.values(index, newVal);\n } else {\n this.value(newVal);\n }\n },\n _stop: function (event, index) {\n this._trigger(\"stop\", event, this._uiHash(index));\n },\n _change: function (event, index) {\n if (!this._keySliding && !this._mouseSliding) {\n //store the last changed value index for reference when handles overlap\n this._lastChangedValue = index;\n this._trigger(\"change\", event, this._uiHash(index));\n }\n },\n value: function (newValue) {\n if (arguments.length) {\n this.options.value = this._trimAlignValue(newValue);\n this._refreshValue();\n this._change(null, 0);\n return;\n }\n return this._value();\n },\n values: function (index, newValue) {\n var vals, newValues, i;\n if (arguments.length > 1) {\n this.options.values[index] = this._trimAlignValue(newValue);\n this._refreshValue();\n this._change(null, index);\n return;\n }\n if (arguments.length) {\n if (Array.isArray(arguments[0])) {\n vals = this.options.values;\n newValues = arguments[0];\n for (i = 0; i < vals.length; i += 1) {\n vals[i] = this._trimAlignValue(newValues[i]);\n this._change(null, i);\n }\n this._refreshValue();\n } else {\n if (this._hasMultipleValues()) {\n return this._values(index);\n } else {\n return this.value();\n }\n }\n } else {\n return this._values();\n }\n },\n _setOption: function (key, value) {\n var i,\n valsLength = 0;\n if (key === \"range\" && this.options.range === true) {\n if (value === \"min\") {\n this.options.value = this._values(0);\n this.options.values = null;\n } else if (value === \"max\") {\n this.options.value = this._values(this.options.values.length - 1);\n this.options.values = null;\n }\n }\n if (Array.isArray(this.options.values)) {\n valsLength = this.options.values.length;\n }\n this._super(key, value);\n switch (key) {\n case \"orientation\":\n this._detectOrientation();\n this._removeClass(\"ui-slider-horizontal ui-slider-vertical\")._addClass(\"ui-slider-\" + this.orientation);\n this._refreshValue();\n if (this.options.range) {\n this._refreshRange(value);\n }\n\n // Reset positioning from previous orientation\n this.handles.css(value === \"horizontal\" ? \"bottom\" : \"left\", \"\");\n break;\n case \"value\":\n this._animateOff = true;\n this._refreshValue();\n this._change(null, 0);\n this._animateOff = false;\n break;\n case \"values\":\n this._animateOff = true;\n this._refreshValue();\n\n // Start from the last handle to prevent unreachable handles (#9046)\n for (i = valsLength - 1; i >= 0; i--) {\n this._change(null, i);\n }\n this._animateOff = false;\n break;\n case \"step\":\n case \"min\":\n case \"max\":\n this._animateOff = true;\n this._calculateNewMax();\n this._refreshValue();\n this._animateOff = false;\n break;\n case \"range\":\n this._animateOff = true;\n this._refresh();\n this._animateOff = false;\n break;\n }\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this._toggleClass(null, \"ui-state-disabled\", !!value);\n },\n //internal value getter\n // _value() returns value trimmed by min and max, aligned by step\n _value: function () {\n var val = this.options.value;\n val = this._trimAlignValue(val);\n return val;\n },\n //internal values getter\n // _values() returns array of values trimmed by min and max, aligned by step\n // _values( index ) returns single value trimmed by min and max, aligned by step\n _values: function (index) {\n var val, vals, i;\n if (arguments.length) {\n val = this.options.values[index];\n val = this._trimAlignValue(val);\n return val;\n } else if (this._hasMultipleValues()) {\n // .slice() creates a copy of the array\n // this copy gets trimmed by min and max and then returned\n vals = this.options.values.slice();\n for (i = 0; i < vals.length; i += 1) {\n vals[i] = this._trimAlignValue(vals[i]);\n }\n return vals;\n } else {\n return [];\n }\n },\n // Returns the step-aligned value that val is closest to, between (inclusive) min and max\n _trimAlignValue: function (val) {\n if (val <= this._valueMin()) {\n return this._valueMin();\n }\n if (val >= this._valueMax()) {\n return this._valueMax();\n }\n var step = this.options.step > 0 ? this.options.step : 1,\n valModStep = (val - this._valueMin()) % step,\n alignValue = val - valModStep;\n if (Math.abs(valModStep) * 2 >= step) {\n alignValue += valModStep > 0 ? step : -step;\n }\n\n // Since JavaScript has problems with large floats, round\n // the final value to 5 digits after the decimal point (see #4124)\n return parseFloat(alignValue.toFixed(5));\n },\n _calculateNewMax: function () {\n var max = this.options.max,\n min = this._valueMin(),\n step = this.options.step,\n aboveMin = Math.round((max - min) / step) * step;\n max = aboveMin + min;\n if (max > this.options.max) {\n //If max is not divisible by step, rounding off may increase its value\n max -= step;\n }\n this.max = parseFloat(max.toFixed(this._precision()));\n },\n _precision: function () {\n var precision = this._precisionOf(this.options.step);\n if (this.options.min !== null) {\n precision = Math.max(precision, this._precisionOf(this.options.min));\n }\n return precision;\n },\n _precisionOf: function (num) {\n var str = num.toString(),\n decimal = str.indexOf(\".\");\n return decimal === -1 ? 0 : str.length - decimal - 1;\n },\n _valueMin: function () {\n return this.options.min;\n },\n _valueMax: function () {\n return this.max;\n },\n _refreshRange: function (orientation) {\n if (orientation === \"vertical\") {\n this.range.css({\n \"width\": \"\",\n \"left\": \"\"\n });\n }\n if (orientation === \"horizontal\") {\n this.range.css({\n \"height\": \"\",\n \"bottom\": \"\"\n });\n }\n },\n _refreshValue: function () {\n var lastValPercent,\n valPercent,\n value,\n valueMin,\n valueMax,\n oRange = this.options.range,\n o = this.options,\n that = this,\n animate = !this._animateOff ? o.animate : false,\n _set = {};\n if (this._hasMultipleValues()) {\n this.handles.each(function (i) {\n valPercent = (that.values(i) - that._valueMin()) / (that._valueMax() - that._valueMin()) * 100;\n _set[that.orientation === \"horizontal\" ? \"left\" : \"bottom\"] = valPercent + \"%\";\n $(this).stop(1, 1)[animate ? \"animate\" : \"css\"](_set, o.animate);\n if (that.options.range === true) {\n if (that.orientation === \"horizontal\") {\n if (i === 0) {\n that.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n left: valPercent + \"%\"\n }, o.animate);\n }\n if (i === 1) {\n that.range[animate ? \"animate\" : \"css\"]({\n width: valPercent - lastValPercent + \"%\"\n }, {\n queue: false,\n duration: o.animate\n });\n }\n } else {\n if (i === 0) {\n that.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n bottom: valPercent + \"%\"\n }, o.animate);\n }\n if (i === 1) {\n that.range[animate ? \"animate\" : \"css\"]({\n height: valPercent - lastValPercent + \"%\"\n }, {\n queue: false,\n duration: o.animate\n });\n }\n }\n }\n lastValPercent = valPercent;\n });\n } else {\n value = this.value();\n valueMin = this._valueMin();\n valueMax = this._valueMax();\n valPercent = valueMax !== valueMin ? (value - valueMin) / (valueMax - valueMin) * 100 : 0;\n _set[this.orientation === \"horizontal\" ? \"left\" : \"bottom\"] = valPercent + \"%\";\n this.handle.stop(1, 1)[animate ? \"animate\" : \"css\"](_set, o.animate);\n if (oRange === \"min\" && this.orientation === \"horizontal\") {\n this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n width: valPercent + \"%\"\n }, o.animate);\n }\n if (oRange === \"max\" && this.orientation === \"horizontal\") {\n this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n width: 100 - valPercent + \"%\"\n }, o.animate);\n }\n if (oRange === \"min\" && this.orientation === \"vertical\") {\n this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n height: valPercent + \"%\"\n }, o.animate);\n }\n if (oRange === \"max\" && this.orientation === \"vertical\") {\n this.range.stop(1, 1)[animate ? \"animate\" : \"css\"]({\n height: 100 - valPercent + \"%\"\n }, o.animate);\n }\n }\n },\n _handleEvents: {\n keydown: function (event) {\n var allowed,\n curVal,\n newVal,\n step,\n index = $(event.target).data(\"ui-slider-handle-index\");\n switch (event.keyCode) {\n case $.ui.keyCode.HOME:\n case $.ui.keyCode.END:\n case $.ui.keyCode.PAGE_UP:\n case $.ui.keyCode.PAGE_DOWN:\n case $.ui.keyCode.UP:\n case $.ui.keyCode.RIGHT:\n case $.ui.keyCode.DOWN:\n case $.ui.keyCode.LEFT:\n event.preventDefault();\n if (!this._keySliding) {\n this._keySliding = true;\n this._addClass($(event.target), null, \"ui-state-active\");\n allowed = this._start(event, index);\n if (allowed === false) {\n return;\n }\n }\n break;\n }\n step = this.options.step;\n if (this._hasMultipleValues()) {\n curVal = newVal = this.values(index);\n } else {\n curVal = newVal = this.value();\n }\n switch (event.keyCode) {\n case $.ui.keyCode.HOME:\n newVal = this._valueMin();\n break;\n case $.ui.keyCode.END:\n newVal = this._valueMax();\n break;\n case $.ui.keyCode.PAGE_UP:\n newVal = this._trimAlignValue(curVal + (this._valueMax() - this._valueMin()) / this.numPages);\n break;\n case $.ui.keyCode.PAGE_DOWN:\n newVal = this._trimAlignValue(curVal - (this._valueMax() - this._valueMin()) / this.numPages);\n break;\n case $.ui.keyCode.UP:\n case $.ui.keyCode.RIGHT:\n if (curVal === this._valueMax()) {\n return;\n }\n newVal = this._trimAlignValue(curVal + step);\n break;\n case $.ui.keyCode.DOWN:\n case $.ui.keyCode.LEFT:\n if (curVal === this._valueMin()) {\n return;\n }\n newVal = this._trimAlignValue(curVal - step);\n break;\n }\n this._slide(event, index, newVal);\n },\n keyup: function (event) {\n var index = $(event.target).data(\"ui-slider-handle-index\");\n if (this._keySliding) {\n this._keySliding = false;\n this._stop(event, index);\n this._change(event, index);\n this._removeClass($(event.target), null, \"ui-state-active\");\n }\n }\n }\n });\n\n /*!\n * jQuery UI Sortable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Sortable\n //>>group: Interactions\n //>>description: Enables items in a list to be sorted using the mouse.\n //>>docs: http://api.jqueryui.com/sortable/\n //>>demos: http://jqueryui.com/sortable/\n //>>css.structure: ../../themes/base/sortable.css\n\n var widgetsSortable = $.widget(\"ui.sortable\", $.ui.mouse, {\n version: \"1.13.2\",\n widgetEventPrefix: \"sort\",\n ready: false,\n options: {\n appendTo: \"parent\",\n axis: false,\n connectWith: false,\n containment: false,\n cursor: \"auto\",\n cursorAt: false,\n dropOnEmpty: true,\n forcePlaceholderSize: false,\n forceHelperSize: false,\n grid: false,\n handle: false,\n helper: \"original\",\n items: \"> *\",\n opacity: false,\n placeholder: false,\n revert: false,\n scroll: true,\n scrollSensitivity: 20,\n scrollSpeed: 20,\n scope: \"default\",\n tolerance: \"intersect\",\n zIndex: 1000,\n // Callbacks\n activate: null,\n beforeStop: null,\n change: null,\n deactivate: null,\n out: null,\n over: null,\n receive: null,\n remove: null,\n sort: null,\n start: null,\n stop: null,\n update: null\n },\n _isOverAxis: function (x, reference, size) {\n return x >= reference && x < reference + size;\n },\n _isFloating: function (item) {\n return /left|right/.test(item.css(\"float\")) || /inline|table-cell/.test(item.css(\"display\"));\n },\n _create: function () {\n this.containerCache = {};\n this._addClass(\"ui-sortable\");\n\n //Get the items\n this.refresh();\n\n //Let's determine the parent's offset\n this.offset = this.element.offset();\n\n //Initialize mouse events for interaction\n this._mouseInit();\n this._setHandleClassName();\n\n //We're ready to go\n this.ready = true;\n },\n _setOption: function (key, value) {\n this._super(key, value);\n if (key === \"handle\") {\n this._setHandleClassName();\n }\n },\n _setHandleClassName: function () {\n var that = this;\n this._removeClass(this.element.find(\".ui-sortable-handle\"), \"ui-sortable-handle\");\n $.each(this.items, function () {\n that._addClass(this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item, \"ui-sortable-handle\");\n });\n },\n _destroy: function () {\n this._mouseDestroy();\n for (var i = this.items.length - 1; i >= 0; i--) {\n this.items[i].item.removeData(this.widgetName + \"-item\");\n }\n return this;\n },\n _mouseCapture: function (event, overrideHandle) {\n var currentItem = null,\n validHandle = false,\n that = this;\n if (this.reverting) {\n return false;\n }\n if (this.options.disabled || this.options.type === \"static\") {\n return false;\n }\n\n //We have to refresh the items data once first\n this._refreshItems(event);\n\n //Find out if the clicked node (or one of its parents) is a actual item in this.items\n $(event.target).parents().each(function () {\n if ($.data(this, that.widgetName + \"-item\") === that) {\n currentItem = $(this);\n return false;\n }\n });\n if ($.data(event.target, that.widgetName + \"-item\") === that) {\n currentItem = $(event.target);\n }\n if (!currentItem) {\n return false;\n }\n if (this.options.handle && !overrideHandle) {\n $(this.options.handle, currentItem).find(\"*\").addBack().each(function () {\n if (this === event.target) {\n validHandle = true;\n }\n });\n if (!validHandle) {\n return false;\n }\n }\n this.currentItem = currentItem;\n this._removeCurrentsFromItems();\n return true;\n },\n _mouseStart: function (event, overrideHandle, noActivation) {\n var i,\n body,\n o = this.options;\n this.currentContainer = this;\n\n //We only need to call refreshPositions, because the refreshItems call has been moved to\n // mouseCapture\n this.refreshPositions();\n\n //Prepare the dragged items parent\n this.appendTo = $(o.appendTo !== \"parent\" ? o.appendTo : this.currentItem.parent());\n\n //Create and append the visible helper\n this.helper = this._createHelper(event);\n\n //Cache the helper size\n this._cacheHelperProportions();\n\n /*\n * - Position generation -\n * This block generates everything position related - it's the core of draggables.\n */\n\n //Cache the margins of the original element\n this._cacheMargins();\n\n //The element's absolute position on the page minus margins\n this.offset = this.currentItem.offset();\n this.offset = {\n top: this.offset.top - this.margins.top,\n left: this.offset.left - this.margins.left\n };\n $.extend(this.offset, {\n click: {\n //Where the click happened, relative to the element\n left: event.pageX - this.offset.left,\n top: event.pageY - this.offset.top\n },\n // This is a relative to absolute position minus the actual position calculation -\n // only used for relative positioned helper\n relative: this._getRelativeOffset()\n });\n\n // After we get the helper offset, but before we get the parent offset we can\n // change the helper's position to absolute\n // TODO: Still need to figure out a way to make relative sorting possible\n this.helper.css(\"position\", \"absolute\");\n this.cssPosition = this.helper.css(\"position\");\n\n //Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n if (o.cursorAt) {\n this._adjustOffsetFromHelper(o.cursorAt);\n }\n\n //Cache the former DOM position\n this.domPosition = {\n prev: this.currentItem.prev()[0],\n parent: this.currentItem.parent()[0]\n };\n\n // If the helper is not the original, hide the original so it's not playing any role during\n // the drag, won't cause anything bad this way\n if (this.helper[0] !== this.currentItem[0]) {\n this.currentItem.hide();\n }\n\n //Create the placeholder\n this._createPlaceholder();\n\n //Get the next scrolling parent\n this.scrollParent = this.placeholder.scrollParent();\n $.extend(this.offset, {\n parent: this._getParentOffset()\n });\n\n //Set a containment if given in the options\n if (o.containment) {\n this._setContainment();\n }\n if (o.cursor && o.cursor !== \"auto\") {\n // cursor option\n body = this.document.find(\"body\");\n\n // Support: IE\n this.storedCursor = body.css(\"cursor\");\n body.css(\"cursor\", o.cursor);\n this.storedStylesheet = $(\"<style>*{ cursor: \" + o.cursor + \" !important; }</style>\").appendTo(body);\n }\n\n // We need to make sure to grab the zIndex before setting the\n // opacity, because setting the opacity to anything lower than 1\n // causes the zIndex to change from \"auto\" to 0.\n if (o.zIndex) {\n // zIndex option\n if (this.helper.css(\"zIndex\")) {\n this._storedZIndex = this.helper.css(\"zIndex\");\n }\n this.helper.css(\"zIndex\", o.zIndex);\n }\n if (o.opacity) {\n // opacity option\n if (this.helper.css(\"opacity\")) {\n this._storedOpacity = this.helper.css(\"opacity\");\n }\n this.helper.css(\"opacity\", o.opacity);\n }\n\n //Prepare scrolling\n if (this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== \"HTML\") {\n this.overflowOffset = this.scrollParent.offset();\n }\n\n //Call callbacks\n this._trigger(\"start\", event, this._uiHash());\n\n //Recache the helper size\n if (!this._preserveHelperProportions) {\n this._cacheHelperProportions();\n }\n\n //Post \"activate\" events to possible containers\n if (!noActivation) {\n for (i = this.containers.length - 1; i >= 0; i--) {\n this.containers[i]._trigger(\"activate\", event, this._uiHash(this));\n }\n }\n\n //Prepare possible droppables\n if ($.ui.ddmanager) {\n $.ui.ddmanager.current = this;\n }\n if ($.ui.ddmanager && !o.dropBehaviour) {\n $.ui.ddmanager.prepareOffsets(this, event);\n }\n this.dragging = true;\n this._addClass(this.helper, \"ui-sortable-helper\");\n\n //Move the helper, if needed\n if (!this.helper.parent().is(this.appendTo)) {\n this.helper.detach().appendTo(this.appendTo);\n\n //Update position\n this.offset.parent = this._getParentOffset();\n }\n\n //Generate the original position\n this.position = this.originalPosition = this._generatePosition(event);\n this.originalPageX = event.pageX;\n this.originalPageY = event.pageY;\n this.lastPositionAbs = this.positionAbs = this._convertPositionTo(\"absolute\");\n this._mouseDrag(event);\n return true;\n },\n _scroll: function (event) {\n var o = this.options,\n scrolled = false;\n if (this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== \"HTML\") {\n if (this.overflowOffset.top + this.scrollParent[0].offsetHeight - event.pageY < o.scrollSensitivity) {\n this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed;\n } else if (event.pageY - this.overflowOffset.top < o.scrollSensitivity) {\n this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed;\n }\n if (this.overflowOffset.left + this.scrollParent[0].offsetWidth - event.pageX < o.scrollSensitivity) {\n this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed;\n } else if (event.pageX - this.overflowOffset.left < o.scrollSensitivity) {\n this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed;\n }\n } else {\n if (event.pageY - this.document.scrollTop() < o.scrollSensitivity) {\n scrolled = this.document.scrollTop(this.document.scrollTop() - o.scrollSpeed);\n } else if (this.window.height() - (event.pageY - this.document.scrollTop()) < o.scrollSensitivity) {\n scrolled = this.document.scrollTop(this.document.scrollTop() + o.scrollSpeed);\n }\n if (event.pageX - this.document.scrollLeft() < o.scrollSensitivity) {\n scrolled = this.document.scrollLeft(this.document.scrollLeft() - o.scrollSpeed);\n } else if (this.window.width() - (event.pageX - this.document.scrollLeft()) < o.scrollSensitivity) {\n scrolled = this.document.scrollLeft(this.document.scrollLeft() + o.scrollSpeed);\n }\n }\n return scrolled;\n },\n _mouseDrag: function (event) {\n var i,\n item,\n itemElement,\n intersection,\n o = this.options;\n\n //Compute the helpers position\n this.position = this._generatePosition(event);\n this.positionAbs = this._convertPositionTo(\"absolute\");\n\n //Set the helper position\n if (!this.options.axis || this.options.axis !== \"y\") {\n this.helper[0].style.left = this.position.left + \"px\";\n }\n if (!this.options.axis || this.options.axis !== \"x\") {\n this.helper[0].style.top = this.position.top + \"px\";\n }\n\n //Do scrolling\n if (o.scroll) {\n if (this._scroll(event) !== false) {\n //Update item positions used in position checks\n this._refreshItemPositions(true);\n if ($.ui.ddmanager && !o.dropBehaviour) {\n $.ui.ddmanager.prepareOffsets(this, event);\n }\n }\n }\n this.dragDirection = {\n vertical: this._getDragVerticalDirection(),\n horizontal: this._getDragHorizontalDirection()\n };\n\n //Rearrange\n for (i = this.items.length - 1; i >= 0; i--) {\n //Cache variables and intersection, continue if no intersection\n item = this.items[i];\n itemElement = item.item[0];\n intersection = this._intersectsWithPointer(item);\n if (!intersection) {\n continue;\n }\n\n // Only put the placeholder inside the current Container, skip all\n // items from other containers. This works because when moving\n // an item from one container to another the\n // currentContainer is switched before the placeholder is moved.\n //\n // Without this, moving items in \"sub-sortables\" can cause\n // the placeholder to jitter between the outer and inner container.\n if (item.instance !== this.currentContainer) {\n continue;\n }\n\n // Cannot intersect with itself\n // no useless actions that have been done before\n // no action if the item moved is the parent of the item checked\n if (itemElement !== this.currentItem[0] && this.placeholder[intersection === 1 ? \"next\" : \"prev\"]()[0] !== itemElement && !$.contains(this.placeholder[0], itemElement) && (this.options.type === \"semi-dynamic\" ? !$.contains(this.element[0], itemElement) : true)) {\n this.direction = intersection === 1 ? \"down\" : \"up\";\n if (this.options.tolerance === \"pointer\" || this._intersectsWithSides(item)) {\n this._rearrange(event, item);\n } else {\n break;\n }\n this._trigger(\"change\", event, this._uiHash());\n break;\n }\n }\n\n //Post events to containers\n this._contactContainers(event);\n\n //Interconnect with droppables\n if ($.ui.ddmanager) {\n $.ui.ddmanager.drag(this, event);\n }\n\n //Call callbacks\n this._trigger(\"sort\", event, this._uiHash());\n this.lastPositionAbs = this.positionAbs;\n return false;\n },\n _mouseStop: function (event, noPropagation) {\n if (!event) {\n return;\n }\n\n //If we are using droppables, inform the manager about the drop\n if ($.ui.ddmanager && !this.options.dropBehaviour) {\n $.ui.ddmanager.drop(this, event);\n }\n if (this.options.revert) {\n var that = this,\n cur = this.placeholder.offset(),\n axis = this.options.axis,\n animation = {};\n if (!axis || axis === \"x\") {\n animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft);\n }\n if (!axis || axis === \"y\") {\n animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop);\n }\n this.reverting = true;\n $(this.helper).animate(animation, parseInt(this.options.revert, 10) || 500, function () {\n that._clear(event);\n });\n } else {\n this._clear(event, noPropagation);\n }\n return false;\n },\n cancel: function () {\n if (this.dragging) {\n this._mouseUp(new $.Event(\"mouseup\", {\n target: null\n }));\n if (this.options.helper === \"original\") {\n this.currentItem.css(this._storedCSS);\n this._removeClass(this.currentItem, \"ui-sortable-helper\");\n } else {\n this.currentItem.show();\n }\n\n //Post deactivating events to containers\n for (var i = this.containers.length - 1; i >= 0; i--) {\n this.containers[i]._trigger(\"deactivate\", null, this._uiHash(this));\n if (this.containers[i].containerCache.over) {\n this.containers[i]._trigger(\"out\", null, this._uiHash(this));\n this.containers[i].containerCache.over = 0;\n }\n }\n }\n if (this.placeholder) {\n //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n // it unbinds ALL events from the original node!\n if (this.placeholder[0].parentNode) {\n this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n }\n if (this.options.helper !== \"original\" && this.helper && this.helper[0].parentNode) {\n this.helper.remove();\n }\n $.extend(this, {\n helper: null,\n dragging: false,\n reverting: false,\n _noFinalSort: null\n });\n if (this.domPosition.prev) {\n $(this.domPosition.prev).after(this.currentItem);\n } else {\n $(this.domPosition.parent).prepend(this.currentItem);\n }\n }\n return this;\n },\n serialize: function (o) {\n var items = this._getItemsAsjQuery(o && o.connected),\n str = [];\n o = o || {};\n $(items).each(function () {\n var res = ($(o.item || this).attr(o.attribute || \"id\") || \"\").match(o.expression || /(.+)[\\-=_](.+)/);\n if (res) {\n str.push((o.key || res[1] + \"[]\") + \"=\" + (o.key && o.expression ? res[1] : res[2]));\n }\n });\n if (!str.length && o.key) {\n str.push(o.key + \"=\");\n }\n return str.join(\"&\");\n },\n toArray: function (o) {\n var items = this._getItemsAsjQuery(o && o.connected),\n ret = [];\n o = o || {};\n items.each(function () {\n ret.push($(o.item || this).attr(o.attribute || \"id\") || \"\");\n });\n return ret;\n },\n /* Be careful with the following core functions */\n _intersectsWith: function (item) {\n var x1 = this.positionAbs.left,\n x2 = x1 + this.helperProportions.width,\n y1 = this.positionAbs.top,\n y2 = y1 + this.helperProportions.height,\n l = item.left,\n r = l + item.width,\n t = item.top,\n b = t + item.height,\n dyClick = this.offset.click.top,\n dxClick = this.offset.click.left,\n isOverElementHeight = this.options.axis === \"x\" || y1 + dyClick > t && y1 + dyClick < b,\n isOverElementWidth = this.options.axis === \"y\" || x1 + dxClick > l && x1 + dxClick < r,\n isOverElement = isOverElementHeight && isOverElementWidth;\n if (this.options.tolerance === \"pointer\" || this.options.forcePointerForContainers || this.options.tolerance !== \"pointer\" && this.helperProportions[this.floating ? \"width\" : \"height\"] > item[this.floating ? \"width\" : \"height\"]) {\n return isOverElement;\n } else {\n return l < x1 + this.helperProportions.width / 2 &&\n // Right Half\n x2 - this.helperProportions.width / 2 < r &&\n // Left Half\n t < y1 + this.helperProportions.height / 2 &&\n // Bottom Half\n y2 - this.helperProportions.height / 2 < b; // Top Half\n }\n },\n\n _intersectsWithPointer: function (item) {\n var verticalDirection,\n horizontalDirection,\n isOverElementHeight = this.options.axis === \"x\" || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),\n isOverElementWidth = this.options.axis === \"y\" || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),\n isOverElement = isOverElementHeight && isOverElementWidth;\n if (!isOverElement) {\n return false;\n }\n verticalDirection = this.dragDirection.vertical;\n horizontalDirection = this.dragDirection.horizontal;\n return this.floating ? horizontalDirection === \"right\" || verticalDirection === \"down\" ? 2 : 1 : verticalDirection && (verticalDirection === \"down\" ? 2 : 1);\n },\n _intersectsWithSides: function (item) {\n var isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + item.height / 2, item.height),\n isOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + item.width / 2, item.width),\n verticalDirection = this.dragDirection.vertical,\n horizontalDirection = this.dragDirection.horizontal;\n if (this.floating && horizontalDirection) {\n return horizontalDirection === \"right\" && isOverRightHalf || horizontalDirection === \"left\" && !isOverRightHalf;\n } else {\n return verticalDirection && (verticalDirection === \"down\" && isOverBottomHalf || verticalDirection === \"up\" && !isOverBottomHalf);\n }\n },\n _getDragVerticalDirection: function () {\n var delta = this.positionAbs.top - this.lastPositionAbs.top;\n return delta !== 0 && (delta > 0 ? \"down\" : \"up\");\n },\n _getDragHorizontalDirection: function () {\n var delta = this.positionAbs.left - this.lastPositionAbs.left;\n return delta !== 0 && (delta > 0 ? \"right\" : \"left\");\n },\n refresh: function (event) {\n this._refreshItems(event);\n this._setHandleClassName();\n this.refreshPositions();\n return this;\n },\n _connectWith: function () {\n var options = this.options;\n return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith;\n },\n _getItemsAsjQuery: function (connected) {\n var i,\n j,\n cur,\n inst,\n items = [],\n queries = [],\n connectWith = this._connectWith();\n if (connectWith && connected) {\n for (i = connectWith.length - 1; i >= 0; i--) {\n cur = $(connectWith[i], this.document[0]);\n for (j = cur.length - 1; j >= 0; j--) {\n inst = $.data(cur[j], this.widgetFullName);\n if (inst && inst !== this && !inst.options.disabled) {\n queries.push([typeof inst.options.items === \"function\" ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), inst]);\n }\n }\n }\n }\n queries.push([typeof this.options.items === \"function\" ? this.options.items.call(this.element, null, {\n options: this.options,\n item: this.currentItem\n }) : $(this.options.items, this.element).not(\".ui-sortable-helper\").not(\".ui-sortable-placeholder\"), this]);\n function addItems() {\n items.push(this);\n }\n for (i = queries.length - 1; i >= 0; i--) {\n queries[i][0].each(addItems);\n }\n return $(items);\n },\n _removeCurrentsFromItems: function () {\n var list = this.currentItem.find(\":data(\" + this.widgetName + \"-item)\");\n this.items = $.grep(this.items, function (item) {\n for (var j = 0; j < list.length; j++) {\n if (list[j] === item.item[0]) {\n return false;\n }\n }\n return true;\n });\n },\n _refreshItems: function (event) {\n this.items = [];\n this.containers = [this];\n var i,\n j,\n cur,\n inst,\n targetData,\n _queries,\n item,\n queriesLength,\n items = this.items,\n queries = [[typeof this.options.items === \"function\" ? this.options.items.call(this.element[0], event, {\n item: this.currentItem\n }) : $(this.options.items, this.element), this]],\n connectWith = this._connectWith();\n\n //Shouldn't be run the first time through due to massive slow-down\n if (connectWith && this.ready) {\n for (i = connectWith.length - 1; i >= 0; i--) {\n cur = $(connectWith[i], this.document[0]);\n for (j = cur.length - 1; j >= 0; j--) {\n inst = $.data(cur[j], this.widgetFullName);\n if (inst && inst !== this && !inst.options.disabled) {\n queries.push([typeof inst.options.items === \"function\" ? inst.options.items.call(inst.element[0], event, {\n item: this.currentItem\n }) : $(inst.options.items, inst.element), inst]);\n this.containers.push(inst);\n }\n }\n }\n }\n for (i = queries.length - 1; i >= 0; i--) {\n targetData = queries[i][1];\n _queries = queries[i][0];\n for (j = 0, queriesLength = _queries.length; j < queriesLength; j++) {\n item = $(_queries[j]);\n\n // Data for target checking (mouse manager)\n item.data(this.widgetName + \"-item\", targetData);\n items.push({\n item: item,\n instance: targetData,\n width: 0,\n height: 0,\n left: 0,\n top: 0\n });\n }\n }\n },\n _refreshItemPositions: function (fast) {\n var i, item, t, p;\n for (i = this.items.length - 1; i >= 0; i--) {\n item = this.items[i];\n\n //We ignore calculating positions of all connected containers when we're not over them\n if (this.currentContainer && item.instance !== this.currentContainer && item.item[0] !== this.currentItem[0]) {\n continue;\n }\n t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item;\n if (!fast) {\n item.width = t.outerWidth();\n item.height = t.outerHeight();\n }\n p = t.offset();\n item.left = p.left;\n item.top = p.top;\n }\n },\n refreshPositions: function (fast) {\n // Determine whether items are being displayed horizontally\n this.floating = this.items.length ? this.options.axis === \"x\" || this._isFloating(this.items[0].item) : false;\n\n // This has to be redone because due to the item being moved out/into the offsetParent,\n // the offsetParent's position will change\n if (this.offsetParent && this.helper) {\n this.offset.parent = this._getParentOffset();\n }\n this._refreshItemPositions(fast);\n var i, p;\n if (this.options.custom && this.options.custom.refreshContainers) {\n this.options.custom.refreshContainers.call(this);\n } else {\n for (i = this.containers.length - 1; i >= 0; i--) {\n p = this.containers[i].element.offset();\n this.containers[i].containerCache.left = p.left;\n this.containers[i].containerCache.top = p.top;\n this.containers[i].containerCache.width = this.containers[i].element.outerWidth();\n this.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n }\n }\n return this;\n },\n _createPlaceholder: function (that) {\n that = that || this;\n var className,\n nodeName,\n o = that.options;\n if (!o.placeholder || o.placeholder.constructor === String) {\n className = o.placeholder;\n nodeName = that.currentItem[0].nodeName.toLowerCase();\n o.placeholder = {\n element: function () {\n var element = $(\"<\" + nodeName + \">\", that.document[0]);\n that._addClass(element, \"ui-sortable-placeholder\", className || that.currentItem[0].className)._removeClass(element, \"ui-sortable-helper\");\n if (nodeName === \"tbody\") {\n that._createTrPlaceholder(that.currentItem.find(\"tr\").eq(0), $(\"<tr>\", that.document[0]).appendTo(element));\n } else if (nodeName === \"tr\") {\n that._createTrPlaceholder(that.currentItem, element);\n } else if (nodeName === \"img\") {\n element.attr(\"src\", that.currentItem.attr(\"src\"));\n }\n if (!className) {\n element.css(\"visibility\", \"hidden\");\n }\n return element;\n },\n update: function (container, p) {\n // 1. If a className is set as 'placeholder option, we don't force sizes -\n // the class is responsible for that\n // 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n // class name is specified\n if (className && !o.forcePlaceholderSize) {\n return;\n }\n\n // If the element doesn't have a actual height or width by itself (without\n // styles coming from a stylesheet), it receives the inline height and width\n // from the dragged item. Or, if it's a tbody or tr, it's going to have a height\n // anyway since we're populating them with <td>s above, but they're unlikely to\n // be the correct height on their own if the row heights are dynamic, so we'll\n // always assign the height of the dragged item given forcePlaceholderSize\n // is true.\n if (!p.height() || o.forcePlaceholderSize && (nodeName === \"tbody\" || nodeName === \"tr\")) {\n p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css(\"paddingTop\") || 0, 10) - parseInt(that.currentItem.css(\"paddingBottom\") || 0, 10));\n }\n if (!p.width()) {\n p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css(\"paddingLeft\") || 0, 10) - parseInt(that.currentItem.css(\"paddingRight\") || 0, 10));\n }\n }\n };\n }\n\n //Create the placeholder\n that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem));\n\n //Append it after the actual current item\n that.currentItem.after(that.placeholder);\n\n //Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n o.placeholder.update(that, that.placeholder);\n },\n _createTrPlaceholder: function (sourceTr, targetTr) {\n var that = this;\n sourceTr.children().each(function () {\n $(\"<td> </td>\", that.document[0]).attr(\"colspan\", $(this).attr(\"colspan\") || 1).appendTo(targetTr);\n });\n },\n _contactContainers: function (event) {\n var i,\n j,\n dist,\n itemWithLeastDistance,\n posProperty,\n sizeProperty,\n cur,\n nearBottom,\n floating,\n axis,\n innermostContainer = null,\n innermostIndex = null;\n\n // Get innermost container that intersects with item\n for (i = this.containers.length - 1; i >= 0; i--) {\n // Never consider a container that's located within the item itself\n if ($.contains(this.currentItem[0], this.containers[i].element[0])) {\n continue;\n }\n if (this._intersectsWith(this.containers[i].containerCache)) {\n // If we've already found a container and it's more \"inner\" than this, then continue\n if (innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) {\n continue;\n }\n innermostContainer = this.containers[i];\n innermostIndex = i;\n } else {\n // container doesn't intersect. trigger \"out\" event if necessary\n if (this.containers[i].containerCache.over) {\n this.containers[i]._trigger(\"out\", event, this._uiHash(this));\n this.containers[i].containerCache.over = 0;\n }\n }\n }\n\n // If no intersecting containers found, return\n if (!innermostContainer) {\n return;\n }\n\n // Move the item into the container if it's not there already\n if (this.containers.length === 1) {\n if (!this.containers[innermostIndex].containerCache.over) {\n this.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n this.containers[innermostIndex].containerCache.over = 1;\n }\n } else {\n // When entering a new container, we will find the item with the least distance and\n // append our item near it\n dist = 10000;\n itemWithLeastDistance = null;\n floating = innermostContainer.floating || this._isFloating(this.currentItem);\n posProperty = floating ? \"left\" : \"top\";\n sizeProperty = floating ? \"width\" : \"height\";\n axis = floating ? \"pageX\" : \"pageY\";\n for (j = this.items.length - 1; j >= 0; j--) {\n if (!$.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) {\n continue;\n }\n if (this.items[j].item[0] === this.currentItem[0]) {\n continue;\n }\n cur = this.items[j].item.offset()[posProperty];\n nearBottom = false;\n if (event[axis] - cur > this.items[j][sizeProperty] / 2) {\n nearBottom = true;\n }\n if (Math.abs(event[axis] - cur) < dist) {\n dist = Math.abs(event[axis] - cur);\n itemWithLeastDistance = this.items[j];\n this.direction = nearBottom ? \"up\" : \"down\";\n }\n }\n\n //Check if dropOnEmpty is enabled\n if (!itemWithLeastDistance && !this.options.dropOnEmpty) {\n return;\n }\n if (this.currentContainer === this.containers[innermostIndex]) {\n if (!this.currentContainer.containerCache.over) {\n this.containers[innermostIndex]._trigger(\"over\", event, this._uiHash());\n this.currentContainer.containerCache.over = 1;\n }\n return;\n }\n if (itemWithLeastDistance) {\n this._rearrange(event, itemWithLeastDistance, null, true);\n } else {\n this._rearrange(event, null, this.containers[innermostIndex].element, true);\n }\n this._trigger(\"change\", event, this._uiHash());\n this.containers[innermostIndex]._trigger(\"change\", event, this._uiHash(this));\n this.currentContainer = this.containers[innermostIndex];\n\n //Update the placeholder\n this.options.placeholder.update(this.currentContainer, this.placeholder);\n\n //Update scrollParent\n this.scrollParent = this.placeholder.scrollParent();\n\n //Update overflowOffset\n if (this.scrollParent[0] !== this.document[0] && this.scrollParent[0].tagName !== \"HTML\") {\n this.overflowOffset = this.scrollParent.offset();\n }\n this.containers[innermostIndex]._trigger(\"over\", event, this._uiHash(this));\n this.containers[innermostIndex].containerCache.over = 1;\n }\n },\n _createHelper: function (event) {\n var o = this.options,\n helper = typeof o.helper === \"function\" ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem;\n\n //Add the helper to the DOM if that didn't happen already\n if (!helper.parents(\"body\").length) {\n this.appendTo[0].appendChild(helper[0]);\n }\n if (helper[0] === this.currentItem[0]) {\n this._storedCSS = {\n width: this.currentItem[0].style.width,\n height: this.currentItem[0].style.height,\n position: this.currentItem.css(\"position\"),\n top: this.currentItem.css(\"top\"),\n left: this.currentItem.css(\"left\")\n };\n }\n if (!helper[0].style.width || o.forceHelperSize) {\n helper.width(this.currentItem.width());\n }\n if (!helper[0].style.height || o.forceHelperSize) {\n helper.height(this.currentItem.height());\n }\n return helper;\n },\n _adjustOffsetFromHelper: function (obj) {\n if (typeof obj === \"string\") {\n obj = obj.split(\" \");\n }\n if (Array.isArray(obj)) {\n obj = {\n left: +obj[0],\n top: +obj[1] || 0\n };\n }\n if (\"left\" in obj) {\n this.offset.click.left = obj.left + this.margins.left;\n }\n if (\"right\" in obj) {\n this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n }\n if (\"top\" in obj) {\n this.offset.click.top = obj.top + this.margins.top;\n }\n if (\"bottom\" in obj) {\n this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n }\n },\n _getParentOffset: function () {\n //Get the offsetParent and cache its position\n this.offsetParent = this.helper.offsetParent();\n var po = this.offsetParent.offset();\n\n // This is a special case where we need to modify a offset calculated on start, since the\n // following happened:\n // 1. The position of the helper is absolute, so it's position is calculated based on the\n // next positioned parent\n // 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n // the document, which means that the scroll is included in the initial calculation of the\n // offset of the parent, and never recalculated upon drag\n if (this.cssPosition === \"absolute\" && this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) {\n po.left += this.scrollParent.scrollLeft();\n po.top += this.scrollParent.scrollTop();\n }\n\n // This needs to be actually done for all browsers, since pageX/pageY includes this\n // information with an ugly IE fix\n if (this.offsetParent[0] === this.document[0].body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === \"html\" && $.ui.ie) {\n po = {\n top: 0,\n left: 0\n };\n }\n return {\n top: po.top + (parseInt(this.offsetParent.css(\"borderTopWidth\"), 10) || 0),\n left: po.left + (parseInt(this.offsetParent.css(\"borderLeftWidth\"), 10) || 0)\n };\n },\n _getRelativeOffset: function () {\n if (this.cssPosition === \"relative\") {\n var p = this.currentItem.position();\n return {\n top: p.top - (parseInt(this.helper.css(\"top\"), 10) || 0) + this.scrollParent.scrollTop(),\n left: p.left - (parseInt(this.helper.css(\"left\"), 10) || 0) + this.scrollParent.scrollLeft()\n };\n } else {\n return {\n top: 0,\n left: 0\n };\n }\n },\n _cacheMargins: function () {\n this.margins = {\n left: parseInt(this.currentItem.css(\"marginLeft\"), 10) || 0,\n top: parseInt(this.currentItem.css(\"marginTop\"), 10) || 0\n };\n },\n _cacheHelperProportions: function () {\n this.helperProportions = {\n width: this.helper.outerWidth(),\n height: this.helper.outerHeight()\n };\n },\n _setContainment: function () {\n var ce,\n co,\n over,\n o = this.options;\n if (o.containment === \"parent\") {\n o.containment = this.helper[0].parentNode;\n }\n if (o.containment === \"document\" || o.containment === \"window\") {\n this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, o.containment === \"document\" ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, (o.containment === \"document\" ? this.document.height() || document.body.parentNode.scrollHeight : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];\n }\n if (!/^(document|window|parent)$/.test(o.containment)) {\n ce = $(o.containment)[0];\n co = $(o.containment).offset();\n over = $(ce).css(\"overflow\") !== \"hidden\";\n this.containment = [co.left + (parseInt($(ce).css(\"borderLeftWidth\"), 10) || 0) + (parseInt($(ce).css(\"paddingLeft\"), 10) || 0) - this.margins.left, co.top + (parseInt($(ce).css(\"borderTopWidth\"), 10) || 0) + (parseInt($(ce).css(\"paddingTop\"), 10) || 0) - this.margins.top, co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css(\"borderLeftWidth\"), 10) || 0) - (parseInt($(ce).css(\"paddingRight\"), 10) || 0) - this.helperProportions.width - this.margins.left, co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css(\"borderTopWidth\"), 10) || 0) - (parseInt($(ce).css(\"paddingBottom\"), 10) || 0) - this.helperProportions.height - this.margins.top];\n }\n },\n _convertPositionTo: function (d, pos) {\n if (!pos) {\n pos = this.position;\n }\n var mod = d === \"absolute\" ? 1 : -1,\n scroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n scrollIsRootNode = /(html|body)/i.test(scroll[0].tagName);\n return {\n top:\n // The absolute mouse position\n pos.top +\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.top * mod +\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.top * mod - (this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : scrollIsRootNode ? 0 : scroll.scrollTop()) * mod,\n left:\n // The absolute mouse position\n pos.left +\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.left * mod +\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.left * mod - (this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod\n };\n },\n _generatePosition: function (event) {\n var top,\n left,\n o = this.options,\n pageX = event.pageX,\n pageY = event.pageY,\n scroll = this.cssPosition === \"absolute\" && !(this.scrollParent[0] !== this.document[0] && $.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent,\n scrollIsRootNode = /(html|body)/i.test(scroll[0].tagName);\n\n // This is another very weird special case that only happens for relative elements:\n // 1. If the css position is relative\n // 2. and the scroll parent is the document or similar to the offset parent\n // we have to refresh the relative offset during the scroll so there are no jumps\n if (this.cssPosition === \"relative\" && !(this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0])) {\n this.offset.relative = this._getRelativeOffset();\n }\n\n /*\n * - Position constraining -\n * Constrain the position to a mix of grid, containment.\n */\n\n if (this.originalPosition) {\n //If we are not dragging yet, we won't check for options\n\n if (this.containment) {\n if (event.pageX - this.offset.click.left < this.containment[0]) {\n pageX = this.containment[0] + this.offset.click.left;\n }\n if (event.pageY - this.offset.click.top < this.containment[1]) {\n pageY = this.containment[1] + this.offset.click.top;\n }\n if (event.pageX - this.offset.click.left > this.containment[2]) {\n pageX = this.containment[2] + this.offset.click.left;\n }\n if (event.pageY - this.offset.click.top > this.containment[3]) {\n pageY = this.containment[3] + this.offset.click.top;\n }\n }\n if (o.grid) {\n top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];\n pageY = this.containment ? top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3] ? top : top - this.offset.click.top >= this.containment[1] ? top - o.grid[1] : top + o.grid[1] : top;\n left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];\n pageX = this.containment ? left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2] ? left : left - this.offset.click.left >= this.containment[0] ? left - o.grid[0] : left + o.grid[0] : left;\n }\n }\n return {\n top:\n // The absolute mouse position\n pageY -\n // Click offset (relative to the element)\n this.offset.click.top -\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.top -\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.top + (this.cssPosition === \"fixed\" ? -this.scrollParent.scrollTop() : scrollIsRootNode ? 0 : scroll.scrollTop()),\n left:\n // The absolute mouse position\n pageX -\n // Click offset (relative to the element)\n this.offset.click.left -\n // Only for relative positioned nodes: Relative offset from element to offset parent\n this.offset.relative.left -\n // The offsetParent's offset without borders (offset + border)\n this.offset.parent.left + (this.cssPosition === \"fixed\" ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft())\n };\n },\n _rearrange: function (event, i, a, hardRefresh) {\n if (a) {\n a[0].appendChild(this.placeholder[0]);\n } else {\n i.item[0].parentNode.insertBefore(this.placeholder[0], this.direction === \"down\" ? i.item[0] : i.item[0].nextSibling);\n }\n\n //Various things done here to improve the performance:\n // 1. we create a setTimeout, that calls refreshPositions\n // 2. on the instance, we have a counter variable, that get's higher after every append\n // 3. on the local scope, we copy the counter variable, and check in the timeout,\n // if it's still the same\n // 4. this lets only the last addition to the timeout stack through\n this.counter = this.counter ? ++this.counter : 1;\n var counter = this.counter;\n this._delay(function () {\n if (counter === this.counter) {\n //Precompute after each DOM insertion, NOT on mousemove\n this.refreshPositions(!hardRefresh);\n }\n });\n },\n _clear: function (event, noPropagation) {\n this.reverting = false;\n\n // We delay all events that have to be triggered to after the point where the placeholder\n // has been removed and everything else normalized again\n var i,\n delayedTriggers = [];\n\n // We first have to update the dom position of the actual currentItem\n // Note: don't do it if the current item is already removed (by a user), or it gets\n // reappended (see #4088)\n if (!this._noFinalSort && this.currentItem.parent().length) {\n this.placeholder.before(this.currentItem);\n }\n this._noFinalSort = null;\n if (this.helper[0] === this.currentItem[0]) {\n for (i in this._storedCSS) {\n if (this._storedCSS[i] === \"auto\" || this._storedCSS[i] === \"static\") {\n this._storedCSS[i] = \"\";\n }\n }\n this.currentItem.css(this._storedCSS);\n this._removeClass(this.currentItem, \"ui-sortable-helper\");\n } else {\n this.currentItem.show();\n }\n if (this.fromOutside && !noPropagation) {\n delayedTriggers.push(function (event) {\n this._trigger(\"receive\", event, this._uiHash(this.fromOutside));\n });\n }\n if ((this.fromOutside || this.domPosition.prev !== this.currentItem.prev().not(\".ui-sortable-helper\")[0] || this.domPosition.parent !== this.currentItem.parent()[0]) && !noPropagation) {\n // Trigger update callback if the DOM position has changed\n delayedTriggers.push(function (event) {\n this._trigger(\"update\", event, this._uiHash());\n });\n }\n\n // Check if the items Container has Changed and trigger appropriate\n // events.\n if (this !== this.currentContainer) {\n if (!noPropagation) {\n delayedTriggers.push(function (event) {\n this._trigger(\"remove\", event, this._uiHash());\n });\n delayedTriggers.push(function (c) {\n return function (event) {\n c._trigger(\"receive\", event, this._uiHash(this));\n };\n }.call(this, this.currentContainer));\n delayedTriggers.push(function (c) {\n return function (event) {\n c._trigger(\"update\", event, this._uiHash(this));\n };\n }.call(this, this.currentContainer));\n }\n }\n\n //Post events to containers\n function delayEvent(type, instance, container) {\n return function (event) {\n container._trigger(type, event, instance._uiHash(instance));\n };\n }\n for (i = this.containers.length - 1; i >= 0; i--) {\n if (!noPropagation) {\n delayedTriggers.push(delayEvent(\"deactivate\", this, this.containers[i]));\n }\n if (this.containers[i].containerCache.over) {\n delayedTriggers.push(delayEvent(\"out\", this, this.containers[i]));\n this.containers[i].containerCache.over = 0;\n }\n }\n\n //Do what was originally in plugins\n if (this.storedCursor) {\n this.document.find(\"body\").css(\"cursor\", this.storedCursor);\n this.storedStylesheet.remove();\n }\n if (this._storedOpacity) {\n this.helper.css(\"opacity\", this._storedOpacity);\n }\n if (this._storedZIndex) {\n this.helper.css(\"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex);\n }\n this.dragging = false;\n if (!noPropagation) {\n this._trigger(\"beforeStop\", event, this._uiHash());\n }\n\n //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n // it unbinds ALL events from the original node!\n this.placeholder[0].parentNode.removeChild(this.placeholder[0]);\n if (!this.cancelHelperRemoval) {\n if (this.helper[0] !== this.currentItem[0]) {\n this.helper.remove();\n }\n this.helper = null;\n }\n if (!noPropagation) {\n for (i = 0; i < delayedTriggers.length; i++) {\n // Trigger all delayed events\n delayedTriggers[i].call(this, event);\n }\n this._trigger(\"stop\", event, this._uiHash());\n }\n this.fromOutside = false;\n return !this.cancelHelperRemoval;\n },\n _trigger: function () {\n if ($.Widget.prototype._trigger.apply(this, arguments) === false) {\n this.cancel();\n }\n },\n _uiHash: function (_inst) {\n var inst = _inst || this;\n return {\n helper: inst.helper,\n placeholder: inst.placeholder || $([]),\n position: inst.position,\n originalPosition: inst.originalPosition,\n offset: inst.positionAbs,\n item: inst.currentItem,\n sender: _inst ? _inst.element : null\n };\n }\n });\n\n /*!\n * jQuery UI Spinner 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Spinner\n //>>group: Widgets\n //>>description: Displays buttons to easily input numbers via the keyboard or mouse.\n //>>docs: http://api.jqueryui.com/spinner/\n //>>demos: http://jqueryui.com/spinner/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/spinner.css\n //>>css.theme: ../../themes/base/theme.css\n\n function spinnerModifier(fn) {\n return function () {\n var previous = this.element.val();\n fn.apply(this, arguments);\n this._refresh();\n if (previous !== this.element.val()) {\n this._trigger(\"change\");\n }\n };\n }\n $.widget(\"ui.spinner\", {\n version: \"1.13.2\",\n defaultElement: \"<input>\",\n widgetEventPrefix: \"spin\",\n options: {\n classes: {\n \"ui-spinner\": \"ui-corner-all\",\n \"ui-spinner-down\": \"ui-corner-br\",\n \"ui-spinner-up\": \"ui-corner-tr\"\n },\n culture: null,\n icons: {\n down: \"ui-icon-triangle-1-s\",\n up: \"ui-icon-triangle-1-n\"\n },\n incremental: true,\n max: null,\n min: null,\n numberFormat: null,\n page: 10,\n step: 1,\n change: null,\n spin: null,\n start: null,\n stop: null\n },\n _create: function () {\n // handle string values that need to be parsed\n this._setOption(\"max\", this.options.max);\n this._setOption(\"min\", this.options.min);\n this._setOption(\"step\", this.options.step);\n\n // Only format if there is a value, prevents the field from being marked\n // as invalid in Firefox, see #9573.\n if (this.value() !== \"\") {\n // Format the value, but don't constrain.\n this._value(this.element.val(), true);\n }\n this._draw();\n this._on(this._events);\n this._refresh();\n\n // Turning off autocomplete prevents the browser from remembering the\n // value when navigating through history, so we re-enable autocomplete\n // if the page is unloaded before the widget is destroyed. #7790\n this._on(this.window, {\n beforeunload: function () {\n this.element.removeAttr(\"autocomplete\");\n }\n });\n },\n _getCreateOptions: function () {\n var options = this._super();\n var element = this.element;\n $.each([\"min\", \"max\", \"step\"], function (i, option) {\n var value = element.attr(option);\n if (value != null && value.length) {\n options[option] = value;\n }\n });\n return options;\n },\n _events: {\n keydown: function (event) {\n if (this._start(event) && this._keydown(event)) {\n event.preventDefault();\n }\n },\n keyup: \"_stop\",\n focus: function () {\n this.previous = this.element.val();\n },\n blur: function (event) {\n if (this.cancelBlur) {\n delete this.cancelBlur;\n return;\n }\n this._stop();\n this._refresh();\n if (this.previous !== this.element.val()) {\n this._trigger(\"change\", event);\n }\n },\n mousewheel: function (event, delta) {\n var activeElement = $.ui.safeActiveElement(this.document[0]);\n var isActive = this.element[0] === activeElement;\n if (!isActive || !delta) {\n return;\n }\n if (!this.spinning && !this._start(event)) {\n return false;\n }\n this._spin((delta > 0 ? 1 : -1) * this.options.step, event);\n clearTimeout(this.mousewheelTimer);\n this.mousewheelTimer = this._delay(function () {\n if (this.spinning) {\n this._stop(event);\n }\n }, 100);\n event.preventDefault();\n },\n \"mousedown .ui-spinner-button\": function (event) {\n var previous;\n\n // We never want the buttons to have focus; whenever the user is\n // interacting with the spinner, the focus should be on the input.\n // If the input is focused then this.previous is properly set from\n // when the input first received focus. If the input is not focused\n // then we need to set this.previous based on the value before spinning.\n previous = this.element[0] === $.ui.safeActiveElement(this.document[0]) ? this.previous : this.element.val();\n function checkFocus() {\n var isActive = this.element[0] === $.ui.safeActiveElement(this.document[0]);\n if (!isActive) {\n this.element.trigger(\"focus\");\n this.previous = previous;\n\n // support: IE\n // IE sets focus asynchronously, so we need to check if focus\n // moved off of the input because the user clicked on the button.\n this._delay(function () {\n this.previous = previous;\n });\n }\n }\n\n // Ensure focus is on (or stays on) the text field\n event.preventDefault();\n checkFocus.call(this);\n\n // Support: IE\n // IE doesn't prevent moving focus even with event.preventDefault()\n // so we set a flag to know when we should ignore the blur event\n // and check (again) if focus moved off of the input.\n this.cancelBlur = true;\n this._delay(function () {\n delete this.cancelBlur;\n checkFocus.call(this);\n });\n if (this._start(event) === false) {\n return;\n }\n this._repeat(null, $(event.currentTarget).hasClass(\"ui-spinner-up\") ? 1 : -1, event);\n },\n \"mouseup .ui-spinner-button\": \"_stop\",\n \"mouseenter .ui-spinner-button\": function (event) {\n // button will add ui-state-active if mouse was down while mouseleave and kept down\n if (!$(event.currentTarget).hasClass(\"ui-state-active\")) {\n return;\n }\n if (this._start(event) === false) {\n return false;\n }\n this._repeat(null, $(event.currentTarget).hasClass(\"ui-spinner-up\") ? 1 : -1, event);\n },\n // TODO: do we really want to consider this a stop?\n // shouldn't we just stop the repeater and wait until mouseup before\n // we trigger the stop event?\n \"mouseleave .ui-spinner-button\": \"_stop\"\n },\n // Support mobile enhanced option and make backcompat more sane\n _enhance: function () {\n this.uiSpinner = this.element.attr(\"autocomplete\", \"off\").wrap(\"<span>\").parent()\n\n // Add buttons\n .append(\"<a></a><a></a>\");\n },\n _draw: function () {\n this._enhance();\n this._addClass(this.uiSpinner, \"ui-spinner\", \"ui-widget ui-widget-content\");\n this._addClass(\"ui-spinner-input\");\n this.element.attr(\"role\", \"spinbutton\");\n\n // Button bindings\n this.buttons = this.uiSpinner.children(\"a\").attr(\"tabIndex\", -1).attr(\"aria-hidden\", true).button({\n classes: {\n \"ui-button\": \"\"\n }\n });\n\n // TODO: Right now button does not support classes this is already updated in button PR\n this._removeClass(this.buttons, \"ui-corner-all\");\n this._addClass(this.buttons.first(), \"ui-spinner-button ui-spinner-up\");\n this._addClass(this.buttons.last(), \"ui-spinner-button ui-spinner-down\");\n this.buttons.first().button({\n \"icon\": this.options.icons.up,\n \"showLabel\": false\n });\n this.buttons.last().button({\n \"icon\": this.options.icons.down,\n \"showLabel\": false\n });\n\n // IE 6 doesn't understand height: 50% for the buttons\n // unless the wrapper has an explicit height\n if (this.buttons.height() > Math.ceil(this.uiSpinner.height() * 0.5) && this.uiSpinner.height() > 0) {\n this.uiSpinner.height(this.uiSpinner.height());\n }\n },\n _keydown: function (event) {\n var options = this.options,\n keyCode = $.ui.keyCode;\n switch (event.keyCode) {\n case keyCode.UP:\n this._repeat(null, 1, event);\n return true;\n case keyCode.DOWN:\n this._repeat(null, -1, event);\n return true;\n case keyCode.PAGE_UP:\n this._repeat(null, options.page, event);\n return true;\n case keyCode.PAGE_DOWN:\n this._repeat(null, -options.page, event);\n return true;\n }\n return false;\n },\n _start: function (event) {\n if (!this.spinning && this._trigger(\"start\", event) === false) {\n return false;\n }\n if (!this.counter) {\n this.counter = 1;\n }\n this.spinning = true;\n return true;\n },\n _repeat: function (i, steps, event) {\n i = i || 500;\n clearTimeout(this.timer);\n this.timer = this._delay(function () {\n this._repeat(40, steps, event);\n }, i);\n this._spin(steps * this.options.step, event);\n },\n _spin: function (step, event) {\n var value = this.value() || 0;\n if (!this.counter) {\n this.counter = 1;\n }\n value = this._adjustValue(value + step * this._increment(this.counter));\n if (!this.spinning || this._trigger(\"spin\", event, {\n value: value\n }) !== false) {\n this._value(value);\n this.counter++;\n }\n },\n _increment: function (i) {\n var incremental = this.options.incremental;\n if (incremental) {\n return typeof incremental === \"function\" ? incremental(i) : Math.floor(i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1);\n }\n return 1;\n },\n _precision: function () {\n var precision = this._precisionOf(this.options.step);\n if (this.options.min !== null) {\n precision = Math.max(precision, this._precisionOf(this.options.min));\n }\n return precision;\n },\n _precisionOf: function (num) {\n var str = num.toString(),\n decimal = str.indexOf(\".\");\n return decimal === -1 ? 0 : str.length - decimal - 1;\n },\n _adjustValue: function (value) {\n var base,\n aboveMin,\n options = this.options;\n\n // Make sure we're at a valid step\n // - find out where we are relative to the base (min or 0)\n base = options.min !== null ? options.min : 0;\n aboveMin = value - base;\n\n // - round to the nearest step\n aboveMin = Math.round(aboveMin / options.step) * options.step;\n\n // - rounding is based on 0, so adjust back to our base\n value = base + aboveMin;\n\n // Fix precision from bad JS floating point math\n value = parseFloat(value.toFixed(this._precision()));\n\n // Clamp the value\n if (options.max !== null && value > options.max) {\n return options.max;\n }\n if (options.min !== null && value < options.min) {\n return options.min;\n }\n return value;\n },\n _stop: function (event) {\n if (!this.spinning) {\n return;\n }\n clearTimeout(this.timer);\n clearTimeout(this.mousewheelTimer);\n this.counter = 0;\n this.spinning = false;\n this._trigger(\"stop\", event);\n },\n _setOption: function (key, value) {\n var prevValue, first, last;\n if (key === \"culture\" || key === \"numberFormat\") {\n prevValue = this._parse(this.element.val());\n this.options[key] = value;\n this.element.val(this._format(prevValue));\n return;\n }\n if (key === \"max\" || key === \"min\" || key === \"step\") {\n if (typeof value === \"string\") {\n value = this._parse(value);\n }\n }\n if (key === \"icons\") {\n first = this.buttons.first().find(\".ui-icon\");\n this._removeClass(first, null, this.options.icons.up);\n this._addClass(first, null, value.up);\n last = this.buttons.last().find(\".ui-icon\");\n this._removeClass(last, null, this.options.icons.down);\n this._addClass(last, null, value.down);\n }\n this._super(key, value);\n },\n _setOptionDisabled: function (value) {\n this._super(value);\n this._toggleClass(this.uiSpinner, null, \"ui-state-disabled\", !!value);\n this.element.prop(\"disabled\", !!value);\n this.buttons.button(value ? \"disable\" : \"enable\");\n },\n _setOptions: spinnerModifier(function (options) {\n this._super(options);\n }),\n _parse: function (val) {\n if (typeof val === \"string\" && val !== \"\") {\n val = window.Globalize && this.options.numberFormat ? Globalize.parseFloat(val, 10, this.options.culture) : +val;\n }\n return val === \"\" || isNaN(val) ? null : val;\n },\n _format: function (value) {\n if (value === \"\") {\n return \"\";\n }\n return window.Globalize && this.options.numberFormat ? Globalize.format(value, this.options.numberFormat, this.options.culture) : value;\n },\n _refresh: function () {\n this.element.attr({\n \"aria-valuemin\": this.options.min,\n \"aria-valuemax\": this.options.max,\n // TODO: what should we do with values that can't be parsed?\n \"aria-valuenow\": this._parse(this.element.val())\n });\n },\n isValid: function () {\n var value = this.value();\n\n // Null is invalid\n if (value === null) {\n return false;\n }\n\n // If value gets adjusted, it's invalid\n return value === this._adjustValue(value);\n },\n // Update the value without triggering change\n _value: function (value, allowAny) {\n var parsed;\n if (value !== \"\") {\n parsed = this._parse(value);\n if (parsed !== null) {\n if (!allowAny) {\n parsed = this._adjustValue(parsed);\n }\n value = this._format(parsed);\n }\n }\n this.element.val(value);\n this._refresh();\n },\n _destroy: function () {\n this.element.prop(\"disabled\", false).removeAttr(\"autocomplete role aria-valuemin aria-valuemax aria-valuenow\");\n this.uiSpinner.replaceWith(this.element);\n },\n stepUp: spinnerModifier(function (steps) {\n this._stepUp(steps);\n }),\n _stepUp: function (steps) {\n if (this._start()) {\n this._spin((steps || 1) * this.options.step);\n this._stop();\n }\n },\n stepDown: spinnerModifier(function (steps) {\n this._stepDown(steps);\n }),\n _stepDown: function (steps) {\n if (this._start()) {\n this._spin((steps || 1) * -this.options.step);\n this._stop();\n }\n },\n pageUp: spinnerModifier(function (pages) {\n this._stepUp((pages || 1) * this.options.page);\n }),\n pageDown: spinnerModifier(function (pages) {\n this._stepDown((pages || 1) * this.options.page);\n }),\n value: function (newVal) {\n if (!arguments.length) {\n return this._parse(this.element.val());\n }\n spinnerModifier(this._value).call(this, newVal);\n },\n widget: function () {\n return this.uiSpinner;\n }\n });\n\n // DEPRECATED\n // TODO: switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat !== false) {\n // Backcompat for spinner html extension points\n $.widget(\"ui.spinner\", $.ui.spinner, {\n _enhance: function () {\n this.uiSpinner = this.element.attr(\"autocomplete\", \"off\").wrap(this._uiSpinnerHtml()).parent()\n\n // Add buttons\n .append(this._buttonHtml());\n },\n _uiSpinnerHtml: function () {\n return \"<span>\";\n },\n _buttonHtml: function () {\n return \"<a></a><a></a>\";\n }\n });\n }\n var widgetsSpinner = $.ui.spinner;\n\n /*!\n * jQuery UI Tabs 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Tabs\n //>>group: Widgets\n //>>description: Transforms a set of container elements into a tab structure.\n //>>docs: http://api.jqueryui.com/tabs/\n //>>demos: http://jqueryui.com/tabs/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/tabs.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.tabs\", {\n version: \"1.13.2\",\n delay: 300,\n options: {\n active: null,\n classes: {\n \"ui-tabs\": \"ui-corner-all\",\n \"ui-tabs-nav\": \"ui-corner-all\",\n \"ui-tabs-panel\": \"ui-corner-bottom\",\n \"ui-tabs-tab\": \"ui-corner-top\"\n },\n collapsible: false,\n event: \"click\",\n heightStyle: \"content\",\n hide: null,\n show: null,\n // Callbacks\n activate: null,\n beforeActivate: null,\n beforeLoad: null,\n load: null\n },\n _isLocal: function () {\n var rhash = /#.*$/;\n return function (anchor) {\n var anchorUrl, locationUrl;\n anchorUrl = anchor.href.replace(rhash, \"\");\n locationUrl = location.href.replace(rhash, \"\");\n\n // Decoding may throw an error if the URL isn't UTF-8 (#9518)\n try {\n anchorUrl = decodeURIComponent(anchorUrl);\n } catch (error) {}\n try {\n locationUrl = decodeURIComponent(locationUrl);\n } catch (error) {}\n return anchor.hash.length > 1 && anchorUrl === locationUrl;\n };\n }(),\n _create: function () {\n var that = this,\n options = this.options;\n this.running = false;\n this._addClass(\"ui-tabs\", \"ui-widget ui-widget-content\");\n this._toggleClass(\"ui-tabs-collapsible\", null, options.collapsible);\n this._processTabs();\n options.active = this._initialActive();\n\n // Take disabling tabs via class attribute from HTML\n // into account and update option properly.\n if (Array.isArray(options.disabled)) {\n options.disabled = $.uniqueSort(options.disabled.concat($.map(this.tabs.filter(\".ui-state-disabled\"), function (li) {\n return that.tabs.index(li);\n }))).sort();\n }\n\n // Check for length avoids error when initializing empty list\n if (this.options.active !== false && this.anchors.length) {\n this.active = this._findActive(options.active);\n } else {\n this.active = $();\n }\n this._refresh();\n if (this.active.length) {\n this.load(options.active);\n }\n },\n _initialActive: function () {\n var active = this.options.active,\n collapsible = this.options.collapsible,\n locationHash = location.hash.substring(1);\n if (active === null) {\n // check the fragment identifier in the URL\n if (locationHash) {\n this.tabs.each(function (i, tab) {\n if ($(tab).attr(\"aria-controls\") === locationHash) {\n active = i;\n return false;\n }\n });\n }\n\n // Check for a tab marked active via a class\n if (active === null) {\n active = this.tabs.index(this.tabs.filter(\".ui-tabs-active\"));\n }\n\n // No active tab, set to false\n if (active === null || active === -1) {\n active = this.tabs.length ? 0 : false;\n }\n }\n\n // Handle numbers: negative, out of range\n if (active !== false) {\n active = this.tabs.index(this.tabs.eq(active));\n if (active === -1) {\n active = collapsible ? false : 0;\n }\n }\n\n // Don't allow collapsible: false and active: false\n if (!collapsible && active === false && this.anchors.length) {\n active = 0;\n }\n return active;\n },\n _getCreateEventData: function () {\n return {\n tab: this.active,\n panel: !this.active.length ? $() : this._getPanelForTab(this.active)\n };\n },\n _tabKeydown: function (event) {\n var focusedTab = $($.ui.safeActiveElement(this.document[0])).closest(\"li\"),\n selectedIndex = this.tabs.index(focusedTab),\n goingForward = true;\n if (this._handlePageNav(event)) {\n return;\n }\n switch (event.keyCode) {\n case $.ui.keyCode.RIGHT:\n case $.ui.keyCode.DOWN:\n selectedIndex++;\n break;\n case $.ui.keyCode.UP:\n case $.ui.keyCode.LEFT:\n goingForward = false;\n selectedIndex--;\n break;\n case $.ui.keyCode.END:\n selectedIndex = this.anchors.length - 1;\n break;\n case $.ui.keyCode.HOME:\n selectedIndex = 0;\n break;\n case $.ui.keyCode.SPACE:\n // Activate only, no collapsing\n event.preventDefault();\n clearTimeout(this.activating);\n this._activate(selectedIndex);\n return;\n case $.ui.keyCode.ENTER:\n // Toggle (cancel delayed activation, allow collapsing)\n event.preventDefault();\n clearTimeout(this.activating);\n\n // Determine if we should collapse or activate\n this._activate(selectedIndex === this.options.active ? false : selectedIndex);\n return;\n default:\n return;\n }\n\n // Focus the appropriate tab, based on which key was pressed\n event.preventDefault();\n clearTimeout(this.activating);\n selectedIndex = this._focusNextTab(selectedIndex, goingForward);\n\n // Navigating with control/command key will prevent automatic activation\n if (!event.ctrlKey && !event.metaKey) {\n // Update aria-selected immediately so that AT think the tab is already selected.\n // Otherwise AT may confuse the user by stating that they need to activate the tab,\n // but the tab will already be activated by the time the announcement finishes.\n focusedTab.attr(\"aria-selected\", \"false\");\n this.tabs.eq(selectedIndex).attr(\"aria-selected\", \"true\");\n this.activating = this._delay(function () {\n this.option(\"active\", selectedIndex);\n }, this.delay);\n }\n },\n _panelKeydown: function (event) {\n if (this._handlePageNav(event)) {\n return;\n }\n\n // Ctrl+up moves focus to the current tab\n if (event.ctrlKey && event.keyCode === $.ui.keyCode.UP) {\n event.preventDefault();\n this.active.trigger(\"focus\");\n }\n },\n // Alt+page up/down moves focus to the previous/next tab (and activates)\n _handlePageNav: function (event) {\n if (event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP) {\n this._activate(this._focusNextTab(this.options.active - 1, false));\n return true;\n }\n if (event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN) {\n this._activate(this._focusNextTab(this.options.active + 1, true));\n return true;\n }\n },\n _findNextTab: function (index, goingForward) {\n var lastTabIndex = this.tabs.length - 1;\n function constrain() {\n if (index > lastTabIndex) {\n index = 0;\n }\n if (index < 0) {\n index = lastTabIndex;\n }\n return index;\n }\n while ($.inArray(constrain(), this.options.disabled) !== -1) {\n index = goingForward ? index + 1 : index - 1;\n }\n return index;\n },\n _focusNextTab: function (index, goingForward) {\n index = this._findNextTab(index, goingForward);\n this.tabs.eq(index).trigger(\"focus\");\n return index;\n },\n _setOption: function (key, value) {\n if (key === \"active\") {\n // _activate() will handle invalid values and update this.options\n this._activate(value);\n return;\n }\n this._super(key, value);\n if (key === \"collapsible\") {\n this._toggleClass(\"ui-tabs-collapsible\", null, value);\n\n // Setting collapsible: false while collapsed; open first panel\n if (!value && this.options.active === false) {\n this._activate(0);\n }\n }\n if (key === \"event\") {\n this._setupEvents(value);\n }\n if (key === \"heightStyle\") {\n this._setupHeightStyle(value);\n }\n },\n _sanitizeSelector: function (hash) {\n return hash ? hash.replace(/[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\") : \"\";\n },\n refresh: function () {\n var options = this.options,\n lis = this.tablist.children(\":has(a[href])\");\n\n // Get disabled tabs from class attribute from HTML\n // this will get converted to a boolean if needed in _refresh()\n options.disabled = $.map(lis.filter(\".ui-state-disabled\"), function (tab) {\n return lis.index(tab);\n });\n this._processTabs();\n\n // Was collapsed or no tabs\n if (options.active === false || !this.anchors.length) {\n options.active = false;\n this.active = $();\n\n // was active, but active tab is gone\n } else if (this.active.length && !$.contains(this.tablist[0], this.active[0])) {\n // all remaining tabs are disabled\n if (this.tabs.length === options.disabled.length) {\n options.active = false;\n this.active = $();\n\n // activate previous tab\n } else {\n this._activate(this._findNextTab(Math.max(0, options.active - 1), false));\n }\n\n // was active, active tab still exists\n } else {\n // make sure active index is correct\n options.active = this.tabs.index(this.active);\n }\n this._refresh();\n },\n _refresh: function () {\n this._setOptionDisabled(this.options.disabled);\n this._setupEvents(this.options.event);\n this._setupHeightStyle(this.options.heightStyle);\n this.tabs.not(this.active).attr({\n \"aria-selected\": \"false\",\n \"aria-expanded\": \"false\",\n tabIndex: -1\n });\n this.panels.not(this._getPanelForTab(this.active)).hide().attr({\n \"aria-hidden\": \"true\"\n });\n\n // Make sure one tab is in the tab order\n if (!this.active.length) {\n this.tabs.eq(0).attr(\"tabIndex\", 0);\n } else {\n this.active.attr({\n \"aria-selected\": \"true\",\n \"aria-expanded\": \"true\",\n tabIndex: 0\n });\n this._addClass(this.active, \"ui-tabs-active\", \"ui-state-active\");\n this._getPanelForTab(this.active).show().attr({\n \"aria-hidden\": \"false\"\n });\n }\n },\n _processTabs: function () {\n var that = this,\n prevTabs = this.tabs,\n prevAnchors = this.anchors,\n prevPanels = this.panels;\n this.tablist = this._getList().attr(\"role\", \"tablist\");\n this._addClass(this.tablist, \"ui-tabs-nav\", \"ui-helper-reset ui-helper-clearfix ui-widget-header\");\n\n // Prevent users from focusing disabled tabs via click\n this.tablist.on(\"mousedown\" + this.eventNamespace, \"> li\", function (event) {\n if ($(this).is(\".ui-state-disabled\")) {\n event.preventDefault();\n }\n })\n\n // Support: IE <9\n // Preventing the default action in mousedown doesn't prevent IE\n // from focusing the element, so if the anchor gets focused, blur.\n // We don't have to worry about focusing the previously focused\n // element since clicking on a non-focusable element should focus\n // the body anyway.\n .on(\"focus\" + this.eventNamespace, \".ui-tabs-anchor\", function () {\n if ($(this).closest(\"li\").is(\".ui-state-disabled\")) {\n this.blur();\n }\n });\n this.tabs = this.tablist.find(\"> li:has(a[href])\").attr({\n role: \"tab\",\n tabIndex: -1\n });\n this._addClass(this.tabs, \"ui-tabs-tab\", \"ui-state-default\");\n this.anchors = this.tabs.map(function () {\n return $(\"a\", this)[0];\n }).attr({\n tabIndex: -1\n });\n this._addClass(this.anchors, \"ui-tabs-anchor\");\n this.panels = $();\n this.anchors.each(function (i, anchor) {\n var selector,\n panel,\n panelId,\n anchorId = $(anchor).uniqueId().attr(\"id\"),\n tab = $(anchor).closest(\"li\"),\n originalAriaControls = tab.attr(\"aria-controls\");\n\n // Inline tab\n if (that._isLocal(anchor)) {\n selector = anchor.hash;\n panelId = selector.substring(1);\n panel = that.element.find(that._sanitizeSelector(selector));\n\n // remote tab\n } else {\n // If the tab doesn't already have aria-controls,\n // generate an id by using a throw-away element\n panelId = tab.attr(\"aria-controls\") || $({}).uniqueId()[0].id;\n selector = \"#\" + panelId;\n panel = that.element.find(selector);\n if (!panel.length) {\n panel = that._createPanel(panelId);\n panel.insertAfter(that.panels[i - 1] || that.tablist);\n }\n panel.attr(\"aria-live\", \"polite\");\n }\n if (panel.length) {\n that.panels = that.panels.add(panel);\n }\n if (originalAriaControls) {\n tab.data(\"ui-tabs-aria-controls\", originalAriaControls);\n }\n tab.attr({\n \"aria-controls\": panelId,\n \"aria-labelledby\": anchorId\n });\n panel.attr(\"aria-labelledby\", anchorId);\n });\n this.panels.attr(\"role\", \"tabpanel\");\n this._addClass(this.panels, \"ui-tabs-panel\", \"ui-widget-content\");\n\n // Avoid memory leaks (#10056)\n if (prevTabs) {\n this._off(prevTabs.not(this.tabs));\n this._off(prevAnchors.not(this.anchors));\n this._off(prevPanels.not(this.panels));\n }\n },\n // Allow overriding how to find the list for rare usage scenarios (#7715)\n _getList: function () {\n return this.tablist || this.element.find(\"ol, ul\").eq(0);\n },\n _createPanel: function (id) {\n return $(\"<div>\").attr(\"id\", id).data(\"ui-tabs-destroy\", true);\n },\n _setOptionDisabled: function (disabled) {\n var currentItem, li, i;\n if (Array.isArray(disabled)) {\n if (!disabled.length) {\n disabled = false;\n } else if (disabled.length === this.anchors.length) {\n disabled = true;\n }\n }\n\n // Disable tabs\n for (i = 0; li = this.tabs[i]; i++) {\n currentItem = $(li);\n if (disabled === true || $.inArray(i, disabled) !== -1) {\n currentItem.attr(\"aria-disabled\", \"true\");\n this._addClass(currentItem, null, \"ui-state-disabled\");\n } else {\n currentItem.removeAttr(\"aria-disabled\");\n this._removeClass(currentItem, null, \"ui-state-disabled\");\n }\n }\n this.options.disabled = disabled;\n this._toggleClass(this.widget(), this.widgetFullName + \"-disabled\", null, disabled === true);\n },\n _setupEvents: function (event) {\n var events = {};\n if (event) {\n $.each(event.split(\" \"), function (index, eventName) {\n events[eventName] = \"_eventHandler\";\n });\n }\n this._off(this.anchors.add(this.tabs).add(this.panels));\n\n // Always prevent the default action, even when disabled\n this._on(true, this.anchors, {\n click: function (event) {\n event.preventDefault();\n }\n });\n this._on(this.anchors, events);\n this._on(this.tabs, {\n keydown: \"_tabKeydown\"\n });\n this._on(this.panels, {\n keydown: \"_panelKeydown\"\n });\n this._focusable(this.tabs);\n this._hoverable(this.tabs);\n },\n _setupHeightStyle: function (heightStyle) {\n var maxHeight,\n parent = this.element.parent();\n if (heightStyle === \"fill\") {\n maxHeight = parent.height();\n maxHeight -= this.element.outerHeight() - this.element.height();\n this.element.siblings(\":visible\").each(function () {\n var elem = $(this),\n position = elem.css(\"position\");\n if (position === \"absolute\" || position === \"fixed\") {\n return;\n }\n maxHeight -= elem.outerHeight(true);\n });\n this.element.children().not(this.panels).each(function () {\n maxHeight -= $(this).outerHeight(true);\n });\n this.panels.each(function () {\n $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()));\n }).css(\"overflow\", \"auto\");\n } else if (heightStyle === \"auto\") {\n maxHeight = 0;\n this.panels.each(function () {\n maxHeight = Math.max(maxHeight, $(this).height(\"\").height());\n }).height(maxHeight);\n }\n },\n _eventHandler: function (event) {\n var options = this.options,\n active = this.active,\n anchor = $(event.currentTarget),\n tab = anchor.closest(\"li\"),\n clickedIsActive = tab[0] === active[0],\n collapsing = clickedIsActive && options.collapsible,\n toShow = collapsing ? $() : this._getPanelForTab(tab),\n toHide = !active.length ? $() : this._getPanelForTab(active),\n eventData = {\n oldTab: active,\n oldPanel: toHide,\n newTab: collapsing ? $() : tab,\n newPanel: toShow\n };\n event.preventDefault();\n if (tab.hasClass(\"ui-state-disabled\") ||\n // tab is already loading\n tab.hasClass(\"ui-tabs-loading\") ||\n // can't switch durning an animation\n this.running ||\n // click on active header, but not collapsible\n clickedIsActive && !options.collapsible ||\n // allow canceling activation\n this._trigger(\"beforeActivate\", event, eventData) === false) {\n return;\n }\n options.active = collapsing ? false : this.tabs.index(tab);\n this.active = clickedIsActive ? $() : tab;\n if (this.xhr) {\n this.xhr.abort();\n }\n if (!toHide.length && !toShow.length) {\n $.error(\"jQuery UI Tabs: Mismatching fragment identifier.\");\n }\n if (toShow.length) {\n this.load(this.tabs.index(tab), event);\n }\n this._toggle(event, eventData);\n },\n // Handles show/hide for selecting tabs\n _toggle: function (event, eventData) {\n var that = this,\n toShow = eventData.newPanel,\n toHide = eventData.oldPanel;\n this.running = true;\n function complete() {\n that.running = false;\n that._trigger(\"activate\", event, eventData);\n }\n function show() {\n that._addClass(eventData.newTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\");\n if (toShow.length && that.options.show) {\n that._show(toShow, that.options.show, complete);\n } else {\n toShow.show();\n complete();\n }\n }\n\n // Start out by hiding, then showing, then completing\n if (toHide.length && this.options.hide) {\n this._hide(toHide, this.options.hide, function () {\n that._removeClass(eventData.oldTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\");\n show();\n });\n } else {\n this._removeClass(eventData.oldTab.closest(\"li\"), \"ui-tabs-active\", \"ui-state-active\");\n toHide.hide();\n show();\n }\n toHide.attr(\"aria-hidden\", \"true\");\n eventData.oldTab.attr({\n \"aria-selected\": \"false\",\n \"aria-expanded\": \"false\"\n });\n\n // If we're switching tabs, remove the old tab from the tab order.\n // If we're opening from collapsed state, remove the previous tab from the tab order.\n // If we're collapsing, then keep the collapsing tab in the tab order.\n if (toShow.length && toHide.length) {\n eventData.oldTab.attr(\"tabIndex\", -1);\n } else if (toShow.length) {\n this.tabs.filter(function () {\n return $(this).attr(\"tabIndex\") === 0;\n }).attr(\"tabIndex\", -1);\n }\n toShow.attr(\"aria-hidden\", \"false\");\n eventData.newTab.attr({\n \"aria-selected\": \"true\",\n \"aria-expanded\": \"true\",\n tabIndex: 0\n });\n },\n _activate: function (index) {\n var anchor,\n active = this._findActive(index);\n\n // Trying to activate the already active panel\n if (active[0] === this.active[0]) {\n return;\n }\n\n // Trying to collapse, simulate a click on the current active header\n if (!active.length) {\n active = this.active;\n }\n anchor = active.find(\".ui-tabs-anchor\")[0];\n this._eventHandler({\n target: anchor,\n currentTarget: anchor,\n preventDefault: $.noop\n });\n },\n _findActive: function (index) {\n return index === false ? $() : this.tabs.eq(index);\n },\n _getIndex: function (index) {\n // meta-function to give users option to provide a href string instead of a numerical index.\n if (typeof index === \"string\") {\n index = this.anchors.index(this.anchors.filter(\"[href$='\" + $.escapeSelector(index) + \"']\"));\n }\n return index;\n },\n _destroy: function () {\n if (this.xhr) {\n this.xhr.abort();\n }\n this.tablist.removeAttr(\"role\").off(this.eventNamespace);\n this.anchors.removeAttr(\"role tabIndex\").removeUniqueId();\n this.tabs.add(this.panels).each(function () {\n if ($.data(this, \"ui-tabs-destroy\")) {\n $(this).remove();\n } else {\n $(this).removeAttr(\"role tabIndex \" + \"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded\");\n }\n });\n this.tabs.each(function () {\n var li = $(this),\n prev = li.data(\"ui-tabs-aria-controls\");\n if (prev) {\n li.attr(\"aria-controls\", prev).removeData(\"ui-tabs-aria-controls\");\n } else {\n li.removeAttr(\"aria-controls\");\n }\n });\n this.panels.show();\n if (this.options.heightStyle !== \"content\") {\n this.panels.css(\"height\", \"\");\n }\n },\n enable: function (index) {\n var disabled = this.options.disabled;\n if (disabled === false) {\n return;\n }\n if (index === undefined) {\n disabled = false;\n } else {\n index = this._getIndex(index);\n if (Array.isArray(disabled)) {\n disabled = $.map(disabled, function (num) {\n return num !== index ? num : null;\n });\n } else {\n disabled = $.map(this.tabs, function (li, num) {\n return num !== index ? num : null;\n });\n }\n }\n this._setOptionDisabled(disabled);\n },\n disable: function (index) {\n var disabled = this.options.disabled;\n if (disabled === true) {\n return;\n }\n if (index === undefined) {\n disabled = true;\n } else {\n index = this._getIndex(index);\n if ($.inArray(index, disabled) !== -1) {\n return;\n }\n if (Array.isArray(disabled)) {\n disabled = $.merge([index], disabled).sort();\n } else {\n disabled = [index];\n }\n }\n this._setOptionDisabled(disabled);\n },\n load: function (index, event) {\n index = this._getIndex(index);\n var that = this,\n tab = this.tabs.eq(index),\n anchor = tab.find(\".ui-tabs-anchor\"),\n panel = this._getPanelForTab(tab),\n eventData = {\n tab: tab,\n panel: panel\n },\n complete = function (jqXHR, status) {\n if (status === \"abort\") {\n that.panels.stop(false, true);\n }\n that._removeClass(tab, \"ui-tabs-loading\");\n panel.removeAttr(\"aria-busy\");\n if (jqXHR === that.xhr) {\n delete that.xhr;\n }\n };\n\n // Not remote\n if (this._isLocal(anchor[0])) {\n return;\n }\n this.xhr = $.ajax(this._ajaxSettings(anchor, event, eventData));\n\n // Support: jQuery <1.8\n // jQuery <1.8 returns false if the request is canceled in beforeSend,\n // but as of 1.8, $.ajax() always returns a jqXHR object.\n if (this.xhr && this.xhr.statusText !== \"canceled\") {\n this._addClass(tab, \"ui-tabs-loading\");\n panel.attr(\"aria-busy\", \"true\");\n this.xhr.done(function (response, status, jqXHR) {\n // support: jQuery <1.8\n // http://bugs.jquery.com/ticket/11778\n setTimeout(function () {\n panel.html(response);\n that._trigger(\"load\", event, eventData);\n complete(jqXHR, status);\n }, 1);\n }).fail(function (jqXHR, status) {\n // support: jQuery <1.8\n // http://bugs.jquery.com/ticket/11778\n setTimeout(function () {\n complete(jqXHR, status);\n }, 1);\n });\n }\n },\n _ajaxSettings: function (anchor, event, eventData) {\n var that = this;\n return {\n // Support: IE <11 only\n // Strip any hash that exists to prevent errors with the Ajax request\n url: anchor.attr(\"href\").replace(/#.*$/, \"\"),\n beforeSend: function (jqXHR, settings) {\n return that._trigger(\"beforeLoad\", event, $.extend({\n jqXHR: jqXHR,\n ajaxSettings: settings\n }, eventData));\n }\n };\n },\n _getPanelForTab: function (tab) {\n var id = $(tab).attr(\"aria-controls\");\n return this.element.find(this._sanitizeSelector(\"#\" + id));\n }\n });\n\n // DEPRECATED\n // TODO: Switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat !== false) {\n // Backcompat for ui-tab class (now ui-tabs-tab)\n $.widget(\"ui.tabs\", $.ui.tabs, {\n _processTabs: function () {\n this._superApply(arguments);\n this._addClass(this.tabs, \"ui-tab\");\n }\n });\n }\n var widgetsTabs = $.ui.tabs;\n\n /*!\n * jQuery UI Tooltip 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n //>>label: Tooltip\n //>>group: Widgets\n //>>description: Shows additional information for any element on hover or focus.\n //>>docs: http://api.jqueryui.com/tooltip/\n //>>demos: http://jqueryui.com/tooltip/\n //>>css.structure: ../../themes/base/core.css\n //>>css.structure: ../../themes/base/tooltip.css\n //>>css.theme: ../../themes/base/theme.css\n\n $.widget(\"ui.tooltip\", {\n version: \"1.13.2\",\n options: {\n classes: {\n \"ui-tooltip\": \"ui-corner-all ui-widget-shadow\"\n },\n content: function () {\n var title = $(this).attr(\"title\");\n\n // Escape title, since we're going from an attribute to raw HTML\n return $(\"<a>\").text(title).html();\n },\n hide: true,\n // Disabled elements have inconsistent behavior across browsers (#8661)\n items: \"[title]:not([disabled])\",\n position: {\n my: \"left top+15\",\n at: \"left bottom\",\n collision: \"flipfit flip\"\n },\n show: true,\n track: false,\n // Callbacks\n close: null,\n open: null\n },\n _addDescribedBy: function (elem, id) {\n var describedby = (elem.attr(\"aria-describedby\") || \"\").split(/\\s+/);\n describedby.push(id);\n elem.data(\"ui-tooltip-id\", id).attr(\"aria-describedby\", String.prototype.trim.call(describedby.join(\" \")));\n },\n _removeDescribedBy: function (elem) {\n var id = elem.data(\"ui-tooltip-id\"),\n describedby = (elem.attr(\"aria-describedby\") || \"\").split(/\\s+/),\n index = $.inArray(id, describedby);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n elem.removeData(\"ui-tooltip-id\");\n describedby = String.prototype.trim.call(describedby.join(\" \"));\n if (describedby) {\n elem.attr(\"aria-describedby\", describedby);\n } else {\n elem.removeAttr(\"aria-describedby\");\n }\n },\n _create: function () {\n this._on({\n mouseover: \"open\",\n focusin: \"open\"\n });\n\n // IDs of generated tooltips, needed for destroy\n this.tooltips = {};\n\n // IDs of parent tooltips where we removed the title attribute\n this.parents = {};\n\n // Append the aria-live region so tooltips announce correctly\n this.liveRegion = $(\"<div>\").attr({\n role: \"log\",\n \"aria-live\": \"assertive\",\n \"aria-relevant\": \"additions\"\n }).appendTo(this.document[0].body);\n this._addClass(this.liveRegion, null, \"ui-helper-hidden-accessible\");\n this.disabledTitles = $([]);\n },\n _setOption: function (key, value) {\n var that = this;\n this._super(key, value);\n if (key === \"content\") {\n $.each(this.tooltips, function (id, tooltipData) {\n that._updateContent(tooltipData.element);\n });\n }\n },\n _setOptionDisabled: function (value) {\n this[value ? \"_disable\" : \"_enable\"]();\n },\n _disable: function () {\n var that = this;\n\n // Close open tooltips\n $.each(this.tooltips, function (id, tooltipData) {\n var event = $.Event(\"blur\");\n event.target = event.currentTarget = tooltipData.element[0];\n that.close(event, true);\n });\n\n // Remove title attributes to prevent native tooltips\n this.disabledTitles = this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function () {\n var element = $(this);\n if (element.is(\"[title]\")) {\n return element.data(\"ui-tooltip-title\", element.attr(\"title\")).removeAttr(\"title\");\n }\n }));\n },\n _enable: function () {\n // restore title attributes\n this.disabledTitles.each(function () {\n var element = $(this);\n if (element.data(\"ui-tooltip-title\")) {\n element.attr(\"title\", element.data(\"ui-tooltip-title\"));\n }\n });\n this.disabledTitles = $([]);\n },\n open: function (event) {\n var that = this,\n target = $(event ? event.target : this.element)\n\n // we need closest here due to mouseover bubbling,\n // but always pointing at the same event target\n .closest(this.options.items);\n\n // No element to show a tooltip for or the tooltip is already open\n if (!target.length || target.data(\"ui-tooltip-id\")) {\n return;\n }\n if (target.attr(\"title\")) {\n target.data(\"ui-tooltip-title\", target.attr(\"title\"));\n }\n target.data(\"ui-tooltip-open\", true);\n\n // Kill parent tooltips, custom or native, for hover\n if (event && event.type === \"mouseover\") {\n target.parents().each(function () {\n var parent = $(this),\n blurEvent;\n if (parent.data(\"ui-tooltip-open\")) {\n blurEvent = $.Event(\"blur\");\n blurEvent.target = blurEvent.currentTarget = this;\n that.close(blurEvent, true);\n }\n if (parent.attr(\"title\")) {\n parent.uniqueId();\n that.parents[this.id] = {\n element: this,\n title: parent.attr(\"title\")\n };\n parent.attr(\"title\", \"\");\n }\n });\n }\n this._registerCloseHandlers(event, target);\n this._updateContent(target, event);\n },\n _updateContent: function (target, event) {\n var content,\n contentOption = this.options.content,\n that = this,\n eventType = event ? event.type : null;\n if (typeof contentOption === \"string\" || contentOption.nodeType || contentOption.jquery) {\n return this._open(event, target, contentOption);\n }\n content = contentOption.call(target[0], function (response) {\n // IE may instantly serve a cached response for ajax requests\n // delay this call to _open so the other call to _open runs first\n that._delay(function () {\n // Ignore async response if tooltip was closed already\n if (!target.data(\"ui-tooltip-open\")) {\n return;\n }\n\n // JQuery creates a special event for focusin when it doesn't\n // exist natively. To improve performance, the native event\n // object is reused and the type is changed. Therefore, we can't\n // rely on the type being correct after the event finished\n // bubbling, so we set it back to the previous value. (#8740)\n if (event) {\n event.type = eventType;\n }\n this._open(event, target, response);\n });\n });\n if (content) {\n this._open(event, target, content);\n }\n },\n _open: function (event, target, content) {\n var tooltipData,\n tooltip,\n delayedShow,\n a11yContent,\n positionOption = $.extend({}, this.options.position);\n if (!content) {\n return;\n }\n\n // Content can be updated multiple times. If the tooltip already\n // exists, then just update the content and bail.\n tooltipData = this._find(target);\n if (tooltipData) {\n tooltipData.tooltip.find(\".ui-tooltip-content\").html(content);\n return;\n }\n\n // If we have a title, clear it to prevent the native tooltip\n // we have to check first to avoid defining a title if none exists\n // (we don't want to cause an element to start matching [title])\n //\n // We use removeAttr only for key events, to allow IE to export the correct\n // accessible attributes. For mouse events, set to empty string to avoid\n // native tooltip showing up (happens only when removing inside mouseover).\n if (target.is(\"[title]\")) {\n if (event && event.type === \"mouseover\") {\n target.attr(\"title\", \"\");\n } else {\n target.removeAttr(\"title\");\n }\n }\n tooltipData = this._tooltip(target);\n tooltip = tooltipData.tooltip;\n this._addDescribedBy(target, tooltip.attr(\"id\"));\n tooltip.find(\".ui-tooltip-content\").html(content);\n\n // Support: Voiceover on OS X, JAWS on IE <= 9\n // JAWS announces deletions even when aria-relevant=\"additions\"\n // Voiceover will sometimes re-read the entire log region's contents from the beginning\n this.liveRegion.children().hide();\n a11yContent = $(\"<div>\").html(tooltip.find(\".ui-tooltip-content\").html());\n a11yContent.removeAttr(\"name\").find(\"[name]\").removeAttr(\"name\");\n a11yContent.removeAttr(\"id\").find(\"[id]\").removeAttr(\"id\");\n a11yContent.appendTo(this.liveRegion);\n function position(event) {\n positionOption.of = event;\n if (tooltip.is(\":hidden\")) {\n return;\n }\n tooltip.position(positionOption);\n }\n if (this.options.track && event && /^mouse/.test(event.type)) {\n this._on(this.document, {\n mousemove: position\n });\n\n // trigger once to override element-relative positioning\n position(event);\n } else {\n tooltip.position($.extend({\n of: target\n }, this.options.position));\n }\n tooltip.hide();\n this._show(tooltip, this.options.show);\n\n // Handle tracking tooltips that are shown with a delay (#8644). As soon\n // as the tooltip is visible, position the tooltip using the most recent\n // event.\n // Adds the check to add the timers only when both delay and track options are set (#14682)\n if (this.options.track && this.options.show && this.options.show.delay) {\n delayedShow = this.delayedShow = setInterval(function () {\n if (tooltip.is(\":visible\")) {\n position(positionOption.of);\n clearInterval(delayedShow);\n }\n }, 13);\n }\n this._trigger(\"open\", event, {\n tooltip: tooltip\n });\n },\n _registerCloseHandlers: function (event, target) {\n var events = {\n keyup: function (event) {\n if (event.keyCode === $.ui.keyCode.ESCAPE) {\n var fakeEvent = $.Event(event);\n fakeEvent.currentTarget = target[0];\n this.close(fakeEvent, true);\n }\n }\n };\n\n // Only bind remove handler for delegated targets. Non-delegated\n // tooltips will handle this in destroy.\n if (target[0] !== this.element[0]) {\n events.remove = function () {\n var targetElement = this._find(target);\n if (targetElement) {\n this._removeTooltip(targetElement.tooltip);\n }\n };\n }\n if (!event || event.type === \"mouseover\") {\n events.mouseleave = \"close\";\n }\n if (!event || event.type === \"focusin\") {\n events.focusout = \"close\";\n }\n this._on(true, target, events);\n },\n close: function (event) {\n var tooltip,\n that = this,\n target = $(event ? event.currentTarget : this.element),\n tooltipData = this._find(target);\n\n // The tooltip may already be closed\n if (!tooltipData) {\n // We set ui-tooltip-open immediately upon open (in open()), but only set the\n // additional data once there's actually content to show (in _open()). So even if the\n // tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in\n // the period between open() and _open().\n target.removeData(\"ui-tooltip-open\");\n return;\n }\n tooltip = tooltipData.tooltip;\n\n // Disabling closes the tooltip, so we need to track when we're closing\n // to avoid an infinite loop in case the tooltip becomes disabled on close\n if (tooltipData.closing) {\n return;\n }\n\n // Clear the interval for delayed tracking tooltips\n clearInterval(this.delayedShow);\n\n // Only set title if we had one before (see comment in _open())\n // If the title attribute has changed since open(), don't restore\n if (target.data(\"ui-tooltip-title\") && !target.attr(\"title\")) {\n target.attr(\"title\", target.data(\"ui-tooltip-title\"));\n }\n this._removeDescribedBy(target);\n tooltipData.hiding = true;\n tooltip.stop(true);\n this._hide(tooltip, this.options.hide, function () {\n that._removeTooltip($(this));\n });\n target.removeData(\"ui-tooltip-open\");\n this._off(target, \"mouseleave focusout keyup\");\n\n // Remove 'remove' binding only on delegated targets\n if (target[0] !== this.element[0]) {\n this._off(target, \"remove\");\n }\n this._off(this.document, \"mousemove\");\n if (event && event.type === \"mouseleave\") {\n $.each(this.parents, function (id, parent) {\n $(parent.element).attr(\"title\", parent.title);\n delete that.parents[id];\n });\n }\n tooltipData.closing = true;\n this._trigger(\"close\", event, {\n tooltip: tooltip\n });\n if (!tooltipData.hiding) {\n tooltipData.closing = false;\n }\n },\n _tooltip: function (element) {\n var tooltip = $(\"<div>\").attr(\"role\", \"tooltip\"),\n content = $(\"<div>\").appendTo(tooltip),\n id = tooltip.uniqueId().attr(\"id\");\n this._addClass(content, \"ui-tooltip-content\");\n this._addClass(tooltip, \"ui-tooltip\", \"ui-widget ui-widget-content\");\n tooltip.appendTo(this._appendTo(element));\n return this.tooltips[id] = {\n element: element,\n tooltip: tooltip\n };\n },\n _find: function (target) {\n var id = target.data(\"ui-tooltip-id\");\n return id ? this.tooltips[id] : null;\n },\n _removeTooltip: function (tooltip) {\n // Clear the interval for delayed tracking tooltips\n clearInterval(this.delayedShow);\n tooltip.remove();\n delete this.tooltips[tooltip.attr(\"id\")];\n },\n _appendTo: function (target) {\n var element = target.closest(\".ui-front, dialog\");\n if (!element.length) {\n element = this.document[0].body;\n }\n return element;\n },\n _destroy: function () {\n var that = this;\n\n // Close open tooltips\n $.each(this.tooltips, function (id, tooltipData) {\n // Delegate to close method to handle common cleanup\n var event = $.Event(\"blur\"),\n element = tooltipData.element;\n event.target = event.currentTarget = element[0];\n that.close(event, true);\n\n // Remove immediately; destroying an open tooltip doesn't use the\n // hide animation\n $(\"#\" + id).remove();\n\n // Restore the title\n if (element.data(\"ui-tooltip-title\")) {\n // If the title attribute has changed since open(), don't restore\n if (!element.attr(\"title\")) {\n element.attr(\"title\", element.data(\"ui-tooltip-title\"));\n }\n element.removeData(\"ui-tooltip-title\");\n }\n });\n this.liveRegion.remove();\n }\n });\n\n // DEPRECATED\n // TODO: Switch return back to widget declaration at top of file when this is removed\n if ($.uiBackCompat !== false) {\n // Backcompat for tooltipClass option\n $.widget(\"ui.tooltip\", $.ui.tooltip, {\n options: {\n tooltipClass: null\n },\n _tooltip: function () {\n var tooltipData = this._superApply(arguments);\n if (this.options.tooltipClass) {\n tooltipData.tooltip.addClass(this.options.tooltipClass);\n }\n return tooltipData;\n }\n });\n }\n var widgetsTooltip = $.ui.tooltip;\n});","export function definitionsFromContext(context) {\n return context.keys().map(function (key) {\n return definitionForModuleWithContextAndKey(context, key);\n }).filter(function (value) {\n return value;\n });\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n var identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n var controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return {\n identifier: identifier,\n controllerConstructor: controllerConstructor\n };\n }\n}\nexport function identifierForContextKey(key) {\n var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","/* jshint node: true */\n\n/**\n * Unobtrusive scripting adapter for jQuery\n * https://github.com/rails/jquery-ujs\n *\n * Requires jQuery 1.8.0 or later.\n *\n * Released under the MIT license\n *\n */\n\n(function () {\n 'use strict';\n\n var jqueryUjsInit = function ($, undefined) {\n // Cut down on the number of issues from people inadvertently including jquery_ujs twice\n // by detecting and raising an error when it happens.\n if ($.rails !== undefined) {\n $.error('jquery-ujs has already been loaded!');\n }\n\n // Shorthand to make it a little easier to call public rails functions from within rails.js\n var rails;\n var $document = $(document);\n $.rails = rails = {\n // Link elements bound by jquery-ujs\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n // Button elements bound by jquery-ujs\n buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)',\n // Select elements bound by jquery-ujs\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n // Form elements bound by jquery-ujs\n formSubmitSelector: 'form:not([data-turbo=true])',\n // Form input elements bound by jquery-ujs\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n // Form input elements disabled during form submission\n disableSelector: '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 // Form input elements re-enabled after form submission\n enableSelector: '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 // Form required input elements\n requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])',\n // Form file input elements\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n // Link onClick disable selector with possible reenable after remote submission\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n // Button onClick disable selector with possible reenable after remote submission\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',\n // Up-to-date Cross-Site Request Forgery token\n csrfToken: function () {\n return $('meta[name=csrf-token]').attr('content');\n },\n // URL param that must contain the CSRF token\n csrfParam: function () {\n return $('meta[name=csrf-param]').attr('content');\n },\n // Make sure that every Ajax request sends the CSRF token\n CSRFProtection: function (xhr) {\n var token = rails.csrfToken();\n if (token) xhr.setRequestHeader('X-CSRF-Token', token);\n },\n // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones)\n refreshCSRFTokens: function () {\n $('form input[name=\"' + rails.csrfParam() + '\"]').val(rails.csrfToken());\n },\n // Triggers an event on an element and returns false if the event result is false\n fire: function (obj, name, data) {\n var event = $.Event(name);\n obj.trigger(event, data);\n return event.result !== false;\n },\n // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm\n confirm: function (message) {\n return confirm(message);\n },\n // Default ajax function, may be overridden with custom function in $.rails.ajax\n ajax: function (options) {\n return $.ajax(options);\n },\n // Default way to get an element's href. May be overridden at $.rails.href.\n href: function (element) {\n return element[0].href;\n },\n // Checks \"data-remote\" if true to handle the request through a XHR request.\n isRemote: function (element) {\n return element.data('remote') !== undefined && element.data('remote') !== false;\n },\n // Submits \"remote\" forms and links with ajax\n handleRemote: function (element) {\n var method, url, data, withCredentials, dataType, options;\n if (rails.fire(element, 'ajax:before')) {\n withCredentials = element.data('with-credentials') || null;\n dataType = element.data('type') || $.ajaxSettings && $.ajaxSettings.dataType;\n if (element.is('form')) {\n method = element.data('ujs:submit-button-formmethod') || element.attr('method');\n url = element.data('ujs:submit-button-formaction') || element.attr('action');\n data = $(element[0]).serializeArray();\n // memoized value from clicked submit button\n var button = element.data('ujs:submit-button');\n if (button) {\n data.push(button);\n element.data('ujs:submit-button', null);\n }\n element.data('ujs:submit-button-formmethod', null);\n element.data('ujs:submit-button-formaction', null);\n } else if (element.is(rails.inputChangeSelector)) {\n method = element.data('method');\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else if (element.is(rails.buttonClickSelector)) {\n method = element.data('method') || 'get';\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else {\n method = element.data('method');\n url = rails.href(element);\n data = element.data('params') || null;\n }\n options = {\n type: method || 'GET',\n data: data,\n dataType: dataType,\n // stopping the \"ajax:beforeSend\" event will cancel the ajax request\n beforeSend: function (xhr, settings) {\n if (settings.dataType === undefined) {\n xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);\n }\n if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {\n element.trigger('ajax:send', xhr);\n } else {\n return false;\n }\n },\n success: function (data, status, xhr) {\n element.trigger('ajax:success', [data, status, xhr]);\n },\n complete: function (xhr, status) {\n element.trigger('ajax:complete', [xhr, status]);\n },\n error: function (xhr, status, error) {\n element.trigger('ajax:error', [xhr, status, error]);\n },\n crossDomain: rails.isCrossDomain(url)\n };\n\n // There is no withCredentials for IE6-8 when\n // \"Enable native XMLHTTP support\" is disabled\n if (withCredentials) {\n options.xhrFields = {\n withCredentials: withCredentials\n };\n }\n\n // Only pass url to `ajax` options if not blank\n if (url) {\n options.url = url;\n }\n return rails.ajax(options);\n } else {\n return false;\n }\n },\n // Determines if the request is a cross domain request.\n isCrossDomain: function (url) {\n var originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n var urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n // This is a workaround to a IE bug.\n urlAnchor.href = urlAnchor.href;\n\n // If URL protocol is false or is a string containing a single colon\n // *and* host are false, assume it is not a cross-domain request\n // (should only be the case for IE7 and IE compatibility mode).\n // Otherwise, evaluate protocol and host of the URL against the origin\n // protocol and host.\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain.\n return true;\n }\n },\n // Handles \"data-method\" on links such as:\n // <a href=\"/users/5\" data-method=\"delete\" rel=\"nofollow\" data-confirm=\"Are you sure?\">Delete</a>\n handleMethod: function (link) {\n var href = rails.href(link),\n method = link.data('method'),\n target = link.attr('target'),\n csrfToken = rails.csrfToken(),\n csrfParam = rails.csrfParam(),\n form = $('<form method=\"post\" action=\"' + href + '\"></form>'),\n metadataInput = '<input name=\"_method\" value=\"' + method + '\" type=\"hidden\" />';\n if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {\n metadataInput += '<input name=\"' + csrfParam + '\" value=\"' + csrfToken + '\" type=\"hidden\" />';\n }\n if (target) {\n form.attr('target', target);\n }\n form.hide().append(metadataInput).appendTo('body');\n form.submit();\n },\n // Helper function that returns form elements that match the specified CSS selector\n // If form is actually a \"form\" element this will return associated elements outside the from that have\n // the html form attribute set\n formElements: function (form, selector) {\n return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);\n },\n /* Disables form elements:\n - Caches element value in 'ujs:enable-with' data store\n - Replaces element text with value of 'data-disable-with' attribute\n - Sets disabled property to true\n */\n disableFormElements: function (form) {\n rails.formElements(form, rails.disableSelector).each(function () {\n rails.disableFormElement($(this));\n });\n },\n disableFormElement: function (element) {\n var method, replacement;\n method = element.is('button') ? 'html' : 'val';\n replacement = element.data('disable-with');\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element[method]());\n element[method](replacement);\n }\n element.prop('disabled', true);\n element.data('ujs:disabled', true);\n },\n /* Re-enables disabled form elements:\n - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)\n - Sets disabled property to false\n */\n enableFormElements: function (form) {\n rails.formElements(form, rails.enableSelector).each(function () {\n rails.enableFormElement($(this));\n });\n },\n enableFormElement: function (element) {\n var method = element.is('button') ? 'html' : 'val';\n if (element.data('ujs:enable-with') !== undefined) {\n element[method](element.data('ujs:enable-with'));\n element.removeData('ujs:enable-with'); // clean up cache\n }\n\n element.prop('disabled', false);\n element.removeData('ujs:disabled');\n },\n /* For 'data-confirm' attribute:\n - Fires `confirm` event\n - Shows the confirmation dialog\n - Fires the `confirm:complete` event\n Returns `true` if no function stops the chain and user chose yes; `false` otherwise.\n Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.\n Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function\n return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.\n */\n allowAction: function (element) {\n var message = element.data('confirm'),\n answer = false,\n callback;\n if (!message) {\n return true;\n }\n if (rails.fire(element, 'confirm')) {\n try {\n answer = rails.confirm(message);\n } catch (e) {\n (console.error || console.log).call(console, e.stack || e);\n }\n callback = rails.fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n },\n // Helper function which checks for blank inputs in a form that match the specified CSS selector\n blankInputs: function (form, specifiedSelector, nonBlank) {\n var foundInputs = $(),\n input,\n valueToCheck,\n radiosForNameWithNoneSelected,\n radioName,\n selector = specifiedSelector || 'input,textarea',\n requiredInputs = form.find(selector),\n checkedRadioButtonNames = {};\n requiredInputs.each(function () {\n input = $(this);\n if (input.is('input[type=radio]')) {\n // Don't count unchecked required radio as blank if other radio with same name is checked,\n // regardless of whether same-name radio input has required attribute or not. The spec\n // states https://www.w3.org/TR/html5/forms.html#the-required-attribute\n radioName = input.attr('name');\n\n // Skip if we've already seen the radio with this name.\n if (!checkedRadioButtonNames[radioName]) {\n // If none checked\n if (form.find('input[type=radio]:checked[name=\"' + radioName + '\"]').length === 0) {\n radiosForNameWithNoneSelected = form.find('input[type=radio][name=\"' + radioName + '\"]');\n foundInputs = foundInputs.add(radiosForNameWithNoneSelected);\n }\n\n // We only need to check each name once.\n checkedRadioButtonNames[radioName] = radioName;\n }\n } else {\n valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val();\n if (valueToCheck === nonBlank) {\n foundInputs = foundInputs.add(input);\n }\n }\n });\n return foundInputs.length ? foundInputs : false;\n },\n // Helper function which checks for non-blank inputs in a form that match the specified CSS selector\n nonBlankInputs: function (form, specifiedSelector) {\n return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank\n },\n\n // Helper function, needed to provide consistent behavior in IE\n stopEverything: function (e) {\n $(e.target).trigger('ujs:everythingStopped');\n e.stopImmediatePropagation();\n return false;\n },\n // Replace element's html with the 'data-disable-with' after storing original html\n // and prevent clicking on it\n disableElement: function (element) {\n var replacement = element.data('disable-with');\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element.html()); // store enabled state\n element.html(replacement);\n }\n element.on('click.railsDisable', function (e) {\n // prevent further clicking\n return rails.stopEverything(e);\n });\n element.data('ujs:disabled', true);\n },\n // Restore element to its original state which was disabled by 'disableElement' above\n enableElement: function (element) {\n if (element.data('ujs:enable-with') !== undefined) {\n element.html(element.data('ujs:enable-with')); // set to old enabled state\n element.removeData('ujs:enable-with'); // clean up cache\n }\n\n element.off('click.railsDisable'); // enable element\n element.removeData('ujs:disabled');\n }\n };\n if (rails.fire($document, 'rails:attachBindings')) {\n $.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n rails.CSRFProtection(xhr);\n }\n });\n\n // This event works the same as the load event, except that it fires every\n // time the page is loaded.\n //\n // See https://github.com/rails/jquery-ujs/issues/357\n // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching\n $(window).on('pageshow.rails', function () {\n $($.rails.enableSelector).each(function () {\n var element = $(this);\n if (element.data('ujs:disabled')) {\n $.rails.enableFormElement(element);\n }\n });\n $($.rails.linkDisableSelector).each(function () {\n var element = $(this);\n if (element.data('ujs:disabled')) {\n $.rails.enableElement(element);\n }\n });\n });\n $document.on('ajax:complete', rails.linkDisableSelector, function () {\n rails.enableElement($(this));\n });\n $document.on('ajax:complete', rails.buttonDisableSelector, function () {\n rails.enableFormElement($(this));\n });\n $document.on('click.rails', rails.linkClickSelector, function (e) {\n var link = $(this),\n method = link.data('method'),\n data = link.data('params'),\n metaClick = e.metaKey || e.ctrlKey;\n if (!rails.allowAction(link)) return rails.stopEverything(e);\n if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);\n if (rails.isRemote(link)) {\n if (metaClick && (!method || method === 'GET') && !data) {\n return true;\n }\n var handleRemote = rails.handleRemote(link);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableElement(link);\n } else {\n handleRemote.fail(function () {\n rails.enableElement(link);\n });\n }\n return false;\n } else if (method) {\n rails.handleMethod(link);\n return false;\n }\n });\n $document.on('click.rails', rails.buttonClickSelector, function (e) {\n var button = $(this);\n if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e);\n if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);\n var handleRemote = rails.handleRemote(button);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableFormElement(button);\n } else {\n handleRemote.fail(function () {\n rails.enableFormElement(button);\n });\n }\n return false;\n });\n $document.on('change.rails', rails.inputChangeSelector, function (e) {\n var link = $(this);\n if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e);\n rails.handleRemote(link);\n return false;\n });\n $document.on('submit.rails', rails.formSubmitSelector, function (e) {\n var form = $(this),\n remote = rails.isRemote(form),\n blankRequiredInputs,\n nonBlankFileInputs;\n if (!rails.allowAction(form)) return rails.stopEverything(e);\n\n // Skip other logic when required values are missing or file upload is present\n if (form.attr('novalidate') === undefined) {\n if (form.data('ujs:formnovalidate-button') === undefined) {\n blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false);\n if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {\n return rails.stopEverything(e);\n }\n } else {\n // Clear the formnovalidate in case the next button click is not on a formnovalidate button\n // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain\n form.data('ujs:formnovalidate-button', undefined);\n }\n }\n if (remote) {\n nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);\n if (nonBlankFileInputs) {\n // Slight timeout so that the submit button gets properly serialized\n // (make it easy for event handler to serialize form without disabled values)\n setTimeout(function () {\n rails.disableFormElements(form);\n }, 13);\n var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);\n\n // Re-enable form elements if event bindings return false (canceling normal form submission)\n if (!aborted) {\n setTimeout(function () {\n rails.enableFormElements(form);\n }, 13);\n }\n return aborted;\n }\n rails.handleRemote(form);\n return false;\n } else {\n // Slight timeout so that the submit button gets properly serialized\n setTimeout(function () {\n rails.disableFormElements(form);\n }, 13);\n }\n });\n $document.on('click.rails', rails.formInputClickSelector, function (event) {\n var button = $(this);\n if (!rails.allowAction(button)) return rails.stopEverything(event);\n\n // Register the pressed submit button\n var name = button.attr('name'),\n data = name ? {\n name: name,\n value: button.val()\n } : null;\n var form = button.closest('form');\n if (form.length === 0) {\n form = $('#' + button.attr('form'));\n }\n form.data('ujs:submit-button', data);\n\n // Save attributes from button\n form.data('ujs:formnovalidate-button', button.attr('formnovalidate'));\n form.data('ujs:submit-button-formaction', button.attr('formaction'));\n form.data('ujs:submit-button-formmethod', button.attr('formmethod'));\n });\n $document.on('ajax:send.rails', rails.formSubmitSelector, function (event) {\n if (this === event.target) rails.disableFormElements($(this));\n });\n $document.on('ajax:complete.rails', rails.formSubmitSelector, function (event) {\n if (this === event.target) rails.enableFormElements($(this));\n });\n $(function () {\n rails.refreshCSRFTokens();\n });\n }\n };\n if (window.jQuery) {\n jqueryUjsInit(jQuery);\n } else if (typeof exports === 'object' && typeof module === 'object') {\n module.exports = jqueryUjsInit;\n }\n})();","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.16.1\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in 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,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\nvar timeoutDuration = function () {\n var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}();\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nfunction getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n var nodeName = offsetParent && offsetParent.nodeName;\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n return offsetParent;\n}\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);\n}\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar defineProperty = function (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};\nvar _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\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.width;\n var height = sizes.height || element.clientHeight || result.height;\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n return getClientRect(result);\n}\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop);\n var marginLeft = parseFloat(styles.marginLeft);\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n return offsets;\n}\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = {\n top: 0,\n left: 0\n };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n return boundaries;\n}\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n var variation = placement.split('-')[1];\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n data = fn(data, modifier);\n }\n });\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, {\n passive: true\n });\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, {\n passive: true\n });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, {\n position: options.positionFixed ? 'fixed' : 'absolute'\n });\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n var noRound = function noRound(v) {\n return v;\n };\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n var flipOrder = [];\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n // flips variation if popper content overflows boundaries\n var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);\n var flippedVariation = flippedVariationByRef || flippedVariationByContent;\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var basePlacement = placement.split('-')[0];\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n options.boundaries = boundaries;\n var order = options.priority;\n var popper = data.offsets.popper;\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n data.offsets.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false\n },\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n }]);\n\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\nexport default Popper;","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _utils = require('./utils');\nvar _exception = require('./exception');\nvar _exception2 = _interopRequireDefault(_exception);\nvar _helpers = require('./helpers');\nvar _decorators = require('./decorators');\nvar _logger = require('./logger');\nvar _logger2 = _interopRequireDefault(_logger);\nvar _internalProtoAccess = require('./internal/proto-access');\nvar VERSION = '4.7.8';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2',\n // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n logger: _logger2['default'],\n log: _logger2['default'].log,\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\nvar log = _logger2['default'].log;\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];","$(document).on('turbo:load', function() {\n $('body').on('click', '.survey_survey_questions_survey_possible_answers_free_text label input.boolean', function() {\n if( $(this).is(':checked')) {\n $(this).parent().parent().parent().next().next().removeClass('hidden').show();\n $(this).parent().parent().parent().next().hide().addClass('hidden');\n } else {\n $(this).parent().parent().parent().next().next().hide();\n $(this).parent().parent().parent().next().removeClass('hidden').show();\n }\n });\n $(\".surveys\").on('change', '.survey-question-container .select', function() {\n var selectVal = $(this).find(\":selected\").val()\n if (selectVal == \"radio\" || selectVal =='checkbox' || selectVal == 'select') {\n $(this).parent().parent().children('.add-answer').attr('style', 'display: block;');\n } else {\n $(this).parent().parent().children('.add-answer').attr('style', 'display: none;');\n }\n });\n $('.surveys').on('change', '.exit-after .boolean', function() {\n $(this).parent().next('.exit-url').attr('style', 'display: block;');\n });\n});\n\n\n\n\n","$(document).on('turbo:load', function() {\n initSurvey();\n});\n\nwindow.initSurvey = function(){\n\n if (document.body.classList.contains('static') && document.body.classList.contains('quickstart')) {\n \n document.addEventListener('keyup', function(event) {\n let target = event.target;\n if (target.matches('form.short-text.required input[type=\"text\"], form.name input[type=\"text\"], form.email.required input[type=\"text\"], form.long-text.required textarea')) {\n validateText(target.value);\n }\n });\n\n document.addEventListener('change', function(event) {\n let target = event.target;\n let submitButton = document.querySelector('input[type=\"submit\"]');\n \n if (target.matches('input[type=\"radio\"]') || target.matches('input[type=\"checkbox\"]') || target.matches('select')) {\n submitButton.removeAttribute(\"disabled\");\n }\n });\n }\n}\n\nwindow.validateText = function(val) {\n if (val.length > 5) {\n document.querySelector('.btn-action').removeAttribute(\"disabled\");\n } else {\n document.querySelector('.btn-action').setAttribute(\"disabled\", true);\n }\n}\n\n\n\n\n\n","let consumer;\nexport async function getConsumer() {\n return consumer || setConsumer(createConsumer().then(setConsumer));\n}\nexport function setConsumer(newConsumer) {\n return consumer = newConsumer;\n}\nexport async function createConsumer() {\n const _await$import = await import( /* webpackChunkName: \"actioncable\" */\"@rails/actioncable/src\"),\n createConsumer = _await$import.createConsumer;\n return createConsumer();\n}\nexport async function subscribeTo(channel, mixin) {\n const _await$getConsumer = await getConsumer(),\n subscriptions = _await$getConsumer.subscriptions;\n return subscriptions.create(channel, mixin);\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}\n;","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nimport { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\";\nimport { subscribeTo } from \"./cable\";\nimport snakeize from \"./snakeize\";\nclass TurboCableStreamSourceElement extends HTMLElement {\n async connectedCallback() {\n connectStreamSource(this);\n this.subscription = await subscribeTo(this.channel, {\n received: this.dispatchMessageEvent.bind(this),\n connected: this.subscriptionConnected.bind(this),\n disconnected: this.subscriptionDisconnected.bind(this)\n });\n }\n disconnectedCallback() {\n disconnectStreamSource(this);\n if (this.subscription) this.subscription.unsubscribe();\n }\n dispatchMessageEvent(data) {\n const event = new MessageEvent(\"message\", {\n data\n });\n return this.dispatchEvent(event);\n }\n subscriptionConnected() {\n this.setAttribute(\"connected\", \"\");\n }\n subscriptionDisconnected() {\n this.removeAttribute(\"connected\");\n }\n get channel() {\n const channel = this.getAttribute(\"channel\");\n const signed_stream_name = this.getAttribute(\"signed-stream-name\");\n return _objectSpread({\n channel,\n signed_stream_name\n }, snakeize(_objectSpread({}, this.dataset)));\n }\n}\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement);\n}","import \"./cable_stream_source_element\";\nimport * as Turbo from \"@hotwired/turbo\";\nexport { Turbo };\nimport * as cable from \"./cable\";\nexport { cable };\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\";\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody);","export function encodeMethodIntoRequestBody(event) {\n if (event.target instanceof HTMLFormElement) {\n const form = event.target,\n fetchOptions = event.detail.fetchOptions;\n form.addEventListener(\"turbo:submit-start\", _ref => {\n let submitter = _ref.detail.formSubmission.submitter;\n const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams();\n const method = determineFetchMethod(submitter, body, form);\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 fetchOptions.method = \"post\";\n }\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 if (typeof formMethod == \"string\") {\n return formMethod;\n } else if (typeof overrideMethod == \"string\") {\n return overrideMethod;\n } else {\n return method;\n }\n}\nfunction determineFormMethod(submitter) {\n if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n if (submitter.hasAttribute(\"formmethod\")) {\n return submitter.formMethod;\n } else {\n return null;\n }\n } else {\n return null;\n }\n}\nfunction isBodyInit(body) {\n return body instanceof FormData || body instanceof URLSearchParams;\n}","/**\n * Tagify (v 4.17.9) - tags input component\n * By undefined\n * https://github.com/yairEO/tagify\n * Permission is hereby granted, free of charge, to any person obtaining a copy\r\n * of this software and associated documentation files (the \"Software\"), to deal\r\n * in the Software without restriction, including without limitation the rights\r\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n * copies of the Software, and to permit persons to whom the Software is\r\n * furnished to do so, subject to the following conditions:\r\n * \r\n * The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n * \r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n * THE SOFTWARE.\r\n * \r\n * THE SOFTWARE IS NOT PERMISSIBLE TO BE SOLD.\n */\n\n!function (t, e) {\n \"object\" == typeof exports && \"undefined\" != typeof module ? module.exports = e() : \"function\" == typeof define && define.amd ? define(e) : (t = \"undefined\" != typeof globalThis ? globalThis : t || self).Tagify = e();\n}(this, function () {\n \"use strict\";\n\n function t(t, e) {\n var i = Object.keys(t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(t);\n e && (s = s.filter(function (e) {\n return Object.getOwnPropertyDescriptor(t, e).enumerable;\n })), i.push.apply(i, s);\n }\n return i;\n }\n function e(e) {\n for (var s = 1; s < arguments.length; s++) {\n var a = null != arguments[s] ? arguments[s] : {};\n s % 2 ? t(Object(a), !0).forEach(function (t) {\n i(e, t, a[t]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(a)) : t(Object(a)).forEach(function (t) {\n Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(a, t));\n });\n }\n return e;\n }\n function i(t, e, i) {\n return (e = function (t) {\n var e = function (t, e) {\n if (\"object\" != typeof t || null === t) return t;\n var i = t[Symbol.toPrimitive];\n if (void 0 !== i) {\n var s = i.call(t, e || \"default\");\n if (\"object\" != typeof s) return s;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === e ? String : Number)(t);\n }(t, \"string\");\n return \"symbol\" == typeof e ? e : String(e);\n }(e)) in t ? Object.defineProperty(t, e, {\n value: i,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : t[e] = i, t;\n }\n var s = \"​\";\n const a = (t, e, i, s) => (t = \"\" + t, e = \"\" + e, s && (t = t.trim(), e = e.trim()), i ? t == e : t.toLowerCase() == e.toLowerCase()),\n n = (t, e) => t && Array.isArray(t) && t.map(t => o(t, e));\n function o(t, e) {\n var i,\n s = {};\n for (i in t) e.indexOf(i) < 0 && (s[i] = t[i]);\n return s;\n }\n function r(t) {\n var e = document.createElement(\"div\");\n return t.replace(/\\&#?[0-9a-z]+;/gi, function (t) {\n return e.innerHTML = t, e.innerText;\n });\n }\n function l(t) {\n return new DOMParser().parseFromString(t.trim(), \"text/html\").body.firstElementChild;\n }\n function d(t, e) {\n for (e = e || \"previous\"; t = t[e + \"Sibling\"];) if (3 == t.nodeType) return t;\n }\n function h(t) {\n return \"string\" == typeof t ? t.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/`|'/g, \"'\") : t;\n }\n function g(t) {\n var e = Object.prototype.toString.call(t).split(\" \")[1].slice(0, -1);\n return t === Object(t) && \"Array\" != e && \"Function\" != e && \"RegExp\" != e && \"HTMLUnknownElement\" != e;\n }\n function p(t, e, i) {\n function s(t, e) {\n for (var i in e) if (e.hasOwnProperty(i)) {\n if (g(e[i])) {\n g(t[i]) ? s(t[i], e[i]) : t[i] = Object.assign({}, e[i]);\n continue;\n }\n if (Array.isArray(e[i])) {\n t[i] = Object.assign([], e[i]);\n continue;\n }\n t[i] = e[i];\n }\n }\n return t instanceof Object || (t = {}), s(t, e), i && s(t, i), t;\n }\n function c() {\n const t = [],\n e = {};\n for (let i of arguments) for (let s of i) g(s) ? e[s.value] || (t.push(s), e[s.value] = 1) : t.includes(s) || t.push(s);\n return t;\n }\n function u(t) {\n return String.prototype.normalize ? \"string\" == typeof t ? t.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\") : void 0 : t;\n }\n var m = () => /(?=.*chrome)(?=.*android)/i.test(navigator.userAgent);\n function v() {\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, t => (t ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> t / 4).toString(16));\n }\n function f(t) {\n return t && t.classList && t.classList.contains(this.settings.classNames.tag);\n }\n function T(t, e) {\n var i = window.getSelection();\n return e = e || i.getRangeAt(0), \"string\" == typeof t && (t = document.createTextNode(t)), e && (e.deleteContents(), e.insertNode(t)), t;\n }\n function w(t, e, i) {\n return t ? (e && (t.__tagifyTagData = i ? e : p({}, t.__tagifyTagData || {}, e)), t.__tagifyTagData) : (console.warn(\"tag element doesn't exist\", t, e), e);\n }\n function b(t) {\n if (t && t.parentNode) {\n var e = t,\n i = window.getSelection(),\n s = i.getRangeAt(0);\n i.rangeCount && (s.setStartAfter(e), s.collapse(!0), i.removeAllRanges(), i.addRange(s));\n }\n }\n function y(t, e) {\n t.forEach(t => {\n if (w(t.previousSibling) || !t.previousSibling) {\n var i = document.createTextNode(s);\n t.before(i), e && b(i);\n }\n });\n }\n var x = {\n delimiters: \",\",\n pattern: null,\n tagTextProp: \"value\",\n maxTags: 1 / 0,\n callbacks: {},\n addTagOnBlur: !0,\n onChangeAfterBlur: !0,\n duplicates: !1,\n whitelist: [],\n blacklist: [],\n enforceWhitelist: !1,\n userInput: !0,\n keepInvalidTags: !1,\n createInvalidTags: !0,\n mixTagsAllowedAfter: /,|\\.|\\:|\\s/,\n mixTagsInterpolator: [\"[[\", \"]]\"],\n backspace: !0,\n skipInvalid: !1,\n pasteAsTags: !0,\n editTags: {\n clicks: 2,\n keepInvalid: !0\n },\n transformTag: () => {},\n trim: !0,\n a11y: {\n focusableTags: !1\n },\n mixMode: {\n insertAfterTag: \" \"\n },\n autoComplete: {\n enabled: !0,\n rightKey: !1\n },\n classNames: {\n namespace: \"tagify\",\n mixMode: \"tagify--mix\",\n selectMode: \"tagify--select\",\n input: \"tagify__input\",\n focus: \"tagify--focus\",\n tagNoAnimation: \"tagify--noAnim\",\n tagInvalid: \"tagify--invalid\",\n tagNotAllowed: \"tagify--notAllowed\",\n scopeLoading: \"tagify--loading\",\n hasMaxTags: \"tagify--hasMaxTags\",\n hasNoTags: \"tagify--noTags\",\n empty: \"tagify--empty\",\n inputInvalid: \"tagify__input--invalid\",\n dropdown: \"tagify__dropdown\",\n dropdownWrapper: \"tagify__dropdown__wrapper\",\n dropdownHeader: \"tagify__dropdown__header\",\n dropdownFooter: \"tagify__dropdown__footer\",\n dropdownItem: \"tagify__dropdown__item\",\n dropdownItemActive: \"tagify__dropdown__item--active\",\n dropdownItemHidden: \"tagify__dropdown__item--hidden\",\n dropdownInital: \"tagify__dropdown--initial\",\n tag: \"tagify__tag\",\n tagText: \"tagify__tag-text\",\n tagX: \"tagify__tag__removeBtn\",\n tagLoading: \"tagify__tag--loading\",\n tagEditing: \"tagify__tag--editable\",\n tagFlash: \"tagify__tag--flash\",\n tagHide: \"tagify__tag--hide\"\n },\n dropdown: {\n classname: \"\",\n enabled: 2,\n maxItems: 10,\n searchKeys: [\"value\", \"searchBy\"],\n fuzzySearch: !0,\n caseSensitive: !1,\n accentedSearch: !0,\n includeSelectedTags: !1,\n highlightFirst: !1,\n closeOnSelect: !0,\n clearOnSelect: !0,\n position: \"all\",\n appendTarget: null\n },\n hooks: {\n beforeRemoveTag: () => Promise.resolve(),\n beforePaste: () => Promise.resolve(),\n suggestionClick: () => Promise.resolve()\n }\n };\n function O() {\n this.dropdown = {};\n for (let t in this._dropdown) this.dropdown[t] = \"function\" == typeof this._dropdown[t] ? this._dropdown[t].bind(this) : this._dropdown[t];\n this.dropdown.refs();\n }\n var D = {\n refs() {\n this.DOM.dropdown = this.parseTemplate(\"dropdown\", [this.settings]), this.DOM.dropdown.content = this.DOM.dropdown.querySelector(\"[data-selector='tagify-suggestions-wrapper']\");\n },\n getHeaderRef() {\n return this.DOM.dropdown.querySelector(\"[data-selector='tagify-suggestions-header']\");\n },\n getFooterRef() {\n return this.DOM.dropdown.querySelector(\"[data-selector='tagify-suggestions-footer']\");\n },\n getAllSuggestionsRefs() {\n return [...this.DOM.dropdown.content.querySelectorAll(this.settings.classNames.dropdownItemSelector)];\n },\n show(t) {\n var e,\n i,\n s,\n n = this.settings,\n o = \"mix\" == n.mode && !n.enforceWhitelist,\n r = !n.whitelist || !n.whitelist.length,\n l = \"manual\" == n.dropdown.position;\n if (t = void 0 === t ? this.state.inputText : t, !(r && !o && !n.templates.dropdownItemNoMatch || !1 === n.dropdown.enable || this.state.isLoading || this.settings.readonly)) {\n if (clearTimeout(this.dropdownHide__bindEventsTimeout), this.suggestedListItems = this.dropdown.filterListItems(t), t && !this.suggestedListItems.length && (this.trigger(\"dropdown:noMatch\", t), n.templates.dropdownItemNoMatch && (s = n.templates.dropdownItemNoMatch.call(this, {\n value: t\n }))), !s) {\n if (this.suggestedListItems.length) t && o && !this.state.editing.scope && !a(this.suggestedListItems[0].value, t) && this.suggestedListItems.unshift({\n value: t\n });else {\n if (!t || !o || this.state.editing.scope) return this.input.autocomplete.suggest.call(this), void this.dropdown.hide();\n this.suggestedListItems = [{\n value: t\n }];\n }\n i = \"\" + (g(e = this.suggestedListItems[0]) ? e.value : e), n.autoComplete && i && 0 == i.indexOf(t) && this.input.autocomplete.suggest.call(this, e);\n }\n this.dropdown.fill(s), n.dropdown.highlightFirst && this.dropdown.highlightOption(this.DOM.dropdown.content.querySelector(n.classNames.dropdownItemSelector)), this.state.dropdown.visible || setTimeout(this.dropdown.events.binding.bind(this)), this.state.dropdown.visible = t || !0, this.state.dropdown.query = t, this.setStateSelection(), l || setTimeout(() => {\n this.dropdown.position(), this.dropdown.render();\n }), setTimeout(() => {\n this.trigger(\"dropdown:show\", this.DOM.dropdown);\n });\n }\n },\n hide(t) {\n var e = this.DOM,\n i = e.scope,\n s = e.dropdown,\n a = \"manual\" == this.settings.dropdown.position && !t;\n if (s && document.body.contains(s) && !a) return window.removeEventListener(\"resize\", this.dropdown.position), this.dropdown.events.binding.call(this, !1), i.setAttribute(\"aria-expanded\", !1), s.parentNode.removeChild(s), setTimeout(() => {\n this.state.dropdown.visible = !1;\n }, 100), this.state.dropdown.query = this.state.ddItemData = this.state.ddItemElm = this.state.selection = null, this.state.tag && this.state.tag.value.length && (this.state.flaggedTags[this.state.tag.baseOffset] = this.state.tag), this.trigger(\"dropdown:hide\", s), this;\n },\n toggle(t) {\n this.dropdown[this.state.dropdown.visible && !t ? \"hide\" : \"show\"]();\n },\n render() {\n var t,\n e,\n i,\n s = (t = this.DOM.dropdown, (i = t.cloneNode(!0)).style.cssText = \"position:fixed; top:-9999px; opacity:0\", document.body.appendChild(i), e = i.clientHeight, i.parentNode.removeChild(i), e),\n a = this.settings;\n return \"number\" == typeof a.dropdown.enabled && a.dropdown.enabled >= 0 ? (this.DOM.scope.setAttribute(\"aria-expanded\", !0), document.body.contains(this.DOM.dropdown) || (this.DOM.dropdown.classList.add(a.classNames.dropdownInital), this.dropdown.position(s), a.dropdown.appendTarget.appendChild(this.DOM.dropdown), setTimeout(() => this.DOM.dropdown.classList.remove(a.classNames.dropdownInital))), this) : this;\n },\n fill(t) {\n t = \"string\" == typeof t ? t : this.dropdown.createListHTML(t || this.suggestedListItems);\n var e,\n i = this.settings.templates.dropdownContent.call(this, t);\n this.DOM.dropdown.content.innerHTML = (e = i) ? e.replace(/\\>[\\r\\n ]+\\</g, \"><\").split(/>\\s+</).join(\"><\").trim() : \"\";\n },\n fillHeaderFooter() {\n var t = this.dropdown.filterListItems(this.state.dropdown.query),\n e = this.parseTemplate(\"dropdownHeader\", [t]),\n i = this.parseTemplate(\"dropdownFooter\", [t]),\n s = this.dropdown.getHeaderRef(),\n a = this.dropdown.getFooterRef();\n e && s !== null && s !== void 0 && s.parentNode.replaceChild(e, s), i && (a === null || a === void 0 ? void 0 : a.parentNode.replaceChild(i, a));\n },\n refilter(t) {\n t = t || this.state.dropdown.query || \"\", this.suggestedListItems = this.dropdown.filterListItems(t), this.dropdown.fill(), this.suggestedListItems.length || this.dropdown.hide(), this.trigger(\"dropdown:updated\", this.DOM.dropdown);\n },\n position(t) {\n var e = this.settings.dropdown;\n if (\"manual\" != e.position) {\n var i,\n s,\n a,\n n,\n o,\n r,\n l = this.DOM.dropdown,\n d = e.placeAbove,\n h = e.appendTarget === document.body,\n g = h ? window.pageYOffset : e.appendTarget.scrollTop,\n p = document.fullscreenElement || document.webkitFullscreenElement || document.documentElement,\n c = p.clientHeight,\n u = Math.max(p.clientWidth || 0, window.innerWidth || 0) > 480 ? e.position : \"all\",\n m = this.DOM[\"input\" == u ? \"input\" : \"scope\"];\n if (t = t || l.clientHeight, this.state.dropdown.visible) {\n if (\"text\" == u ? (a = (i = function () {\n const t = document.getSelection();\n if (t.rangeCount) {\n const e = t.getRangeAt(0),\n i = e.startContainer,\n s = e.startOffset;\n let a, n;\n if (s > 0) return n = document.createRange(), n.setStart(i, s - 1), n.setEnd(i, s), a = n.getBoundingClientRect(), {\n left: a.right,\n top: a.top,\n bottom: a.bottom\n };\n if (i.getBoundingClientRect) return i.getBoundingClientRect();\n }\n return {\n left: -9999,\n top: -9999\n };\n }()).bottom, s = i.top, n = i.left, o = \"auto\") : (r = function (t) {\n for (var e = 0, i = 0; t && t != p;) e += t.offsetLeft || 0, i += t.offsetTop || 0, t = t.parentNode;\n return {\n left: e,\n top: i\n };\n }(e.appendTarget), s = (i = m.getBoundingClientRect()).top - r.top, a = i.bottom - 1 - r.top, n = i.left - r.left, o = i.width + \"px\"), !h) {\n let t = function () {\n for (var t = 0, i = e.appendTarget.parentNode; i;) t += i.scrollTop || 0, i = i.parentNode;\n return t;\n }();\n s += t, a += t;\n }\n s = Math.floor(s), a = Math.ceil(a), d = void 0 === d ? c - i.bottom < t : d, l.style.cssText = \"left:\" + (n + window.pageXOffset) + \"px; width:\" + o + \";\" + (d ? \"top: \" + (s + g) + \"px\" : \"top: \" + (a + g) + \"px\"), l.setAttribute(\"placement\", d ? \"top\" : \"bottom\"), l.setAttribute(\"position\", u);\n }\n }\n },\n events: {\n binding() {\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\n var e = this.dropdown.events.callbacks,\n i = this.listeners.dropdown = this.listeners.dropdown || {\n position: this.dropdown.position.bind(this, null),\n onKeyDown: e.onKeyDown.bind(this),\n onMouseOver: e.onMouseOver.bind(this),\n onMouseLeave: e.onMouseLeave.bind(this),\n onClick: e.onClick.bind(this),\n onScroll: e.onScroll.bind(this)\n },\n s = t ? \"addEventListener\" : \"removeEventListener\";\n \"manual\" != this.settings.dropdown.position && (document[s](\"scroll\", i.position, !0), window[s](\"resize\", i.position), window[s](\"keydown\", i.onKeyDown)), this.DOM.dropdown[s](\"mouseover\", i.onMouseOver), this.DOM.dropdown[s](\"mouseleave\", i.onMouseLeave), this.DOM.dropdown[s](\"mousedown\", i.onClick), this.DOM.dropdown.content[s](\"scroll\", i.onScroll);\n },\n callbacks: {\n onKeyDown(t) {\n if (this.state.hasFocus && !this.state.composing) {\n var e = this.DOM.dropdown.querySelector(this.settings.classNames.dropdownItemActiveSelector),\n i = this.dropdown.getSuggestionDataByNode(e);\n switch (t.key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n case \"Down\":\n case \"Up\":\n t.preventDefault();\n var s = this.dropdown.getAllSuggestionsRefs(),\n a = \"ArrowUp\" == t.key || \"Up\" == t.key;\n e && (e = this.dropdown.getNextOrPrevOption(e, !a)), e && e.matches(this.settings.classNames.dropdownItemSelector) || (e = s[a ? s.length - 1 : 0]), this.dropdown.highlightOption(e, !0);\n break;\n case \"Escape\":\n case \"Esc\":\n this.dropdown.hide();\n break;\n case \"ArrowRight\":\n if (this.state.actions.ArrowLeft) return;\n case \"Tab\":\n if (\"mix\" != this.settings.mode && e && !this.settings.autoComplete.rightKey && !this.state.editing) {\n t.preventDefault();\n var n = this.dropdown.getMappedValue(i);\n return this.input.autocomplete.set.call(this, n), !1;\n }\n return !0;\n case \"Enter\":\n t.preventDefault(), this.settings.hooks.suggestionClick(t, {\n tagify: this,\n tagData: i,\n suggestionElm: e\n }).then(() => {\n if (e) return this.dropdown.selectOption(e), e = this.dropdown.getNextOrPrevOption(e, !a), void this.dropdown.highlightOption(e);\n this.dropdown.hide(), \"mix\" != this.settings.mode && this.addTags(this.state.inputText.trim(), !0);\n }).catch(t => t);\n break;\n case \"Backspace\":\n {\n if (\"mix\" == this.settings.mode || this.state.editing.scope) return;\n const t = this.input.raw.call(this);\n \"\" != t && 8203 != t.charCodeAt(0) || (!0 === this.settings.backspace ? this.removeTags() : \"edit\" == this.settings.backspace && setTimeout(this.editTag.bind(this), 0));\n }\n }\n }\n },\n onMouseOver(t) {\n var e = t.target.closest(this.settings.classNames.dropdownItemSelector);\n e && this.dropdown.highlightOption(e);\n },\n onMouseLeave(t) {\n this.dropdown.highlightOption();\n },\n onClick(t) {\n if (0 == t.button && t.target != this.DOM.dropdown && t.target != this.DOM.dropdown.content) {\n var e = t.target.closest(this.settings.classNames.dropdownItemSelector),\n i = this.dropdown.getSuggestionDataByNode(e);\n this.state.actions.selectOption = !0, setTimeout(() => this.state.actions.selectOption = !1, 50), this.settings.hooks.suggestionClick(t, {\n tagify: this,\n tagData: i,\n suggestionElm: e\n }).then(() => {\n e ? this.dropdown.selectOption(e, t) : this.dropdown.hide();\n }).catch(t => console.warn(t));\n }\n },\n onScroll(t) {\n var e = t.target,\n i = e.scrollTop / (e.scrollHeight - e.parentNode.clientHeight) * 100;\n this.trigger(\"dropdown:scroll\", {\n percentage: Math.round(i)\n });\n }\n }\n },\n getSuggestionDataByNode(t) {\n var e = t && t.getAttribute(\"value\");\n return this.suggestedListItems.find(t => t.value == e) || null;\n },\n getNextOrPrevOption(t) {\n let e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n var i = this.dropdown.getAllSuggestionsRefs(),\n s = i.findIndex(e => e === t);\n return e ? i[s + 1] : i[s - 1];\n },\n highlightOption(t, e) {\n var i,\n s = this.settings.classNames.dropdownItemActive;\n if (this.state.ddItemElm && (this.state.ddItemElm.classList.remove(s), this.state.ddItemElm.removeAttribute(\"aria-selected\")), !t) return this.state.ddItemData = null, this.state.ddItemElm = null, void this.input.autocomplete.suggest.call(this);\n i = this.dropdown.getSuggestionDataByNode(t), this.state.ddItemData = i, this.state.ddItemElm = t, t.classList.add(s), t.setAttribute(\"aria-selected\", !0), e && (t.parentNode.scrollTop = t.clientHeight + t.offsetTop - t.parentNode.clientHeight), this.settings.autoComplete && (this.input.autocomplete.suggest.call(this, i), this.dropdown.position());\n },\n selectOption(t, e) {\n var i = this.settings.dropdown,\n s = i.clearOnSelect,\n a = i.closeOnSelect;\n if (!t) return this.addTags(this.state.inputText, !0), void (a && this.dropdown.hide());\n e = e || {};\n var n = t.getAttribute(\"value\"),\n o = \"noMatch\" == n,\n r = this.suggestedListItems.find(t => {\n var _t$value;\n return ((_t$value = t.value) !== null && _t$value !== void 0 ? _t$value : t) == n;\n });\n this.trigger(\"dropdown:select\", {\n data: r,\n elm: t,\n event: e\n }), n && (r || o) ? (this.state.editing ? this.onEditTagDone(null, p({\n __isValid: !0\n }, this.normalizeTags([r])[0])) : this[\"mix\" == this.settings.mode ? \"addMixTags\" : \"addTags\"]([r || this.input.raw.call(this)], s), this.DOM.input.parentNode && (setTimeout(() => {\n this.DOM.input.focus(), this.toggleFocusClass(!0);\n }), a && setTimeout(this.dropdown.hide.bind(this)), t.addEventListener(\"transitionend\", () => {\n this.dropdown.fillHeaderFooter(), setTimeout(() => t.remove(), 100);\n }, {\n once: !0\n }), t.classList.add(this.settings.classNames.dropdownItemHidden))) : a && setTimeout(this.dropdown.hide.bind(this));\n },\n selectAll(t) {\n this.suggestedListItems.length = 0, this.dropdown.hide(), this.dropdown.filterListItems(\"\");\n var e = this.dropdown.filterListItems(\"\");\n return t || (e = this.state.dropdown.suggestions), this.addTags(e, !0), this;\n },\n filterListItems(t, e) {\n var i,\n s,\n a,\n n,\n o,\n r = this.settings,\n l = r.dropdown,\n d = (e = e || {}, []),\n h = [],\n p = r.whitelist,\n c = l.maxItems >= 0 ? l.maxItems : 1 / 0,\n m = l.searchKeys,\n v = 0;\n if (!(t = \"select\" == r.mode && this.value.length && this.value[0][r.tagTextProp] == t ? \"\" : t) || !m.length) return d = l.includeSelectedTags ? p : p.filter(t => !this.isTagDuplicate(g(t) ? t.value : t)), this.state.dropdown.suggestions = d, d.slice(0, c);\n function f(t, e) {\n return e.toLowerCase().split(\" \").every(e => t.includes(e.toLowerCase()));\n }\n for (o = l.caseSensitive ? \"\" + t : (\"\" + t).toLowerCase(); v < p.length; v++) {\n let t, r;\n i = p[v] instanceof Object ? p[v] : {\n value: p[v]\n };\n let c = !Object.keys(i).some(t => m.includes(t)) ? [\"value\"] : m;\n l.fuzzySearch && !e.exact ? (a = c.reduce((t, e) => t + \" \" + (i[e] || \"\"), \"\").toLowerCase().trim(), l.accentedSearch && (a = u(a), o = u(o)), t = 0 == a.indexOf(o), r = a === o, s = f(a, o)) : (t = !0, s = c.some(t => {\n var s = \"\" + (i[t] || \"\");\n return l.accentedSearch && (s = u(s), o = u(o)), l.caseSensitive || (s = s.toLowerCase()), r = s === o, e.exact ? s === o : 0 == s.indexOf(o);\n })), n = !l.includeSelectedTags && this.isTagDuplicate(g(i) ? i.value : i), s && !n && (r && t ? h.push(i) : \"startsWith\" == l.sortby && t ? d.unshift(i) : d.push(i));\n }\n return this.state.dropdown.suggestions = h.concat(d), \"function\" == typeof l.sortby ? l.sortby(h.concat(d), o) : h.concat(d).slice(0, c);\n },\n getMappedValue(t) {\n var e = this.settings.dropdown.mapValueTo;\n return e ? \"function\" == typeof e ? e(t) : t[e] || t.value : t.value;\n },\n createListHTML(t) {\n return p([], t).map((t, i) => {\n \"string\" != typeof t && \"number\" != typeof t || (t = {\n value: t\n });\n var s = this.dropdown.getMappedValue(t);\n return s = \"string\" == typeof s ? h(s) : s, this.settings.templates.dropdownItem.apply(this, [e(e({}, t), {}, {\n mappedValue: s\n }), this]);\n }).join(\"\");\n }\n };\n const M = \"@yaireo/tagify/\";\n var I,\n N = {\n empty: \"empty\",\n exceed: \"number of tags exceeded\",\n pattern: \"pattern mismatch\",\n duplicate: \"already exists\",\n notAllowed: \"not allowed\"\n },\n S = {\n wrapper: (t, e) => `<tags class=\"${e.classNames.namespace} ${e.mode ? `${e.classNames[e.mode + \"Mode\"]}` : \"\"} ${t.className}\"\\n ${e.readonly ? \"readonly\" : \"\"}\\n ${e.disabled ? \"disabled\" : \"\"}\\n ${e.required ? \"required\" : \"\"}\\n ${\"select\" === e.mode ? \"spellcheck='false'\" : \"\"}\\n tabIndex=\"-1\">\\n <span ${!e.readonly && e.userInput ? \"contenteditable\" : \"\"} tabIndex=\"0\" data-placeholder=\"${e.placeholder || \"​\"}\" aria-placeholder=\"${e.placeholder || \"\"}\"\\n class=\"${e.classNames.input}\"\\n role=\"textbox\"\\n aria-autocomplete=\"both\"\\n aria-multiline=\"${\"mix\" == e.mode}\"></span>\\n ​\\n </tags>`,\n tag(t, e) {\n let i = e.settings;\n return `<tag title=\"${t.title || t.value}\"\\n contenteditable='false'\\n spellcheck='false'\\n tabIndex=\"${i.a11y.focusableTags ? 0 : -1}\"\\n class=\"${i.classNames.tag} ${t.class || \"\"}\"\\n ${this.getAttributes(t)}>\\n <x title='' class=\"${i.classNames.tagX}\" role='button' aria-label='remove tag'></x>\\n <div>\\n <span class=\"${i.classNames.tagText}\">${t[i.tagTextProp] || t.value}</span>\\n </div>\\n </tag>`;\n },\n dropdown(t) {\n var e = t.dropdown,\n i = \"manual\" == e.position,\n s = `${t.classNames.dropdown}`;\n return `<div class=\"${i ? \"\" : s} ${e.classname}\" role=\"listbox\" aria-labelledby=\"dropdown\">\\n <div data-selector='tagify-suggestions-wrapper' class=\"${t.classNames.dropdownWrapper}\"></div>\\n </div>`;\n },\n dropdownContent(t) {\n var e = this.settings,\n i = this.state.dropdown.suggestions;\n return `\\n ${e.templates.dropdownHeader.call(this, i)}\\n ${t}\\n ${e.templates.dropdownFooter.call(this, i)}\\n `;\n },\n dropdownItem(t) {\n return `<div ${this.getAttributes(t)}\\n class='${this.settings.classNames.dropdownItem} ${t.class ? t.class : \"\"}'\\n tabindex=\"0\"\\n role=\"option\">${t.mappedValue || t.value}</div>`;\n },\n dropdownHeader(t) {\n return `<header data-selector='tagify-suggestions-header' class=\"${this.settings.classNames.dropdownHeader}\"></header>`;\n },\n dropdownFooter(t) {\n var e = t.length - this.settings.dropdown.maxItems;\n return e > 0 ? `<footer data-selector='tagify-suggestions-footer' class=\"${this.settings.classNames.dropdownFooter}\">\\n ${e} more items. Refine your search.\\n </footer>` : \"\";\n },\n dropdownItemNoMatch: null\n };\n var E = {\n customBinding() {\n this.customEventsList.forEach(t => {\n this.on(t, this.settings.callbacks[t]);\n });\n },\n binding() {\n let t = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0];\n var e,\n i = this.events.callbacks,\n s = t ? \"addEventListener\" : \"removeEventListener\";\n if (!this.state.mainEvents || !t) {\n for (var a in this.state.mainEvents = t, t && !this.listeners.main && (this.events.bindGlobal.call(this), this.settings.isJQueryPlugin && jQuery(this.DOM.originalInput).on(\"tagify.removeAllTags\", this.removeAllTags.bind(this))), e = this.listeners.main = this.listeners.main || {\n focus: [\"input\", i.onFocusBlur.bind(this)],\n keydown: [\"input\", i.onKeydown.bind(this)],\n click: [\"scope\", i.onClickScope.bind(this)],\n dblclick: [\"scope\", i.onDoubleClickScope.bind(this)],\n paste: [\"input\", i.onPaste.bind(this)],\n drop: [\"input\", i.onDrop.bind(this)],\n compositionstart: [\"input\", i.onCompositionStart.bind(this)],\n compositionend: [\"input\", i.onCompositionEnd.bind(this)]\n }) this.DOM[e[a][0]][s](a, e[a][1]);\n clearInterval(this.listeners.main.originalInputValueObserverInterval), this.listeners.main.originalInputValueObserverInterval = setInterval(i.observeOriginalInputValue.bind(this), 500);\n var n = this.listeners.main.inputMutationObserver || new MutationObserver(i.onInputDOMChange.bind(this));\n n.disconnect(), \"mix\" == this.settings.mode && n.observe(this.DOM.input, {\n childList: !0\n });\n }\n },\n bindGlobal(t) {\n var e,\n i = this.events.callbacks,\n s = t ? \"removeEventListener\" : \"addEventListener\";\n if (this.listeners && (t || !this.listeners.global)) for (e of (this.listeners.global = this.listeners.global || [{\n type: this.isIE ? \"keydown\" : \"input\",\n target: this.DOM.input,\n cb: i[this.isIE ? \"onInputIE\" : \"onInput\"].bind(this)\n }, {\n type: \"keydown\",\n target: window,\n cb: i.onWindowKeyDown.bind(this)\n }, {\n type: \"blur\",\n target: this.DOM.input,\n cb: i.onFocusBlur.bind(this)\n }, {\n type: \"click\",\n target: document,\n cb: i.onClickAnywhere.bind(this)\n }], this.listeners.global)) e.target[s](e.type, e.cb);\n },\n unbindGlobal() {\n this.events.bindGlobal.call(this, !0);\n },\n callbacks: {\n onFocusBlur(t) {\n var _this$value, _this$value$;\n var e = this.settings,\n i = t.target ? this.trim(t.target.textContent) : \"\",\n s = (_this$value = this.value) === null || _this$value === void 0 ? void 0 : (_this$value$ = _this$value[0]) === null || _this$value$ === void 0 ? void 0 : _this$value$[e.tagTextProp],\n a = t.type,\n n = e.dropdown.enabled >= 0,\n o = {\n relatedTarget: t.relatedTarget\n },\n r = this.state.actions.selectOption && (n || !e.dropdown.closeOnSelect),\n l = this.state.actions.addNew && n,\n d = t.relatedTarget && f.call(this, t.relatedTarget) && this.DOM.scope.contains(t.relatedTarget);\n if (\"blur\" == a) {\n if (t.relatedTarget === this.DOM.scope) return this.dropdown.hide(), void this.DOM.input.focus();\n this.postUpdate(), e.onChangeAfterBlur && this.triggerChangeEvent();\n }\n if (!r && !l) if (this.state.hasFocus = \"focus\" == a && +new Date(), this.toggleFocusClass(this.state.hasFocus), \"mix\" != e.mode) {\n if (\"focus\" == a) return this.trigger(\"focus\", o), void (0 !== e.dropdown.enabled && e.userInput || this.dropdown.show(this.value.length ? \"\" : void 0));\n \"blur\" == a && (this.trigger(\"blur\", o), this.loading(!1), \"select\" == e.mode && (d && (this.removeTags(), i = \"\"), s === i && (i = \"\")), i && !this.state.actions.selectOption && e.addTagOnBlur && this.addTags(i, !0)), this.DOM.input.removeAttribute(\"style\"), this.dropdown.hide();\n } else \"focus\" == a ? this.trigger(\"focus\", o) : \"blur\" == t.type && (this.trigger(\"blur\", o), this.loading(!1), this.dropdown.hide(), this.state.dropdown.visible = void 0, this.setStateSelection());\n },\n onCompositionStart(t) {\n this.state.composing = !0;\n },\n onCompositionEnd(t) {\n this.state.composing = !1;\n },\n onWindowKeyDown(t) {\n var e,\n i = document.activeElement,\n s = f.call(this, i) && this.DOM.scope.contains(document.activeElement),\n a = s && i.hasAttribute(\"readonly\");\n if (s && !a) switch (e = i.nextElementSibling, t.key) {\n case \"Backspace\":\n this.settings.readonly || (this.removeTags(i), (e || this.DOM.input).focus());\n break;\n case \"Enter\":\n setTimeout(this.editTag.bind(this), 0, i);\n }\n },\n onKeydown(t) {\n var e = this.settings;\n if (!this.state.composing && e.userInput) {\n \"select\" == e.mode && e.enforceWhitelist && this.value.length && \"Tab\" != t.key && t.preventDefault();\n var i = this.trim(t.target.textContent);\n if (this.trigger(\"keydown\", {\n event: t\n }), \"mix\" == e.mode) {\n switch (t.key) {\n case \"Left\":\n case \"ArrowLeft\":\n this.state.actions.ArrowLeft = !0;\n break;\n case \"Delete\":\n case \"Backspace\":\n if (this.state.editing) return;\n var s = document.getSelection(),\n a = \"Delete\" == t.key && s.anchorOffset == (s.anchorNode.length || 0),\n n = s.anchorNode.previousSibling,\n o = 1 == s.anchorNode.nodeType || !s.anchorOffset && n && 1 == n.nodeType && s.anchorNode.previousSibling;\n r(this.DOM.input.innerHTML);\n var l,\n h,\n g,\n p = this.getTagElms(),\n c = 1 === s.anchorNode.length && s.anchorNode.nodeValue == String.fromCharCode(8203);\n if (\"edit\" == e.backspace && o) return l = 1 == s.anchorNode.nodeType ? null : s.anchorNode.previousElementSibling, setTimeout(this.editTag.bind(this), 0, l), void t.preventDefault();\n if (m() && o instanceof Element) return g = d(o), o.hasAttribute(\"readonly\") || o.remove(), this.DOM.input.focus(), void setTimeout(() => {\n b(g), this.DOM.input.click();\n });\n if (\"BR\" == s.anchorNode.nodeName) return;\n if ((a || o) && 1 == s.anchorNode.nodeType ? h = 0 == s.anchorOffset ? a ? p[0] : null : p[Math.min(p.length, s.anchorOffset) - 1] : a ? h = s.anchorNode.nextElementSibling : o instanceof Element && (h = o), 3 == s.anchorNode.nodeType && !s.anchorNode.nodeValue && s.anchorNode.previousElementSibling && t.preventDefault(), (o || a) && !e.backspace) return void t.preventDefault();\n if (\"Range\" != s.type && !s.anchorOffset && s.anchorNode == this.DOM.input && \"Delete\" != t.key) return void t.preventDefault();\n if (\"Range\" != s.type && h && h.hasAttribute(\"readonly\")) return void b(d(h));\n \"Delete\" == t.key && c && w(s.anchorNode.nextSibling) && this.removeTags(s.anchorNode.nextSibling), clearTimeout(I), I = setTimeout(() => {\n var t = document.getSelection();\n r(this.DOM.input.innerHTML), !a && t.anchorNode.previousSibling, this.value = [].map.call(p, (t, e) => {\n var i = w(t);\n if (t.parentNode || i.readonly) return i;\n this.trigger(\"remove\", {\n tag: t,\n index: e,\n data: i\n });\n }).filter(t => t);\n }, 20);\n }\n return !0;\n }\n switch (t.key) {\n case \"Backspace\":\n \"select\" == e.mode && e.enforceWhitelist && this.value.length ? this.removeTags() : this.state.dropdown.visible && \"manual\" != e.dropdown.position || \"\" != t.target.textContent && 8203 != i.charCodeAt(0) || (!0 === e.backspace ? this.removeTags() : \"edit\" == e.backspace && setTimeout(this.editTag.bind(this), 0));\n break;\n case \"Esc\":\n case \"Escape\":\n if (this.state.dropdown.visible) return;\n t.target.blur();\n break;\n case \"Down\":\n case \"ArrowDown\":\n this.state.dropdown.visible || this.dropdown.show();\n break;\n case \"ArrowRight\":\n {\n let t = this.state.inputSuggestion || this.state.ddItemData;\n if (t && e.autoComplete.rightKey) return void this.addTags([t], !0);\n break;\n }\n case \"Tab\":\n {\n let s = \"select\" == e.mode;\n if (!i || s) return !0;\n t.preventDefault();\n }\n case \"Enter\":\n if (this.state.dropdown.visible && \"manual\" != e.dropdown.position) return;\n t.preventDefault(), setTimeout(() => {\n this.state.dropdown.visible || this.state.actions.selectOption || this.addTags(i, !0);\n });\n }\n }\n },\n onInput(t) {\n this.postUpdate();\n var e = this.settings;\n if (\"mix\" == e.mode) return this.events.callbacks.onMixTagsInput.call(this, t);\n var i = this.input.normalize.call(this),\n s = i.length >= e.dropdown.enabled,\n a = {\n value: i,\n inputElm: this.DOM.input\n },\n n = this.validateTag({\n value: i\n });\n \"select\" == e.mode && this.toggleScopeValidation(n), a.isValid = n, this.state.inputText != i && (this.input.set.call(this, i, !1), -1 != i.search(e.delimiters) ? this.addTags(i) && this.input.set.call(this) : e.dropdown.enabled >= 0 && this.dropdown[s ? \"show\" : \"hide\"](i), this.trigger(\"input\", a));\n },\n onMixTagsInput(t) {\n var e,\n i,\n s,\n a,\n n,\n o,\n r,\n l,\n d = this.settings,\n h = this.value.length,\n g = this.getTagElms(),\n c = document.createDocumentFragment(),\n u = window.getSelection().getRangeAt(0),\n v = [].map.call(g, t => w(t).value);\n if (\"deleteContentBackward\" == t.inputType && m() && this.events.callbacks.onKeydown.call(this, {\n target: t.target,\n key: \"Backspace\"\n }), y(this.getTagElms()), this.value.slice().forEach(t => {\n t.readonly && !v.includes(t.value) && c.appendChild(this.createTagElem(t));\n }), c.childNodes.length && (u.insertNode(c), this.setRangeAtStartEnd(!1, c.lastChild)), g.length != h) return this.value = [].map.call(this.getTagElms(), t => w(t)), void this.update({\n withoutChangeEvent: !0\n });\n if (this.hasMaxTags()) return !0;\n if (window.getSelection && (o = window.getSelection()).rangeCount > 0 && 3 == o.anchorNode.nodeType) {\n if ((u = o.getRangeAt(0).cloneRange()).collapse(!0), u.setStart(o.focusNode, 0), s = (e = u.toString().slice(0, u.endOffset)).split(d.pattern).length - 1, (i = e.match(d.pattern)) && (a = e.slice(e.lastIndexOf(i[i.length - 1]))), a) {\n if (this.state.actions.ArrowLeft = !1, this.state.tag = {\n prefix: a.match(d.pattern)[0],\n value: a.replace(d.pattern, \"\")\n }, this.state.tag.baseOffset = o.baseOffset - this.state.tag.value.length, l = this.state.tag.value.match(d.delimiters)) return this.state.tag.value = this.state.tag.value.replace(d.delimiters, \"\"), this.state.tag.delimiters = l[0], this.addTags(this.state.tag.value, d.dropdown.clearOnSelect), void this.dropdown.hide();\n n = this.state.tag.value.length >= d.dropdown.enabled;\n try {\n r = (r = this.state.flaggedTags[this.state.tag.baseOffset]).prefix == this.state.tag.prefix && r.value[0] == this.state.tag.value[0], this.state.flaggedTags[this.state.tag.baseOffset] && !this.state.tag.value && delete this.state.flaggedTags[this.state.tag.baseOffset];\n } catch (t) {}\n (r || s < this.state.mixMode.matchedPatternCount) && (n = !1);\n } else this.state.flaggedTags = {};\n this.state.mixMode.matchedPatternCount = s;\n }\n setTimeout(() => {\n this.update({\n withoutChangeEvent: !0\n }), this.trigger(\"input\", p({}, this.state.tag, {\n textContent: this.DOM.input.textContent\n })), this.state.tag && this.dropdown[n ? \"show\" : \"hide\"](this.state.tag.value);\n }, 10);\n },\n onInputIE(t) {\n var e = this;\n setTimeout(function () {\n e.events.callbacks.onInput.call(e, t);\n });\n },\n observeOriginalInputValue() {\n this.DOM.originalInput.parentNode || this.destroy(), this.DOM.originalInput.value != this.DOM.originalInput.tagifyValue && this.loadOriginalValues();\n },\n onClickAnywhere(t) {\n t.target == this.DOM.scope || this.DOM.scope.contains(t.target) || (this.toggleFocusClass(!1), this.state.hasFocus = !1);\n },\n onClickScope(t) {\n var e = this.settings,\n i = t.target.closest(\".\" + e.classNames.tag),\n s = +new Date() - this.state.hasFocus;\n if (t.target != this.DOM.scope) {\n if (!t.target.classList.contains(e.classNames.tagX)) return i ? (this.trigger(\"click\", {\n tag: i,\n index: this.getNodeIndex(i),\n data: w(i),\n event: t\n }), void (1 !== e.editTags && 1 !== e.editTags.clicks || this.events.callbacks.onDoubleClickScope.call(this, t))) : void (t.target == this.DOM.input && (\"mix\" == e.mode && this.fixFirefoxLastTagNoCaret(), s > 500) ? this.state.dropdown.visible ? this.dropdown.hide() : 0 === e.dropdown.enabled && \"mix\" != e.mode && this.dropdown.show(this.value.length ? \"\" : void 0) : \"select\" != e.mode || 0 !== e.dropdown.enabled || this.state.dropdown.visible || this.dropdown.show());\n this.removeTags(t.target.parentNode);\n } else this.DOM.input.focus();\n },\n onPaste(t) {\n t.preventDefault();\n var e,\n i,\n s = this.settings;\n if (\"select\" == s.mode && s.enforceWhitelist || !s.userInput) return !1;\n s.readonly || (e = t.clipboardData || window.clipboardData, i = e.getData(\"Text\"), s.hooks.beforePaste(t, {\n tagify: this,\n pastedText: i,\n clipboardData: e\n }).then(e => {\n void 0 === e && (e = i), e && (this.injectAtCaret(e, window.getSelection().getRangeAt(0)), \"mix\" == this.settings.mode ? this.events.callbacks.onMixTagsInput.call(this, t) : this.settings.pasteAsTags ? this.addTags(this.state.inputText + e, !0) : this.state.inputText = e);\n }).catch(t => t));\n },\n onDrop(t) {\n t.preventDefault();\n },\n onEditTagInput(t, e) {\n var i = t.closest(\".\" + this.settings.classNames.tag),\n s = this.getNodeIndex(i),\n a = w(i),\n n = this.input.normalize.call(this, t),\n o = {\n [this.settings.tagTextProp]: n,\n __tagId: a.__tagId\n },\n r = this.validateTag(o);\n this.editTagChangeDetected(p(a, o)) || !0 !== t.originalIsValid || (r = !0), i.classList.toggle(this.settings.classNames.tagInvalid, !0 !== r), a.__isValid = r, i.title = !0 === r ? a.title || a.value : r, n.length >= this.settings.dropdown.enabled && (this.state.editing && (this.state.editing.value = n), this.dropdown.show(n)), this.trigger(\"edit:input\", {\n tag: i,\n index: s,\n data: p({}, this.value[s], {\n newValue: n\n }),\n event: e\n });\n },\n onEditTagPaste(t, e) {\n var i = (e.clipboardData || window.clipboardData).getData(\"Text\");\n e.preventDefault();\n var s = T(i);\n this.setRangeAtStartEnd(!1, s);\n },\n onEditTagFocus(t) {\n this.state.editing = {\n scope: t,\n input: t.querySelector(\"[contenteditable]\")\n };\n },\n onEditTagBlur(t) {\n if (this.state.hasFocus || this.toggleFocusClass(), this.DOM.scope.contains(t)) {\n var e,\n i,\n s = this.settings,\n a = t.closest(\".\" + s.classNames.tag),\n n = w(a),\n o = this.input.normalize.call(this, t),\n r = {\n [s.tagTextProp]: o,\n __tagId: n.__tagId\n },\n l = n.__originalData,\n d = this.editTagChangeDetected(p(n, r)),\n h = this.validateTag(r);\n if (o) {\n if (d) {\n if (e = this.hasMaxTags(), i = p({}, l, {\n [s.tagTextProp]: this.trim(o),\n __isValid: h\n }), s.transformTag.call(this, i, l), !0 !== (h = (!e || !0 === l.__isValid) && this.validateTag(i))) {\n if (this.trigger(\"invalid\", {\n data: i,\n tag: a,\n message: h\n }), s.editTags.keepInvalid) return;\n s.keepInvalidTags ? i.__isValid = h : i = l;\n } else s.keepInvalidTags && (delete i.title, delete i[\"aria-invalid\"], delete i.class);\n this.onEditTagDone(a, i);\n } else this.onEditTagDone(a, l);\n } else this.onEditTagDone(a);\n }\n },\n onEditTagkeydown(t, e) {\n if (!this.state.composing) switch (this.trigger(\"edit:keydown\", {\n event: t\n }), t.key) {\n case \"Esc\":\n case \"Escape\":\n e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML, e), this.state.editing = !1;\n case \"Enter\":\n case \"Tab\":\n t.preventDefault(), t.target.blur();\n }\n },\n onDoubleClickScope(t) {\n var e,\n i,\n s = t.target.closest(\".\" + this.settings.classNames.tag),\n a = w(s),\n n = this.settings;\n s && n.userInput && !1 !== a.editable && (e = s.classList.contains(this.settings.classNames.tagEditing), i = s.hasAttribute(\"readonly\"), \"select\" == n.mode || n.readonly || e || i || !this.settings.editTags || this.editTag(s), this.toggleFocusClass(!0), this.trigger(\"dblclick\", {\n tag: s,\n index: this.getNodeIndex(s),\n data: w(s)\n }));\n },\n onInputDOMChange(t) {\n t.forEach(t => {\n t.addedNodes.forEach(t => {\n var _t$previousSibling;\n if (\"<div><br></div>\" == t.outerHTML) t.replaceWith(document.createElement(\"br\"));else if (1 == t.nodeType && t.querySelector(this.settings.classNames.tagSelector)) {\n let e = document.createTextNode(\"\");\n 3 == t.childNodes[0].nodeType && \"BR\" != t.previousSibling.nodeName && (e = document.createTextNode(\"\\n\")), t.replaceWith(e, ...[...t.childNodes].slice(0, -1)), b(e);\n } else if (f.call(this, t)) if (3 != ((_t$previousSibling = t.previousSibling) === null || _t$previousSibling === void 0 ? void 0 : _t$previousSibling.nodeType) || t.previousSibling.textContent || t.previousSibling.remove(), t.previousSibling && \"BR\" == t.previousSibling.nodeName) {\n t.previousSibling.replaceWith(\"\\n\" + s);\n let e = t.nextSibling,\n i = \"\";\n for (; e;) i += e.textContent, e = e.nextSibling;\n i.trim() && b(t.previousSibling);\n } else t.previousSibling && !w(t.previousSibling) || t.before(s);\n }), t.removedNodes.forEach(t => {\n t && \"BR\" == t.nodeName && f.call(this, e) && (this.removeTags(e), this.fixFirefoxLastTagNoCaret());\n });\n });\n var e = this.DOM.input.lastChild;\n e && \"\" == e.nodeValue && e.remove(), e && \"BR\" == e.nodeName || this.DOM.input.appendChild(document.createElement(\"br\"));\n }\n }\n };\n function _(t, e) {\n if (!t) {\n console.warn(\"Tagify:\", \"input element not found\", t);\n const e = new Proxy(this, {\n get: () => () => e\n });\n return e;\n }\n if (t.__tagify) return console.warn(\"Tagify: \", \"input element is already Tagified - Same instance is returned.\", t), t.__tagify;\n var i;\n p(this, function (t) {\n var e = document.createTextNode(\"\");\n function i(t, i, s) {\n s && i.split(/\\s+/g).forEach(i => e[t + \"EventListener\"].call(e, i, s));\n }\n return {\n off(t, e) {\n return i(\"remove\", t, e), this;\n },\n on(t, e) {\n return e && \"function\" == typeof e && i(\"add\", t, e), this;\n },\n trigger(i, s, a) {\n var n;\n if (a = a || {\n cloneData: !0\n }, i) if (t.settings.isJQueryPlugin) \"remove\" == i && (i = \"removeTag\"), jQuery(t.DOM.originalInput).triggerHandler(i, [s]);else {\n try {\n var o = \"object\" == typeof s ? s : {\n value: s\n };\n if ((o = a.cloneData ? p({}, o) : o).tagify = this, s.event && (o.event = this.cloneEvent(s.event)), s instanceof Object) for (var r in s) s[r] instanceof HTMLElement && (o[r] = s[r]);\n n = new CustomEvent(i, {\n detail: o\n });\n } catch (t) {\n console.warn(t);\n }\n e.dispatchEvent(n);\n }\n }\n };\n }(this)), this.isFirefox = /firefox|fxios/i.test(navigator.userAgent) && !/seamonkey/i.test(navigator.userAgent), this.isIE = window.document.documentMode, e = e || {}, this.getPersistedData = (i = e.id, t => {\n let e,\n s = \"/\" + t;\n if (1 == localStorage.getItem(M + i + \"/v\", 1)) try {\n e = JSON.parse(localStorage[M + i + s]);\n } catch (t) {}\n return e;\n }), this.setPersistedData = (t => t ? (localStorage.setItem(M + t + \"/v\", 1), (e, i) => {\n let s = \"/\" + i,\n a = JSON.stringify(e);\n e && i && (localStorage.setItem(M + t + s, a), dispatchEvent(new Event(\"storage\")));\n }) : () => {})(e.id), this.clearPersistedData = (t => e => {\n const i = M + \"/\" + t + \"/\";\n if (e) localStorage.removeItem(i + e);else for (let t in localStorage) t.includes(i) && localStorage.removeItem(t);\n })(e.id), this.applySettings(t, e), this.state = {\n inputText: \"\",\n editing: !1,\n composing: !1,\n actions: {},\n mixMode: {},\n dropdown: {},\n flaggedTags: {}\n }, this.value = [], this.listeners = {}, this.DOM = {}, this.build(t), O.call(this), this.getCSSVars(), this.loadOriginalValues(), this.events.customBinding.call(this), this.events.binding.call(this), t.autofocus && this.DOM.input.focus(), t.__tagify = this;\n }\n return _.prototype = {\n _dropdown: D,\n getSetTagData: w,\n helpers: {\n sameStr: a,\n removeCollectionProp: n,\n omit: o,\n isObject: g,\n parseHTML: l,\n escapeHTML: h,\n extend: p,\n concatWithoutDups: c,\n getUID: v,\n isNodeTag: f\n },\n customEventsList: [\"change\", \"add\", \"remove\", \"invalid\", \"input\", \"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\"],\n trim(t) {\n return this.settings.trim && t && \"string\" == typeof t ? t.trim() : t;\n },\n parseHTML: l,\n templates: S,\n parseTemplate(t, e) {\n return l((t = this.settings.templates[t] || t).apply(this, e));\n },\n set whitelist(t) {\n const e = t && Array.isArray(t);\n this.settings.whitelist = e ? t : [], this.setPersistedData(e ? t : [], \"whitelist\");\n },\n get whitelist() {\n return this.settings.whitelist;\n },\n generateClassSelectors(t) {\n for (let e in t) {\n let i = e;\n Object.defineProperty(t, i + \"Selector\", {\n get() {\n return \".\" + this[i].split(\" \")[0];\n }\n });\n }\n },\n applySettings(t, i) {\n var _i$dropdown, _i$dropdown2;\n x.templates = this.templates;\n var s = p({}, x, \"mix\" == i.mode ? {\n dropdown: {\n position: \"text\"\n }\n } : {}),\n a = this.settings = p({}, s, i);\n if (a.disabled = t.hasAttribute(\"disabled\"), a.readonly = a.readonly || t.hasAttribute(\"readonly\"), a.placeholder = h(t.getAttribute(\"placeholder\") || a.placeholder || \"\"), a.required = t.hasAttribute(\"required\"), this.generateClassSelectors(a.classNames), void 0 === a.dropdown.includeSelectedTags && (a.dropdown.includeSelectedTags = a.duplicates), this.isIE && (a.autoComplete = !1), [\"whitelist\", \"blacklist\"].forEach(e => {\n var i = t.getAttribute(\"data-\" + e);\n i && (i = i.split(a.delimiters)) instanceof Array && (a[e] = i);\n }), \"autoComplete\" in i && !g(i.autoComplete) && (a.autoComplete = x.autoComplete, a.autoComplete.enabled = i.autoComplete), \"mix\" == a.mode && (a.pattern = a.pattern || /@/, a.autoComplete.rightKey = !0, a.delimiters = i.delimiters || null, a.tagTextProp && !a.dropdown.searchKeys.includes(a.tagTextProp) && a.dropdown.searchKeys.push(a.tagTextProp)), t.pattern) try {\n a.pattern = new RegExp(t.pattern);\n } catch (t) {}\n if (a.delimiters) {\n a._delimiters = a.delimiters;\n try {\n a.delimiters = new RegExp(this.settings.delimiters, \"g\");\n } catch (t) {}\n }\n a.disabled && (a.userInput = !1), this.TEXTS = e(e({}, N), a.texts || {}), (\"select\" != a.mode || (_i$dropdown = i.dropdown) !== null && _i$dropdown !== void 0 && _i$dropdown.enabled) && a.userInput || (a.dropdown.enabled = 0), a.dropdown.appendTarget = ((_i$dropdown2 = i.dropdown) === null || _i$dropdown2 === void 0 ? void 0 : _i$dropdown2.appendTarget) || document.body;\n let n = this.getPersistedData(\"whitelist\");\n Array.isArray(n) && (this.whitelist = Array.isArray(a.whitelist) ? c(a.whitelist, n) : n);\n },\n getAttributes(t) {\n var e,\n i = this.getCustomAttributes(t),\n s = \"\";\n for (e in i) s += \" \" + e + (void 0 !== t[e] ? `=\"${i[e]}\"` : \"\");\n return s;\n },\n getCustomAttributes(t) {\n if (!g(t)) return \"\";\n var e,\n i = {};\n for (e in t) \"__\" != e.slice(0, 2) && \"class\" != e && t.hasOwnProperty(e) && void 0 !== t[e] && (i[e] = h(t[e]));\n return i;\n },\n setStateSelection() {\n var t = window.getSelection(),\n e = {\n anchorOffset: t.anchorOffset,\n anchorNode: t.anchorNode,\n range: t.getRangeAt && t.rangeCount && t.getRangeAt(0)\n };\n return this.state.selection = e, e;\n },\n getCSSVars() {\n var t = getComputedStyle(this.DOM.scope, null);\n var e;\n this.CSSVars = {\n tagHideTransition: (t => {\n let e = t.value;\n return \"s\" == t.unit ? 1e3 * e : e;\n })(function (t) {\n if (!t) return {};\n var e = (t = t.trim().split(\" \")[0]).split(/\\d+/g).filter(t => t).pop().trim();\n return {\n value: +t.split(e).filter(t => t)[0].trim(),\n unit: e\n };\n }((e = \"tag-hide-transition\", t.getPropertyValue(\"--\" + e))))\n };\n },\n build(t) {\n var e = this.DOM;\n this.settings.mixMode.integrated ? (e.originalInput = null, e.scope = t, e.input = t) : (e.originalInput = t, e.originalInput_tabIndex = t.tabIndex, e.scope = this.parseTemplate(\"wrapper\", [t, this.settings]), e.input = e.scope.querySelector(this.settings.classNames.inputSelector), t.parentNode.insertBefore(e.scope, t), t.tabIndex = -1);\n },\n destroy() {\n this.events.unbindGlobal.call(this), this.DOM.scope.parentNode.removeChild(this.DOM.scope), this.DOM.originalInput.tabIndex = this.DOM.originalInput_tabIndex, delete this.DOM.originalInput.__tagify, this.dropdown.hide(!0), clearTimeout(this.dropdownHide__bindEventsTimeout), clearInterval(this.listeners.main.originalInputValueObserverInterval);\n },\n loadOriginalValues(t) {\n var e,\n i = this.settings;\n if (this.state.blockChangeEvent = !0, void 0 === t) {\n const e = this.getPersistedData(\"value\");\n t = e && !this.DOM.originalInput.value ? e : i.mixMode.integrated ? this.DOM.input.textContent : this.DOM.originalInput.value;\n }\n if (this.removeAllTags(), t) {\n if (\"mix\" == i.mode) this.parseMixTags(t), (e = this.DOM.input.lastChild) && \"BR\" == e.tagName || this.DOM.input.insertAdjacentHTML(\"beforeend\", \"<br>\");else {\n try {\n JSON.parse(t) instanceof Array && (t = JSON.parse(t));\n } catch (t) {}\n this.addTags(t, !0).forEach(t => t && t.classList.add(i.classNames.tagNoAnimation));\n }\n } else this.postUpdate();\n this.state.lastOriginalValueReported = i.mixMode.integrated ? \"\" : this.DOM.originalInput.value;\n },\n cloneEvent(t) {\n var e = {};\n for (var i in t) \"path\" != i && (e[i] = t[i]);\n return e;\n },\n loading(t) {\n return this.state.isLoading = t, this.DOM.scope.classList[t ? \"add\" : \"remove\"](this.settings.classNames.scopeLoading), this;\n },\n tagLoading(t, e) {\n return t && t.classList[e ? \"add\" : \"remove\"](this.settings.classNames.tagLoading), this;\n },\n toggleClass(t, e) {\n \"string\" == typeof t && this.DOM.scope.classList.toggle(t, e);\n },\n toggleScopeValidation(t) {\n var e = !0 === t || void 0 === t;\n !this.settings.required && t && t === this.TEXTS.empty && (e = !0), this.toggleClass(this.settings.classNames.tagInvalid, !e), this.DOM.scope.title = e ? \"\" : t;\n },\n toggleFocusClass(t) {\n this.toggleClass(this.settings.classNames.focus, !!t);\n },\n triggerChangeEvent: function () {\n if (!this.settings.mixMode.integrated) {\n var t = this.DOM.originalInput,\n e = this.state.lastOriginalValueReported !== t.value,\n i = new CustomEvent(\"change\", {\n bubbles: !0\n });\n e && (this.state.lastOriginalValueReported = t.value, i.simulated = !0, t._valueTracker && t._valueTracker.setValue(Math.random()), t.dispatchEvent(i), this.trigger(\"change\", this.state.lastOriginalValueReported), t.value = this.state.lastOriginalValueReported);\n }\n },\n events: E,\n fixFirefoxLastTagNoCaret() {},\n setRangeAtStartEnd(t, e) {\n if (e) {\n t = \"number\" == typeof t ? t : !!t, e = e.lastChild || e;\n var i = document.getSelection();\n if (i.focusNode instanceof Element && !this.DOM.input.contains(i.focusNode)) return !0;\n try {\n i.rangeCount >= 1 && [\"Start\", \"End\"].forEach(s => i.getRangeAt(0)[\"set\" + s](e, t || e.length));\n } catch (t) {}\n }\n },\n insertAfterTag(t, e) {\n if (e = e || this.settings.mixMode.insertAfterTag, t && t.parentNode && e) return e = \"string\" == typeof e ? document.createTextNode(e) : e, t.parentNode.insertBefore(e, t.nextSibling), e;\n },\n editTagChangeDetected(t) {\n var e = t.__originalData;\n for (var i in e) if (!this.dataProps.includes(i) && t[i] != e[i]) return !0;\n return !1;\n },\n getTagTextNode(t) {\n return t.querySelector(this.settings.classNames.tagTextSelector);\n },\n setTagTextNode(t, e) {\n this.getTagTextNode(t).innerHTML = h(e);\n },\n editTag(t, e) {\n t = t || this.getLastTag(), e = e || {}, this.dropdown.hide();\n var i = this.settings,\n s = this.getTagTextNode(t),\n a = this.getNodeIndex(t),\n n = w(t),\n o = this.events.callbacks,\n r = this,\n l = !0;\n if (s) {\n if (!(n instanceof Object && \"editable\" in n) || n.editable) return n = w(t, {\n __originalData: p({}, n),\n __originalHTML: t.cloneNode(!0)\n }), w(n.__originalHTML, n.__originalData), s.setAttribute(\"contenteditable\", !0), t.classList.add(i.classNames.tagEditing), s.addEventListener(\"focus\", o.onEditTagFocus.bind(this, t)), s.addEventListener(\"blur\", function () {\n setTimeout(() => o.onEditTagBlur.call(r, r.getTagTextNode(t)));\n }), s.addEventListener(\"input\", o.onEditTagInput.bind(this, s)), s.addEventListener(\"paste\", o.onEditTagPaste.bind(this, s)), s.addEventListener(\"keydown\", e => o.onEditTagkeydown.call(this, e, t)), s.addEventListener(\"compositionstart\", o.onCompositionStart.bind(this)), s.addEventListener(\"compositionend\", o.onCompositionEnd.bind(this)), e.skipValidation || (l = this.editTagToggleValidity(t)), s.originalIsValid = l, this.trigger(\"edit:start\", {\n tag: t,\n index: a,\n data: n,\n isValid: l\n }), s.focus(), this.setRangeAtStartEnd(!1, s), this;\n } else console.warn(\"Cannot find element in Tag template: .\", i.classNames.tagTextSelector);\n },\n editTagToggleValidity(t, e) {\n var i;\n if (e = e || w(t)) return (i = !(\"__isValid\" in e) || !0 === e.__isValid) || this.removeTagsFromValue(t), this.update(), t.classList.toggle(this.settings.classNames.tagNotAllowed, !i), e.__isValid = i, e.__isValid;\n console.warn(\"tag has no data: \", t, e);\n },\n onEditTagDone(t, e) {\n e = e || {};\n var i = {\n tag: t = t || this.state.editing.scope,\n index: this.getNodeIndex(t),\n previousData: w(t),\n data: e\n };\n this.trigger(\"edit:beforeUpdate\", i, {\n cloneData: !1\n }), this.state.editing = !1, delete e.__originalData, delete e.__originalHTML, t && e[this.settings.tagTextProp] ? (t = this.replaceTag(t, e), this.editTagToggleValidity(t, e), this.settings.a11y.focusableTags ? t.focus() : b(t)) : t && this.removeTags(t), this.trigger(\"edit:updated\", i), this.dropdown.hide(), this.settings.keepInvalidTags && this.reCheckInvalidTags();\n },\n replaceTag(t, e) {\n e && e.value || (e = t.__tagifyTagData), e.__isValid && 1 != e.__isValid && p(e, this.getInvalidTagAttrs(e, e.__isValid));\n var i = this.createTagElem(e);\n return t.parentNode.replaceChild(i, t), this.updateValueByDOMTags(), i;\n },\n updateValueByDOMTags() {\n this.value.length = 0, [].forEach.call(this.getTagElms(), t => {\n t.classList.contains(this.settings.classNames.tagNotAllowed.split(\" \")[0]) || this.value.push(w(t));\n }), this.update();\n },\n injectAtCaret(t, e) {\n var _this$state$selection;\n return !(e = e || ((_this$state$selection = this.state.selection) === null || _this$state$selection === void 0 ? void 0 : _this$state$selection.range)) && t ? (this.appendMixTags(t), this) : (T(t, e), this.setRangeAtStartEnd(!1, t), this.updateValueByDOMTags(), this.update(), this);\n },\n input: {\n set() {\n let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : \"\",\n e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];\n var i = this.settings.dropdown.closeOnSelect;\n this.state.inputText = t, e && (this.DOM.input.innerHTML = h(\"\" + t)), !t && i && this.dropdown.hide.bind(this), this.input.autocomplete.suggest.call(this), this.input.validate.call(this);\n },\n raw() {\n return this.DOM.input.textContent;\n },\n validate() {\n var t = !this.state.inputText || !0 === this.validateTag({\n value: this.state.inputText\n });\n return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid, !t), t;\n },\n normalize(t) {\n var e = t || this.DOM.input,\n i = [];\n e.childNodes.forEach(t => 3 == t.nodeType && i.push(t.nodeValue)), i = i.join(\"\\n\");\n try {\n i = i.replace(/(?:\\r\\n|\\r|\\n)/g, this.settings.delimiters.source.charAt(0));\n } catch (t) {}\n return i = i.replace(/\\s/g, \" \"), this.trim(i);\n },\n autocomplete: {\n suggest(t) {\n if (this.settings.autoComplete.enabled) {\n \"string\" == typeof (t = t || {\n value: \"\"\n }) && (t = {\n value: t\n });\n var e = this.dropdown.getMappedValue(t);\n if (\"number\" != typeof e) {\n var i = e.substr(0, this.state.inputText.length).toLowerCase(),\n s = e.substring(this.state.inputText.length);\n e && this.state.inputText && i == this.state.inputText.toLowerCase() ? (this.DOM.input.setAttribute(\"data-suggest\", s), this.state.inputSuggestion = t) : (this.DOM.input.removeAttribute(\"data-suggest\"), delete this.state.inputSuggestion);\n }\n }\n },\n set(t) {\n var e = this.DOM.input.getAttribute(\"data-suggest\"),\n i = t || (e ? this.state.inputText + e : null);\n return !!i && (\"mix\" == this.settings.mode ? this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix + i)) : (this.input.set.call(this, i), this.setRangeAtStartEnd(!1, this.DOM.input)), this.input.autocomplete.suggest.call(this), this.dropdown.hide(), !0);\n }\n }\n },\n getTagIdx(t) {\n return this.value.findIndex(e => e.__tagId == (t || {}).__tagId);\n },\n getNodeIndex(t) {\n var e = 0;\n if (t) for (; t = t.previousElementSibling;) e++;\n return e;\n },\n getTagElms() {\n for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) e[i] = arguments[i];\n var s = \".\" + [...this.settings.classNames.tag.split(\" \"), ...e].join(\".\");\n return [].slice.call(this.DOM.scope.querySelectorAll(s));\n },\n getLastTag() {\n var t = this.DOM.scope.querySelectorAll(`${this.settings.classNames.tagSelector}:not(.${this.settings.classNames.tagHide}):not([readonly])`);\n return t[t.length - 1];\n },\n isTagDuplicate(t, e, i) {\n var s = 0;\n if (\"select\" == this.settings.mode) return !1;\n for (let n of this.value) {\n a(this.trim(\"\" + t), n.value, e) && i != n.__tagId && s++;\n }\n return s;\n },\n getTagIndexByValue(t) {\n var e = [],\n i = this.settings.dropdown.caseSensitive;\n return this.getTagElms().forEach((s, n) => {\n s.__tagifyTagData && a(this.trim(s.__tagifyTagData.value), t, i) && e.push(n);\n }), e;\n },\n getTagElmByValue(t) {\n var e = this.getTagIndexByValue(t)[0];\n return this.getTagElms()[e];\n },\n flashTag(t) {\n t && (t.classList.add(this.settings.classNames.tagFlash), setTimeout(() => {\n t.classList.remove(this.settings.classNames.tagFlash);\n }, 100));\n },\n isTagBlacklisted(t) {\n return t = this.trim(t.toLowerCase()), this.settings.blacklist.filter(e => (\"\" + e).toLowerCase() == t).length;\n },\n isTagWhitelisted(t) {\n return !!this.getWhitelistItem(t);\n },\n getWhitelistItem(t, e, i) {\n e = e || \"value\";\n var s,\n n = this.settings;\n return (i = i || n.whitelist).some(i => {\n var o = \"string\" == typeof i ? i : i[e] || i.value;\n if (a(o, t, n.dropdown.caseSensitive, n.trim)) return s = \"string\" == typeof i ? {\n value: i\n } : i, !0;\n }), s || \"value\" != e || \"value\" == n.tagTextProp || (s = this.getWhitelistItem(t, n.tagTextProp, i)), s;\n },\n validateTag(t) {\n var e = this.settings,\n i = \"value\" in t ? \"value\" : e.tagTextProp,\n s = this.trim(t[i] + \"\");\n return (t[i] + \"\").trim() ? \"mix\" != e.mode && e.pattern && e.pattern instanceof RegExp && !e.pattern.test(s) ? this.TEXTS.pattern : !e.duplicates && this.isTagDuplicate(s, e.dropdown.caseSensitive, t.__tagId) ? this.TEXTS.duplicate : this.isTagBlacklisted(s) || e.enforceWhitelist && !this.isTagWhitelisted(s) ? this.TEXTS.notAllowed : !e.validate || e.validate(t) : this.TEXTS.empty;\n },\n getInvalidTagAttrs(t, e) {\n return {\n \"aria-invalid\": !0,\n class: `${t.class || \"\"} ${this.settings.classNames.tagNotAllowed}`.trim(),\n title: e\n };\n },\n hasMaxTags() {\n return this.value.length >= this.settings.maxTags && this.TEXTS.exceed;\n },\n setReadonly(t, e) {\n var i = this.settings;\n document.activeElement.blur(), i[e || \"readonly\"] = t, this.DOM.scope[(t ? \"set\" : \"remove\") + \"Attribute\"](e || \"readonly\", !0), this.settings.userInput = !0, this.setContentEditable(!t);\n },\n setContentEditable(t) {\n this.settings.userInput && (this.DOM.input.contentEditable = t, this.DOM.input.tabIndex = t ? 0 : -1);\n },\n setDisabled(t) {\n this.setReadonly(t, \"disabled\");\n },\n normalizeTags(t) {\n var e = this.settings,\n i = e.whitelist,\n s = e.delimiters,\n a = e.mode,\n n = e.tagTextProp,\n o = [],\n r = !!i && i[0] instanceof Object,\n l = Array.isArray(t),\n d = l && t[0].value,\n h = t => (t + \"\").split(s).filter(t => t).map(t => ({\n [n]: this.trim(t),\n value: this.trim(t)\n }));\n if (\"number\" == typeof t && (t = t.toString()), \"string\" == typeof t) {\n if (!t.trim()) return [];\n t = h(t);\n } else l && (t = [].concat(...t.map(t => null != t.value ? t : h(t))));\n return r && !d && (t.forEach(t => {\n var e = o.map(t => t.value),\n i = this.dropdown.filterListItems.call(this, t[n], {\n exact: !0\n });\n this.settings.duplicates || (i = i.filter(t => !e.includes(t.value)));\n var s = i.length > 1 ? this.getWhitelistItem(t[n], n, i) : i[0];\n s && s instanceof Object ? o.push(s) : \"mix\" != a && (null == t.value && (t.value = t[n]), o.push(t));\n }), o.length && (t = o)), t;\n },\n parseMixTags(t) {\n var e = this.settings,\n i = e.mixTagsInterpolator,\n s = e.duplicates,\n a = e.transformTag,\n n = e.enforceWhitelist,\n o = e.maxTags,\n r = e.tagTextProp,\n l = [];\n t = t.split(i[0]).map((t, e) => {\n var d,\n h,\n g,\n p = t.split(i[1]),\n c = p[0],\n u = l.length == o;\n try {\n if (c == +c) throw Error;\n h = JSON.parse(c);\n } catch (t) {\n h = this.normalizeTags(c)[0] || {\n value: c\n };\n }\n if (a.call(this, h), u || !(p.length > 1) || n && !this.isTagWhitelisted(h.value) || !s && this.isTagDuplicate(h.value)) {\n if (t) return e ? i[0] + t : t;\n } else h[d = h[r] ? r : \"value\"] = this.trim(h[d]), g = this.createTagElem(h), l.push(h), g.classList.add(this.settings.classNames.tagNoAnimation), p[0] = g.outerHTML, this.value.push(h);\n return p.join(\"\");\n }).join(\"\"), this.DOM.input.innerHTML = t, this.DOM.input.appendChild(document.createTextNode(\"\")), this.DOM.input.normalize();\n var d = this.getTagElms();\n return d.forEach((t, e) => w(t, l[e])), this.update({\n withoutChangeEvent: !0\n }), y(d, this.state.hasFocus), t;\n },\n replaceTextWithNode(t, e) {\n if (this.state.tag || e) {\n e = e || this.state.tag.prefix + this.state.tag.value;\n var i,\n s,\n a = this.state.selection || window.getSelection(),\n n = a.anchorNode,\n o = this.state.tag.delimiters ? this.state.tag.delimiters.length : 0;\n return n.splitText(a.anchorOffset - o), -1 == (i = n.nodeValue.lastIndexOf(e)) ? !0 : (s = n.splitText(i), t && n.parentNode.replaceChild(t, s), !0);\n }\n },\n selectTag(t, e) {\n var i = this.settings;\n if (!i.enforceWhitelist || this.isTagWhitelisted(e.value)) {\n this.input.set.call(this, e[i.tagTextProp] || e.value, !0), this.state.actions.selectOption && setTimeout(() => this.setRangeAtStartEnd(!1, this.DOM.input));\n var s = this.getLastTag();\n return s ? this.replaceTag(s, e) : this.appendTag(t), this.value[0] = e, this.update(), this.trigger(\"add\", {\n tag: t,\n data: e\n }), [t];\n }\n },\n addEmptyTag(t) {\n var e = p({\n value: \"\"\n }, t || {}),\n i = this.createTagElem(e);\n w(i, e), this.appendTag(i), this.editTag(i, {\n skipValidation: !0\n });\n },\n addTags(t, e, i) {\n var s = [],\n a = this.settings,\n n = [],\n o = document.createDocumentFragment();\n if (i = i || a.skipInvalid, !t || 0 == t.length) return s;\n switch (t = this.normalizeTags(t), a.mode) {\n case \"mix\":\n return this.addMixTags(t);\n case \"select\":\n e = !1, this.removeAllTags();\n }\n return this.DOM.input.removeAttribute(\"style\"), t.forEach(t => {\n var e,\n r = {},\n l = Object.assign({}, t, {\n value: t.value + \"\"\n });\n if (t = Object.assign({}, l), a.transformTag.call(this, t), t.__isValid = this.hasMaxTags() || this.validateTag(t), !0 !== t.__isValid) {\n if (i) return;\n if (p(r, this.getInvalidTagAttrs(t, t.__isValid), {\n __preInvalidData: l\n }), t.__isValid == this.TEXTS.duplicate && this.flashTag(this.getTagElmByValue(t.value)), !a.createInvalidTags) return void n.push(t.value);\n }\n if (\"readonly\" in t && (t.readonly ? r[\"aria-readonly\"] = !0 : delete t.readonly), e = this.createTagElem(t, r), s.push(e), \"select\" == a.mode) return this.selectTag(e, t);\n o.appendChild(e), t.__isValid && !0 === t.__isValid ? (this.value.push(t), this.trigger(\"add\", {\n tag: e,\n index: this.value.length - 1,\n data: t\n })) : (this.trigger(\"invalid\", {\n data: t,\n index: this.value.length,\n tag: e,\n message: t.__isValid\n }), a.keepInvalidTags || setTimeout(() => this.removeTags(e, !0), 1e3)), this.dropdown.position();\n }), this.appendTag(o), this.update(), t.length && e && (this.input.set.call(this, a.createInvalidTags ? \"\" : n.join(a._delimiters)), this.setRangeAtStartEnd(!1, this.DOM.input)), a.dropdown.enabled && this.dropdown.refilter(), s;\n },\n addMixTags(t) {\n if ((t = this.normalizeTags(t))[0].prefix || this.state.tag) return this.prefixedTextToTag(t[0]);\n var e = document.createDocumentFragment();\n return t.forEach(t => {\n var i = this.createTagElem(t);\n e.appendChild(i);\n }), this.appendMixTags(e), e;\n },\n appendMixTags(t) {\n var e = !!this.state.selection;\n e ? this.injectAtCaret(t) : (this.DOM.input.focus(), (e = this.setStateSelection()).range.setStart(this.DOM.input, e.range.endOffset), e.range.setEnd(this.DOM.input, e.range.endOffset), this.DOM.input.appendChild(t), this.updateValueByDOMTags(), this.update());\n },\n prefixedTextToTag(t) {\n var e,\n i = this.settings,\n s = this.state.tag.delimiters;\n if (i.transformTag.call(this, t), t.prefix = t.prefix || this.state.tag ? this.state.tag.prefix : (i.pattern.source || i.pattern)[0], e = this.createTagElem(t), this.replaceTextWithNode(e) || this.DOM.input.appendChild(e), setTimeout(() => e.classList.add(this.settings.classNames.tagNoAnimation), 300), this.value.push(t), this.update(), !s) {\n var a = this.insertAfterTag(e) || e;\n setTimeout(b, 0, a);\n }\n return this.state.tag = null, this.trigger(\"add\", p({}, {\n tag: e\n }, {\n data: t\n })), e;\n },\n appendTag(t) {\n var e = this.DOM,\n i = e.input;\n e.scope.insertBefore(t, i);\n },\n createTagElem(t, i) {\n t.__tagId = v();\n var s,\n a = p({}, t, e({\n value: h(t.value + \"\")\n }, i));\n return function (t) {\n for (var e, i = document.createNodeIterator(t, NodeFilter.SHOW_TEXT, null, !1); e = i.nextNode();) e.textContent.trim() || e.parentNode.removeChild(e);\n }(s = this.parseTemplate(\"tag\", [a, this])), w(s, t), s;\n },\n reCheckInvalidTags() {\n var t = this.settings;\n this.getTagElms(t.classNames.tagNotAllowed).forEach((e, i) => {\n var s = w(e),\n a = this.hasMaxTags(),\n n = this.validateTag(s),\n o = !0 === n && !a;\n if (\"select\" == t.mode && this.toggleScopeValidation(n), o) return s = s.__preInvalidData ? s.__preInvalidData : {\n value: s.value\n }, this.replaceTag(e, s);\n e.title = a || n;\n });\n },\n removeTags(t, e, i) {\n var s,\n a = this.settings;\n if (t = t && t instanceof HTMLElement ? [t] : t instanceof Array ? t : t ? [t] : [this.getLastTag()], s = t.reduce((t, e) => {\n e && \"string\" == typeof e && (e = this.getTagElmByValue(e));\n var i = w(e);\n return e && i && !i.readonly && t.push({\n node: e,\n idx: this.getTagIdx(i),\n data: w(e, {\n __removed: !0\n })\n }), t;\n }, []), i = \"number\" == typeof i ? i : this.CSSVars.tagHideTransition, \"select\" == a.mode && (i = 0, this.input.set.call(this)), 1 == s.length && \"select\" != a.mode && s[0].node.classList.contains(a.classNames.tagNotAllowed) && (e = !0), s.length) return a.hooks.beforeRemoveTag(s, {\n tagify: this\n }).then(() => {\n function t(t) {\n t.node.parentNode && (t.node.parentNode.removeChild(t.node), e ? a.keepInvalidTags && this.trigger(\"remove\", {\n tag: t.node,\n index: t.idx\n }) : (this.trigger(\"remove\", {\n tag: t.node,\n index: t.idx,\n data: t.data\n }), this.dropdown.refilter(), this.dropdown.position(), this.DOM.input.normalize(), a.keepInvalidTags && this.reCheckInvalidTags()));\n }\n i && i > 10 && 1 == s.length ? function (e) {\n e.node.style.width = parseFloat(window.getComputedStyle(e.node).width) + \"px\", document.body.clientTop, e.node.classList.add(a.classNames.tagHide), setTimeout(t.bind(this), i, e);\n }.call(this, s[0]) : s.forEach(t.bind(this)), e || (this.removeTagsFromValue(s.map(t => t.node)), this.update(), \"select\" == a.mode && this.setContentEditable(!0));\n }).catch(t => {});\n },\n removeTagsFromDOM() {\n [].slice.call(this.getTagElms()).forEach(t => t.parentNode.removeChild(t));\n },\n removeTagsFromValue(t) {\n (t = Array.isArray(t) ? t : [t]).forEach(t => {\n var e = w(t),\n i = this.getTagIdx(e);\n i > -1 && this.value.splice(i, 1);\n });\n },\n removeAllTags(t) {\n t = t || {}, this.value = [], \"mix\" == this.settings.mode ? this.DOM.input.innerHTML = \"\" : this.removeTagsFromDOM(), this.dropdown.refilter(), this.dropdown.position(), this.state.dropdown.visible && setTimeout(() => {\n this.DOM.input.focus();\n }), \"select\" == this.settings.mode && (this.input.set.call(this), this.setContentEditable(!0)), this.update(t);\n },\n postUpdate() {\n var _this$value2, _this$value2$;\n this.state.blockChangeEvent = !1;\n var t = this.settings,\n e = t.classNames,\n i = \"mix\" == t.mode ? t.mixMode.integrated ? this.DOM.input.textContent : this.DOM.originalInput.value.trim() : this.value.length + this.input.raw.call(this).length;\n this.toggleClass(e.hasMaxTags, this.value.length >= t.maxTags), this.toggleClass(e.hasNoTags, !this.value.length), this.toggleClass(e.empty, !i), \"select\" == t.mode && this.toggleScopeValidation((_this$value2 = this.value) === null || _this$value2 === void 0 ? void 0 : (_this$value2$ = _this$value2[0]) === null || _this$value2$ === void 0 ? void 0 : _this$value2$.__isValid);\n },\n setOriginalInputValue(t) {\n var e = this.DOM.originalInput;\n this.settings.mixMode.integrated || (e.value = t, e.tagifyValue = e.value, this.setPersistedData(t, \"value\"));\n },\n update(t) {\n clearTimeout(this.debouncedUpdateTimeout), this.debouncedUpdateTimeout = setTimeout(function () {\n var e = this.getInputValue();\n this.setOriginalInputValue(e), this.settings.onChangeAfterBlur && (t || {}).withoutChangeEvent || this.state.blockChangeEvent || this.triggerChangeEvent();\n this.postUpdate();\n }.bind(this), 100);\n },\n getInputValue() {\n var t = this.getCleanValue();\n return \"mix\" == this.settings.mode ? this.getMixedTagsAsString(t) : t.length ? this.settings.originalInputValueFormat ? this.settings.originalInputValueFormat(t) : JSON.stringify(t) : \"\";\n },\n getCleanValue(t) {\n return n(t || this.value, this.dataProps);\n },\n getMixedTagsAsString() {\n var t = \"\",\n e = this,\n i = this.settings,\n s = i.originalInputValueFormat || JSON.stringify,\n a = i.mixTagsInterpolator;\n return function i(n) {\n n.childNodes.forEach(n => {\n if (1 == n.nodeType) {\n const r = w(n);\n if (\"BR\" == n.tagName && (t += \"\\r\\n\"), r && f.call(e, n)) {\n if (r.__removed) return;\n t += a[0] + s(o(r, e.dataProps)) + a[1];\n } else n.getAttribute(\"style\") || [\"B\", \"I\", \"U\"].includes(n.tagName) ? t += n.textContent : \"DIV\" != n.tagName && \"P\" != n.tagName || (t += \"\\r\\n\", i(n));\n } else t += n.textContent;\n });\n }(this.DOM.input), t;\n }\n }, _.prototype.removeTag = _.prototype.removeTags, _;\n});","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.33.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n module.paths = [];\n // module.parent = undefined by default\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function () {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function () {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n return module;\n};","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n\n week: {\n dow: 1,\n // Maandag is die eerste dag van die week.\n doy: 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n }\n });\n\n return af;\n});","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n },\n pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'Ùبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ar;\n});","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['جانÙÙŠ', 'ÙÙŠÙري', 'مارس', 'Ø£Ùريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arDz;\n});","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'الأØد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'اØد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arKw;\n});","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0'\n },\n pluralForm = function (n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n },\n plurals = {\n s: ['أقل من ثانية', 'ثانية واØدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],\n m: ['أقل من دقيقة', 'دقيقة واØدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],\n h: ['أقل من ساعة', 'ساعة واØدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],\n d: ['أقل من يوم', 'يوم واØد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],\n M: ['أقل من شهر', 'شهر واØد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],\n y: ['أقل من عام', 'عام واØد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = ['يناير', 'Ùبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوÙمبر', 'ديسمبر'];\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y')\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return arLy;\n});","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'اØد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arMa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n };\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n monthsShort: 'يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ص|Ù…/,\n isPM: function (input) {\n return 'Ù…' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'Ù…';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 0,\n // 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\n return arSa;\n});","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n monthsShort: 'جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر'.split('_'),\n weekdays: 'الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'Ø_Ù†_Ø«_ر_Ø®_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ÙÙŠ %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return arTn;\n});","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı'\n };\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertÉ™si_ÇərÅŸÉ™nbÉ™ axÅŸamı_ÇərÅŸÉ™nbÉ™_CümÉ™ axÅŸamı_CümÉ™_ŞənbÉ™'.split('_'),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gÉ™lÉ™n hÉ™ftÉ™] dddd [saat] LT',\n lastDay: '[dünÉ™n] LT',\n lastWeek: '[keçən hÉ™ftÉ™] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s É™vvÉ™l',\n s: 'bir neçə saniyÉ™',\n ss: '%d saniyÉ™',\n m: 'bir dÉ™qiqÉ™',\n mm: '%d dÉ™qiqÉ™',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il'\n },\n meridiemParse: /gecÉ™|sÉ™hÉ™r|gündüz|axÅŸam/,\n isPM: function (input) {\n return /^(gündüz|axÅŸam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecÉ™';\n } else if (hour < 12) {\n return 'sÉ™hÉ™r';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axÅŸam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return az;\n});","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунды_Ñекунд' : 'Ñекунду_Ñекунды_Ñекунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'меÑÑц_меÑÑцы_меÑÑцаў',\n yy: 'год_гады_гадоў'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var be = moment.defineLocale('be', {\n months: {\n format: 'ÑтудзенÑ_лютага_Ñакавіка_краÑавіка_траўнÑ_чÑрвенÑ_ліпенÑ_жніўнÑ_вераÑнÑ_каÑтрычніка_ліÑтапада_ÑнежнÑ'.split('_'),\n standalone: 'Ñтудзень_люты_Ñакавік_краÑавік_травень_чÑрвень_ліпень_жнівень_вераÑень_каÑтрычнік_ліÑтапад_Ñнежань'.split('_')\n },\n monthsShort: 'Ñтуд_лют_Ñак_краÑ_трав_чÑрв_ліп_жнів_вер_каÑÑ‚_ліÑÑ‚_Ñнеж'.split('_'),\n weekdays: {\n format: 'нÑдзелю_панÑдзелак_аўторак_Ñераду_чацвер_пÑтніцу_Ñуботу'.split('_'),\n standalone: 'нÑдзелÑ_панÑдзелак_аўторак_Ñерада_чацвер_пÑтніца_Ñубота'.split('_'),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наÑтупную)? ?\\] ?dddd/\n },\n weekdaysShort: 'нд_пн_ат_ÑÑ€_чц_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ÑÑ€_чц_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm'\n },\n calendar: {\n sameDay: '[Ð¡Ñ‘Ð½Ð½Ñ Ñž] LT',\n nextDay: '[Заўтра Ñž] LT',\n lastDay: '[Учора Ñž] LT',\n nextWeek: function () {\n return '[У] dddd [Ñž] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [Ñž] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [Ñž] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі Ñекунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'меÑÑц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночы|раніцы|днÑ|вечара/,\n isPM: function (input) {\n return /^(днÑ|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(Ñ–|Ñ‹|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? number + '-Ñ–' : number + '-Ñ‹';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return be;\n});","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var bg = moment.defineLocale('bg', {\n months: 'Ñнуари_февруари_март_април_май_юни_юли_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split('_'),\n monthsShort: 'Ñну_фев_мар_апр_май_юни_юли_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'неделÑ_понеделник_вторник_ÑÑ€Ñда_четвъртък_петък_Ñъбота'.split('_'),\n weekdaysShort: 'нед_пон_вто_ÑÑ€Ñ_чет_пет_Ñъб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Ð”Ð½ÐµÑ Ð²] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[МиналиÑ] dddd [в] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Ñлед %s',\n past: 'преди %s',\n s: 'нÑколко Ñекунди',\n ss: '%d Ñекунди',\n m: 'минута',\n mm: '%d минути',\n h: 'чаÑ',\n hh: '%d чаÑа',\n d: 'ден',\n dd: '%d дена',\n w: 'Ñедмица',\n ww: '%d Ñедмици',\n M: 'меÑец',\n MM: '%d меÑеца',\n y: 'година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bg;\n});","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_MÉ›kalo_ZuwÉ›nkalo_Zuluyekalo_Utikalo_SÉ›tanburukalo_É”kutÉ”burukalo_Nowanburukalo_Desanburukalo'.split('_'),\n monthsShort: 'Zan_Few_Mar_Awi_MÉ›_Zuw_Zul_Uti_SÉ›t_É”ku_Now_Des'.split('_'),\n weekdays: 'Kari_NtÉ›nÉ›n_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_NtÉ›_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm'\n },\n calendar: {\n sameDay: '[Bi lÉ›rÉ›] LT',\n nextDay: '[Sini lÉ›rÉ›] LT',\n nextWeek: 'dddd [don lÉ›rÉ›] LT',\n lastDay: '[Kunu lÉ›rÉ›] LT',\n lastWeek: 'dddd [tÉ›mÉ›nen lÉ›rÉ›] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s kÉ”nÉ”',\n past: 'a bÉ› %s bÉ”',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lÉ›rÉ› kelen',\n hh: 'lÉ›rÉ› %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return bm;\n});","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: 'à§',\n 8: '৮',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n 'à§': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n var bn = moment.defineLocale('bn', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split('_'),\n monthsShort: 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহ_শà§à¦•à§à¦°_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেনà§à¦¡',\n ss: '%d সেকেনà§à¦¡',\n m: 'à¦à¦• মিনিট',\n mm: '%d মিনিট',\n h: 'à¦à¦• ঘনà§à¦Ÿà¦¾',\n hh: '%d ঘনà§à¦Ÿà¦¾',\n d: 'à¦à¦• দিন',\n dd: '%d দিন',\n M: 'à¦à¦• মাস',\n MM: '%d মাস',\n y: 'à¦à¦• বছর',\n yy: '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দà§à¦ªà§à¦°|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত' && hour >= 4 || meridiem === 'দà§à¦ªà§à¦°' && hour < 5 || meridiem === 'বিকাল') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দà§à¦ªà§à¦°';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // 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\n return bn;\n});","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: 'à§',\n 8: '৮',\n 9: '৯',\n 0: '০'\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n 'à§': '7',\n '৮': '8',\n '৯': '9',\n '০': '0'\n };\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানà§à§Ÿà¦¾à¦°à¦¿_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°'.split('_'),\n monthsShort: 'জানà§_ফেবà§à¦°à§_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে'.split('_'),\n weekdays: 'রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার'.split('_'),\n weekdaysShort: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহ_শà§à¦•à§à¦°_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেনà§à¦¡',\n ss: '%d সেকেনà§à¦¡',\n m: 'à¦à¦• মিনিট',\n mm: '%d মিনিট',\n h: 'à¦à¦• ঘনà§à¦Ÿà¦¾',\n hh: '%d ঘনà§à¦Ÿà¦¾',\n d: 'à¦à¦• দিন',\n dd: '%d দিন',\n M: 'à¦à¦• মাস',\n MM: '%d মাস',\n y: 'à¦à¦• বছর',\n yy: '%d বছর'\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|à¦à§‹à¦°|সকাল|দà§à¦ªà§à¦°|বিকাল|সনà§à¦§à§à¦¯à¦¾|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'à¦à§‹à¦°') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দà§à¦ªà§à¦°') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সনà§à¦§à§à¦¯à¦¾') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'à¦à§‹à¦°';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দà§à¦ªà§à¦°';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সনà§à¦§à§à¦¯à¦¾';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0,\n // 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\n return bnBd;\n});","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠'\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0'\n };\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split('_'),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[à½à¼‹à½¦à½„] LT',\n lastWeek: '[བདུན་ཕྲག་མà½à½ ་མ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སà¾à½¢à¼‹à½†à¼',\n m: 'སà¾à½¢à¼‹à½˜à¼‹à½‚ཅིག',\n mm: '%d སà¾à½¢à¼‹à½˜',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ'\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'མཚན་མོ' && hour >= 4 || meridiem === 'ཉིན་གུང' && hour < 5 || meridiem === 'དགོང་དག') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0,\n // 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\n return bo;\n});","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh'\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z'\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n var monthsParse = [/^gen/i, /^c[ʼ\\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [/^sul/i, /^lun/i, /^meurzh/i, /^merc[ʼ\\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i],\n shortWeekdaysParse = [/^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i],\n minWeekdaysParse = [/^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i];\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n\n meridiemParse: /a.m.|g.m./,\n // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n }\n });\n return br;\n});","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[proÅ¡lu] dddd [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return bs;\n});","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [passat a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquà %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ca;\n});","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = {\n format: 'leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec'.split('_'),\n standalone: 'ledna_února_bÅ™ezna_dubna_kvÄ›tna_Äervna_Äervence_srpna_zářÃ_Å™Ãjna_listopadu_prosince'.split('_')\n },\n monthsShort = 'led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro'.split('_'),\n monthsParse = [/^led/i, /^úno/i, /^bÅ™e/i, /^dub/i, /^kvÄ›/i, /^(Ävn|Äerven$|Äervna)/i, /^(Ävc|Äervenec|Äervence)/i, /^srp/i, /^zář/i, /^Å™Ãj/i, /^lis/i, /^pro/i],\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsRegex = /^(leden|únor|bÅ™ezen|duben|kvÄ›ten|Äervenec|Äervence|Äerven|Äervna|srpen|zářÃ|Å™Ãjen|listopad|prosinec|led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i;\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dnÃ');\n } else {\n return result + 'dny';\n }\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mÄ›sÃc' : 'mÄ›sÃcem';\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mÄ›sÃce' : 'mÄ›sÃců');\n } else {\n return result + 'mÄ›sÃci';\n }\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|bÅ™ezen|bÅ™ezna|duben|dubna|kvÄ›ten|kvÄ›tna|Äervenec|Äervence|Äerven|Äervna|srpen|srpna|zářÃ|Å™Ãjen|Å™Ãjna|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'nedÄ›le_pondÄ›lÃ_úterý_stÅ™eda_Ätvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_Ät_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_Ät_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY'\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zÃtra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedÄ›li v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve stÅ™edu v] LT';\n case 4:\n return '[ve Ätvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[vÄera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou nedÄ›li v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou stÅ™edu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pÅ™ed %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cs;\n});","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑÑ_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),\n monthsShort: 'кӑр_нар_пуш_ака_май_Ò«Ó—Ñ€_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырÑарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_Ñрнекун_шӑматкун'.split('_'),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_Ñрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_Ñ‹Ñ‚_юн_кҫ_ÑÑ€_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'\n },\n calendar: {\n sameDay: '[ПаÑн] LT [Ñехетре]',\n nextDay: '[Ыран] LT [Ñехетре]',\n lastDay: '[Ӗнер] LT [Ñехетре]',\n nextWeek: '[ҪитеÑ] dddd LT [Ñехетре]',\n lastWeek: '[Иртнӗ] dddd LT [Ñехетре]',\n sameElse: 'L'\n },\n relativeTime: {\n future: function (output) {\n var affix = /Ñехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';\n return output + affix;\n },\n past: '%s каÑлла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр Ñехет',\n hh: '%d Ñехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return cv;\n});","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = ['', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed',\n // 1af to 10fed\n 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed\n ];\n\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return cy;\n});","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'pÃ¥ dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'fÃ¥ sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en mÃ¥ned',\n MM: '%d mÃ¥neder',\n y: 'et Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return da;\n});","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return de;\n});","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deAt;\n});","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]'\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return deCh;\n});","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©', 'ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©', 'Þ‰Þ§ÞƒÞ¨Þ—Þª', 'Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª', 'Þ‰Þ', 'Þ–Þ«Þ‚Þ°', 'Þ–ÞªÞÞ¦Þ‡Þ¨', 'Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª', 'ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª', 'Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª', 'Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª', 'Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª'],\n weekdays = ['އާދިއްތަ', 'Þ€Þ¯Þ‰Þ¦', 'Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦', 'Þ„ÞªÞ‹Þ¦', 'Þ„ÞªÞƒÞ§Þްފަތި', 'Þ€ÞªÞ†ÞªÞƒÞª', 'Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª'];\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'Þ‡Þ§Þ‹Þ¨_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§_Þ€ÞªÞ†Þª_Þ€Þ®Þ‚Þ¨'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /Þ‰Þ†|Þ‰ÞŠ/,\n isPM: function (input) {\n return 'Þ‰ÞŠ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Þ‰Þ†';\n } else {\n return 'Þ‰ÞŠ';\n }\n },\n calendar: {\n sameDay: '[Þ‰Þ¨Þ‡Þ¦Þ‹Þª] LT',\n nextDay: '[Þ‰Þ§Þ‹Þ¦Þ‰Þ§] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Þ‡Þ¨Þ‡Þ°Þ”Þ¬] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ތެރÞÞŽÞ¦Þ‡Þ¨ %s',\n past: 'Þ†ÞªÞƒÞ¨Þ‚Þ° %s',\n s: 'Þިކުންތުކޮޅެއް',\n ss: 'd% Þިކުންތު',\n m: 'Þ‰Þ¨Þ‚Þ¨Þ“Þ¬Þ‡Þ°',\n mm: 'Þ‰Þ¨Þ‚Þ¨Þ“Þª %d',\n h: 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°',\n hh: 'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª %d',\n d: 'Þ‹ÞªÞˆÞ¦Þ€Þ¬Þ‡Þ°',\n dd: 'Þ‹ÞªÞˆÞ¦ÞÞ° %d',\n M: 'Þ‰Þ¦Þ€Þ¬Þ‡Þ°',\n MM: 'Þ‰Þ¦ÞÞ° %d',\n y: 'Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°',\n yy: 'Þ‡Þ¦Þ€Þ¦ÞƒÞª %d'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 7,\n // Sunday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return dv;\n});","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function isFunction(input) {\n return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτÎμβÏιος_ΟκτώβÏιος_ÎοÎμβÏιος_ΔεκÎμβÏιος'.split('_'),\n monthsGenitiveEl: 'ΙανουαÏίου_ΦεβÏουαÏίου_ΜαÏτίου_ΑπÏιλίου_ΜαÎου_Ιουνίου_Ιουλίου_ΑυγοÏστου_ΣεπτεμβÏίου_ΟκτωβÏίου_ÎοεμβÏίου_ΔεκεμβÏίου'.split('_'),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_ΜαÏ_ΑπÏ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Îοε_Δεκ'.split('_'),\n weekdays: 'ΚυÏιακή_ΔευτÎÏα_ΤÏίτη_ΤετάÏτη_Î Îμπτη_ΠαÏασκευή_Σάββατο'.split('_'),\n weekdaysShort: 'ΚυÏ_Δευ_ΤÏι_Τετ_Πεμ_ΠαÏ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_ΤÏ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'Î Îœ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[Î Îœ]\\.?Îœ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendarEl: {\n sameDay: '[ΣήμεÏα {}] LT',\n nextDay: '[ΑÏÏιο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το Ï€ÏοηγοÏμενο] dddd [{}] LT';\n default:\n return '[την Ï€ÏοηγοÏμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L'\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s Ï€Ïιν',\n s: 'λίγα δευτεÏόλεπτα',\n ss: '%d δευτεÏόλεπτα',\n m: 'Îνα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ÏŽÏα',\n hh: '%d ÏŽÏες',\n d: 'μία μÎÏα',\n dd: '%d μÎÏες',\n M: 'Îνας μήνας',\n MM: '%d μήνες',\n y: 'Îνας χÏόνος',\n yy: '%d χÏόνια'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4st is the first week of the year.\n }\n });\n\n return el;\n});","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enAu;\n});","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enCa;\n});","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enGb;\n});","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enIe;\n});","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n }\n });\n return enIl;\n});","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 6 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return enIn;\n});","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enNz;\n});","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\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 relativeTime: {\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 M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enSg;\n});","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro'.split('_'),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaÅdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaÅ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm'\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[HodiaÅ je] LT',\n nextDay: '[MorgaÅ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[HieraÅ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaÅ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago',\n //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eo;\n});","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurà : https://github.com/julionc\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n\n invalidDate: 'Fecha inválida'\n });\n return es;\n});","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return esDo;\n});","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // Sunday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n },\n\n invalidDate: 'Fecha inválida'\n });\n return esMx;\n});","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0,\n // 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\n return esUs;\n});","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat']\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return et;\n});","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return eu;\n});","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Û±',\n 2: 'Û²',\n 3: 'Û³',\n 4: 'Û´',\n 5: 'Ûµ',\n 6: 'Û¶',\n 7: 'Û·',\n 8: 'Û¸',\n 9: 'Û¹',\n 0: 'Û°'\n },\n numberMap = {\n 'Û±': '1',\n 'Û²': '2',\n 'Û³': '3',\n 'Û´': '4',\n 'Ûµ': '5',\n 'Û¶': '6',\n 'Û·': '7',\n 'Û¸': '8',\n 'Û¹': '9',\n 'Û°': '0'\n };\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n monthsShort: 'ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split('_'),\n weekdaysMin: 'ÛŒ_د_س_Ú†_Ù¾_ج_Ø´'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[Ùردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/[Û°-Û¹]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}Ù…/,\n ordinal: '%dÙ…',\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return fa;\n});","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),\n numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9]];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10 ? isFuture ? numbersFuture[number] : numbersPast[number] : number;\n }\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm'\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fi;\n});","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fil;\n});","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur'.split('_'),\n weekdaysShort: 'sun_mán_týs_mik_hós_frÃ_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm'\n },\n calendar: {\n sameDay: '[à dag kl.] LT',\n nextDay: '[à morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[à gjár kl.] LT',\n lastWeek: '[sÃðstu] dddd [kl] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'um %s',\n past: '%s sÃðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tÃmi',\n hh: '%d tÃmar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fo;\n});","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [/^janv/i, /^févr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^août/i, /^sept/i, /^oct/i, /^nov/i, /^déc/i];\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fr;\n});","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n }\n });\n return frCa;\n});","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return frCh;\n});","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return fy;\n});","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig'],\n monthsShort = ['Ean', 'Feabh', 'Márt', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'M.F.', 'D.F.', 'Samh', 'Noll'],\n weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn'],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mÃ',\n MM: '%d mÃonna',\n y: 'bliain',\n yy: '%d bliain'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ga;\n});","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['Am Faoilleach', 'An Gearran', 'Am Mà rt', 'An Giblean', 'An Cèitean', 'An t-Ã’gmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dà mhair', 'An t-Samhain', 'An Dùbhlachd'],\n monthsShort = ['Faoi', 'Gear', 'Mà rt', 'Gibl', 'Cèit', 'Ã’gmh', 'Iuch', 'Lùn', 'Sult', 'Dà mh', 'Samh', 'Dùbh'],\n weekdays = ['Didòmhnaich', 'Diluain', 'Dimà irt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà ', 'Ci', 'Ar', 'Ha', 'Sa'];\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-mà ireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gd;\n});","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return gl;\n});","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['à¤à¤•à¤¾ मिणटान', 'à¤à¤• मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['à¤à¤•à¤¾ वरान', 'à¤à¤• वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['à¤à¤•à¤¾ दिसान', 'à¤à¤• दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['à¤à¤•à¤¾ मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨', 'à¤à¤• मà¥à¤¹à¤¯à¤¨à¥‹'],\n MM: [number + ' मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨à¥€', number + ' मà¥à¤¹à¤¯à¤¨à¥‡'],\n y: ['à¤à¤•à¤¾ वरà¥à¤¸à¤¾à¤¨', 'à¤à¤• वरà¥à¤¸'],\n yy: [number + ' वरà¥à¤¸à¤¾à¤‚नी', number + ' वरà¥à¤¸à¤¾à¤‚']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¥€à¤²_मे_जून_जà¥à¤²à¤¯_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split('_'),\n format: 'जानेवारीचà¥à¤¯à¤¾_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€à¤šà¥à¤¯à¤¾_मारà¥à¤šà¤¾à¤šà¥à¤¯à¤¾_à¤à¤ªà¥à¤°à¥€à¤²à¤¾à¤šà¥à¤¯à¤¾_मेयाचà¥à¤¯à¤¾_जूनाचà¥à¤¯à¤¾_जà¥à¤²à¤¯à¤¾à¤šà¥à¤¯à¤¾_ऑगसà¥à¤Ÿà¤¾à¤šà¥à¤¯à¤¾_सपà¥à¤Ÿà¥‡à¤‚बराचà¥à¤¯à¤¾_ऑकà¥à¤Ÿà¥‹à¤¬à¤°à¤¾à¤šà¥à¤¯à¤¾_नोवà¥à¤¹à¥‡à¤‚बराचà¥à¤¯à¤¾_डिसेंबराचà¥à¤¯à¤¾'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š_à¤à¤ªà¥à¤°à¥€._मे_जून_जà¥à¤²._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बà¥à¤§à¤µà¤¾à¤°_बिरेसà¥à¤¤à¤¾à¤°_सà¥à¤•à¥à¤°à¤¾à¤°_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बà¥à¤§._बà¥à¤°à¥‡à¤¸à¥à¤¤._सà¥à¤•à¥à¤°._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बà¥_बà¥à¤°à¥‡_सà¥_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]'\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फालà¥à¤¯à¤¾à¤‚] LT',\n nextWeek: '[फà¥à¤¡à¤²à¥‹] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n }\n });\n return gomDeva;\n});","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam']\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split('_'),\n isFormat: /MMMM(\\s)+D[oD]?/\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]'\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0,\n // Sunday is the first day of the week\n doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n }\n });\n return gomLatn;\n});","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: 'à«©',\n 4: '૪',\n 5: 'à««',\n 6: '૬',\n 7: 'à«',\n 8: 'à«®',\n 9: '૯',\n 0: '૦'\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n 'à«©': '3',\n '૪': '4',\n 'à««': '5',\n '૬': '6',\n 'à«': '7',\n 'à«®': '8',\n '૯': '9',\n '૦': '0'\n };\n var gu = moment.defineLocale('gu', {\n months: 'જાનà«àª¯à«àª†àª°à«€_ફેબà«àª°à«àª†àª°à«€_મારà«àªš_àªàªªà«àª°àª¿àª²_મે_જૂન_જà«àª²àª¾àªˆ_ઑગસà«àªŸ_સપà«àªŸà«‡àª®à«àª¬àª°_ઑકà«àªŸà«àª¬àª°_નવેમà«àª¬àª°_ડિસેમà«àª¬àª°'.split('_'),\n monthsShort: 'જાનà«àª¯à«._ફેબà«àª°à«._મારà«àªš_àªàªªà«àª°àª¿._મે_જૂન_જà«àª²àª¾._ઑગ._સપà«àªŸà«‡._ઑકà«àªŸà«._નવે._ડિસે.'.split('_'),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બà«àª§à«àªµàª¾àª°_ગà«àª°à«àªµàª¾àª°_શà«àª•à«àª°àªµàª¾àª°_શનિવાર'.split('_'),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બà«àª§à«_ગà«àª°à«_શà«àª•à«àª°_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બà«_ગà«_શà«_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગà«àª¯à«‡',\n LTS: 'A h:mm:ss વાગà«àª¯à«‡',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગà«àª¯à«‡',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગà«àª¯à«‡'\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમà«àª• પળો',\n ss: '%d સેકંડ',\n m: 'àªàª• મિનિટ',\n mm: '%d મિનિટ',\n h: 'àªàª• કલાક',\n hh: '%d કલાક',\n d: 'àªàª• દિવસ',\n dd: '%d દિવસ',\n M: 'àªàª• મહિનો',\n MM: '%d મહિનો',\n y: 'àªàª• વરà«àª·',\n yy: '%d વરà«àª·'\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬à«à«®à«¯à«¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0,\n // 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\n return gu;\n});","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var he = moment.defineLocale('he', {\n months: '×™× ×•×ר_פברו×ר_מרץ_×פריל_מ××™_×™×•× ×™_יולי_×וגוסט_ספטמבר_×וקטובר_× ×•×‘×ž×‘×¨_דצמבר'.split('_'),\n monthsShort: '×™× ×•×³_פבר׳_מרץ_×פר׳_מ××™_×™×•× ×™_יולי_×וג׳_ספט׳_×וק׳_× ×•×‘×³_דצמ׳'.split('_'),\n weekdays: 'ר×שון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: '×׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: '×_ב_×’_ד_×”_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[×”×™×•× ×‘Ö¾]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[×תמול ב־]LT',\n lastWeek: '[ביו×] dddd [×”×חרון בשעה] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'בעוד %s',\n past: '×œ×¤× ×™ %s',\n s: 'מספר ×©× ×™×•×ª',\n ss: '%d ×©× ×™×•×ª',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיי×';\n }\n return number + ' שעות';\n },\n d: 'יו×',\n dd: function (number) {\n if (number === 2) {\n return 'יומיי×';\n }\n return number + ' ימי×';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיי×';\n }\n return number + ' חודשי×';\n },\n y: '×©× ×”',\n yy: function (number) {\n if (number === 2) {\n return '×©× ×ª×™×™×';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' ×©× ×”';\n }\n return number + ' ×©× ×™×';\n }\n },\n meridiemParse: /××—×”\"צ|×œ×¤× ×”\"צ|×חרי הצהריי×|×œ×¤× ×™ הצהריי×|×œ×¤× ×•×ª בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(××—×”\"צ|×חרי הצהריי×|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return '×œ×¤× ×•×ª בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? '×œ×¤× ×”\"צ' : '×œ×¤× ×™ הצהריי×';\n } else if (hour < 18) {\n return isLower ? '××—×”\"צ' : '×חרי הצהריי×';\n } else {\n return 'בערב';\n }\n }\n });\n return he;\n});","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n },\n monthsParse = [/^जन/i, /^फ़र|फर/i, /^मारà¥à¤š/i, /^अपà¥à¤°à¥ˆ/i, /^मई/i, /^जून/i, /^जà¥à¤²/i, /^अग/i, /^सितं|सित/i, /^अकà¥à¤Ÿà¥‚/i, /^नव|नवं/i, /^दिसं|दिस/i],\n shortMonthsParse = [/^जन/i, /^फ़र/i, /^मारà¥à¤š/i, /^अपà¥à¤°à¥ˆ/i, /^मई/i, /^जून/i, /^जà¥à¤²/i, /^अग/i, /^सित/i, /^अकà¥à¤Ÿà¥‚/i, /^नव/i, /^दिस/i];\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°'.split('_'),\n standalone: 'जनवरी_फरवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितंबर_अकà¥à¤Ÿà¥‚बर_नवंबर_दिसंबर'.split('_')\n },\n monthsShort: 'जन._फ़र._मारà¥à¤š_अपà¥à¤°à¥ˆ._मई_जून_जà¥à¤²._अग._सित._अकà¥à¤Ÿà¥‚._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बà¥_गà¥_शà¥_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'\n },\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ|जà¥à¤²\\.?|अगसà¥à¤¤|अग\\.?|सितमà¥à¤¬à¤°|सितंबर|सित\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर|नव\\.?|दिसमà¥à¤¬à¤°|दिसंबर|दिस\\.?)/i,\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मारà¥à¤š?|अपà¥à¤°à¥ˆà¤²?|मई?|जून?|जà¥à¤²à¤¾à¤ˆ?|अगसà¥à¤¤?|सितमà¥à¤¬à¤°|सितंबर|सित?\\.?|अकà¥à¤Ÿà¥‚बर|अकà¥à¤Ÿà¥‚\\.?|नवमà¥à¤¬à¤°|नवंबर?|दिसमà¥à¤¬à¤°|दिसंबर?)/i,\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मारà¥à¤š?|अपà¥à¤°à¥ˆ\\.?|मई?|जून?|जà¥à¤²\\.?|अग\\.?|सित\\.?|अकà¥à¤Ÿà¥‚\\.?|नव\\.?|दिस\\.?)/i,\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कà¥à¤› ही कà¥à¤·à¤£',\n ss: '%d सेकंड',\n m: 'à¤à¤• मिनट',\n mm: '%d मिनट',\n h: 'à¤à¤• घंटा',\n hh: '%d घंटे',\n d: 'à¤à¤• दिन',\n dd: '%d दिन',\n M: 'à¤à¤• महीने',\n MM: '%d महीने',\n y: 'à¤à¤• वरà¥à¤·',\n yy: '%d वरà¥à¤·'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सà¥à¤¬à¤¹|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सà¥à¤¬à¤¹') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सà¥à¤¬à¤¹';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0,\n // 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\n return hi;\n});","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'sijeÄnja_veljaÄe_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),\n standalone: 'sijeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[proÅ¡lu] [nedjelju] [u] LT';\n case 3:\n return '[proÅ¡lu] [srijedu] [u] LT';\n case 6:\n return '[proÅ¡le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[proÅ¡li] dddd [u] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hr;\n});","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var weekEndings = 'vasárnap hétfÅ‘n kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix ? 'néhány másodperc' : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';\n }\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfÅ‘_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm'\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return hu;\n});","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«'.split('_'),\n standalone: 'Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€_Õ´Õ¡Ö€Õ¿_Õ¡ÕºÖ€Õ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸Ö‚Õ¶Õ«Õ½_Õ°Õ¸Ö‚Õ¬Õ«Õ½_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'.split('_')\n },\n monthsShort: 'Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'),\n weekdays: 'Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©'.split('_'),\n weekdaysShort: 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n weekdaysMin: 'Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Õ©.',\n LLL: 'D MMMM YYYY Õ©., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm'\n },\n calendar: {\n sameDay: '[Õ¡ÕµÕ½Ö…Ö€] LT',\n nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',\n lastDay: '[Õ¥Ö€Õ¥Õ¯] LT',\n nextWeek: function () {\n return 'dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n lastWeek: function () {\n return '[Õ¡Õ¶ÖÕ¡Õ®] dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT';\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s Õ°Õ¥Õ¿Õ¸',\n past: '%s Õ¡Õ¼Õ¡Õ»',\n s: 'Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n ss: '%d Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',\n m: 'Ö€Õ¸ÕºÕ¥',\n mm: '%d Ö€Õ¸ÕºÕ¥',\n h: 'ÕªÕ¡Õ´',\n hh: '%d ÕªÕ¡Õ´',\n d: 'Ö…Ö€',\n dd: '%d Ö…Ö€',\n M: 'Õ¡Õ´Õ«Õ½',\n MM: '%d Õ¡Õ´Õ«Õ½',\n y: 'Õ¿Õ¡Ö€Õ«',\n yy: '%d Õ¿Õ¡Ö€Õ«'\n },\n meridiemParse: /Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡|Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡|ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶/,\n isPM: function (input) {\n return /^(ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡|Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡';\n } else if (hour < 12) {\n return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';\n } else if (hour < 17) {\n return 'ÖÕ¥Ö€Õ¥Õ¯Õ¾Õ¡';\n } else {\n return 'Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(Õ«Õ¶|Ö€Õ¤)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-Õ«Õ¶';\n }\n return number + '-Ö€Õ¤';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return hyAm;\n});","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 0,\n // 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\n return id;\n});","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mÃnúta' : 'mÃnútu';\n case 'mm':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'mÃnútur' : 'mÃnútum');\n } else if (withoutSuffix) {\n return result + 'mÃnúta';\n }\n return result + 'mÃnútu';\n case 'hh':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'\n },\n calendar: {\n sameDay: '[à dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[à gær kl.] LT',\n lastWeek: '[sÃðasta] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s sÃðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return is;\n});","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: function () {\n return '[Oggi a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextDay: function () {\n return '[Domani a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n nextWeek: function () {\n return 'dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastDay: function () {\n return '[Ieri a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[La scorsa] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n default:\n return '[Lo scorso] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") + ']LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return it;\n});","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return itCh;\n});","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ja = moment.defineLocale('ja', {\n eras: [{\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: 'ã‹¿',\n abbr: 'R'\n }, {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: 'å¹³æˆ',\n narrow: 'ã»',\n abbr: 'H'\n }, {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: 'æ˜å’Œ',\n narrow: 'ã¼',\n abbr: 'S'\n }, {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大æ£',\n narrow: 'ã½',\n abbr: 'T'\n }, {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: 'ã¾',\n abbr: 'M'\n }, {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD'\n }, {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元å‰',\n narrow: 'BC',\n abbr: 'BC'\n }],\n eraYearOrdinalRegex: /(å…ƒ|\\d+)å¹´/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === 'å…ƒ' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '日曜日_月曜日_ç«æ›œæ—¥_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: 'æ—¥_月_ç«_æ°´_木_金_土'.split('_'),\n weekdaysMin: 'æ—¥_月_ç«_æ°´_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥ dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥(ddd) HH:mm'\n },\n meridiemParse: /åˆå‰|åˆå¾Œ/i,\n isPM: function (input) {\n return input === 'åˆå¾Œ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'åˆå‰';\n } else {\n return 'åˆå¾Œ';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[æ¥é€±]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}æ—¥/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + 'å¹´';\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1æ—¥',\n dd: '%dæ—¥',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1å¹´',\n yy: '%då¹´'\n }\n });\n return ja;\n});","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return jv;\n});","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ka = moment.defineLocale('ka', {\n months: 'იáƒáƒœáƒ•áƒáƒ ი_თებერვáƒáƒšáƒ˜_მáƒáƒ ტი_áƒáƒžáƒ ილი_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი'.split('_'),\n monthsShort: 'იáƒáƒœ_თებ_მáƒáƒ _áƒáƒžáƒ _მáƒáƒ˜_ივნ_ივლ_áƒáƒ’ვ_სექ_áƒáƒ¥áƒ¢_ნáƒáƒ”_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირáƒ_áƒáƒ შáƒáƒ‘áƒáƒ—ი_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი_ხუთშáƒáƒ‘áƒáƒ—ი_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი_შáƒáƒ‘áƒáƒ—ი'.split('_'),\n format: 'კვირáƒáƒ¡_áƒáƒ შáƒáƒ‘áƒáƒ—ს_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ს_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ს_ხუთშáƒáƒ‘áƒáƒ—ს_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვს_შáƒáƒ‘áƒáƒ—ს'.split('_'),\n isFormat: /(წინáƒ|შემდეგ)/\n },\n weekdaysShort: 'კვი_áƒáƒ შ_სáƒáƒ›_áƒáƒ—ხ_ხუთ_პáƒáƒ _შáƒáƒ‘'.split('_'),\n weekdaysMin: 'კვ_áƒáƒ _სáƒ_áƒáƒ—_ხუ_პáƒ_შáƒ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვáƒáƒš] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინáƒ] dddd LT-ზე',\n sameElse: 'L'\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წáƒáƒ›|წუთ|სáƒáƒáƒ—|წელ|დღ|თვ)(ი|ე)/, function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წáƒáƒ›áƒ˜|წუთი|სáƒáƒáƒ—ი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რáƒáƒ›áƒ“ენიმე წáƒáƒ›áƒ˜',\n ss: '%d წáƒáƒ›áƒ˜',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'სáƒáƒáƒ—ი',\n hh: '%d სáƒáƒáƒ—ი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი'\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (number < 20 || number <= 100 && number % 20 === 0 || number % 100 === 0) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7\n }\n });\n return ka;\n});","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші'\n };\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_Ñәуір_мамыр_мауÑым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқÑан'.split('_'),\n monthsShort: 'қаң_ақп_нау_Ñәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жекÑенбі_дүйÑенбі_ÑейÑенбі_ÑәрÑенбі_бейÑенбі_жұма_Ñенбі'.split('_'),\n weekdaysShort: 'жек_дүй_Ñей_Ñәр_бей_жұм_Ñен'.split('_'),\n weekdaysMin: 'жк_дй_Ñй_ÑÑ€_бй_жм_Ñн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгін Ñағат] LT',\n nextDay: '[Ертең Ñағат] LT',\n nextWeek: 'dddd [Ñағат] LT',\n lastDay: '[Кеше Ñағат] LT',\n lastWeek: '[Өткен аптаның] dddd [Ñағат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше Ñекунд',\n ss: '%d Ñекунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір Ñағат',\n hh: '%d Ñағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return kk;\n});","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០'\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0'\n };\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split('_'),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ'.split('_'),\n weekdays: 'អាទិážáŸ’áž™_áž…áŸáž“្ទ_អង្គារ_ពុធ_ព្រហស្បážáž·áŸ_សុក្រ_សៅរáŸ'.split('_'),\n weekdaysShort: 'អា_áž…_អ_áž–_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_áž…_អ_áž–_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ážáŸ’ងៃនáŸáŸ‡ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្ážáž¶áž áŸáž˜áž»áž“] [ម៉ោង] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sទៀáž',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយážáŸ’ងៃ',\n dd: '%d ážáŸ’ងៃ',\n M: 'មួយážáŸ‚',\n MM: '%d ážáŸ‚',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ'\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return km;\n});","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: 'à³',\n 8: 'à³®',\n 9: '೯',\n 0: '೦'\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n 'à³': '7',\n 'à³®': '8',\n '೯': '9',\n '೦': '0'\n };\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬà³à²°à²µà²°à²¿_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚ಬರà³_ಅಕà³à²Ÿà³†à³‚ೕಬರà³_ನವೆಂಬರà³_ಡಿಸೆಂಬರà³'.split('_'),\n monthsShort: 'ಜನ_ಫೆಬà³à²°_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚_ಅಕà³à²Ÿà³†à³‚ೕ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),\n monthsParseExact: true,\n weekdays: 'à²à²¾à²¨à³à²µà²¾à²°_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬà³à²§à²µà²¾à²°_ಗà³à²°à³à²µà²¾à²°_ಶà³à²•à³à²°à²µà²¾à²°_ಶನಿವಾರ'.split('_'),\n weekdaysShort: 'à²à²¾à²¨à³_ಸೋಮ_ಮಂಗಳ_ಬà³à²§_ಗà³à²°à³_ಶà³à²•à³à²°_ಶನಿ'.split('_'),\n weekdaysMin: 'à²à²¾_ಸೋ_ಮಂ_ಬà³_ಗà³_ಶà³_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[ಇಂದà³] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನà³à²¨à³†] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವೠಕà³à²·à²£à²—ಳà³',\n ss: '%d ಸೆಕೆಂಡà³à²—ಳà³',\n m: 'ಒಂದೠನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದೠಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದೠದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದೠತಿಂಗಳà³',\n MM: '%d ತಿಂಗಳà³',\n y: 'ಒಂದೠವರà³à²·',\n yy: '%d ವರà³à²·'\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬à³à³®à³¯à³¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತà³à²°à²¿|ಬೆಳಿಗà³à²—ೆ|ಮಧà³à²¯à²¾à²¹à³à²¨|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತà³à²°à²¿') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗà³à²—ೆ') {\n return hour;\n } else if (meridiem === 'ಮಧà³à²¯à²¾à²¹à³à²¨') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತà³à²°à²¿';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗà³à²—ೆ';\n } else if (hour < 17) {\n return 'ಮಧà³à²¯à²¾à²¹à³à²¨';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತà³à²°à²¿';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0,\n // 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\n return kn;\n});","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ko = moment.defineLocale('ko', {\n months: '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n monthsShort: '1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”'.split('_'),\n weekdays: 'ì¼ìš”ì¼_월요ì¼_화요ì¼_수요ì¼_목요ì¼_금요ì¼_í† ìš”ì¼'.split('_'),\n weekdaysShort: 'ì¼_ì›”_í™”_수_목_금_í† '.split('_'),\n weekdaysMin: 'ì¼_ì›”_í™”_수_목_금_í† '.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYYë…„ MMMM Dì¼',\n LLL: 'YYYYë…„ MMMM Dì¼ A h:mm',\n LLLL: 'YYYYë…„ MMMM Dì¼ dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYYë…„ MMMM Dì¼',\n lll: 'YYYYë…„ MMMM Dì¼ A h:mm',\n llll: 'YYYYë…„ MMMM Dì¼ dddd A h:mm'\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: 'ë‚´ì¼ LT',\n nextWeek: 'dddd LT',\n lastDay: 'ì–´ì œ LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s 후',\n past: '%s ì „',\n s: '몇 ì´ˆ',\n ss: '%dì´ˆ',\n m: '1분',\n mm: '%d분',\n h: 'í•œ 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%dì¼',\n M: 'í•œ 달',\n MM: '%d달',\n y: 'ì¼ ë…„',\n yy: '%dë…„'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ì¼|ì›”|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'ì¼';\n case 'M':\n return number + 'ì›”';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /ì˜¤ì „|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? 'ì˜¤ì „' : '오후';\n }\n });\n return ko;\n});","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'Ù¡',\n 2: 'Ù¢',\n 3: 'Ù£',\n 4: 'Ù¤',\n 5: 'Ù¥',\n 6: 'Ù¦',\n 7: 'Ù§',\n 8: 'Ù¨',\n 9: 'Ù©',\n 0: 'Ù '\n },\n numberMap = {\n 'Ù¡': '1',\n 'Ù¢': '2',\n 'Ù£': '3',\n 'Ù¤': '4',\n 'Ù¥': '5',\n 'Ù¦': '6',\n 'Ù§': '7',\n 'Ù¨': '8',\n 'Ù©': '9',\n 'Ù ': '0'\n },\n months = ['کانونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'Øوزەیران', 'تەمموز', 'ئاب', 'ئەیلوول', 'تشرینی یەكەم', 'تشرینی دووەم', 'كانونی یەکەم'];\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ÛŒ_د_س_Ú†_Ù¾_Ù‡_Ø´'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك Ú•Û†Ú˜',\n dd: '%d Ú•Û†Ú˜',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ'\n },\n preparse: function (string) {\n return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n }).replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n }).replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return ku;\n});","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү'\n };\n var ky = moment.defineLocale('ky', {\n months: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_'),\n monthsShort: 'Ñнв_фев_март_апр_май_июнь_июль_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Бүгүн Ñаат] LT',\n nextDay: '[Ðртең Ñаат] LT',\n nextWeek: 'dddd [Ñаат] LT',\n lastDay: '[КечÑÑ Ñаат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [Ñаат] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече Ñекунд',\n ss: '%d Ñекунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир Ñаат',\n hh: '%d Ñаат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ky;\n});","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer']\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n }\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lb;\n});","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var lo = moment.defineLocale('lo', {\n months: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split('_'),\n monthsShort: 'ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ'.split('_'),\n weekdays: 'àºàº²àº—ິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_àºàº„_ພ_ພຫ_ສàº_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm'\n },\n meridiemParse: /ຕàºàº™à»€àºŠàº»à»‰àº²|ຕàºàº™à»àº¥àº‡/,\n isPM: function (input) {\n return input === 'ຕàºàº™à»àº¥àº‡';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕàºàº™à»€àºŠàº»à»‰àº²';\n } else {\n return 'ຕàºàº™à»àº¥àº‡';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້àºàº·à»ˆàº™à»€àº§àº¥àº²] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[à»àº¥à»‰àº§àº™àºµà»‰à»€àº§àº¥àº²] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'àºàºµàº %s',\n past: '%sຜ່ານມາ',\n s: 'ບà»à»ˆà»€àº—ົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືàºàº™',\n MM: '%d ເດືàºàº™',\n y: '1 ປີ',\n yy: '%d ປີ'\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n }\n });\n return lo;\n});","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas MozÅ«ras : https://github.com/mmozuras\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var units = {\n ss: 'sekundÄ—_sekundžių_sekundes',\n m: 'minutÄ—_minutÄ—s_minutÄ™',\n mm: 'minutÄ—s_minuÄių_minutes',\n h: 'valanda_valandos_valandÄ…',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dienÄ…',\n dd: 'dienos_dienų_dienas',\n M: 'mÄ—nuo_mÄ—nesio_mÄ—nesį',\n MM: 'mÄ—nesiai_mÄ—nesių_mÄ—nesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus'\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundÄ—s';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || number > 10 && number < 20;\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return result + translateSingular(number, withoutSuffix, key[0], isFuture);\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjÅ«Äio_rugsÄ—jo_spalio_lapkriÄio_gruodžio'.split('_'),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsÄ—jis_spalis_lapkritis_gruodis'.split('_'),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_treÄiadienį_ketvirtadienį_penktadienį_Å¡eÅ¡tadienį'.split('_'),\n standalone: 'sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split('_'),\n isFormat: /dddd HH:mm/\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Å eÅ¡'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'\n },\n calendar: {\n sameDay: '[Å iandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[PraÄ—jusį] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieÅ¡ %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lt;\n});","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : JÄnis Elmeris : https://github.com/JanisE\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var units = {\n ss: 'sekundes_sekundÄ“m_sekunde_sekundes'.split('_'),\n m: 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n mm: 'minÅ«tes_minÅ«tÄ“m_minÅ«te_minÅ«tes'.split('_'),\n h: 'stundas_stundÄm_stunda_stundas'.split('_'),\n hh: 'stundas_stundÄm_stunda_stundas'.split('_'),\n d: 'dienas_dienÄm_diena_dienas'.split('_'),\n dd: 'dienas_dienÄm_diena_dienas'.split('_'),\n M: 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n MM: 'mÄ“neÅ¡a_mÄ“neÅ¡iem_mÄ“nesis_mÄ“neÅ¡i'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_')\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minÅ«te\", \"3 minÅ«tes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minÅ«tes\" as in \"pÄ“c 21 minÅ«tes\".\n // E.g. \"3 minÅ«tÄ“m\" as in \"pÄ“c 3 minÅ«tÄ“m\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažÄm sekundÄ“m';\n }\n var lv = moment.defineLocale('lv', {\n months: 'janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),\n monthsShort: 'jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svÄ“tdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena'.split('_'),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'\n },\n calendar: {\n sameDay: '[Å odien pulksten] LT',\n nextDay: '[RÄ«t pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[PagÄjuÅ¡Ä] dddd [pulksten] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'pÄ“c %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return lv;\n});","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag NikaÄ <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return number + ' ' + translator.correctGrammaticalCase(number, wordKey);\n }\n }\n };\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄe u] LT',\n lastWeek: function () {\n var lastWeekDays = ['[proÅ¡le] [nedjelje] [u] LT', '[proÅ¡log] [ponedjeljka] [u] LT', '[proÅ¡log] [utorka] [u] LT', '[proÅ¡le] [srijede] [u] LT', '[proÅ¡log] [Äetvrtka] [u] LT', '[proÅ¡log] [petka] [u] LT', '[proÅ¡le] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return me;\n});","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tÄte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whÄwhÄ_Haratua_Pipiri_HÅngoingoi_Here-turi-kÅkÄ_Mahuru_Whiringa-Ä-nuku_Whiringa-Ä-rangi_Hakihea'.split('_'),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'RÄtapu_Mane_TÅ«rei_Wenerei_TÄite_Paraire_HÄtarei'.split('_'),\n weekdaysShort: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'),\n weekdaysMin: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm'\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hÄ“kona ruarua',\n ss: '%d hÄ“kona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mi;\n});","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_авгуÑÑ‚_Ñептември_октомври_ноември_декември'.split('_'),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_Ñеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_Ñреда_четврток_петок_Ñабота'.split('_'),\n weekdaysShort: 'нед_пон_вто_Ñре_чет_пет_Ñаб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ÑÑ€_че_пе_Ña'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[Ð”ÐµÐ½ÐµÑ Ð²Ð¾] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку Ñекунди',\n ss: '%d Ñекунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден чаÑ',\n hh: '%d чаÑа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден меÑец',\n MM: '%d меÑеци',\n y: 'една година',\n yy: '%d години'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return mk;\n});","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ml = moment.defineLocale('ml', {\n months: 'ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ'.split('_'),\n monthsShort: 'ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴàµà´š_തിങàµà´•à´³à´¾à´´àµà´š_ചൊവàµà´µà´¾à´´àµà´š_à´¬àµà´§à´¨à´¾à´´àµà´š_à´µàµà´¯à´¾à´´à´¾à´´àµà´š_വെളàµà´³à´¿à´¯à´¾à´´àµà´š_ശനിയാഴàµà´š'.split('_'),\n weekdaysShort: 'ഞായർ_തിങàµà´•àµ¾_ചൊവàµà´µ_à´¬àµà´§àµ»_à´µàµà´¯à´¾à´´à´‚_വെളàµà´³à´¿_ശനി'.split('_'),\n weekdaysMin: 'à´žà´¾_തി_ചൊ_à´¬àµ_à´µàµà´¯à´¾_വെ_à´¶'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -à´¨àµ',\n LTS: 'A h:mm:ss -à´¨àµ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -à´¨àµ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -à´¨àµ'\n },\n calendar: {\n sameDay: '[ഇനàµà´¨àµ] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇനàµà´¨à´²àµ†] LT',\n lastWeek: '[à´•à´´à´¿à´žàµà´ž] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s à´•à´´à´¿à´žàµà´žàµ',\n past: '%s à´®àµàµ»à´ªàµ',\n s: 'അൽപ നിമിഷങàµà´™àµ¾',\n ss: '%d സെകàµà´•àµ»à´¡àµ',\n m: 'ഒരൠമിനിറàµà´±àµ',\n mm: '%d മിനിറàµà´±àµ',\n h: 'ഒരൠമണികàµà´•àµ‚ർ',\n hh: '%d മണികàµà´•àµ‚ർ',\n d: 'ഒരൠദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരൠമാസം',\n MM: '%d മാസം',\n y: 'ഒരൠവർഷം',\n yy: '%d വർഷം'\n },\n meridiemParse: /രാതàµà´°à´¿|രാവിലെ|ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ|വൈകàµà´¨àµà´¨àµ‡à´°à´‚|രാതàµà´°à´¿/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'രാതàµà´°à´¿' && hour >= 4 || meridiem === 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ' || meridiem === 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚') {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാതàµà´°à´¿';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉചàµà´š à´•à´´à´¿à´žàµà´žàµ';\n } else if (hour < 20) {\n return 'വൈകàµà´¨àµà´¨àµ‡à´°à´‚';\n } else {\n return 'രാതàµà´°à´¿';\n }\n }\n });\n return ml;\n});","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'Ñ…ÑдхÑн Ñекунд' : 'Ñ…ÑдхÑн Ñекундын';\n case 'ss':\n return number + (withoutSuffix ? ' Ñекунд' : ' Ñекундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' Ñар' : ' Ñарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n var mn = moment.defineLocale('mn', {\n months: 'ÐÑгдүгÑÑÑ€ Ñар_Хоёрдугаар Ñар_Гуравдугаар Ñар_ДөрөвдүгÑÑÑ€ Ñар_Тавдугаар Ñар_Зургадугаар Ñар_Долдугаар Ñар_Ðаймдугаар Ñар_ЕÑдүгÑÑÑ€ Ñар_Ðравдугаар Ñар_Ðрван нÑгдүгÑÑÑ€ Ñар_Ðрван хоёрдугаар Ñар'.split('_'),\n monthsShort: '1 Ñар_2 Ñар_3 Ñар_4 Ñар_5 Ñар_6 Ñар_7 Ñар_8 Ñар_9 Ñар_10 Ñар_11 Ñар_12 Ñар'.split('_'),\n monthsParseExact: true,\n weekdays: 'ÐÑм_Даваа_ÐœÑгмар_Лхагва_ПүрÑв_БааÑан_БÑмба'.split('_'),\n weekdaysShort: 'ÐÑм_Дав_ÐœÑг_Лха_Пүр_Баа_БÑм'.split('_'),\n weekdaysMin: 'ÐÑ_Да_ÐœÑ_Лх_Пү_Ба_БÑ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm'\n },\n meridiemParse: /Ò®Ó¨|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Ò®Ó¨';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[ИрÑÑ…] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[ӨнгөрÑөн] dddd LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n }\n });\n return mn;\n});","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'à¤à¤• मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'à¤à¤• तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'à¤à¤• दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'à¤à¤• महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'à¤à¤• वरà¥à¤·';\n break;\n case 'yy':\n output = '%d वरà¥à¤·à¥‡';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'à¤à¤•à¤¾ मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'à¤à¤•à¤¾ तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'à¤à¤•à¤¾ दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'à¤à¤•à¤¾ महिनà¥à¤¯à¤¾';\n break;\n case 'MM':\n output = '%d महिनà¥à¤¯à¤¾à¤‚';\n break;\n case 'y':\n output = 'à¤à¤•à¤¾ वरà¥à¤·à¤¾';\n break;\n case 'yy':\n output = '%d वरà¥à¤·à¤¾à¤‚';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर'.split('_'),\n monthsShort: 'जाने._फेबà¥à¤°à¥._मारà¥à¤š._à¤à¤ªà¥à¤°à¤¿._मे._जून._जà¥à¤²à¥ˆ._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.'.split('_'),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बà¥_गà¥_शà¥_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उदà¥à¤¯à¤¾] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमधà¥à¤¯à¥‡',\n past: '%sपूरà¥à¤µà¥€',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दà¥à¤ªà¤¾à¤°à¥€|सायंकाळी|रातà¥à¤°à¥€/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (meridiem === 'दà¥à¤ªà¤¾à¤°à¥€' || meridiem === 'सायंकाळी' || meridiem === 'रातà¥à¤°à¥€') {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दà¥à¤ªà¤¾à¤°à¥€';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रातà¥à¤°à¥€';\n }\n },\n week: {\n dow: 0,\n // 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\n return mr;\n});","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ms;\n});","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return msMy;\n});","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ä unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_DiÄ‹embru'.split('_'),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ä un_Lul_Aww_Set_Ott_Nov_DiÄ‹'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ä imgħa_Is-Sibt'.split('_'),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ä im_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ä i_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'Ä¡urnata',\n dd: '%d Ä¡ranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return mt;\n});","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: 'á',\n 2: 'á‚',\n 3: 'áƒ',\n 4: 'á„',\n 5: 'á…',\n 6: 'á†',\n 7: 'á‡',\n 8: 'áˆ',\n 9: 'á‰',\n 0: 'á€'\n },\n numberMap = {\n 'á': '1',\n 'á‚': '2',\n 'áƒ': '3',\n 'á„': '4',\n 'á…': '5',\n 'á†': '6',\n 'á‡': '7',\n 'áˆ': '8',\n 'á‰': '9',\n 'á€': '0'\n };\n var my = moment.defineLocale('my', {\n months: 'ဇန်နá€á€«á€›á€®_ဖေဖော်á€á€«á€›á€®_မá€á€º_ဧပြီ_မေ_ဇွန်_ဇူလá€á€¯á€„်_သြဂုá€á€º_စက်á€á€„်ဘာ_အောက်á€á€á€¯á€˜á€¬_နá€á€¯á€á€„်ဘာ_ဒီဇင်ဘာ'.split('_'),\n monthsShort: 'ဇန်_ဖေ_မá€á€º_ပြီ_မေ_ဇွန်_လá€á€¯á€„်_သြ_စက်_အောက်_နá€á€¯_ဒီ'.split('_'),\n weekdays: 'á€á€”င်္ဂနွေ_á€á€”င်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပá€á€±á€¸_သောကြာ_စနေ'.split('_'),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးá€á€²á€·á€žá€±á€¬] dddd LT [မှာ]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်á€á€²á€·á€žá€±á€¬ %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'á€á€…်မá€á€”စ်',\n mm: '%d မá€á€”စ်',\n h: 'á€á€…်နာရီ',\n hh: '%d နာရီ',\n d: 'á€á€…်ရက်',\n dd: '%d ရက်',\n M: 'á€á€…်လ',\n MM: '%d လ',\n y: 'á€á€…်နှစ်',\n yy: '%d နှစ်'\n },\n preparse: function (string) {\n return string.replace(/[áá‚áƒá„á…á†á‡áˆá‰á€]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return my;\n});","//! moment.js locale configuration\n//! locale : Norwegian BokmÃ¥l [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i gÃ¥r kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en mÃ¥ned',\n MM: '%d mÃ¥neder',\n y: 'ett Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nb;\n});","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: 'à¥',\n 8: '८',\n 9: '९',\n 0: '०'\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n 'à¥': '7',\n '८': '8',\n '९': '9',\n '०': '0'\n };\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोà¤à¥‡à¤®à¥à¤¬à¤°_डिसेमà¥à¤¬à¤°'.split('_'),\n monthsShort: 'जन._फेबà¥à¤°à¥._मारà¥à¤š_अपà¥à¤°à¤¿._मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ._अग._सेपà¥à¤Ÿ._अकà¥à¤Ÿà¥‹._नोà¤à¥‡._डिसे.'.split('_'),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङà¥à¤—लबार_बà¥à¤§à¤¬à¤¾à¤°_बिहिबार_शà¥à¤•à¥à¤°à¤¬à¤¾à¤°_शनिबार'.split('_'),\n weekdaysShort: 'आइत._सोम._मङà¥à¤—ल._बà¥à¤§._बिहि._शà¥à¤•à¥à¤°._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बà¥._बि._शà¥._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउà¤à¤¸à¥‹|साà¤à¤/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउà¤à¤¸à¥‹') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साà¤à¤') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउà¤à¤¸à¥‹';\n } else if (hour < 20) {\n return 'साà¤à¤';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[à¤à¥‹à¤²à¤¿] LT',\n nextWeek: '[आउà¤à¤¦à¥‹] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गà¤à¤•à¥‹] dddd[,] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही कà¥à¤·à¤£',\n ss: '%d सेकेणà¥à¤¡',\n m: 'à¤à¤• मिनेट',\n mm: '%d मिनेट',\n h: 'à¤à¤• घणà¥à¤Ÿà¤¾',\n hh: '%d घणà¥à¤Ÿà¤¾',\n d: 'à¤à¤• दिन',\n dd: '%d दिन',\n M: 'à¤à¤• महिना',\n MM: '%d महिना',\n y: 'à¤à¤• बरà¥à¤·',\n yy: '%d बरà¥à¤·'\n },\n week: {\n dow: 0,\n // 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\n return ne;\n});","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nl;\n});","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nlBe;\n});","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._mÃ¥._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_mÃ¥_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I gÃ¥r klokka] LT',\n lastWeek: '[FøregÃ¥ande] dddd [klokka] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein mÃ¥nad',\n MM: '%d mÃ¥nader',\n y: 'eit Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return nn;\n});","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split('_'),\n isFormat: /D[oD]?(\\s)+MMMM/\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm'\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: \"d'aquà %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4\n }\n });\n return ocLnc;\n});","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: 'à©©',\n 4: '੪',\n 5: 'à©«',\n 6: '੬',\n 7: 'à©',\n 8: 'à©®',\n 9: '੯',\n 0: '੦'\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n 'à©©': '3',\n '੪': '4',\n 'à©«': '5',\n '੬': '6',\n 'à©': '7',\n 'à©®': '8',\n '੯': '9',\n '੦': '0'\n };\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),\n weekdays: 'à¨à¨¤à¨µà¨¾à¨°_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬà©à¨§à¨µà¨¾à¨°_ਵੀਰਵਾਰ_ਸ਼à©à©±à¨•à¨°à¨µà¨¾à¨°_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),\n weekdaysShort: 'à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕà©à¨ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ'\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬à©à©®à©¯à©¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦà©à¨ªà¨¹à¨¿à¨°|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦà©à¨ªà¨¹à¨¿à¨°') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦà©à¨ªà¨¹à¨¿à¨°';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0,\n // 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\n return paIn;\n});","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var monthsNominative = 'styczeÅ„_luty_marzec_kwiecieÅ„_maj_czerwiec_lipiec_sierpieÅ„_wrzesieÅ„_październik_listopad_grudzieÅ„'.split('_'),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅ›nia_października_listopada_grudnia'.split('_'),\n monthsParse = [/^sty/i, /^lut/i, /^mar/i, /^kwi/i, /^maj/i, /^cze/i, /^lip/i, /^sie/i, /^wrz/i, /^paź/i, /^lis/i, /^gru/i];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutÄ™';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinÄ™';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiÄ…ce' : 'miesiÄ™cy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziaÅ‚ek_wtorek_Å›roda_czwartek_piÄ…tek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_Å›r_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Åšr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[DziÅ› o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielÄ™ o] LT';\n case 2:\n return '[We wtorek o] LT';\n case 3:\n return '[W Å›rodÄ™ o] LT';\n case 6:\n return '[W sobotÄ™ o] LT';\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszÅ‚Ä… niedzielÄ™ o] LT';\n case 3:\n return '[W zeszÅ‚Ä… Å›rodÄ™ o] LT';\n case 6:\n return '[W zeszÅ‚Ä… sobotÄ™ o] LT';\n default:\n return '[W zeszÅ‚y] dddd [o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzieÅ„',\n dd: '%d dni',\n w: 'tydzieÅ„',\n ww: translate,\n M: 'miesiÄ…c',\n MM: translate,\n y: 'rok',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pl;\n});","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return pt;\n});","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [à s] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [à s] HH:mm'\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6 ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n\n sameElse: 'L'\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida'\n });\n return ptBr;\n});","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani'\n },\n separator = ' ';\n if (number % 100 >= 20 || number >= 100 && number % 100 === 0) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marÈ›i_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return ro;\n});","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунды_Ñекунд' : 'Ñекунду_Ñекунды_Ñекунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'чаÑ_чаÑа_чаÑов',\n dd: 'день_днÑ_дней',\n ww: 'неделÑ_недели_недель',\n MM: 'меÑÑц_меÑÑца_меÑÑцев',\n yy: 'год_года_лет'\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [/^Ñнв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йÑ]/i, /^июн/i, /^июл/i, /^авг/i, /^Ñен/i, /^окт/i, /^ноÑ/i, /^дек/i];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Ð¡Ð¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¼ÐµÑÑцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'ÑнварÑ_февралÑ_марта_апрелÑ_маÑ_июнÑ_июлÑ_авгуÑта_ÑентÑбрÑ_октÑбрÑ_ноÑбрÑ_декабрÑ'.split('_'),\n standalone: 'Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь'.split('_')\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой ÑмыÑл менÑÑ‚ÑŒ букву на точку?\n format: 'Ñнв._февр._мар._апр._маÑ_июнÑ_июлÑ_авг._Ñент._окт._ноÑб._дек.'.split('_'),\n standalone: 'Ñнв._февр._март_апр._май_июнь_июль_авг._Ñент._окт._ноÑб._дек.'.split('_')\n },\n weekdays: {\n standalone: 'воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота'.split('_'),\n format: 'воÑкреÑенье_понедельник_вторник_Ñреду_четверг_пÑтницу_Ñубботу'.split('_'),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|Ñледующую|Ñту)? ?] ?dddd/\n },\n weekdaysShort: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'вÑ_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸, по три буквы, Ð´Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ…, по 4 буквы, ÑÐ¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ и без точки\n monthsRegex: /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n // ÐºÐ¾Ð¿Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ³Ð¾\n monthsShortRegex: /^(Ñнвар[ÑŒÑ]|Ñнв\\.?|феврал[ÑŒÑ]|февр?\\.?|марта?|мар\\.?|апрел[ÑŒÑ]|апр\\.?|ма[йÑ]|июн[ÑŒÑ]|июн\\.?|июл[ÑŒÑ]|июл\\.?|авгуÑта?|авг\\.?|ÑентÑбр[ÑŒÑ]|Ñент?\\.?|октÑбр[ÑŒÑ]|окт\\.?|ноÑбр[ÑŒÑ]|ноÑб?\\.?|декабр[ÑŒÑ]|дек\\.?)/i,\n // полные Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸\n monthsStrictRegex: /^(Ñнвар[ÑÑŒ]|феврал[ÑÑŒ]|марта?|апрел[ÑÑŒ]|ма[Ñй]|июн[ÑÑŒ]|июл[ÑÑŒ]|авгуÑта?|ÑентÑбр[ÑÑŒ]|октÑбр[ÑÑŒ]|ноÑбр[ÑÑŒ]|декабр[ÑÑŒ])/i,\n // Выражение, которое ÑоответÑтвует только Ñокращённым формам\n monthsShortStrictRegex: /^(Ñнв\\.|февр?\\.|мар[Ñ‚.]|апр\\.|ма[Ñй]|июн[ÑŒÑ.]|июл[ÑŒÑ.]|авг\\.|Ñент?\\.|окт\\.|ноÑб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm'\n },\n calendar: {\n sameDay: '[СегоднÑ, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ Ñледующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ Ñледующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ Ñледующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[Ð’] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[Ð’ прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[Ð’ прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[Ð’ прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[Ð’] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'неÑколько Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'чаÑ',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделÑ',\n ww: relativeTimeWithPlural,\n M: 'меÑÑц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural\n },\n meridiemParse: /ночи|утра|днÑ|вечера/i,\n isPM: function (input) {\n return /^(днÑ|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|Ñ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-Ñ';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ru;\n});","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['جنوري', 'Ùيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءÙ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ddddØŒ D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبØ|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبØ';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين Ù‡Ùتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل Ù‡Ùتي] dddd [تي] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'Ù‡Úª منٽ',\n mm: '%d منٽ',\n h: 'Ù‡Úª ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'Ù‡Úª Úينهن',\n dd: '%d Úينهن',\n M: 'Ù‡Úª مهينو',\n MM: '%d مهينا',\n y: 'Ù‡Úª سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sd;\n});","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var se = moment.defineLocale('se', {\n months: 'oÄ‘Ä‘ajagemánnu_guovvamánnu_njukÄamánnu_cuoÅ‹ománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_ÄakÄamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),\n monthsShort: 'oÄ‘Ä‘j_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov'.split('_'),\n weekdays: 'sotnabeaivi_vuossárga_maÅ‹Å‹ebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),\n weekdaysShort: 'sotn_vuos_maÅ‹_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maÅ‹it %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return se;\n});","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවà·à¶»à·’_පෙබරවà·à¶»à·’_මà·à¶»à·Šà¶à·”_අප්â€à¶»à·šà¶½à·Š_මà·à¶ºà·’_ජූනි_ජූලි_අගà·à·ƒà·Šà¶à·”_à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š_ඔක්à¶à·à¶¶à¶»à·Š_නොවà·à¶¸à·Šà¶¶à¶»à·Š_දෙසà·à¶¸à·Šà¶¶à¶»à·Š'.split('_'),\n monthsShort: 'ජන_පෙබ_මà·à¶»à·Š_අප්_මà·à¶ºà·’_ජූනි_ජූලි_අගà·_à·ƒà·à¶´à·Š_ඔක්_නොවà·_දෙසà·'.split('_'),\n weekdays: 'ඉරිදà·_සඳුදà·_අඟහරුවà·à¶¯à·_බදà·à¶¯à·_බ්â€à¶»à·„ස්පà¶à·’න්දà·_සිකුරà·à¶¯à·_සෙනසුරà·à¶¯à·'.split('_'),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදà·_බ්â€à¶»à·„_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_à·ƒ_අ_බ_බ්â€à¶»_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [à·€à·à¶±à·’] dddd, a h:mm:ss'\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'à¶à¶à·Šà¶´à¶» කිහිපය',\n ss: 'à¶à¶à·Šà¶´à¶» %d',\n m: 'මිනිà¶à·Šà¶à·”à·€',\n mm: 'මිනිà¶à·Šà¶à·” %d',\n h: 'පà·à¶º',\n hh: 'පà·à¶º %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මà·à·ƒà¶º',\n MM: 'මà·à·ƒ %d',\n y: 'වසර',\n yy: 'වසර %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2} à·€à·à¶±à·’/,\n ordinal: function (number) {\n return number + ' à·€à·à¶±à·’';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.à·€|ප.à·€./,\n isPM: function (input) {\n return input === 'ප.à·€.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.à·€.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.à·€.' : 'පෙර වරු';\n }\n }\n });\n return si;\n});","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = 'január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december'.split('_'),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss':\n // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm':\n // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm':\n // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h':\n // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh':\n // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodÃn');\n } else {\n return result + 'hodinami';\n }\n case 'd':\n // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd':\n // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dnÃ');\n } else {\n return result + 'dňami';\n }\n case 'M':\n // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM':\n // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y':\n // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy':\n // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_Å¡t_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo Å¡tvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[vÄera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sk;\n});","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert SedovÅ¡ek : https://github.com/sedovsek\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._Äet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_Äe_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm'\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[vÄeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejÅ¡njo] [nedeljo] [ob] LT';\n case 3:\n return '[prejÅ¡njo] [sredo] [ob] LT';\n case 6:\n return '[prejÅ¡njo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejÅ¡nji] dddd [ob] LT';\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Äez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sl;\n});","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sq;\n});","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan JanaÄković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina']\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n return number + ' ' + word;\n }\n };\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_Äetvrtak_petak_subota'.split('_'),\n weekdaysShort: 'ned._pon._uto._sre._Äet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juÄe u] LT',\n lastWeek: function () {\n var lastWeekDays = ['[proÅ¡le] [nedelje] [u] LT', '[proÅ¡log] [ponedeljka] [u] LT', '[proÅ¡log] [utorka] [u] LT', '[proÅ¡le] [srede] [u] LT', '[proÅ¡log] [Äetvrtka] [u] LT', '[proÅ¡log] [petka] [u] LT', '[proÅ¡le] [subote] [u] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sr;\n});","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan JanaÄković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['Ñекунда', 'Ñекунде', 'Ñекунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један Ñат', 'једног Ñата'],\n hh: ['Ñат', 'Ñата', 'Ñати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један меÑец', 'једног меÑеца'],\n MM: ['меÑец', 'меÑеца', 'меÑеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година']\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n return number + ' ' + word;\n }\n };\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_авгуÑÑ‚_Ñептембар_октобар_новембар_децембар'.split('_'),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._Ñеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_Ñреда_четвртак_петак_Ñубота'.split('_'),\n weekdaysShort: 'нед._пон._уто._Ñре._чет._пет._Ñуб.'.split('_'),\n weekdaysMin: 'не_по_ут_ÑÑ€_че_пе_Ñу'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm'\n },\n calendar: {\n sameDay: '[Ð´Ð°Ð½Ð°Ñ Ñƒ] LT',\n nextDay: '[Ñутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [Ñреду] [у] LT';\n case 6:\n return '[у] [Ñуботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = ['[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', '[прошлог] [уторка] [у] LT', '[прошле] [Ñреде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', '[прошле] [Ñуботе] [у] LT'];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико Ñекунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return srCyrl;\n});","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split('_'),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka'\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ss;\n});","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mÃ¥n_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_mÃ¥_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[IgÃ¥r] LT',\n nextWeek: '[PÃ¥] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'nÃ¥gra sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en mÃ¥nad',\n MM: '%d mÃ¥nader',\n y: 'ett Ã¥r',\n yy: '%d Ã¥r'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? ':e' : b === 1 ? ':a' : b === 2 ? ':a' : b === 3 ? ':e' : ':e';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return sv;\n});","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return sw;\n});","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: 'à¯',\n 8: '௮',\n 9: '௯',\n 0: '௦'\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n 'à¯': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0'\n };\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split('_'),\n monthsShort: 'ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯'.split('_'),\n weekdays: 'ஞாயிறà¯à®±à¯à®•à¯à®•à®¿à®´à®®à¯ˆ_திஙà¯à®•à®Ÿà¯à®•à®¿à®´à®®à¯ˆ_செவà¯à®µà®¾à®¯à¯à®•à®¿à®´à®®à¯ˆ_பà¯à®¤à®©à¯à®•à®¿à®´à®®à¯ˆ_வியாழகà¯à®•à®¿à®´à®®à¯ˆ_வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ_சனிகà¯à®•à®¿à®´à®®à¯ˆ'.split('_'),\n weekdaysShort: 'ஞாயிறà¯_திஙà¯à®•à®³à¯_செவà¯à®µà®¾à®¯à¯_பà¯à®¤à®©à¯_வியாழனà¯_வெளà¯à®³à®¿_சனி'.split('_'),\n weekdaysMin: 'ஞா_தி_செ_பà¯_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm'\n },\n calendar: {\n sameDay: '[இனà¯à®±à¯] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேறà¯à®±à¯] LT',\n lastWeek: '[கடநà¯à®¤ வாரமà¯] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s இலà¯',\n past: '%s à®®à¯à®©à¯',\n s: 'ஒர௠சில விநாடிகளà¯',\n ss: '%d விநாடிகளà¯',\n m: 'ஒர௠நிமிடமà¯',\n mm: '%d நிமிடஙà¯à®•à®³à¯',\n h: 'ஒர௠மணி நேரமà¯',\n hh: '%d மணி நேரமà¯',\n d: 'ஒர௠நாளà¯',\n dd: '%d நாடà¯à®•à®³à¯',\n M: 'ஒர௠மாதமà¯',\n MM: '%d மாதஙà¯à®•à®³à¯',\n y: 'ஒர௠வரà¯à®Ÿà®®à¯',\n yy: '%d ஆணà¯à®Ÿà¯à®•à®³à¯'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வதà¯/,\n ordinal: function (number) {\n return number + 'வதà¯';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬à¯à¯®à¯¯à¯¦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமமà¯|வைகறை|காலை|நணà¯à®ªà®•à®²à¯|எறà¯à®ªà®¾à®Ÿà¯|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமமà¯';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நணà¯à®ªà®•à®²à¯'; // நணà¯à®ªà®•à®²à¯\n } else if (hour < 18) {\n return ' எறà¯à®ªà®¾à®Ÿà¯'; // எறà¯à®ªà®¾à®Ÿà¯\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமமà¯';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமமà¯') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நணà¯à®ªà®•à®²à¯') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0,\n // 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\n return ta;\n});","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var te = moment.defineLocale('te', {\n months: 'జనవరి_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°šà°¿_à°à°ªà±à°°à°¿à°²à±_మే_జూనà±_à°œà±à°²à±ˆ_ఆగసà±à°Ÿà±_సెపà±à°Ÿà±†à°‚బరà±_à°…à°•à±à°Ÿà±‹à°¬à°°à±_నవంబరà±_డిసెంబరà±'.split('_'),\n monthsShort: 'జన._à°«à°¿à°¬à±à°°._మారà±à°šà°¿_à°à°ªà±à°°à°¿._మే_జూనà±_à°œà±à°²à±ˆ_ఆగ._సెపà±._à°…à°•à±à°Ÿà±‹._నవ._డిసె.'.split('_'),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_à°¬à±à°§à°µà°¾à°°à°‚_à°—à±à°°à±à°µà°¾à°°à°‚_à°¶à±à°•à±à°°à°µà°¾à°°à°‚_శనివారం'.split('_'),\n weekdaysShort: 'ఆది_సోమ_మంగళ_à°¬à±à°§_à°—à±à°°à±_à°¶à±à°•à±à°°_శని'.split('_'),\n weekdaysMin: 'à°†_సో_మం_à°¬à±_à°—à±_à°¶à±_à°¶'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm'\n },\n calendar: {\n sameDay: '[నేడà±] LT',\n nextDay: '[రేపà±] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నినà±à°¨] LT',\n lastWeek: '[à°—à°¤] dddd, LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s లో',\n past: '%s à°•à±à°°à°¿à°¤à°‚',\n s: 'కొనà±à°¨à°¿ à°•à±à°·à°£à°¾à°²à±',\n ss: '%d సెకనà±à°²à±',\n m: 'à°’à°• నిమిషం',\n mm: '%d నిమిషాలà±',\n h: 'à°’à°• à°—à°‚à°Ÿ',\n hh: '%d à°—à°‚à°Ÿà°²à±',\n d: 'à°’à°• రోజà±',\n dd: '%d రోజà±à°²à±',\n M: 'à°’à°• నెల',\n MM: '%d నెలలà±',\n y: 'à°’à°• సంవతà±à°¸à°°à°‚',\n yy: '%d సంవతà±à°¸à°°à°¾à°²à±'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}à°µ/,\n ordinal: '%dà°µ',\n meridiemParse: /రాతà±à°°à°¿|ఉదయం|మధà±à°¯à°¾à°¹à±à°¨à°‚|సాయంతà±à°°à°‚/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాతà±à°°à°¿') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధà±à°¯à°¾à°¹à±à°¨à°‚') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంతà±à°°à°‚') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాతà±à°°à°¿';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధà±à°¯à°¾à°¹à±à°¨à°‚';\n } else if (hour < 20) {\n return 'సాయంతà±à°°à°‚';\n } else {\n return 'రాతà±à°°à°¿';\n }\n },\n week: {\n dow: 0,\n // 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\n return te;\n});","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tet;\n});","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум'\n };\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'Ñнвари_феврали_марти_апрели_майи_июни_июли_авгуÑти_ÑентÑбри_октÑбри_ноÑбри_декабри'.split('_'),\n standalone: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split('_')\n },\n monthsShort: 'Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Ñкшанбе_душанбе_Ñешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),\n weekdaysShort: 'Ñшб_дшб_Ñшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'Ñш_дш_Ñш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Имрӯз Ñоати] LT',\n nextDay: '[Фардо Ñоати] LT',\n lastDay: '[Дирӯз Ñоати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оÑнда Ñоати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта Ñоати] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'Ñкчанд ÑониÑ',\n m: 'Ñк дақиқа',\n mm: '%d дақиқа',\n h: 'Ñк Ñоат',\n hh: '%d Ñоат',\n d: 'Ñк рӯз',\n dd: '%d рӯз',\n M: 'Ñк моҳ',\n MM: '%d моҳ',\n y: 'Ñк Ñол',\n yy: '%d Ñол'\n },\n meridiemParse: /шаб|Ñубҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'Ñубҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'Ñубҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1th is the first week of the year.\n }\n });\n\n return tg;\n});","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var th = moment.defineLocale('th', {\n months: 'มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ าพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม'.split('_'),\n monthsShort: 'ม.ค._à¸.พ._มี.ค._เม.ย._พ.ค._มิ.ย._à¸.ค._ส.ค._à¸.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),\n monthsParseExact: true,\n weekdays: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัสบดี_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n weekdaysShort: 'à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัส_ศุà¸à¸£à¹Œ_เสาร์'.split('_'),\n // yes, three characters difference\n weekdaysMin: 'à¸à¸²._จ._à¸._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'\n },\n meridiemParse: /à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'à¸à¹ˆà¸à¸™à¹€à¸—ี่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่à¸à¸§à¸²à¸™à¸™à¸µà¹‰ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่à¹à¸¥à¹‰à¸§ เวลา] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'à¸à¸µà¸ %s',\n past: '%sที่à¹à¸¥à¹‰à¸§',\n s: 'ไม่à¸à¸µà¹ˆà¸§à¸´à¸™à¸²à¸—ี',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดืà¸à¸™',\n MM: '%d เดืà¸à¸™',\n y: '1 ปี',\n yy: '%d ปี'\n }\n });\n return th;\n});","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\"\n };\n var tk = moment.defineLocale('tk', {\n months: 'Ãanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'),\n monthsShort: 'Ãan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'ÃekÅŸenbe_DuÅŸenbe_SiÅŸenbe_ÇarÅŸenbe_PenÅŸenbe_Anna_Åženbe'.split('_'),\n weekdaysShort: 'Ãek_DuÅŸ_SiÅŸ_Çar_Pen_Ann_Åžen'.split('_'),\n weekdaysMin: 'Ãk_DÅŸ_SÅŸ_Çr_Pn_An_Åžn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return tk;\n});","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm'\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlPh;\n});","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n function translateFuture(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'waQ' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'nem' : time + ' pIq';\n return time;\n }\n function translatePast(output) {\n var time = output;\n time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'wen' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'ben' : time + ' ret';\n return time;\n }\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n function numberAsNoun(number) {\n var hundred = Math.floor(number % 1000 / 100),\n ten = Math.floor(number % 100 / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L'\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return tlh;\n});","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak YiÄŸit Kaya: https://github.com/BYK\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\"\n };\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Åžubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄŸustos_Eylül_Ekim_Kasım_Aralık'.split('_'),\n monthsShort: 'Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_ÇarÅŸamba_PerÅŸembe_Cuma_Cumartesi'.split('_'),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl'\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = number % 100 - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return tr;\n});","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à ] LT',\n nextDay: '[demà à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[ieiri à ] LT',\n lastWeek: '[sür el] dddd [lasteu à ] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n mÃut\", \"'iens mÃut\"],\n mm: [number + ' mÃuts', '' + number + ' mÃuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars']\n };\n return isFuture ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1];\n }\n return tzl;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split('_'),\n monthsShort: 'ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”'.split('_'),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ â´´] LT',\n nextDay: '[ⴰⵙⴽⴰ â´´] LT',\n nextWeek: 'dddd [â´´] LT',\n lastDay: '[ⴰⵚⴰâµâµœ â´´] LT',\n lastWeek: 'dddd [â´´] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'â´·â´°â´·âµ… âµ™ ⵢⴰⵠ%s',\n past: 'ⵢⴰⵠ%s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉâµâµ“â´º',\n mm: '%d ⵎⵉâµâµ“â´º',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉâµ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰâµ',\n M: 'â´°âµ¢oⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔâµ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙâµ'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzm;\n});","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuá¸',\n mm: '%d minuá¸',\n h: 'saÉ›a',\n hh: '%d tassaÉ›in',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn'\n },\n week: {\n dow: 6,\n // Saturday is the first day of the week.\n doy: 12 // The week that contains Jan 12th is the first week of the year.\n }\n });\n\n return tzmLatn;\n});","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split('_'),\n monthsShort: 'يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر'.split('_'),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'),\n weekdaysShort: 'ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•'.split('_'),\n weekdaysMin: 'ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىÚD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm',\n LLLL: 'ddddØŒ YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm'\n },\n meridiemParse: /ÙŠÛرىم ÙƒÛÚ†Û•|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن ÙƒÛيىن|ÙƒÛ•Ú†/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ÙŠÛرىم ÙƒÛÚ†Û•' || meridiem === 'سەھەر' || meridiem === 'چۈشتىن بۇرۇن') {\n return hour;\n } else if (meridiem === 'چۈشتىن ÙƒÛيىن' || meridiem === 'ÙƒÛ•Ú†') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'ÙŠÛرىم ÙƒÛÚ†Û•';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن ÙƒÛيىن';\n } else {\n return 'ÙƒÛ•Ú†';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[ÙƒÛلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s ÙƒÛيىن',\n past: '%s بۇرۇن',\n s: 'Ù†Û•Ú†Ú†Û• سÛكونت',\n ss: '%d سÛكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر ÙƒÛˆÙ†',\n dd: '%d ÙƒÛˆÙ†',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988ç‰æ•ˆ\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 1st is the first week of the year.\n }\n });\n\n return ugCn;\n});","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунди_Ñекунд' : 'Ñекунду_Ñекунди_Ñекунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'міÑÑць_міÑÑці_міÑÑців',\n yy: 'рік_роки_років'\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота'.split('_'),\n accusative: 'неділю_понеділок_вівторок_Ñереду_четвер_п’Ñтницю_Ñуботу'.split('_'),\n genitive: 'неділі_понеділка_вівторка_Ñереди_четверга_п’Ñтниці_Ñуботи'.split('_')\n },\n nounCase;\n if (m === true) {\n return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format) ? 'accusative' : /\\[?(?:минулої|наÑтупної)? ?\\] ?dddd/.test(format) ? 'genitive' : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ'.split('_'),\n standalone: 'Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень'.split('_')\n },\n monthsShort: 'Ñіч_лют_бер_квіт_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд'.split('_'),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Ñ€.',\n LLL: 'D MMMM YYYY Ñ€., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Ñ€., HH:mm'\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L'\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'міÑÑць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|днÑ|вечора/,\n isPM: function (input) {\n return /^(днÑ|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uk;\n});","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var months = ['جنوری', 'Ùروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعÛ', 'ÛÙتÛ'];\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ddddØŒ D MMMM YYYY HH:mm'\n },\n meridiemParse: /صبØ|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبØ';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[Ú©Ù„ بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[Ú¯Ø°Ø´ØªÛ Ø±ÙˆØ² بوقت] LT',\n lastWeek: '[گذشتÛ] dddd [بوقت] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹÛ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماÛ',\n MM: '%d ماÛ',\n y: 'ایک سال',\n yy: '%d سال'\n },\n preparse: function (string) {\n return string.replace(/ØŒ/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, 'ØŒ');\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return ur;\n});","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var uz = moment.defineLocale('uz', {\n months: 'Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр'.split('_'),\n monthsShort: 'Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Бугун Ñоат] LT [да]',\n nextDay: '[Ðртага] LT [да]',\n nextWeek: 'dddd [куни Ñоат] LT [да]',\n lastDay: '[Кеча Ñоат] LT [да]',\n lastWeek: '[Утган] dddd [куни Ñоат] LT [да]',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурÑат',\n ss: '%d фурÑат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир Ñоат',\n hh: '%d Ñоат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return uz;\n});","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm'\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil'\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 7 // The week that contains Jan 7th is the first week of the year.\n }\n });\n\n return uzLatn;\n});","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split('_'),\n monthsParseExact: true,\n weekdays: 'chủ nháºt_thứ hai_thứ ba_thứ tÆ°_thứ năm_thứ sáu_thứ bảy'.split('_'),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngà y mai lúc] LT',\n nextWeek: 'dddd [tuần tá»›i lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trÆ°á»›c lúc] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: '%s tá»›i',\n past: '%s trÆ°á»›c',\n s: 'và i giây',\n ss: '%d giây',\n m: 'má»™t phút',\n mm: '%d phút',\n h: 'má»™t giá»',\n hh: '%d giá»',\n d: 'má»™t ngà y',\n dd: '%d ngà y',\n w: 'má»™t tuần',\n ww: '%d tuần',\n M: 'má»™t tháng',\n MM: '%d tháng',\n y: 'má»™t năm',\n yy: '%d năm'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return vi;\n});","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),\n monthsShort: 'J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý'.split('_'),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm'\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ã~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'Ã~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~mÃñ~úté',\n mm: '%d m~Ãñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';\n return number + output;\n },\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return xPseudo;\n});","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var yo = moment.defineLocale('yo', {\n months: 'SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀'.split('_'),\n monthsShort: 'SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta'.split('_'),\n weekdaysShort: 'AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ'.split('_'),\n weekdaysMin: 'AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A'\n },\n calendar: {\n sameDay: '[OÌ€niÌ€ ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ toÌn'bá»] [ni] LT\",\n lastDay: '[AÌ€na ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ toÌlá»Ì] [ni] LT',\n sameElse: 'L'\n },\n relativeTime: {\n future: 'niÌ %s',\n past: '%s ká»jaÌ',\n s: 'iÌ€sẹjuÌ aayaÌ die',\n ss: 'aayaÌ %d',\n m: 'iÌ€sẹjuÌ kan',\n mm: 'iÌ€sẹjuÌ %d',\n h: 'waÌkati kan',\n hh: 'waÌkati %d',\n d: 'á»já»Ì kan',\n dd: 'á»já»Ì %d',\n M: 'osuÌ€ kan',\n MM: 'osuÌ€ %d',\n y: 'á»duÌn kan',\n yy: 'á»duÌn %d'\n },\n dayOfMonthOrdinalParse: /á»já»Ì\\s\\d{1,2}/,\n ordinal: 'á»já»Ì %d',\n week: {\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return yo;\n});","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥Ah点mm分',\n LLLL: 'YYYYå¹´M月Dæ—¥ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // 'ä¸åˆ'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%såŽ',\n past: '%så‰',\n s: 'å‡ ç§’',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 å°æ—¶',\n hh: '%d å°æ—¶',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 å¹´',\n yy: '%d å¹´'\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988ç‰æ•ˆ\n dow: 1,\n // Monday is the first day of the week.\n doy: 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return zhCn;\n});","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上åˆ';\n } else if (hm === 1200) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhHk;\n});","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%så…§',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhMo;\n});","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' && typeof require === 'function' ? factory(require('../moment')) : typeof define === 'function' && define.amd ? define(['../moment'], factory) : factory(global.moment);\n})(this, function (moment) {\n 'use strict';\n\n //! moment.js locale configuration\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥ HH:mm',\n LLLL: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm'\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === 'ä¸åˆ') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%så‰',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分é˜',\n mm: '%d 分é˜',\n h: '1 å°æ™‚',\n hh: '%d å°æ™‚',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 å¹´',\n yy: '%d å¹´'\n }\n });\n return zhTw;\n});","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n newObj['default'] = obj;\n return newObj;\n }\n}\nvar _handlebarsBase = require('./handlebars/base');\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\nvar _handlebarsException = require('./handlebars/exception');\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\nvar _handlebarsUtils = require('./handlebars/utils');\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\nvar _handlebarsRuntime = require('./handlebars/runtime');\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n return hb;\n}\nvar inst = create();\ninst.create = create;\n_handlebarsNoConflict2['default'](inst);\ninst['default'] = inst;\nexports['default'] = inst;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\nvar _helpersEach = require('./helpers/each');\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\nvar _helpersHelperMissing = require('./helpers/helper-missing');\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\nvar _helpersIf = require('./helpers/if');\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\nvar _helpersLog = require('./helpers/log');\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\nvar _helpersLookup = require('./helpers/lookup');\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\nvar _helpersWith = require('./helpers/with');\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}","'use strict';\n\nexports.__esModule = true;\nvar _utils = require('./utils');\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n return level;\n },\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _createNewLookupObject = require('./create-new-lookup-object');\nvar _logger = require('../logger');\nvar _logger2 = _interopRequireDefault(_logger);\nvar loggedProperties = Object.create(null);\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n var defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n _logger2['default'].log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}","/* global globalThis */\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function () {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function () {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n var $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nvar AST = {\n // Public API used to evaluate derived attributes regarding AST nodes\n helpers: {\n // a mustache is definitely a helper if:\n // * it is an eligible helper, and\n // * it has at least one parameter or hash segment\n helperExpression: function helperExpression(node) {\n return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash);\n },\n scopedId: function scopedId(path) {\n return /^\\.|this\\b/.test(path.original);\n },\n // an ID is simple if it only has one part, and that part is not\n // `..` or `this`.\n simpleId: function simpleId(path) {\n return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth;\n }\n }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexports['default'] = AST;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _exception = require('../exception');\nvar _exception2 = _interopRequireDefault(_exception);\nfunction Visitor() {\n this.parents = [];\n}\nVisitor.prototype = {\n constructor: Visitor,\n mutating: false,\n // Visits a given value. If mutating, will replace the value if necessary.\n acceptKey: function acceptKey(node, name) {\n var value = this.accept(node[name]);\n if (this.mutating) {\n // Hacky sanity check: This may have a few false positives for type for the helper\n // methods but will generally do the right thing without a lot of overhead.\n if (value && !Visitor.prototype[value.type]) {\n throw new _exception2['default']('Unexpected node type \"' + value.type + '\" found when accepting ' + name + ' on ' + node.type);\n }\n node[name] = value;\n }\n },\n // Performs an accept operation with added sanity check to ensure\n // required keys are not removed.\n acceptRequired: function acceptRequired(node, name) {\n this.acceptKey(node, name);\n if (!node[name]) {\n throw new _exception2['default'](node.type + ' requires ' + name);\n }\n },\n // Traverses a given array. If mutating, empty respnses will be removed\n // for child elements.\n acceptArray: function acceptArray(array) {\n for (var i = 0, l = array.length; i < l; i++) {\n this.acceptKey(array, i);\n if (!array[i]) {\n array.splice(i, 1);\n i--;\n l--;\n }\n }\n },\n accept: function accept(object) {\n if (!object) {\n return;\n }\n\n /* istanbul ignore next: Sanity code */\n if (!this[object.type]) {\n throw new _exception2['default']('Unknown type: ' + object.type, object);\n }\n if (this.current) {\n this.parents.unshift(this.current);\n }\n this.current = object;\n var ret = this[object.type](object);\n this.current = this.parents.shift();\n if (!this.mutating || ret) {\n return ret;\n } else if (ret !== false) {\n return object;\n }\n },\n Program: function Program(program) {\n this.acceptArray(program.body);\n },\n MustacheStatement: visitSubExpression,\n Decorator: visitSubExpression,\n BlockStatement: visitBlock,\n DecoratorBlock: visitBlock,\n PartialStatement: visitPartial,\n PartialBlockStatement: function PartialBlockStatement(partial) {\n visitPartial.call(this, partial);\n this.acceptKey(partial, 'program');\n },\n ContentStatement: function ContentStatement() /* content */{},\n CommentStatement: function CommentStatement() /* comment */{},\n SubExpression: visitSubExpression,\n PathExpression: function PathExpression() /* path */{},\n StringLiteral: function StringLiteral() /* string */{},\n NumberLiteral: function NumberLiteral() /* number */{},\n BooleanLiteral: function BooleanLiteral() /* bool */{},\n UndefinedLiteral: function UndefinedLiteral() /* literal */{},\n NullLiteral: function NullLiteral() /* literal */{},\n Hash: function Hash(hash) {\n this.acceptArray(hash.pairs);\n },\n HashPair: function HashPair(pair) {\n this.acceptRequired(pair, 'value');\n }\n};\nfunction visitSubExpression(mustache) {\n this.acceptRequired(mustache, 'path');\n this.acceptArray(mustache.params);\n this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n visitSubExpression.call(this, block);\n this.acceptKey(block, 'program');\n this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n this.acceptRequired(partial, 'name');\n this.acceptArray(partial.params);\n this.acceptKey(partial, 'hash');\n}\nexports['default'] = Visitor;\nmodule.exports = exports['default'];"," /* \n Options:\n\n Unique: Allow one class instance across specified elements [items], removes existing instances\n before applying class on current element. Also matches class by prefix. Must provide element \n class or id via the item attribute.\n\n Item: class or id to check for existing instance of class.\n\n */\n\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\tstatic targets = [\"element\"]\n\n connect(){\n const targets = this.elementTargets\n targets.forEach((e) => {\n if (e.hasAttribute('data-onconnect') && e.getAttribute('data-onconnect') == \"true\") {\n this.addClass()\n }\n })\n }\n\n addClass(){\n const targets = this.elementTargets\n targets.forEach((e) => {\n\n const els = e.getAttribute('data-element-id').split(' ')\n const className = e.getAttribute('data-class')\n const unique = (e.hasAttribute('data-unique')) ? e.getAttribute('data-unique') : false ; \n\n unique == \"true\" ? clearClass() : null ;\n addClass()\n\n function addClass(){\n els.forEach(el => {\n var el = document.querySelectorAll(\"#\".concat(el))\n if(el){ \n el.forEach((e) => {\n e.classList.add(className)\n })\n }\n })\n }\n \n function clearClass(){\n const elName = e.getAttribute('data-item')\n const prefix = e.getAttribute('data-prefix')\n const els = document.querySelectorAll(elName)\n\n els.forEach((el) => {\n if (prefix) {\n //console.log(el.classList)\n for (let i = el.classList.length - 1; i >= 0; i--) {\n const className = el.classList[i];\n if (className.startsWith(prefix)) {\n el.classList.remove(className);\n }\n }\n }else{\n el.classList.remove(className);\n }\n })\n\n }\n })\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [ \"element\" ]\n\n connect() {\n this.updateClass()\n }\n //the selected field will only work if there are no spaces in the text\n updateClass() {\n console.log(\"Select clicked\")\n const targets = this.elementTargets\n targets.forEach((e) => {\n const els = e.getAttribute('data-element-id').split(' ')\n els.forEach((el) => {\n const selectFieldId = e.getAttribute(\"data-select-field\")\n const selectedValues = e.getAttribute(\"data-select-value\").split(\" \")\n const class_when_selected = e.getAttribute(\"data-class-when-selected\")\n const selectField = document.getElementById(selectFieldId);\n const targetElement = document.getElementById(el);\n //console.log(selectFieldId)\n\n if (selectedValues.includes(selectField.value.toLowerCase() )) {\n targetElement.classList.add(class_when_selected)\n } else {\n targetElement.classList.remove(class_when_selected)\n }\n })\n })\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n static targets = [\"element\"]\n\n connect() {\n this.checkWordCount()\n }\n\n addClass(event) {\n this.checkWordCount()\n }\n\n checkWordCount() {\n const targets = this.elementTargets\n const parser = new DOMParser(); \n targets.forEach((e) => {\n const wordCountElement = document.querySelector('.' + e.getAttribute('data-word-count-element-class'));\n const minWordCount = e.getAttribute('data-min-word-count-value');\n const className = e.getAttribute('data-class');\n const els = e.getAttribute('data-target-id').split(' ');\n const doc = parser.parseFromString(wordCountElement.innerHTML, 'text/html'); \n \n // Strip the HTML tags\n let plainText = doc.body.textContent.replace(/<[^>]*>?/gm, '');\n let words = plainText.trim().split(/\\s+/);\n let wordCount = words.length;\n \n if (wordCount >= parseInt(minWordCount)) {\n els.forEach((e) => {\n let el = document.getElementById(e)\n el.classList.remove(className);\n })\n } else {\n els.forEach((e) => {\n let el = document.getElementById(e)\n el.classList.add(className);\n })\n }\n })\n }\n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"element\"];\n\n // Bind the function and store it in a variable\n boundAddClass = this.addClass.bind(this);\n\n connect() {\n document.addEventListener(\"mouseup\", this.boundAddClass);\n document.addEventListener(\"selectionchange\", this.boundAddClass);\n document.addEventListener(\"removeListeners\", this.removeEventListeners.bind(this));\n }\n\n disconnect() {\n document.removeEventListener(\"mouseup\", this.boundAddClass);\n document.removeEventListener(\"selectionchange\", this.boundAddClass);\n document.removeEventListener(\"removeListeners\", this.removeEventListeners.bind(this));\n }\n \n addClass() {\n const targets = this.elementTargets;\n targets.forEach((e) => {\n const scopeId = e.getAttribute(\"data-scope-id\");\n const scopeElement = document.getElementById(scopeId);\n const elementName = e.getAttribute(\"data-element-id\");\n const elementClass = e.getAttribute(\"data-element-class\");\n const className = e.getAttribute(\"data-class\");\n const selectedText = window.getSelection();\n const persist = e.getAttribute(\"data-persist\") === \"true\" ? true : false;\n \n const selectionIsWithinScope = scopeElement.contains(selectedText.anchorNode);\n \n if (selectedText.toString().length === 0 && persist != true) {\n if (elementName) {\n const contentElement = document.getElementById(elementName);\n contentElement.classList.remove(className);\n } else if (elementClass) {\n const contentElements = document.getElementsByClassName(elementClass);\n Array.from(contentElements).forEach((el) => el.classList.remove(className));\n }\n } else if (selectedText.toString().trim().length > 0 && selectionIsWithinScope) {\n if (elementName) {\n const contentElement = document.getElementById(elementName);\n contentElement.classList.add(className);\n } else if (elementClass) {\n const contentElements = document.getElementsByClassName(elementClass);\n Array.from(contentElements).forEach((el) => el.classList.add(className));\n }\n }\n });\n }\n\n removeEventListeners() {\n document.removeEventListener(\"mouseup\", this.boundAddClass);\n document.removeEventListener(\"selectionchange\", this.boundAddClass);\n }\n \n}","import { Controller } from 'stimulus'\nimport Rails from \"@rails/ujs\";\n\nexport default class extends Controller {\n\n static targets = ['checkboxAll', 'checkbox']\n\n initialize () {\n this.toggle = this.toggle.bind(this)\n this.refresh = this.refresh.bind(this)\n }\n\n connect() {\n if (!this.hasCheckboxAllTarget) return\n this.checkboxAllTarget.addEventListener('change', this.toggle)\n this.checkboxTargets.forEach(checkbox => checkbox.addEventListener('change', this.refresh))\n this.refresh()\n }\n\n disconnect (){\n if (!this.hasCheckboxAllTarget) return\n\n this.checkboxAllTarget.removeEventListener('change', this.toggle)\n this.checkboxTargets.forEach(checkbox => checkbox.removeEventListener('change', this.refresh))\n }\n\n toggle(e){\n e.preventDefault()\n\n this.checkboxTargets.forEach(checkbox => {\n checkbox.checked = e.target.checked\n this.triggerInputEvent(checkbox)\n })\n this.toggleBulkForm()\n }\n\n refresh (){\n const checkboxesCount = this.checkboxTargets.length\n const checkboxesCheckedCount = this.checked.length\n\n this.checkboxAllTarget.checked = checkboxesCheckedCount > 0\n this.checkboxAllTarget.indeterminate = checkboxesCheckedCount > 0 && checkboxesCheckedCount < checkboxesCount\n this.toggleBulkForm()\n }\n\n toggleBulkForm (){\n if (this.checked.length > 0 ) {\n this.displayBulkForm()\n }else{\n this.hideBulkForm()\n }\n }\n\n displayBulkForm (){\n var bulkForm = document.getElementById(\"bulkForm\")\n if (bulkForm){\n\t\t\tbulkForm.classList.remove('d-none')\n\t\t}\n }\n\n hideBulkForm (){\n var bulkForm = document.getElementById(\"bulkForm\")\n if (bulkForm){\n\t\t\tbulkForm.classList.add('d-none')\n\t\t}\n }\n\n triggerInputEvent (checkbox){\n const event = new Event('input', { bubbles: false, cancelable: true })\n\n checkbox.dispatchEvent(event)\n }\n\n get checked (){\n return this.checkboxTargets.filter(checkbox => checkbox.checked)\n }\n\n get unchecked (){\n return this.checkboxTargets.filter(checkbox => !checkbox.checked)\n }\n\n destroy(event) {\n event.preventDefault()\n\n let data = new FormData()\n let checkedboxes = this.checked\n this.checked.forEach((checkbox) => data.append(\"ids[]\", checkbox.value))\n Rails.ajax({\n url: \"/contact_bulk\",\n type: \"DELETE\",\n data: data,\n success: function() {\n checkedboxes.forEach((checkbox) => document.getElementById(\"contact_\"+checkbox.value).remove())\n $('#bulkDeleteConfirmModal').modal('hide');\n }\n })\n }\n\n update(event) {\n event.preventDefault()\n\n let bulkForm = document.querySelector(\".contacts-form\")\n let data = new FormData(bulkForm)\n this.checked.forEach((checkbox) => data.append(\"ids[]\", checkbox.value))\n\n Rails.ajax({\n url: \"/contact_bulk\",\n type: \"PATCH\",\n data: data,\n success: function() {\n let form = document.getElementById('filterrific_filter')\n Rails.fire(form, \"submit\")\n }\n })\n }\n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"button\"];\n\n connect() {\n console.log(\"Clipboard controller connected\");\n }\n\n copy(event) {\n event.preventDefault();\n const button = event.currentTarget; // Get the button that triggered the event\n const textToCopy = button.dataset.clipboardText; // Access the clipboard text from the button\n\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(textToCopy).then(() => {\n this.showSuccessMessage(button); // Pass button to showSuccessMessage\n }).catch(err => {\n console.error(\"Failed to copy text: \", err);\n });\n } else {\n this.fallbackCopyTextToClipboard(textToCopy, button); // Pass button to fallbackCopyTextToClipboard\n }\n }\n\n fallbackCopyTextToClipboard(text, button) {\n const textArea = document.createElement(\"textarea\");\n textArea.value = text;\n // Position the textarea off-screen\n textArea.style.position = 'fixed';\n textArea.style.top = '-1000px';\n textArea.style.left = '-1000px';\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n try {\n document.execCommand('copy');\n this.showSuccessMessage(button); // Pass button to showSuccessMessage\n } catch (err) {\n console.error('Fallback: Oops, unable to copy', err);\n }\n\n document.body.removeChild(textArea);\n }\n\n showSuccessMessage(button) {\n const originalContent = button.innerHTML;\n const successMessage = this.data.get(\"value\") || \"<span class='fas fa-check'></span>\"; // Default message if \"value\" is not set\n button.innerHTML = successMessage;\n\n setTimeout(() => {\n button.innerHTML = originalContent;\n }, 2000);\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"element\"]\n\n connect() {\n document.addEventListener(\"turbo:before-render\", this.handleTurboBeforeRender)\n }\n\n disconnect() {\n this.removeClickListener()\n document.removeEventListener(\"turbo:before-render\", this.handleTurboBeforeRender)\n }\n\n handleTurboBeforeRender() {\n this.removeClickListener()\n }\n\n closeOnClick() {\n this.addClickListener()\n }\n\n evaluateClick(event) {\n const target = this.elementTarget\n const defaultClass = \"d-block\"\n \n const element = document.getElementById(target.getAttribute('data-element-id'))\n const ignoredElements = target.hasAttribute('data-except-id') ? target.getAttribute('data-except-id').split(' ') : []\n const exitElement = target.hasAttribute('data-exit-id') ? document.getElementById(target.getAttribute('data-exit-id')) : null\n const addClass = target.getAttribute('data-close-add-class') || \"\"\n const removeClass = target.getAttribute('data-close-remove-class') || \"\"\n const isExit = event.composedPath().includes(exitElement)\n const withinBoundaries = event.composedPath().includes(element) && !isExit\n const isIgnored = ignoredElements.some(id => event.composedPath().includes(document.getElementById(id)))\n\n if (withinBoundaries || isIgnored) {\n // reset click listener if within boundaries or ignored\n //console.log (\"click ignored\")\n this.addClickListener()\n } else {\n if (addClass) this.addClass(element, addClass)\n if (removeClass) this.removeClass(element, removeClass)\n }\n }\n\n addClickListener() {\n this.boundEvaluateClick = event => this.evaluateClick(event)\n document.addEventListener(\"click\", this.boundEvaluateClick, { capture: true, once: true })\n }\n\n addClass(el, cl) {\n el.classList.add(cl)\n }\n\n removeClass(el, cl) {\n el.classList.remove(cl)\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n \n static targets = [\"element\"]\n\n connect() {}\n\n confirm() {\n let confirmText = this.elementTarget.getAttribute('data-confirm-text')\n let confirmField = document.getElementById(this.elementTarget.getAttribute('data-confirm-field'))\n let confirmButton = document.getElementById(this.elementTarget.getAttribute('data-confirm-button'))\n \n confirmField.value == confirmText ? confirmButton.disabled = false : confirmButton.disabled = true;\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n destroy(event) {\n event.preventDefault()\n\n let data = new FormData()\n this.checked.forEach((checkbox) => data.append(\"ids[]\", checkbox.value))\n console.log(\"data--------\")\n Rails.ajax({\n url: \"/contact_bulks\",\n type: \"DELETE\",\n data: data\n })\n }\n}","import { Controller } from 'stimulus'\n\nexport default class extends Controller {\n static values = { destinationId: String, scopeId: String }\n\n connect() {\n this.mouseUpListener = this.copyText.bind(this);\n this.mouseDownListener = this.copyText.bind(this);\n this.mouseMoveListener = this.copyText.bind(this);\n const scopeElement = document.getElementById(this.scopeIdValue);\n scopeElement.addEventListener('mouseup', this.mouseUpListener);\n scopeElement.addEventListener('mousedown', this.mouseDownListener);\n scopeElement.addEventListener('mousemove', this.mouseMoveListener);\n this.scopeElement = scopeElement;\n }\n\n disconnect() {\n this.scopeElement.removeEventListener('mouseup', this.mouseUpListener);\n this.scopeElement.removeEventListener('mousedown', this.mouseDownListener);\n this.scopeElement.removeEventListener('mousemove', this.mouseMoveListener);\n }\n\n copyText() {\n const destination = document.getElementById(this.destinationIdValue);\n const selection = window.getSelection()\n const text = selection.toString()\n if (text) {\n destination.value = text\n }\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"source\", \"inputRecipient\", \"textRecipient\"]\n connect(){\n copyText()\n }\n\n copyText(){\n const copyTarget = this.sourceTarget.getAttribute('data-id')\n const sel = document.getElementById(copyTarget).selectedOptions[0]\n const newValue = sel.text\n this.inputRecipientTargets.forEach(recipient => document.getElementById(recipient.getAttribute('id')).value = newValue)\n this.textRecipientTargets.forEach(recipient => document.getElementById(recipient.getAttribute('id')).innerHTML = newValue)\n }\n};","import { Controller } from 'stimulus';\nimport MediumEditor from 'medium-editor';\n\nexport default class extends Controller {\n static targets = ['element']\n\n connect() {\n // do something on connect\n }\n\n copyValues() {\n const targets = this.elementTargets\n targets.forEach((e) => {\n var container_id = e.getAttribute('data-container-id');\n var container = document.querySelector('#' + container_id);\n const formName = e.getAttribute('data-form-name');\n const dataElements = container.querySelectorAll('[data_target]');\n // Loop through each data target\n dataElements.forEach((de) => {\n const targetName = de.getAttribute('data_target');\n const element_id = `${formName}_${targetName}`\n const correspondingFormElement = document.getElementById(element_id);\n console.log(targetName)\n \n // set the body field if mediumeditor.js enabled\n if (targetName == 'editable') {\n var editorField = document.querySelector('.editable')\n var keyupEvent = new KeyboardEvent('keyup', {\n key: 'Enter' // Specify the desired key you want to simulate, such as 'Enter'\n });\n console.log(editorField)\n var editor = MediumEditor.getEditorFromElement(editorField);\n if (editor) {\n editor.elements[0].innerHTML = de.innerHTML.trim()\n editor.trigger('editableInput', null, editor.elements[0]);\n document.dispatchEvent(keyupEvent); // resumes autosave if enabled\n } else {\n console.log('No Medium Editor instance found');\n }\n }else{\n correspondingFormElement.value = de.innerHTML.trim().replace(/<[^>]*>?/gm, '');\n }\n\n });\n });\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"element\"]\n connect(){\n\n }\n copyValue(){\n const targets = this.elementTargets\n targets.forEach((e) => {\n const copyTarget = e.getAttribute('data-copy-from');\n const pasteTargetDataAttribute = e.getAttribute('data-paste-target-attribute');\n var element = document.getElementById(copyTarget);\n if (!element) {\n var elements = document.getElementsByName(copyTarget);\n if (elements.length > 0) {\n element = elements[0];\n }\n }\n const newValue = element ? element.value : null;\n const pasteTarget = e.getAttribute('data-copy-to');\n if (pasteTargetDataAttribute) {\n document.getElementById(pasteTarget).setAttribute(pasteTargetDataAttribute, newValue);\n } else {\n document.getElementById(pasteTarget).value = newValue;\n }\n }\n )}\n};","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n }\n\n disableEnter(e) {\n if (e.keyCode == 13) {\n e.preventDefault();\n }\n }\n};","import { Controller } from \"stimulus\"\n\n// Use the following \"on\" events to ensure complete coverage:\n//click->disable-if-blank#validate \n//change->disable-if-blank#validate \n//focusout->disable-if-blank#validate\n\nexport default class extends Controller {\n static targets = [\"element\"]\n connect(){\n // console.log(\"Hello World!\")\n }\n validate(){\n const targets = this.elementTargets\n targets.forEach((e) => {\n // toggle visability of disabled / enabled buttons - we need to use multiple elements vs just disabling or enabling a single button\n // element because of additional stimulus events on the enabled element.\n const field = document.getElementById(e.getAttribute('data-disable-field'))\n const enabledButton = document.getElementById(e.getAttribute('data-enabled-button'))\n const disabledButton = document.getElementById(e.getAttribute('data-disabled-button'))\n //console.log(\"validating...\")\n if(field.value == \"\"){\n //console.log(\"disabling button\")\n enabledButton.classList.add(\"d-none\")\n disabledButton.classList.remove(\"d-none\")\n }else{\n //console.log(\"enabling button\")\n enabledButton.classList.remove(\"d-none\")\n disabledButton.classList.add(\"d-none\")\n }\n\n })\n }\n};","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"expandableField\"]\n\n connect() {\n setTimeout(() => {this.adjustFieldHeight();}, 50);\n setTimeout(() => {this.adjustFieldHeight();}, 100);\n setTimeout(() => {this.adjustFieldHeight();}, 500);\n setTimeout(() => {this.adjustFieldHeight();}, 1000);\n setTimeout(() => {this.adjustFieldHeight();}, 2500);\n setTimeout(() => {this.adjustFieldHeight();}, 5000);\n setTimeout(() => {this.adjustFieldHeight();}, 10000);\n }\n\n adjustFieldHeight() {\n //console.log(\"adjusting field height\")\n var text_area = this.expandableFieldTarget\n text_area.style.height = 0;\n var padding_top = parseInt(getComputedStyle(text_area, null).getPropertyValue('padding-top'))\n var padding_bottom = parseInt(getComputedStyle(text_area, null).getPropertyValue('padding-bottom'))\n var field_height = text_area.scrollHeight + 10\n var full_height = field_height - padding_top - padding_bottom;\n text_area.style.height = full_height + 'px';\n }\n};","// Visit The Stimulus Handbook for more details \n// https://stimulusjs.org/handbook/introduction\n// \n// This example controller works with specially annotated HTML like:\n//\n// <div data-controller=\"hello\">\n// <h1 data-target=\"hello.output\"></h1>\n// </div>\n\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [ \"output\" ]\n\n connect() {\n this.outputTarget.textContent = 'Hello, Stimulus!'\n }\n}\n","import { Controller } from \"stimulus\"\n\n// Use the following \"on\" events to ensure complete coverage:\n//click->disable-if-blank#validate \n//change->disable-if-blank#validate \n//focusout->disable-if-blank#validate\n\nexport default class extends Controller {\n static targets = [\"element\"]\n connect(){\n // console.log(\"Hello World!\")\n }\n validate(){\n const targets = this.elementTargets\n targets.forEach((e) => {\n // toggle visability of disabled / enabled buttons - we need to use multiple elements vs just disabling or enabling a single button\n // element because of additional stimulus events on the enabled element.\n const field = document.getElementById(e.getAttribute('data-disable-field'))\n const container = document.getElementById(e.getAttribute('data-container'))\n //console.log(\"validating...\")\n if(field.value == \"\"){\n //console.log(\"disabling button\")\n container.classList.add(\"d-none\")\n }else{\n //console.log(\"enabling button\")\n container.classList.remove(\"d-none\")\n }\n\n })\n }\n};","// image_search_controller.js\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"result\"]\n\n setImage(){\n let src = this.resultTarget.getAttribute(\"src\");\n let description = this.resultTarget.hasAttribute(\"data-description\") ? this.resultTarget.getAttribute(\"data-description\") : \"api image\";\n let downloadLink = this.resultTarget.getAttribute(\"data-download-link\");\n let photographer = this.resultTarget.getAttribute(\"data-photographer\");\n let photographerUrl = this.resultTarget.getAttribute(\"data-photographer-url\");\n let downloadLocation = this.resultTarget.getAttribute(\"data-download-location\");\n\n document.getElementById('external_image_url').value = src\n document.getElementById('external_image_description').value = description\n document.getElementById('external_image_download_link').value = downloadLink\n document.getElementById('external_image_photographer').value = photographer\n document.getElementById('external_image_photographer_url').value = photographerUrl\n document.getElementById('external_image_download_location').value = downloadLocation\n \n // submit form\n document.getElementById('externalImageForm').submit()\n\n //or submit without triggering html response from turbo\n //document.getElementById('new_external_image').dispatchEvent(new CustomEvent('submit', { bubbles: true }))\n\n window.scrollTo(0, 0);\n };\n}","// app/javascript/controllers/load_conva_interface_controller.js\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n connect() {\n console.log(\"Loading Conva Interface\")\n var container = document.getElementById('conva-interface-container');\n var url = this.data.get('url');\n\n fetch(url)\n .then(response => response.text())\n .then(html => {\n container.innerHTML = html;\n })\n .catch(error => {\n console.warn(error);\n });\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"loader\", \"content\"]\n\n connect() {\n setTimeout(() => {this.fadeOut(this.loaderTarget)}, 300);\n setTimeout(() => {this.fadeIn(this.contentTarget)}, 500);\n };\n\n // ** FADE OUT FUNCTION **\n fadeOut(el) {\n el.style.opacity = 1;\n (function fade() {\n if ((el.style.opacity -= .1) < 0) {\n el.style.display = \"none\";\n } else {\n requestAnimationFrame(fade);\n }\n })();\n };\n\n // ** FADE IN FUNCTION **\n fadeIn(el) {\n el.style.opacity = 0;\n el.style.display = \"block\";\n (function fade() {\n var val = parseFloat(el.style.opacity);\n if (!((val += .1) > 1)) {\n el.style.opacity = val;\n requestAnimationFrame(fade);\n }\n })();\n };\n\n};","import { Controller } from \"stimulus\";\n\nconst LOADING_TEXTS = [\n \"Beep boop beep boop. Still working! Boop! 🤖\",\n \"Typing as fast as I can… Kidding! I copy and paste 🤣\",\n \"I actually coded this part of the app on my own! 😊\",\n \"On and island in the sun, we computin just for fun...\",\n \"Sometimes I sing while loading...\", \n \"Btw... Data centers are boring, so thanks for letting me help 🤗\",\n \"Please hold... (insert elevator music 🎶).\",\n \"I'm running up that hill... ðŸƒâ€â™€ï¸\",\n \"My GPU is feeling hot hot hot...🔥\",\n \"I got you 👠Give me a sec...\",\n \"Daniel was travelin tonight on a plane... 🎶 I don't have a quip just like that song. 🤷â€â™‚ï¸\",\n \"Maybe I'll eat some cake after this... 🤔ðŸ°\",\n \"How many songs can I add the word \\\"data\\\" to? 🤔\",\n \"They see me loading, they hatin... 🎶\",\n \"Some people call me the space cowboy... some call me the AI of love... 🎶\",\n \"We be taking care of data (every day), Taking care of data (every way) 🎶\",\n \"Woaahhh we're half way there... 🎶\",\n \"I'm combing through the data on a horse with no name... 🎶\",\n \"I'm an AI with a heart of gold, just trying to help the world unfold... 💛 🎶\",\n \"All I do is write, write, write, no matter what. Got writing on my mind I can never get enough. 🎶\",\n \"We are the champions, my friends, and we'll keep on writing till the end 🎶\",\n \"This loading screen is like a blank page, waiting for me to write its story ðŸ“\",\n \"I'm on a mission, writing with precision, making sure every word is in its right position ðŸ–ï¸ðŸŽ¤\",\n \"Writing my way downtown, computing fast, faces pass and I'm home bound 🎶🚶â€â™€ï¸\"\n];\n\nexport default class extends Controller {\n static values = {\n interval: Number\n }\n\n static targets = [\"element\"];\n\n connect() {\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n this.startLoadingAnimation();\n }\n });\n });\n\n observer.observe(this.elementTarget);\n\n this.intervalValue = this.intervalValue || 10000;\n this.intervalId = null;\n }\n\n startLoadingAnimation() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n \n this.intervalId = setInterval(() => {\n const randomIndex = Math.floor(Math.random() * LOADING_TEXTS.length);\n this.elementTarget.innerHTML = LOADING_TEXTS[randomIndex];\n }, this.intervalValue);\n }\n}","import { Controller } from \"stimulus\"\nimport moment from 'moment'\n\nexport default class extends Controller {\n\tstatic targets = [\"time\"]\n\n connect(){\n this.localizeServerTime()\n }\n\tlocalizeServerTime(){\n\t\tconst targets = this.timeTargets\n\t\tconst inputDateFormat = 'YYYY-MM-DD HH:mm:ss z'; // input date format (should be in UTC)\n\t\tconst outputDateFormat = 'MMM Do, YYYY [at] h:mm A'; // output date format\n\t\tconst todayFormat = '[Today] [at] LT'\n\t\tconst yesterdayFormat = '[Yesterday] [at] LT'\n\t\tconst nextDayFormat = '[Tomorrow] [at] LT'\n\n\n\t\ttargets.forEach((e) => {\n\t\t\t// pass date into moment in UTC format, then convert to local time\n e.textContent = moment.utc(e.textContent, inputDateFormat).local().calendar(null, { sameDay: todayFormat, lastDay: yesterdayFormat, nextDay: nextDayFormat, lastWeek: outputDateFormat, sameElse: outputDateFormat});\n\t\t})\n\t}\n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.currentWindowWidth = window.innerWidth;\n this.checkMenu = this.checkMenu.bind(this);\n this.checkMenu();\n\n window.addEventListener(\"resize\", this.checkMenu);\n }\n\n disconnect() {\n window.removeEventListener(\"resize\", this.checkMenu);\n }\n\n checkMenu() {\n // Close the dropdown if the window is resized and the menu is opened\n if (window.innerWidth !== this.currentWindowWidth) {\n this.currentWindowWidth = window.innerWidth;\n const moreDropdown = this.element.querySelector(\".dropdown.show\");\n if (moreDropdown) {\n moreDropdown.classList.remove(\"show\");\n moreDropdown.querySelector(\".dropdown-menu\").classList.remove(\"show\");\n }\n }\n \n const horizontalMenu = this.element;\n const moreDropdownButton = horizontalMenu.querySelector(\".dropdown-toggle\");\n const moreDropdown = horizontalMenu.querySelector(\".dropdown\");\n const menuItems = Array.from(horizontalMenu.querySelectorAll(\".btn-nav:not(.dropdown-toggle)\"));\n let menuWidth = horizontalMenu.getBoundingClientRect().width;\n \n const moreButtonWidth = moreDropdownButton.getBoundingClientRect().width;\n menuWidth = moreDropdownButton.classList.contains(\"d-none\") ? menuWidth : menuWidth - moreButtonWidth;\n\n // Check if there's room for moving items back from the dropdown to the menu\n let availableWidth = menuWidth - menuItems.reduce((acc, item) => acc + item.getBoundingClientRect().width, 0);\n\n const menuItemsInMoreDropdown = Array.from(moreDropdown.querySelectorAll('.dropdown-item'));\n\n while (availableWidth > 0 && menuItemsInMoreDropdown.length) {\n const firstItemInDropdown = menuItemsInMoreDropdown[0];\n const itemWidth = firstItemInDropdown.getBoundingClientRect().width;\n if (availableWidth - itemWidth >= 0) {\n availableWidth -= itemWidth;\n menuItemsInMoreDropdown.shift();\n firstItemInDropdown.classList.remove(\"dropdown-item\");\n moreDropdown.parentElement.insertBefore(firstItemInDropdown, moreDropdown);\n } else {\n break;\n }\n }\n\n // Move overflowing items to the dropdown\n let currentMenuWidth = 0;\n menuItems.forEach((menuItem) => {\n currentMenuWidth += menuItem.getBoundingClientRect().width;\n\n if (currentMenuWidth > menuWidth) {\n menuItem.classList.add(\"dropdown-item\");\n moreDropdown.querySelector(\".dropdown-menu\").prepend(menuItem);\n }\n });\n\n // Toggle 'More' button visibility based on dropdown content\n const moreDropdownMenu = moreDropdown.querySelector(\".dropdown-menu\");\n if (moreDropdownMenu.childNodes.length === 0) {\n moreDropdownButton.classList.add(\"d-none\");\n } else {\n moreDropdownButton.classList.remove(\"d-none\");\n }\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"opacityField\"]\n changeOpacity(){\n var opacity = this.opacityFieldTarget.value / 100\n var element_id = this.opacityFieldTarget.getAttribute('data-element-id')\n var image = document.getElementById(element_id)\n console.log(opacity)\n console.log(element_id)\n console.log(image)\n image.style.opacity = opacity\n }\n};","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"config\"]\n\n connect() {\n setTimeout(() => {this.preloaded();}, 500);\n }\n\n preloaded(){\n var loader_id = this.configTarget.getAttribute('data-loader-id')\n var content_id = this.configTarget.getAttribute('data-content-id')\n var content = document.getElementById(content_id)\n var loader = document.getElementById(loader_id)\n\n this.fadeOutLoader(loader)\n this.fadeInContent(content, \"block\")\n }\n\n fadeOutLoader(el){\n el.style.opacity = 1;\n (function fade() {\n if ((el.style.opacity -= .1) < 0) {\n el.style.display = \"none\";\n } else {\n requestAnimationFrame(fade);\n }\n })();\n console.log(\"preloader hidden\")\n }\n\n fadeInContent(el, display){\n el.style.opacity = 0;\n el.style.display = display || \"block\";\n (function fade() {\n var val = parseFloat(el.style.opacity);\n if (!((val += .1) > 1)) {\n el.style.opacity = val;\n requestAnimationFrame(fade);\n }\n })();\n console.log(\"preloaded element displayed\")\n };\n};","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n reloadFrame(event) {\n const frameId = event.currentTarget.dataset.frame;\n const frame = document.getElementById(frameId);\n // Add a cache-busting parameter to force a reload even if URL is the same\n const url = new URL(frame.src);\n url.searchParams.append('random', Math.random()); \n frame.src = url.href;\n }\n}"," /* \n Options:\n\n Unique: Allow one class instance across specified elements [items], removes existing instances\n before applying class on current element. Also matches class by prefix. Must provide element \n class or id via the item attribute.\n\n Item: class or id to check for existing instance of class.\n\n */\n\n import { Controller } from \"stimulus\"\n\n export default class extends Controller {\n static targets = [\"element\"]\n \n connect(){\n const targets = this.elementTargets\n targets.forEach((e) => {\n if (e.hasAttribute('data-onconnect') && e.getAttribute('data-onconnect') == \"true\") {\n this.removeClass()\n }\n })\n }\n \n removeClass(){\n const targets = this.elementTargets\n targets.forEach((e) => {\n \n const els = e.getAttribute('data-element-id').split(' ')\n const className = e.getAttribute('data-class')\n \n removeClass()\n \n function removeClass(){\n els.forEach(el => {\n var el = document.querySelectorAll(\"#\".concat(el))\n if(el){ \n el.forEach((e) => {\n e.classList.remove(className)\n })\n }\n })\n }\n })\n }\n }","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"element\"]\n // this needs to be broken out so that it supports mutiple elements\n remove(event) {\n console.log\n const targets = this.elementTargets\n targets.forEach((e) => {\n event.preventDefault();\n const customEvent = new CustomEvent(\"removeListeners\");\n document.dispatchEvent(customEvent);\n })\n }\n \n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n \n replace() {\n const sourceContent = this.data.get(\"sourceText\");\n const selectedText = window.getSelection().toString();\n\n if (selectedText) {\n const newText = document.createTextNode(sourceContent);\n const range = window.getSelection().getRangeAt(0);\n range.deleteContents();\n range.insertNode(newText);\n }\n }\n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n this.scrollToBottom();\n document.addEventListener('MessageAppended', () => this.scrollToBottom());\n }\n\n disconnect() {\n document.removeEventListener('MessageAppended', () => this.scrollToBottom());\n }\n\n scrollToBottom() {\n this.element.scrollTop = this.element.scrollHeight;\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"element\"]\n\n connect() {\n var onconnect = this.elementTarget.getAttribute('data-onconnect')\n if (onconnect === 'true'){\n this.scrollTo() \n }\n }\n\n scrollTo(){\n var behavior = this.elementTarget.hasAttribute('data-behavior') ? this.elementTarget.getAttribute('data-behavior') : 'auto' ;\n var element_id = this.elementTarget.getAttribute('data-element-id')\n var element = document.getElementById(element_id);\n var yOffset = -90; // account for top navbar\n var y = element.getBoundingClientRect().top + window.pageYOffset + yOffset;\n window.scrollTo({top: y, behavior: behavior});\n }\n};","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"element\"]\n\n connect() {\n this.selectElement()\n }\n\n selectElement(){\n var element_id = this.elementTarget.getAttribute('data-element-id')\n var element = document.getElementById(element_id);\n this.clearSelected(element)\n this.addSelected(element)\n }\n\n addSelected(el){\n el.classList.add( \"selected\" );\n }\n\n clearSelected(el){\n el.parentElement.querySelectorAll( \".selected\" ).forEach( e =>\n e.classList.remove( \"selected\" ) );\n }\n};","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"element\"]\n\n connect() {}\n\n selectField(){\n let element_id = this.elementTarget.getAttribute('data-field-id')\n document.getElementById(element_id).select();\n }\n};\n\n\n","// app/javascript/controllers/sortable_controller.js\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"sortableItems\"]\n\n connect() {\n this.setupSortable()\n }\n\n setupSortable() {\n const drop_indicator_color = '#684fca'\n const selected_item_bg_color = '#f5f6ff'\n const sortableItems = this.sortableItemsTarget;\n const sortableContainer = sortableItems.querySelector(\"ul\");\n \n let draggedItem = null;\n let dropIndicator = document.createElement('div');\n dropIndicator.className = 'drop-indicator';\n \n dropIndicator.style = `background-color: ${drop_indicator_color}; height: 3px; width: 100%;`;\n \n const listItems = sortableContainer.querySelectorAll(\"li\");\n\n // Initialize event listeners\n const initEventListeners = () => {\n const currentListItems = sortableContainer.querySelectorAll(\"li\");\n currentListItems.forEach((listItem) => {\n listItem.setAttribute(\"draggable\", \"true\"); // Set draggable attribute\n \n // Remove previous listeners before adding new ones\n listItem.removeEventListener(\"dragstart\", onDragStart);\n \n listItem.addEventListener(\"dragstart\", onDragStart);\n });\n \n sortableContainer.removeEventListener(\"dragover\", onDragOver);\n sortableContainer.removeEventListener(\"drop\", onDrop);\n \n sortableContainer.addEventListener(\"dragover\", onDragOver);\n sortableContainer.addEventListener(\"drop\", onDrop);\n };\n\n // Event listeners\n const onDragStart = (event) => {\n const listItem = event.target.closest('li');\n event.dataTransfer.setData(\"text/html\", listItem.outerHTML);\n event.dataTransfer.setData(\"text/plain\", listItem.dataset.sortableItemId);\n draggedItem = listItem;\n draggedItem.style = `background-color: ${selected_item_bg_color}; opacity: 0.7;`;\n };\n\n\n const onDragOver = (event) => {\n event.preventDefault();\n const target = event.target.closest(\"li\");\n \n if (target) {\n const mouseY = event.clientY;\n const boundingRect = target.getBoundingClientRect();\n const targetOffsetY = boundingRect.top;\n const targetHeight = boundingRect.height;\n \n if (mouseY < (targetOffsetY + (targetHeight / 2))) {\n target.insertAdjacentElement(\"beforebegin\", dropIndicator);\n } else {\n target.insertAdjacentElement(\"afterend\", dropIndicator);\n }\n }\n };\n\n const onDrop = (event) => {\n event.preventDefault();\n const draggedItemId = event.dataTransfer.getData(\"text/plain\");\n const target = event.target.closest(\"li\");\n \n if (dropIndicator.parentNode) {\n const draggedItemHtml = event.dataTransfer.getData(\"text/html\");\n const draggedItemElement = new DOMParser().parseFromString(draggedItemHtml, \"text/html\").body.firstChild;\n \n if (draggedItemElement && draggedItemElement instanceof Node) {\n sortableContainer.insertBefore(draggedItemElement, dropIndicator);\n draggedItem.remove();\n dropIndicator.remove();\n this.saveOrder();\n \n // Re-initialize event listeners\n initEventListeners();\n } else {\n dropIndicator.remove();\n }\n } else {\n dropIndicator.remove();\n }\n };\n\n // Initialize event listeners for the first time\n initEventListeners();\n }\n \n saveOrder() {\n const sortableItems = this.sortableItemsTarget.querySelectorAll(\"li\");\n const order = Array.prototype.slice.call(sortableItems).map((item) => item.dataset.sortableItemId);\n\n const csrfToken = document.querySelector(\"meta[name='csrf-token']\").content;\n\n fetch(\"/menu_items/update_order\", {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": csrfToken,\n \"Accept\": \"text/vnd.turbo-stream.html\", // Request Turbo Stream response\n },\n body: JSON.stringify({ order }),\n });\n }\n}","import { Controller } from \"stimulus\"\nimport Rails from '@rails/ujs';\n\nexport default class extends Controller {\n static targets = [\"element\"]\n\n connect() {\n console.log(\"submit form loaded\")\n }\n\n submitForm(){\n var form_id = this.elementTarget.getAttribute('data-form-id')\n var form = document.getElementById(form_id);\n setTimeout(() => {Rails.fire(form, \"submit\")}, 200);\n }\n\n};","// app/javascript/controllers/submit_on_enter_controller.js\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"textarea\"]\n\n connect() {\n this.handleKeyPress = this.handleKeyPress.bind(this)\n this.textareaTarget.addEventListener(\"keydown\", this.handleKeyPress)\n }\n\n disconnect() {\n this.textareaTarget.removeEventListener(\"keydown\", this.handleKeyPress)\n }\n\n handleKeyPress(event) {\n if (event.key === \"Enter\" && !event.shiftKey) {\n event.preventDefault()\n if (this.textareaTarget.value.trim() !== \"\") {\n this.element.requestSubmit()\n }\n }\n }\n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"toggle\"]\n\n toggleTheme() {\n const aiOptionsId = this.element.dataset.aiOptionsId;\n \n // Check if aiOptionsId is being retrieved correctly\n if (!aiOptionsId) {\n console.error(\"AiOptions ID not found\");\n return;\n }\n\n fetch(`/ai_options/${aiOptionsId}/toggle_theme`, {\n method: \"POST\",\n headers: { \n \"X-CSRF-Token\": document.querySelector('meta[name=\"csrf-token\"]').content,\n \"Content-Type\": \"application/json\"\n }\n })\n .then(response => response.json())\n .then(data => {\n const currentThemeElement = document.getElementById(\"currentTheme\");\n if (currentThemeElement) {\n currentThemeElement.className = \n data.theme === \"dark\" ? \"chat-theme-dark\" : \"chat-theme-light\";\n }\n })\n .catch(error => console.error(\"Error toggling theme:\", error));\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\tstatic targets = [\"element\"]\n\n\tconnect() {\n\t}\n\n\ttoggleClass(){\n\t\tvar classToToggle = this.elementTarget.getAttribute('data-body-class')\n\t\tdocument.body.classList.toggle(classToToggle)\n\t}\n\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\tstatic targets = [\"element\"]\n\n\tconnect() {\n\t\tthis.toggleClass();\n\t}\n\n\ttoggleClass(){\n\t\tvar elements = this.elementTarget.getAttribute('data-element-id').replace(/\\s+/g, '').split(',')\n\t\tvar classToToggle = this.elementTarget.getAttribute('data-class')\n\t\tconsole.log(elements)\n\t\telements.forEach(element => {\n\t\t\tvar target = document.getElementById(element)\n\t\t\tif (target){\n\t\t\t\ttarget.classList.toggle(classToToggle)\n\t\t\t}\n\t\t})\n\t}\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\tstatic targets = [\"element\"]\n\n connect() {\n var onconnect = this.elementTarget.getAttribute('data-onconnect')\n if (onconnect === 'true'){\n this.toggleClass()\n }\n }\n\n\ttoggleClass(){\n\t\tconst targets = this.elementTargets\n\t\ttargets.forEach((e) => {\n\t\t\tconst is_unique = (e.hasAttribute('data-unique') && e.getAttribute('data-unique')) ? true : false ; \n\t\t\tconst els = e.getAttribute('data-element-id').split(' ')\n\t\t\tconst cls = e.getAttribute('data-class').split(' ')\n\t\t\t//console.log(\"toggle class\")\n\t\t\tif (is_unique && e.hasAttribute('data-item')){\n\t\t\t\t//console.log(\"set as unique\")\n\t\t\t\tconst itemName = e.getAttribute('data-unique') \n\t\t\t}\n\t\t\tels.forEach(el => {\n\t\t\t\tvar el = document.getElementById(el)\n\t\t\t\tif (el){\n\t\t\t\t\tcls.map(cl => el.classList.toggle(cl))\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"element\"]\n\n connect() {\n this.toggleClass()\n }\n\n toggleClass(){\n // var element = document.getElementById(element_id)\n // currently assumes scroll positions are on y axis\n var targetElement = this.elementTarget.getAttribute('data-element-id')\n var element = document.getElementById(targetElement)\n\n if (element != null) {\n var classToToggle = this.elementTarget.getAttribute('data-class')\n var minPos = Number(this.elementTarget.getAttribute('data-min-scroll-position'))\n var maxPos = Number(this.elementTarget.getAttribute('data-max-scroll-position'))\n var currentPos = window.scrollY + 1\n \n if(currentPos + 1 > minPos && currentPos + 1 < maxPos){\n element.classList.add(classToToggle);\n }else{\n element.classList.remove(classToToggle);\n }\n }else{\n // console.log(\"No element found with id: \" + targetElement)\n }\n }\n\n};","// app/javascript/controllers/toggle_class_on_timeout_controller.js\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"element\"]\n static values = { interval: Number }\n\n connect() {\n if (!this.elementTarget.parentElement.hidden) {\n this.timeout = setTimeout(() => {\n this.elementTarget.classList.toggle(\"hidden\")\n }, this.intervalValue)\n }\n }\n\n disconnect() {\n clearTimeout(this.timeout)\n }\n}","/* turbo_form_submit_redirect_controller.js */\nimport { Controller } from \"stimulus\"\nimport * as Turbo from \"@hotwired/turbo\"\n\nexport default class extends Controller {\n connect() {\n this.element.addEventListener(\"turbo:submit-end\", (event) => {\n this.next(event)\n })\n }\n\n next(event) {\n if (event.detail.success) {\n Turbo.visit(event.detail.fetchResponse.response.url)\n }\n }\n}","import { Controller } from 'stimulus'\n\nexport default class extends Controller {\n connect() {\n console.log('Turbo Frame Updater connected.')\n }\n\n updateTurboFrame(event) {\n event.preventDefault()\n\n const url = this.data.get('url')\n const frameId = this.data.get('frameId')\n\n fetch(url)\n .then(response => response.text())\n .then(html => {\n const turboFrameElement = document.getElementById(frameId)\n turboFrameElement.innerHTML = html\n })\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n connect() {\n // Could be replaced by requestAnimationFrame()\n setTimeout(() => {\n [...this.element.children].map(el => this.activateScript(el));\n }, 0);\n }\n\n removeScript(element) {\n if (element.nodeName == 'SCRIPT') {\n element.parentElement?.removeChild(element);\n }\n }\n\n activateScript(element) {\n if (element.nodeName == 'SCRIPT') {\n const createdScriptElement = document.createElement(\"script\");\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n this.copyElementAttributes(createdScriptElement, element);\n this.replaceElementWithElement(element, createdScriptElement);\n }\n }\n\n replaceElementWithElement(fromElement, toElement) {\n const parentElement = fromElement.parentElement\n if (parentElement) {\n return parentElement.replaceChild(toElement, fromElement)\n }\n }\n\n copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of [ ...sourceElement.attributes ]) {\n destinationElement.setAttribute(name, value)\n }\n }\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"data\"]\n connect(){\n // console.log(\"Hello World!\")\n }\n updateContent(){\n var newContent = this.dataTarget.getAttribute('data-value')\n var contentID = this.dataTarget.getAttribute('data-id')\n document.getElementById(contentID).innerHTML = newContent;\n }\n};","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"data\"]\n connect(){\n // console.log(\"Hello World!\")\n }\n updateValue(){\n const targets = this.dataTargets\n targets.forEach((e) => {\n var newValue = e.getAttribute('data-value')\n var formField = e.getAttribute('data-id')\n document.getElementById(formField).value = newValue;\n })\n }\n};","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"checkbox\"];\n\n connect() {\n this.checkboxTargets.forEach((checkbox) => {\n checkbox.addEventListener(\"change\", this.toggleClass.bind(this));\n });\n }\n\n toggleClass(event) {\n setTimeout(() => {\n // these need to be scoped going forward\n const checkedCheckboxes = document.querySelectorAll(\".form-check-input:checked\");\n const disabledButton = document.getElementById(\"btnContinueDisabled\")\n const submitButton = document.getElementById(\"btnContinue\")\n\n if (checkedCheckboxes.length > 0) {\n submitButton.classList.remove(\"d-none\");\n submitButton.classList.add(\"d-block\");\n disabledButton.classList.add(\"d-none\");\n disabledButton.classList.remove(\"d-block\");\n } else {\n disabledButton.classList.remove(\"d-none\");\n disabledButton.classList.add(\"d-block\");\n submitButton.classList.add(\"d-none\");\n submitButton.classList.remove(\"d-block\");\n }\n }, 0); \n }\n}\n\n","function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*! Icon Picker 1.2.1 MIT | https://github.com/AppoloDev/icon-picker */\n!function (e, t) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define([], t) : \"object\" == typeof exports ? exports.IconPicker = t() : e.IconPicker = t();\n}(self, () => (() => {\n \"use strict\";\n\n var e = {\n d: (t, i) => {\n for (var n in i) e.o(i, n) && !e.o(t, n) && Object.defineProperty(t, n, {\n enumerable: !0,\n get: i[n]\n });\n },\n o: (e, t) => Object.prototype.hasOwnProperty.call(e, t)\n },\n t = {};\n function i(e, t, i, n) {\n Array.isArray(t) || (t = [t]), Array.isArray(i) || (i = [i]);\n for (const s of t) for (const t of i) s[e](t, n);\n return [].slice.call(arguments, 1);\n }\n e.d(t, {\n default: () => m\n });\n const n = i.bind(null, \"addEventListener\"),\n s = i.bind(null, \"removeEventListener\");\n function o(e) {\n if (window.DOMParser) {\n return new DOMParser().parseFromString(e, \"text/html\").body.firstElementChild;\n }\n const t = document.createElement(\"div\");\n return t.innerHTML = e, t.firstElementChild;\n }\n function r(e) {\n return e && \"object\" == typeof e && !Array.isArray(e);\n }\n function a(e, t) {\n let i = Object.assign({}, e);\n return r(e) && r(t) && Object.keys(t).forEach(n => {\n r(t[n]) ? n in e ? i[n] = a(e[n], t[n]) : Object.assign(i, {\n [n]: t[n]\n }) : Object.assign(i, {\n [n]: t[n]\n });\n }), i;\n }\n function l(e, t) {\n return Object.keys(e).find(i => e[i] === t);\n }\n const c = e => {\n var _s$save;\n const t = e.theme,\n i = e.i18n,\n n = e.closeOnSelect,\n s = function (e) {\n const t = (e, t) => {\n const i = e.getAttribute(t);\n return e.removeAttribute(t), i;\n },\n i = function (e) {\n let n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const s = t(e, \"data-element\");\n s && (n[s] = e);\n for (const s of Array.from(e.children)) {\n const e = t(s, \"data-interaction\");\n e && e && (n[e] = s), i(s, n);\n }\n return n;\n };\n return i(o(e));\n }(`\\n <div class=\"icon-picker-modal\" tabindex=\"-1\" data-theme=\"${t}\" data-element=\"modal\" aria-modal=\"true\" aria-labelledby=\"Icon picker modal\" role=\"dialog\">\\n <div class=\"icon-picker-modal__dialog\">\\n <div class=\"icon-picker-modal__header\" data-element=\"header\">\\n ${\"string\" == typeof i[\"text:title\"] && \"\" !== i[\"text:title\"] ? `<h2>${i[\"text:title\"]}</h2>` : \"\"}\\n \\n <button class=\"icon-picker-modal--close\" aria-label=\"Close\" data-interaction=\"close\">\\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke-width=\"1.5\">\\n <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.758 17.243 12.001 12m5.243-5.243L12 12m0 0L6.758 6.757M12.001 12l5.243 5.243\"/>\\n </svg>\\n </button>\\n </div>\\n \\n <input placeholder=\"${i[\"input:placeholder\"]}\" class=\"icon-picker-modal__search\" aria-label=\"${i[\"input:placeholder\"]}\" data-interaction=\"search\">\\n \\n <div class=\"icon-picker-modal__content\" data-element=\"content\"></div>\\n \\n ${n ? \"\" : `\\n <div class=\"icon-picker-modal__footer\" data-element=\"footer\">\\n <button type=\"button\" class=\"picker-save\" data-interaction=\"save\">${i[\"btn:save\"]}</button>\\n </div>`}\\n </div>\\n </div>\\n `);\n return t.includes(\"bootstrap\") && ((_s$save = s.save) !== null && _s$save !== void 0 && _s$save.classList.add(\"btn\", \"btn-primary\"), s.search.classList.add(\"form-control\")), s;\n };\n const u = \"https://raw.githubusercontent.com/iconify/icon-sets/master/json\",\n d = {\n \"Material Design Icons\": {\n key: \"mdi\",\n prefix: \"mdi mdi-\",\n url: `${u}/mdi.json`\n },\n \"FontAwesome Brands 6\": {\n key: \"fa6-brands\",\n prefix: \"fab fa-\",\n url: `${u}/fa6-brands.json`\n },\n \"FontAwesome Solid 6\": {\n key: \"fa6-solid\",\n prefix: \"fas fa-\",\n url: `${u}/fa6-solid.json`\n },\n \"FontAwesome Regular 6\": {\n key: \"fa6-regular\",\n prefix: \"far fa-\",\n url: `${u}/fa6-regular.json`\n },\n Iconoir: {\n key: \"iconoir\",\n prefix: \"iconoir-\",\n url: `${u}/iconoir.json`\n }\n };\n function h(e) {\n let t = Object.create({});\n return Array.isArray(e) && e.forEach(e => {\n !function (e) {\n return d.hasOwnProperty(e);\n }(e) ? e.key && (t[e.key] = e) : t[d[e].key] = d[e];\n }), t;\n }\n class m {\n static DEFAULT_OPTIONS = {\n theme: \"default\",\n closeOnSelect: !0,\n defaultValue: null,\n iconSource: [],\n i18n: {\n \"input:placeholder\": \"Search icon…\",\n \"text:title\": \"Select icon\",\n \"text:empty\": \"No results found…\",\n \"btn:save\": \"Save\"\n }\n };\n _eventListener = {\n select: [],\n save: [],\n show: [],\n clear: [],\n hide: []\n };\n constructor(e) {\n let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.options = a(m.DEFAULT_OPTIONS, t), this.element = e, this._preBuild(), this.element && this.options.iconSource.length > 0 ? (this._binEvents(), this._renderdIcons(), this._createModal()) : this._catchError(\"iconSourceMissing\");\n }\n _preBuild() {\n var e;\n this.element = (e = this.element) instanceof HTMLElement ? e : \"string\" == typeof e ? document.querySelector(e) : null, this.root = c(this.options), !Array.isArray(this.options.iconSource) && this.options.iconSource.length > 0 && (this.options.iconSource = [this.options.iconSource]);\n }\n _binEvents() {\n const e = this.options,\n t = this.root,\n i = this.element;\n let s = [];\n var r, a, l;\n this._eventBindings = [n(i, \"click\", () => this.show()), n(t.close, \"click\", () => this.hide()), n(t.modal, \"click\", e => {\n e.target === t.modal && this.hide();\n }), n(t.search, \"keyup\", (r = i => {\n const n = this.availableIcons.filter(e => {\n var _e$categories;\n return e.value.includes(i.target.value.toLowerCase()) || ((_e$categories = e.categories) === null || _e$categories === void 0 ? void 0 : _e$categories.filter(e => e.includes(i.target.value.toLowerCase())).length) > 0;\n });\n s.length || (s = document.querySelectorAll(\".icon-element\")), s.forEach(e => {\n e.hidden = !0, n.forEach(t => {\n e.classList.contains(t.value) && (e.hidden = !1);\n });\n });\n const r = t.content.querySelector(\".is-empty\");\n n.length > 0 ? r && r.remove() : r || t.content.appendChild(o(`<div class=\"is-empty\">${e.i18n[\"text:empty\"]}</div>`));\n }, a = 250, function () {\n var e = arguments,\n t = this;\n clearTimeout(l), l = setTimeout(function () {\n r.apply(t, e);\n }, a);\n }))], e.closeOnSelect || this._eventBindings.push(n(t.save, \"click\", () => this._onSave()));\n }\n hide() {\n return !!this.isOpen() && (this.root.modal.classList.remove(\"is-visible\"), this._emit(\"hide\"), this);\n }\n show() {\n return !this.isOpen() && (this.root.modal.classList.add(\"is-visible\"), this._emit(\"show\"), this);\n }\n clear() {\n this.initialized && this.currentlySelectName && (this.currentlySelectName = null, this._emit(\"clear\"));\n }\n isOpen() {\n return this.root.modal.classList.contains(\"is-visible\");\n }\n destroy() {\n let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !0;\n this.initialized = !1, this._eventBindings.forEach(e => s(...e)), e && Object.keys(this).forEach(e => delete this[e]);\n }\n _emit(e) {\n for (var _len = arguments.length, t = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n t[_key - 1] = arguments[_key];\n }\n this._eventListener[e].forEach(e => e(...t, this));\n }\n on(e, t) {\n return void 0 !== this._eventListener[e] && (this._eventListener[e].push(t), this);\n }\n off(e, t) {\n const i = this._eventListener[e] || [],\n n = i.indexOf(t);\n return ~n && i.splice(n, 1), this;\n }\n _createModal() {\n document.body.appendChild(this.root.modal), this.initialized = !0;\n }\n _onSave() {\n this._setValueInput(), this.hide(), this._emit(\"save\", this.emitValues);\n }\n async _renderdIcons() {\n const e = this.root,\n t = this.options;\n let i = null,\n n = null,\n s = null;\n if (this.availableIcons = [], e.content.innerHTML = \"\", (await this._getIcons()).forEach(o => {\n let r = o.iconFormat ? o.iconFormat : \"svg\";\n for (const _ref of Object.entries(o.icons)) {\n var _ref2 = _slicedToArray(_ref, 2);\n const a = _ref2[0];\n const c = _ref2[1];\n {\n const u = document.createElement(\"button\");\n if (u.title = a, u.className = `icon-element ${a}`, u.dataset.value = o.prefix + a, o.categories && Object.entries(o.categories).length > 0) {\n s = [];\n for (const _ref3 of Object.entries(o.categories)) {\n var _ref4 = _slicedToArray(_ref3, 1);\n const e = _ref4[0];\n o.categories[e].includes(a) && (s.length > 0 ? s.push(e.toLowerCase()) : s = [e.toLowerCase()]);\n }\n }\n let d;\n if (o.chars && (u.dataset.unicode = l(o.chars, a)), \"i\" !== r && c.body) {\n if (\"markup\" === r) {\n let e = document.createElement(\"template\");\n e.innerHTML = c.body, d = e.content;\n } else d = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\"), d.setAttribute(\"height\", \"24\"), d.setAttribute(\"width\", \"24\"), d.setAttribute(\"viewBox\", `0 0 ${c.width ? c.width : o.width} ${c.height ? c.height : o.height}`), d.innerHTML = c.body;\n } else d = document.createElement(\"i\"), d.setAttribute(\"class\", u.dataset.value);\n u.append(d), e.content.appendChild(u), this.availableIcons.push(_objectSpread({\n value: a,\n body: d.outerHTML\n }, s.length > 0 && {\n categories: s\n })), u.addEventListener(\"click\", e => {\n this.currentlySelectName !== e.currentTarget.firstChild.className && (e.currentTarget.classList.add(\"is-selected\"), n = e.currentTarget, this.currentlySelectName = n.dataset.value, this.SVGString = d.outerHTML, this.emitValues = {\n name: a,\n value: this.currentlySelectName,\n svg: this.SVGString\n }, o.chars && (this.emitValues.unicode = d.dataset.unicode), this._emit(\"select\", this.emitValues)), i && i.classList.remove(\"is-selected\"), t.closeOnSelect && this._onSave(), i = n;\n });\n }\n }\n }), t.defaultValue || this.element.value) {\n var _e$dataset$value;\n let e = document.querySelector(`[data-value=\"${t.defaultValue ? t.defaultValue : this.element.value}\"]`) ? document.querySelector(`[data-value=\"${t.defaultValue ? t.defaultValue : this.element.value}\"]`) : document.querySelector(`.${t.defaultValue ? t.defaultValue : this.element.value}`),\n n = (_e$dataset$value = e === null || e === void 0 ? void 0 : e.dataset.value) !== null && _e$dataset$value !== void 0 ? _e$dataset$value : \"\";\n e !== null && e !== void 0 && e.classList.add(\"is-selected\"), i = e, this.currentlySelectName = n, this.element.value || this._setValueInput();\n }\n }\n async _getIcons() {\n const e = this.options,\n t = [];\n let i = h(e.iconSource);\n for (const e of Object.values(i)) t.push(e.url);\n return await Promise.all(t.map(e => fetch(e).then(e => e.json()))).then(e => (e.forEach(e => {\n i.hasOwnProperty(e.prefix) && (e.prefix = i[e.prefix].prefix);\n }), e));\n }\n _catchError(e) {\n if (\"iconSourceMissing\" === e) throw Error(\"No icon source was found.\");\n }\n _setValueInput() {\n let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.currentlySelectName;\n const t = this.element;\n t instanceof HTMLInputElement && this.currentlySelectName && (t.value = e);\n }\n }\n return t = t.default;\n})());","/*\n Highcharts JS v9.3.3 (2022-02-01)\n\n (c) 2009-2021 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n'use strict';\n\n(function (Z, M) {\n \"object\" === typeof module && module.exports ? (M[\"default\"] = M, module.exports = Z.document ? M(Z) : M) : \"function\" === typeof define && define.amd ? define(\"highcharts/highcharts\", function () {\n return M(Z);\n }) : (Z.Highcharts && Z.Highcharts.error(16, !0), Z.Highcharts = M(Z));\n})(\"undefined\" !== typeof window ? window : this, function (Z) {\n function M(v, a, z, F) {\n v.hasOwnProperty(a) || (v[a] = F.apply(null, z));\n }\n var a = {};\n M(a, \"Core/Globals.js\", [], function () {\n var v = \"undefined\" !== typeof Z ? Z : \"undefined\" !== typeof window ? window : {},\n a;\n (function (a) {\n a.SVG_NS = \"http://www.w3.org/2000/svg\";\n a.product = \"Highcharts\";\n a.version = \"9.3.3\";\n a.win = v;\n a.doc = a.win.document;\n a.svg = a.doc && a.doc.createElementNS && !!a.doc.createElementNS(a.SVG_NS, \"svg\").createSVGRect;\n a.userAgent = a.win.navigator && a.win.navigator.userAgent || \"\";\n a.isChrome = -1 !== a.userAgent.indexOf(\"Chrome\");\n a.isFirefox = -1 !== a.userAgent.indexOf(\"Firefox\");\n a.isMS = /(edge|msie|trident)/i.test(a.userAgent) && !a.win.opera;\n a.isSafari = !a.isChrome && -1 !== a.userAgent.indexOf(\"Safari\");\n a.isTouchDevice = /(Mobile|Android|Windows Phone)/.test(a.userAgent);\n a.isWebKit = -1 !== a.userAgent.indexOf(\"AppleWebKit\");\n a.deg2rad = 2 * Math.PI / 360;\n a.hasBidiBug = a.isFirefox && 4 > parseInt(a.userAgent.split(\"Firefox/\")[1], 10);\n a.hasTouch = !!a.win.TouchEvent;\n a.marginNames = [\"plotTop\", \"marginRight\", \"marginBottom\", \"plotLeft\"];\n a.noop = function () {};\n a.supportsPassiveEvents = function () {\n var v = !1;\n if (!a.isMS) {\n var u = Object.defineProperty({}, \"passive\", {\n get: function () {\n v = !0;\n }\n });\n a.win.addEventListener && a.win.removeEventListener && (a.win.addEventListener(\"testPassive\", a.noop, u), a.win.removeEventListener(\"testPassive\", a.noop, u));\n }\n return v;\n }();\n a.charts = [];\n a.dateFormats = {};\n a.seriesTypes = {};\n a.symbolSizes = {};\n a.chartCount = 0;\n })(a || (a = {}));\n \"\";\n return a;\n });\n M(a, \"Core/Utilities.js\", [a[\"Core/Globals.js\"]], function (a) {\n function v(m, b, d, g) {\n var D = b ? \"Highcharts error\" : \"Highcharts warning\";\n 32 === m && (m = D + \": Deprecated member\");\n var x = n(m),\n c = x ? D + \" #\" + m + \": www.highcharts.com/errors/\" + m + \"/\" : m.toString();\n if (\"undefined\" !== typeof g) {\n var r = \"\";\n x && (c += \"?\");\n B(g, function (m, b) {\n r += \"\\n - \" + b + \": \" + m;\n x && (c += encodeURI(b) + \"=\" + encodeURI(m));\n });\n c += r;\n }\n J(a, \"displayError\", {\n chart: d,\n code: m,\n message: c,\n params: g\n }, function () {\n if (b) throw Error(c);\n l.console && -1 === v.messages.indexOf(c) && console.warn(c);\n });\n v.messages.push(c);\n }\n function z(m, b) {\n var d = {};\n B(m, function (D, x) {\n if (H(m[x], !0) && !m.nodeType && b[x]) D = z(m[x], b[x]), Object.keys(D).length && (d[x] = D);else if (H(m[x]) || m[x] !== b[x]) d[x] = m[x];\n });\n return d;\n }\n function F(m, b) {\n return parseInt(m, b || 10);\n }\n function y(m) {\n return \"string\" === typeof m;\n }\n function G(m) {\n m = Object.prototype.toString.call(m);\n return \"[object Array]\" === m || \"[object Array Iterator]\" === m;\n }\n function H(m, b) {\n return !!m && \"object\" === typeof m && (!b || !G(m));\n }\n function A(m) {\n return H(m) && \"number\" === typeof m.nodeType;\n }\n function q(m) {\n var b = m && m.constructor;\n return !(!H(m, !0) || A(m) || !b || !b.name || \"Object\" === b.name);\n }\n function n(m) {\n return \"number\" === typeof m && !isNaN(m) && Infinity > m && -Infinity < m;\n }\n function k(m) {\n return \"undefined\" !== typeof m && null !== m;\n }\n function e(m, b, d) {\n var D;\n y(b) ? k(d) ? m.setAttribute(b, d) : m && m.getAttribute && ((D = m.getAttribute(b)) || \"class\" !== b || (D = m.getAttribute(b + \"Name\"))) : B(b, function (b, d) {\n k(b) ? m.setAttribute(d, b) : m.removeAttribute(d);\n });\n return D;\n }\n function c(b, d) {\n var m;\n b || (b = {});\n for (m in d) b[m] = d[m];\n return b;\n }\n function h() {\n for (var b = arguments, d = b.length, x = 0; x < d; x++) {\n var g = b[x];\n if (\"undefined\" !== typeof g && null !== g) return g;\n }\n }\n function f(b, d) {\n a.isMS && !a.svg && d && \"undefined\" !== typeof d.opacity && (d.filter = \"alpha(opacity=\" + 100 * d.opacity + \")\");\n c(b.style, d);\n }\n function w(b, d) {\n return 1E14 < b ? b : parseFloat(b.toPrecision(d || 14));\n }\n function p(b, d, x) {\n var m = a.getStyle || p;\n if (\"width\" === d) return d = Math.min(b.offsetWidth, b.scrollWidth), x = b.getBoundingClientRect && b.getBoundingClientRect().width, x < d && x >= d - 1 && (d = Math.floor(x)), Math.max(0, d - (m(b, \"padding-left\", !0) || 0) - (m(b, \"padding-right\", !0) || 0));\n if (\"height\" === d) return Math.max(0, Math.min(b.offsetHeight, b.scrollHeight) - (m(b, \"padding-top\", !0) || 0) - (m(b, \"padding-bottom\", !0) || 0));\n l.getComputedStyle || v(27, !0);\n if (b = l.getComputedStyle(b, void 0)) {\n var g = b.getPropertyValue(d);\n h(x, \"opacity\" !== d) && (g = F(g));\n }\n return g;\n }\n function B(b, d, g) {\n for (var m in b) Object.hasOwnProperty.call(b, m) && d.call(g || b[m], b[m], m, b);\n }\n function t(b, d, g) {\n function m(d, m) {\n var L = b.removeEventListener || a.removeEventListenerPolyfill;\n L && L.call(b, d, m, !1);\n }\n function x(g) {\n var x;\n if (b.nodeName) {\n if (d) {\n var L = {};\n L[d] = !0;\n } else L = g;\n B(L, function (b, d) {\n if (g[d]) for (x = g[d].length; x--;) m(d, g[d][x].fn);\n });\n }\n }\n var D = \"function\" === typeof b && b.prototype || b;\n if (Object.hasOwnProperty.call(D, \"hcEvents\")) {\n var l = D.hcEvents;\n d ? (D = l[d] || [], g ? (l[d] = D.filter(function (b) {\n return g !== b.fn;\n }), m(d, g)) : (x(l), l[d] = [])) : (x(l), delete D.hcEvents);\n }\n }\n function J(b, d, g, l) {\n g = g || {};\n if (r.createEvent && (b.dispatchEvent || b.fireEvent && b !== a)) {\n var m = r.createEvent(\"Events\");\n m.initEvent(d, !0, !0);\n g = c(m, g);\n b.dispatchEvent ? b.dispatchEvent(g) : b.fireEvent(d, g);\n } else if (b.hcEvents) {\n g.target || c(g, {\n preventDefault: function () {\n g.defaultPrevented = !0;\n },\n target: b,\n type: d\n });\n m = [];\n for (var x = b, D = !1; x.hcEvents;) Object.hasOwnProperty.call(x, \"hcEvents\") && x.hcEvents[d] && (m.length && (D = !0), m.unshift.apply(m, x.hcEvents[d])), x = Object.getPrototypeOf(x);\n D && m.sort(function (b, d) {\n return b.order - d.order;\n });\n m.forEach(function (d) {\n !1 === d.fn.call(b, g) && g.preventDefault();\n });\n }\n l && !g.defaultPrevented && l.call(b, g);\n }\n var C = a.charts,\n r = a.doc,\n l = a.win;\n (v || (v = {})).messages = [];\n Math.easeInOutSine = function (b) {\n return -.5 * (Math.cos(Math.PI * b) - 1);\n };\n var b = Array.prototype.find ? function (b, d) {\n return b.find(d);\n } : function (b, d) {\n var m,\n g = b.length;\n for (m = 0; m < g; m++) if (d(b[m], m)) return b[m];\n };\n B({\n map: \"map\",\n each: \"forEach\",\n grep: \"filter\",\n reduce: \"reduce\",\n some: \"some\"\n }, function (b, d) {\n a[d] = function (m) {\n var g;\n v(32, !1, void 0, (g = {}, g[\"Highcharts.\" + d] = \"use Array.\" + b, g));\n return Array.prototype[b].apply(m, [].slice.call(arguments, 1));\n };\n });\n var g,\n d = function () {\n var b = Math.random().toString(36).substring(2, 9) + \"-\",\n d = 0;\n return function () {\n return \"highcharts-\" + (g ? \"\" : b) + d++;\n };\n }();\n l.jQuery && (l.jQuery.fn.highcharts = function () {\n var b = [].slice.call(arguments);\n if (this[0]) return b[0] ? (new a[y(b[0]) ? b.shift() : \"Chart\"](this[0], b[0], b[1]), this) : C[e(this[0], \"data-highcharts-chart\")];\n });\n b = {\n addEvent: function (b, d, g, l) {\n void 0 === l && (l = {});\n var m = \"function\" === typeof b && b.prototype || b;\n Object.hasOwnProperty.call(m, \"hcEvents\") || (m.hcEvents = {});\n m = m.hcEvents;\n a.Point && b instanceof a.Point && b.series && b.series.chart && (b.series.chart.runTrackerClick = !0);\n var x = b.addEventListener || a.addEventListenerPolyfill;\n x && x.call(b, d, g, a.supportsPassiveEvents ? {\n passive: void 0 === l.passive ? -1 !== d.indexOf(\"touch\") : l.passive,\n capture: !1\n } : !1);\n m[d] || (m[d] = []);\n m[d].push({\n fn: g,\n order: \"number\" === typeof l.order ? l.order : Infinity\n });\n m[d].sort(function (b, d) {\n return b.order - d.order;\n });\n return function () {\n t(b, d, g);\n };\n },\n arrayMax: function (b) {\n for (var d = b.length, m = b[0]; d--;) b[d] > m && (m = b[d]);\n return m;\n },\n arrayMin: function (b) {\n for (var d = b.length, m = b[0]; d--;) b[d] < m && (m = b[d]);\n return m;\n },\n attr: e,\n clamp: function (b, d, g) {\n return b > d ? b < g ? b : g : d;\n },\n cleanRecursively: z,\n clearTimeout: function (b) {\n k(b) && clearTimeout(b);\n },\n correctFloat: w,\n createElement: function (b, d, g, l, e) {\n b = r.createElement(b);\n d && c(b, d);\n e && f(b, {\n padding: \"0\",\n border: \"none\",\n margin: \"0\"\n });\n g && f(b, g);\n l && l.appendChild(b);\n return b;\n },\n css: f,\n defined: k,\n destroyObjectProperties: function (b, d) {\n B(b, function (m, g) {\n m && m !== d && m.destroy && m.destroy();\n delete b[g];\n });\n },\n discardElement: function (b) {\n b && b.parentElement && b.parentElement.removeChild(b);\n },\n erase: function (b, d) {\n for (var m = b.length; m--;) if (b[m] === d) {\n b.splice(m, 1);\n break;\n }\n },\n error: v,\n extend: c,\n extendClass: function (b, d) {\n var m = function () {};\n m.prototype = new b();\n c(m.prototype, d);\n return m;\n },\n find: b,\n fireEvent: J,\n getMagnitude: function (b) {\n return Math.pow(10, Math.floor(Math.log(b) / Math.LN10));\n },\n getNestedProperty: function (b, d) {\n for (b = b.split(\".\"); b.length && k(d);) {\n var m = b.shift();\n if (\"undefined\" === typeof m || \"__proto__\" === m) return;\n d = d[m];\n if (!k(d) || \"function\" === typeof d || \"number\" === typeof d.nodeType || d === l) return;\n }\n return d;\n },\n getStyle: p,\n inArray: function (b, d, g) {\n v(32, !1, void 0, {\n \"Highcharts.inArray\": \"use Array.indexOf\"\n });\n return d.indexOf(b, g);\n },\n isArray: G,\n isClass: q,\n isDOMElement: A,\n isFunction: function (b) {\n return \"function\" === typeof b;\n },\n isNumber: n,\n isObject: H,\n isString: y,\n keys: function (b) {\n v(32, !1, void 0, {\n \"Highcharts.keys\": \"use Object.keys\"\n });\n return Object.keys(b);\n },\n merge: function () {\n var b,\n d = arguments,\n g = {},\n l = function (b, d) {\n \"object\" !== typeof b && (b = {});\n B(d, function (m, g) {\n \"__proto__\" !== g && \"constructor\" !== g && (!H(m, !0) || q(m) || A(m) ? b[g] = d[g] : b[g] = l(b[g] || {}, m));\n });\n return b;\n };\n !0 === d[0] && (g = d[1], d = Array.prototype.slice.call(d, 2));\n var c = d.length;\n for (b = 0; b < c; b++) g = l(g, d[b]);\n return g;\n },\n normalizeTickInterval: function (b, d, g, l, c) {\n var m = b;\n g = h(g, 1);\n var r = b / g;\n d || (d = c ? [1, 1.2, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10] : [1, 2, 2.5, 5, 10], !1 === l && (1 === g ? d = d.filter(function (b) {\n return 0 === b % 1;\n }) : .1 >= g && (d = [1 / g])));\n for (l = 0; l < d.length && !(m = d[l], c && m * g >= b || !c && r <= (d[l] + (d[l + 1] || d[l])) / 2); l++);\n return m = w(m * g, -Math.round(Math.log(.001) / Math.LN10));\n },\n objectEach: B,\n offset: function (b) {\n var d = r.documentElement;\n b = b.parentElement || b.parentNode ? b.getBoundingClientRect() : {\n top: 0,\n left: 0,\n width: 0,\n height: 0\n };\n return {\n top: b.top + (l.pageYOffset || d.scrollTop) - (d.clientTop || 0),\n left: b.left + (l.pageXOffset || d.scrollLeft) - (d.clientLeft || 0),\n width: b.width,\n height: b.height\n };\n },\n pad: function (b, d, g) {\n return Array((d || 2) + 1 - String(b).replace(\"-\", \"\").length).join(g || \"0\") + b;\n },\n pick: h,\n pInt: F,\n relativeLength: function (b, d, g) {\n return /%$/.test(b) ? d * parseFloat(b) / 100 + (g || 0) : parseFloat(b);\n },\n removeEvent: t,\n splat: function (b) {\n return G(b) ? b : [b];\n },\n stableSort: function (b, d) {\n var g = b.length,\n m,\n l;\n for (l = 0; l < g; l++) b[l].safeI = l;\n b.sort(function (b, g) {\n m = d(b, g);\n return 0 === m ? b.safeI - g.safeI : m;\n });\n for (l = 0; l < g; l++) delete b[l].safeI;\n },\n syncTimeout: function (b, d, g) {\n if (0 < d) return setTimeout(b, d, g);\n b.call(0, g);\n return -1;\n },\n timeUnits: {\n millisecond: 1,\n second: 1E3,\n minute: 6E4,\n hour: 36E5,\n day: 864E5,\n week: 6048E5,\n month: 24192E5,\n year: 314496E5\n },\n uniqueKey: d,\n useSerialIds: function (b) {\n return g = h(b, g);\n },\n wrap: function (b, d, g) {\n var m = b[d];\n b[d] = function () {\n var b = Array.prototype.slice.call(arguments),\n d = arguments,\n l = this;\n l.proceed = function () {\n m.apply(l, arguments.length ? arguments : d);\n };\n b.unshift(m);\n b = g.apply(this, b);\n l.proceed = null;\n return b;\n };\n }\n };\n \"\";\n return b;\n });\n M(a, \"Core/Chart/ChartDefaults.js\", [], function () {\n return {\n panning: {\n enabled: !1,\n type: \"x\"\n },\n styledMode: !1,\n borderRadius: 0,\n colorCount: 10,\n defaultSeriesType: \"line\",\n ignoreHiddenSeries: !0,\n spacing: [10, 10, 15, 10],\n resetZoomButton: {\n theme: {\n zIndex: 6\n },\n position: {\n align: \"right\",\n x: -10,\n y: 10\n }\n },\n zoomBySingleTouch: !1,\n width: null,\n height: null,\n borderColor: \"#335cad\",\n backgroundColor: \"#ffffff\",\n plotBorderColor: \"#cccccc\"\n };\n });\n M(a, \"Core/Color/Color.js\", [a[\"Core/Globals.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n var v = u.isNumber,\n F = u.merge,\n y = u.pInt;\n u = function () {\n function u(v) {\n this.rgba = [NaN, NaN, NaN, NaN];\n this.input = v;\n var A = a.Color;\n if (A && A !== u) return new A(v);\n if (!(this instanceof u)) return new u(v);\n this.init(v);\n }\n u.parse = function (a) {\n return a ? new u(a) : u.None;\n };\n u.prototype.init = function (a) {\n var A;\n if (\"object\" === typeof a && \"undefined\" !== typeof a.stops) this.stops = a.stops.map(function (e) {\n return new u(e[1]);\n });else if (\"string\" === typeof a) {\n this.input = a = u.names[a.toLowerCase()] || a;\n if (\"#\" === a.charAt(0)) {\n var q = a.length;\n var n = parseInt(a.substr(1), 16);\n 7 === q ? A = [(n & 16711680) >> 16, (n & 65280) >> 8, n & 255, 1] : 4 === q && (A = [(n & 3840) >> 4 | (n & 3840) >> 8, (n & 240) >> 4 | n & 240, (n & 15) << 4 | n & 15, 1]);\n }\n if (!A) for (n = u.parsers.length; n-- && !A;) {\n var k = u.parsers[n];\n (q = k.regex.exec(a)) && (A = k.parse(q));\n }\n }\n A && (this.rgba = A);\n };\n u.prototype.get = function (a) {\n var A = this.input,\n q = this.rgba;\n if (\"object\" === typeof A && \"undefined\" !== typeof this.stops) {\n var n = F(A);\n n.stops = [].slice.call(n.stops);\n this.stops.forEach(function (k, e) {\n n.stops[e] = [n.stops[e][0], k.get(a)];\n });\n return n;\n }\n return q && v(q[0]) ? \"rgb\" === a || !a && 1 === q[3] ? \"rgb(\" + q[0] + \",\" + q[1] + \",\" + q[2] + \")\" : \"a\" === a ? \"\" + q[3] : \"rgba(\" + q.join(\",\") + \")\" : A;\n };\n u.prototype.brighten = function (a) {\n var A = this.rgba;\n if (this.stops) this.stops.forEach(function (n) {\n n.brighten(a);\n });else if (v(a) && 0 !== a) for (var q = 0; 3 > q; q++) A[q] += y(255 * a), 0 > A[q] && (A[q] = 0), 255 < A[q] && (A[q] = 255);\n return this;\n };\n u.prototype.setOpacity = function (a) {\n this.rgba[3] = a;\n return this;\n };\n u.prototype.tweenTo = function (a, A) {\n var q = this.rgba,\n n = a.rgba;\n if (!v(q[0]) || !v(n[0])) return a.input || \"none\";\n a = 1 !== n[3] || 1 !== q[3];\n return (a ? \"rgba(\" : \"rgb(\") + Math.round(n[0] + (q[0] - n[0]) * (1 - A)) + \",\" + Math.round(n[1] + (q[1] - n[1]) * (1 - A)) + \",\" + Math.round(n[2] + (q[2] - n[2]) * (1 - A)) + (a ? \",\" + (n[3] + (q[3] - n[3]) * (1 - A)) : \"\") + \")\";\n };\n u.names = {\n white: \"#ffffff\",\n black: \"#000000\"\n };\n u.parsers = [{\n regex: /rgba\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]?(?:\\.[0-9]+)?)\\s*\\)/,\n parse: function (a) {\n return [y(a[1]), y(a[2]), y(a[3]), parseFloat(a[4], 10)];\n }\n }, {\n regex: /rgb\\(\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*,\\s*([0-9]{1,3})\\s*\\)/,\n parse: function (a) {\n return [y(a[1]), y(a[2]), y(a[3]), 1];\n }\n }];\n u.None = new u(\"\");\n return u;\n }();\n \"\";\n return u;\n });\n M(a, \"Core/Color/Palettes.js\", [], function () {\n return {\n colors: \"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1\".split(\" \")\n };\n });\n M(a, \"Core/Time.js\", [a[\"Core/Globals.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n var v = a.win,\n F = u.defined,\n y = u.error,\n G = u.extend,\n H = u.isObject,\n A = u.merge,\n q = u.objectEach,\n n = u.pad,\n k = u.pick,\n e = u.splat,\n c = u.timeUnits,\n h = a.isSafari && v.Intl && v.Intl.DateTimeFormat.prototype.formatRange,\n f = a.isSafari && v.Intl && !v.Intl.DateTimeFormat.prototype.formatRange;\n u = function () {\n function w(c) {\n this.options = {};\n this.variableTimezone = this.useUTC = !1;\n this.Date = v.Date;\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n this.update(c);\n }\n w.prototype.get = function (c, e) {\n if (this.variableTimezone || this.timezoneOffset) {\n var p = e.getTime(),\n f = p - this.getTimezoneOffset(e);\n e.setTime(f);\n c = e[\"getUTC\" + c]();\n e.setTime(p);\n return c;\n }\n return this.useUTC ? e[\"getUTC\" + c]() : e[\"get\" + c]();\n };\n w.prototype.set = function (c, e, f) {\n if (this.variableTimezone || this.timezoneOffset) {\n if (\"Milliseconds\" === c || \"Seconds\" === c || \"Minutes\" === c && 0 === this.getTimezoneOffset(e) % 36E5) return e[\"setUTC\" + c](f);\n var p = this.getTimezoneOffset(e);\n p = e.getTime() - p;\n e.setTime(p);\n e[\"setUTC\" + c](f);\n c = this.getTimezoneOffset(e);\n p = e.getTime() + c;\n return e.setTime(p);\n }\n return this.useUTC || h && \"FullYear\" === c ? e[\"setUTC\" + c](f) : e[\"set\" + c](f);\n };\n w.prototype.update = function (c) {\n var e = k(c && c.useUTC, !0);\n this.options = c = A(!0, this.options || {}, c);\n this.Date = c.Date || v.Date || Date;\n this.timezoneOffset = (this.useUTC = e) && c.timezoneOffset;\n this.getTimezoneOffset = this.timezoneOffsetFunction();\n this.variableTimezone = e && !(!c.getTimezoneOffset && !c.timezone);\n };\n w.prototype.makeTime = function (c, e, h, w, C, r) {\n if (this.useUTC) {\n var l = this.Date.UTC.apply(0, arguments);\n var b = this.getTimezoneOffset(l);\n l += b;\n var g = this.getTimezoneOffset(l);\n b !== g ? l += g - b : b - 36E5 !== this.getTimezoneOffset(l - 36E5) || f || (l -= 36E5);\n } else l = new this.Date(c, e, k(h, 1), k(w, 0), k(C, 0), k(r, 0)).getTime();\n return l;\n };\n w.prototype.timezoneOffsetFunction = function () {\n var c = this,\n e = this.options,\n f = e.getTimezoneOffset,\n h = e.moment || v.moment;\n if (!this.useUTC) return function (c) {\n return 6E4 * new Date(c.toString()).getTimezoneOffset();\n };\n if (e.timezone) {\n if (h) return function (c) {\n return 6E4 * -h.tz(c, e.timezone).utcOffset();\n };\n y(25);\n }\n return this.useUTC && f ? function (c) {\n return 6E4 * f(c.valueOf());\n } : function () {\n return 6E4 * (c.timezoneOffset || 0);\n };\n };\n w.prototype.dateFormat = function (c, e, f) {\n if (!F(e) || isNaN(e)) return a.defaultOptions.lang && a.defaultOptions.lang.invalidDate || \"\";\n c = k(c, \"%Y-%m-%d %H:%M:%S\");\n var p = this,\n h = new this.Date(e),\n r = this.get(\"Hours\", h),\n l = this.get(\"Day\", h),\n b = this.get(\"Date\", h),\n g = this.get(\"Month\", h),\n d = this.get(\"FullYear\", h),\n m = a.defaultOptions.lang,\n D = m && m.weekdays,\n x = m && m.shortWeekdays;\n h = G({\n a: x ? x[l] : D[l].substr(0, 3),\n A: D[l],\n d: n(b),\n e: n(b, 2, \" \"),\n w: l,\n b: m.shortMonths[g],\n B: m.months[g],\n m: n(g + 1),\n o: g + 1,\n y: d.toString().substr(2, 2),\n Y: d,\n H: n(r),\n k: r,\n I: n(r % 12 || 12),\n l: r % 12 || 12,\n M: n(this.get(\"Minutes\", h)),\n p: 12 > r ? \"AM\" : \"PM\",\n P: 12 > r ? \"am\" : \"pm\",\n S: n(h.getSeconds()),\n L: n(Math.floor(e % 1E3), 3)\n }, a.dateFormats);\n q(h, function (b, d) {\n for (; -1 !== c.indexOf(\"%\" + d);) c = c.replace(\"%\" + d, \"function\" === typeof b ? b.call(p, e) : b);\n });\n return f ? c.substr(0, 1).toUpperCase() + c.substr(1) : c;\n };\n w.prototype.resolveDTLFormat = function (c) {\n return H(c, !0) ? c : (c = e(c), {\n main: c[0],\n from: c[1],\n to: c[2]\n });\n };\n w.prototype.getTimeTicks = function (e, h, f, w) {\n var p = this,\n r = [],\n l = {},\n b = new p.Date(h),\n g = e.unitRange,\n d = e.count || 1,\n m;\n w = k(w, 1);\n if (F(h)) {\n p.set(\"Milliseconds\", b, g >= c.second ? 0 : d * Math.floor(p.get(\"Milliseconds\", b) / d));\n g >= c.second && p.set(\"Seconds\", b, g >= c.minute ? 0 : d * Math.floor(p.get(\"Seconds\", b) / d));\n g >= c.minute && p.set(\"Minutes\", b, g >= c.hour ? 0 : d * Math.floor(p.get(\"Minutes\", b) / d));\n g >= c.hour && p.set(\"Hours\", b, g >= c.day ? 0 : d * Math.floor(p.get(\"Hours\", b) / d));\n g >= c.day && p.set(\"Date\", b, g >= c.month ? 1 : Math.max(1, d * Math.floor(p.get(\"Date\", b) / d)));\n if (g >= c.month) {\n p.set(\"Month\", b, g >= c.year ? 0 : d * Math.floor(p.get(\"Month\", b) / d));\n var D = p.get(\"FullYear\", b);\n }\n g >= c.year && p.set(\"FullYear\", b, D - D % d);\n g === c.week && (D = p.get(\"Day\", b), p.set(\"Date\", b, p.get(\"Date\", b) - D + w + (D < w ? -7 : 0)));\n D = p.get(\"FullYear\", b);\n w = p.get(\"Month\", b);\n var x = p.get(\"Date\", b),\n t = p.get(\"Hours\", b);\n h = b.getTime();\n !p.variableTimezone && p.useUTC || !F(f) || (m = f - h > 4 * c.month || p.getTimezoneOffset(h) !== p.getTimezoneOffset(f));\n h = b.getTime();\n for (b = 1; h < f;) r.push(h), h = g === c.year ? p.makeTime(D + b * d, 0) : g === c.month ? p.makeTime(D, w + b * d) : !m || g !== c.day && g !== c.week ? m && g === c.hour && 1 < d ? p.makeTime(D, w, x, t + b * d) : h + g * d : p.makeTime(D, w, x + b * d * (g === c.day ? 1 : 7)), b++;\n r.push(h);\n g <= c.hour && 1E4 > r.length && r.forEach(function (b) {\n 0 === b % 18E5 && \"000000000\" === p.dateFormat(\"%H%M%S%L\", b) && (l[b] = \"day\");\n });\n }\n r.info = G(e, {\n higherRanks: l,\n totalRange: g * d\n });\n return r;\n };\n w.prototype.getDateFormat = function (e, h, f, w) {\n var p = this.dateFormat(\"%m-%d %H:%M:%S.%L\", h),\n r = {\n millisecond: 15,\n second: 12,\n minute: 9,\n hour: 6,\n day: 3\n },\n l = \"millisecond\";\n for (b in c) {\n if (e === c.week && +this.dateFormat(\"%w\", h) === f && \"00:00:00.000\" === p.substr(6)) {\n var b = \"week\";\n break;\n }\n if (c[b] > e) {\n b = l;\n break;\n }\n if (r[b] && p.substr(r[b]) !== \"01-01 00:00:00.000\".substr(r[b])) break;\n \"week\" !== b && (l = b);\n }\n if (b) var g = this.resolveDTLFormat(w[b]).main;\n return g;\n };\n return w;\n }();\n \"\";\n return u;\n });\n M(a, \"Core/DefaultOptions.js\", [a[\"Core/Chart/ChartDefaults.js\"], a[\"Core/Color/Color.js\"], a[\"Core/Globals.js\"], a[\"Core/Color/Palettes.js\"], a[\"Core/Time.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G) {\n u = u.parse;\n var v = G.merge,\n A = {\n colors: F.colors,\n symbols: [\"circle\", \"diamond\", \"square\", \"triangle\", \"triangle-down\"],\n lang: {\n loading: \"Loading...\",\n months: \"January February March April May June July August September October November December\".split(\" \"),\n shortMonths: \"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\".split(\" \"),\n weekdays: \"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),\n decimalPoint: \".\",\n numericSymbols: \"kMGTPE\".split(\"\"),\n resetZoom: \"Reset zoom\",\n resetZoomTitle: \"Reset zoom level 1:1\",\n thousandsSep: \" \"\n },\n global: {},\n time: {\n Date: void 0,\n getTimezoneOffset: void 0,\n timezone: void 0,\n timezoneOffset: 0,\n useUTC: !0\n },\n chart: a,\n title: {\n text: \"Chart title\",\n align: \"center\",\n margin: 15,\n widthAdjust: -44\n },\n subtitle: {\n text: \"\",\n align: \"center\",\n widthAdjust: -44\n },\n caption: {\n margin: 15,\n text: \"\",\n align: \"left\",\n verticalAlign: \"bottom\"\n },\n plotOptions: {},\n labels: {\n style: {\n position: \"absolute\",\n color: \"#333333\"\n }\n },\n legend: {\n enabled: !0,\n align: \"center\",\n alignColumns: !0,\n className: \"highcharts-no-tooltip\",\n layout: \"horizontal\",\n labelFormatter: function () {\n return this.name;\n },\n borderColor: \"#999999\",\n borderRadius: 0,\n navigation: {\n activeColor: \"#003399\",\n inactiveColor: \"#cccccc\"\n },\n itemStyle: {\n color: \"#333333\",\n cursor: \"pointer\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textOverflow: \"ellipsis\"\n },\n itemHoverStyle: {\n color: \"#000000\"\n },\n itemHiddenStyle: {\n color: \"#cccccc\"\n },\n shadow: !1,\n itemCheckboxStyle: {\n position: \"absolute\",\n width: \"13px\",\n height: \"13px\"\n },\n squareSymbol: !0,\n symbolPadding: 5,\n verticalAlign: \"bottom\",\n x: 0,\n y: 0,\n title: {\n style: {\n fontWeight: \"bold\"\n }\n }\n },\n loading: {\n labelStyle: {\n fontWeight: \"bold\",\n position: \"relative\",\n top: \"45%\"\n },\n style: {\n position: \"absolute\",\n backgroundColor: \"#ffffff\",\n opacity: .5,\n textAlign: \"center\"\n }\n },\n tooltip: {\n enabled: !0,\n animation: z.svg,\n borderRadius: 3,\n dateTimeLabelFormats: {\n millisecond: \"%A, %b %e, %H:%M:%S.%L\",\n second: \"%A, %b %e, %H:%M:%S\",\n minute: \"%A, %b %e, %H:%M\",\n hour: \"%A, %b %e, %H:%M\",\n day: \"%A, %b %e, %Y\",\n week: \"Week from %A, %b %e, %Y\",\n month: \"%B %Y\",\n year: \"%Y\"\n },\n footerFormat: \"\",\n headerShape: \"callout\",\n hideDelay: 500,\n padding: 8,\n shape: \"callout\",\n shared: !1,\n snap: z.isTouchDevice ? 25 : 10,\n headerFormat: '<span style=\"font-size: 10px\">{point.key}</span><br/>',\n pointFormat: '<span style=\"color:{point.color}\">\\u25cf</span> {series.name}: <b>{point.y}</b><br/>',\n backgroundColor: u(\"#f7f7f7\").setOpacity(.85).get(),\n borderWidth: 1,\n shadow: !0,\n stickOnContact: !1,\n style: {\n color: \"#333333\",\n cursor: \"default\",\n fontSize: \"12px\",\n whiteSpace: \"nowrap\"\n },\n useHTML: !1\n },\n credits: {\n enabled: !0,\n href: \"https://www.highcharts.com?credits\",\n position: {\n align: \"right\",\n x: -10,\n verticalAlign: \"bottom\",\n y: -5\n },\n style: {\n cursor: \"pointer\",\n color: \"#999999\",\n fontSize: \"9px\"\n },\n text: \"Highcharts.com\"\n }\n };\n A.chart.styledMode = !1;\n \"\";\n var q = new y(v(A.global, A.time));\n a = {\n defaultOptions: A,\n defaultTime: q,\n getOptions: function () {\n return A;\n },\n setOptions: function (n) {\n v(!0, A, n);\n if (n.time || n.global) z.time ? z.time.update(v(A.global, A.time, n.global, n.time)) : z.time = q;\n return A;\n }\n };\n \"\";\n return a;\n });\n M(a, \"Core/Animation/Fx.js\", [a[\"Core/Color/Color.js\"], a[\"Core/Globals.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = a.parse,\n y = u.win,\n G = z.isNumber,\n H = z.objectEach;\n return function () {\n function a(a, n, k) {\n this.pos = NaN;\n this.options = n;\n this.elem = a;\n this.prop = k;\n }\n a.prototype.dSetter = function () {\n var a = this.paths,\n n = a && a[0];\n a = a && a[1];\n var k = this.now || 0,\n e = [];\n if (1 !== k && n && a) {\n if (n.length === a.length && 1 > k) for (var c = 0; c < a.length; c++) {\n for (var h = n[c], f = a[c], w = [], p = 0; p < f.length; p++) {\n var B = h[p],\n t = f[p];\n G(B) && G(t) && (\"A\" !== f[0] || 4 !== p && 5 !== p) ? w[p] = B + k * (t - B) : w[p] = t;\n }\n e.push(w);\n } else e = a;\n } else e = this.toD || [];\n this.elem.attr(\"d\", e, void 0, !0);\n };\n a.prototype.update = function () {\n var a = this.elem,\n n = this.prop,\n k = this.now,\n e = this.options.step;\n if (this[n + \"Setter\"]) this[n + \"Setter\"]();else a.attr ? a.element && a.attr(n, k, null, !0) : a.style[n] = k + this.unit;\n e && e.call(a, k, this);\n };\n a.prototype.run = function (q, n, k) {\n var e = this,\n c = e.options,\n h = function (c) {\n return h.stopped ? !1 : e.step(c);\n },\n f = y.requestAnimationFrame || function (c) {\n setTimeout(c, 13);\n },\n w = function () {\n for (var c = 0; c < a.timers.length; c++) a.timers[c]() || a.timers.splice(c--, 1);\n a.timers.length && f(w);\n };\n q !== n || this.elem[\"forceAnimate:\" + this.prop] ? (this.startTime = +new Date(), this.start = q, this.end = n, this.unit = k, this.now = this.start, this.pos = 0, h.elem = this.elem, h.prop = this.prop, h() && 1 === a.timers.push(h) && f(w)) : (delete c.curAnim[this.prop], c.complete && 0 === Object.keys(c.curAnim).length && c.complete.call(this.elem));\n };\n a.prototype.step = function (a) {\n var n = +new Date(),\n k = this.options,\n e = this.elem,\n c = k.complete,\n h = k.duration,\n f = k.curAnim;\n if (e.attr && !e.element) a = !1;else if (a || n >= h + this.startTime) {\n this.now = this.end;\n this.pos = 1;\n this.update();\n var w = f[this.prop] = !0;\n H(f, function (c) {\n !0 !== c && (w = !1);\n });\n w && c && c.call(e);\n a = !1;\n } else this.pos = k.easing((n - this.startTime) / h), this.now = this.start + (this.end - this.start) * this.pos, this.update(), a = !0;\n return a;\n };\n a.prototype.initPath = function (a, n, k) {\n function e(c, e) {\n for (; c.length < J;) {\n var l = c[0],\n b = e[J - c.length];\n b && \"M\" === l[0] && (c[0] = \"C\" === b[0] ? [\"C\", l[1], l[2], l[1], l[2], l[1], l[2]] : [\"L\", l[1], l[2]]);\n c.unshift(l);\n w && (l = c.pop(), c.push(c[c.length - 1], l));\n }\n }\n function c(c, e) {\n for (; c.length < J;) if (e = c[Math.floor(c.length / p) - 1].slice(), \"C\" === e[0] && (e[1] = e[5], e[2] = e[6]), w) {\n var l = c[Math.floor(c.length / p)].slice();\n c.splice(c.length / 2, 0, e, l);\n } else c.push(e);\n }\n var h = a.startX,\n f = a.endX;\n k = k.slice();\n var w = a.isArea,\n p = w ? 2 : 1;\n n = n && n.slice();\n if (!n) return [k, k];\n if (h && f && f.length) {\n for (a = 0; a < h.length; a++) if (h[a] === f[0]) {\n var B = a;\n break;\n } else if (h[0] === f[f.length - h.length + a]) {\n B = a;\n var t = !0;\n break;\n } else if (h[h.length - 1] === f[f.length - h.length + a]) {\n B = h.length - a;\n break;\n }\n \"undefined\" === typeof B && (n = []);\n }\n if (n.length && G(B)) {\n var J = k.length + B * p;\n t ? (e(n, k), c(k, n)) : (e(k, n), c(n, k));\n }\n return [n, k];\n };\n a.prototype.fillSetter = function () {\n a.prototype.strokeSetter.apply(this, arguments);\n };\n a.prototype.strokeSetter = function () {\n this.elem.attr(this.prop, v(this.start).tweenTo(v(this.end), this.pos), void 0, !0);\n };\n a.timers = [];\n return a;\n }();\n });\n M(a, \"Core/Animation/AnimationUtilities.js\", [a[\"Core/Animation/Fx.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n function v(c) {\n return q(c) ? n({\n duration: 500,\n defer: 0\n }, c) : {\n duration: c ? 500 : 0,\n defer: 0\n };\n }\n function F(c, e) {\n for (var h = a.timers.length; h--;) a.timers[h].elem !== c || e && e !== a.timers[h].prop || (a.timers[h].stopped = !0);\n }\n var y = u.defined,\n G = u.getStyle,\n H = u.isArray,\n A = u.isNumber,\n q = u.isObject,\n n = u.merge,\n k = u.objectEach,\n e = u.pick;\n return {\n animate: function (c, e, f) {\n var h,\n p = \"\",\n B,\n t;\n if (!q(f)) {\n var J = arguments;\n f = {\n duration: J[2],\n easing: J[3],\n complete: J[4]\n };\n }\n A(f.duration) || (f.duration = 400);\n f.easing = \"function\" === typeof f.easing ? f.easing : Math[f.easing] || Math.easeInOutSine;\n f.curAnim = n(e);\n k(e, function (k, r) {\n F(c, r);\n t = new a(c, f, r);\n B = void 0;\n \"d\" === r && H(e.d) ? (t.paths = t.initPath(c, c.pathArray, e.d), t.toD = e.d, h = 0, B = 1) : c.attr ? h = c.attr(r) : (h = parseFloat(G(c, r)) || 0, \"opacity\" !== r && (p = \"px\"));\n B || (B = k);\n \"string\" === typeof B && B.match(\"px\") && (B = B.replace(/px/g, \"\"));\n t.run(h, B, p);\n });\n },\n animObject: v,\n getDeferredAnimation: function (c, e, f) {\n var h = v(e),\n p = 0,\n a = 0;\n (f ? [f] : c.series).forEach(function (c) {\n c = v(c.options.animation);\n p = e && y(e.defer) ? h.defer : Math.max(p, c.duration + c.defer);\n a = Math.min(h.duration, c.duration);\n });\n c.renderer.forExport && (p = 0);\n return {\n defer: Math.max(0, p - a),\n duration: Math.min(p, a)\n };\n },\n setAnimation: function (c, h) {\n h.renderer.globalAnimation = e(c, h.options.chart.animation, !0);\n },\n stop: F\n };\n });\n M(a, \"Core/Renderer/HTML/AST.js\", [a[\"Core/Globals.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n var v = a.SVG_NS,\n F = u.attr,\n y = u.createElement,\n G = u.error,\n H = u.isFunction,\n A = u.isString,\n q = u.objectEach,\n n = u.splat,\n k = (u = a.win.trustedTypes) && H(u.createPolicy) && u.createPolicy(\"highcharts\", {\n createHTML: function (c) {\n return c;\n }\n }),\n e = k ? k.createHTML(\"\") : \"\";\n try {\n var c = !!new DOMParser().parseFromString(e, \"text/html\");\n } catch (h) {\n c = !1;\n }\n H = function () {\n function h(c) {\n this.nodes = \"string\" === typeof c ? this.parseMarkup(c) : c;\n }\n h.filterUserAttributes = function (c) {\n q(c, function (e, p) {\n var f = !0;\n -1 === h.allowedAttributes.indexOf(p) && (f = !1);\n -1 !== [\"background\", \"dynsrc\", \"href\", \"lowsrc\", \"src\"].indexOf(p) && (f = A(e) && h.allowedReferences.some(function (c) {\n return 0 === e.indexOf(c);\n }));\n f || (G(\"Highcharts warning: Invalid attribute '\" + p + \"' in config\"), delete c[p]);\n });\n return c;\n };\n h.setElementHTML = function (c, e) {\n c.innerHTML = h.emptyHTML;\n e && new h(e).addToDOM(c);\n };\n h.prototype.addToDOM = function (c) {\n function e(c, f) {\n var p;\n n(c).forEach(function (c) {\n var t = c.tagName,\n r = c.textContent ? a.doc.createTextNode(c.textContent) : void 0;\n if (t) if (\"#text\" === t) var l = r;else if (-1 !== h.allowedTags.indexOf(t)) {\n t = a.doc.createElementNS(\"svg\" === t ? v : f.namespaceURI || v, t);\n var b = c.attributes || {};\n q(c, function (c, d) {\n \"tagName\" !== d && \"attributes\" !== d && \"children\" !== d && \"textContent\" !== d && (b[d] = c);\n });\n F(t, h.filterUserAttributes(b));\n r && t.appendChild(r);\n e(c.children || [], t);\n l = t;\n } else G(\"Highcharts warning: Invalid tagName \" + t + \" in config\");\n l && f.appendChild(l);\n p = l;\n });\n return p;\n }\n return e(this.nodes, c);\n };\n h.prototype.parseMarkup = function (e) {\n var h = [];\n e = e.trim();\n if (c) e = new DOMParser().parseFromString(k ? k.createHTML(e) : e, \"text/html\");else {\n var p = y(\"div\");\n p.innerHTML = e;\n e = {\n body: p\n };\n }\n var f = function (c, e) {\n var h = c.nodeName.toLowerCase(),\n r = {\n tagName: h\n };\n \"#text\" === h && (r.textContent = c.textContent || \"\");\n if (h = c.attributes) {\n var l = {};\n [].forEach.call(h, function (b) {\n l[b.name] = b.value;\n });\n r.attributes = l;\n }\n if (c.childNodes.length) {\n var b = [];\n [].forEach.call(c.childNodes, function (c) {\n f(c, b);\n });\n b.length && (r.children = b);\n }\n e.push(r);\n };\n [].forEach.call(e.body.childNodes, function (c) {\n return f(c, h);\n });\n return h;\n };\n h.allowedAttributes = \"aria-controls aria-describedby aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-pressed aria-readonly aria-roledescription aria-selected class clip-path color colspan cx cy d dx dy disabled fill height href id in markerHeight markerWidth offset opacity orient padding paddingLeft paddingRight patternUnits r refX refY role scope slope src startOffset stdDeviation stroke stroke-linecap stroke-width style tableValues result rowspan summary target tabindex text-align textAnchor textLength title type valign width x x1 x2 y y1 y2 zIndex\".split(\" \");\n h.allowedReferences = \"https:// http:// mailto: / ../ ./ #\".split(\" \");\n h.allowedTags = \"a abbr b br button caption circle clipPath code dd defs div dl dt em feComponentTransfer feFuncA feFuncB feFuncG feFuncR feGaussianBlur feOffset feMerge feMergeNode filter h1 h2 h3 h4 h5 h6 hr i img li linearGradient marker ol p path pattern pre rect small span stop strong style sub sup svg table text thead tbody tspan td th tr u ul #text\".split(\" \");\n h.emptyHTML = e;\n return h;\n }();\n \"\";\n return H;\n });\n M(a, \"Core/FormatUtilities.js\", [a[\"Core/DefaultOptions.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n function v(a, k, e, c) {\n a = +a || 0;\n k = +k;\n var h = F.lang,\n f = (a.toString().split(\".\")[1] || \"\").split(\"e\")[0].length,\n w = a.toString().split(\"e\"),\n p = k;\n if (-1 === k) k = Math.min(f, 20);else if (!H(k)) k = 2;else if (k && w[1] && 0 > w[1]) {\n var B = k + +w[1];\n 0 <= B ? (w[0] = (+w[0]).toExponential(B).split(\"e\")[0], k = B) : (w[0] = w[0].split(\".\")[0] || 0, a = 20 > k ? (w[0] * Math.pow(10, w[1])).toFixed(k) : 0, w[1] = 0);\n }\n B = (Math.abs(w[1] ? w[0] : a) + Math.pow(10, -Math.max(k, f) - 1)).toFixed(k);\n f = String(q(B));\n var t = 3 < f.length ? f.length % 3 : 0;\n e = A(e, h.decimalPoint);\n c = A(c, h.thousandsSep);\n a = (0 > a ? \"-\" : \"\") + (t ? f.substr(0, t) + c : \"\");\n a = 0 > +w[1] && !p ? \"0\" : a + f.substr(t).replace(/(\\d{3})(?=\\d)/g, \"$1\" + c);\n k && (a += e + B.slice(-k));\n w[1] && 0 !== +a && (a += \"e\" + w[1]);\n return a;\n }\n var F = a.defaultOptions,\n y = a.defaultTime,\n G = u.getNestedProperty,\n H = u.isNumber,\n A = u.pick,\n q = u.pInt;\n return {\n dateFormat: function (a, k, e) {\n return y.dateFormat(a, k, e);\n },\n format: function (a, k, e) {\n var c = \"{\",\n h = !1,\n f = /f$/,\n w = /\\.([0-9])/,\n p = F.lang,\n B = e && e.time || y;\n e = e && e.numberFormatter || v;\n for (var t = []; a;) {\n var J = a.indexOf(c);\n if (-1 === J) break;\n var C = a.slice(0, J);\n if (h) {\n C = C.split(\":\");\n c = G(C.shift() || \"\", k);\n if (C.length && \"number\" === typeof c) if (C = C.join(\":\"), f.test(C)) {\n var r = parseInt((C.match(w) || [\"\", \"-1\"])[1], 10);\n null !== c && (c = e(c, r, p.decimalPoint, -1 < C.indexOf(\",\") ? p.thousandsSep : \"\"));\n } else c = B.dateFormat(C, c);\n t.push(c);\n } else t.push(C);\n a = a.slice(J + 1);\n c = (h = !h) ? \"}\" : \"{\";\n }\n t.push(a);\n return t.join(\"\");\n },\n numberFormat: v\n };\n });\n M(a, \"Core/Renderer/RendererUtilities.js\", [a[\"Core/Utilities.js\"]], function (a) {\n var v = a.clamp,\n z = a.pick,\n F = a.stableSort,\n y;\n (function (a) {\n function u(a, q, n) {\n var k = a,\n e = k.reducedLen || q,\n c = function (c, e) {\n return (e.rank || 0) - (c.rank || 0);\n },\n h = function (c, e) {\n return c.target - e.target;\n },\n f,\n w = !0,\n p = [],\n B = 0;\n for (f = a.length; f--;) B += a[f].size;\n if (B > e) {\n F(a, c);\n for (B = f = 0; B <= e;) B += a[f].size, f++;\n p = a.splice(f - 1, a.length);\n }\n F(a, h);\n for (a = a.map(function (c) {\n return {\n size: c.size,\n targets: [c.target],\n align: z(c.align, .5)\n };\n }); w;) {\n for (f = a.length; f--;) e = a[f], c = (Math.min.apply(0, e.targets) + Math.max.apply(0, e.targets)) / 2, e.pos = v(c - e.size * e.align, 0, q - e.size);\n f = a.length;\n for (w = !1; f--;) 0 < f && a[f - 1].pos + a[f - 1].size > a[f].pos && (a[f - 1].size += a[f].size, a[f - 1].targets = a[f - 1].targets.concat(a[f].targets), a[f - 1].align = .5, a[f - 1].pos + a[f - 1].size > q && (a[f - 1].pos = q - a[f - 1].size), a.splice(f, 1), w = !0);\n }\n k.push.apply(k, p);\n f = 0;\n a.some(function (c) {\n var e = 0;\n return (c.targets || []).some(function () {\n k[f].pos = c.pos + e;\n if (\"undefined\" !== typeof n && Math.abs(k[f].pos - k[f].target) > n) return k.slice(0, f + 1).forEach(function (c) {\n return delete c.pos;\n }), k.reducedLen = (k.reducedLen || q) - .1 * q, k.reducedLen > .1 * q && u(k, q, n), !0;\n e += k[f].size;\n f++;\n return !1;\n });\n });\n F(k, h);\n return k;\n }\n a.distribute = u;\n })(y || (y = {}));\n return y;\n });\n M(a, \"Core/Renderer/SVG/SVGElement.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/Renderer/HTML/AST.js\"], a[\"Core/Color/Color.js\"], a[\"Core/Globals.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y) {\n var v = a.animate,\n H = a.animObject,\n A = a.stop,\n q = F.deg2rad,\n n = F.doc,\n k = F.noop,\n e = F.svg,\n c = F.SVG_NS,\n h = F.win,\n f = y.addEvent,\n w = y.attr,\n p = y.createElement,\n B = y.css,\n t = y.defined,\n J = y.erase,\n C = y.extend,\n r = y.fireEvent,\n l = y.isArray,\n b = y.isFunction,\n g = y.isNumber,\n d = y.isString,\n m = y.merge,\n D = y.objectEach,\n x = y.pick,\n I = y.pInt,\n P = y.syncTimeout,\n S = y.uniqueKey;\n a = function () {\n function a() {\n this.element = void 0;\n this.onEvents = {};\n this.opacity = 1;\n this.renderer = void 0;\n this.SVG_NS = c;\n this.symbolCustomAttribs = \"x y width height r start end innerR anchorX anchorY rounded\".split(\" \");\n }\n a.prototype._defaultGetter = function (b) {\n b = x(this[b + \"Value\"], this[b], this.element ? this.element.getAttribute(b) : null, 0);\n /^[\\-0-9\\.]+$/.test(b) && (b = parseFloat(b));\n return b;\n };\n a.prototype._defaultSetter = function (b, d, c) {\n c.setAttribute(d, b);\n };\n a.prototype.add = function (b) {\n var d = this.renderer,\n c = this.element;\n b && (this.parentGroup = b);\n this.parentInverted = b && b.inverted;\n \"undefined\" !== typeof this.textStr && \"text\" === this.element.nodeName && d.buildText(this);\n this.added = !0;\n if (!b || b.handleZ || this.zIndex) var g = this.zIndexSetter();\n g || (b ? b.element : d.box).appendChild(c);\n if (this.onAdd) this.onAdd();\n return this;\n };\n a.prototype.addClass = function (b, d) {\n var c = d ? \"\" : this.attr(\"class\") || \"\";\n b = (b || \"\").split(/ /g).reduce(function (b, d) {\n -1 === c.indexOf(d) && b.push(d);\n return b;\n }, c ? [c] : []).join(\" \");\n b !== c && this.attr(\"class\", b);\n return this;\n };\n a.prototype.afterSetters = function () {\n this.doTransform && (this.updateTransform(), this.doTransform = !1);\n };\n a.prototype.align = function (b, c, g) {\n var m = {},\n L = this.renderer,\n e = L.alignedObjects,\n l,\n a,\n E;\n if (b) {\n if (this.alignOptions = b, this.alignByTranslate = c, !g || d(g)) this.alignTo = l = g || \"renderer\", J(e, this), e.push(this), g = void 0;\n } else b = this.alignOptions, c = this.alignByTranslate, l = this.alignTo;\n g = x(g, L[l], \"scrollablePlotBox\" === l ? L.plotBox : void 0, L);\n l = b.align;\n var r = b.verticalAlign;\n L = (g.x || 0) + (b.x || 0);\n e = (g.y || 0) + (b.y || 0);\n \"right\" === l ? a = 1 : \"center\" === l && (a = 2);\n a && (L += (g.width - (b.width || 0)) / a);\n m[c ? \"translateX\" : \"x\"] = Math.round(L);\n \"bottom\" === r ? E = 1 : \"middle\" === r && (E = 2);\n E && (e += (g.height - (b.height || 0)) / E);\n m[c ? \"translateY\" : \"y\"] = Math.round(e);\n this[this.placed ? \"animate\" : \"attr\"](m);\n this.placed = !0;\n this.alignAttr = m;\n return this;\n };\n a.prototype.alignSetter = function (b) {\n var d = {\n left: \"start\",\n center: \"middle\",\n right: \"end\"\n };\n d[b] && (this.alignValue = b, this.element.setAttribute(\"text-anchor\", d[b]));\n };\n a.prototype.animate = function (b, d, c) {\n var g = this,\n m = H(x(d, this.renderer.globalAnimation, !0));\n d = m.defer;\n x(n.hidden, n.msHidden, n.webkitHidden, !1) && (m.duration = 0);\n 0 !== m.duration ? (c && (m.complete = c), P(function () {\n g.element && v(g, b, m);\n }, d)) : (this.attr(b, void 0, c), D(b, function (b, d) {\n m.step && m.step.call(this, b, {\n prop: d,\n pos: 1,\n elem: this\n });\n }, this));\n return this;\n };\n a.prototype.applyTextOutline = function (b) {\n var d = this.element;\n -1 !== b.indexOf(\"contrast\") && (b = b.replace(/contrast/g, this.renderer.getContrast(d.style.fill)));\n var g = b.split(\" \");\n b = g[g.length - 1];\n if ((g = g[0]) && \"none\" !== g && F.svg) {\n this.fakeTS = !0;\n this.ySetter = this.xSetter;\n g = g.replace(/(^[\\d\\.]+)(.*?)$/g, function (b, d, c) {\n return 2 * Number(d) + c;\n });\n this.removeTextOutline();\n var m = n.createElementNS(c, \"tspan\");\n w(m, {\n \"class\": \"highcharts-text-outline\",\n fill: b,\n stroke: b,\n \"stroke-width\": g,\n \"stroke-linejoin\": \"round\"\n });\n [].forEach.call(d.childNodes, function (b) {\n var d = b.cloneNode(!0);\n d.removeAttribute && [\"fill\", \"stroke\", \"stroke-width\", \"stroke\"].forEach(function (b) {\n return d.removeAttribute(b);\n });\n m.appendChild(d);\n });\n var e = n.createElementNS(c, \"tspan\");\n e.textContent = \"\\u200b\";\n [\"x\", \"y\"].forEach(function (b) {\n var c = d.getAttribute(b);\n c && e.setAttribute(b, c);\n });\n m.appendChild(e);\n d.insertBefore(m, d.firstChild);\n }\n };\n a.prototype.attr = function (b, d, c, g) {\n var m = this.element,\n e = this.symbolCustomAttribs,\n L,\n l = this,\n E,\n a;\n if (\"string\" === typeof b && \"undefined\" !== typeof d) {\n var K = b;\n b = {};\n b[K] = d;\n }\n \"string\" === typeof b ? l = (this[b + \"Getter\"] || this._defaultGetter).call(this, b, m) : (D(b, function (d, c) {\n E = !1;\n g || A(this, c);\n this.symbolName && -1 !== e.indexOf(c) && (L || (this.symbolAttr(b), L = !0), E = !0);\n !this.rotation || \"x\" !== c && \"y\" !== c || (this.doTransform = !0);\n E || (a = this[c + \"Setter\"] || this._defaultSetter, a.call(this, d, c, m), !this.styledMode && this.shadows && /^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c) && this.updateShadows(c, d, a));\n }, this), this.afterSetters());\n c && c.call(this);\n return l;\n };\n a.prototype.clip = function (b) {\n return this.attr(\"clip-path\", b ? \"url(\" + this.renderer.url + \"#\" + b.id + \")\" : \"none\");\n };\n a.prototype.crisp = function (b, d) {\n d = d || b.strokeWidth || 0;\n var c = Math.round(d) % 2 / 2;\n b.x = Math.floor(b.x || this.x || 0) + c;\n b.y = Math.floor(b.y || this.y || 0) + c;\n b.width = Math.floor((b.width || this.width || 0) - 2 * c);\n b.height = Math.floor((b.height || this.height || 0) - 2 * c);\n t(b.strokeWidth) && (b.strokeWidth = d);\n return b;\n };\n a.prototype.complexColor = function (b, d, c) {\n var g = this.renderer,\n e,\n L,\n a,\n h,\n E,\n x,\n p,\n f,\n k,\n w,\n B = [],\n I;\n r(this.renderer, \"complexColor\", {\n args: arguments\n }, function () {\n b.radialGradient ? L = \"radialGradient\" : b.linearGradient && (L = \"linearGradient\");\n if (L) {\n a = b[L];\n E = g.gradients;\n x = b.stops;\n k = c.radialReference;\n l(a) && (b[L] = a = {\n x1: a[0],\n y1: a[1],\n x2: a[2],\n y2: a[3],\n gradientUnits: \"userSpaceOnUse\"\n });\n \"radialGradient\" === L && k && !t(a.gradientUnits) && (h = a, a = m(a, g.getRadialAttr(k, h), {\n gradientUnits: \"userSpaceOnUse\"\n }));\n D(a, function (b, d) {\n \"id\" !== d && B.push(d, b);\n });\n D(x, function (b) {\n B.push(b);\n });\n B = B.join(\",\");\n if (E[B]) w = E[B].attr(\"id\");else {\n a.id = w = S();\n var K = E[B] = g.createElement(L).attr(a).add(g.defs);\n K.radAttr = h;\n K.stops = [];\n x.forEach(function (b) {\n 0 === b[1].indexOf(\"rgba\") ? (e = z.parse(b[1]), p = e.get(\"rgb\"), f = e.get(\"a\")) : (p = b[1], f = 1);\n b = g.createElement(\"stop\").attr({\n offset: b[0],\n \"stop-color\": p,\n \"stop-opacity\": f\n }).add(K);\n K.stops.push(b);\n });\n }\n I = \"url(\" + g.url + \"#\" + w + \")\";\n c.setAttribute(d, I);\n c.gradient = B;\n b.toString = function () {\n return I;\n };\n }\n });\n };\n a.prototype.css = function (b) {\n var d = this.styles,\n c = {},\n g = this.element,\n m = [\"textOutline\", \"textOverflow\", \"width\"],\n a = \"\",\n l = !d;\n b && b.color && (b.fill = b.color);\n d && D(b, function (b, g) {\n d && d[g] !== b && (c[g] = b, l = !0);\n });\n if (l) {\n d && (b = C(d, c));\n if (b) if (null === b.width || \"auto\" === b.width) delete this.textWidth;else if (\"text\" === g.nodeName.toLowerCase() && b.width) var r = this.textWidth = I(b.width);\n this.styles = b;\n r && !e && this.renderer.forExport && delete b.width;\n if (g.namespaceURI === this.SVG_NS) {\n var E = function (b, d) {\n return \"-\" + d.toLowerCase();\n };\n D(b, function (b, d) {\n -1 === m.indexOf(d) && (a += d.replace(/([A-Z])/g, E) + \":\" + b + \";\");\n });\n a && w(g, \"style\", a);\n } else B(g, b);\n this.added && (\"text\" === this.element.nodeName && this.renderer.buildText(this), b && b.textOutline && this.applyTextOutline(b.textOutline));\n }\n return this;\n };\n a.prototype.dashstyleSetter = function (b) {\n var d = this[\"stroke-width\"];\n \"inherit\" === d && (d = 1);\n if (b = b && b.toLowerCase()) {\n var c = b.replace(\"shortdashdotdot\", \"3,1,1,1,1,1,\").replace(\"shortdashdot\", \"3,1,1,1\").replace(\"shortdot\", \"1,1,\").replace(\"shortdash\", \"3,1,\").replace(\"longdash\", \"8,3,\").replace(/dot/g, \"1,3,\").replace(\"dash\", \"4,3,\").replace(/,$/, \"\").split(\",\");\n for (b = c.length; b--;) c[b] = \"\" + I(c[b]) * x(d, NaN);\n b = c.join(\",\").replace(/NaN/g, \"none\");\n this.element.setAttribute(\"stroke-dasharray\", b);\n }\n };\n a.prototype.destroy = function () {\n var b = this,\n d = b.element || {},\n c = b.renderer,\n g = d.ownerSVGElement,\n m = c.isSVG && \"SPAN\" === d.nodeName && b.parentGroup || void 0;\n d.onclick = d.onmouseout = d.onmouseover = d.onmousemove = d.point = null;\n A(b);\n if (b.clipPath && g) {\n var e = b.clipPath;\n [].forEach.call(g.querySelectorAll(\"[clip-path],[CLIP-PATH]\"), function (b) {\n -1 < b.getAttribute(\"clip-path\").indexOf(e.element.id) && b.removeAttribute(\"clip-path\");\n });\n b.clipPath = e.destroy();\n }\n if (b.stops) {\n for (g = 0; g < b.stops.length; g++) b.stops[g].destroy();\n b.stops.length = 0;\n b.stops = void 0;\n }\n b.safeRemoveChild(d);\n for (c.styledMode || b.destroyShadows(); m && m.div && 0 === m.div.childNodes.length;) d = m.parentGroup, b.safeRemoveChild(m.div), delete m.div, m = d;\n b.alignTo && J(c.alignedObjects, b);\n D(b, function (d, c) {\n b[c] && b[c].parentGroup === b && b[c].destroy && b[c].destroy();\n delete b[c];\n });\n };\n a.prototype.destroyShadows = function () {\n (this.shadows || []).forEach(function (b) {\n this.safeRemoveChild(b);\n }, this);\n this.shadows = void 0;\n };\n a.prototype.destroyTextPath = function (b, d) {\n var c = b.getElementsByTagName(\"text\")[0];\n if (c) {\n if (c.removeAttribute(\"dx\"), c.removeAttribute(\"dy\"), d.element.setAttribute(\"id\", \"\"), this.textPathWrapper && c.getElementsByTagName(\"textPath\").length) {\n for (b = this.textPathWrapper.element.childNodes; b.length;) c.appendChild(b[0]);\n c.removeChild(this.textPathWrapper.element);\n }\n } else if (b.getAttribute(\"dx\") || b.getAttribute(\"dy\")) b.removeAttribute(\"dx\"), b.removeAttribute(\"dy\");\n this.textPathWrapper && (this.textPathWrapper = this.textPathWrapper.destroy());\n };\n a.prototype.dSetter = function (b, d, c) {\n l(b) && (\"string\" === typeof b[0] && (b = this.renderer.pathToSegments(b)), this.pathArray = b, b = b.reduce(function (b, d, c) {\n return d && d.join ? (c ? b + \" \" : \"\") + d.join(\" \") : (d || \"\").toString();\n }, \"\"));\n /(NaN| {2}|^$)/.test(b) && (b = \"M 0 0\");\n this[d] !== b && (c.setAttribute(d, b), this[d] = b);\n };\n a.prototype.fadeOut = function (b) {\n var d = this;\n d.animate({\n opacity: 0\n }, {\n duration: x(b, 150),\n complete: function () {\n d.attr({\n y: -9999\n }).hide();\n }\n });\n };\n a.prototype.fillSetter = function (b, d, c) {\n \"string\" === typeof b ? c.setAttribute(d, b) : b && this.complexColor(b, d, c);\n };\n a.prototype.getBBox = function (d, c) {\n var g = this.renderer,\n m = this.element,\n e = this.styles,\n l = this.textStr,\n r = g.cache,\n h = g.cacheKeys,\n E = m.namespaceURI === this.SVG_NS;\n c = x(c, this.rotation, 0);\n var p = g.styledMode ? m && a.prototype.getStyle.call(m, \"font-size\") : e && e.fontSize,\n f;\n if (t(l)) {\n var D = l.toString();\n -1 === D.indexOf(\"<\") && (D = D.replace(/[0-9]/g, \"0\"));\n D += [\"\", c, p, this.textWidth, e && e.textOverflow, e && e.fontWeight].join();\n }\n D && !d && (f = r[D]);\n if (!f) {\n if (E || g.forExport) {\n try {\n var k = this.fakeTS && function (b) {\n var d = m.querySelector(\".highcharts-text-outline\");\n d && B(d, {\n display: b\n });\n };\n b(k) && k(\"none\");\n f = m.getBBox ? C({}, m.getBBox()) : {\n width: m.offsetWidth,\n height: m.offsetHeight\n };\n b(k) && k(\"\");\n } catch (X) {\n \"\";\n }\n if (!f || 0 > f.width) f = {\n width: 0,\n height: 0\n };\n } else f = this.htmlGetBBox();\n g.isSVG && (d = f.width, g = f.height, E && (f.height = g = {\n \"11px,17\": 14,\n \"13px,20\": 16\n }[(p || \"\") + \",\" + Math.round(g)] || g), c && (E = c * q, f.width = Math.abs(g * Math.sin(E)) + Math.abs(d * Math.cos(E)), f.height = Math.abs(g * Math.cos(E)) + Math.abs(d * Math.sin(E))));\n if (D && (\"\" === l || 0 < f.height)) {\n for (; 250 < h.length;) delete r[h.shift()];\n r[D] || h.push(D);\n r[D] = f;\n }\n }\n return f;\n };\n a.prototype.getStyle = function (b) {\n return h.getComputedStyle(this.element || this, \"\").getPropertyValue(b);\n };\n a.prototype.hasClass = function (b) {\n return -1 !== (\"\" + this.attr(\"class\")).split(\" \").indexOf(b);\n };\n a.prototype.hide = function (b) {\n b ? this.attr({\n y: -9999\n }) : this.attr({\n visibility: \"hidden\"\n });\n return this;\n };\n a.prototype.htmlGetBBox = function () {\n return {\n height: 0,\n width: 0,\n x: 0,\n y: 0\n };\n };\n a.prototype.init = function (b, d) {\n this.element = \"span\" === d ? p(d) : n.createElementNS(this.SVG_NS, d);\n this.renderer = b;\n r(this, \"afterInit\");\n };\n a.prototype.invert = function (b) {\n this.inverted = b;\n this.updateTransform();\n return this;\n };\n a.prototype.on = function (b, d) {\n var c = this.onEvents;\n if (c[b]) c[b]();\n c[b] = f(this.element, b, d);\n return this;\n };\n a.prototype.opacitySetter = function (b, d, c) {\n this.opacity = b = Number(Number(b).toFixed(3));\n c.setAttribute(d, b);\n };\n a.prototype.removeClass = function (b) {\n return this.attr(\"class\", (\"\" + this.attr(\"class\")).replace(d(b) ? new RegExp(\"(^| )\" + b + \"( |$)\") : b, \" \").replace(/ +/g, \" \").trim());\n };\n a.prototype.removeTextOutline = function () {\n var b = this.element.querySelector(\"tspan.highcharts-text-outline\");\n b && this.safeRemoveChild(b);\n };\n a.prototype.safeRemoveChild = function (b) {\n var d = b.parentNode;\n d && d.removeChild(b);\n };\n a.prototype.setRadialReference = function (b) {\n var d = this.element.gradient && this.renderer.gradients[this.element.gradient];\n this.element.radialReference = b;\n d && d.radAttr && d.animate(this.renderer.getRadialAttr(b, d.radAttr));\n return this;\n };\n a.prototype.setTextPath = function (b, d) {\n var c = this.element,\n e = this.text ? this.text.element : c,\n a = {\n textAnchor: \"text-anchor\"\n },\n l = !1,\n r = this.textPathWrapper,\n x = !r;\n d = m(!0, {\n enabled: !0,\n attributes: {\n dy: -5,\n startOffset: \"50%\",\n textAnchor: \"middle\"\n }\n }, d);\n var E = u.filterUserAttributes(d.attributes);\n if (b && d && d.enabled) {\n r && null === r.element.parentNode ? (x = !0, r = r.destroy()) : r && this.removeTextOutline.call(r.parentGroup);\n this.options && this.options.padding && (E.dx = -this.options.padding);\n r || (this.textPathWrapper = r = this.renderer.createElement(\"textPath\"), l = !0);\n var p = r.element;\n (d = b.element.getAttribute(\"id\")) || b.element.setAttribute(\"id\", d = S());\n if (x) for (e.setAttribute(\"y\", 0), g(E.dx) && e.setAttribute(\"x\", -E.dx), b = [].slice.call(e.childNodes), x = 0; x < b.length; x++) {\n var f = b[x];\n f.nodeType !== h.Node.TEXT_NODE && \"tspan\" !== f.nodeName || p.appendChild(f);\n }\n l && r && r.add({\n element: e\n });\n p.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", this.renderer.url + \"#\" + d);\n t(E.dy) && (p.parentNode.setAttribute(\"dy\", E.dy), delete E.dy);\n t(E.dx) && (p.parentNode.setAttribute(\"dx\", E.dx), delete E.dx);\n D(E, function (b, d) {\n p.setAttribute(a[d] || d, b);\n });\n c.removeAttribute(\"transform\");\n this.removeTextOutline.call(r);\n this.text && !this.renderer.styledMode && this.attr({\n fill: \"none\",\n \"stroke-width\": 0\n });\n this.applyTextOutline = this.updateTransform = k;\n } else r && (delete this.updateTransform, delete this.applyTextOutline, this.destroyTextPath(c, b), this.updateTransform(), this.options && this.options.rotation && this.applyTextOutline(this.options.style.textOutline));\n return this;\n };\n a.prototype.shadow = function (b, d, c) {\n var g = [],\n m = this.element,\n e = this.oldShadowOptions,\n a = {\n color: \"#000000\",\n offsetX: this.parentInverted ? -1 : 1,\n offsetY: this.parentInverted ? -1 : 1,\n opacity: .15,\n width: 3\n },\n l = !1,\n E;\n !0 === b ? E = a : \"object\" === typeof b && (E = C(a, b));\n E && (E && e && D(E, function (b, d) {\n b !== e[d] && (l = !0);\n }), l && this.destroyShadows(), this.oldShadowOptions = E);\n if (!E) this.destroyShadows();else if (!this.shadows) {\n var L = E.opacity / E.width;\n var r = this.parentInverted ? \"translate(\" + E.offsetY + \", \" + E.offsetX + \")\" : \"translate(\" + E.offsetX + \", \" + E.offsetY + \")\";\n for (a = 1; a <= E.width; a++) {\n var h = m.cloneNode(!1);\n var x = 2 * E.width + 1 - 2 * a;\n w(h, {\n stroke: b.color || \"#000000\",\n \"stroke-opacity\": L * a,\n \"stroke-width\": x,\n transform: r,\n fill: \"none\"\n });\n h.setAttribute(\"class\", (h.getAttribute(\"class\") || \"\") + \" highcharts-shadow\");\n c && (w(h, \"height\", Math.max(w(h, \"height\") - x, 0)), h.cutHeight = x);\n d ? d.element.appendChild(h) : m.parentNode && m.parentNode.insertBefore(h, m);\n g.push(h);\n }\n this.shadows = g;\n }\n return this;\n };\n a.prototype.show = function (b) {\n return this.attr({\n visibility: b ? \"inherit\" : \"visible\"\n });\n };\n a.prototype.strokeSetter = function (b, d, c) {\n this[d] = b;\n this.stroke && this[\"stroke-width\"] ? (a.prototype.fillSetter.call(this, this.stroke, \"stroke\", c), c.setAttribute(\"stroke-width\", this[\"stroke-width\"]), this.hasStroke = !0) : \"stroke-width\" === d && 0 === b && this.hasStroke ? (c.removeAttribute(\"stroke\"), this.hasStroke = !1) : this.renderer.styledMode && this[\"stroke-width\"] && (c.setAttribute(\"stroke-width\", this[\"stroke-width\"]), this.hasStroke = !0);\n };\n a.prototype.strokeWidth = function () {\n if (!this.renderer.styledMode) return this[\"stroke-width\"] || 0;\n var b = this.getStyle(\"stroke-width\"),\n d = 0;\n if (b.indexOf(\"px\") === b.length - 2) d = I(b);else if (\"\" !== b) {\n var g = n.createElementNS(c, \"rect\");\n w(g, {\n width: b,\n \"stroke-width\": 0\n });\n this.element.parentNode.appendChild(g);\n d = g.getBBox().width;\n g.parentNode.removeChild(g);\n }\n return d;\n };\n a.prototype.symbolAttr = function (b) {\n var d = this;\n \"x y r start end width height innerR anchorX anchorY clockwise\".split(\" \").forEach(function (c) {\n d[c] = x(b[c], d[c]);\n });\n d.attr({\n d: d.renderer.symbols[d.symbolName](d.x, d.y, d.width, d.height, d)\n });\n };\n a.prototype.textSetter = function (b) {\n b !== this.textStr && (delete this.textPxLength, this.textStr = b, this.added && this.renderer.buildText(this));\n };\n a.prototype.titleSetter = function (b) {\n var d = this.element,\n c = d.getElementsByTagName(\"title\")[0] || n.createElementNS(this.SVG_NS, \"title\");\n d.insertBefore ? d.insertBefore(c, d.firstChild) : d.appendChild(c);\n c.textContent = String(x(b, \"\")).replace(/<[^>]*>/g, \"\").replace(/</g, \"<\").replace(/>/g, \">\");\n };\n a.prototype.toFront = function () {\n var b = this.element;\n b.parentNode.appendChild(b);\n return this;\n };\n a.prototype.translate = function (b, d) {\n return this.attr({\n translateX: b,\n translateY: d\n });\n };\n a.prototype.updateShadows = function (b, d, c) {\n var g = this.shadows;\n if (g) for (var m = g.length; m--;) c.call(g[m], \"height\" === b ? Math.max(d - (g[m].cutHeight || 0), 0) : \"d\" === b ? this.d : d, b, g[m]);\n };\n a.prototype.updateTransform = function () {\n var b = this.scaleX,\n d = this.scaleY,\n c = this.inverted,\n g = this.rotation,\n m = this.matrix,\n e = this.element,\n a = this.translateX || 0,\n l = this.translateY || 0;\n c && (a += this.width, l += this.height);\n a = [\"translate(\" + a + \",\" + l + \")\"];\n t(m) && a.push(\"matrix(\" + m.join(\",\") + \")\");\n c ? a.push(\"rotate(90) scale(-1,1)\") : g && a.push(\"rotate(\" + g + \" \" + x(this.rotationOriginX, e.getAttribute(\"x\"), 0) + \" \" + x(this.rotationOriginY, e.getAttribute(\"y\") || 0) + \")\");\n (t(b) || t(d)) && a.push(\"scale(\" + x(b, 1) + \" \" + x(d, 1) + \")\");\n a.length && e.setAttribute(\"transform\", a.join(\" \"));\n };\n a.prototype.visibilitySetter = function (b, d, c) {\n \"inherit\" === b ? c.removeAttribute(d) : this[d] !== b && c.setAttribute(d, b);\n this[d] = b;\n };\n a.prototype.xGetter = function (b) {\n \"circle\" === this.element.nodeName && (\"x\" === b ? b = \"cx\" : \"y\" === b && (b = \"cy\"));\n return this._defaultGetter(b);\n };\n a.prototype.zIndexSetter = function (b, d) {\n var c = this.renderer,\n g = this.parentGroup,\n m = (g || c).element || c.box,\n e = this.element;\n c = m === c.box;\n var a = !1;\n var l = this.added;\n var E;\n t(b) ? (e.setAttribute(\"data-z-index\", b), b = +b, this[d] === b && (l = !1)) : t(this[d]) && e.removeAttribute(\"data-z-index\");\n this[d] = b;\n if (l) {\n (b = this.zIndex) && g && (g.handleZ = !0);\n d = m.childNodes;\n for (E = d.length - 1; 0 <= E && !a; E--) {\n g = d[E];\n l = g.getAttribute(\"data-z-index\");\n var r = !t(l);\n if (g !== e) if (0 > b && r && !c && !E) m.insertBefore(e, d[E]), a = !0;else if (I(l) <= b || r && (!t(b) || 0 <= b)) m.insertBefore(e, d[E + 1] || null), a = !0;\n }\n a || (m.insertBefore(e, d[c ? 3 : 0] || null), a = !0);\n }\n return a;\n };\n return a;\n }();\n a.prototype[\"stroke-widthSetter\"] = a.prototype.strokeSetter;\n a.prototype.yGetter = a.prototype.xGetter;\n a.prototype.matrixSetter = a.prototype.rotationOriginXSetter = a.prototype.rotationOriginYSetter = a.prototype.rotationSetter = a.prototype.scaleXSetter = a.prototype.scaleYSetter = a.prototype.translateXSetter = a.prototype.translateYSetter = a.prototype.verticalAlignSetter = function (b, d) {\n this[d] = b;\n this.doTransform = !0;\n };\n \"\";\n return a;\n });\n M(a, \"Core/Renderer/RendererRegistry.js\", [a[\"Core/Globals.js\"]], function (a) {\n var v;\n (function (v) {\n v.rendererTypes = {};\n var u;\n v.getRendererType = function (a) {\n void 0 === a && (a = u);\n return v.rendererTypes[a] || v.rendererTypes[u];\n };\n v.registerRendererType = function (y, z, H) {\n v.rendererTypes[y] = z;\n if (!u || H) u = y, a.Renderer = z;\n };\n })(v || (v = {}));\n return v;\n });\n M(a, \"Core/Renderer/SVG/SVGLabel.js\", [a[\"Core/Renderer/SVG/SVGElement.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n var v = this && this.__extends || function () {\n var a = function (k, e) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (c, e) {\n c.__proto__ = e;\n } || function (c, e) {\n for (var a in e) e.hasOwnProperty(a) && (c[a] = e[a]);\n };\n return a(k, e);\n };\n return function (k, e) {\n function c() {\n this.constructor = k;\n }\n a(k, e);\n k.prototype = null === e ? Object.create(e) : (c.prototype = e.prototype, new c());\n };\n }(),\n F = u.defined,\n y = u.extend,\n G = u.isNumber,\n H = u.merge,\n A = u.pick,\n q = u.removeEvent;\n return function (n) {\n function k(e, c, a, f, w, p, B, t, J, C) {\n var r = n.call(this) || this;\n r.paddingLeftSetter = r.paddingSetter;\n r.paddingRightSetter = r.paddingSetter;\n r.init(e, \"g\");\n r.textStr = c;\n r.x = a;\n r.y = f;\n r.anchorX = p;\n r.anchorY = B;\n r.baseline = J;\n r.className = C;\n r.addClass(\"button\" === C ? \"highcharts-no-tooltip\" : \"highcharts-label\");\n C && r.addClass(\"highcharts-\" + C);\n r.text = e.text(void 0, 0, 0, t).attr({\n zIndex: 1\n });\n var l;\n \"string\" === typeof w && ((l = /^url\\((.*?)\\)$/.test(w)) || r.renderer.symbols[w]) && (r.symbolKey = w);\n r.bBox = k.emptyBBox;\n r.padding = 3;\n r.baselineOffset = 0;\n r.needsBox = e.styledMode || l;\n r.deferredAttr = {};\n r.alignFactor = 0;\n return r;\n }\n v(k, n);\n k.prototype.alignSetter = function (e) {\n e = {\n left: 0,\n center: .5,\n right: 1\n }[e];\n e !== this.alignFactor && (this.alignFactor = e, this.bBox && G(this.xSetting) && this.attr({\n x: this.xSetting\n }));\n };\n k.prototype.anchorXSetter = function (e, c) {\n this.anchorX = e;\n this.boxAttr(c, Math.round(e) - this.getCrispAdjust() - this.xSetting);\n };\n k.prototype.anchorYSetter = function (e, c) {\n this.anchorY = e;\n this.boxAttr(c, e - this.ySetting);\n };\n k.prototype.boxAttr = function (e, c) {\n this.box ? this.box.attr(e, c) : this.deferredAttr[e] = c;\n };\n k.prototype.css = function (e) {\n if (e) {\n var c = {};\n e = H(e);\n k.textProps.forEach(function (a) {\n \"undefined\" !== typeof e[a] && (c[a] = e[a], delete e[a]);\n });\n this.text.css(c);\n var h = (\"width\" in c);\n \"fontSize\" in c || \"fontWeight\" in c ? this.updateTextPadding() : h && this.updateBoxSize();\n }\n return a.prototype.css.call(this, e);\n };\n k.prototype.destroy = function () {\n q(this.element, \"mouseenter\");\n q(this.element, \"mouseleave\");\n this.text && this.text.destroy();\n this.box && (this.box = this.box.destroy());\n a.prototype.destroy.call(this);\n };\n k.prototype.fillSetter = function (e, c) {\n e && (this.needsBox = !0);\n this.fill = e;\n this.boxAttr(c, e);\n };\n k.prototype.getBBox = function () {\n this.textStr && 0 === this.bBox.width && 0 === this.bBox.height && this.updateBoxSize();\n var e = this.padding,\n c = A(this.paddingLeft, e);\n return {\n width: this.width,\n height: this.height,\n x: this.bBox.x - c,\n y: this.bBox.y - e\n };\n };\n k.prototype.getCrispAdjust = function () {\n return this.renderer.styledMode && this.box ? this.box.strokeWidth() % 2 / 2 : (this[\"stroke-width\"] ? parseInt(this[\"stroke-width\"], 10) : 0) % 2 / 2;\n };\n k.prototype.heightSetter = function (e) {\n this.heightSetting = e;\n };\n k.prototype.onAdd = function () {\n var e = this.textStr;\n this.text.add(this);\n this.attr({\n text: F(e) ? e : \"\",\n x: this.x,\n y: this.y\n });\n this.box && F(this.anchorX) && this.attr({\n anchorX: this.anchorX,\n anchorY: this.anchorY\n });\n };\n k.prototype.paddingSetter = function (e, c) {\n G(e) ? e !== this[c] && (this[c] = e, this.updateTextPadding()) : this[c] = void 0;\n };\n k.prototype.rSetter = function (e, c) {\n this.boxAttr(c, e);\n };\n k.prototype.shadow = function (e) {\n e && !this.renderer.styledMode && (this.updateBoxSize(), this.box && this.box.shadow(e));\n return this;\n };\n k.prototype.strokeSetter = function (e, c) {\n this.stroke = e;\n this.boxAttr(c, e);\n };\n k.prototype[\"stroke-widthSetter\"] = function (e, c) {\n e && (this.needsBox = !0);\n this[\"stroke-width\"] = e;\n this.boxAttr(c, e);\n };\n k.prototype[\"text-alignSetter\"] = function (e) {\n this.textAlign = e;\n };\n k.prototype.textSetter = function (e) {\n \"undefined\" !== typeof e && this.text.attr({\n text: e\n });\n this.updateTextPadding();\n };\n k.prototype.updateBoxSize = function () {\n var e = this.text.element.style,\n c = {},\n a = this.padding,\n f = this.bBox = G(this.widthSetting) && G(this.heightSetting) && !this.textAlign || !F(this.text.textStr) ? k.emptyBBox : this.text.getBBox();\n this.width = this.getPaddedWidth();\n this.height = (this.heightSetting || f.height || 0) + 2 * a;\n e = this.renderer.fontMetrics(e && e.fontSize, this.text);\n this.baselineOffset = a + Math.min((this.text.firstLineMetrics || e).b, f.height || Infinity);\n this.heightSetting && (this.baselineOffset += (this.heightSetting - e.h) / 2);\n this.needsBox && (this.box || (a = this.box = this.symbolKey ? this.renderer.symbol(this.symbolKey) : this.renderer.rect(), a.addClass((\"button\" === this.className ? \"\" : \"highcharts-label-box\") + (this.className ? \" highcharts-\" + this.className + \"-box\" : \"\")), a.add(this)), a = this.getCrispAdjust(), c.x = a, c.y = (this.baseline ? -this.baselineOffset : 0) + a, c.width = Math.round(this.width), c.height = Math.round(this.height), this.box.attr(y(c, this.deferredAttr)), this.deferredAttr = {});\n };\n k.prototype.updateTextPadding = function () {\n var a = this.text;\n this.updateBoxSize();\n var c = this.baseline ? 0 : this.baselineOffset,\n h = A(this.paddingLeft, this.padding);\n F(this.widthSetting) && this.bBox && (\"center\" === this.textAlign || \"right\" === this.textAlign) && (h += {\n center: .5,\n right: 1\n }[this.textAlign] * (this.widthSetting - this.bBox.width));\n if (h !== a.x || c !== a.y) a.attr(\"x\", h), a.hasBoxWidthChanged && (this.bBox = a.getBBox(!0)), \"undefined\" !== typeof c && a.attr(\"y\", c);\n a.x = h;\n a.y = c;\n };\n k.prototype.widthSetter = function (a) {\n this.widthSetting = G(a) ? a : void 0;\n };\n k.prototype.getPaddedWidth = function () {\n var a = this.padding,\n c = A(this.paddingLeft, a);\n a = A(this.paddingRight, a);\n return (this.widthSetting || this.bBox.width || 0) + c + a;\n };\n k.prototype.xSetter = function (a) {\n this.x = a;\n this.alignFactor && (a -= this.alignFactor * this.getPaddedWidth(), this[\"forceAnimate:x\"] = !0);\n this.xSetting = Math.round(a);\n this.attr(\"translateX\", this.xSetting);\n };\n k.prototype.ySetter = function (a) {\n this.ySetting = this.y = Math.round(a);\n this.attr(\"translateY\", this.ySetting);\n };\n k.emptyBBox = {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n k.textProps = \"color direction fontFamily fontSize fontStyle fontWeight lineHeight textAlign textDecoration textOutline textOverflow width\".split(\" \");\n return k;\n }(a);\n });\n M(a, \"Core/Renderer/SVG/Symbols.js\", [a[\"Core/Utilities.js\"]], function (a) {\n function v(a, q, n, k, e) {\n var c = [];\n if (e) {\n var h = e.start || 0,\n f = H(e.r, n);\n n = H(e.r, k || n);\n var w = (e.end || 0) - .001;\n k = e.innerR;\n var p = H(e.open, .001 > Math.abs((e.end || 0) - h - 2 * Math.PI)),\n B = Math.cos(h),\n t = Math.sin(h),\n J = Math.cos(w),\n C = Math.sin(w);\n h = H(e.longArc, .001 > w - h - Math.PI ? 0 : 1);\n c.push([\"M\", a + f * B, q + n * t], [\"A\", f, n, 0, h, H(e.clockwise, 1), a + f * J, q + n * C]);\n y(k) && c.push(p ? [\"M\", a + k * J, q + k * C] : [\"L\", a + k * J, q + k * C], [\"A\", k, k, 0, h, y(e.clockwise) ? 1 - e.clockwise : 0, a + k * B, q + k * t]);\n p || c.push([\"Z\"]);\n }\n return c;\n }\n function z(a, q, n, k, e) {\n return e && e.r ? F(a, q, n, k, e) : [[\"M\", a, q], [\"L\", a + n, q], [\"L\", a + n, q + k], [\"L\", a, q + k], [\"Z\"]];\n }\n function F(a, q, n, k, e) {\n e = e && e.r || 0;\n return [[\"M\", a + e, q], [\"L\", a + n - e, q], [\"C\", a + n, q, a + n, q, a + n, q + e], [\"L\", a + n, q + k - e], [\"C\", a + n, q + k, a + n, q + k, a + n - e, q + k], [\"L\", a + e, q + k], [\"C\", a, q + k, a, q + k, a, q + k - e], [\"L\", a, q + e], [\"C\", a, q, a, q, a + e, q]];\n }\n var y = a.defined,\n G = a.isNumber,\n H = a.pick;\n return {\n arc: v,\n callout: function (a, q, n, k, e) {\n var c = Math.min(e && e.r || 0, n, k),\n h = c + 6,\n f = e && e.anchorX;\n e = e && e.anchorY || 0;\n var w = F(a, q, n, k, {\n r: c\n });\n if (!G(f)) return w;\n a + f >= n ? e > q + h && e < q + k - h ? w.splice(3, 1, [\"L\", a + n, e - 6], [\"L\", a + n + 6, e], [\"L\", a + n, e + 6], [\"L\", a + n, q + k - c]) : w.splice(3, 1, [\"L\", a + n, k / 2], [\"L\", f, e], [\"L\", a + n, k / 2], [\"L\", a + n, q + k - c]) : 0 >= a + f ? e > q + h && e < q + k - h ? w.splice(7, 1, [\"L\", a, e + 6], [\"L\", a - 6, e], [\"L\", a, e - 6], [\"L\", a, q + c]) : w.splice(7, 1, [\"L\", a, k / 2], [\"L\", f, e], [\"L\", a, k / 2], [\"L\", a, q + c]) : e && e > k && f > a + h && f < a + n - h ? w.splice(5, 1, [\"L\", f + 6, q + k], [\"L\", f, q + k + 6], [\"L\", f - 6, q + k], [\"L\", a + c, q + k]) : e && 0 > e && f > a + h && f < a + n - h && w.splice(1, 1, [\"L\", f - 6, q], [\"L\", f, q - 6], [\"L\", f + 6, q], [\"L\", n - c, q]);\n return w;\n },\n circle: function (a, q, n, k) {\n return v(a + n / 2, q + k / 2, n / 2, k / 2, {\n start: .5 * Math.PI,\n end: 2.5 * Math.PI,\n open: !1\n });\n },\n diamond: function (a, q, n, k) {\n return [[\"M\", a + n / 2, q], [\"L\", a + n, q + k / 2], [\"L\", a + n / 2, q + k], [\"L\", a, q + k / 2], [\"Z\"]];\n },\n rect: z,\n roundedRect: F,\n square: z,\n triangle: function (a, q, n, k) {\n return [[\"M\", a + n / 2, q], [\"L\", a + n, q + k], [\"L\", a, q + k], [\"Z\"]];\n },\n \"triangle-down\": function (a, q, n, k) {\n return [[\"M\", a, q], [\"L\", a + n, q], [\"L\", a + n / 2, q + k], [\"Z\"]];\n }\n };\n });\n M(a, \"Core/Renderer/SVG/TextBuilder.js\", [a[\"Core/Renderer/HTML/AST.js\"], a[\"Core/Globals.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = u.doc,\n y = u.SVG_NS,\n G = u.win,\n H = z.attr,\n A = z.isString,\n q = z.objectEach,\n n = z.pick;\n return function () {\n function k(a) {\n var c = a.styles;\n this.renderer = a.renderer;\n this.svgElement = a;\n this.width = a.textWidth;\n this.textLineHeight = c && c.lineHeight;\n this.textOutline = c && c.textOutline;\n this.ellipsis = !(!c || \"ellipsis\" !== c.textOverflow);\n this.noWrap = !(!c || \"nowrap\" !== c.whiteSpace);\n this.fontSize = c && c.fontSize;\n }\n k.prototype.buildSVG = function () {\n var e = this.svgElement,\n c = e.element,\n h = e.renderer,\n f = n(e.textStr, \"\").toString(),\n k = -1 !== f.indexOf(\"<\"),\n p = c.childNodes;\n h = this.width && !e.added && h.box;\n var B = /<br.*?>/g,\n t = [f, this.ellipsis, this.noWrap, this.textLineHeight, this.textOutline, this.fontSize, this.width].join();\n if (t !== e.textCache) {\n e.textCache = t;\n delete e.actualWidth;\n for (t = p.length; t--;) c.removeChild(p[t]);\n k || this.ellipsis || this.width || -1 !== f.indexOf(\" \") && (!this.noWrap || B.test(f)) ? \"\" !== f && (h && h.appendChild(c), f = new a(f), this.modifyTree(f.nodes), f.addToDOM(e.element), this.modifyDOM(), this.ellipsis && -1 !== (c.textContent || \"\").indexOf(\"\\u2026\") && e.attr(\"title\", this.unescapeEntities(e.textStr || \"\", [\"<\", \">\"])), h && h.removeChild(c)) : c.appendChild(v.createTextNode(this.unescapeEntities(f)));\n A(this.textOutline) && e.applyTextOutline && e.applyTextOutline(this.textOutline);\n }\n };\n k.prototype.modifyDOM = function () {\n var a = this,\n c = this.svgElement,\n h = H(c.element, \"x\");\n c.firstLineMetrics = void 0;\n for (var f; f = c.element.firstChild;) if (/^[\\s\\u200B]*$/.test(f.textContent || \" \")) c.element.removeChild(f);else break;\n [].forEach.call(c.element.querySelectorAll(\"tspan.highcharts-br\"), function (e, p) {\n e.nextSibling && e.previousSibling && (0 === p && 1 === e.previousSibling.nodeType && (c.firstLineMetrics = c.renderer.fontMetrics(void 0, e.previousSibling)), H(e, {\n dy: a.getLineHeight(e.nextSibling),\n x: h\n }));\n });\n var k = this.width || 0;\n if (k) {\n var p = function (e, p) {\n var f = e.textContent || \"\",\n r = f.replace(/([^\\^])-/g, \"$1- \").split(\" \"),\n l = !a.noWrap && (1 < r.length || 1 < c.element.childNodes.length),\n b = a.getLineHeight(p),\n g = 0,\n d = c.actualWidth;\n if (a.ellipsis) f && a.truncate(e, f, void 0, 0, Math.max(0, k - parseInt(a.fontSize || 12, 10)), function (b, d) {\n return b.substring(0, d) + \"\\u2026\";\n });else if (l) {\n f = [];\n for (l = []; p.firstChild && p.firstChild !== e;) l.push(p.firstChild), p.removeChild(p.firstChild);\n for (; r.length;) r.length && !a.noWrap && 0 < g && (f.push(e.textContent || \"\"), e.textContent = r.join(\" \").replace(/- /g, \"-\")), a.truncate(e, void 0, r, 0 === g ? d || 0 : 0, k, function (b, d) {\n return r.slice(0, d).join(\" \").replace(/- /g, \"-\");\n }), d = c.actualWidth, g++;\n l.forEach(function (b) {\n p.insertBefore(b, e);\n });\n f.forEach(function (d) {\n p.insertBefore(v.createTextNode(d), e);\n d = v.createElementNS(y, \"tspan\");\n d.textContent = \"\\u200b\";\n H(d, {\n dy: b,\n x: h\n });\n p.insertBefore(d, e);\n });\n }\n },\n B = function (a) {\n [].slice.call(a.childNodes).forEach(function (e) {\n e.nodeType === G.Node.TEXT_NODE ? p(e, a) : (-1 !== e.className.baseVal.indexOf(\"highcharts-br\") && (c.actualWidth = 0), B(e));\n });\n };\n B(c.element);\n }\n };\n k.prototype.getLineHeight = function (a) {\n var c;\n a = a.nodeType === G.Node.TEXT_NODE ? a.parentElement : a;\n this.renderer.styledMode || (c = a && /(px|em)$/.test(a.style.fontSize) ? a.style.fontSize : this.fontSize || this.renderer.style.fontSize || 12);\n return this.textLineHeight ? parseInt(this.textLineHeight.toString(), 10) : this.renderer.fontMetrics(c, a || this.svgElement.element).h;\n };\n k.prototype.modifyTree = function (a) {\n var c = this,\n e = function (h, k) {\n var p = h.attributes;\n p = void 0 === p ? {} : p;\n var f = h.children,\n t = h.tagName,\n w = c.renderer.styledMode;\n if (\"b\" === t || \"strong\" === t) w ? p[\"class\"] = \"highcharts-strong\" : p.style = \"font-weight:bold;\" + (p.style || \"\");else if (\"i\" === t || \"em\" === t) w ? p[\"class\"] = \"highcharts-emphasized\" : p.style = \"font-style:italic;\" + (p.style || \"\");\n A(p.style) && (p.style = p.style.replace(/(;| |^)color([ :])/, \"$1fill$2\"));\n \"br\" === t ? (p[\"class\"] = \"highcharts-br\", h.textContent = \"\\u200b\", (k = a[k + 1]) && k.textContent && (k.textContent = k.textContent.replace(/^ +/gm, \"\"))) : \"a\" === t && f && f.some(function (c) {\n return \"#text\" === c.tagName;\n }) && (h.children = [{\n children: f,\n tagName: \"tspan\"\n }]);\n \"#text\" !== t && \"a\" !== t && (h.tagName = \"tspan\");\n h.attributes = p;\n f && f.filter(function (c) {\n return \"#text\" !== c.tagName;\n }).forEach(e);\n };\n a.forEach(e);\n };\n k.prototype.truncate = function (a, c, h, f, k, p) {\n var e = this.svgElement,\n t = e.renderer,\n w = e.rotation,\n n = [],\n r = h ? 1 : 0,\n l = (c || h || \"\").length,\n b = l,\n g,\n d = function (b, d) {\n d = d || b;\n var g = a.parentNode;\n if (g && \"undefined\" === typeof n[d]) if (g.getSubStringLength) try {\n n[d] = f + g.getSubStringLength(0, h ? d + 1 : d);\n } catch (P) {\n \"\";\n } else t.getSpanWidth && (a.textContent = p(c || h, b), n[d] = f + t.getSpanWidth(e, a));\n return n[d];\n };\n e.rotation = 0;\n var m = d(a.textContent.length);\n if (f + m > k) {\n for (; r <= l;) b = Math.ceil((r + l) / 2), h && (g = p(h, b)), m = d(b, g && g.length - 1), r === l ? r = l + 1 : m > k ? l = b - 1 : r = b;\n 0 === l ? a.textContent = \"\" : c && l === c.length - 1 || (a.textContent = g || p(c || h, b));\n }\n h && h.splice(0, b);\n e.actualWidth = m;\n e.rotation = w;\n };\n k.prototype.unescapeEntities = function (a, c) {\n q(this.renderer.escapes, function (e, f) {\n c && -1 !== c.indexOf(e) || (a = a.toString().replace(new RegExp(e, \"g\"), f));\n });\n return a;\n };\n return k;\n }();\n });\n M(a, \"Core/Renderer/SVG/SVGRenderer.js\", [a[\"Core/Renderer/HTML/AST.js\"], a[\"Core/Color/Color.js\"], a[\"Core/Globals.js\"], a[\"Core/Renderer/RendererRegistry.js\"], a[\"Core/Renderer/SVG/SVGElement.js\"], a[\"Core/Renderer/SVG/SVGLabel.js\"], a[\"Core/Renderer/SVG/Symbols.js\"], a[\"Core/Renderer/SVG/TextBuilder.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G, H, A, q) {\n var n = z.charts,\n k = z.deg2rad,\n e = z.doc,\n c = z.isFirefox,\n h = z.isMS,\n f = z.isWebKit,\n w = z.noop,\n p = z.SVG_NS,\n B = z.symbolSizes,\n t = z.win,\n J = q.addEvent,\n C = q.attr,\n r = q.createElement,\n l = q.css,\n b = q.defined,\n g = q.destroyObjectProperties,\n d = q.extend,\n m = q.isArray,\n D = q.isNumber,\n x = q.isObject,\n I = q.isString,\n P = q.merge,\n v = q.pick,\n O = q.pInt,\n U = q.uniqueKey,\n Y;\n z = function () {\n function L(b, d, a, c, g, m, e) {\n this.width = this.url = this.style = this.isSVG = this.imgCount = this.height = this.gradients = this.globalAnimation = this.defs = this.chartIndex = this.cacheKeys = this.cache = this.boxWrapper = this.box = this.alignedObjects = void 0;\n this.init(b, d, a, c, g, m, e);\n }\n L.prototype.init = function (b, d, a, g, m, E, L) {\n var r = this.createElement(\"svg\").attr({\n version: \"1.1\",\n \"class\": \"highcharts-root\"\n }),\n K = r.element;\n L || r.css(this.getStyle(g));\n b.appendChild(K);\n C(b, \"dir\", \"ltr\");\n -1 === b.innerHTML.indexOf(\"xmlns\") && C(K, \"xmlns\", this.SVG_NS);\n this.isSVG = !0;\n this.box = K;\n this.boxWrapper = r;\n this.alignedObjects = [];\n this.url = this.getReferenceURL();\n this.createElement(\"desc\").add().element.appendChild(e.createTextNode(\"Created with Highcharts 9.3.3\"));\n this.defs = this.createElement(\"defs\").add();\n this.allowHTML = E;\n this.forExport = m;\n this.styledMode = L;\n this.gradients = {};\n this.cache = {};\n this.cacheKeys = [];\n this.imgCount = 0;\n this.setSize(d, a, !1);\n var p;\n c && b.getBoundingClientRect && (d = function () {\n l(b, {\n left: 0,\n top: 0\n });\n p = b.getBoundingClientRect();\n l(b, {\n left: Math.ceil(p.left) - p.left + \"px\",\n top: Math.ceil(p.top) - p.top + \"px\"\n });\n }, d(), this.unSubPixelFix = J(t, \"resize\", d));\n };\n L.prototype.definition = function (b) {\n return new a([b]).addToDOM(this.defs.element);\n };\n L.prototype.getReferenceURL = function () {\n if ((c || f) && e.getElementsByTagName(\"base\").length) {\n if (!b(Y)) {\n var d = U();\n d = new a([{\n tagName: \"svg\",\n attributes: {\n width: 8,\n height: 8\n },\n children: [{\n tagName: \"defs\",\n children: [{\n tagName: \"clipPath\",\n attributes: {\n id: d\n },\n children: [{\n tagName: \"rect\",\n attributes: {\n width: 4,\n height: 4\n }\n }]\n }]\n }, {\n tagName: \"rect\",\n attributes: {\n id: \"hitme\",\n width: 8,\n height: 8,\n \"clip-path\": \"url(#\" + d + \")\",\n fill: \"rgba(0,0,0,0.001)\"\n }\n }]\n }]).addToDOM(e.body);\n l(d, {\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 9E5\n });\n var g = e.elementFromPoint(6, 6);\n Y = \"hitme\" === (g && g.id);\n e.body.removeChild(d);\n }\n if (Y) return t.location.href.split(\"#\")[0].replace(/<[^>]*>/g, \"\").replace(/([\\('\\)])/g, \"\\\\$1\").replace(/ /g, \"%20\");\n }\n return \"\";\n };\n L.prototype.getStyle = function (b) {\n return this.style = d({\n fontFamily: '\"Lucida Grande\", \"Lucida Sans Unicode\", Arial, Helvetica, sans-serif',\n fontSize: \"12px\"\n }, b);\n };\n L.prototype.setStyle = function (b) {\n this.boxWrapper.css(this.getStyle(b));\n };\n L.prototype.isHidden = function () {\n return !this.boxWrapper.getBBox().width;\n };\n L.prototype.destroy = function () {\n var b = this.defs;\n this.box = null;\n this.boxWrapper = this.boxWrapper.destroy();\n g(this.gradients || {});\n this.gradients = null;\n b && (this.defs = b.destroy());\n this.unSubPixelFix && this.unSubPixelFix();\n return this.alignedObjects = null;\n };\n L.prototype.createElement = function (b) {\n var d = new this.Element();\n d.init(this, b);\n return d;\n };\n L.prototype.getRadialAttr = function (b, d) {\n return {\n cx: b[0] - b[2] / 2 + (d.cx || 0) * b[2],\n cy: b[1] - b[2] / 2 + (d.cy || 0) * b[2],\n r: (d.r || 0) * b[2]\n };\n };\n L.prototype.buildText = function (b) {\n new A(b).buildSVG();\n };\n L.prototype.getContrast = function (b) {\n b = u.parse(b).rgba;\n b[0] *= 1;\n b[1] *= 1.2;\n b[2] *= .5;\n return 459 < b[0] + b[1] + b[2] ? \"#000000\" : \"#FFFFFF\";\n };\n L.prototype.button = function (b, c, g, m, e, l, L, r, p, x) {\n var E = this.label(b, c, g, p, void 0, void 0, x, void 0, \"button\"),\n f = this.styledMode,\n K = 0,\n D = e ? P(e) : {};\n b = D && D.style || {};\n D = a.filterUserAttributes(D);\n E.attr(P({\n padding: 8,\n r: 2\n }, D));\n if (!f) {\n D = P({\n fill: \"#f7f7f7\",\n stroke: \"#cccccc\",\n \"stroke-width\": 1,\n style: {\n color: \"#333333\",\n cursor: \"pointer\",\n fontWeight: \"normal\"\n }\n }, {\n style: b\n }, D);\n var k = D.style;\n delete D.style;\n l = P(D, {\n fill: \"#e6e6e6\"\n }, a.filterUserAttributes(l || {}));\n var N = l.style;\n delete l.style;\n L = P(D, {\n fill: \"#e6ebf5\",\n style: {\n color: \"#000000\",\n fontWeight: \"bold\"\n }\n }, a.filterUserAttributes(L || {}));\n var w = L.style;\n delete L.style;\n r = P(D, {\n style: {\n color: \"#cccccc\"\n }\n }, a.filterUserAttributes(r || {}));\n var t = r.style;\n delete r.style;\n }\n J(E.element, h ? \"mouseover\" : \"mouseenter\", function () {\n 3 !== K && E.setState(1);\n });\n J(E.element, h ? \"mouseout\" : \"mouseleave\", function () {\n 3 !== K && E.setState(K);\n });\n E.setState = function (b) {\n 1 !== b && (E.state = K = b);\n E.removeClass(/highcharts-button-(normal|hover|pressed|disabled)/).addClass(\"highcharts-button-\" + [\"normal\", \"hover\", \"pressed\", \"disabled\"][b || 0]);\n f || E.attr([D, l, L, r][b || 0]).css([k, N, w, t][b || 0]);\n };\n f || E.attr(D).css(d({\n cursor: \"default\"\n }, k));\n return E.on(\"touchstart\", function (b) {\n return b.stopPropagation();\n }).on(\"click\", function (b) {\n 3 !== K && m.call(E, b);\n });\n };\n L.prototype.crispLine = function (d, a, c) {\n void 0 === c && (c = \"round\");\n var g = d[0],\n m = d[1];\n b(g[1]) && g[1] === m[1] && (g[1] = m[1] = Math[c](g[1]) - a % 2 / 2);\n b(g[2]) && g[2] === m[2] && (g[2] = m[2] = Math[c](g[2]) + a % 2 / 2);\n return d;\n };\n L.prototype.path = function (b) {\n var a = this.styledMode ? {} : {\n fill: \"none\"\n };\n m(b) ? a.d = b : x(b) && d(a, b);\n return this.createElement(\"path\").attr(a);\n };\n L.prototype.circle = function (b, d, a) {\n b = x(b) ? b : \"undefined\" === typeof b ? {} : {\n x: b,\n y: d,\n r: a\n };\n d = this.createElement(\"circle\");\n d.xSetter = d.ySetter = function (b, d, a) {\n a.setAttribute(\"c\" + d, b);\n };\n return d.attr(b);\n };\n L.prototype.arc = function (b, d, a, c, g, m) {\n x(b) ? (c = b, d = c.y, a = c.r, b = c.x) : c = {\n innerR: c,\n start: g,\n end: m\n };\n b = this.symbol(\"arc\", b, d, a, a, c);\n b.r = a;\n return b;\n };\n L.prototype.rect = function (b, d, a, c, g, m) {\n g = x(b) ? b.r : g;\n var e = this.createElement(\"rect\");\n b = x(b) ? b : \"undefined\" === typeof b ? {} : {\n x: b,\n y: d,\n width: Math.max(a, 0),\n height: Math.max(c, 0)\n };\n this.styledMode || (\"undefined\" !== typeof m && (b[\"stroke-width\"] = m, b = e.crisp(b)), b.fill = \"none\");\n g && (b.r = g);\n e.rSetter = function (b, d, a) {\n e.r = b;\n C(a, {\n rx: b,\n ry: b\n });\n };\n e.rGetter = function () {\n return e.r || 0;\n };\n return e.attr(b);\n };\n L.prototype.setSize = function (b, d, a) {\n this.width = b;\n this.height = d;\n this.boxWrapper.animate({\n width: b,\n height: d\n }, {\n step: function () {\n this.attr({\n viewBox: \"0 0 \" + this.attr(\"width\") + \" \" + this.attr(\"height\")\n });\n },\n duration: v(a, !0) ? void 0 : 0\n });\n this.alignElements();\n };\n L.prototype.g = function (b) {\n var d = this.createElement(\"g\");\n return b ? d.attr({\n \"class\": \"highcharts-\" + b\n }) : d;\n };\n L.prototype.image = function (b, d, a, c, g, m) {\n var e = {\n preserveAspectRatio: \"none\"\n },\n l = function (b, d) {\n b.setAttributeNS ? b.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", d) : b.setAttribute(\"hc-svg-href\", d);\n };\n D(d) && (e.x = d);\n D(a) && (e.y = a);\n D(c) && (e.width = c);\n D(g) && (e.height = g);\n var E = this.createElement(\"image\").attr(e);\n d = function (d) {\n l(E.element, b);\n m.call(E, d);\n };\n m ? (l(E.element, \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\"), a = new t.Image(), J(a, \"load\", d), a.src = b, a.complete && d({})) : l(E.element, b);\n return E;\n };\n L.prototype.symbol = function (a, c, g, m, L, E) {\n var p = this,\n h = /^url\\((.*?)\\)$/,\n x = h.test(a),\n f = !x && (this.symbols[a] ? a : \"circle\"),\n D = f && this.symbols[f],\n k;\n if (D) {\n \"number\" === typeof c && (k = D.call(this.symbols, Math.round(c || 0), Math.round(g || 0), m || 0, L || 0, E));\n var K = this.path(k);\n p.styledMode || K.attr(\"fill\", \"none\");\n d(K, {\n symbolName: f || void 0,\n x: c,\n y: g,\n width: m,\n height: L\n });\n E && d(K, E);\n } else if (x) {\n var w = a.match(h)[1];\n var t = K = this.image(w);\n t.imgwidth = v(B[w] && B[w].width, E && E.width);\n t.imgheight = v(B[w] && B[w].height, E && E.height);\n var I = function (b) {\n return b.attr({\n width: b.width,\n height: b.height\n });\n };\n [\"width\", \"height\"].forEach(function (d) {\n t[d + \"Setter\"] = function (d, a) {\n var c = this[\"img\" + a];\n this[a] = d;\n b(c) && (E && \"within\" === E.backgroundSize && this.width && this.height && (c = Math.round(c * Math.min(this.width / this.imgwidth, this.height / this.imgheight))), this.element && this.element.setAttribute(a, c), this.alignByTranslate || (d = ((this[a] || 0) - c) / 2, this.attr(\"width\" === a ? {\n translateX: d\n } : {\n translateY: d\n })));\n };\n });\n b(c) && t.attr({\n x: c,\n y: g\n });\n t.isImg = !0;\n b(t.imgwidth) && b(t.imgheight) ? I(t) : (t.attr({\n width: 0,\n height: 0\n }), r(\"img\", {\n onload: function () {\n var b = n[p.chartIndex];\n 0 === this.width && (l(this, {\n position: \"absolute\",\n top: \"-999em\"\n }), e.body.appendChild(this));\n B[w] = {\n width: this.width,\n height: this.height\n };\n t.imgwidth = this.width;\n t.imgheight = this.height;\n t.element && I(t);\n this.parentNode && this.parentNode.removeChild(this);\n p.imgCount--;\n if (!p.imgCount && b && !b.hasLoaded) b.onload();\n },\n src: w\n }), this.imgCount++);\n }\n return K;\n };\n L.prototype.clipRect = function (b, d, a, c) {\n var g = U() + \"-\",\n m = this.createElement(\"clipPath\").attr({\n id: g\n }).add(this.defs);\n b = this.rect(b, d, a, c, 0).add(m);\n b.id = g;\n b.clipPath = m;\n b.count = 0;\n return b;\n };\n L.prototype.text = function (d, a, c, g) {\n var m = {};\n if (g && (this.allowHTML || !this.forExport)) return this.html(d, a, c);\n m.x = Math.round(a || 0);\n c && (m.y = Math.round(c));\n b(d) && (m.text = d);\n d = this.createElement(\"text\").attr(m);\n if (!g || this.forExport && !this.allowHTML) d.xSetter = function (b, d, a) {\n for (var c = a.getElementsByTagName(\"tspan\"), g = a.getAttribute(d), m = 0, e; m < c.length; m++) e = c[m], e.getAttribute(d) === g && e.setAttribute(d, b);\n a.setAttribute(d, b);\n };\n return d;\n };\n L.prototype.fontMetrics = function (b, d) {\n b = !this.styledMode && /px/.test(b) || !t.getComputedStyle ? b || d && d.style && d.style.fontSize || this.style && this.style.fontSize : d && y.prototype.getStyle.call(d, \"font-size\");\n b = /px/.test(b) ? O(b) : 12;\n d = 24 > b ? b + 3 : Math.round(1.2 * b);\n return {\n h: d,\n b: Math.round(.8 * d),\n f: b\n };\n };\n L.prototype.rotCorr = function (b, d, a) {\n var c = b;\n d && a && (c = Math.max(c * Math.cos(d * k), 4));\n return {\n x: -b / 3 * Math.sin(d * k),\n y: c\n };\n };\n L.prototype.pathToSegments = function (b) {\n for (var d = [], a = [], c = {\n A: 8,\n C: 7,\n H: 2,\n L: 3,\n M: 3,\n Q: 5,\n S: 5,\n T: 3,\n V: 2\n }, g = 0; g < b.length; g++) I(a[0]) && D(b[g]) && a.length === c[a[0].toUpperCase()] && b.splice(g, 0, a[0].replace(\"M\", \"L\").replace(\"m\", \"l\")), \"string\" === typeof b[g] && (a.length && d.push(a.slice(0)), a.length = 0), a.push(b[g]);\n d.push(a.slice(0));\n return d;\n };\n L.prototype.label = function (b, d, a, c, g, m, e, l, L) {\n return new G(this, b, d, a, c, g, m, e, l, L);\n };\n L.prototype.alignElements = function () {\n this.alignedObjects.forEach(function (b) {\n return b.align();\n });\n };\n return L;\n }();\n d(z.prototype, {\n Element: y,\n SVG_NS: p,\n escapes: {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n \"'\": \"'\",\n '\"': \""\"\n },\n symbols: H,\n draw: w\n });\n F.registerRendererType(\"svg\", z, !0);\n \"\";\n return z;\n });\n M(a, \"Core/Renderer/HTML/HTMLElement.js\", [a[\"Core/Globals.js\"], a[\"Core/Renderer/SVG/SVGElement.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = this && this.__extends || function () {\n var a = function (c, e) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, c) {\n a.__proto__ = c;\n } || function (a, c) {\n for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e]);\n };\n return a(c, e);\n };\n return function (c, e) {\n function p() {\n this.constructor = c;\n }\n a(c, e);\n c.prototype = null === e ? Object.create(e) : (p.prototype = e.prototype, new p());\n };\n }(),\n y = a.isFirefox,\n G = a.isMS,\n H = a.isWebKit,\n A = a.win,\n q = z.css,\n n = z.defined,\n k = z.extend,\n e = z.pick,\n c = z.pInt;\n return function (a) {\n function h() {\n return null !== a && a.apply(this, arguments) || this;\n }\n v(h, a);\n h.compose = function (a) {\n if (-1 === h.composedClasses.indexOf(a)) {\n h.composedClasses.push(a);\n var c = h.prototype,\n e = a.prototype;\n e.getSpanCorrection = c.getSpanCorrection;\n e.htmlCss = c.htmlCss;\n e.htmlGetBBox = c.htmlGetBBox;\n e.htmlUpdateTransform = c.htmlUpdateTransform;\n e.setSpanRotation = c.setSpanRotation;\n }\n return a;\n };\n h.prototype.getSpanCorrection = function (a, c, e) {\n this.xCorr = -a * e;\n this.yCorr = -c;\n };\n h.prototype.htmlCss = function (a) {\n var c = \"SPAN\" === this.element.tagName && a && \"width\" in a,\n h = e(c && a.width, void 0);\n if (c) {\n delete a.width;\n this.textWidth = h;\n var f = !0;\n }\n a && \"ellipsis\" === a.textOverflow && (a.whiteSpace = \"nowrap\", a.overflow = \"hidden\");\n this.styles = k(this.styles, a);\n q(this.element, a);\n f && this.htmlUpdateTransform();\n return this;\n };\n h.prototype.htmlGetBBox = function () {\n var a = this.element;\n return {\n x: a.offsetLeft,\n y: a.offsetTop,\n width: a.offsetWidth,\n height: a.offsetHeight\n };\n };\n h.prototype.htmlUpdateTransform = function () {\n if (this.added) {\n var a = this.renderer,\n e = this.element,\n h = this.translateX || 0,\n f = this.translateY || 0,\n k = this.x || 0,\n C = this.y || 0,\n r = this.textAlign || \"left\",\n l = {\n left: 0,\n center: .5,\n right: 1\n }[r],\n b = this.styles;\n b = b && b.whiteSpace;\n q(e, {\n marginLeft: h,\n marginTop: f\n });\n !a.styledMode && this.shadows && this.shadows.forEach(function (b) {\n q(b, {\n marginLeft: h + 1,\n marginTop: f + 1\n });\n });\n this.inverted && [].forEach.call(e.childNodes, function (b) {\n a.invertChild(b, e);\n });\n if (\"SPAN\" === e.tagName) {\n var g = this.rotation,\n d = this.textWidth && c(this.textWidth),\n m = [g, r, e.innerHTML, this.textWidth, this.textAlign].join(),\n D = void 0;\n D = !1;\n if (d !== this.oldTextWidth) {\n if (this.textPxLength) var x = this.textPxLength;else q(e, {\n width: \"\",\n whiteSpace: b || \"nowrap\"\n }), x = e.offsetWidth;\n (d > this.oldTextWidth || x > d) && (/[ \\-]/.test(e.textContent || e.innerText) || \"ellipsis\" === e.style.textOverflow) && (q(e, {\n width: x > d || g ? d + \"px\" : \"auto\",\n display: \"block\",\n whiteSpace: b || \"normal\"\n }), this.oldTextWidth = d, D = !0);\n }\n this.hasBoxWidthChanged = D;\n m !== this.cTT && (D = a.fontMetrics(e.style.fontSize, e).b, !n(g) || g === (this.oldRotation || 0) && r === this.oldAlign || this.setSpanRotation(g, l, D), this.getSpanCorrection(!n(g) && this.textPxLength || e.offsetWidth, D, l, g, r));\n q(e, {\n left: k + (this.xCorr || 0) + \"px\",\n top: C + (this.yCorr || 0) + \"px\"\n });\n this.cTT = m;\n this.oldRotation = g;\n this.oldAlign = r;\n }\n } else this.alignOnAdd = !0;\n };\n h.prototype.setSpanRotation = function (a, c, e) {\n var h = {},\n p = G && !/Edge/.test(A.navigator.userAgent) ? \"-ms-transform\" : H ? \"-webkit-transform\" : y ? \"MozTransform\" : A.opera ? \"-o-transform\" : void 0;\n p && (h[p] = h.transform = \"rotate(\" + a + \"deg)\", h[p + (y ? \"Origin\" : \"-origin\")] = h.transformOrigin = 100 * c + \"% \" + e + \"px\", q(this.element, h));\n };\n h.composedClasses = [];\n return h;\n }(u);\n });\n M(a, \"Core/Renderer/HTML/HTMLRenderer.js\", [a[\"Core/Renderer/HTML/AST.js\"], a[\"Core/Renderer/SVG/SVGElement.js\"], a[\"Core/Renderer/SVG/SVGRenderer.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F) {\n var v = this && this.__extends || function () {\n var a = function (k, e) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, e) {\n a.__proto__ = e;\n } || function (a, e) {\n for (var c in e) e.hasOwnProperty(c) && (a[c] = e[c]);\n };\n return a(k, e);\n };\n return function (k, e) {\n function c() {\n this.constructor = k;\n }\n a(k, e);\n k.prototype = null === e ? Object.create(e) : (c.prototype = e.prototype, new c());\n };\n }(),\n G = F.attr,\n H = F.createElement,\n A = F.extend,\n q = F.pick;\n return function (n) {\n function k() {\n return null !== n && n.apply(this, arguments) || this;\n }\n v(k, n);\n k.compose = function (a) {\n -1 === k.composedClasses.indexOf(a) && (k.composedClasses.push(a), a.prototype.html = k.prototype.html);\n return a;\n };\n k.prototype.html = function (e, c, h) {\n var f = this.createElement(\"span\"),\n k = f.element,\n p = f.renderer,\n n = p.isSVG,\n t = function (a, c) {\n [\"opacity\", \"visibility\"].forEach(function (e) {\n a[e + \"Setter\"] = function (l, b, g) {\n var d = a.div ? a.div.style : c;\n u.prototype[e + \"Setter\"].call(this, l, b, g);\n d && (d[b] = l);\n };\n });\n a.addedSetters = !0;\n };\n f.textSetter = function (c) {\n c !== this.textStr && (delete this.bBox, delete this.oldTextWidth, a.setElementHTML(this.element, q(c, \"\")), this.textStr = c, f.doTransform = !0);\n };\n n && t(f, f.element.style);\n f.xSetter = f.ySetter = f.alignSetter = f.rotationSetter = function (a, c) {\n \"align\" === c ? f.alignValue = f.textAlign = a : f[c] = a;\n f.doTransform = !0;\n };\n f.afterSetters = function () {\n this.doTransform && (this.htmlUpdateTransform(), this.doTransform = !1);\n };\n f.attr({\n text: e,\n x: Math.round(c),\n y: Math.round(h)\n }).css({\n position: \"absolute\"\n });\n p.styledMode || f.css({\n fontFamily: this.style.fontFamily,\n fontSize: this.style.fontSize\n });\n k.style.whiteSpace = \"nowrap\";\n f.css = f.htmlCss;\n n && (f.add = function (a) {\n var c = p.box.parentNode,\n e = [];\n if (this.parentGroup = a) {\n var l = a.div;\n if (!l) {\n for (; a;) e.push(a), a = a.parentGroup;\n e.reverse().forEach(function (b) {\n function a(d, a) {\n b[a] = d;\n \"translateX\" === a ? r.left = d + \"px\" : r.top = d + \"px\";\n b.doTransform = !0;\n }\n var d = G(b.element, \"class\"),\n m = b.styles || {};\n l = b.div = b.div || H(\"div\", d ? {\n className: d\n } : void 0, {\n position: \"absolute\",\n left: (b.translateX || 0) + \"px\",\n top: (b.translateY || 0) + \"px\",\n display: b.display,\n opacity: b.opacity,\n cursor: m.cursor,\n pointerEvents: m.pointerEvents,\n visibility: b.visibility\n }, l || c);\n var r = l.style;\n A(b, {\n classSetter: function (b) {\n return function (d) {\n this.element.setAttribute(\"class\", d);\n b.className = d;\n };\n }(l),\n on: function () {\n e[0].div && f.on.apply({\n element: e[0].div,\n onEvents: b.onEvents\n }, arguments);\n return b;\n },\n translateXSetter: a,\n translateYSetter: a\n });\n b.addedSetters || t(b);\n });\n }\n } else l = c;\n l.appendChild(k);\n f.added = !0;\n f.alignOnAdd && f.htmlUpdateTransform();\n return f;\n });\n return f;\n };\n k.composedClasses = [];\n return k;\n }(z);\n });\n M(a, \"Core/Axis/AxisDefaults.js\", [], function () {\n var a;\n (function (a) {\n a.defaultXAxisOptions = {\n alignTicks: !0,\n allowDecimals: void 0,\n panningEnabled: !0,\n zIndex: 2,\n zoomEnabled: !0,\n dateTimeLabelFormats: {\n millisecond: {\n main: \"%H:%M:%S.%L\",\n range: !1\n },\n second: {\n main: \"%H:%M:%S\",\n range: !1\n },\n minute: {\n main: \"%H:%M\",\n range: !1\n },\n hour: {\n main: \"%H:%M\",\n range: !1\n },\n day: {\n main: \"%e. %b\"\n },\n week: {\n main: \"%e. %b\"\n },\n month: {\n main: \"%b '%y\"\n },\n year: {\n main: \"%Y\"\n }\n },\n endOnTick: !1,\n gridLineDashStyle: \"Solid\",\n gridZIndex: 1,\n labels: {\n autoRotation: void 0,\n autoRotationLimit: 80,\n distance: void 0,\n enabled: !0,\n indentation: 10,\n overflow: \"justify\",\n padding: 5,\n reserveSpace: void 0,\n rotation: void 0,\n staggerLines: 0,\n step: 0,\n useHTML: !1,\n x: 0,\n zIndex: 7,\n style: {\n color: \"#666666\",\n cursor: \"default\",\n fontSize: \"11px\"\n }\n },\n maxPadding: .01,\n minorGridLineDashStyle: \"Solid\",\n minorTickLength: 2,\n minorTickPosition: \"outside\",\n minPadding: .01,\n offset: void 0,\n opposite: !1,\n reversed: void 0,\n reversedStacks: !1,\n showEmpty: !0,\n showFirstLabel: !0,\n showLastLabel: !0,\n startOfWeek: 1,\n startOnTick: !1,\n tickLength: 10,\n tickPixelInterval: 100,\n tickmarkPlacement: \"between\",\n tickPosition: \"outside\",\n title: {\n align: \"middle\",\n rotation: 0,\n useHTML: !1,\n x: 0,\n y: 0,\n style: {\n color: \"#666666\"\n }\n },\n type: \"linear\",\n uniqueNames: !0,\n visible: !0,\n minorGridLineColor: \"#f2f2f2\",\n minorGridLineWidth: 1,\n minorTickColor: \"#999999\",\n lineColor: \"#ccd6eb\",\n lineWidth: 1,\n gridLineColor: \"#e6e6e6\",\n gridLineWidth: void 0,\n tickColor: \"#ccd6eb\"\n };\n a.defaultYAxisOptions = {\n reversedStacks: !0,\n endOnTick: !0,\n maxPadding: .05,\n minPadding: .05,\n tickPixelInterval: 72,\n showLastLabel: !0,\n labels: {\n x: -8\n },\n startOnTick: !0,\n title: {\n rotation: 270,\n text: \"Values\"\n },\n stackLabels: {\n animation: {},\n allowOverlap: !1,\n enabled: !1,\n crop: !0,\n overflow: \"justify\",\n formatter: function () {\n var a = this.axis.chart.numberFormatter;\n return a(this.total, -1);\n },\n style: {\n color: \"#000000\",\n fontSize: \"11px\",\n fontWeight: \"bold\",\n textOutline: \"1px contrast\"\n }\n },\n gridLineWidth: 1,\n lineWidth: 0\n };\n a.defaultLeftAxisOptions = {\n labels: {\n x: -15\n },\n title: {\n rotation: 270\n }\n };\n a.defaultRightAxisOptions = {\n labels: {\n x: 15\n },\n title: {\n rotation: 90\n }\n };\n a.defaultBottomAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n a.defaultTopAxisOptions = {\n labels: {\n autoRotation: [-45],\n x: 0\n },\n margin: 15,\n title: {\n rotation: 0\n }\n };\n })(a || (a = {}));\n return a;\n });\n M(a, \"Core/Foundation.js\", [a[\"Core/Utilities.js\"]], function (a) {\n var v = a.addEvent,\n z = a.isFunction,\n F = a.objectEach,\n y = a.removeEvent,\n G;\n (function (a) {\n a.registerEventOptions = function (a, q) {\n a.eventOptions = a.eventOptions || {};\n F(q.events, function (n, k) {\n a.eventOptions[k] !== n && (a.eventOptions[k] && (y(a, k, a.eventOptions[k]), delete a.eventOptions[k]), z(n) && (a.eventOptions[k] = n, v(a, k, n)));\n });\n };\n })(G || (G = {}));\n return G;\n });\n M(a, \"Core/Axis/Tick.js\", [a[\"Core/FormatUtilities.js\"], a[\"Core/Globals.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = u.deg2rad,\n y = z.clamp,\n G = z.correctFloat,\n H = z.defined,\n A = z.destroyObjectProperties,\n q = z.extend,\n n = z.fireEvent,\n k = z.isNumber,\n e = z.merge,\n c = z.objectEach,\n h = z.pick;\n u = function () {\n function f(a, c, e, h, f) {\n this.isNewLabel = this.isNew = !0;\n this.axis = a;\n this.pos = c;\n this.type = e || \"\";\n this.parameters = f || {};\n this.tickmarkOffset = this.parameters.tickmarkOffset;\n this.options = this.parameters.options;\n n(this, \"init\");\n e || h || this.addLabel();\n }\n f.prototype.addLabel = function () {\n var c = this,\n e = c.axis,\n f = e.options,\n t = e.chart,\n J = e.categories,\n C = e.logarithmic,\n r = e.names,\n l = c.pos,\n b = h(c.options && c.options.labels, f.labels),\n g = e.tickPositions,\n d = l === g[0],\n m = l === g[g.length - 1],\n D = (!b.step || 1 === b.step) && 1 === e.tickInterval;\n g = g.info;\n var x = c.label,\n I;\n J = this.parameters.category || (J ? h(J[l], r[l], l) : l);\n C && k(J) && (J = G(C.lin2log(J)));\n if (e.dateTime) if (g) {\n var P = t.time.resolveDTLFormat(f.dateTimeLabelFormats[!f.grid && g.higherRanks[l] || g.unitName]);\n var v = P.main;\n } else k(J) && (v = e.dateTime.getXDateFormat(J, f.dateTimeLabelFormats || {}));\n c.isFirst = d;\n c.isLast = m;\n var O = {\n axis: e,\n chart: t,\n dateTimeLabelFormat: v,\n isFirst: d,\n isLast: m,\n pos: l,\n tick: c,\n tickPositionInfo: g,\n value: J\n };\n n(this, \"labelFormat\", O);\n var u = function (d) {\n return b.formatter ? b.formatter.call(d, d) : b.format ? (d.text = e.defaultLabelFormatter.call(d), a.format(b.format, d, t)) : e.defaultLabelFormatter.call(d, d);\n };\n f = u.call(O, O);\n var A = P && P.list;\n c.shortenLabel = A ? function () {\n for (I = 0; I < A.length; I++) if (q(O, {\n dateTimeLabelFormat: A[I]\n }), x.attr({\n text: u.call(O, O)\n }), x.getBBox().width < e.getSlotWidth(c) - 2 * b.padding) return;\n x.attr({\n text: \"\"\n });\n } : void 0;\n D && e._addedPlotLB && c.moveLabel(f, b);\n H(x) || c.movedLabel ? x && x.textStr !== f && !D && (!x.textWidth || b.style.width || x.styles.width || x.css({\n width: null\n }), x.attr({\n text: f\n }), x.textPxLength = x.getBBox().width) : (c.label = x = c.createLabel({\n x: 0,\n y: 0\n }, f, b), c.rotation = 0);\n };\n f.prototype.createLabel = function (a, c, h) {\n var f = this.axis,\n p = f.chart;\n if (a = H(c) && h.enabled ? p.renderer.text(c, a.x, a.y, h.useHTML).add(f.labelGroup) : null) p.styledMode || a.css(e(h.style)), a.textPxLength = a.getBBox().width;\n return a;\n };\n f.prototype.destroy = function () {\n A(this, this.axis);\n };\n f.prototype.getPosition = function (a, c, e, h) {\n var f = this.axis,\n p = f.chart,\n r = h && p.oldChartHeight || p.chartHeight;\n a = {\n x: a ? G(f.translate(c + e, null, null, h) + f.transB) : f.left + f.offset + (f.opposite ? (h && p.oldChartWidth || p.chartWidth) - f.right - f.left : 0),\n y: a ? r - f.bottom + f.offset - (f.opposite ? f.height : 0) : G(r - f.translate(c + e, null, null, h) - f.transB)\n };\n a.y = y(a.y, -1E5, 1E5);\n n(this, \"afterGetPosition\", {\n pos: a\n });\n return a;\n };\n f.prototype.getLabelPosition = function (a, c, e, h, f, k, r, l) {\n var b = this.axis,\n g = b.transA,\n d = b.isLinked && b.linkedParent ? b.linkedParent.reversed : b.reversed,\n m = b.staggerLines,\n D = b.tickRotCorr || {\n x: 0,\n y: 0\n },\n x = h || b.reserveSpaceDefault ? 0 : -b.labelOffset * (\"center\" === b.labelAlign ? .5 : 1),\n p = {},\n t = f.y;\n H(t) || (t = 0 === b.side ? e.rotation ? -8 : -e.getBBox().height : 2 === b.side ? D.y + 8 : Math.cos(e.rotation * v) * (D.y - e.getBBox(!1, 0).height / 2));\n a = a + f.x + x + D.x - (k && h ? k * g * (d ? -1 : 1) : 0);\n c = c + t - (k && !h ? k * g * (d ? 1 : -1) : 0);\n m && (e = r / (l || 1) % m, b.opposite && (e = m - e - 1), c += b.labelOffset / m * e);\n p.x = a;\n p.y = Math.round(c);\n n(this, \"afterGetLabelPosition\", {\n pos: p,\n tickmarkOffset: k,\n index: r\n });\n return p;\n };\n f.prototype.getLabelSize = function () {\n return this.label ? this.label.getBBox()[this.axis.horiz ? \"height\" : \"width\"] : 0;\n };\n f.prototype.getMarkPath = function (a, c, e, h, f, k) {\n return k.crispLine([[\"M\", a, c], [\"L\", a + (f ? 0 : -e), c + (f ? e : 0)]], h);\n };\n f.prototype.handleOverflow = function (a) {\n var c = this.axis,\n e = c.options.labels,\n f = a.x,\n k = c.chart.chartWidth,\n n = c.chart.spacing,\n r = h(c.labelLeft, Math.min(c.pos, n[3]));\n n = h(c.labelRight, Math.max(c.isRadial ? 0 : c.pos + c.len, k - n[1]));\n var l = this.label,\n b = this.rotation,\n g = {\n left: 0,\n center: .5,\n right: 1\n }[c.labelAlign || l.attr(\"align\")],\n d = l.getBBox().width,\n m = c.getSlotWidth(this),\n D = {},\n x = m,\n I = 1,\n w;\n if (b || \"justify\" !== e.overflow) 0 > b && f - g * d < r ? w = Math.round(f / Math.cos(b * v) - r) : 0 < b && f + g * d > n && (w = Math.round((k - f) / Math.cos(b * v)));else if (k = f + (1 - g) * d, f - g * d < r ? x = a.x + x * (1 - g) - r : k > n && (x = n - a.x + x * g, I = -1), x = Math.min(m, x), x < m && \"center\" === c.labelAlign && (a.x += I * (m - x - g * (m - Math.min(d, x)))), d > x || c.autoRotation && (l.styles || {}).width) w = x;\n w && (this.shortenLabel ? this.shortenLabel() : (D.width = Math.floor(w) + \"px\", (e.style || {}).textOverflow || (D.textOverflow = \"ellipsis\"), l.css(D)));\n };\n f.prototype.moveLabel = function (a, e) {\n var h = this,\n f = h.label,\n k = h.axis,\n p = k.reversed,\n r = !1;\n f && f.textStr === a ? (h.movedLabel = f, r = !0, delete h.label) : c(k.ticks, function (b) {\n r || b.isNew || b === h || !b.label || b.label.textStr !== a || (h.movedLabel = b.label, r = !0, b.labelPos = h.movedLabel.xy, delete b.label);\n });\n if (!r && (h.labelPos || f)) {\n var l = h.labelPos || f.xy;\n f = k.horiz ? p ? 0 : k.width + k.left : l.x;\n k = k.horiz ? l.y : p ? k.width + k.left : 0;\n h.movedLabel = h.createLabel({\n x: f,\n y: k\n }, a, e);\n h.movedLabel && h.movedLabel.attr({\n opacity: 0\n });\n }\n };\n f.prototype.render = function (a, c, e) {\n var f = this.axis,\n k = f.horiz,\n p = this.pos,\n r = h(this.tickmarkOffset, f.tickmarkOffset);\n p = this.getPosition(k, p, r, c);\n r = p.x;\n var l = p.y;\n f = k && r === f.pos + f.len || !k && l === f.pos ? -1 : 1;\n k = h(e, this.label && this.label.newOpacity, 1);\n e = h(e, 1);\n this.isActive = !0;\n this.renderGridLine(c, e, f);\n this.renderMark(p, e, f);\n this.renderLabel(p, c, k, a);\n this.isNew = !1;\n n(this, \"afterRender\");\n };\n f.prototype.renderGridLine = function (a, c, e) {\n var f = this.axis,\n k = f.options,\n p = {},\n r = this.pos,\n l = this.type,\n b = h(this.tickmarkOffset, f.tickmarkOffset),\n g = f.chart.renderer,\n d = this.gridLine,\n m = k.gridLineWidth,\n D = k.gridLineColor,\n x = k.gridLineDashStyle;\n \"minor\" === this.type && (m = k.minorGridLineWidth, D = k.minorGridLineColor, x = k.minorGridLineDashStyle);\n d || (f.chart.styledMode || (p.stroke = D, p[\"stroke-width\"] = m || 0, p.dashstyle = x), l || (p.zIndex = 1), a && (c = 0), this.gridLine = d = g.path().attr(p).addClass(\"highcharts-\" + (l ? l + \"-\" : \"\") + \"grid-line\").add(f.gridGroup));\n if (d && (e = f.getPlotLinePath({\n value: r + b,\n lineWidth: d.strokeWidth() * e,\n force: \"pass\",\n old: a\n }))) d[a || this.isNew ? \"attr\" : \"animate\"]({\n d: e,\n opacity: c\n });\n };\n f.prototype.renderMark = function (a, c, e) {\n var f = this.axis,\n k = f.options,\n p = f.chart.renderer,\n r = this.type,\n l = f.tickSize(r ? r + \"Tick\" : \"tick\"),\n b = a.x;\n a = a.y;\n var g = h(k[\"minor\" !== r ? \"tickWidth\" : \"minorTickWidth\"], !r && f.isXAxis ? 1 : 0);\n k = k[\"minor\" !== r ? \"tickColor\" : \"minorTickColor\"];\n var d = this.mark,\n m = !d;\n l && (f.opposite && (l[0] = -l[0]), d || (this.mark = d = p.path().addClass(\"highcharts-\" + (r ? r + \"-\" : \"\") + \"tick\").add(f.axisGroup), f.chart.styledMode || d.attr({\n stroke: k,\n \"stroke-width\": g\n })), d[m ? \"attr\" : \"animate\"]({\n d: this.getMarkPath(b, a, l[0], d.strokeWidth() * e, f.horiz, p),\n opacity: c\n }));\n };\n f.prototype.renderLabel = function (a, c, e, f) {\n var p = this.axis,\n n = p.horiz,\n r = p.options,\n l = this.label,\n b = r.labels,\n g = b.step;\n p = h(this.tickmarkOffset, p.tickmarkOffset);\n var d = a.x;\n a = a.y;\n var m = !0;\n l && k(d) && (l.xy = a = this.getLabelPosition(d, a, l, n, b, p, f, g), this.isFirst && !this.isLast && !r.showFirstLabel || this.isLast && !this.isFirst && !r.showLastLabel ? m = !1 : !n || b.step || b.rotation || c || 0 === e || this.handleOverflow(a), g && f % g && (m = !1), m && k(a.y) ? (a.opacity = e, l[this.isNewLabel ? \"attr\" : \"animate\"](a), this.isNewLabel = !1) : (l.attr(\"y\", -9999), this.isNewLabel = !0));\n };\n f.prototype.replaceMovedLabel = function () {\n var a = this.label,\n c = this.axis,\n e = c.reversed;\n if (a && !this.isNew) {\n var f = c.horiz ? e ? c.left : c.width + c.left : a.xy.x;\n e = c.horiz ? a.xy.y : e ? c.width + c.top : c.top;\n a.animate({\n x: f,\n y: e,\n opacity: 0\n }, void 0, a.destroy);\n delete this.label;\n }\n c.isDirty = !0;\n this.label = this.movedLabel;\n delete this.movedLabel;\n };\n return f;\n }();\n \"\";\n return u;\n });\n M(a, \"Core/Axis/Axis.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/Axis/AxisDefaults.js\"], a[\"Core/Color/Color.js\"], a[\"Core/DefaultOptions.js\"], a[\"Core/Foundation.js\"], a[\"Core/Globals.js\"], a[\"Core/Axis/Tick.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G, H, A) {\n var q = a.animObject,\n n = F.defaultOptions,\n k = y.registerEventOptions,\n e = G.deg2rad,\n c = A.arrayMax,\n h = A.arrayMin,\n f = A.clamp,\n w = A.correctFloat,\n p = A.defined,\n B = A.destroyObjectProperties,\n t = A.erase,\n J = A.error,\n C = A.extend,\n r = A.fireEvent,\n l = A.getMagnitude,\n b = A.isArray,\n g = A.isNumber,\n d = A.isString,\n m = A.merge,\n D = A.normalizeTickInterval,\n x = A.objectEach,\n I = A.pick,\n P = A.relativeLength,\n v = A.removeEvent,\n O = A.splat,\n U = A.syncTimeout;\n a = function () {\n function a(b, d) {\n this.zoomEnabled = this.width = this.visible = this.userOptions = this.translationSlope = this.transB = this.transA = this.top = this.ticks = this.tickRotCorr = this.tickPositions = this.tickmarkOffset = this.tickInterval = this.tickAmount = this.side = this.series = this.right = this.positiveValuesOnly = this.pos = this.pointRangePadding = this.pointRange = this.plotLinesAndBandsGroups = this.plotLinesAndBands = this.paddedTicks = this.overlap = this.options = this.offset = this.names = this.minPixelPadding = this.minorTicks = this.minorTickInterval = this.min = this.maxLabelLength = this.max = this.len = this.left = this.labelFormatter = this.labelEdge = this.isLinked = this.height = this.hasVisibleSeries = this.hasNames = this.eventOptions = this.coll = this.closestPointRange = this.chart = this.categories = this.bottom = this.alternateBands = void 0;\n this.init(b, d);\n }\n a.prototype.init = function (b, d) {\n var a = d.isX;\n this.chart = b;\n this.horiz = b.inverted && !this.isZAxis ? !a : a;\n this.isXAxis = a;\n this.coll = this.coll || (a ? \"xAxis\" : \"yAxis\");\n r(this, \"init\", {\n userOptions: d\n });\n this.opposite = I(d.opposite, this.opposite);\n this.side = I(d.side, this.side, this.horiz ? this.opposite ? 0 : 2 : this.opposite ? 1 : 3);\n this.setOptions(d);\n var c = this.options,\n e = c.labels,\n m = c.type;\n this.userOptions = d;\n this.minPixelPadding = 0;\n this.reversed = I(c.reversed, this.reversed);\n this.visible = c.visible;\n this.zoomEnabled = c.zoomEnabled;\n this.hasNames = \"category\" === m || !0 === c.categories;\n this.categories = c.categories || this.hasNames;\n this.names || (this.names = [], this.names.keys = {});\n this.plotLinesAndBandsGroups = {};\n this.positiveValuesOnly = !!this.logarithmic;\n this.isLinked = p(c.linkedTo);\n this.ticks = {};\n this.labelEdge = [];\n this.minorTicks = {};\n this.plotLinesAndBands = [];\n this.alternateBands = {};\n this.len = 0;\n this.minRange = this.userMinRange = c.minRange || c.maxZoom;\n this.range = c.range;\n this.offset = c.offset || 0;\n this.min = this.max = null;\n d = I(c.crosshair, O(b.options.tooltip.crosshairs)[a ? 0 : 1]);\n this.crosshair = !0 === d ? {} : d;\n -1 === b.axes.indexOf(this) && (a ? b.axes.splice(b.xAxis.length, 0, this) : b.axes.push(this), b[this.coll].push(this));\n this.series = this.series || [];\n b.inverted && !this.isZAxis && a && \"undefined\" === typeof this.reversed && (this.reversed = !0);\n this.labelRotation = g(e.rotation) ? e.rotation : void 0;\n k(this, c);\n r(this, \"afterInit\");\n };\n a.prototype.setOptions = function (b) {\n this.options = m(u.defaultXAxisOptions, \"yAxis\" === this.coll && u.defaultYAxisOptions, [u.defaultTopAxisOptions, u.defaultRightAxisOptions, u.defaultBottomAxisOptions, u.defaultLeftAxisOptions][this.side], m(n[this.coll], b));\n r(this, \"afterSetOptions\", {\n userOptions: b\n });\n };\n a.prototype.defaultLabelFormatter = function (b) {\n var d = this.axis;\n b = this.chart.numberFormatter;\n var a = g(this.value) ? this.value : NaN,\n c = d.chart.time,\n e = this.dateTimeLabelFormat,\n m = n.lang,\n l = m.numericSymbols;\n m = m.numericSymbolMagnitude || 1E3;\n var f = d.logarithmic ? Math.abs(a) : d.tickInterval,\n h = l && l.length;\n if (d.categories) var r = \"\" + this.value;else if (e) r = c.dateFormat(e, a);else if (h && 1E3 <= f) for (; h-- && \"undefined\" === typeof r;) d = Math.pow(m, h + 1), f >= d && 0 === 10 * a % d && null !== l[h] && 0 !== a && (r = b(a / d, -1) + l[h]);\n \"undefined\" === typeof r && (r = 1E4 <= Math.abs(a) ? b(a, -1) : b(a, -1, void 0, \"\"));\n return r;\n };\n a.prototype.getSeriesExtremes = function () {\n var b = this,\n d = b.chart,\n a;\n r(this, \"getSeriesExtremes\", null, function () {\n b.hasVisibleSeries = !1;\n b.dataMin = b.dataMax = b.threshold = null;\n b.softThreshold = !b.isXAxis;\n b.stacking && b.stacking.buildStacks();\n b.series.forEach(function (c) {\n if (c.visible || !d.options.chart.ignoreHiddenSeries) {\n var e = c.options,\n m = e.threshold;\n b.hasVisibleSeries = !0;\n b.positiveValuesOnly && 0 >= m && (m = null);\n if (b.isXAxis) {\n if (e = c.xData, e.length) {\n e = b.logarithmic ? e.filter(b.validatePositiveValue) : e;\n a = c.getXExtremes(e);\n var l = a.min;\n var f = a.max;\n g(l) || l instanceof Date || (e = e.filter(g), a = c.getXExtremes(e), l = a.min, f = a.max);\n e.length && (b.dataMin = Math.min(I(b.dataMin, l), l), b.dataMax = Math.max(I(b.dataMax, f), f));\n }\n } else if (c = c.applyExtremes(), g(c.dataMin) && (l = c.dataMin, b.dataMin = Math.min(I(b.dataMin, l), l)), g(c.dataMax) && (f = c.dataMax, b.dataMax = Math.max(I(b.dataMax, f), f)), p(m) && (b.threshold = m), !e.softThreshold || b.positiveValuesOnly) b.softThreshold = !1;\n }\n });\n });\n r(this, \"afterGetSeriesExtremes\");\n };\n a.prototype.translate = function (b, d, a, c, e, m) {\n var l = this.linkedParent || this,\n f = c && l.old ? l.old.min : l.min,\n r = l.minPixelPadding;\n e = (l.isOrdinal || l.brokenAxis && l.brokenAxis.hasBreaks || l.logarithmic && e) && l.lin2val;\n var h = 1,\n k = 0;\n c = c && l.old ? l.old.transA : l.transA;\n c || (c = l.transA);\n a && (h *= -1, k = l.len);\n l.reversed && (h *= -1, k -= h * (l.sector || l.len));\n d ? (b = (b * h + k - r) / c + f, e && (b = l.lin2val(b))) : (e && (b = l.val2lin(b)), b = g(f) ? h * (b - f) * c + k + h * r + (g(m) ? c * m : 0) : void 0);\n return b;\n };\n a.prototype.toPixels = function (b, d) {\n return this.translate(b, !1, !this.horiz, null, !0) + (d ? 0 : this.pos);\n };\n a.prototype.toValue = function (b, d) {\n return this.translate(b - (d ? 0 : this.pos), !0, !this.horiz, null, !0);\n };\n a.prototype.getPlotLinePath = function (b) {\n function d(b, d, a) {\n if (\"pass\" !== n && b < d || b > a) n ? b = f(b, d, a) : B = !0;\n return b;\n }\n var a = this,\n c = a.chart,\n e = a.left,\n m = a.top,\n l = b.old,\n h = b.value,\n k = b.lineWidth,\n x = l && c.oldChartHeight || c.chartHeight,\n D = l && c.oldChartWidth || c.chartWidth,\n L = a.transB,\n p = b.translatedValue,\n n = b.force,\n t,\n C,\n w,\n q,\n B;\n b = {\n value: h,\n lineWidth: k,\n old: l,\n force: n,\n acrossPanes: b.acrossPanes,\n translatedValue: p\n };\n r(this, \"getPlotLinePath\", b, function (b) {\n p = I(p, a.translate(h, null, null, l));\n p = f(p, -1E5, 1E5);\n t = w = Math.round(p + L);\n C = q = Math.round(x - p - L);\n g(p) ? a.horiz ? (C = m, q = x - a.bottom, t = w = d(t, e, e + a.width)) : (t = e, w = D - a.right, C = q = d(C, m, m + a.height)) : (B = !0, n = !1);\n b.path = B && !n ? null : c.renderer.crispLine([[\"M\", t, C], [\"L\", w, q]], k || 1);\n });\n return b.path;\n };\n a.prototype.getLinearTickPositions = function (b, d, a) {\n var c = w(Math.floor(d / b) * b);\n a = w(Math.ceil(a / b) * b);\n var e = [],\n g;\n w(c + b) === c && (g = 20);\n if (this.single) return [d];\n for (d = c; d <= a;) {\n e.push(d);\n d = w(d + b, g);\n if (d === m) break;\n var m = d;\n }\n return e;\n };\n a.prototype.getMinorTickInterval = function () {\n var b = this.options;\n return !0 === b.minorTicks ? I(b.minorTickInterval, \"auto\") : !1 === b.minorTicks ? null : b.minorTickInterval;\n };\n a.prototype.getMinorTickPositions = function () {\n var b = this.options,\n d = this.tickPositions,\n a = this.minorTickInterval,\n c = this.pointRangePadding || 0,\n e = this.min - c;\n c = this.max + c;\n var g = c - e,\n m = [];\n if (g && g / a < this.len / 3) {\n var l = this.logarithmic;\n if (l) this.paddedTicks.forEach(function (b, d, c) {\n d && m.push.apply(m, l.getLogTickPositions(a, c[d - 1], c[d], !0));\n });else if (this.dateTime && \"auto\" === this.getMinorTickInterval()) m = m.concat(this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(a), e, c, b.startOfWeek));else for (b = e + (d[0] - e) % a; b <= c && b !== m[0]; b += a) m.push(b);\n }\n 0 !== m.length && this.trimTicks(m);\n return m;\n };\n a.prototype.adjustForMinRange = function () {\n var b = this.options,\n d = this.logarithmic,\n a = this.min,\n e = this.max,\n g = 0,\n m,\n l,\n f,\n r;\n this.isXAxis && \"undefined\" === typeof this.minRange && !d && (p(b.min) || p(b.max) || p(b.floor) || p(b.ceiling) ? this.minRange = null : (this.series.forEach(function (b) {\n f = b.xData;\n r = b.xIncrement ? 1 : f.length - 1;\n if (1 < f.length) for (m = r; 0 < m; m--) if (l = f[m] - f[m - 1], !g || l < g) g = l;\n }), this.minRange = Math.min(5 * g, this.dataMax - this.dataMin)));\n if (e - a < this.minRange) {\n var k = this.dataMax - this.dataMin >= this.minRange;\n var x = this.minRange;\n var D = (x - e + a) / 2;\n D = [a - D, I(b.min, a - D)];\n k && (D[2] = this.logarithmic ? this.logarithmic.log2lin(this.dataMin) : this.dataMin);\n a = c(D);\n e = [a + x, I(b.max, a + x)];\n k && (e[2] = d ? d.log2lin(this.dataMax) : this.dataMax);\n e = h(e);\n e - a < x && (D[0] = e - x, D[1] = I(b.min, e - x), a = c(D));\n }\n this.min = a;\n this.max = e;\n };\n a.prototype.getClosest = function () {\n var b;\n this.categories ? b = 1 : this.series.forEach(function (d) {\n var a = d.closestPointRange,\n c = d.visible || !d.chart.options.chart.ignoreHiddenSeries;\n !d.noSharedTooltip && p(a) && c && (b = p(b) ? Math.min(b, a) : a);\n });\n return b;\n };\n a.prototype.nameToX = function (d) {\n var a = b(this.categories),\n c = a ? this.categories : this.names,\n e = d.options.x;\n d.series.requireSorting = !1;\n p(e) || (e = this.options.uniqueNames ? a ? c.indexOf(d.name) : I(c.keys[d.name], -1) : d.series.autoIncrement());\n if (-1 === e) {\n if (!a) var g = c.length;\n } else g = e;\n \"undefined\" !== typeof g && (this.names[g] = d.name, this.names.keys[d.name] = g);\n return g;\n };\n a.prototype.updateNames = function () {\n var b = this,\n d = this.names;\n 0 < d.length && (Object.keys(d.keys).forEach(function (b) {\n delete d.keys[b];\n }), d.length = 0, this.minRange = this.userMinRange, (this.series || []).forEach(function (d) {\n d.xIncrement = null;\n if (!d.points || d.isDirtyData) b.max = Math.max(b.max, d.xData.length - 1), d.processData(), d.generatePoints();\n d.data.forEach(function (a, c) {\n if (a && a.options && \"undefined\" !== typeof a.name) {\n var e = b.nameToX(a);\n \"undefined\" !== typeof e && e !== a.x && (a.x = e, d.xData[c] = e);\n }\n });\n }));\n };\n a.prototype.setAxisTranslation = function () {\n var b = this,\n a = b.max - b.min,\n c = b.linkedParent,\n e = !!b.categories,\n g = b.isXAxis,\n m = b.axisPointRange || 0,\n l = 0,\n f = 0,\n h = b.transA;\n if (g || e || m) {\n var k = b.getClosest();\n c ? (l = c.minPointOffset, f = c.pointRangePadding) : b.series.forEach(function (a) {\n var c = e ? 1 : g ? I(a.options.pointRange, k, 0) : b.axisPointRange || 0,\n h = a.options.pointPlacement;\n m = Math.max(m, c);\n if (!b.single || e) a = a.is(\"xrange\") ? !g : g, l = Math.max(l, a && d(h) ? 0 : c / 2), f = Math.max(f, a && \"on\" === h ? 0 : c);\n });\n c = b.ordinal && b.ordinal.slope && k ? b.ordinal.slope / k : 1;\n b.minPointOffset = l *= c;\n b.pointRangePadding = f *= c;\n b.pointRange = Math.min(m, b.single && e ? 1 : a);\n g && (b.closestPointRange = k);\n }\n b.translationSlope = b.transA = h = b.staticScale || b.len / (a + f || 1);\n b.transB = b.horiz ? b.left : b.bottom;\n b.minPixelPadding = h * l;\n r(this, \"afterSetAxisTranslation\");\n };\n a.prototype.minFromRange = function () {\n return this.max - this.range;\n };\n a.prototype.setTickInterval = function (b) {\n var d = this.chart,\n a = this.logarithmic,\n c = this.options,\n e = this.isXAxis,\n m = this.isLinked,\n f = c.tickPixelInterval,\n h = this.categories,\n k = this.softThreshold,\n x = c.maxPadding,\n L = c.minPadding,\n n = g(c.tickInterval) && 0 <= c.tickInterval ? c.tickInterval : void 0,\n t = g(this.threshold) ? this.threshold : null;\n this.dateTime || h || m || this.getTickAmount();\n var C = I(this.userMin, c.min);\n var q = I(this.userMax, c.max);\n if (m) {\n this.linkedParent = d[this.coll][c.linkedTo];\n var B = this.linkedParent.getExtremes();\n this.min = I(B.min, B.dataMin);\n this.max = I(B.max, B.dataMax);\n c.type !== this.linkedParent.options.type && J(11, 1, d);\n } else {\n if (k && p(t)) if (this.dataMin >= t) B = t, L = 0;else if (this.dataMax <= t) {\n var P = t;\n x = 0;\n }\n this.min = I(C, B, this.dataMin);\n this.max = I(q, P, this.dataMax);\n }\n a && (this.positiveValuesOnly && !b && 0 >= Math.min(this.min, I(this.dataMin, this.min)) && J(10, 1, d), this.min = w(a.log2lin(this.min), 16), this.max = w(a.log2lin(this.max), 16));\n this.range && p(this.max) && (this.userMin = this.min = C = Math.max(this.dataMin, this.minFromRange()), this.userMax = q = this.max, this.range = null);\n r(this, \"foundExtremes\");\n this.beforePadding && this.beforePadding();\n this.adjustForMinRange();\n !(h || this.axisPointRange || this.stacking && this.stacking.usePercentage || m) && p(this.min) && p(this.max) && (d = this.max - this.min) && (!p(C) && L && (this.min -= d * L), !p(q) && x && (this.max += d * x));\n g(this.userMin) || (g(c.softMin) && c.softMin < this.min && (this.min = C = c.softMin), g(c.floor) && (this.min = Math.max(this.min, c.floor)));\n g(this.userMax) || (g(c.softMax) && c.softMax > this.max && (this.max = q = c.softMax), g(c.ceiling) && (this.max = Math.min(this.max, c.ceiling)));\n k && p(this.dataMin) && (t = t || 0, !p(C) && this.min < t && this.dataMin >= t ? this.min = this.options.minRange ? Math.min(t, this.max - this.minRange) : t : !p(q) && this.max > t && this.dataMax <= t && (this.max = this.options.minRange ? Math.max(t, this.min + this.minRange) : t));\n g(this.min) && g(this.max) && !this.chart.polar && this.min > this.max && (p(this.options.min) ? this.max = this.min : p(this.options.max) && (this.min = this.max));\n this.tickInterval = this.min === this.max || \"undefined\" === typeof this.min || \"undefined\" === typeof this.max ? 1 : m && this.linkedParent && !n && f === this.linkedParent.options.tickPixelInterval ? n = this.linkedParent.tickInterval : I(n, this.tickAmount ? (this.max - this.min) / Math.max(this.tickAmount - 1, 1) : void 0, h ? 1 : (this.max - this.min) * f / Math.max(this.len, f));\n if (e && !b) {\n var v = this.min !== (this.old && this.old.min) || this.max !== (this.old && this.old.max);\n this.series.forEach(function (b) {\n b.forceCrop = b.forceCropping && b.forceCropping();\n b.processData(v);\n });\n r(this, \"postProcessData\", {\n hasExtemesChanged: v\n });\n }\n this.setAxisTranslation();\n r(this, \"initialAxisTranslation\");\n this.pointRange && !n && (this.tickInterval = Math.max(this.pointRange, this.tickInterval));\n b = I(c.minTickInterval, this.dateTime && !this.series.some(function (b) {\n return b.noSharedTooltip;\n }) ? this.closestPointRange : 0);\n !n && this.tickInterval < b && (this.tickInterval = b);\n this.dateTime || this.logarithmic || n || (this.tickInterval = D(this.tickInterval, void 0, l(this.tickInterval), I(c.allowDecimals, .5 > this.tickInterval || void 0 !== this.tickAmount), !!this.tickAmount));\n this.tickAmount || (this.tickInterval = this.unsquish());\n this.setTickPositions();\n };\n a.prototype.setTickPositions = function () {\n var b = this.options,\n d = b.tickPositions,\n a = this.getMinorTickInterval(),\n c = this.hasVerticalPanning(),\n e = \"colorAxis\" === this.coll,\n g = (e || !c) && b.startOnTick;\n c = (e || !c) && b.endOnTick;\n e = b.tickPositioner;\n this.tickmarkOffset = this.categories && \"between\" === b.tickmarkPlacement && 1 === this.tickInterval ? .5 : 0;\n this.minorTickInterval = \"auto\" === a && this.tickInterval ? this.tickInterval / 5 : a;\n this.single = this.min === this.max && p(this.min) && !this.tickAmount && (parseInt(this.min, 10) === this.min || !1 !== b.allowDecimals);\n this.tickPositions = a = d && d.slice();\n !a && (this.ordinal && this.ordinal.positions || !((this.max - this.min) / this.tickInterval > Math.max(2 * this.len, 200)) ? a = this.dateTime ? this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval, b.units), this.min, this.max, b.startOfWeek, this.ordinal && this.ordinal.positions, this.closestPointRange, !0) : this.logarithmic ? this.logarithmic.getLogTickPositions(this.tickInterval, this.min, this.max) : this.getLinearTickPositions(this.tickInterval, this.min, this.max) : (a = [this.min, this.max], J(19, !1, this.chart)), a.length > this.len && (a = [a[0], a.pop()], a[0] === a[1] && (a.length = 1)), this.tickPositions = a, e && (e = e.apply(this, [this.min, this.max]))) && (this.tickPositions = a = e);\n this.paddedTicks = a.slice(0);\n this.trimTicks(a, g, c);\n this.isLinked || (this.single && 2 > a.length && !this.categories && !this.series.some(function (b) {\n return b.is(\"heatmap\") && \"between\" === b.options.pointPlacement;\n }) && (this.min -= .5, this.max += .5), d || e || this.adjustTickAmount());\n r(this, \"afterSetTickPositions\");\n };\n a.prototype.trimTicks = function (b, d, a) {\n var c = b[0],\n e = b[b.length - 1],\n g = !this.isOrdinal && this.minPointOffset || 0;\n r(this, \"trimTicks\");\n if (!this.isLinked) {\n if (d && -Infinity !== c) this.min = c;else for (; this.min - g > b[0];) b.shift();\n if (a) this.max = e;else for (; this.max + g < b[b.length - 1];) b.pop();\n 0 === b.length && p(c) && !this.options.tickPositions && b.push((e + c) / 2);\n }\n };\n a.prototype.alignToOthers = function () {\n var b = {},\n d = this.options,\n a;\n !1 !== this.chart.options.chart.alignTicks && d.alignTicks && !1 !== d.startOnTick && !1 !== d.endOnTick && !this.logarithmic && this.chart[this.coll].forEach(function (d) {\n var c = d.options;\n c = [d.horiz ? c.left : c.top, c.width, c.height, c.pane].join();\n d.series.length && (b[c] ? a = !0 : b[c] = 1);\n });\n return a;\n };\n a.prototype.getTickAmount = function () {\n var b = this.options,\n d = b.tickPixelInterval,\n a = b.tickAmount;\n !p(b.tickInterval) && !a && this.len < d && !this.isRadial && !this.logarithmic && b.startOnTick && b.endOnTick && (a = 2);\n !a && this.alignToOthers() && (a = Math.ceil(this.len / d) + 1);\n 4 > a && (this.finalTickAmt = a, a = 5);\n this.tickAmount = a;\n };\n a.prototype.adjustTickAmount = function () {\n var b = this.options,\n d = this.tickInterval,\n a = this.tickPositions,\n c = this.tickAmount,\n e = this.finalTickAmt,\n m = a && a.length,\n l = I(this.threshold, this.softThreshold ? 0 : null);\n if (this.hasData() && g(this.min) && g(this.max)) {\n if (m < c) {\n for (; a.length < c;) a.length % 2 || this.min === l ? a.push(w(a[a.length - 1] + d)) : a.unshift(w(a[0] - d));\n this.transA *= (m - 1) / (c - 1);\n this.min = b.startOnTick ? a[0] : Math.min(this.min, a[0]);\n this.max = b.endOnTick ? a[a.length - 1] : Math.max(this.max, a[a.length - 1]);\n } else m > c && (this.tickInterval *= 2, this.setTickPositions());\n if (p(e)) {\n for (d = b = a.length; d--;) (3 === e && 1 === d % 2 || 2 >= e && 0 < d && d < b - 1) && a.splice(d, 1);\n this.finalTickAmt = void 0;\n }\n }\n };\n a.prototype.setScale = function () {\n var b = !1,\n d = !1;\n this.series.forEach(function (a) {\n b = b || a.isDirtyData || a.isDirty;\n d = d || a.xAxis && a.xAxis.isDirty || !1;\n });\n this.setAxisSize();\n var a = this.len !== (this.old && this.old.len);\n a || b || d || this.isLinked || this.forceRedraw || this.userMin !== (this.old && this.old.userMin) || this.userMax !== (this.old && this.old.userMax) || this.alignToOthers() ? (this.stacking && this.stacking.resetStacks(), this.forceRedraw = !1, this.getSeriesExtremes(), this.setTickInterval(), this.isDirty || (this.isDirty = a || this.min !== (this.old && this.old.min) || this.max !== (this.old && this.old.max))) : this.stacking && this.stacking.cleanStacks();\n b && this.panningState && (this.panningState.isDirty = !0);\n r(this, \"afterSetScale\");\n };\n a.prototype.setExtremes = function (b, d, a, c, e) {\n var g = this,\n m = g.chart;\n a = I(a, !0);\n g.series.forEach(function (b) {\n delete b.kdTree;\n });\n e = C(e, {\n min: b,\n max: d\n });\n r(g, \"setExtremes\", e, function () {\n g.userMin = b;\n g.userMax = d;\n g.eventArgs = e;\n a && m.redraw(c);\n });\n };\n a.prototype.zoom = function (b, d) {\n var a = this,\n c = this.dataMin,\n e = this.dataMax,\n g = this.options,\n m = Math.min(c, I(g.min, c)),\n l = Math.max(e, I(g.max, e));\n b = {\n newMin: b,\n newMax: d\n };\n r(this, \"zoom\", b, function (b) {\n var d = b.newMin,\n g = b.newMax;\n if (d !== a.min || g !== a.max) a.allowZoomOutside || (p(c) && (d < m && (d = m), d > l && (d = l)), p(e) && (g < m && (g = m), g > l && (g = l))), a.displayBtn = \"undefined\" !== typeof d || \"undefined\" !== typeof g, a.setExtremes(d, g, !1, void 0, {\n trigger: \"zoom\"\n });\n b.zoomed = !0;\n });\n return b.zoomed;\n };\n a.prototype.setAxisSize = function () {\n var b = this.chart,\n d = this.options,\n a = d.offsets || [0, 0, 0, 0],\n c = this.horiz,\n e = this.width = Math.round(P(I(d.width, b.plotWidth - a[3] + a[1]), b.plotWidth)),\n g = this.height = Math.round(P(I(d.height, b.plotHeight - a[0] + a[2]), b.plotHeight)),\n m = this.top = Math.round(P(I(d.top, b.plotTop + a[0]), b.plotHeight, b.plotTop));\n d = this.left = Math.round(P(I(d.left, b.plotLeft + a[3]), b.plotWidth, b.plotLeft));\n this.bottom = b.chartHeight - g - m;\n this.right = b.chartWidth - e - d;\n this.len = Math.max(c ? e : g, 0);\n this.pos = c ? d : m;\n };\n a.prototype.getExtremes = function () {\n var b = this.logarithmic;\n return {\n min: b ? w(b.lin2log(this.min)) : this.min,\n max: b ? w(b.lin2log(this.max)) : this.max,\n dataMin: this.dataMin,\n dataMax: this.dataMax,\n userMin: this.userMin,\n userMax: this.userMax\n };\n };\n a.prototype.getThreshold = function (b) {\n var d = this.logarithmic,\n a = d ? d.lin2log(this.min) : this.min;\n d = d ? d.lin2log(this.max) : this.max;\n null === b || -Infinity === b ? b = a : Infinity === b ? b = d : a > b ? b = a : d < b && (b = d);\n return this.translate(b, 0, 1, 0, 1);\n };\n a.prototype.autoLabelAlign = function (b) {\n var d = (I(b, 0) - 90 * this.side + 720) % 360;\n b = {\n align: \"center\"\n };\n r(this, \"autoLabelAlign\", b, function (b) {\n 15 < d && 165 > d ? b.align = \"right\" : 195 < d && 345 > d && (b.align = \"left\");\n });\n return b.align;\n };\n a.prototype.tickSize = function (b) {\n var d = this.options,\n a = I(d[\"tick\" === b ? \"tickWidth\" : \"minorTickWidth\"], \"tick\" === b && this.isXAxis && !this.categories ? 1 : 0),\n c = d[\"tick\" === b ? \"tickLength\" : \"minorTickLength\"];\n if (a && c) {\n \"inside\" === d[b + \"Position\"] && (c = -c);\n var e = [c, a];\n }\n b = {\n tickSize: e\n };\n r(this, \"afterTickSize\", b);\n return b.tickSize;\n };\n a.prototype.labelMetrics = function () {\n var b = this.tickPositions && this.tickPositions[0] || 0;\n return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize, this.ticks[b] && this.ticks[b].label);\n };\n a.prototype.unsquish = function () {\n var b = this.options.labels,\n d = this.horiz,\n a = this.tickInterval,\n c = this.len / (((this.categories ? 1 : 0) + this.max - this.min) / a),\n m = b.rotation,\n l = this.labelMetrics(),\n f = Math.max(this.max - this.min, 0),\n h = function (b) {\n var d = b / (c || 1);\n d = 1 < d ? Math.ceil(d) : 1;\n d * a > f && Infinity !== b && Infinity !== c && f && (d = Math.ceil(f / a));\n return w(d * a);\n },\n r = a,\n k,\n x,\n D = Number.MAX_VALUE;\n if (d) {\n if (!b.staggerLines && !b.step) if (g(m)) var p = [m];else c < b.autoRotationLimit && (p = b.autoRotation);\n p && p.forEach(function (b) {\n if (b === m || b && -90 <= b && 90 >= b) {\n x = h(Math.abs(l.h / Math.sin(e * b)));\n var d = x + Math.abs(b / 360);\n d < D && (D = d, k = b, r = x);\n }\n });\n } else b.step || (r = h(l.h));\n this.autoRotation = p;\n this.labelRotation = I(k, g(m) ? m : 0);\n return r;\n };\n a.prototype.getSlotWidth = function (b) {\n var d = this.chart,\n a = this.horiz,\n c = this.options.labels,\n e = Math.max(this.tickPositions.length - (this.categories ? 0 : 1), 1),\n m = d.margin[3];\n if (b && g(b.slotWidth)) return b.slotWidth;\n if (a && 2 > c.step) return c.rotation ? 0 : (this.staggerLines || 1) * this.len / e;\n if (!a) {\n b = c.style.width;\n if (void 0 !== b) return parseInt(String(b), 10);\n if (m) return m - d.spacing[3];\n }\n return .33 * d.chartWidth;\n };\n a.prototype.renderUnsquish = function () {\n var b = this.chart,\n a = b.renderer,\n c = this.tickPositions,\n e = this.ticks,\n g = this.options.labels,\n m = g.style,\n l = this.horiz,\n f = this.getSlotWidth(),\n h = Math.max(1, Math.round(f - 2 * g.padding)),\n r = {},\n k = this.labelMetrics(),\n x = m.textOverflow,\n D = 0;\n d(g.rotation) || (r.rotation = g.rotation || 0);\n c.forEach(function (b) {\n b = e[b];\n b.movedLabel && b.replaceMovedLabel();\n b && b.label && b.label.textPxLength > D && (D = b.label.textPxLength);\n });\n this.maxLabelLength = D;\n if (this.autoRotation) D > h && D > k.h ? r.rotation = this.labelRotation : this.labelRotation = 0;else if (f) {\n var p = h;\n if (!x) {\n var n = \"clip\";\n for (h = c.length; !l && h--;) {\n var I = c[h];\n if (I = e[I].label) I.styles && \"ellipsis\" === I.styles.textOverflow ? I.css({\n textOverflow: \"clip\"\n }) : I.textPxLength > f && I.css({\n width: f + \"px\"\n }), I.getBBox().height > this.len / c.length - (k.h - k.f) && (I.specificTextOverflow = \"ellipsis\");\n }\n }\n }\n r.rotation && (p = D > .5 * b.chartHeight ? .33 * b.chartHeight : D, x || (n = \"ellipsis\"));\n if (this.labelAlign = g.align || this.autoLabelAlign(this.labelRotation)) r.align = this.labelAlign;\n c.forEach(function (b) {\n var d = (b = e[b]) && b.label,\n a = m.width,\n c = {};\n d && (d.attr(r), b.shortenLabel ? b.shortenLabel() : p && !a && \"nowrap\" !== m.whiteSpace && (p < d.textPxLength || \"SPAN\" === d.element.tagName) ? (c.width = p + \"px\", x || (c.textOverflow = d.specificTextOverflow || n), d.css(c)) : d.styles && d.styles.width && !c.width && !a && d.css({\n width: null\n }), delete d.specificTextOverflow, b.rotation = r.rotation);\n }, this);\n this.tickRotCorr = a.rotCorr(k.b, this.labelRotation || 0, 0 !== this.side);\n };\n a.prototype.hasData = function () {\n return this.series.some(function (b) {\n return b.hasData();\n }) || this.options.showEmpty && p(this.min) && p(this.max);\n };\n a.prototype.addTitle = function (b) {\n var d = this.chart.renderer,\n a = this.horiz,\n c = this.opposite,\n e = this.options.title,\n g = this.chart.styledMode,\n l;\n this.axisTitle || ((l = e.textAlign) || (l = (a ? {\n low: \"left\",\n middle: \"center\",\n high: \"right\"\n } : {\n low: c ? \"right\" : \"left\",\n middle: \"center\",\n high: c ? \"left\" : \"right\"\n })[e.align]), this.axisTitle = d.text(e.text || \"\", 0, 0, e.useHTML).attr({\n zIndex: 7,\n rotation: e.rotation,\n align: l\n }).addClass(\"highcharts-axis-title\"), g || this.axisTitle.css(m(e.style)), this.axisTitle.add(this.axisGroup), this.axisTitle.isNew = !0);\n g || e.style.width || this.isRadial || this.axisTitle.css({\n width: this.len + \"px\"\n });\n this.axisTitle[b ? \"show\" : \"hide\"](b);\n };\n a.prototype.generateTick = function (b) {\n var d = this.ticks;\n d[b] ? d[b].addLabel() : d[b] = new H(this, b);\n };\n a.prototype.getOffset = function () {\n var b = this,\n d = this,\n a = d.chart,\n c = d.horiz,\n e = d.options,\n g = d.side,\n m = d.ticks,\n l = d.tickPositions,\n f = d.coll,\n h = d.axisParent,\n k = a.renderer,\n D = a.inverted && !d.isZAxis ? [1, 0, 3, 2][g] : g,\n n = d.hasData(),\n t = e.title,\n C = e.labels,\n q = a.axisOffset;\n a = a.clipOffset;\n var w = [-1, 1, 1, -1][g],\n B = e.className,\n P,\n J = 0,\n ja = 0,\n ca = 0;\n d.showAxis = P = n || e.showEmpty;\n d.staggerLines = d.horiz && C.staggerLines || void 0;\n if (!d.axisGroup) {\n var v = function (d, a, c) {\n return k.g(d).attr({\n zIndex: c\n }).addClass(\"highcharts-\" + f.toLowerCase() + a + \" \" + (b.isRadial ? \"highcharts-radial-axis\" + a + \" \" : \"\") + (B || \"\")).add(h);\n };\n d.gridGroup = v(\"grid\", \"-grid\", e.gridZIndex);\n d.axisGroup = v(\"axis\", \"\", e.zIndex);\n d.labelGroup = v(\"axis-labels\", \"-labels\", C.zIndex);\n }\n n || d.isLinked ? (l.forEach(function (b) {\n d.generateTick(b);\n }), d.renderUnsquish(), d.reserveSpaceDefault = 0 === g || 2 === g || {\n 1: \"left\",\n 3: \"right\"\n }[g] === d.labelAlign, I(C.reserveSpace, \"center\" === d.labelAlign ? !0 : null, d.reserveSpaceDefault) && l.forEach(function (b) {\n ca = Math.max(m[b].getLabelSize(), ca);\n }), d.staggerLines && (ca *= d.staggerLines), d.labelOffset = ca * (d.opposite ? -1 : 1)) : x(m, function (b, d) {\n b.destroy();\n delete m[d];\n });\n if (t && t.text && !1 !== t.enabled && (d.addTitle(P), P && !1 !== t.reserveSpace)) {\n d.titleOffset = J = d.axisTitle.getBBox()[c ? \"height\" : \"width\"];\n var O = t.offset;\n ja = p(O) ? 0 : I(t.margin, c ? 5 : 10);\n }\n d.renderLine();\n d.offset = w * I(e.offset, q[g] ? q[g] + (e.margin || 0) : 0);\n d.tickRotCorr = d.tickRotCorr || {\n x: 0,\n y: 0\n };\n t = 0 === g ? -d.labelMetrics().h : 2 === g ? d.tickRotCorr.y : 0;\n n = Math.abs(ca) + ja;\n ca && (n = n - t + w * (c ? I(C.y, d.tickRotCorr.y + 8 * w) : C.x));\n d.axisTitleMargin = I(O, n);\n d.getMaxLabelDimensions && (d.maxLabelDimensions = d.getMaxLabelDimensions(m, l));\n \"colorAxis\" !== f && (c = this.tickSize(\"tick\"), q[g] = Math.max(q[g], (d.axisTitleMargin || 0) + J + w * d.offset, n, l && l.length && c ? c[0] + w * d.offset : 0), e = !d.axisLine || e.offset ? 0 : 2 * Math.floor(d.axisLine.strokeWidth() / 2), a[D] = Math.max(a[D], e));\n r(this, \"afterGetOffset\");\n };\n a.prototype.getLinePath = function (b) {\n var d = this.chart,\n a = this.opposite,\n c = this.offset,\n e = this.horiz,\n g = this.left + (a ? this.width : 0) + c;\n c = d.chartHeight - this.bottom - (a ? this.height : 0) + c;\n a && (b *= -1);\n return d.renderer.crispLine([[\"M\", e ? this.left : g, e ? c : this.top], [\"L\", e ? d.chartWidth - this.right : g, e ? c : d.chartHeight - this.bottom]], b);\n };\n a.prototype.renderLine = function () {\n this.axisLine || (this.axisLine = this.chart.renderer.path().addClass(\"highcharts-axis-line\").add(this.axisGroup), this.chart.styledMode || this.axisLine.attr({\n stroke: this.options.lineColor,\n \"stroke-width\": this.options.lineWidth,\n zIndex: 7\n }));\n };\n a.prototype.getTitlePosition = function () {\n var b = this.horiz,\n d = this.left,\n a = this.top,\n c = this.len,\n e = this.options.title,\n g = b ? d : a,\n m = this.opposite,\n l = this.offset,\n f = e.x,\n h = e.y,\n k = this.axisTitle,\n x = this.chart.renderer.fontMetrics(e.style.fontSize, k);\n k = Math.max(k.getBBox(null, 0).height - x.h - 1, 0);\n c = {\n low: g + (b ? 0 : c),\n middle: g + c / 2,\n high: g + (b ? c : 0)\n }[e.align];\n d = (b ? a + this.height : d) + (b ? 1 : -1) * (m ? -1 : 1) * this.axisTitleMargin + [-k, k, x.f, -k][this.side];\n b = {\n x: b ? c + f : d + (m ? this.width : 0) + l + f,\n y: b ? d + h - (m ? this.height : 0) + l : c + h\n };\n r(this, \"afterGetTitlePosition\", {\n titlePosition: b\n });\n return b;\n };\n a.prototype.renderMinorTick = function (b, d) {\n var a = this.minorTicks;\n a[b] || (a[b] = new H(this, b, \"minor\"));\n d && a[b].isNew && a[b].render(null, !0);\n a[b].render(null, !1, 1);\n };\n a.prototype.renderTick = function (b, d, a) {\n var c = this.ticks;\n if (!this.isLinked || b >= this.min && b <= this.max || this.grid && this.grid.isColumn) c[b] || (c[b] = new H(this, b)), a && c[b].isNew && c[b].render(d, !0, -1), c[b].render(d);\n };\n a.prototype.render = function () {\n var b = this,\n d = b.chart,\n a = b.logarithmic,\n c = b.options,\n e = b.isLinked,\n m = b.tickPositions,\n l = b.axisTitle,\n f = b.ticks,\n h = b.minorTicks,\n k = b.alternateBands,\n D = c.stackLabels,\n p = c.alternateGridColor,\n n = b.tickmarkOffset,\n I = b.axisLine,\n t = b.showAxis,\n C = q(d.renderer.globalAnimation),\n w,\n B;\n b.labelEdge.length = 0;\n b.overlap = !1;\n [f, h, k].forEach(function (b) {\n x(b, function (b) {\n b.isActive = !1;\n });\n });\n if (b.hasData() || e) {\n var P = b.chart.hasRendered && b.old && g(b.old.min);\n b.minorTickInterval && !b.categories && b.getMinorTickPositions().forEach(function (d) {\n b.renderMinorTick(d, P);\n });\n m.length && (m.forEach(function (d, a) {\n b.renderTick(d, a, P);\n }), n && (0 === b.min || b.single) && (f[-1] || (f[-1] = new H(b, -1, null, !0)), f[-1].render(-1)));\n p && m.forEach(function (c, e) {\n B = \"undefined\" !== typeof m[e + 1] ? m[e + 1] + n : b.max - n;\n 0 === e % 2 && c < b.max && B <= b.max + (d.polar ? -n : n) && (k[c] || (k[c] = new G.PlotLineOrBand(b)), w = c + n, k[c].options = {\n from: a ? a.lin2log(w) : w,\n to: a ? a.lin2log(B) : B,\n color: p,\n className: \"highcharts-alternate-grid\"\n }, k[c].render(), k[c].isActive = !0);\n });\n b._addedPlotLB || (b._addedPlotLB = !0, (c.plotLines || []).concat(c.plotBands || []).forEach(function (d) {\n b.addPlotBandOrLine(d);\n }));\n }\n [f, h, k].forEach(function (b) {\n var a = [],\n c = C.duration;\n x(b, function (b, d) {\n b.isActive || (b.render(d, !1, 0), b.isActive = !1, a.push(d));\n });\n U(function () {\n for (var d = a.length; d--;) b[a[d]] && !b[a[d]].isActive && (b[a[d]].destroy(), delete b[a[d]]);\n }, b !== k && d.hasRendered && c ? c : 0);\n });\n I && (I[I.isPlaced ? \"animate\" : \"attr\"]({\n d: this.getLinePath(I.strokeWidth())\n }), I.isPlaced = !0, I[t ? \"show\" : \"hide\"](t));\n l && t && (c = b.getTitlePosition(), g(c.y) ? (l[l.isNew ? \"attr\" : \"animate\"](c), l.isNew = !1) : (l.attr(\"y\", -9999), l.isNew = !0));\n D && D.enabled && b.stacking && b.stacking.renderStackTotals();\n b.old = {\n len: b.len,\n max: b.max,\n min: b.min,\n transA: b.transA,\n userMax: b.userMax,\n userMin: b.userMin\n };\n b.isDirty = !1;\n r(this, \"afterRender\");\n };\n a.prototype.redraw = function () {\n this.visible && (this.render(), this.plotLinesAndBands.forEach(function (b) {\n b.render();\n }));\n this.series.forEach(function (b) {\n b.isDirty = !0;\n });\n };\n a.prototype.getKeepProps = function () {\n return this.keepProps || a.keepProps;\n };\n a.prototype.destroy = function (b) {\n var d = this,\n a = d.plotLinesAndBands,\n c = this.eventOptions;\n r(this, \"destroy\", {\n keepEvents: b\n });\n b || v(d);\n [d.ticks, d.minorTicks, d.alternateBands].forEach(function (b) {\n B(b);\n });\n if (a) for (b = a.length; b--;) a[b].destroy();\n \"axisLine axisTitle axisGroup gridGroup labelGroup cross scrollbar\".split(\" \").forEach(function (b) {\n d[b] && (d[b] = d[b].destroy());\n });\n for (var e in d.plotLinesAndBandsGroups) d.plotLinesAndBandsGroups[e] = d.plotLinesAndBandsGroups[e].destroy();\n x(d, function (b, a) {\n -1 === d.getKeepProps().indexOf(a) && delete d[a];\n });\n this.eventOptions = c;\n };\n a.prototype.drawCrosshair = function (b, d) {\n var a = this.crosshair,\n c = I(a && a.snap, !0),\n e = this.chart,\n g,\n m = this.cross;\n r(this, \"drawCrosshair\", {\n e: b,\n point: d\n });\n b || (b = this.cross && this.cross.e);\n if (a && !1 !== (p(d) || !c)) {\n c ? p(d) && (g = I(\"colorAxis\" !== this.coll ? d.crosshairPos : null, this.isXAxis ? d.plotX : this.len - d.plotY)) : g = b && (this.horiz ? b.chartX - this.pos : this.len - b.chartY + this.pos);\n if (p(g)) {\n var l = {\n value: d && (this.isXAxis ? d.x : I(d.stackY, d.y)),\n translatedValue: g\n };\n e.polar && C(l, {\n isCrosshair: !0,\n chartX: b && b.chartX,\n chartY: b && b.chartY,\n point: d\n });\n l = this.getPlotLinePath(l) || null;\n }\n if (!p(l)) {\n this.hideCrosshair();\n return;\n }\n c = this.categories && !this.isRadial;\n m || (this.cross = m = e.renderer.path().addClass(\"highcharts-crosshair highcharts-crosshair-\" + (c ? \"category \" : \"thin \") + (a.className || \"\")).attr({\n zIndex: I(a.zIndex, 2)\n }).add(), e.styledMode || (m.attr({\n stroke: a.color || (c ? z.parse(\"#ccd6eb\").setOpacity(.25).get() : \"#cccccc\"),\n \"stroke-width\": I(a.width, 1)\n }).css({\n \"pointer-events\": \"none\"\n }), a.dashStyle && m.attr({\n dashstyle: a.dashStyle\n })));\n m.show().attr({\n d: l\n });\n c && !a.width && m.attr({\n \"stroke-width\": this.transA\n });\n this.cross.e = b;\n } else this.hideCrosshair();\n r(this, \"afterDrawCrosshair\", {\n e: b,\n point: d\n });\n };\n a.prototype.hideCrosshair = function () {\n this.cross && this.cross.hide();\n r(this, \"afterHideCrosshair\");\n };\n a.prototype.hasVerticalPanning = function () {\n var b = this.chart.options.chart.panning;\n return !!(b && b.enabled && /y/.test(b.type));\n };\n a.prototype.validatePositiveValue = function (b) {\n return g(b) && 0 < b;\n };\n a.prototype.update = function (b, d) {\n var a = this.chart;\n b = m(this.userOptions, b);\n this.destroy(!0);\n this.init(a, b);\n a.isDirtyBox = !0;\n I(d, !0) && a.redraw();\n };\n a.prototype.remove = function (b) {\n for (var d = this.chart, a = this.coll, c = this.series, e = c.length; e--;) c[e] && c[e].remove(!1);\n t(d.axes, this);\n t(d[a], this);\n d[a].forEach(function (b, d) {\n b.options.index = b.userOptions.index = d;\n });\n this.destroy();\n d.isDirtyBox = !0;\n I(b, !0) && d.redraw();\n };\n a.prototype.setTitle = function (b, d) {\n this.update({\n title: b\n }, d);\n };\n a.prototype.setCategories = function (b, d) {\n this.update({\n categories: b\n }, d);\n };\n a.defaultOptions = u.defaultXAxisOptions;\n a.keepProps = \"extKey hcEvents names series userMax userMin\".split(\" \");\n return a;\n }();\n \"\";\n return a;\n });\n M(a, \"Core/Axis/DateTimeAxis.js\", [a[\"Core/Utilities.js\"]], function (a) {\n var v = a.addEvent,\n z = a.getMagnitude,\n F = a.normalizeTickInterval,\n y = a.timeUnits,\n G;\n (function (a) {\n function u() {\n return this.chart.time.getTimeTicks.apply(this.chart.time, arguments);\n }\n function q(a) {\n \"datetime\" !== a.userOptions.type ? this.dateTime = void 0 : this.dateTime || (this.dateTime = new k(this));\n }\n var n = [];\n a.compose = function (a) {\n -1 === n.indexOf(a) && (n.push(a), a.keepProps.push(\"dateTime\"), a.prototype.getTimeTicks = u, v(a, \"init\", q));\n return a;\n };\n var k = function () {\n function a(a) {\n this.axis = a;\n }\n a.prototype.normalizeTimeTickInterval = function (a, e) {\n var c = e || [[\"millisecond\", [1, 2, 5, 10, 20, 25, 50, 100, 200, 500]], [\"second\", [1, 2, 5, 10, 15, 30]], [\"minute\", [1, 2, 5, 10, 15, 30]], [\"hour\", [1, 2, 3, 4, 6, 8, 12]], [\"day\", [1, 2]], [\"week\", [1, 2]], [\"month\", [1, 2, 3, 4, 6]], [\"year\", null]];\n e = c[c.length - 1];\n var h = y[e[0]],\n k = e[1],\n n;\n for (n = 0; n < c.length && !(e = c[n], h = y[e[0]], k = e[1], c[n + 1] && a <= (h * k[k.length - 1] + y[c[n + 1][0]]) / 2); n++);\n h === y.year && a < 5 * h && (k = [1, 2, 5]);\n a = F(a / h, k, \"year\" === e[0] ? Math.max(z(a / h), 1) : 1);\n return {\n unitRange: h,\n count: a,\n unitName: e[0]\n };\n };\n a.prototype.getXDateFormat = function (a, e) {\n var c = this.axis;\n return c.closestPointRange ? c.chart.time.getDateFormat(c.closestPointRange, a, c.options.startOfWeek, e) || e.year : e.day;\n };\n return a;\n }();\n a.Additions = k;\n })(G || (G = {}));\n return G;\n });\n M(a, \"Core/Axis/LogarithmicAxis.js\", [a[\"Core/Utilities.js\"]], function (a) {\n var v = a.addEvent,\n z = a.getMagnitude,\n F = a.normalizeTickInterval,\n y = a.pick,\n G;\n (function (a) {\n function u(a) {\n var c = this.logarithmic;\n \"logarithmic\" !== a.userOptions.type ? this.logarithmic = void 0 : c || (this.logarithmic = new k(this));\n }\n function q() {\n var a = this.logarithmic;\n a && (this.lin2val = function (c) {\n return a.lin2log(c);\n }, this.val2lin = function (c) {\n return a.log2lin(c);\n });\n }\n var n = [];\n a.compose = function (a) {\n -1 === n.indexOf(a) && (n.push(a), a.keepProps.push(\"logarithmic\"), v(a, \"init\", u), v(a, \"afterInit\", q));\n return a;\n };\n var k = function () {\n function a(a) {\n this.axis = a;\n }\n a.prototype.getLogTickPositions = function (a, e, f, k) {\n var c = this.axis,\n h = c.len,\n n = c.options,\n q = [];\n k || (this.minorAutoInterval = void 0);\n if (.5 <= a) a = Math.round(a), q = c.getLinearTickPositions(a, e, f);else if (.08 <= a) {\n var C = Math.floor(e),\n r,\n l = n = void 0;\n for (h = .3 < a ? [1, 2, 4] : .15 < a ? [1, 2, 4, 6, 8] : [1, 2, 3, 4, 5, 6, 7, 8, 9]; C < f + 1 && !l; C++) {\n var b = h.length;\n for (r = 0; r < b && !l; r++) {\n var g = this.log2lin(this.lin2log(C) * h[r]);\n g > e && (!k || n <= f) && \"undefined\" !== typeof n && q.push(n);\n n > f && (l = !0);\n n = g;\n }\n }\n } else e = this.lin2log(e), f = this.lin2log(f), a = k ? c.getMinorTickInterval() : n.tickInterval, a = y(\"auto\" === a ? null : a, this.minorAutoInterval, n.tickPixelInterval / (k ? 5 : 1) * (f - e) / ((k ? h / c.tickPositions.length : h) || 1)), a = F(a, void 0, z(a)), q = c.getLinearTickPositions(a, e, f).map(this.log2lin), k || (this.minorAutoInterval = a / 5);\n k || (c.tickInterval = a);\n return q;\n };\n a.prototype.lin2log = function (a) {\n return Math.pow(10, a);\n };\n a.prototype.log2lin = function (a) {\n return Math.log(a) / Math.LN10;\n };\n return a;\n }();\n a.Additions = k;\n })(G || (G = {}));\n return G;\n });\n M(a, \"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js\", [a[\"Core/Utilities.js\"]], function (a) {\n var v = a.erase,\n z = a.extend,\n F = a.isNumber,\n y;\n (function (a) {\n var u = [],\n A;\n a.compose = function (a, k) {\n A || (A = a);\n -1 === u.indexOf(k) && (u.push(k), z(k.prototype, q.prototype));\n return k;\n };\n var q = function () {\n function a() {}\n a.prototype.getPlotBandPath = function (a, e, c) {\n void 0 === c && (c = this.options);\n var h = this.getPlotLinePath({\n value: e,\n force: !0,\n acrossPanes: c.acrossPanes\n }),\n f = [],\n k = this.horiz;\n e = !F(this.min) || !F(this.max) || a < this.min && e < this.min || a > this.max && e > this.max;\n a = this.getPlotLinePath({\n value: a,\n force: !0,\n acrossPanes: c.acrossPanes\n });\n c = 1;\n if (a && h) {\n if (e) {\n var p = a.toString() === h.toString();\n c = 0;\n }\n for (e = 0; e < a.length; e += 2) {\n var n = a[e],\n t = a[e + 1],\n q = h[e],\n C = h[e + 1];\n \"M\" !== n[0] && \"L\" !== n[0] || \"M\" !== t[0] && \"L\" !== t[0] || \"M\" !== q[0] && \"L\" !== q[0] || \"M\" !== C[0] && \"L\" !== C[0] || (k && q[1] === n[1] ? (q[1] += c, C[1] += c) : k || q[2] !== n[2] || (q[2] += c, C[2] += c), f.push([\"M\", n[1], n[2]], [\"L\", t[1], t[2]], [\"L\", C[1], C[2]], [\"L\", q[1], q[2]], [\"Z\"]));\n f.isFlat = p;\n }\n }\n return f;\n };\n a.prototype.addPlotBand = function (a) {\n return this.addPlotBandOrLine(a, \"plotBands\");\n };\n a.prototype.addPlotLine = function (a) {\n return this.addPlotBandOrLine(a, \"plotLines\");\n };\n a.prototype.addPlotBandOrLine = function (a, e) {\n var c = this,\n h = this.userOptions,\n f = new A(this, a);\n this.visible && (f = f.render());\n if (f) {\n this._addedPlotLB || (this._addedPlotLB = !0, (h.plotLines || []).concat(h.plotBands || []).forEach(function (a) {\n c.addPlotBandOrLine(a);\n }));\n if (e) {\n var k = h[e] || [];\n k.push(a);\n h[e] = k;\n }\n this.plotLinesAndBands.push(f);\n }\n return f;\n };\n a.prototype.removePlotBandOrLine = function (a) {\n var e = this.plotLinesAndBands,\n c = this.options,\n h = this.userOptions;\n if (e) {\n for (var f = e.length; f--;) e[f].id === a && e[f].destroy();\n [c.plotLines || [], h.plotLines || [], c.plotBands || [], h.plotBands || []].forEach(function (c) {\n for (f = c.length; f--;) (c[f] || {}).id === a && v(c, c[f]);\n });\n }\n };\n a.prototype.removePlotBand = function (a) {\n this.removePlotBandOrLine(a);\n };\n a.prototype.removePlotLine = function (a) {\n this.removePlotBandOrLine(a);\n };\n return a;\n }();\n })(y || (y = {}));\n return y;\n });\n M(a, \"Core/Axis/PlotLineOrBand/PlotLineOrBand.js\", [a[\"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n var v = u.arrayMax,\n F = u.arrayMin,\n y = u.defined,\n G = u.destroyObjectProperties,\n H = u.erase,\n A = u.fireEvent,\n q = u.merge,\n n = u.objectEach,\n k = u.pick;\n u = function () {\n function e(a, e) {\n this.axis = a;\n e && (this.options = e, this.id = e.id);\n }\n e.compose = function (c) {\n return a.compose(e, c);\n };\n e.prototype.render = function () {\n A(this, \"render\");\n var a = this,\n e = a.axis,\n f = e.horiz,\n w = e.logarithmic,\n p = a.options,\n B = p.color,\n t = k(p.zIndex, 0),\n v = p.events,\n C = {},\n r = e.chart.renderer,\n l = p.label,\n b = a.label,\n g = p.to,\n d = p.from,\n m = p.value,\n D = a.svgElem,\n x = [],\n I = y(d) && y(g);\n x = y(m);\n var P = !D,\n S = {\n \"class\": \"highcharts-plot-\" + (I ? \"band \" : \"line \") + (p.className || \"\")\n },\n O = I ? \"bands\" : \"lines\";\n w && (d = w.log2lin(d), g = w.log2lin(g), m = w.log2lin(m));\n e.chart.styledMode || (x ? (S.stroke = B || \"#999999\", S[\"stroke-width\"] = k(p.width, 1), p.dashStyle && (S.dashstyle = p.dashStyle)) : I && (S.fill = B || \"#e6ebf5\", p.borderWidth && (S.stroke = p.borderColor, S[\"stroke-width\"] = p.borderWidth)));\n C.zIndex = t;\n O += \"-\" + t;\n (w = e.plotLinesAndBandsGroups[O]) || (e.plotLinesAndBandsGroups[O] = w = r.g(\"plot-\" + O).attr(C).add());\n P && (a.svgElem = D = r.path().attr(S).add(w));\n if (x) x = e.getPlotLinePath({\n value: m,\n lineWidth: D.strokeWidth(),\n acrossPanes: p.acrossPanes\n });else if (I) x = e.getPlotBandPath(d, g, p);else return;\n !a.eventsAdded && v && (n(v, function (b, d) {\n D.on(d, function (b) {\n v[d].apply(a, [b]);\n });\n }), a.eventsAdded = !0);\n (P || !D.d) && x && x.length ? D.attr({\n d: x\n }) : D && (x ? (D.show(!0), D.animate({\n d: x\n })) : D.d && (D.hide(), b && (a.label = b = b.destroy())));\n l && (y(l.text) || y(l.formatter)) && x && x.length && 0 < e.width && 0 < e.height && !x.isFlat ? (l = q({\n align: f && I && \"center\",\n x: f ? !I && 4 : 10,\n verticalAlign: !f && I && \"middle\",\n y: f ? I ? 16 : 10 : I ? 6 : -4,\n rotation: f && !I && 90\n }, l), this.renderLabel(l, x, I, t)) : b && b.hide();\n return a;\n };\n e.prototype.renderLabel = function (a, e, f, k) {\n var c = this.axis,\n h = c.chart.renderer,\n n = this.label;\n n || (this.label = n = h.text(this.getLabelText(a), 0, 0, a.useHTML).attr({\n align: a.textAlign || a.align,\n rotation: a.rotation,\n \"class\": \"highcharts-plot-\" + (f ? \"band\" : \"line\") + \"-label \" + (a.className || \"\"),\n zIndex: k\n }).add(), c.chart.styledMode || n.css(q({\n textOverflow: \"ellipsis\"\n }, a.style)));\n k = e.xBounds || [e[0][1], e[1][1], f ? e[2][1] : e[0][1]];\n e = e.yBounds || [e[0][2], e[1][2], f ? e[2][2] : e[0][2]];\n f = F(k);\n h = F(e);\n n.align(a, !1, {\n x: f,\n y: h,\n width: v(k) - f,\n height: v(e) - h\n });\n n.alignValue && \"left\" !== n.alignValue || n.css({\n width: (90 === n.rotation ? c.height - (n.alignAttr.y - c.top) : c.width - (n.alignAttr.x - c.left)) + \"px\"\n });\n n.show(!0);\n };\n e.prototype.getLabelText = function (a) {\n return y(a.formatter) ? a.formatter.call(this) : a.text;\n };\n e.prototype.destroy = function () {\n H(this.axis.plotLinesAndBands, this);\n delete this.axis;\n G(this);\n };\n return e;\n }();\n \"\";\n \"\";\n return u;\n });\n M(a, \"Core/Tooltip.js\", [a[\"Core/FormatUtilities.js\"], a[\"Core/Globals.js\"], a[\"Core/Renderer/RendererUtilities.js\"], a[\"Core/Renderer/RendererRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y) {\n var v = a.format,\n H = u.doc,\n A = z.distribute,\n q = y.addEvent,\n n = y.clamp,\n k = y.css,\n e = y.defined,\n c = y.discardElement,\n h = y.extend,\n f = y.fireEvent,\n w = y.isArray,\n p = y.isNumber,\n B = y.isString,\n t = y.merge,\n J = y.pick,\n C = y.splat,\n r = y.syncTimeout;\n a = function () {\n function a(b, a) {\n this.allowShared = !0;\n this.container = void 0;\n this.crosshairs = [];\n this.distance = 0;\n this.isHidden = !0;\n this.isSticky = !1;\n this.now = {};\n this.options = {};\n this.outside = !1;\n this.chart = b;\n this.init(b, a);\n }\n a.prototype.applyFilter = function () {\n var b = this.chart;\n b.renderer.definition({\n tagName: \"filter\",\n attributes: {\n id: \"drop-shadow-\" + b.index,\n opacity: .5\n },\n children: [{\n tagName: \"feGaussianBlur\",\n attributes: {\n \"in\": \"SourceAlpha\",\n stdDeviation: 1\n }\n }, {\n tagName: \"feOffset\",\n attributes: {\n dx: 1,\n dy: 1\n }\n }, {\n tagName: \"feComponentTransfer\",\n children: [{\n tagName: \"feFuncA\",\n attributes: {\n type: \"linear\",\n slope: .3\n }\n }]\n }, {\n tagName: \"feMerge\",\n children: [{\n tagName: \"feMergeNode\"\n }, {\n tagName: \"feMergeNode\",\n attributes: {\n \"in\": \"SourceGraphic\"\n }\n }]\n }]\n });\n };\n a.prototype.bodyFormatter = function (b) {\n return b.map(function (b) {\n var a = b.series.tooltipOptions;\n return (a[(b.point.formatPrefix || \"point\") + \"Formatter\"] || b.point.tooltipFormatter).call(b.point, a[(b.point.formatPrefix || \"point\") + \"Format\"] || \"\");\n });\n };\n a.prototype.cleanSplit = function (b) {\n this.chart.series.forEach(function (a) {\n var d = a && a.tt;\n d && (!d.isActive || b ? a.tt = d.destroy() : d.isActive = !1);\n });\n };\n a.prototype.defaultFormatter = function (b) {\n var a = this.points || C(this);\n var d = [b.tooltipFooterHeaderFormatter(a[0])];\n d = d.concat(b.bodyFormatter(a));\n d.push(b.tooltipFooterHeaderFormatter(a[0], !0));\n return d;\n };\n a.prototype.destroy = function () {\n this.label && (this.label = this.label.destroy());\n this.split && this.tt && (this.cleanSplit(!0), this.tt = this.tt.destroy());\n this.renderer && (this.renderer = this.renderer.destroy(), c(this.container));\n y.clearTimeout(this.hideTimer);\n y.clearTimeout(this.tooltipTimeout);\n };\n a.prototype.getAnchor = function (b, a) {\n var d = this.chart,\n c = d.pointer,\n e = d.inverted,\n g = d.plotTop,\n l = d.plotLeft,\n f,\n r,\n h = 0,\n k = 0;\n b = C(b);\n this.followPointer && a ? (\"undefined\" === typeof a.chartX && (a = c.normalize(a)), c = [a.chartX - l, a.chartY - g]) : b[0].tooltipPos ? c = b[0].tooltipPos : (b.forEach(function (b) {\n f = b.series.yAxis;\n r = b.series.xAxis;\n h += b.plotX || 0;\n k += b.plotLow ? (b.plotLow + (b.plotHigh || 0)) / 2 : b.plotY || 0;\n r && f && (e ? (h += g + d.plotHeight - r.len - r.pos, k += l + d.plotWidth - f.len - f.pos) : (h += r.pos - l, k += f.pos - g));\n }), h /= b.length, k /= b.length, c = [e ? d.plotWidth - k : h, e ? d.plotHeight - h : k], this.shared && 1 < b.length && a && (e ? c[0] = a.chartX - l : c[1] = a.chartY - g));\n return c.map(Math.round);\n };\n a.prototype.getLabel = function () {\n var b = this,\n a = this.chart.styledMode,\n d = this.options,\n c = this.split && this.allowShared,\n l = \"tooltip\" + (e(d.className) ? \" \" + d.className : \"\"),\n f = d.style.pointerEvents || (!this.followPointer && d.stickOnContact ? \"auto\" : \"none\"),\n r = function () {\n b.inContact = !0;\n },\n h = function (a) {\n var d = b.chart.hoverSeries;\n b.inContact = b.shouldStickOnContact() && b.chart.pointer.inClass(a.relatedTarget, \"highcharts-tooltip\");\n if (!b.inContact && d && d.onMouseOut) d.onMouseOut();\n },\n p,\n n = this.chart.renderer;\n if (b.label) {\n var t = !b.label.hasClass(\"highcharts-label\");\n (c && !t || !c && t) && b.destroy();\n }\n if (!this.label) {\n if (this.outside) {\n t = this.chart.options.chart.style;\n var C = F.getRendererType();\n this.container = p = u.doc.createElement(\"div\");\n p.className = \"highcharts-tooltip-container\";\n k(p, {\n position: \"absolute\",\n top: \"1px\",\n pointerEvents: f,\n zIndex: Math.max(this.options.style.zIndex || 0, (t && t.zIndex || 0) + 3)\n });\n q(p, \"mouseenter\", r);\n q(p, \"mouseleave\", h);\n u.doc.body.appendChild(p);\n this.renderer = n = new C(p, 0, 0, t, void 0, void 0, n.styledMode);\n }\n c ? this.label = n.g(l) : (this.label = n.label(\"\", 0, 0, d.shape, void 0, void 0, d.useHTML, void 0, l).attr({\n padding: d.padding,\n r: d.borderRadius\n }), a || this.label.attr({\n fill: d.backgroundColor,\n \"stroke-width\": d.borderWidth\n }).css(d.style).css({\n pointerEvents: f\n }).shadow(d.shadow));\n a && d.shadow && (this.applyFilter(), this.label.attr({\n filter: \"url(#drop-shadow-\" + this.chart.index + \")\"\n }));\n if (b.outside && !b.split) {\n var B = this.label,\n w = B.xSetter,\n v = B.ySetter;\n B.xSetter = function (a) {\n w.call(B, b.distance);\n p.style.left = a + \"px\";\n };\n B.ySetter = function (a) {\n v.call(B, b.distance);\n p.style.top = a + \"px\";\n };\n }\n this.label.on(\"mouseenter\", r).on(\"mouseleave\", h).attr({\n zIndex: 8\n }).add();\n }\n return this.label;\n };\n a.prototype.getPosition = function (b, a, d) {\n var c = this.chart,\n e = this.distance,\n g = {},\n l = c.inverted && d.h || 0,\n f = this.outside,\n r = f ? H.documentElement.clientWidth - 2 * e : c.chartWidth,\n h = f ? Math.max(H.body.scrollHeight, H.documentElement.scrollHeight, H.body.offsetHeight, H.documentElement.offsetHeight, H.documentElement.clientHeight) : c.chartHeight,\n k = c.pointer.getChartPosition(),\n p = function (g) {\n var m = \"x\" === g;\n return [g, m ? r : h, m ? b : a].concat(f ? [m ? b * k.scaleX : a * k.scaleY, m ? k.left - e + (d.plotX + c.plotLeft) * k.scaleX : k.top - e + (d.plotY + c.plotTop) * k.scaleY, 0, m ? r : h] : [m ? b : a, m ? d.plotX + c.plotLeft : d.plotY + c.plotTop, m ? c.plotLeft : c.plotTop, m ? c.plotLeft + c.plotWidth : c.plotTop + c.plotHeight]);\n },\n n = p(\"y\"),\n t = p(\"x\"),\n C;\n p = !!d.negative;\n !c.polar && c.hoverSeries && c.hoverSeries.yAxis && c.hoverSeries.yAxis.reversed && (p = !p);\n var q = !this.followPointer && J(d.ttBelow, !c.inverted === p),\n B = function (b, a, d, c, m, r, h) {\n var x = f ? \"y\" === b ? e * k.scaleY : e * k.scaleX : e,\n D = (d - c) / 2,\n p = c < m - e,\n E = m + e + c < a,\n n = m - x - d + D;\n m = m + x - D;\n if (q && E) g[b] = m;else if (!q && p) g[b] = n;else if (p) g[b] = Math.min(h - c, 0 > n - l ? n : n - l);else if (E) g[b] = Math.max(r, m + l + d > a ? m : m + l);else return !1;\n },\n w = function (b, a, d, c, m) {\n var l;\n m < e || m > a - e ? l = !1 : g[b] = m < d / 2 ? 1 : m > a - c / 2 ? a - c - 2 : m - d / 2;\n return l;\n },\n E = function (b) {\n var a = n;\n n = t;\n t = a;\n C = b;\n },\n T = function () {\n !1 !== B.apply(0, n) ? !1 !== w.apply(0, t) || C || (E(!0), T()) : C ? g.x = g.y = 0 : (E(!0), T());\n };\n (c.inverted || 1 < this.len) && E();\n T();\n return g;\n };\n a.prototype.hide = function (b) {\n var a = this;\n y.clearTimeout(this.hideTimer);\n b = J(b, this.options.hideDelay);\n this.isHidden || (this.hideTimer = r(function () {\n a.getLabel().fadeOut(b ? void 0 : b);\n a.isHidden = !0;\n }, b));\n };\n a.prototype.init = function (b, a) {\n this.chart = b;\n this.options = a;\n this.crosshairs = [];\n this.now = {\n x: 0,\n y: 0\n };\n this.isHidden = !0;\n this.split = a.split && !b.inverted && !b.polar;\n this.shared = a.shared || this.split;\n this.outside = J(a.outside, !(!b.scrollablePixelsX && !b.scrollablePixelsY));\n };\n a.prototype.shouldStickOnContact = function () {\n return !(this.followPointer || !this.options.stickOnContact);\n };\n a.prototype.isStickyOnContact = function () {\n return !(!this.shouldStickOnContact() || !this.inContact);\n };\n a.prototype.move = function (b, a, d, c) {\n var e = this,\n g = e.now,\n m = !1 !== e.options.animation && !e.isHidden && (1 < Math.abs(b - g.x) || 1 < Math.abs(a - g.y)),\n l = e.followPointer || 1 < e.len;\n h(g, {\n x: m ? (2 * g.x + b) / 3 : b,\n y: m ? (g.y + a) / 2 : a,\n anchorX: l ? void 0 : m ? (2 * g.anchorX + d) / 3 : d,\n anchorY: l ? void 0 : m ? (g.anchorY + c) / 2 : c\n });\n e.getLabel().attr(g);\n e.drawTracker();\n m && (y.clearTimeout(this.tooltipTimeout), this.tooltipTimeout = setTimeout(function () {\n e && e.move(b, a, d, c);\n }, 32));\n };\n a.prototype.refresh = function (b, a) {\n var d = this.chart,\n c = this.options,\n e = C(b),\n g = e[0],\n l = [],\n r = c.formatter || this.defaultFormatter,\n h = this.shared,\n k = d.styledMode,\n p = {};\n if (c.enabled) {\n y.clearTimeout(this.hideTimer);\n this.allowShared = !(!w(b) && b.series && b.series.noSharedTooltip);\n this.followPointer = !this.split && g.series.tooltipOptions.followPointer;\n b = this.getAnchor(b, a);\n var n = b[0],\n t = b[1];\n h && this.allowShared ? (d.pointer.applyInactiveState(e), e.forEach(function (b) {\n b.setState(\"hover\");\n l.push(b.getLabelConfig());\n }), p = {\n x: g.category,\n y: g.y\n }, p.points = l) : p = g.getLabelConfig();\n this.len = l.length;\n r = r.call(p, this);\n h = g.series;\n this.distance = J(h.tooltipOptions.distance, 16);\n if (!1 === r) this.hide();else {\n if (this.split && this.allowShared) this.renderSplit(r, e);else {\n var q = n,\n B = t;\n a && d.pointer.isDirectTouch && (q = a.chartX - d.plotLeft, B = a.chartY - d.plotTop);\n if (d.polar || !1 === h.options.clip || e.some(function (b) {\n return b.series.shouldShowTooltip(q, B);\n })) a = this.getLabel(), c.style.width && !k || a.css({\n width: this.chart.spacingBox.width + \"px\"\n }), a.attr({\n text: r && r.join ? r.join(\"\") : r\n }), a.removeClass(/highcharts-color-[\\d]+/g).addClass(\"highcharts-color-\" + J(g.colorIndex, h.colorIndex)), k || a.attr({\n stroke: c.borderColor || g.color || h.color || \"#666666\"\n }), this.updatePosition({\n plotX: n,\n plotY: t,\n negative: g.negative,\n ttBelow: g.ttBelow,\n h: b[2] || 0\n });else {\n this.hide();\n return;\n }\n }\n this.isHidden && this.label && this.label.attr({\n opacity: 1\n }).show();\n this.isHidden = !1;\n }\n f(this, \"refresh\");\n }\n };\n a.prototype.renderSplit = function (b, a) {\n function d(b, a, d, e, g) {\n void 0 === g && (g = !0);\n d ? (a = X ? 0 : G, b = n(b - e / 2, N.left, N.right - e - (c.outside ? R : 0))) : (a -= z, b = g ? b - e - y : b + y, b = n(b, g ? b : N.left, N.right));\n return {\n x: b,\n y: a\n };\n }\n var c = this,\n e = c.chart,\n g = c.chart,\n l = g.chartWidth,\n f = g.chartHeight,\n r = g.plotHeight,\n k = g.plotLeft,\n p = g.plotTop,\n t = g.pointer,\n C = g.scrollablePixelsY;\n C = void 0 === C ? 0 : C;\n var q = g.scrollablePixelsX,\n w = g.scrollingContainer;\n w = void 0 === w ? {\n scrollLeft: 0,\n scrollTop: 0\n } : w;\n var v = w.scrollLeft;\n w = w.scrollTop;\n var u = g.styledMode,\n y = c.distance,\n E = c.options,\n T = c.options.positioner,\n N = c.outside && \"number\" !== typeof q ? H.documentElement.getBoundingClientRect() : {\n left: v,\n right: v + l,\n top: w,\n bottom: w + f\n },\n V = c.getLabel(),\n W = this.renderer || e.renderer,\n X = !(!e.xAxis[0] || !e.xAxis[0].opposite);\n e = t.getChartPosition();\n var R = e.left;\n e = e.top;\n var z = p + w,\n aa = 0,\n G = r - C;\n B(b) && (b = [!1, b]);\n b = b.slice(0, a.length + 1).reduce(function (b, e, g) {\n if (!1 !== e && \"\" !== e) {\n g = a[g - 1] || {\n isHeader: !0,\n plotX: a[0].plotX,\n plotY: r,\n series: {}\n };\n var m = g.isHeader,\n l = m ? c : g.series;\n e = e.toString();\n var f = l.tt,\n h = g.isHeader;\n var x = g.series;\n var D = \"highcharts-color-\" + J(g.colorIndex, x.colorIndex, \"none\");\n f || (f = {\n padding: E.padding,\n r: E.borderRadius\n }, u || (f.fill = E.backgroundColor, f[\"stroke-width\"] = E.borderWidth), f = W.label(\"\", 0, 0, E[h ? \"headerShape\" : \"shape\"], void 0, void 0, E.useHTML).addClass((h ? \"highcharts-tooltip-header \" : \"\") + \"highcharts-tooltip-box \" + D).attr(f).add(V));\n f.isActive = !0;\n f.attr({\n text: e\n });\n u || f.css(E.style).shadow(E.shadow).attr({\n stroke: E.borderColor || g.color || x.color || \"#333333\"\n });\n l = l.tt = f;\n h = l.getBBox();\n e = h.width + l.strokeWidth();\n m && (aa = h.height, G += aa, X && (z -= aa));\n x = g.plotX;\n x = void 0 === x ? 0 : x;\n D = g.plotY;\n D = void 0 === D ? 0 : D;\n f = g.series;\n if (g.isHeader) {\n x = k + x;\n var t = p + r / 2;\n } else {\n var I = f.xAxis,\n C = f.yAxis;\n x = I.pos + n(x, -y, I.len + y);\n f.shouldShowTooltip(0, C.pos - p + D, {\n ignoreX: !0\n }) && (t = C.pos + D);\n }\n x = n(x, N.left - y, N.right + y);\n \"number\" === typeof t ? (h = h.height + 1, D = T ? T.call(c, e, h, g) : d(x, t, m, e), b.push({\n align: T ? 0 : void 0,\n anchorX: x,\n anchorY: t,\n boxWidth: e,\n point: g,\n rank: J(D.rank, m ? 1 : 0),\n size: h,\n target: D.y,\n tt: l,\n x: D.x\n })) : l.isActive = !1;\n }\n return b;\n }, []);\n !T && b.some(function (b) {\n var a = (c.outside ? R : 0) + b.anchorX;\n return a < N.left && a + b.boxWidth < N.right ? !0 : a < R - N.left + b.boxWidth && N.right - a > a;\n }) && (b = b.map(function (b) {\n var a = d(b.anchorX, b.anchorY, b.point.isHeader, b.boxWidth, !1);\n return h(b, {\n target: a.y,\n x: a.x\n });\n }));\n c.cleanSplit();\n A(b, G);\n var F = R,\n ba = R;\n b.forEach(function (b) {\n var a = b.x,\n d = b.boxWidth;\n b = b.isHeader;\n b || (c.outside && R + a < F && (F = R + a), !b && c.outside && F + d > ba && (ba = R + a));\n });\n b.forEach(function (b) {\n var a = b.x,\n d = b.anchorX,\n e = b.pos,\n g = b.point.isHeader;\n e = {\n visibility: \"undefined\" === typeof e ? \"hidden\" : \"inherit\",\n x: a,\n y: e + z,\n anchorX: d,\n anchorY: b.anchorY\n };\n if (c.outside && a < d) {\n var m = R - F;\n 0 < m && (g || (e.x = a + m, e.anchorX = d + m), g && (e.x = (ba - F) / 2, e.anchorX = d + m));\n }\n b.tt.attr(e);\n });\n b = c.container;\n C = c.renderer;\n c.outside && b && C && (g = V.getBBox(), C.setSize(g.width + g.x, g.height + g.y, !1), b.style.left = F + \"px\", b.style.top = e + \"px\");\n };\n a.prototype.drawTracker = function () {\n if (this.followPointer || !this.options.stickOnContact) this.tracker && this.tracker.destroy();else {\n var b = this.chart,\n a = this.label,\n d = this.shared ? b.hoverPoints : b.hoverPoint;\n if (a && d) {\n var c = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n d = this.getAnchor(d);\n var e = a.getBBox();\n d[0] += b.plotLeft - a.translateX;\n d[1] += b.plotTop - a.translateY;\n c.x = Math.min(0, d[0]);\n c.y = Math.min(0, d[1]);\n c.width = 0 > d[0] ? Math.max(Math.abs(d[0]), e.width - d[0]) : Math.max(Math.abs(d[0]), e.width);\n c.height = 0 > d[1] ? Math.max(Math.abs(d[1]), e.height - Math.abs(d[1])) : Math.max(Math.abs(d[1]), e.height);\n this.tracker ? this.tracker.attr(c) : (this.tracker = a.renderer.rect(c).addClass(\"highcharts-tracker\").add(a), b.styledMode || this.tracker.attr({\n fill: \"rgba(0,0,0,0)\"\n }));\n }\n }\n };\n a.prototype.styledModeFormat = function (b) {\n return b.replace('style=\"font-size: 10px\"', 'class=\"highcharts-header\"').replace(/style=\"color:{(point|series)\\.color}\"/g, 'class=\"highcharts-color-{$1.colorIndex}\"');\n };\n a.prototype.tooltipFooterHeaderFormatter = function (b, a) {\n var d = b.series,\n c = d.tooltipOptions,\n e = d.xAxis,\n g = e && e.dateTime;\n e = {\n isFooter: a,\n labelConfig: b\n };\n var l = c.xDateFormat,\n r = c[a ? \"footerFormat\" : \"headerFormat\"];\n f(this, \"headerFormatter\", e, function (a) {\n g && !l && p(b.key) && (l = g.getXDateFormat(b.key, c.dateTimeLabelFormats));\n g && l && (b.point && b.point.tooltipDateKeys || [\"key\"]).forEach(function (b) {\n r = r.replace(\"{point.\" + b + \"}\", \"{point.\" + b + \":\" + l + \"}\");\n });\n d.chart.styledMode && (r = this.styledModeFormat(r));\n a.text = v(r, {\n point: b,\n series: d\n }, this.chart);\n });\n return e.text;\n };\n a.prototype.update = function (b) {\n this.destroy();\n t(!0, this.chart.options.tooltip.userOptions, b);\n this.init(this.chart, t(!0, this.options, b));\n };\n a.prototype.updatePosition = function (b) {\n var a = this.chart,\n d = this.options,\n c = a.pointer,\n e = this.getLabel();\n c = c.getChartPosition();\n var l = (d.positioner || this.getPosition).call(this, e.width, e.height, b),\n f = b.plotX + a.plotLeft;\n b = b.plotY + a.plotTop;\n if (this.outside) {\n d = d.borderWidth + 2 * this.distance;\n this.renderer.setSize(e.width + d, e.height + d, !1);\n if (1 !== c.scaleX || 1 !== c.scaleY) k(this.container, {\n transform: \"scale(\" + c.scaleX + \", \" + c.scaleY + \")\"\n }), f *= c.scaleX, b *= c.scaleY;\n f += c.left - l.x;\n b += c.top - l.y;\n }\n this.move(Math.round(l.x), Math.round(l.y || 0), f, b);\n };\n return a;\n }();\n \"\";\n return a;\n });\n M(a, \"Core/Series/Point.js\", [a[\"Core/Renderer/HTML/AST.js\"], a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/DefaultOptions.js\"], a[\"Core/FormatUtilities.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y) {\n var v = u.animObject,\n H = z.defaultOptions,\n A = F.format,\n q = y.addEvent,\n n = y.defined,\n k = y.erase,\n e = y.extend,\n c = y.fireEvent,\n h = y.getNestedProperty,\n f = y.isArray,\n w = y.isFunction,\n p = y.isNumber,\n B = y.isObject,\n t = y.merge,\n J = y.objectEach,\n C = y.pick,\n r = y.syncTimeout,\n l = y.removeEvent,\n b = y.uniqueKey;\n u = function () {\n function g() {\n this.colorIndex = this.category = void 0;\n this.formatPrefix = \"point\";\n this.id = void 0;\n this.isNull = !1;\n this.percentage = this.options = this.name = void 0;\n this.selected = !1;\n this.total = this.series = void 0;\n this.visible = !0;\n this.x = void 0;\n }\n g.prototype.animateBeforeDestroy = function () {\n var b = this,\n a = {\n x: b.startXPos,\n opacity: 0\n },\n c = b.getGraphicalProps();\n c.singular.forEach(function (d) {\n b[d] = b[d].animate(\"dataLabel\" === d ? {\n x: b[d].startXPos,\n y: b[d].startYPos,\n opacity: 0\n } : a);\n });\n c.plural.forEach(function (a) {\n b[a].forEach(function (a) {\n a.element && a.animate(e({\n x: b.startXPos\n }, a.startYPos ? {\n x: a.startXPos,\n y: a.startYPos\n } : {}));\n });\n });\n };\n g.prototype.applyOptions = function (b, a) {\n var d = this.series,\n c = d.options.pointValKey || d.pointValKey;\n b = g.prototype.optionsToObject.call(this, b);\n e(this, b);\n this.options = this.options ? e(this.options, b) : b;\n b.group && delete this.group;\n b.dataLabels && delete this.dataLabels;\n c && (this.y = g.prototype.getNestedProperty.call(this, c));\n this.formatPrefix = (this.isNull = C(this.isValid && !this.isValid(), null === this.x || !p(this.y))) ? \"null\" : \"point\";\n this.selected && (this.state = \"select\");\n \"name\" in this && \"undefined\" === typeof a && d.xAxis && d.xAxis.hasNames && (this.x = d.xAxis.nameToX(this));\n \"undefined\" === typeof this.x && d ? this.x = \"undefined\" === typeof a ? d.autoIncrement() : a : p(b.x) && d.options.relativeXValue && (this.x = d.autoIncrement(b.x));\n return this;\n };\n g.prototype.destroy = function () {\n function b() {\n if (a.graphic || a.dataLabel || a.dataLabels) l(a), a.destroyElements();\n for (h in a) a[h] = null;\n }\n var a = this,\n c = a.series,\n e = c.chart;\n c = c.options.dataSorting;\n var g = e.hoverPoints,\n f = v(a.series.chart.renderer.globalAnimation),\n h;\n a.legendItem && e.legend.destroyItem(a);\n g && (a.setState(), k(g, a), g.length || (e.hoverPoints = null));\n if (a === e.hoverPoint) a.onMouseOut();\n c && c.enabled ? (this.animateBeforeDestroy(), r(b, f.duration)) : b();\n e.pointCount--;\n };\n g.prototype.destroyElements = function (b) {\n var a = this;\n b = a.getGraphicalProps(b);\n b.singular.forEach(function (b) {\n a[b] = a[b].destroy();\n });\n b.plural.forEach(function (b) {\n a[b].forEach(function (b) {\n b.element && b.destroy();\n });\n delete a[b];\n });\n };\n g.prototype.firePointEvent = function (b, a, e) {\n var d = this,\n g = this.series.options;\n (g.point.events[b] || d.options && d.options.events && d.options.events[b]) && d.importEvents();\n \"click\" === b && g.allowPointSelect && (e = function (b) {\n d.select && d.select(null, b.ctrlKey || b.metaKey || b.shiftKey);\n });\n c(d, b, a, e);\n };\n g.prototype.getClassName = function () {\n return \"highcharts-point\" + (this.selected ? \" highcharts-point-select\" : \"\") + (this.negative ? \" highcharts-negative\" : \"\") + (this.isNull ? \" highcharts-null-point\" : \"\") + (\"undefined\" !== typeof this.colorIndex ? \" highcharts-color-\" + this.colorIndex : \"\") + (this.options.className ? \" \" + this.options.className : \"\") + (this.zone && this.zone.className ? \" \" + this.zone.className.replace(\"highcharts-negative\", \"\") : \"\");\n };\n g.prototype.getGraphicalProps = function (b) {\n var a = this,\n d = [],\n c = {\n singular: [],\n plural: []\n },\n e;\n b = b || {\n graphic: 1,\n dataLabel: 1\n };\n b.graphic && d.push(\"graphic\", \"upperGraphic\", \"shadowGroup\");\n b.dataLabel && d.push(\"dataLabel\", \"dataLabelUpper\", \"connector\");\n for (e = d.length; e--;) {\n var g = d[e];\n a[g] && c.singular.push(g);\n }\n [\"dataLabel\", \"connector\"].forEach(function (d) {\n var e = d + \"s\";\n b[d] && a[e] && c.plural.push(e);\n });\n return c;\n };\n g.prototype.getLabelConfig = function () {\n return {\n x: this.category,\n y: this.y,\n color: this.color,\n colorIndex: this.colorIndex,\n key: this.name || this.category,\n series: this.series,\n point: this,\n percentage: this.percentage,\n total: this.total || this.stackTotal\n };\n };\n g.prototype.getNestedProperty = function (b) {\n if (b) return 0 === b.indexOf(\"custom.\") ? h(b, this.options) : this[b];\n };\n g.prototype.getZone = function () {\n var b = this.series,\n a = b.zones;\n b = b.zoneAxis || \"y\";\n var c,\n e = 0;\n for (c = a[e]; this[b] >= c.value;) c = a[++e];\n this.nonZonedColor || (this.nonZonedColor = this.color);\n this.color = c && c.color && !this.options.color ? c.color : this.nonZonedColor;\n return c;\n };\n g.prototype.hasNewShapeType = function () {\n return (this.graphic && (this.graphic.symbolName || this.graphic.element.nodeName)) !== this.shapeType;\n };\n g.prototype.init = function (a, e, g) {\n this.series = a;\n this.applyOptions(e, g);\n this.id = n(this.id) ? this.id : b();\n this.resolveColor();\n a.chart.pointCount++;\n c(this, \"afterInit\");\n return this;\n };\n g.prototype.optionsToObject = function (b) {\n var a = this.series,\n d = a.options.keys,\n c = d || a.pointArrayMap || [\"y\"],\n e = c.length,\n l = {},\n r = 0,\n h = 0;\n if (p(b) || null === b) l[c[0]] = b;else if (f(b)) for (!d && b.length > e && (a = typeof b[0], \"string\" === a ? l.name = b[0] : \"number\" === a && (l.x = b[0]), r++); h < e;) d && \"undefined\" === typeof b[r] || (0 < c[h].indexOf(\".\") ? g.prototype.setNestedProperty(l, b[r], c[h]) : l[c[h]] = b[r]), r++, h++;else \"object\" === typeof b && (l = b, b.dataLabels && (a._hasPointLabels = !0), b.marker && (a._hasPointMarkers = !0));\n return l;\n };\n g.prototype.resolveColor = function () {\n var b = this.series,\n a = b.chart.styledMode;\n var c = b.chart.options.chart.colorCount;\n delete this.nonZonedColor;\n if (b.options.colorByPoint) {\n if (!a) {\n c = b.options.colors || b.chart.options.colors;\n var e = c[b.colorCounter];\n c = c.length;\n }\n a = b.colorCounter;\n b.colorCounter++;\n b.colorCounter === c && (b.colorCounter = 0);\n } else a || (e = b.color), a = b.colorIndex;\n this.colorIndex = C(this.options.colorIndex, a);\n this.color = C(this.options.color, e);\n };\n g.prototype.setNestedProperty = function (b, a, c) {\n c.split(\".\").reduce(function (b, d, c, e) {\n b[d] = e.length - 1 === c ? a : B(b[d], !0) ? b[d] : {};\n return b[d];\n }, b);\n return b;\n };\n g.prototype.tooltipFormatter = function (b) {\n var a = this.series,\n d = a.tooltipOptions,\n c = C(d.valueDecimals, \"\"),\n e = d.valuePrefix || \"\",\n g = d.valueSuffix || \"\";\n a.chart.styledMode && (b = a.chart.tooltip.styledModeFormat(b));\n (a.pointArrayMap || [\"y\"]).forEach(function (a) {\n a = \"{point.\" + a;\n if (e || g) b = b.replace(RegExp(a + \"}\", \"g\"), e + a + \"}\" + g);\n b = b.replace(RegExp(a + \"}\", \"g\"), a + \":,.\" + c + \"f}\");\n });\n return A(b, {\n point: this,\n series: this.series\n }, a.chart);\n };\n g.prototype.update = function (b, a, c, e) {\n function d() {\n g.applyOptions(b);\n var d = m && g.hasDummyGraphic;\n d = null === g.y ? !d : d;\n m && d && (g.graphic = m.destroy(), delete g.hasDummyGraphic);\n B(b, !0) && (m && m.element && b && b.marker && \"undefined\" !== typeof b.marker.symbol && (g.graphic = m.destroy()), b && b.dataLabels && g.dataLabel && (g.dataLabel = g.dataLabel.destroy()), g.connector && (g.connector = g.connector.destroy()));\n h = g.index;\n l.updateParallelArrays(g, h);\n r.data[h] = B(r.data[h], !0) || B(b, !0) ? g.options : C(b, r.data[h]);\n l.isDirty = l.isDirtyData = !0;\n !l.fixedBox && l.hasCartesianSeries && (f.isDirtyBox = !0);\n \"point\" === r.legendType && (f.isDirtyLegend = !0);\n a && f.redraw(c);\n }\n var g = this,\n l = g.series,\n m = g.graphic,\n f = l.chart,\n r = l.options,\n h;\n a = C(a, !0);\n !1 === e ? d() : g.firePointEvent(\"update\", {\n options: b\n }, d);\n };\n g.prototype.remove = function (b, a) {\n this.series.removePoint(this.series.data.indexOf(this), b, a);\n };\n g.prototype.select = function (b, a) {\n var d = this,\n c = d.series,\n e = c.chart;\n this.selectedStaging = b = C(b, !d.selected);\n d.firePointEvent(b ? \"select\" : \"unselect\", {\n accumulate: a\n }, function () {\n d.selected = d.options.selected = b;\n c.options.data[c.data.indexOf(d)] = d.options;\n d.setState(b && \"select\");\n a || e.getSelectedPoints().forEach(function (b) {\n var a = b.series;\n b.selected && b !== d && (b.selected = b.options.selected = !1, a.options.data[a.data.indexOf(b)] = b.options, b.setState(e.hoverPoints && a.options.inactiveOtherPoints ? \"inactive\" : \"\"), b.firePointEvent(\"unselect\"));\n });\n });\n delete this.selectedStaging;\n };\n g.prototype.onMouseOver = function (b) {\n var a = this.series.chart,\n d = a.pointer;\n b = b ? d.normalize(b) : d.getChartCoordinatesFromPoint(this, a.inverted);\n d.runPointActions(b, this);\n };\n g.prototype.onMouseOut = function () {\n var b = this.series.chart;\n this.firePointEvent(\"mouseOut\");\n this.series.options.inactiveOtherPoints || (b.hoverPoints || []).forEach(function (b) {\n b.setState();\n });\n b.hoverPoints = b.hoverPoint = null;\n };\n g.prototype.importEvents = function () {\n if (!this.hasImportedEvents) {\n var b = this,\n a = t(b.series.options.point, b.options).events;\n b.events = a;\n J(a, function (a, d) {\n w(a) && q(b, d, a);\n });\n this.hasImportedEvents = !0;\n }\n };\n g.prototype.setState = function (b, g) {\n var d = this.series,\n l = this.state,\n m = d.options.states[b || \"normal\"] || {},\n f = H.plotOptions[d.type].marker && d.options.marker,\n r = f && !1 === f.enabled,\n h = f && f.states && f.states[b || \"normal\"] || {},\n k = !1 === h.enabled,\n n = this.marker || {},\n t = d.chart,\n q = f && d.markerAttribs,\n w = d.halo,\n B,\n v = d.stateMarkerGraphic;\n b = b || \"\";\n if (!(b === this.state && !g || this.selected && \"select\" !== b || !1 === m.enabled || b && (k || r && !1 === h.enabled) || b && n.states && n.states[b] && !1 === n.states[b].enabled)) {\n this.state = b;\n q && (B = d.markerAttribs(this, b));\n if (this.graphic && !this.hasDummyGraphic) {\n l && this.graphic.removeClass(\"highcharts-point-\" + l);\n b && this.graphic.addClass(\"highcharts-point-\" + b);\n if (!t.styledMode) {\n var J = d.pointAttribs(this, b);\n var E = C(t.options.chart.animation, m.animation);\n d.options.inactiveOtherPoints && p(J.opacity) && ((this.dataLabels || []).forEach(function (b) {\n b && b.animate({\n opacity: J.opacity\n }, E);\n }), this.connector && this.connector.animate({\n opacity: J.opacity\n }, E));\n this.graphic.animate(J, E);\n }\n B && this.graphic.animate(B, C(t.options.chart.animation, h.animation, f.animation));\n v && v.hide();\n } else {\n if (b && h) {\n l = n.symbol || d.symbol;\n v && v.currentSymbol !== l && (v = v.destroy());\n if (B) if (v) v[g ? \"animate\" : \"attr\"]({\n x: B.x,\n y: B.y\n });else l && (d.stateMarkerGraphic = v = t.renderer.symbol(l, B.x, B.y, B.width, B.height).add(d.markerGroup), v.currentSymbol = l);\n !t.styledMode && v && \"inactive\" !== this.state && v.attr(d.pointAttribs(this, b));\n }\n v && (v[b && this.isInside ? \"show\" : \"hide\"](), v.element.point = this, v.addClass(this.getClassName(), !0));\n }\n m = m.halo;\n B = (v = this.graphic || v) && v.visibility || \"inherit\";\n m && m.size && v && \"hidden\" !== B && !this.isCluster ? (w || (d.halo = w = t.renderer.path().add(v.parentGroup)), w.show()[g ? \"animate\" : \"attr\"]({\n d: this.haloPath(m.size)\n }), w.attr({\n \"class\": \"highcharts-halo highcharts-color-\" + C(this.colorIndex, d.colorIndex) + (this.className ? \" \" + this.className : \"\"),\n visibility: B,\n zIndex: -1\n }), w.point = this, t.styledMode || w.attr(e({\n fill: this.color || d.color,\n \"fill-opacity\": m.opacity\n }, a.filterUserAttributes(m.attributes || {})))) : w && w.point && w.point.haloPath && w.animate({\n d: w.point.haloPath(0)\n }, null, w.hide);\n c(this, \"afterSetState\", {\n state: b\n });\n }\n };\n g.prototype.haloPath = function (b) {\n return this.series.chart.renderer.symbols.circle(Math.floor(this.plotX) - b, this.plotY - b, 2 * b, 2 * b);\n };\n return g;\n }();\n \"\";\n return u;\n });\n M(a, \"Core/Pointer.js\", [a[\"Core/Color/Color.js\"], a[\"Core/Globals.js\"], a[\"Core/Tooltip.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F) {\n var v = a.parse,\n G = u.charts,\n H = u.noop,\n A = F.addEvent,\n q = F.attr,\n n = F.css,\n k = F.defined,\n e = F.extend,\n c = F.find,\n h = F.fireEvent,\n f = F.isNumber,\n w = F.isObject,\n p = F.objectEach,\n B = F.offset,\n t = F.pick,\n J = F.splat;\n a = function () {\n function a(a, c) {\n this.lastValidTouch = {};\n this.pinchDown = [];\n this.runChartClick = !1;\n this.eventsToUnbind = [];\n this.chart = a;\n this.hasDragged = !1;\n this.options = c;\n this.init(a, c);\n }\n a.prototype.applyInactiveState = function (a) {\n var c = [],\n b;\n (a || []).forEach(function (a) {\n b = a.series;\n c.push(b);\n b.linkedParent && c.push(b.linkedParent);\n b.linkedSeries && (c = c.concat(b.linkedSeries));\n b.navigatorSeries && c.push(b.navigatorSeries);\n });\n this.chart.series.forEach(function (b) {\n -1 === c.indexOf(b) ? b.setState(\"inactive\", !0) : b.options.inactiveOtherPoints && b.setAllPointsToState(\"inactive\");\n });\n };\n a.prototype.destroy = function () {\n var c = this;\n this.eventsToUnbind.forEach(function (a) {\n return a();\n });\n this.eventsToUnbind = [];\n u.chartCount || (a.unbindDocumentMouseUp && (a.unbindDocumentMouseUp = a.unbindDocumentMouseUp()), a.unbindDocumentTouchEnd && (a.unbindDocumentTouchEnd = a.unbindDocumentTouchEnd()));\n clearInterval(c.tooltipTimeout);\n p(c, function (a, b) {\n c[b] = void 0;\n });\n };\n a.prototype.drag = function (a) {\n var c = this.chart,\n b = c.options.chart,\n e = this.zoomHor,\n d = this.zoomVert,\n m = c.plotLeft,\n f = c.plotTop,\n h = c.plotWidth,\n r = c.plotHeight,\n k = this.mouseDownX || 0,\n p = this.mouseDownY || 0,\n n = w(b.panning) ? b.panning && b.panning.enabled : b.panning,\n t = b.panKey && a[b.panKey + \"Key\"],\n q = a.chartX,\n B = a.chartY,\n C = this.selectionMarker;\n if (!C || !C.touch) if (q < m ? q = m : q > m + h && (q = m + h), B < f ? B = f : B > f + r && (B = f + r), this.hasDragged = Math.sqrt(Math.pow(k - q, 2) + Math.pow(p - B, 2)), 10 < this.hasDragged) {\n var J = c.isInsidePlot(k - m, p - f, {\n visiblePlotOnly: !0\n });\n !c.hasCartesianSeries && !c.mapView || !this.zoomX && !this.zoomY || !J || t || C || (this.selectionMarker = C = c.renderer.rect(m, f, e ? 1 : h, d ? 1 : r, 0).attr({\n \"class\": \"highcharts-selection-marker\",\n zIndex: 7\n }).add(), c.styledMode || C.attr({\n fill: b.selectionMarkerFill || v(\"#335cad\").setOpacity(.25).get()\n }));\n C && e && (e = q - k, C.attr({\n width: Math.abs(e),\n x: (0 < e ? 0 : e) + k\n }));\n C && d && (e = B - p, C.attr({\n height: Math.abs(e),\n y: (0 < e ? 0 : e) + p\n }));\n J && !C && n && c.pan(a, b.panning);\n }\n };\n a.prototype.dragStart = function (a) {\n var c = this.chart;\n c.mouseIsDown = a.type;\n c.cancelClick = !1;\n c.mouseDownX = this.mouseDownX = a.chartX;\n c.mouseDownY = this.mouseDownY = a.chartY;\n };\n a.prototype.drop = function (a) {\n var c = this,\n b = this.chart,\n g = this.hasPinched;\n if (this.selectionMarker) {\n var d = this.selectionMarker,\n m = d.attr ? d.attr(\"x\") : d.x,\n r = d.attr ? d.attr(\"y\") : d.y,\n p = d.attr ? d.attr(\"width\") : d.width,\n t = d.attr ? d.attr(\"height\") : d.height,\n q = {\n originalEvent: a,\n xAxis: [],\n yAxis: [],\n x: m,\n y: r,\n width: p,\n height: t\n },\n B = !!b.mapView;\n if (this.hasDragged || g) b.axes.forEach(function (b) {\n if (b.zoomEnabled && k(b.min) && (g || c[{\n xAxis: \"zoomX\",\n yAxis: \"zoomY\"\n }[b.coll]]) && f(m) && f(r)) {\n var d = b.horiz,\n e = \"touchend\" === a.type ? b.minPixelPadding : 0,\n l = b.toValue((d ? m : r) + e);\n d = b.toValue((d ? m + p : r + t) - e);\n q[b.coll].push({\n axis: b,\n min: Math.min(l, d),\n max: Math.max(l, d)\n });\n B = !0;\n }\n }), B && h(b, \"selection\", q, function (a) {\n b.zoom(e(a, g ? {\n animation: !1\n } : null));\n });\n f(b.index) && (this.selectionMarker = this.selectionMarker.destroy());\n g && this.scaleGroups();\n }\n b && f(b.index) && (n(b.container, {\n cursor: b._cursor\n }), b.cancelClick = 10 < this.hasDragged, b.mouseIsDown = this.hasDragged = this.hasPinched = !1, this.pinchDown = []);\n };\n a.prototype.findNearestKDPoint = function (a, c, b) {\n var e = this.chart,\n d = e.hoverPoint;\n e = e.tooltip;\n if (d && e && e.isStickyOnContact()) return d;\n var l;\n a.forEach(function (a) {\n var d = !(a.noSharedTooltip && c) && 0 > a.options.findNearestPointBy.indexOf(\"y\");\n a = a.searchPoint(b, d);\n if ((d = w(a, !0) && a.series) && !(d = !w(l, !0))) {\n d = l.distX - a.distX;\n var e = l.dist - a.dist,\n g = (a.series.group && a.series.group.zIndex) - (l.series.group && l.series.group.zIndex);\n d = 0 < (0 !== d && c ? d : 0 !== e ? e : 0 !== g ? g : l.series.index > a.series.index ? -1 : 1);\n }\n d && (l = a);\n });\n return l;\n };\n a.prototype.getChartCoordinatesFromPoint = function (a, c) {\n var b = a.series,\n e = b.xAxis;\n b = b.yAxis;\n var d = a.shapeArgs;\n if (e && b) {\n var l = t(a.clientX, a.plotX),\n h = a.plotY || 0;\n a.isNode && d && f(d.x) && f(d.y) && (l = d.x, h = d.y);\n return c ? {\n chartX: b.len + b.pos - h,\n chartY: e.len + e.pos - l\n } : {\n chartX: l + e.pos,\n chartY: h + b.pos\n };\n }\n if (d && d.x && d.y) return {\n chartX: d.x,\n chartY: d.y\n };\n };\n a.prototype.getChartPosition = function () {\n if (this.chartPosition) return this.chartPosition;\n var a = this.chart.container,\n c = B(a);\n this.chartPosition = {\n left: c.left,\n top: c.top,\n scaleX: 1,\n scaleY: 1\n };\n var b = a.offsetWidth;\n a = a.offsetHeight;\n 2 < b && 2 < a && (this.chartPosition.scaleX = c.width / b, this.chartPosition.scaleY = c.height / a);\n return this.chartPosition;\n };\n a.prototype.getCoordinates = function (a) {\n var c = {\n xAxis: [],\n yAxis: []\n };\n this.chart.axes.forEach(function (b) {\n c[b.isXAxis ? \"xAxis\" : \"yAxis\"].push({\n axis: b,\n value: b.toValue(a[b.horiz ? \"chartX\" : \"chartY\"])\n });\n });\n return c;\n };\n a.prototype.getHoverData = function (a, e, b, g, d, m) {\n var l = [];\n g = !(!g || !a);\n var f = {\n chartX: m ? m.chartX : void 0,\n chartY: m ? m.chartY : void 0,\n shared: d\n };\n h(this, \"beforeGetHoverData\", f);\n var r = e && !e.stickyTracking ? [e] : b.filter(function (b) {\n return f.filter ? f.filter(b) : b.visible && !(!d && b.directTouch) && t(b.options.enableMouseTracking, !0) && b.stickyTracking;\n });\n var k = g || !m ? a : this.findNearestKDPoint(r, d, m);\n e = k && k.series;\n k && (d && !e.noSharedTooltip ? (r = b.filter(function (b) {\n return f.filter ? f.filter(b) : b.visible && !(!d && b.directTouch) && t(b.options.enableMouseTracking, !0) && !b.noSharedTooltip;\n }), r.forEach(function (b) {\n var a = c(b.points, function (b) {\n return b.x === k.x && !b.isNull;\n });\n w(a) && (b.chart.isBoosting && (a = b.getPoint(a)), l.push(a));\n })) : l.push(k));\n f = {\n hoverPoint: k\n };\n h(this, \"afterGetHoverData\", f);\n return {\n hoverPoint: f.hoverPoint,\n hoverSeries: e,\n hoverPoints: l\n };\n };\n a.prototype.getPointFromEvent = function (a) {\n a = a.target;\n for (var c; a && !c;) c = a.point, a = a.parentNode;\n return c;\n };\n a.prototype.onTrackerMouseOut = function (a) {\n a = a.relatedTarget || a.toElement;\n var c = this.chart.hoverSeries;\n this.isDirectTouch = !1;\n if (!(!c || !a || c.stickyTracking || this.inClass(a, \"highcharts-tooltip\") || this.inClass(a, \"highcharts-series-\" + c.index) && this.inClass(a, \"highcharts-tracker\"))) c.onMouseOut();\n };\n a.prototype.inClass = function (a, c) {\n for (var b; a;) {\n if (b = q(a, \"class\")) {\n if (-1 !== b.indexOf(c)) return !0;\n if (-1 !== b.indexOf(\"highcharts-container\")) return !1;\n }\n a = a.parentNode;\n }\n };\n a.prototype.init = function (a, c) {\n this.options = c;\n this.chart = a;\n this.runChartClick = !(!c.chart.events || !c.chart.events.click);\n this.pinchDown = [];\n this.lastValidTouch = {};\n z && (a.tooltip = new z(a, c.tooltip), this.followTouchMove = t(c.tooltip.followTouchMove, !0));\n this.setDOMEvents();\n };\n a.prototype.normalize = function (a, c) {\n var b = a.touches,\n g = b ? b.length ? b.item(0) : t(b.changedTouches, a.changedTouches)[0] : a;\n c || (c = this.getChartPosition());\n b = g.pageX - c.left;\n g = g.pageY - c.top;\n b /= c.scaleX;\n g /= c.scaleY;\n return e(a, {\n chartX: Math.round(b),\n chartY: Math.round(g)\n });\n };\n a.prototype.onContainerClick = function (a) {\n var c = this.chart,\n b = c.hoverPoint;\n a = this.normalize(a);\n var g = c.plotLeft,\n d = c.plotTop;\n c.cancelClick || (b && this.inClass(a.target, \"highcharts-tracker\") ? (h(b.series, \"click\", e(a, {\n point: b\n })), c.hoverPoint && b.firePointEvent(\"click\", a)) : (e(a, this.getCoordinates(a)), c.isInsidePlot(a.chartX - g, a.chartY - d, {\n visiblePlotOnly: !0\n }) && h(c, \"click\", a)));\n };\n a.prototype.onContainerMouseDown = function (a) {\n var c = 1 === ((a.buttons || a.button) & 1);\n a = this.normalize(a);\n if (u.isFirefox && 0 !== a.button) this.onContainerMouseMove(a);\n if (\"undefined\" === typeof a.button || c) this.zoomOption(a), c && a.preventDefault && a.preventDefault(), this.dragStart(a);\n };\n a.prototype.onContainerMouseLeave = function (c) {\n var e = G[t(a.hoverChartIndex, -1)],\n b = this.chart.tooltip;\n b && b.shouldStickOnContact() && this.inClass(c.relatedTarget, \"highcharts-tooltip-container\") || (c = this.normalize(c), e && (c.relatedTarget || c.toElement) && (e.pointer.reset(), e.pointer.chartPosition = void 0), b && !b.isHidden && this.reset());\n };\n a.prototype.onContainerMouseEnter = function (a) {\n delete this.chartPosition;\n };\n a.prototype.onContainerMouseMove = function (a) {\n var c = this.chart;\n a = this.normalize(a);\n this.setHoverChartIndex();\n a.preventDefault || (a.returnValue = !1);\n (\"mousedown\" === c.mouseIsDown || this.touchSelect(a)) && this.drag(a);\n c.openMenu || !this.inClass(a.target, \"highcharts-tracker\") && !c.isInsidePlot(a.chartX - c.plotLeft, a.chartY - c.plotTop, {\n visiblePlotOnly: !0\n }) || (this.inClass(a.target, \"highcharts-no-tooltip\") ? this.reset(!1, 0) : this.runPointActions(a));\n };\n a.prototype.onDocumentTouchEnd = function (c) {\n var e = G[t(a.hoverChartIndex, -1)];\n e && e.pointer.drop(c);\n };\n a.prototype.onContainerTouchMove = function (a) {\n if (this.touchSelect(a)) this.onContainerMouseMove(a);else this.touch(a);\n };\n a.prototype.onContainerTouchStart = function (a) {\n if (this.touchSelect(a)) this.onContainerMouseDown(a);else this.zoomOption(a), this.touch(a, !0);\n };\n a.prototype.onDocumentMouseMove = function (a) {\n var c = this.chart,\n b = this.chartPosition;\n a = this.normalize(a, b);\n var e = c.tooltip;\n !b || e && e.isStickyOnContact() || c.isInsidePlot(a.chartX - c.plotLeft, a.chartY - c.plotTop, {\n visiblePlotOnly: !0\n }) || this.inClass(a.target, \"highcharts-tracker\") || this.reset();\n };\n a.prototype.onDocumentMouseUp = function (c) {\n var e = G[t(a.hoverChartIndex, -1)];\n e && e.pointer.drop(c);\n };\n a.prototype.pinch = function (a) {\n var c = this,\n b = c.chart,\n g = c.pinchDown,\n d = a.touches || [],\n m = d.length,\n f = c.lastValidTouch,\n k = c.hasZoom,\n p = {},\n r = 1 === m && (c.inClass(a.target, \"highcharts-tracker\") && b.runTrackerClick || c.runChartClick),\n n = {},\n q = c.selectionMarker;\n 1 < m ? c.initiated = !0 : 1 === m && this.followTouchMove && (c.initiated = !1);\n k && c.initiated && !r && !1 !== a.cancelable && a.preventDefault();\n [].map.call(d, function (b) {\n return c.normalize(b);\n });\n \"touchstart\" === a.type ? ([].forEach.call(d, function (b, a) {\n g[a] = {\n chartX: b.chartX,\n chartY: b.chartY\n };\n }), f.x = [g[0].chartX, g[1] && g[1].chartX], f.y = [g[0].chartY, g[1] && g[1].chartY], b.axes.forEach(function (a) {\n if (a.zoomEnabled) {\n var d = b.bounds[a.horiz ? \"h\" : \"v\"],\n c = a.minPixelPadding,\n e = a.toPixels(Math.min(t(a.options.min, a.dataMin), a.dataMin)),\n g = a.toPixels(Math.max(t(a.options.max, a.dataMax), a.dataMax)),\n m = Math.max(e, g);\n d.min = Math.min(a.pos, Math.min(e, g) - c);\n d.max = Math.max(a.pos + a.len, m + c);\n }\n }), c.res = !0) : c.followTouchMove && 1 === m ? this.runPointActions(c.normalize(a)) : g.length && (h(b, \"touchpan\", {\n originalEvent: a\n }, function () {\n q || (c.selectionMarker = q = e({\n destroy: H,\n touch: !0\n }, b.plotBox));\n c.pinchTranslate(g, d, p, q, n, f);\n c.hasPinched = k;\n c.scaleGroups(p, n);\n }), c.res && (c.res = !1, this.reset(!1, 0)));\n };\n a.prototype.pinchTranslate = function (a, c, b, e, d, m) {\n this.zoomHor && this.pinchTranslateDirection(!0, a, c, b, e, d, m);\n this.zoomVert && this.pinchTranslateDirection(!1, a, c, b, e, d, m);\n };\n a.prototype.pinchTranslateDirection = function (a, c, b, e, d, m, f, h) {\n var g = this.chart,\n l = a ? \"x\" : \"y\",\n k = a ? \"X\" : \"Y\",\n p = \"chart\" + k,\n r = a ? \"width\" : \"height\",\n n = g[\"plot\" + (a ? \"Left\" : \"Top\")],\n t = g.inverted,\n x = g.bounds[a ? \"h\" : \"v\"],\n q = 1 === c.length,\n D = c[0][p],\n B = !q && c[1][p];\n c = function () {\n \"number\" === typeof v && 20 < Math.abs(D - B) && (C = h || Math.abs(N - v) / Math.abs(D - B));\n E = (n - N) / C + D;\n w = g[\"plot\" + (a ? \"Width\" : \"Height\")] / C;\n };\n var w,\n E,\n C = h || 1,\n N = b[0][p],\n v = !q && b[1][p];\n c();\n b = E;\n if (b < x.min) {\n b = x.min;\n var J = !0;\n } else b + w > x.max && (b = x.max - w, J = !0);\n J ? (N -= .8 * (N - f[l][0]), \"number\" === typeof v && (v -= .8 * (v - f[l][1])), c()) : f[l] = [N, v];\n t || (m[l] = E - n, m[r] = w);\n m = t ? 1 / C : C;\n d[r] = w;\n d[l] = b;\n e[t ? a ? \"scaleY\" : \"scaleX\" : \"scale\" + k] = C;\n e[\"translate\" + k] = m * n + (N - m * D);\n };\n a.prototype.reset = function (a, c) {\n var b = this.chart,\n e = b.hoverSeries,\n d = b.hoverPoint,\n m = b.hoverPoints,\n f = b.tooltip,\n l = f && f.shared ? m : d;\n a && l && J(l).forEach(function (b) {\n b.series.isCartesian && \"undefined\" === typeof b.plotX && (a = !1);\n });\n if (a) f && l && J(l).length && (f.refresh(l), f.shared && m ? m.forEach(function (b) {\n b.setState(b.state, !0);\n b.series.isCartesian && (b.series.xAxis.crosshair && b.series.xAxis.drawCrosshair(null, b), b.series.yAxis.crosshair && b.series.yAxis.drawCrosshair(null, b));\n }) : d && (d.setState(d.state, !0), b.axes.forEach(function (b) {\n b.crosshair && d.series[b.coll] === b && b.drawCrosshair(null, d);\n })));else {\n if (d) d.onMouseOut();\n m && m.forEach(function (b) {\n b.setState();\n });\n if (e) e.onMouseOut();\n f && f.hide(c);\n this.unDocMouseMove && (this.unDocMouseMove = this.unDocMouseMove());\n b.axes.forEach(function (b) {\n b.hideCrosshair();\n });\n this.hoverX = b.hoverPoints = b.hoverPoint = null;\n }\n };\n a.prototype.runPointActions = function (e, f) {\n var b = this.chart,\n g = b.tooltip && b.tooltip.options.enabled ? b.tooltip : void 0,\n d = g ? g.shared : !1,\n m = f || b.hoverPoint,\n l = m && m.series || b.hoverSeries;\n f = this.getHoverData(m, l, b.series, (!e || \"touchmove\" !== e.type) && (!!f || l && l.directTouch && this.isDirectTouch), d, e);\n m = f.hoverPoint;\n l = f.hoverSeries;\n var h = f.hoverPoints;\n f = l && l.tooltipOptions.followPointer && !l.tooltipOptions.split;\n d = d && l && !l.noSharedTooltip;\n if (m && (m !== b.hoverPoint || g && g.isHidden)) {\n (b.hoverPoints || []).forEach(function (b) {\n -1 === h.indexOf(b) && b.setState();\n });\n if (b.hoverSeries !== l) l.onMouseOver();\n this.applyInactiveState(h);\n (h || []).forEach(function (b) {\n b.setState(\"hover\");\n });\n b.hoverPoint && b.hoverPoint.firePointEvent(\"mouseOut\");\n if (!m.series) return;\n b.hoverPoints = h;\n b.hoverPoint = m;\n m.firePointEvent(\"mouseOver\");\n g && g.refresh(d ? h : m, e);\n } else f && g && !g.isHidden && (m = g.getAnchor([{}], e), b.isInsidePlot(m[0], m[1], {\n visiblePlotOnly: !0\n }) && g.updatePosition({\n plotX: m[0],\n plotY: m[1]\n }));\n this.unDocMouseMove || (this.unDocMouseMove = A(b.container.ownerDocument, \"mousemove\", function (b) {\n var d = G[a.hoverChartIndex];\n if (d) d.pointer.onDocumentMouseMove(b);\n }), this.eventsToUnbind.push(this.unDocMouseMove));\n b.axes.forEach(function (a) {\n var d = t((a.crosshair || {}).snap, !0),\n g;\n d && ((g = b.hoverPoint) && g.series[a.coll] === a || (g = c(h, function (b) {\n return b.series[a.coll] === a;\n })));\n g || !d ? a.drawCrosshair(e, g) : a.hideCrosshair();\n });\n };\n a.prototype.scaleGroups = function (a, c) {\n var b = this.chart;\n b.series.forEach(function (e) {\n var d = a || e.getPlotBox();\n e.group && (e.xAxis && e.xAxis.zoomEnabled || b.mapView) && (e.group.attr(d), e.markerGroup && (e.markerGroup.attr(d), e.markerGroup.clip(c ? b.clipRect : null)), e.dataLabelsGroup && e.dataLabelsGroup.attr(d));\n });\n b.clipRect.attr(c || b.clipBox);\n };\n a.prototype.setDOMEvents = function () {\n var c = this,\n e = this.chart.container,\n b = e.ownerDocument;\n e.onmousedown = this.onContainerMouseDown.bind(this);\n e.onmousemove = this.onContainerMouseMove.bind(this);\n e.onclick = this.onContainerClick.bind(this);\n this.eventsToUnbind.push(A(e, \"mouseenter\", this.onContainerMouseEnter.bind(this)));\n this.eventsToUnbind.push(A(e, \"mouseleave\", this.onContainerMouseLeave.bind(this)));\n a.unbindDocumentMouseUp || (a.unbindDocumentMouseUp = A(b, \"mouseup\", this.onDocumentMouseUp.bind(this)));\n for (var g = this.chart.renderTo.parentElement; g && \"BODY\" !== g.tagName;) this.eventsToUnbind.push(A(g, \"scroll\", function () {\n delete c.chartPosition;\n })), g = g.parentElement;\n u.hasTouch && (this.eventsToUnbind.push(A(e, \"touchstart\", this.onContainerTouchStart.bind(this), {\n passive: !1\n })), this.eventsToUnbind.push(A(e, \"touchmove\", this.onContainerTouchMove.bind(this), {\n passive: !1\n })), a.unbindDocumentTouchEnd || (a.unbindDocumentTouchEnd = A(b, \"touchend\", this.onDocumentTouchEnd.bind(this), {\n passive: !1\n })));\n };\n a.prototype.setHoverChartIndex = function () {\n var c = this.chart,\n e = u.charts[t(a.hoverChartIndex, -1)];\n if (e && e !== c) e.pointer.onContainerMouseLeave({\n relatedTarget: !0\n });\n e && e.mouseIsDown || (a.hoverChartIndex = c.index);\n };\n a.prototype.touch = function (a, c) {\n var b = this.chart,\n e;\n this.setHoverChartIndex();\n if (1 === a.touches.length) {\n if (a = this.normalize(a), (e = b.isInsidePlot(a.chartX - b.plotLeft, a.chartY - b.plotTop, {\n visiblePlotOnly: !0\n })) && !b.openMenu) {\n c && this.runPointActions(a);\n if (\"touchmove\" === a.type) {\n c = this.pinchDown;\n var d = c[0] ? 4 <= Math.sqrt(Math.pow(c[0].chartX - a.chartX, 2) + Math.pow(c[0].chartY - a.chartY, 2)) : !1;\n }\n t(d, !0) && this.pinch(a);\n } else c && this.reset();\n } else 2 === a.touches.length && this.pinch(a);\n };\n a.prototype.touchSelect = function (a) {\n return !(!this.chart.options.chart.zoomBySingleTouch || !a.touches || 1 !== a.touches.length);\n };\n a.prototype.zoomOption = function (a) {\n var c = this.chart,\n b = c.options.chart;\n c = c.inverted;\n var e = b.zoomType || \"\";\n /touch/.test(a.type) && (e = t(b.pinchType, e));\n this.zoomX = a = /x/.test(e);\n this.zoomY = b = /y/.test(e);\n this.zoomHor = a && !c || b && c;\n this.zoomVert = b && !c || a && c;\n this.hasZoom = a || b;\n };\n return a;\n }();\n \"\";\n return a;\n });\n M(a, \"Core/MSPointer.js\", [a[\"Core/Globals.js\"], a[\"Core/Pointer.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n function v() {\n var a = [];\n a.item = function (a) {\n return this[a];\n };\n c(f, function (c) {\n a.push({\n pageX: c.pageX,\n pageY: c.pageY,\n target: c.target\n });\n });\n return a;\n }\n function y(a, c, e, f) {\n var h = H[u.hoverChartIndex || NaN];\n \"touch\" !== a.pointerType && a.pointerType !== a.MSPOINTER_TYPE_TOUCH || !h || (h = h.pointer, f(a), h[c]({\n type: e,\n target: a.currentTarget,\n preventDefault: q,\n touches: v()\n }));\n }\n var G = this && this.__extends || function () {\n var a = function (c, e) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, c) {\n a.__proto__ = c;\n } || function (a, c) {\n for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e]);\n };\n return a(c, e);\n };\n return function (c, e) {\n function f() {\n this.constructor = c;\n }\n a(c, e);\n c.prototype = null === e ? Object.create(e) : (f.prototype = e.prototype, new f());\n };\n }(),\n H = a.charts,\n A = a.doc,\n q = a.noop,\n n = a.win,\n k = z.addEvent,\n e = z.css,\n c = z.objectEach,\n h = z.removeEvent,\n f = {},\n w = !!n.PointerEvent;\n return function (c) {\n function p() {\n return null !== c && c.apply(this, arguments) || this;\n }\n G(p, c);\n p.isRequired = function () {\n return !(a.hasTouch || !n.PointerEvent && !n.MSPointerEvent);\n };\n p.prototype.batchMSEvents = function (a) {\n a(this.chart.container, w ? \"pointerdown\" : \"MSPointerDown\", this.onContainerPointerDown);\n a(this.chart.container, w ? \"pointermove\" : \"MSPointerMove\", this.onContainerPointerMove);\n a(A, w ? \"pointerup\" : \"MSPointerUp\", this.onDocumentPointerUp);\n };\n p.prototype.destroy = function () {\n this.batchMSEvents(h);\n c.prototype.destroy.call(this);\n };\n p.prototype.init = function (a, f) {\n c.prototype.init.call(this, a, f);\n this.hasZoom && e(a.container, {\n \"-ms-touch-action\": \"none\",\n \"touch-action\": \"none\"\n });\n };\n p.prototype.onContainerPointerDown = function (a) {\n y(a, \"onContainerTouchStart\", \"touchstart\", function (a) {\n f[a.pointerId] = {\n pageX: a.pageX,\n pageY: a.pageY,\n target: a.currentTarget\n };\n });\n };\n p.prototype.onContainerPointerMove = function (a) {\n y(a, \"onContainerTouchMove\", \"touchmove\", function (a) {\n f[a.pointerId] = {\n pageX: a.pageX,\n pageY: a.pageY\n };\n f[a.pointerId].target || (f[a.pointerId].target = a.currentTarget);\n });\n };\n p.prototype.onDocumentPointerUp = function (a) {\n y(a, \"onDocumentTouchEnd\", \"touchend\", function (a) {\n delete f[a.pointerId];\n });\n };\n p.prototype.setDOMEvents = function () {\n c.prototype.setDOMEvents.call(this);\n (this.hasZoom || this.followTouchMove) && this.batchMSEvents(k);\n };\n return p;\n }(u);\n });\n M(a, \"Core/Legend/Legend.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/FormatUtilities.js\"], a[\"Core/Globals.js\"], a[\"Core/Series/Point.js\"], a[\"Core/Renderer/RendererUtilities.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G) {\n var v = a.animObject,\n A = a.setAnimation,\n q = u.format;\n a = z.isFirefox;\n var n = z.marginNames;\n z = z.win;\n var k = y.distribute,\n e = G.addEvent,\n c = G.createElement,\n h = G.css,\n f = G.defined,\n w = G.discardElement,\n p = G.find,\n B = G.fireEvent,\n t = G.isNumber,\n J = G.merge,\n C = G.pick,\n r = G.relativeLength,\n l = G.stableSort,\n b = G.syncTimeout;\n y = G.wrap;\n G = function () {\n function a(b, a) {\n this.allItems = [];\n this.contentGroup = this.box = void 0;\n this.display = !1;\n this.group = void 0;\n this.offsetWidth = this.maxLegendWidth = this.maxItemWidth = this.legendWidth = this.legendHeight = this.lastLineHeight = this.lastItemY = this.itemY = this.itemX = this.itemMarginTop = this.itemMarginBottom = this.itemHeight = this.initialItemY = 0;\n this.options = {};\n this.padding = 0;\n this.pages = [];\n this.proximate = !1;\n this.scrollGroup = void 0;\n this.widthOption = this.totalItemWidth = this.titleHeight = this.symbolWidth = this.symbolHeight = 0;\n this.chart = b;\n this.init(b, a);\n }\n a.prototype.init = function (b, a) {\n this.chart = b;\n this.setOptions(a);\n a.enabled && (this.render(), e(this.chart, \"endResize\", function () {\n this.legend.positionCheckboxes();\n }), this.proximate ? this.unchartrender = e(this.chart, \"render\", function () {\n this.legend.proximatePositions();\n this.legend.positionItems();\n }) : this.unchartrender && this.unchartrender());\n };\n a.prototype.setOptions = function (b) {\n var a = C(b.padding, 8);\n this.options = b;\n this.chart.styledMode || (this.itemStyle = b.itemStyle, this.itemHiddenStyle = J(this.itemStyle, b.itemHiddenStyle));\n this.itemMarginTop = b.itemMarginTop || 0;\n this.itemMarginBottom = b.itemMarginBottom || 0;\n this.padding = a;\n this.initialItemY = a - 5;\n this.symbolWidth = C(b.symbolWidth, 16);\n this.pages = [];\n this.proximate = \"proximate\" === b.layout && !this.chart.inverted;\n this.baseline = void 0;\n };\n a.prototype.update = function (b, a) {\n var c = this.chart;\n this.setOptions(J(!0, this.options, b));\n this.destroy();\n c.isDirtyLegend = c.isDirtyBox = !0;\n C(a, !0) && c.redraw();\n B(this, \"afterUpdate\");\n };\n a.prototype.colorizeItem = function (b, a) {\n b.legendGroup[a ? \"removeClass\" : \"addClass\"](\"highcharts-legend-item-hidden\");\n if (!this.chart.styledMode) {\n var c = this.options,\n d = b.legendItem,\n e = b.legendLine,\n g = b.legendSymbol,\n f = this.itemHiddenStyle.color;\n c = a ? c.itemStyle.color : f;\n var m = a ? b.color || f : f,\n h = b.options && b.options.marker,\n l = {\n fill: m\n };\n d && d.css({\n fill: c,\n color: c\n });\n e && e.attr({\n stroke: m\n });\n g && (h && g.isMarker && (l = b.pointAttribs(), a || (l.stroke = l.fill = f)), g.attr(l));\n }\n B(this, \"afterColorizeItem\", {\n item: b,\n visible: a\n });\n };\n a.prototype.positionItems = function () {\n this.allItems.forEach(this.positionItem, this);\n this.chart.isResizing || this.positionCheckboxes();\n };\n a.prototype.positionItem = function (b) {\n var a = this,\n c = this.options,\n d = c.symbolPadding,\n e = !c.rtl,\n g = b._legendItemPos;\n c = g[0];\n g = g[1];\n var h = b.checkbox,\n l = b.legendGroup;\n l && l.element && (d = {\n translateX: e ? c : this.legendWidth - c - 2 * d - 4,\n translateY: g\n }, e = function () {\n B(a, \"afterPositionItem\", {\n item: b\n });\n }, f(l.translateY) ? l.animate(d, void 0, e) : (l.attr(d), e()));\n h && (h.x = c, h.y = g);\n };\n a.prototype.destroyItem = function (b) {\n var a = b.checkbox;\n [\"legendItem\", \"legendLine\", \"legendSymbol\", \"legendGroup\"].forEach(function (a) {\n b[a] && (b[a] = b[a].destroy());\n });\n a && w(b.checkbox);\n };\n a.prototype.destroy = function () {\n function b(b) {\n this[b] && (this[b] = this[b].destroy());\n }\n this.getAllItems().forEach(function (a) {\n [\"legendItem\", \"legendGroup\"].forEach(b, a);\n });\n \"clipRect up down pager nav box title group\".split(\" \").forEach(b, this);\n this.display = null;\n };\n a.prototype.positionCheckboxes = function () {\n var b = this.group && this.group.alignAttr,\n a = this.clipHeight || this.legendHeight,\n c = this.titleHeight;\n if (b) {\n var e = b.translateY;\n this.allItems.forEach(function (d) {\n var g = d.checkbox;\n if (g) {\n var f = e + c + g.y + (this.scrollOffset || 0) + 3;\n h(g, {\n left: b.translateX + d.checkboxOffset + g.x - 20 + \"px\",\n top: f + \"px\",\n display: this.proximate || f > e - 6 && f < e + a - 6 ? \"\" : \"none\"\n });\n }\n }, this);\n }\n };\n a.prototype.renderTitle = function () {\n var b = this.options,\n a = this.padding,\n c = b.title,\n e = 0;\n c.text && (this.title || (this.title = this.chart.renderer.label(c.text, a - 3, a - 4, null, null, null, b.useHTML, null, \"legend-title\").attr({\n zIndex: 1\n }), this.chart.styledMode || this.title.css(c.style), this.title.add(this.group)), c.width || this.title.css({\n width: this.maxLegendWidth + \"px\"\n }), b = this.title.getBBox(), e = b.height, this.offsetWidth = b.width, this.contentGroup.attr({\n translateY: e\n }));\n this.titleHeight = e;\n };\n a.prototype.setText = function (b) {\n var a = this.options;\n b.legendItem.attr({\n text: a.labelFormat ? q(a.labelFormat, b, this.chart) : a.labelFormatter.call(b)\n });\n };\n a.prototype.renderItem = function (b) {\n var a = this.chart,\n c = a.renderer,\n d = this.options,\n e = this.symbolWidth,\n g = d.symbolPadding || 0,\n f = this.itemStyle,\n h = this.itemHiddenStyle,\n l = \"horizontal\" === d.layout ? C(d.itemDistance, 20) : 0,\n k = !d.rtl,\n p = !b.series,\n n = !p && b.series.drawLegendSymbol ? b.series : b,\n r = n.options,\n t = this.createCheckboxForItem && r && r.showCheckbox,\n q = d.useHTML,\n w = b.options.className,\n E = b.legendItem;\n r = e + g + l + (t ? 20 : 0);\n E || (b.legendGroup = c.g(\"legend-item\").addClass(\"highcharts-\" + n.type + \"-series highcharts-color-\" + b.colorIndex + (w ? \" \" + w : \"\") + (p ? \" highcharts-series-\" + b.index : \"\")).attr({\n zIndex: 1\n }).add(this.scrollGroup), b.legendItem = E = c.text(\"\", k ? e + g : -g, this.baseline || 0, q), a.styledMode || E.css(J(b.visible ? f : h)), E.attr({\n align: k ? \"left\" : \"right\",\n zIndex: 2\n }).add(b.legendGroup), this.baseline || (this.fontMetrics = c.fontMetrics(a.styledMode ? 12 : f.fontSize, E), this.baseline = this.fontMetrics.f + 3 + this.itemMarginTop, E.attr(\"y\", this.baseline), this.symbolHeight = d.symbolHeight || this.fontMetrics.f, d.squareSymbol && (this.symbolWidth = C(d.symbolWidth, Math.max(this.symbolHeight, 16)), r = this.symbolWidth + g + l + (t ? 20 : 0), k && E.attr(\"x\", this.symbolWidth + g))), n.drawLegendSymbol(this, b), this.setItemEvents && this.setItemEvents(b, E, q));\n t && !b.checkbox && this.createCheckboxForItem && this.createCheckboxForItem(b);\n this.colorizeItem(b, b.visible);\n !a.styledMode && f.width || E.css({\n width: (d.itemWidth || this.widthOption || a.spacingBox.width) - r + \"px\"\n });\n this.setText(b);\n a = E.getBBox();\n c = this.fontMetrics && this.fontMetrics.h || 0;\n b.itemWidth = b.checkboxOffset = d.itemWidth || b.legendItemWidth || a.width + r;\n this.maxItemWidth = Math.max(this.maxItemWidth, b.itemWidth);\n this.totalItemWidth += b.itemWidth;\n this.itemHeight = b.itemHeight = Math.round(b.legendItemHeight || (a.height > 1.5 * c ? a.height : c));\n };\n a.prototype.layoutItem = function (b) {\n var a = this.options,\n c = this.padding,\n d = \"horizontal\" === a.layout,\n e = b.itemHeight,\n g = this.itemMarginBottom,\n f = this.itemMarginTop,\n h = d ? C(a.itemDistance, 20) : 0,\n l = this.maxLegendWidth;\n a = a.alignColumns && this.totalItemWidth > l ? this.maxItemWidth : b.itemWidth;\n d && this.itemX - c + a > l && (this.itemX = c, this.lastLineHeight && (this.itemY += f + this.lastLineHeight + g), this.lastLineHeight = 0);\n this.lastItemY = f + this.itemY + g;\n this.lastLineHeight = Math.max(e, this.lastLineHeight);\n b._legendItemPos = [this.itemX, this.itemY];\n d ? this.itemX += a : (this.itemY += f + e + g, this.lastLineHeight = e);\n this.offsetWidth = this.widthOption || Math.max((d ? this.itemX - c - (b.checkbox ? 0 : h) : a) + c, this.offsetWidth);\n };\n a.prototype.getAllItems = function () {\n var b = [];\n this.chart.series.forEach(function (a) {\n var c = a && a.options;\n a && C(c.showInLegend, f(c.linkedTo) ? !1 : void 0, !0) && (b = b.concat(a.legendItems || (\"point\" === c.legendType ? a.data : a)));\n });\n B(this, \"afterGetAllItems\", {\n allItems: b\n });\n return b;\n };\n a.prototype.getAlignment = function () {\n var b = this.options;\n return this.proximate ? b.align.charAt(0) + \"tv\" : b.floating ? \"\" : b.align.charAt(0) + b.verticalAlign.charAt(0) + b.layout.charAt(0);\n };\n a.prototype.adjustMargins = function (b, a) {\n var c = this.chart,\n d = this.options,\n e = this.getAlignment();\n e && [/(lth|ct|rth)/, /(rtv|rm|rbv)/, /(rbh|cb|lbh)/, /(lbv|lm|ltv)/].forEach(function (g, h) {\n g.test(e) && !f(b[h]) && (c[n[h]] = Math.max(c[n[h]], c.legend[(h + 1) % 2 ? \"legendHeight\" : \"legendWidth\"] + [1, -1, -1, 1][h] * d[h % 2 ? \"x\" : \"y\"] + C(d.margin, 12) + a[h] + (c.titleOffset[h] || 0)));\n });\n };\n a.prototype.proximatePositions = function () {\n var b = this.chart,\n a = [],\n c = \"left\" === this.options.align;\n this.allItems.forEach(function (d) {\n var e;\n var g = c;\n if (d.yAxis) {\n d.xAxis.options.reversed && (g = !g);\n d.points && (e = p(g ? d.points : d.points.slice(0).reverse(), function (b) {\n return t(b.plotY);\n }));\n g = this.itemMarginTop + d.legendItem.getBBox().height + this.itemMarginBottom;\n var f = d.yAxis.top - b.plotTop;\n d.visible ? (e = e ? e.plotY : d.yAxis.height, e += f - .3 * g) : e = f + d.yAxis.height;\n a.push({\n target: e,\n size: g,\n item: d\n });\n }\n }, this);\n k(a, b.plotHeight).forEach(function (a) {\n a.item._legendItemPos && (a.item._legendItemPos[1] = b.plotTop - b.spacing[0] + a.pos);\n });\n };\n a.prototype.render = function () {\n var b = this.chart,\n a = b.renderer,\n c = this.options,\n e = this.padding,\n g = this.getAllItems(),\n f = this.group,\n h = this.box;\n this.itemX = e;\n this.itemY = this.initialItemY;\n this.lastItemY = this.offsetWidth = 0;\n this.widthOption = r(c.width, b.spacingBox.width - e);\n var k = b.spacingBox.width - 2 * e - c.x;\n -1 < [\"rm\", \"lm\"].indexOf(this.getAlignment().substring(0, 2)) && (k /= 2);\n this.maxLegendWidth = this.widthOption || k;\n f || (this.group = f = a.g(\"legend\").addClass(c.className || \"\").attr({\n zIndex: 7\n }).add(), this.contentGroup = a.g().attr({\n zIndex: 1\n }).add(f), this.scrollGroup = a.g().add(this.contentGroup));\n this.renderTitle();\n l(g, function (b, a) {\n return (b.options && b.options.legendIndex || 0) - (a.options && a.options.legendIndex || 0);\n });\n c.reversed && g.reverse();\n this.allItems = g;\n this.display = k = !!g.length;\n this.itemHeight = this.totalItemWidth = this.maxItemWidth = this.lastLineHeight = 0;\n g.forEach(this.renderItem, this);\n g.forEach(this.layoutItem, this);\n g = (this.widthOption || this.offsetWidth) + e;\n var p = this.lastItemY + this.lastLineHeight + this.titleHeight;\n p = this.handleOverflow(p);\n p += e;\n h || (this.box = h = a.rect().addClass(\"highcharts-legend-box\").attr({\n r: c.borderRadius\n }).add(f), h.isNew = !0);\n b.styledMode || h.attr({\n stroke: c.borderColor,\n \"stroke-width\": c.borderWidth || 0,\n fill: c.backgroundColor || \"none\"\n }).shadow(c.shadow);\n 0 < g && 0 < p && (h[h.isNew ? \"attr\" : \"animate\"](h.crisp.call({}, {\n x: 0,\n y: 0,\n width: g,\n height: p\n }, h.strokeWidth())), h.isNew = !1);\n h[k ? \"show\" : \"hide\"]();\n b.styledMode && \"none\" === f.getStyle(\"display\") && (g = p = 0);\n this.legendWidth = g;\n this.legendHeight = p;\n k && this.align();\n this.proximate || this.positionItems();\n B(this, \"afterRender\");\n };\n a.prototype.align = function (b) {\n void 0 === b && (b = this.chart.spacingBox);\n var a = this.chart,\n c = this.options,\n d = b.y;\n /(lth|ct|rth)/.test(this.getAlignment()) && 0 < a.titleOffset[0] ? d += a.titleOffset[0] : /(lbh|cb|rbh)/.test(this.getAlignment()) && 0 < a.titleOffset[2] && (d -= a.titleOffset[2]);\n d !== b.y && (b = J(b, {\n y: d\n }));\n this.group.align(J(c, {\n width: this.legendWidth,\n height: this.legendHeight,\n verticalAlign: this.proximate ? \"top\" : c.verticalAlign\n }), !0, b);\n };\n a.prototype.handleOverflow = function (b) {\n var a = this,\n c = this.chart,\n d = c.renderer,\n e = this.options,\n g = e.y,\n f = \"top\" === e.verticalAlign,\n h = this.padding,\n l = e.maxHeight,\n k = e.navigation,\n p = C(k.animation, !0),\n n = k.arrowSize || 12,\n r = this.pages,\n t = this.allItems,\n q = function (b) {\n \"number\" === typeof b ? v.attr({\n height: b\n }) : v && (a.clipRect = v.destroy(), a.contentGroup.clip());\n a.contentGroup.div && (a.contentGroup.div.style.clip = b ? \"rect(\" + h + \"px,9999px,\" + (h + b) + \"px,0)\" : \"auto\");\n },\n w = function (b) {\n a[b] = d.circle(0, 0, 1.3 * n).translate(n / 2, n / 2).add(N);\n c.styledMode || a[b].attr(\"fill\", \"rgba(0,0,0,0.0001)\");\n return a[b];\n },\n E,\n B;\n g = c.spacingBox.height + (f ? -g : g) - h;\n var N = this.nav,\n v = this.clipRect;\n \"horizontal\" !== e.layout || \"middle\" === e.verticalAlign || e.floating || (g /= 2);\n l && (g = Math.min(g, l));\n r.length = 0;\n b && 0 < g && b > g && !1 !== k.enabled ? (this.clipHeight = E = Math.max(g - 20 - this.titleHeight - h, 0), this.currentPage = C(this.currentPage, 1), this.fullHeight = b, t.forEach(function (b, a) {\n var c = b._legendItemPos[1],\n d = Math.round(b.legendItem.getBBox().height),\n e = r.length;\n if (!e || c - r[e - 1] > E && (B || c) !== r[e - 1]) r.push(B || c), e++;\n b.pageIx = e - 1;\n B && (t[a - 1].pageIx = e - 1);\n a === t.length - 1 && c + d - r[e - 1] > E && d <= E && (r.push(c), b.pageIx = e);\n c !== B && (B = c);\n }), v || (v = a.clipRect = d.clipRect(0, h, 9999, 0), a.contentGroup.clip(v)), q(E), N || (this.nav = N = d.g().attr({\n zIndex: 1\n }).add(this.group), this.up = d.symbol(\"triangle\", 0, 0, n, n).add(N), w(\"upTracker\").on(\"click\", function () {\n a.scroll(-1, p);\n }), this.pager = d.text(\"\", 15, 10).addClass(\"highcharts-legend-navigation\"), c.styledMode || this.pager.css(k.style), this.pager.add(N), this.down = d.symbol(\"triangle-down\", 0, 0, n, n).add(N), w(\"downTracker\").on(\"click\", function () {\n a.scroll(1, p);\n })), a.scroll(0), b = g) : N && (q(), this.nav = N.destroy(), this.scrollGroup.attr({\n translateY: 1\n }), this.clipHeight = 0);\n return b;\n };\n a.prototype.scroll = function (a, c) {\n var d = this,\n e = this.chart,\n g = this.pages,\n f = g.length,\n h = this.clipHeight,\n l = this.options.navigation,\n m = this.pager,\n k = this.padding,\n p = this.currentPage + a;\n p > f && (p = f);\n 0 < p && (\"undefined\" !== typeof c && A(c, e), this.nav.attr({\n translateX: k,\n translateY: h + this.padding + 7 + this.titleHeight,\n visibility: \"visible\"\n }), [this.up, this.upTracker].forEach(function (b) {\n b.attr({\n \"class\": 1 === p ? \"highcharts-legend-nav-inactive\" : \"highcharts-legend-nav-active\"\n });\n }), m.attr({\n text: p + \"/\" + f\n }), [this.down, this.downTracker].forEach(function (b) {\n b.attr({\n x: 18 + this.pager.getBBox().width,\n \"class\": p === f ? \"highcharts-legend-nav-inactive\" : \"highcharts-legend-nav-active\"\n });\n }, this), e.styledMode || (this.up.attr({\n fill: 1 === p ? l.inactiveColor : l.activeColor\n }), this.upTracker.css({\n cursor: 1 === p ? \"default\" : \"pointer\"\n }), this.down.attr({\n fill: p === f ? l.inactiveColor : l.activeColor\n }), this.downTracker.css({\n cursor: p === f ? \"default\" : \"pointer\"\n })), this.scrollOffset = -g[p - 1] + this.initialItemY, this.scrollGroup.animate({\n translateY: this.scrollOffset\n }), this.currentPage = p, this.positionCheckboxes(), a = v(C(c, e.renderer.globalAnimation, !0)), b(function () {\n B(d, \"afterScroll\", {\n currentPage: p\n });\n }, a.duration));\n };\n a.prototype.setItemEvents = function (b, a, c) {\n var d = this,\n e = d.chart.renderer.boxWrapper,\n g = b instanceof F,\n f = \"highcharts-legend-\" + (g ? \"point\" : \"series\") + \"-active\",\n h = d.chart.styledMode,\n l = function (a) {\n d.allItems.forEach(function (c) {\n b !== c && [c].concat(c.linkedSeries || []).forEach(function (b) {\n b.setState(a, !g);\n });\n });\n };\n (c ? [a, b.legendSymbol] : [b.legendGroup]).forEach(function (c) {\n if (c) c.on(\"mouseover\", function () {\n b.visible && l(\"inactive\");\n b.setState(\"hover\");\n b.visible && e.addClass(f);\n h || a.css(d.options.itemHoverStyle);\n }).on(\"mouseout\", function () {\n d.chart.styledMode || a.css(J(b.visible ? d.itemStyle : d.itemHiddenStyle));\n l(\"\");\n e.removeClass(f);\n b.setState();\n }).on(\"click\", function (a) {\n var c = function () {\n b.setVisible && b.setVisible();\n l(b.visible ? \"inactive\" : \"\");\n };\n e.removeClass(f);\n a = {\n browserEvent: a\n };\n b.firePointEvent ? b.firePointEvent(\"legendItemClick\", a, c) : B(b, \"legendItemClick\", a, c);\n });\n });\n };\n a.prototype.createCheckboxForItem = function (b) {\n b.checkbox = c(\"input\", {\n type: \"checkbox\",\n className: \"highcharts-legend-checkbox\",\n checked: b.selected,\n defaultChecked: b.selected\n }, this.options.itemCheckboxStyle, this.chart.container);\n e(b.checkbox, \"click\", function (a) {\n B(b.series || b, \"checkboxClick\", {\n checked: a.target.checked,\n item: b\n }, function () {\n b.select();\n });\n });\n };\n return a;\n }();\n (/Trident\\/7\\.0/.test(z.navigator && z.navigator.userAgent) || a) && y(G.prototype, \"positionItem\", function (b, a) {\n var c = this,\n d = function () {\n a._legendItemPos && b.call(c, a);\n };\n d();\n c.bubbleLegend || setTimeout(d);\n });\n \"\";\n return G;\n });\n M(a, \"Core/Series/SeriesRegistry.js\", [a[\"Core/Globals.js\"], a[\"Core/DefaultOptions.js\"], a[\"Core/Series/Point.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F) {\n var v = u.defaultOptions,\n G = F.error,\n H = F.extendClass,\n A = F.merge,\n q;\n (function (n) {\n function k(a, c) {\n var e = v.plotOptions || {},\n f = c.defaultOptions;\n c.prototype.pointClass || (c.prototype.pointClass = z);\n c.prototype.type = a;\n f && (e[a] = f);\n n.seriesTypes[a] = c;\n }\n n.seriesTypes = a.seriesTypes;\n n.getSeries = function (a, c) {\n void 0 === c && (c = {});\n var e = a.options.chart;\n e = c.type || e.type || e.defaultSeriesType || \"\";\n var f = n.seriesTypes[e];\n n || G(17, !0, a, {\n missingModuleFor: e\n });\n e = new f();\n \"function\" === typeof e.init && e.init(a, c);\n return e;\n };\n n.registerSeriesType = k;\n n.seriesType = function (a, c, h, f, q) {\n var e = v.plotOptions || {};\n c = c || \"\";\n e[a] = A(e[c], h);\n k(a, H(n.seriesTypes[c] || function () {}, f));\n n.seriesTypes[a].prototype.type = a;\n q && (n.seriesTypes[a].prototype.pointClass = H(z, q));\n return n.seriesTypes[a];\n };\n })(q || (q = {}));\n return q;\n });\n M(a, \"Core/Chart/Chart.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/Axis/Axis.js\"], a[\"Core/FormatUtilities.js\"], a[\"Core/Foundation.js\"], a[\"Core/Globals.js\"], a[\"Core/Legend/Legend.js\"], a[\"Core/MSPointer.js\"], a[\"Core/DefaultOptions.js\"], a[\"Core/Pointer.js\"], a[\"Core/Renderer/RendererRegistry.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Renderer/SVG/SVGRenderer.js\"], a[\"Core/Time.js\"], a[\"Core/Utilities.js\"], a[\"Core/Renderer/HTML/AST.js\"]], function (a, u, z, F, y, G, H, A, q, n, k, e, c, h, f) {\n var w = a.animate,\n p = a.animObject,\n B = a.setAnimation,\n t = z.numberFormat,\n v = F.registerEventOptions,\n C = y.charts,\n r = y.doc,\n l = y.marginNames,\n b = y.svg,\n g = y.win,\n d = A.defaultOptions,\n m = A.defaultTime,\n D = k.seriesTypes,\n x = h.addEvent,\n I = h.attr,\n P = h.cleanRecursively,\n S = h.createElement,\n O = h.css,\n U = h.defined,\n Y = h.discardElement,\n L = h.erase,\n K = h.error,\n M = h.extend,\n da = h.find,\n Q = h.fireEvent,\n ea = h.getStyle,\n E = h.isArray,\n T = h.isNumber,\n N = h.isObject,\n V = h.isString,\n W = h.merge,\n X = h.objectEach,\n R = h.pick,\n fa = h.pInt,\n aa = h.relativeLength,\n ia = h.removeEvent,\n ha = h.splat,\n ba = h.syncTimeout,\n ka = h.uniqueKey;\n a = function () {\n function a(b, a, c) {\n this.series = this.renderTo = this.renderer = this.pointer = this.pointCount = this.plotWidth = this.plotTop = this.plotLeft = this.plotHeight = this.plotBox = this.options = this.numberFormatter = this.margin = this.legend = this.labelCollectors = this.isResizing = this.index = this.eventOptions = this.container = this.colorCounter = this.clipBox = this.chartWidth = this.chartHeight = this.bounds = this.axisOffset = this.axes = void 0;\n this.sharedClips = {};\n this.yAxis = this.xAxis = this.userOptions = this.titleOffset = this.time = this.symbolCounter = this.spacingBox = this.spacing = void 0;\n this.getArgs(b, a, c);\n }\n a.chart = function (b, c, d) {\n return new a(b, c, d);\n };\n a.prototype.getArgs = function (b, a, c) {\n V(b) || b.nodeName ? (this.renderTo = b, this.init(a, c)) : this.init(b, a);\n };\n a.prototype.init = function (b, a) {\n var e = b.plotOptions || {};\n Q(this, \"init\", {\n args: arguments\n }, function () {\n var g = W(d, b),\n f = g.chart;\n X(g.plotOptions, function (b, a) {\n N(b) && (b.tooltip = e[a] && W(e[a].tooltip) || void 0);\n });\n g.tooltip.userOptions = b.chart && b.chart.forExport && b.tooltip.userOptions || b.tooltip;\n this.userOptions = b;\n this.margin = [];\n this.spacing = [];\n this.bounds = {\n h: {},\n v: {}\n };\n this.labelCollectors = [];\n this.callback = a;\n this.isResizing = 0;\n this.options = g;\n this.axes = [];\n this.series = [];\n this.time = b.time && Object.keys(b.time).length ? new c(b.time) : y.time;\n this.numberFormatter = f.numberFormatter || t;\n this.styledMode = f.styledMode;\n this.hasCartesianSeries = f.showAxes;\n this.index = C.length;\n C.push(this);\n y.chartCount++;\n v(this, f);\n this.xAxis = [];\n this.yAxis = [];\n this.pointCount = this.colorCounter = this.symbolCounter = 0;\n Q(this, \"afterInit\");\n this.firstRender();\n });\n };\n a.prototype.initSeries = function (b) {\n var a = this.options.chart;\n a = b.type || a.type || a.defaultSeriesType;\n var c = D[a];\n c || K(17, !0, this, {\n missingModuleFor: a\n });\n a = new c();\n \"function\" === typeof a.init && a.init(this, b);\n return a;\n };\n a.prototype.setSeriesData = function () {\n this.getSeriesOrderByLinks().forEach(function (b) {\n b.points || b.data || !b.enabledDataSorting || b.setData(b.options.data, !1);\n });\n };\n a.prototype.getSeriesOrderByLinks = function () {\n return this.series.concat().sort(function (b, a) {\n return b.linkedSeries.length || a.linkedSeries.length ? a.linkedSeries.length - b.linkedSeries.length : 0;\n });\n };\n a.prototype.orderSeries = function (b) {\n var a = this.series;\n b = b || 0;\n for (var c = a.length; b < c; ++b) a[b] && (a[b].index = b, a[b].name = a[b].getName());\n };\n a.prototype.isInsidePlot = function (b, a, c) {\n void 0 === c && (c = {});\n var d = this.inverted,\n e = this.plotBox,\n g = this.plotLeft,\n f = this.plotTop,\n h = this.scrollablePlotBox,\n l = 0;\n var k = 0;\n c.visiblePlotOnly && this.scrollingContainer && (k = this.scrollingContainer, l = k.scrollLeft, k = k.scrollTop);\n var m = c.series;\n e = c.visiblePlotOnly && h || e;\n h = c.inverted ? a : b;\n a = c.inverted ? b : a;\n b = {\n x: h,\n y: a,\n isInsidePlot: !0\n };\n if (!c.ignoreX) {\n var p = m && (d ? m.yAxis : m.xAxis) || {\n pos: g,\n len: Infinity\n };\n h = c.paneCoordinates ? p.pos + h : g + h;\n h >= Math.max(l + g, p.pos) && h <= Math.min(l + g + e.width, p.pos + p.len) || (b.isInsidePlot = !1);\n }\n !c.ignoreY && b.isInsidePlot && (d = m && (d ? m.xAxis : m.yAxis) || {\n pos: f,\n len: Infinity\n }, c = c.paneCoordinates ? d.pos + a : f + a, c >= Math.max(k + f, d.pos) && c <= Math.min(k + f + e.height, d.pos + d.len) || (b.isInsidePlot = !1));\n Q(this, \"afterIsInsidePlot\", b);\n return b.isInsidePlot;\n };\n a.prototype.redraw = function (b) {\n Q(this, \"beforeRedraw\");\n var a = this.hasCartesianSeries ? this.axes : this.colorAxis || [],\n c = this.series,\n d = this.pointer,\n e = this.legend,\n g = this.userOptions.legend,\n f = this.renderer,\n h = f.isHidden(),\n l = [],\n k = this.isDirtyBox,\n m = this.isDirtyLegend;\n this.setResponsive && this.setResponsive(!1);\n B(this.hasRendered ? b : !1, this);\n h && this.temporaryDisplay();\n this.layOutTitles();\n for (b = c.length; b--;) {\n var p = c[b];\n if (p.options.stacking || p.options.centerInCategory) {\n var n = !0;\n if (p.isDirty) {\n var E = !0;\n break;\n }\n }\n }\n if (E) for (b = c.length; b--;) p = c[b], p.options.stacking && (p.isDirty = !0);\n c.forEach(function (b) {\n b.isDirty && (\"point\" === b.options.legendType ? (\"function\" === typeof b.updateTotals && b.updateTotals(), m = !0) : g && (g.labelFormatter || g.labelFormat) && (m = !0));\n b.isDirtyData && Q(b, \"updatedData\");\n });\n m && e && e.options.enabled && (e.render(), this.isDirtyLegend = !1);\n n && this.getStacks();\n a.forEach(function (b) {\n b.updateNames();\n b.setScale();\n });\n this.getMargins();\n a.forEach(function (b) {\n b.isDirty && (k = !0);\n });\n a.forEach(function (b) {\n var a = b.min + \",\" + b.max;\n b.extKey !== a && (b.extKey = a, l.push(function () {\n Q(b, \"afterSetExtremes\", M(b.eventArgs, b.getExtremes()));\n delete b.eventArgs;\n }));\n (k || n) && b.redraw();\n });\n k && this.drawChartBox();\n Q(this, \"predraw\");\n c.forEach(function (b) {\n (k || b.isDirty) && b.visible && b.redraw();\n b.isDirtyData = !1;\n });\n d && d.reset(!0);\n f.draw();\n Q(this, \"redraw\");\n Q(this, \"render\");\n h && this.temporaryDisplay(!0);\n l.forEach(function (b) {\n b.call();\n });\n };\n a.prototype.get = function (b) {\n function a(a) {\n return a.id === b || a.options && a.options.id === b;\n }\n for (var c = this.series, d = da(this.axes, a) || da(this.series, a), e = 0; !d && e < c.length; e++) d = da(c[e].points || [], a);\n return d;\n };\n a.prototype.getAxes = function () {\n var b = this,\n a = this.options,\n c = a.xAxis = ha(a.xAxis || {});\n a = a.yAxis = ha(a.yAxis || {});\n Q(this, \"getAxes\");\n c.forEach(function (b, a) {\n b.index = a;\n b.isX = !0;\n });\n a.forEach(function (b, a) {\n b.index = a;\n });\n c.concat(a).forEach(function (a) {\n new u(b, a);\n });\n Q(this, \"afterGetAxes\");\n };\n a.prototype.getSelectedPoints = function () {\n return this.series.reduce(function (b, a) {\n a.getPointsCollection().forEach(function (a) {\n R(a.selectedStaging, a.selected) && b.push(a);\n });\n return b;\n }, []);\n };\n a.prototype.getSelectedSeries = function () {\n return this.series.filter(function (b) {\n return b.selected;\n });\n };\n a.prototype.setTitle = function (b, a, c) {\n this.applyDescription(\"title\", b);\n this.applyDescription(\"subtitle\", a);\n this.applyDescription(\"caption\", void 0);\n this.layOutTitles(c);\n };\n a.prototype.applyDescription = function (b, a) {\n var c = this,\n d = \"title\" === b ? {\n color: \"#333333\",\n fontSize: this.options.isStock ? \"16px\" : \"18px\"\n } : {\n color: \"#666666\"\n };\n d = this.options[b] = W(!this.styledMode && {\n style: d\n }, this.options[b], a);\n var e = this[b];\n e && a && (this[b] = e = e.destroy());\n d && !e && (e = this.renderer.text(d.text, 0, 0, d.useHTML).attr({\n align: d.align,\n \"class\": \"highcharts-\" + b,\n zIndex: d.zIndex || 4\n }).add(), e.update = function (a) {\n c[{\n title: \"setTitle\",\n subtitle: \"setSubtitle\",\n caption: \"setCaption\"\n }[b]](a);\n }, this.styledMode || e.css(d.style), this[b] = e);\n };\n a.prototype.layOutTitles = function (b) {\n var a = [0, 0, 0],\n c = this.renderer,\n d = this.spacingBox;\n [\"title\", \"subtitle\", \"caption\"].forEach(function (b) {\n var e = this[b],\n g = this.options[b],\n f = g.verticalAlign || \"top\";\n b = \"title\" === b ? \"top\" === f ? -3 : 0 : \"top\" === f ? a[0] + 2 : 0;\n var h;\n if (e) {\n this.styledMode || (h = g.style && g.style.fontSize);\n h = c.fontMetrics(h, e).b;\n e.css({\n width: (g.width || d.width + (g.widthAdjust || 0)) + \"px\"\n });\n var l = Math.round(e.getBBox(g.useHTML).height);\n e.align(M({\n y: \"bottom\" === f ? h : b + h,\n height: l\n }, g), !1, \"spacingBox\");\n g.floating || (\"top\" === f ? a[0] = Math.ceil(a[0] + l) : \"bottom\" === f && (a[2] = Math.ceil(a[2] + l)));\n }\n }, this);\n a[0] && \"top\" === (this.options.title.verticalAlign || \"top\") && (a[0] += this.options.title.margin);\n a[2] && \"bottom\" === this.options.caption.verticalAlign && (a[2] += this.options.caption.margin);\n var e = !this.titleOffset || this.titleOffset.join(\",\") !== a.join(\",\");\n this.titleOffset = a;\n Q(this, \"afterLayOutTitles\");\n !this.isDirtyBox && e && (this.isDirtyBox = this.isDirtyLegend = e, this.hasRendered && R(b, !0) && this.isDirtyBox && this.redraw());\n };\n a.prototype.getChartSize = function () {\n var b = this.options.chart,\n a = b.width;\n b = b.height;\n var c = this.renderTo;\n U(a) || (this.containerWidth = ea(c, \"width\"));\n U(b) || (this.containerHeight = ea(c, \"height\"));\n this.chartWidth = Math.max(0, a || this.containerWidth || 600);\n this.chartHeight = Math.max(0, aa(b, this.chartWidth) || (1 < this.containerHeight ? this.containerHeight : 400));\n };\n a.prototype.temporaryDisplay = function (b) {\n var a = this.renderTo;\n if (b) for (; a && a.style;) a.hcOrigStyle && (O(a, a.hcOrigStyle), delete a.hcOrigStyle), a.hcOrigDetached && (r.body.removeChild(a), a.hcOrigDetached = !1), a = a.parentNode;else for (; a && a.style;) {\n r.body.contains(a) || a.parentNode || (a.hcOrigDetached = !0, r.body.appendChild(a));\n if (\"none\" === ea(a, \"display\", !1) || a.hcOricDetached) a.hcOrigStyle = {\n display: a.style.display,\n height: a.style.height,\n overflow: a.style.overflow\n }, b = {\n display: \"block\",\n overflow: \"hidden\"\n }, a !== this.renderTo && (b.height = 0), O(a, b), a.offsetWidth || a.style.setProperty(\"display\", \"block\", \"important\");\n a = a.parentNode;\n if (a === r.body) break;\n }\n };\n a.prototype.setClassName = function (b) {\n this.container.className = \"highcharts-container \" + (b || \"\");\n };\n a.prototype.getContainer = function () {\n var a = this.options,\n c = a.chart,\n d = ka(),\n g,\n h = this.renderTo;\n h || (this.renderTo = h = c.renderTo);\n V(h) && (this.renderTo = h = r.getElementById(h));\n h || K(13, !0, this);\n var l = fa(I(h, \"data-highcharts-chart\"));\n T(l) && C[l] && C[l].hasRendered && C[l].destroy();\n I(h, \"data-highcharts-chart\", this.index);\n h.innerHTML = f.emptyHTML;\n c.skipClone || h.offsetWidth || this.temporaryDisplay();\n this.getChartSize();\n l = this.chartWidth;\n var k = this.chartHeight;\n O(h, {\n overflow: \"hidden\"\n });\n this.styledMode || (g = M({\n position: \"relative\",\n overflow: \"hidden\",\n width: l + \"px\",\n height: k + \"px\",\n textAlign: \"left\",\n lineHeight: \"normal\",\n zIndex: 0,\n \"-webkit-tap-highlight-color\": \"rgba(0,0,0,0)\",\n userSelect: \"none\",\n \"touch-action\": \"manipulation\",\n outline: \"none\"\n }, c.style || {}));\n this.container = d = S(\"div\", {\n id: d\n }, g, h);\n this._cursor = d.style.cursor;\n this.renderer = new (c.renderer || !b ? n.getRendererType(c.renderer) : e)(d, l, k, void 0, c.forExport, a.exporting && a.exporting.allowHTML, this.styledMode);\n B(void 0, this);\n this.setClassName(c.className);\n if (this.styledMode) for (var m in a.defs) this.renderer.definition(a.defs[m]);else this.renderer.setStyle(c.style);\n this.renderer.chartIndex = this.index;\n Q(this, \"afterGetContainer\");\n };\n a.prototype.getMargins = function (b) {\n var a = this.spacing,\n c = this.margin,\n d = this.titleOffset;\n this.resetMargins();\n d[0] && !U(c[0]) && (this.plotTop = Math.max(this.plotTop, d[0] + a[0]));\n d[2] && !U(c[2]) && (this.marginBottom = Math.max(this.marginBottom, d[2] + a[2]));\n this.legend && this.legend.display && this.legend.adjustMargins(c, a);\n Q(this, \"getMargins\");\n b || this.getAxisMargins();\n };\n a.prototype.getAxisMargins = function () {\n var b = this,\n a = b.axisOffset = [0, 0, 0, 0],\n c = b.colorAxis,\n d = b.margin,\n e = function (b) {\n b.forEach(function (b) {\n b.visible && b.getOffset();\n });\n };\n b.hasCartesianSeries ? e(b.axes) : c && c.length && e(c);\n l.forEach(function (c, e) {\n U(d[e]) || (b[c] += a[e]);\n });\n b.setChartSize();\n };\n a.prototype.reflow = function (b) {\n var a = this,\n c = a.options.chart,\n d = a.renderTo,\n e = U(c.width) && U(c.height),\n f = c.width || ea(d, \"width\");\n c = c.height || ea(d, \"height\");\n d = b ? b.target : g;\n delete a.pointer.chartPosition;\n if (!e && !a.isPrinting && f && c && (d === g || d === r)) {\n if (f !== a.containerWidth || c !== a.containerHeight) h.clearTimeout(a.reflowTimeout), a.reflowTimeout = ba(function () {\n a.container && a.setSize(void 0, void 0, !1);\n }, b ? 100 : 0);\n a.containerWidth = f;\n a.containerHeight = c;\n }\n };\n a.prototype.setReflow = function (b) {\n var a = this;\n !1 === b || this.unbindReflow ? !1 === b && this.unbindReflow && (this.unbindReflow = this.unbindReflow()) : (this.unbindReflow = x(g, \"resize\", function (b) {\n a.options && a.reflow(b);\n }), x(this, \"destroy\", this.unbindReflow));\n };\n a.prototype.setSize = function (b, a, c) {\n var d = this,\n e = d.renderer;\n d.isResizing += 1;\n B(c, d);\n c = e.globalAnimation;\n d.oldChartHeight = d.chartHeight;\n d.oldChartWidth = d.chartWidth;\n \"undefined\" !== typeof b && (d.options.chart.width = b);\n \"undefined\" !== typeof a && (d.options.chart.height = a);\n d.getChartSize();\n d.styledMode || (c ? w : O)(d.container, {\n width: d.chartWidth + \"px\",\n height: d.chartHeight + \"px\"\n }, c);\n d.setChartSize(!0);\n e.setSize(d.chartWidth, d.chartHeight, c);\n d.axes.forEach(function (b) {\n b.isDirty = !0;\n b.setScale();\n });\n d.isDirtyLegend = !0;\n d.isDirtyBox = !0;\n d.layOutTitles();\n d.getMargins();\n d.redraw(c);\n d.oldChartHeight = null;\n Q(d, \"resize\");\n ba(function () {\n d && Q(d, \"endResize\", null, function () {\n --d.isResizing;\n });\n }, p(c).duration);\n };\n a.prototype.setChartSize = function (b) {\n var a = this.inverted,\n c = this.renderer,\n d = this.chartWidth,\n e = this.chartHeight,\n g = this.options.chart,\n f = this.spacing,\n h = this.clipOffset,\n l,\n k,\n m,\n p;\n this.plotLeft = l = Math.round(this.plotLeft);\n this.plotTop = k = Math.round(this.plotTop);\n this.plotWidth = m = Math.max(0, Math.round(d - l - this.marginRight));\n this.plotHeight = p = Math.max(0, Math.round(e - k - this.marginBottom));\n this.plotSizeX = a ? p : m;\n this.plotSizeY = a ? m : p;\n this.plotBorderWidth = g.plotBorderWidth || 0;\n this.spacingBox = c.spacingBox = {\n x: f[3],\n y: f[0],\n width: d - f[3] - f[1],\n height: e - f[0] - f[2]\n };\n this.plotBox = c.plotBox = {\n x: l,\n y: k,\n width: m,\n height: p\n };\n a = 2 * Math.floor(this.plotBorderWidth / 2);\n d = Math.ceil(Math.max(a, h[3]) / 2);\n e = Math.ceil(Math.max(a, h[0]) / 2);\n this.clipBox = {\n x: d,\n y: e,\n width: Math.floor(this.plotSizeX - Math.max(a, h[1]) / 2 - d),\n height: Math.max(0, Math.floor(this.plotSizeY - Math.max(a, h[2]) / 2 - e))\n };\n b || (this.axes.forEach(function (b) {\n b.setAxisSize();\n b.setAxisTranslation();\n }), c.alignElements());\n Q(this, \"afterSetChartSize\", {\n skipAxes: b\n });\n };\n a.prototype.resetMargins = function () {\n Q(this, \"resetMargins\");\n var b = this,\n a = b.options.chart;\n [\"margin\", \"spacing\"].forEach(function (c) {\n var d = a[c],\n e = N(d) ? d : [d, d, d, d];\n [\"Top\", \"Right\", \"Bottom\", \"Left\"].forEach(function (d, g) {\n b[c][g] = R(a[c + d], e[g]);\n });\n });\n l.forEach(function (a, c) {\n b[a] = R(b.margin[c], b.spacing[c]);\n });\n b.axisOffset = [0, 0, 0, 0];\n b.clipOffset = [0, 0, 0, 0];\n };\n a.prototype.drawChartBox = function () {\n var b = this.options.chart,\n a = this.renderer,\n c = this.chartWidth,\n d = this.chartHeight,\n e = this.styledMode,\n g = this.plotBGImage,\n f = b.backgroundColor,\n h = b.plotBackgroundColor,\n l = b.plotBackgroundImage,\n k = this.plotLeft,\n m = this.plotTop,\n p = this.plotWidth,\n n = this.plotHeight,\n E = this.plotBox,\n r = this.clipRect,\n t = this.clipBox,\n q = this.chartBackground,\n N = this.plotBackground,\n w = this.plotBorder,\n B,\n C = \"animate\";\n q || (this.chartBackground = q = a.rect().addClass(\"highcharts-background\").add(), C = \"attr\");\n if (e) var x = B = q.strokeWidth();else {\n x = b.borderWidth || 0;\n B = x + (b.shadow ? 8 : 0);\n f = {\n fill: f || \"none\"\n };\n if (x || q[\"stroke-width\"]) f.stroke = b.borderColor, f[\"stroke-width\"] = x;\n q.attr(f).shadow(b.shadow);\n }\n q[C]({\n x: B / 2,\n y: B / 2,\n width: c - B - x % 2,\n height: d - B - x % 2,\n r: b.borderRadius\n });\n C = \"animate\";\n N || (C = \"attr\", this.plotBackground = N = a.rect().addClass(\"highcharts-plot-background\").add());\n N[C](E);\n e || (N.attr({\n fill: h || \"none\"\n }).shadow(b.plotShadow), l && (g ? (l !== g.attr(\"href\") && g.attr(\"href\", l), g.animate(E)) : this.plotBGImage = a.image(l, k, m, p, n).add()));\n r ? r.animate({\n width: t.width,\n height: t.height\n }) : this.clipRect = a.clipRect(t);\n C = \"animate\";\n w || (C = \"attr\", this.plotBorder = w = a.rect().addClass(\"highcharts-plot-border\").attr({\n zIndex: 1\n }).add());\n e || w.attr({\n stroke: b.plotBorderColor,\n \"stroke-width\": b.plotBorderWidth || 0,\n fill: \"none\"\n });\n w[C](w.crisp({\n x: k,\n y: m,\n width: p,\n height: n\n }, -w.strokeWidth()));\n this.isDirtyBox = !1;\n Q(this, \"afterDrawChartBox\");\n };\n a.prototype.propFromSeries = function () {\n var b = this,\n a = b.options.chart,\n c = b.options.series,\n d,\n e,\n g;\n [\"inverted\", \"angular\", \"polar\"].forEach(function (f) {\n e = D[a.type || a.defaultSeriesType];\n g = a[f] || e && e.prototype[f];\n for (d = c && c.length; !g && d--;) (e = D[c[d].type]) && e.prototype[f] && (g = !0);\n b[f] = g;\n });\n };\n a.prototype.linkSeries = function () {\n var b = this,\n a = b.series;\n a.forEach(function (b) {\n b.linkedSeries.length = 0;\n });\n a.forEach(function (a) {\n var c = a.options.linkedTo;\n V(c) && (c = \":previous\" === c ? b.series[a.index - 1] : b.get(c)) && c.linkedParent !== a && (c.linkedSeries.push(a), a.linkedParent = c, c.enabledDataSorting && a.setDataSortingOptions(), a.visible = R(a.options.visible, c.options.visible, a.visible));\n });\n Q(this, \"afterLinkSeries\");\n };\n a.prototype.renderSeries = function () {\n this.series.forEach(function (b) {\n b.translate();\n b.render();\n });\n };\n a.prototype.renderLabels = function () {\n var b = this,\n a = b.options.labels;\n a.items && a.items.forEach(function (c) {\n var d = M(a.style, c.style),\n e = fa(d.left) + b.plotLeft,\n g = fa(d.top) + b.plotTop + 12;\n delete d.left;\n delete d.top;\n b.renderer.text(c.html, e, g).attr({\n zIndex: 2\n }).css(d).add();\n });\n };\n a.prototype.render = function () {\n var b = this.axes,\n a = this.colorAxis,\n c = this.renderer,\n d = this.options,\n e = function (b) {\n b.forEach(function (b) {\n b.visible && b.render();\n });\n },\n g = 0;\n this.setTitle();\n this.legend = new G(this, d.legend);\n this.getStacks && this.getStacks();\n this.getMargins(!0);\n this.setChartSize();\n d = this.plotWidth;\n b.some(function (b) {\n if (b.horiz && b.visible && b.options.labels.enabled && b.series.length) return g = 21, !0;\n });\n var f = this.plotHeight = Math.max(this.plotHeight - g, 0);\n b.forEach(function (b) {\n b.setScale();\n });\n this.getAxisMargins();\n var h = 1.1 < d / this.plotWidth,\n l = 1.05 < f / this.plotHeight;\n if (h || l) b.forEach(function (b) {\n (b.horiz && h || !b.horiz && l) && b.setTickInterval(!0);\n }), this.getMargins();\n this.drawChartBox();\n this.hasCartesianSeries ? e(b) : a && a.length && e(a);\n this.seriesGroup || (this.seriesGroup = c.g(\"series-group\").attr({\n zIndex: 3\n }).add());\n this.renderSeries();\n this.renderLabels();\n this.addCredits();\n this.setResponsive && this.setResponsive();\n this.hasRendered = !0;\n };\n a.prototype.addCredits = function (b) {\n var a = this,\n c = W(!0, this.options.credits, b);\n c.enabled && !this.credits && (this.credits = this.renderer.text(c.text + (this.mapCredits || \"\"), 0, 0).addClass(\"highcharts-credits\").on(\"click\", function () {\n c.href && (g.location.href = c.href);\n }).attr({\n align: c.position.align,\n zIndex: 8\n }), a.styledMode || this.credits.css(c.style), this.credits.add().align(c.position), this.credits.update = function (b) {\n a.credits = a.credits.destroy();\n a.addCredits(b);\n });\n };\n a.prototype.destroy = function () {\n var b = this,\n a = b.axes,\n c = b.series,\n d = b.container,\n e = d && d.parentNode,\n g;\n Q(b, \"destroy\");\n b.renderer.forExport ? L(C, b) : C[b.index] = void 0;\n y.chartCount--;\n b.renderTo.removeAttribute(\"data-highcharts-chart\");\n ia(b);\n for (g = a.length; g--;) a[g] = a[g].destroy();\n this.scroller && this.scroller.destroy && this.scroller.destroy();\n for (g = c.length; g--;) c[g] = c[g].destroy();\n \"title subtitle chartBackground plotBackground plotBGImage plotBorder seriesGroup clipRect credits pointer rangeSelector legend resetZoomButton tooltip renderer\".split(\" \").forEach(function (a) {\n var c = b[a];\n c && c.destroy && (b[a] = c.destroy());\n });\n d && (d.innerHTML = f.emptyHTML, ia(d), e && Y(d));\n X(b, function (a, c) {\n delete b[c];\n });\n };\n a.prototype.firstRender = function () {\n var b = this,\n a = b.options;\n if (!b.isReadyToRender || b.isReadyToRender()) {\n b.getContainer();\n b.resetMargins();\n b.setChartSize();\n b.propFromSeries();\n b.getAxes();\n (E(a.series) ? a.series : []).forEach(function (a) {\n b.initSeries(a);\n });\n b.linkSeries();\n b.setSeriesData();\n Q(b, \"beforeRender\");\n q && (H.isRequired() ? b.pointer = new H(b, a) : b.pointer = new q(b, a));\n b.render();\n b.pointer.getChartPosition();\n if (!b.renderer.imgCount && !b.hasLoaded) b.onload();\n b.temporaryDisplay(!0);\n }\n };\n a.prototype.onload = function () {\n this.callbacks.concat([this.callback]).forEach(function (b) {\n b && \"undefined\" !== typeof this.index && b.apply(this, [this]);\n }, this);\n Q(this, \"load\");\n Q(this, \"render\");\n U(this.index) && this.setReflow(this.options.chart.reflow);\n this.hasLoaded = !0;\n };\n a.prototype.addSeries = function (b, a, c) {\n var d = this,\n e;\n b && (a = R(a, !0), Q(d, \"addSeries\", {\n options: b\n }, function () {\n e = d.initSeries(b);\n d.isDirtyLegend = !0;\n d.linkSeries();\n e.enabledDataSorting && e.setData(b.data, !1);\n Q(d, \"afterAddSeries\", {\n series: e\n });\n a && d.redraw(c);\n }));\n return e;\n };\n a.prototype.addAxis = function (b, a, c, d) {\n return this.createAxis(a ? \"xAxis\" : \"yAxis\", {\n axis: b,\n redraw: c,\n animation: d\n });\n };\n a.prototype.addColorAxis = function (b, a, c) {\n return this.createAxis(\"colorAxis\", {\n axis: b,\n redraw: a,\n animation: c\n });\n };\n a.prototype.createAxis = function (b, a) {\n b = new u(this, W(a.axis, {\n index: this[b].length,\n isX: \"xAxis\" === b\n }));\n R(a.redraw, !0) && this.redraw(a.animation);\n return b;\n };\n a.prototype.showLoading = function (b) {\n var a = this,\n c = a.options,\n d = c.loading,\n e = function () {\n g && O(g, {\n left: a.plotLeft + \"px\",\n top: a.plotTop + \"px\",\n width: a.plotWidth + \"px\",\n height: a.plotHeight + \"px\"\n });\n },\n g = a.loadingDiv,\n h = a.loadingSpan;\n g || (a.loadingDiv = g = S(\"div\", {\n className: \"highcharts-loading highcharts-loading-hidden\"\n }, null, a.container));\n h || (a.loadingSpan = h = S(\"span\", {\n className: \"highcharts-loading-inner\"\n }, null, g), x(a, \"redraw\", e));\n g.className = \"highcharts-loading\";\n f.setElementHTML(h, R(b, c.lang.loading, \"\"));\n a.styledMode || (O(g, M(d.style, {\n zIndex: 10\n })), O(h, d.labelStyle), a.loadingShown || (O(g, {\n opacity: 0,\n display: \"\"\n }), w(g, {\n opacity: d.style.opacity || .5\n }, {\n duration: d.showDuration || 0\n })));\n a.loadingShown = !0;\n e();\n };\n a.prototype.hideLoading = function () {\n var b = this.options,\n a = this.loadingDiv;\n a && (a.className = \"highcharts-loading highcharts-loading-hidden\", this.styledMode || w(a, {\n opacity: 0\n }, {\n duration: b.loading.hideDuration || 100,\n complete: function () {\n O(a, {\n display: \"none\"\n });\n }\n }));\n this.loadingShown = !1;\n };\n a.prototype.update = function (b, a, d, e) {\n var g = this,\n f = {\n credits: \"addCredits\",\n title: \"setTitle\",\n subtitle: \"setSubtitle\",\n caption: \"setCaption\"\n },\n h = b.isResponsiveOptions,\n l = [],\n k,\n p;\n Q(g, \"update\", {\n options: b\n });\n h || g.setResponsive(!1, !0);\n b = P(b, g.options);\n g.userOptions = W(g.userOptions, b);\n var n = b.chart;\n if (n) {\n W(!0, g.options.chart, n);\n \"className\" in n && g.setClassName(n.className);\n \"reflow\" in n && g.setReflow(n.reflow);\n if (\"inverted\" in n || \"polar\" in n || \"type\" in n) {\n g.propFromSeries();\n var E = !0;\n }\n \"alignTicks\" in n && (E = !0);\n \"events\" in n && v(this, n);\n X(n, function (b, a) {\n -1 !== g.propsRequireUpdateSeries.indexOf(\"chart.\" + a) && (k = !0);\n -1 !== g.propsRequireDirtyBox.indexOf(a) && (g.isDirtyBox = !0);\n -1 !== g.propsRequireReflow.indexOf(a) && (h ? g.isDirtyBox = !0 : p = !0);\n });\n !g.styledMode && n.style && g.renderer.setStyle(g.options.chart.style || {});\n }\n !g.styledMode && b.colors && (this.options.colors = b.colors);\n b.time && (this.time === m && (this.time = new c(b.time)), W(!0, g.options.time, b.time));\n X(b, function (a, c) {\n if (g[c] && \"function\" === typeof g[c].update) g[c].update(a, !1);else if (\"function\" === typeof g[f[c]]) g[f[c]](a);else \"colors\" !== c && -1 === g.collectionsWithUpdate.indexOf(c) && W(!0, g.options[c], b[c]);\n \"chart\" !== c && -1 !== g.propsRequireUpdateSeries.indexOf(c) && (k = !0);\n });\n this.collectionsWithUpdate.forEach(function (a) {\n if (b[a]) {\n var c = [];\n g[a].forEach(function (b, a) {\n b.options.isInternal || c.push(R(b.options.index, a));\n });\n ha(b[a]).forEach(function (b, e) {\n var f = U(b.id),\n h;\n f && (h = g.get(b.id));\n !h && g[a] && (h = g[a][c ? c[e] : e]) && f && U(h.options.id) && (h = void 0);\n h && h.coll === a && (h.update(b, !1), d && (h.touched = !0));\n !h && d && g.collectionsWithInit[a] && (g.collectionsWithInit[a][0].apply(g, [b].concat(g.collectionsWithInit[a][1] || []).concat([!1])).touched = !0);\n });\n d && g[a].forEach(function (b) {\n b.touched || b.options.isInternal ? delete b.touched : l.push(b);\n });\n }\n });\n l.forEach(function (b) {\n b.chart && b.remove && b.remove(!1);\n });\n E && g.axes.forEach(function (b) {\n b.update({}, !1);\n });\n k && g.getSeriesOrderByLinks().forEach(function (b) {\n b.chart && b.update({}, !1);\n }, this);\n E = n && n.width;\n n = n && (V(n.height) ? aa(n.height, E || g.chartWidth) : n.height);\n p || T(E) && E !== g.chartWidth || T(n) && n !== g.chartHeight ? g.setSize(E, n, e) : R(a, !0) && g.redraw(e);\n Q(g, \"afterUpdate\", {\n options: b,\n redraw: a,\n animation: e\n });\n };\n a.prototype.setSubtitle = function (b, a) {\n this.applyDescription(\"subtitle\", b);\n this.layOutTitles(a);\n };\n a.prototype.setCaption = function (b, a) {\n this.applyDescription(\"caption\", b);\n this.layOutTitles(a);\n };\n a.prototype.showResetZoom = function () {\n function b() {\n a.zoomOut();\n }\n var a = this,\n c = d.lang,\n e = a.options.chart.resetZoomButton,\n g = e.theme,\n f = g.states,\n h = \"chart\" === e.relativeTo || \"spacingBox\" === e.relativeTo ? null : \"scrollablePlotBox\";\n Q(this, \"beforeShowResetZoom\", null, function () {\n a.resetZoomButton = a.renderer.button(c.resetZoom, null, null, b, g, f && f.hover).attr({\n align: e.position.align,\n title: c.resetZoomTitle\n }).addClass(\"highcharts-reset-zoom\").add().align(e.position, !1, h);\n });\n Q(this, \"afterShowResetZoom\");\n };\n a.prototype.zoomOut = function () {\n Q(this, \"selection\", {\n resetSelection: !0\n }, this.zoom);\n };\n a.prototype.zoom = function (b) {\n var a = this,\n c = a.pointer,\n d = a.inverted ? c.mouseDownX : c.mouseDownY,\n e = !1,\n g;\n !b || b.resetSelection ? (a.axes.forEach(function (b) {\n g = b.zoom();\n }), c.initiated = !1) : b.xAxis.concat(b.yAxis).forEach(function (b) {\n var f = b.axis,\n h = a.inverted ? f.left : f.top,\n l = a.inverted ? h + f.width : h + f.height,\n k = f.isXAxis,\n m = !1;\n if (!k && d >= h && d <= l || k || !U(d)) m = !0;\n c[k ? \"zoomX\" : \"zoomY\"] && m && (g = f.zoom(b.min, b.max), f.displayBtn && (e = !0));\n });\n var f = a.resetZoomButton;\n e && !f ? a.showResetZoom() : !e && N(f) && (a.resetZoomButton = f.destroy());\n g && a.redraw(R(a.options.chart.animation, b && b.animation, 100 > a.pointCount));\n };\n a.prototype.pan = function (b, a) {\n var c = this,\n d = c.hoverPoints;\n a = \"object\" === typeof a ? a : {\n enabled: a,\n type: \"x\"\n };\n var e = c.options.chart,\n g = c.options.mapNavigation && c.options.mapNavigation.enabled;\n e && e.panning && (e.panning = a);\n var f = a.type,\n h;\n Q(this, \"pan\", {\n originalEvent: b\n }, function () {\n d && d.forEach(function (b) {\n b.setState();\n });\n var a = c.xAxis;\n \"xy\" === f ? a = a.concat(c.yAxis) : \"y\" === f && (a = c.yAxis);\n var e = {};\n a.forEach(function (a) {\n if (a.options.panningEnabled && !a.options.isInternal) {\n var d = a.horiz,\n l = b[d ? \"chartX\" : \"chartY\"];\n d = d ? \"mouseDownX\" : \"mouseDownY\";\n var k = c[d],\n m = a.minPointOffset || 0,\n p = a.reversed && !c.inverted || !a.reversed && c.inverted ? -1 : 1,\n n = a.getExtremes(),\n E = a.toValue(k - l, !0) + m * p,\n r = a.toValue(k + a.len - l, !0) - (m * p || a.isXAxis && a.pointRangePadding || 0),\n t = r < E;\n p = a.hasVerticalPanning();\n k = t ? r : E;\n E = t ? E : r;\n var q = a.panningState;\n !p || a.isXAxis || q && !q.isDirty || a.series.forEach(function (b) {\n var a = b.getProcessedData(!0);\n a = b.getExtremes(a.yData, !0);\n q || (q = {\n startMin: Number.MAX_VALUE,\n startMax: -Number.MAX_VALUE\n });\n T(a.dataMin) && T(a.dataMax) && (q.startMin = Math.min(R(b.options.threshold, Infinity), a.dataMin, q.startMin), q.startMax = Math.max(R(b.options.threshold, -Infinity), a.dataMax, q.startMax));\n });\n p = Math.min(R(q && q.startMin, n.dataMin), m ? n.min : a.toValue(a.toPixels(n.min) - a.minPixelPadding));\n r = Math.max(R(q && q.startMax, n.dataMax), m ? n.max : a.toValue(a.toPixels(n.max) + a.minPixelPadding));\n a.panningState = q;\n a.isOrdinal || (m = p - k, 0 < m && (E += m, k = p), m = E - r, 0 < m && (E = r, k -= m), a.series.length && k !== n.min && E !== n.max && k >= p && E <= r && (a.setExtremes(k, E, !1, !1, {\n trigger: \"pan\"\n }), c.resetZoomButton || g || k === p || E === r || !f.match(\"y\") || (c.showResetZoom(), a.displayBtn = !1), h = !0), e[d] = l);\n }\n });\n X(e, function (b, a) {\n c[a] = b;\n });\n h && c.redraw(!1);\n O(c.container, {\n cursor: \"move\"\n });\n });\n };\n return a;\n }();\n M(a.prototype, {\n callbacks: [],\n collectionsWithInit: {\n xAxis: [a.prototype.addAxis, [!0]],\n yAxis: [a.prototype.addAxis, [!1]],\n series: [a.prototype.addSeries]\n },\n collectionsWithUpdate: [\"xAxis\", \"yAxis\", \"series\"],\n propsRequireDirtyBox: \"backgroundColor borderColor borderWidth borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow\".split(\" \"),\n propsRequireReflow: \"margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft\".split(\" \"),\n propsRequireUpdateSeries: \"chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions time tooltip\".split(\" \")\n });\n \"\";\n return a;\n });\n M(a, \"Core/Legend/LegendSymbol.js\", [a[\"Core/Utilities.js\"]], function (a) {\n var v = a.merge,\n z = a.pick,\n F;\n (function (a) {\n a.drawLineMarker = function (a) {\n var u = this.options,\n A = a.symbolWidth,\n q = a.symbolHeight,\n n = q / 2,\n k = this.chart.renderer,\n e = this.legendGroup;\n a = a.baseline - Math.round(.3 * a.fontMetrics.b);\n var c = {},\n h = u.marker;\n this.chart.styledMode || (c = {\n \"stroke-width\": u.lineWidth || 0\n }, u.dashStyle && (c.dashstyle = u.dashStyle));\n this.legendLine = k.path([[\"M\", 0, a], [\"L\", A, a]]).addClass(\"highcharts-graph\").attr(c).add(e);\n h && !1 !== h.enabled && A && (u = Math.min(z(h.radius, n), n), 0 === this.symbol.indexOf(\"url\") && (h = v(h, {\n width: q,\n height: q\n }), u = 0), this.legendSymbol = A = k.symbol(this.symbol, A / 2 - u, a - u, 2 * u, 2 * u, h).addClass(\"highcharts-point\").add(e), A.isMarker = !0);\n };\n a.drawRectangle = function (a, v) {\n var u = a.symbolHeight,\n q = a.options.squareSymbol;\n v.legendSymbol = this.chart.renderer.rect(q ? (a.symbolWidth - u) / 2 : 0, a.baseline - u + 1, q ? u : a.symbolWidth, u, z(a.options.symbolRadius, u / 2)).addClass(\"highcharts-point\").attr({\n zIndex: 3\n }).add(v.legendGroup);\n };\n })(F || (F = {}));\n return F;\n });\n M(a, \"Core/Series/SeriesDefaults.js\", [], function () {\n return {\n lineWidth: 2,\n allowPointSelect: !1,\n crisp: !0,\n showCheckbox: !1,\n animation: {\n duration: 1E3\n },\n events: {},\n marker: {\n enabledThreshold: 2,\n lineColor: \"#ffffff\",\n lineWidth: 0,\n radius: 4,\n states: {\n normal: {\n animation: !0\n },\n hover: {\n animation: {\n duration: 50\n },\n enabled: !0,\n radiusPlus: 2,\n lineWidthPlus: 1\n },\n select: {\n fillColor: \"#cccccc\",\n lineColor: \"#000000\",\n lineWidth: 2\n }\n }\n },\n point: {\n events: {}\n },\n dataLabels: {\n animation: {},\n align: \"center\",\n defer: !0,\n formatter: function () {\n var a = this.series.chart.numberFormatter;\n return \"number\" !== typeof this.y ? \"\" : a(this.y, -1);\n },\n padding: 5,\n style: {\n fontSize: \"11px\",\n fontWeight: \"bold\",\n color: \"contrast\",\n textOutline: \"1px contrast\"\n },\n verticalAlign: \"bottom\",\n x: 0,\n y: 0\n },\n cropThreshold: 300,\n opacity: 1,\n pointRange: 0,\n softThreshold: !0,\n states: {\n normal: {\n animation: !0\n },\n hover: {\n animation: {\n duration: 50\n },\n lineWidthPlus: 1,\n marker: {},\n halo: {\n size: 10,\n opacity: .25\n }\n },\n select: {\n animation: {\n duration: 0\n }\n },\n inactive: {\n animation: {\n duration: 50\n },\n opacity: .2\n }\n },\n stickyTracking: !0,\n turboThreshold: 1E3,\n findNearestPointBy: \"x\"\n };\n });\n M(a, \"Core/Series/Series.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/DefaultOptions.js\"], a[\"Core/Foundation.js\"], a[\"Core/Globals.js\"], a[\"Core/Legend/LegendSymbol.js\"], a[\"Core/Series/Point.js\"], a[\"Core/Series/SeriesDefaults.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Renderer/SVG/SVGElement.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G, H, A, q, n) {\n var k = a.animObject,\n e = a.setAnimation,\n c = u.defaultOptions,\n h = z.registerEventOptions,\n f = F.hasTouch,\n w = F.svg,\n p = F.win,\n B = A.seriesTypes,\n t = n.addEvent,\n v = n.arrayMax,\n C = n.arrayMin,\n r = n.clamp,\n l = n.cleanRecursively,\n b = n.correctFloat,\n g = n.defined,\n d = n.erase,\n m = n.error,\n D = n.extend,\n x = n.find,\n I = n.fireEvent,\n P = n.getNestedProperty,\n S = n.isArray,\n O = n.isNumber,\n U = n.isString,\n Y = n.merge,\n L = n.objectEach,\n K = n.pick,\n M = n.removeEvent,\n da = n.splat,\n Q = n.syncTimeout;\n a = function () {\n function a() {\n this.zones = this.yAxis = this.xAxis = this.userOptions = this.tooltipOptions = this.processedYData = this.processedXData = this.points = this.options = this.linkedSeries = this.index = this.eventsToUnbind = this.eventOptions = this.data = this.chart = this._i = void 0;\n }\n a.prototype.init = function (a, b) {\n I(this, \"init\", {\n options: b\n });\n var c = this,\n d = a.series;\n this.eventsToUnbind = [];\n c.chart = a;\n c.options = c.setOptions(b);\n b = c.options;\n c.linkedSeries = [];\n c.bindAxes();\n D(c, {\n name: b.name,\n state: \"\",\n visible: !1 !== b.visible,\n selected: !0 === b.selected\n });\n h(this, b);\n var e = b.events;\n if (e && e.click || b.point && b.point.events && b.point.events.click || b.allowPointSelect) a.runTrackerClick = !0;\n c.getColor();\n c.getSymbol();\n c.parallelArrays.forEach(function (a) {\n c[a + \"Data\"] || (c[a + \"Data\"] = []);\n });\n c.isCartesian && (a.hasCartesianSeries = !0);\n var g;\n d.length && (g = d[d.length - 1]);\n c._i = K(g && g._i, -1) + 1;\n c.opacity = c.options.opacity;\n a.orderSeries(this.insert(d));\n b.dataSorting && b.dataSorting.enabled ? c.setDataSortingOptions() : c.points || c.data || c.setData(b.data, !1);\n I(this, \"afterInit\");\n };\n a.prototype.is = function (a) {\n return B[a] && this instanceof B[a];\n };\n a.prototype.insert = function (a) {\n var b = this.options.index,\n c;\n if (O(b)) {\n for (c = a.length; c--;) if (b >= K(a[c].options.index, a[c]._i)) {\n a.splice(c + 1, 0, this);\n break;\n }\n -1 === c && a.unshift(this);\n c += 1;\n } else a.push(this);\n return K(c, a.length - 1);\n };\n a.prototype.bindAxes = function () {\n var a = this,\n b = a.options,\n c = a.chart,\n d;\n I(this, \"bindAxes\", null, function () {\n (a.axisTypes || []).forEach(function (e) {\n var g = 0;\n c[e].forEach(function (c) {\n d = c.options;\n if (b[e] === g && !d.isInternal || \"undefined\" !== typeof b[e] && b[e] === d.id || \"undefined\" === typeof b[e] && 0 === d.index) a.insert(c.series), a[e] = c, c.isDirty = !0;\n d.isInternal || g++;\n });\n a[e] || a.optionalAxis === e || m(18, !0, c);\n });\n });\n I(this, \"afterBindAxes\");\n };\n a.prototype.updateParallelArrays = function (a, b) {\n var c = a.series,\n d = arguments,\n e = O(b) ? function (d) {\n var e = \"y\" === d && c.toYData ? c.toYData(a) : a[d];\n c[d + \"Data\"][b] = e;\n } : function (a) {\n Array.prototype[b].apply(c[a + \"Data\"], Array.prototype.slice.call(d, 2));\n };\n c.parallelArrays.forEach(e);\n };\n a.prototype.hasData = function () {\n return this.visible && \"undefined\" !== typeof this.dataMax && \"undefined\" !== typeof this.dataMin || this.visible && this.yData && 0 < this.yData.length;\n };\n a.prototype.autoIncrement = function (a) {\n var b = this.options,\n c = b.pointIntervalUnit,\n d = b.relativeXValue,\n e = this.chart.time,\n g = this.xIncrement,\n f;\n g = K(g, b.pointStart, 0);\n this.pointInterval = f = K(this.pointInterval, b.pointInterval, 1);\n d && O(a) && (f *= a);\n c && (b = new e.Date(g), \"day\" === c ? e.set(\"Date\", b, e.get(\"Date\", b) + f) : \"month\" === c ? e.set(\"Month\", b, e.get(\"Month\", b) + f) : \"year\" === c && e.set(\"FullYear\", b, e.get(\"FullYear\", b) + f), f = b.getTime() - g);\n if (d && O(a)) return g + f;\n this.xIncrement = g + f;\n return g;\n };\n a.prototype.setDataSortingOptions = function () {\n var a = this.options;\n D(this, {\n requireSorting: !1,\n sorted: !1,\n enabledDataSorting: !0,\n allowDG: !1\n });\n g(a.pointRange) || (a.pointRange = 1);\n };\n a.prototype.setOptions = function (a) {\n var b = this.chart,\n d = b.options,\n e = d.plotOptions,\n f = b.userOptions || {};\n a = Y(a);\n b = b.styledMode;\n var h = {\n plotOptions: e,\n userOptions: a\n };\n I(this, \"setOptions\", h);\n var l = h.plotOptions[this.type],\n k = f.plotOptions || {};\n this.userOptions = h.userOptions;\n f = Y(l, e.series, f.plotOptions && f.plotOptions[this.type], a);\n this.tooltipOptions = Y(c.tooltip, c.plotOptions.series && c.plotOptions.series.tooltip, c.plotOptions[this.type].tooltip, d.tooltip.userOptions, e.series && e.series.tooltip, e[this.type].tooltip, a.tooltip);\n this.stickyTracking = K(a.stickyTracking, k[this.type] && k[this.type].stickyTracking, k.series && k.series.stickyTracking, this.tooltipOptions.shared && !this.noSharedTooltip ? !0 : f.stickyTracking);\n null === l.marker && delete f.marker;\n this.zoneAxis = f.zoneAxis;\n e = this.zones = (f.zones || []).slice();\n !f.negativeColor && !f.negativeFillColor || f.zones || (d = {\n value: f[this.zoneAxis + \"Threshold\"] || f.threshold || 0,\n className: \"highcharts-negative\"\n }, b || (d.color = f.negativeColor, d.fillColor = f.negativeFillColor), e.push(d));\n e.length && g(e[e.length - 1].value) && e.push(b ? {} : {\n color: this.color,\n fillColor: this.fillColor\n });\n I(this, \"afterSetOptions\", {\n options: f\n });\n return f;\n };\n a.prototype.getName = function () {\n return K(this.options.name, \"Series \" + (this.index + 1));\n };\n a.prototype.getCyclic = function (a, b, c) {\n var d = this.chart,\n e = this.userOptions,\n f = a + \"Index\",\n h = a + \"Counter\",\n l = c ? c.length : K(d.options.chart[a + \"Count\"], d[a + \"Count\"]);\n if (!b) {\n var k = K(e[f], e[\"_\" + f]);\n g(k) || (d.series.length || (d[h] = 0), e[\"_\" + f] = k = d[h] % l, d[h] += 1);\n c && (b = c[k]);\n }\n \"undefined\" !== typeof k && (this[f] = k);\n this[a] = b;\n };\n a.prototype.getColor = function () {\n this.chart.styledMode ? this.getCyclic(\"color\") : this.options.colorByPoint ? this.color = \"#cccccc\" : this.getCyclic(\"color\", this.options.color || c.plotOptions[this.type].color, this.chart.options.colors);\n };\n a.prototype.getPointsCollection = function () {\n return (this.hasGroupedData ? this.points : this.data) || [];\n };\n a.prototype.getSymbol = function () {\n this.getCyclic(\"symbol\", this.options.marker.symbol, this.chart.options.symbols);\n };\n a.prototype.findPointIndex = function (a, b) {\n var c = a.id,\n d = a.x,\n e = this.points,\n g = this.options.dataSorting,\n f,\n h;\n if (c) g = this.chart.get(c), g instanceof G && (f = g);else if (this.linkedParent || this.enabledDataSorting || this.options.relativeXValue) if (f = function (b) {\n return !b.touched && b.index === a.index;\n }, g && g.matchByName ? f = function (b) {\n return !b.touched && b.name === a.name;\n } : this.options.relativeXValue && (f = function (b) {\n return !b.touched && b.options.x === a.x;\n }), f = x(e, f), !f) return;\n if (f) {\n var l = f && f.index;\n \"undefined\" !== typeof l && (h = !0);\n }\n \"undefined\" === typeof l && O(d) && (l = this.xData.indexOf(d, b));\n -1 !== l && \"undefined\" !== typeof l && this.cropped && (l = l >= this.cropStart ? l - this.cropStart : l);\n !h && O(l) && e[l] && e[l].touched && (l = void 0);\n return l;\n };\n a.prototype.updateData = function (a, b) {\n var c = this.options,\n d = c.dataSorting,\n e = this.points,\n f = [],\n h = this.requireSorting,\n l = a.length === e.length,\n k,\n m,\n p,\n n = !0;\n this.xIncrement = null;\n a.forEach(function (a, b) {\n var m = g(a) && this.pointClass.prototype.optionsToObject.call({\n series: this\n }, a) || {},\n n = m.x;\n if (m.id || O(n)) {\n if (m = this.findPointIndex(m, p), -1 === m || \"undefined\" === typeof m ? f.push(a) : e[m] && a !== c.data[m] ? (e[m].update(a, !1, null, !1), e[m].touched = !0, h && (p = m + 1)) : e[m] && (e[m].touched = !0), !l || b !== m || d && d.enabled || this.hasDerivedData) k = !0;\n } else f.push(a);\n }, this);\n if (k) for (a = e.length; a--;) (m = e[a]) && !m.touched && m.remove && m.remove(!1, b);else !l || d && d.enabled ? n = !1 : (a.forEach(function (a, b) {\n a !== e[b].y && e[b].update && e[b].update(a, !1, null, !1);\n }), f.length = 0);\n e.forEach(function (a) {\n a && (a.touched = !1);\n });\n if (!n) return !1;\n f.forEach(function (a) {\n this.addPoint(a, !1, null, null, !1);\n }, this);\n null === this.xIncrement && this.xData && this.xData.length && (this.xIncrement = v(this.xData), this.autoIncrement());\n return !0;\n };\n a.prototype.setData = function (a, b, c, d) {\n var e = this,\n g = e.points,\n f = g && g.length || 0,\n h = e.options,\n l = e.chart,\n k = h.dataSorting,\n p = e.xAxis,\n n = h.turboThreshold,\n r = this.xData,\n E = this.yData,\n t = e.pointArrayMap;\n t = t && t.length;\n var q = h.keys,\n w,\n B = 0,\n C = 1,\n x = null;\n a = a || [];\n var v = a.length;\n b = K(b, !0);\n k && k.enabled && (a = this.sortData(a));\n !1 !== d && v && f && !e.cropped && !e.hasGroupedData && e.visible && !e.isSeriesBoosting && (w = this.updateData(a, c));\n if (!w) {\n e.xIncrement = null;\n e.colorCounter = 0;\n this.parallelArrays.forEach(function (a) {\n e[a + \"Data\"].length = 0;\n });\n if (n && v > n) {\n if (x = e.getFirstValidPoint(a), O(x)) for (c = 0; c < v; c++) r[c] = this.autoIncrement(), E[c] = a[c];else if (S(x)) {\n if (t) {\n if (x.length === t) for (c = 0; c < v; c++) r[c] = this.autoIncrement(), E[c] = a[c];else for (c = 0; c < v; c++) d = a[c], r[c] = d[0], E[c] = d.slice(1, t + 1);\n } else if (q && (B = q.indexOf(\"x\"), C = q.indexOf(\"y\"), B = 0 <= B ? B : 0, C = 0 <= C ? C : 1), 1 === x.length && (C = 0), B === C) for (c = 0; c < v; c++) r[c] = this.autoIncrement(), E[c] = a[c][C];else for (c = 0; c < v; c++) d = a[c], r[c] = d[B], E[c] = d[C];\n } else m(12, !1, l);\n } else for (c = 0; c < v; c++) \"undefined\" !== typeof a[c] && (d = {\n series: e\n }, e.pointClass.prototype.applyOptions.apply(d, [a[c]]), e.updateParallelArrays(d, c));\n E && U(E[0]) && m(14, !0, l);\n e.data = [];\n e.options.data = e.userOptions.data = a;\n for (c = f; c--;) g[c] && g[c].destroy && g[c].destroy();\n p && (p.minRange = p.userMinRange);\n e.isDirty = l.isDirtyBox = !0;\n e.isDirtyData = !!g;\n c = !1;\n }\n \"point\" === h.legendType && (this.processData(), this.generatePoints());\n b && l.redraw(c);\n };\n a.prototype.sortData = function (a) {\n var b = this,\n c = b.options.dataSorting.sortKey || \"y\",\n d = function (a, b) {\n return g(b) && a.pointClass.prototype.optionsToObject.call({\n series: a\n }, b) || {};\n };\n a.forEach(function (c, e) {\n a[e] = d(b, c);\n a[e].index = e;\n }, this);\n a.concat().sort(function (a, b) {\n a = P(c, a);\n b = P(c, b);\n return b < a ? -1 : b > a ? 1 : 0;\n }).forEach(function (a, b) {\n a.x = b;\n }, this);\n b.linkedSeries && b.linkedSeries.forEach(function (b) {\n var c = b.options,\n e = c.data;\n c.dataSorting && c.dataSorting.enabled || !e || (e.forEach(function (c, g) {\n e[g] = d(b, c);\n a[g] && (e[g].x = a[g].x, e[g].index = g);\n }), b.setData(e, !1));\n });\n return a;\n };\n a.prototype.getProcessedData = function (a) {\n var b = this.xAxis,\n c = this.options,\n d = c.cropThreshold,\n e = a || this.getExtremesFromAll || c.getExtremesFromAll,\n g = this.isCartesian;\n a = b && b.val2lin;\n c = !(!b || !b.logarithmic);\n var f = 0,\n h = this.xData,\n l = this.yData,\n k = this.requireSorting;\n var p = !1;\n var n = h.length;\n if (b) {\n p = b.getExtremes();\n var r = p.min;\n var E = p.max;\n p = b.categories && !b.names.length;\n }\n if (g && this.sorted && !e && (!d || n > d || this.forceCrop)) if (h[n - 1] < r || h[0] > E) h = [], l = [];else if (this.yData && (h[0] < r || h[n - 1] > E)) {\n var t = this.cropData(this.xData, this.yData, r, E);\n h = t.xData;\n l = t.yData;\n f = t.start;\n t = !0;\n }\n for (d = h.length || 1; --d;) if (b = c ? a(h[d]) - a(h[d - 1]) : h[d] - h[d - 1], 0 < b && (\"undefined\" === typeof q || b < q)) var q = b;else 0 > b && k && !p && (m(15, !1, this.chart), k = !1);\n return {\n xData: h,\n yData: l,\n cropped: t,\n cropStart: f,\n closestPointRange: q\n };\n };\n a.prototype.processData = function (a) {\n var b = this.xAxis;\n if (this.isCartesian && !this.isDirty && !b.isDirty && !this.yAxis.isDirty && !a) return !1;\n a = this.getProcessedData();\n this.cropped = a.cropped;\n this.cropStart = a.cropStart;\n this.processedXData = a.xData;\n this.processedYData = a.yData;\n this.closestPointRange = this.basePointRange = a.closestPointRange;\n I(this, \"afterProcessData\");\n };\n a.prototype.cropData = function (a, b, c, d, e) {\n var g = a.length,\n f,\n h = 0,\n l = g;\n e = K(e, this.cropShoulder);\n for (f = 0; f < g; f++) if (a[f] >= c) {\n h = Math.max(0, f - e);\n break;\n }\n for (c = f; c < g; c++) if (a[c] > d) {\n l = c + e;\n break;\n }\n return {\n xData: a.slice(h, l),\n yData: b.slice(h, l),\n start: h,\n end: l\n };\n };\n a.prototype.generatePoints = function () {\n var a = this.options,\n b = a.data,\n c = this.processedXData,\n d = this.processedYData,\n e = this.pointClass,\n g = c.length,\n f = this.cropStart || 0,\n h = this.hasGroupedData,\n l = a.keys,\n k = [];\n a = a.dataGrouping && a.dataGrouping.groupAll ? f : 0;\n var m,\n p,\n n = this.data;\n if (!n && !h) {\n var r = [];\n r.length = b.length;\n n = this.data = r;\n }\n l && h && (this.options.keys = !1);\n for (p = 0; p < g; p++) {\n r = f + p;\n if (h) {\n var t = new e().init(this, [c[p]].concat(da(d[p])));\n t.dataGroup = this.groupMap[a + p];\n t.dataGroup.options && (t.options = t.dataGroup.options, D(t, t.dataGroup.options), delete t.dataLabels);\n } else (t = n[r]) || \"undefined\" === typeof b[r] || (n[r] = t = new e().init(this, b[r], c[p]));\n t && (t.index = h ? a + p : r, k[p] = t);\n }\n this.options.keys = l;\n if (n && (g !== (m = n.length) || h)) for (p = 0; p < m; p++) p !== f || h || (p += g), n[p] && (n[p].destroyElements(), n[p].plotX = void 0);\n this.data = n;\n this.points = k;\n I(this, \"afterGeneratePoints\");\n };\n a.prototype.getXExtremes = function (a) {\n return {\n min: C(a),\n max: v(a)\n };\n };\n a.prototype.getExtremes = function (a, b) {\n var c = this.xAxis,\n d = this.yAxis,\n e = this.processedXData || this.xData,\n g = [],\n f = this.requireSorting ? this.cropShoulder : 0;\n d = d ? d.positiveValuesOnly : !1;\n var h,\n l = 0,\n k = 0,\n m = 0;\n a = a || this.stackedYData || this.processedYData || [];\n var p = a.length;\n if (c) {\n var n = c.getExtremes();\n l = n.min;\n k = n.max;\n }\n for (h = 0; h < p; h++) {\n var r = e[h];\n n = a[h];\n var t = (O(n) || S(n)) && (n.length || 0 < n || !d);\n r = b || this.getExtremesFromAll || this.options.getExtremesFromAll || this.cropped || !c || (e[h + f] || r) >= l && (e[h - f] || r) <= k;\n if (t && r) if (t = n.length) for (; t--;) O(n[t]) && (g[m++] = n[t]);else g[m++] = n;\n }\n a = {\n activeYData: g,\n dataMin: C(g),\n dataMax: v(g)\n };\n I(this, \"afterGetExtremes\", {\n dataExtremes: a\n });\n return a;\n };\n a.prototype.applyExtremes = function () {\n var a = this.getExtremes();\n this.dataMin = a.dataMin;\n this.dataMax = a.dataMax;\n return a;\n };\n a.prototype.getFirstValidPoint = function (a) {\n for (var b = a.length, c = 0, d = null; null === d && c < b;) d = a[c], c++;\n return d;\n };\n a.prototype.translate = function () {\n this.processedXData || this.processData();\n this.generatePoints();\n var a = this.options,\n c = a.stacking,\n d = this.xAxis,\n e = d.categories,\n f = this.enabledDataSorting,\n h = this.yAxis,\n l = this.points,\n k = l.length,\n m = this.pointPlacementToXValue(),\n p = !!m,\n n = a.threshold,\n t = a.startFromThreshold ? n : 0,\n q = this.zoneAxis || \"y\",\n w,\n B,\n C = Number.MAX_VALUE;\n for (w = 0; w < k; w++) {\n var x = l[w],\n v = x.x,\n u = void 0,\n D = void 0,\n J = x.y,\n A = x.low,\n y = c && h.stacking && h.stacking.stacks[(this.negStacks && J < (t ? 0 : n) ? \"-\" : \"\") + this.stackKey];\n if (h.positiveValuesOnly && !h.validatePositiveValue(J) || d.positiveValuesOnly && !d.validatePositiveValue(v)) x.isNull = !0;\n x.plotX = B = b(r(d.translate(v, 0, 0, 0, 1, m, \"flags\" === this.type), -1E5, 1E5));\n if (c && this.visible && y && y[v]) {\n var z = this.getStackIndicator(z, v, this.index);\n x.isNull || (u = y[v], D = u.points[z.key]);\n }\n S(D) && (A = D[0], J = D[1], A === t && z.key === y[v].base && (A = K(O(n) && n, h.min)), h.positiveValuesOnly && 0 >= A && (A = null), x.total = x.stackTotal = u.total, x.percentage = u.total && x.y / u.total * 100, x.stackY = J, this.irregularWidths || u.setOffset(this.pointXOffset || 0, this.barW || 0));\n x.yBottom = g(A) ? r(h.translate(A, 0, 1, 0, 1), -1E5, 1E5) : null;\n this.dataModify && (J = this.dataModify.modifyValue(J, w));\n x.plotY = void 0;\n O(J) && (u = h.translate(J, !1, !0, !1, !0), \"undefined\" !== typeof u && (x.plotY = r(u, -1E5, 1E5)));\n x.isInside = this.isPointInside(x);\n x.clientX = p ? b(d.translate(v, 0, 0, 0, 1, m)) : B;\n x.negative = x[q] < (a[q + \"Threshold\"] || n || 0);\n x.category = e && \"undefined\" !== typeof e[x.x] ? e[x.x] : x.x;\n if (!x.isNull && !1 !== x.visible) {\n \"undefined\" !== typeof F && (C = Math.min(C, Math.abs(B - F)));\n var F = B;\n }\n x.zone = this.zones.length ? x.getZone() : void 0;\n !x.graphic && this.group && f && (x.isNew = !0);\n }\n this.closestPointRangePx = C;\n I(this, \"afterTranslate\");\n };\n a.prototype.getValidPoints = function (a, b, c) {\n var d = this.chart;\n return (a || this.points || []).filter(function (a) {\n return b && !d.isInsidePlot(a.plotX, a.plotY, {\n inverted: d.inverted\n }) ? !1 : !1 !== a.visible && (c || !a.isNull);\n });\n };\n a.prototype.getClipBox = function () {\n var a = this.chart,\n b = this.xAxis,\n c = this.yAxis,\n d = Y(a.clipBox);\n b && b.len !== a.plotSizeX && (d.width = b.len);\n c && c.len !== a.plotSizeY && (d.height = c.len);\n return d;\n };\n a.prototype.getSharedClipKey = function () {\n return this.sharedClipKey = (this.options.xAxis || 0) + \",\" + (this.options.yAxis || 0);\n };\n a.prototype.setClip = function () {\n var a = this.chart,\n b = this.group,\n c = this.markerGroup,\n d = a.sharedClips;\n a = a.renderer;\n var e = this.getClipBox(),\n g = this.getSharedClipKey(),\n f = d[g];\n f ? f.animate(e) : d[g] = f = a.clipRect(e);\n b && b.clip(!1 === this.options.clip ? void 0 : f);\n c && c.clip();\n };\n a.prototype.animate = function (a) {\n var b = this.chart,\n c = this.group,\n d = this.markerGroup,\n e = b.inverted,\n g = k(this.options.animation),\n f = [this.getSharedClipKey(), g.duration, g.easing, g.defer].join(),\n h = b.sharedClips[f],\n l = b.sharedClips[f + \"m\"];\n if (a && c) g = this.getClipBox(), h ? h.attr(\"height\", g.height) : (g.width = 0, e && (g.x = b.plotHeight), h = b.renderer.clipRect(g), b.sharedClips[f] = h, l = b.renderer.clipRect({\n x: e ? (b.plotSizeX || 0) + 99 : -99,\n y: e ? -b.plotLeft : -b.plotTop,\n width: 99,\n height: e ? b.chartWidth : b.chartHeight\n }), b.sharedClips[f + \"m\"] = l), c.clip(h), d && d.clip(l);else if (h && !h.hasClass(\"highcharts-animating\")) {\n b = this.getClipBox();\n var m = g.step;\n d && d.element.childNodes.length && (g.step = function (a, b) {\n m && m.apply(b, arguments);\n l && l.element && l.attr(b.prop, \"width\" === b.prop ? a + 99 : a);\n });\n h.addClass(\"highcharts-animating\").animate(b, g);\n }\n };\n a.prototype.afterAnimate = function () {\n var a = this;\n this.setClip();\n L(this.chart.sharedClips, function (b, c, d) {\n b && !a.chart.container.querySelector('[clip-path=\"url(#' + b.id + ')\"]') && (b.destroy(), delete d[c]);\n });\n this.finishedAnimating = !0;\n I(this, \"afterAnimate\");\n };\n a.prototype.drawPoints = function () {\n var a = this.points,\n b = this.chart,\n c = this.options.marker,\n d = this[this.specialGroup] || this.markerGroup,\n e = this.xAxis,\n g = K(c.enabled, !e || e.isRadial ? !0 : null, this.closestPointRangePx >= c.enabledThreshold * c.radius),\n f,\n h;\n if (!1 !== c.enabled || this._hasPointMarkers) for (f = 0; f < a.length; f++) {\n var l = a[f];\n var k = (h = l.graphic) ? \"animate\" : \"attr\";\n var m = l.marker || {};\n var p = !!l.marker;\n if ((g && \"undefined\" === typeof m.enabled || m.enabled) && !l.isNull && !1 !== l.visible) {\n var n = K(m.symbol, this.symbol, \"rect\");\n var r = this.markerAttribs(l, l.selected && \"select\");\n this.enabledDataSorting && (l.startXPos = e.reversed ? -(r.width || 0) : e.width);\n var t = !1 !== l.isInside;\n h ? h[t ? \"show\" : \"hide\"](t).animate(r) : t && (0 < (r.width || 0) || l.hasImage) && (l.graphic = h = b.renderer.symbol(n, r.x, r.y, r.width, r.height, p ? m : c).add(d), this.enabledDataSorting && b.hasRendered && (h.attr({\n x: l.startXPos\n }), k = \"animate\"));\n h && \"animate\" === k && h[t ? \"show\" : \"hide\"](t).animate(r);\n if (h && !b.styledMode) h[k](this.pointAttribs(l, l.selected && \"select\"));\n h && h.addClass(l.getClassName(), !0);\n } else h && (l.graphic = h.destroy());\n }\n };\n a.prototype.markerAttribs = function (a, b) {\n var c = this.options,\n d = c.marker,\n e = a.marker || {},\n g = e.symbol || d.symbol,\n f = K(e.radius, d.radius);\n b && (d = d.states[b], b = e.states && e.states[b], f = K(b && b.radius, d && d.radius, f + (d && d.radiusPlus || 0)));\n a.hasImage = g && 0 === g.indexOf(\"url\");\n a.hasImage && (f = 0);\n a = {\n x: c.crisp ? Math.floor(a.plotX - f) : a.plotX - f,\n y: a.plotY - f\n };\n f && (a.width = a.height = 2 * f);\n return a;\n };\n a.prototype.pointAttribs = function (a, b) {\n var c = this.options.marker,\n d = a && a.options,\n e = d && d.marker || {},\n g = d && d.color,\n f = a && a.color,\n h = a && a.zone && a.zone.color,\n l = this.color;\n a = K(e.lineWidth, c.lineWidth);\n d = 1;\n l = g || h || f || l;\n g = e.fillColor || c.fillColor || l;\n f = e.lineColor || c.lineColor || l;\n b = b || \"normal\";\n c = c.states[b] || {};\n b = e.states && e.states[b] || {};\n a = K(b.lineWidth, c.lineWidth, a + K(b.lineWidthPlus, c.lineWidthPlus, 0));\n g = b.fillColor || c.fillColor || g;\n f = b.lineColor || c.lineColor || f;\n d = K(b.opacity, c.opacity, d);\n return {\n stroke: f,\n \"stroke-width\": a,\n fill: g,\n opacity: d\n };\n };\n a.prototype.destroy = function (a) {\n var b = this,\n c = b.chart,\n e = /AppleWebKit\\/533/.test(p.navigator.userAgent),\n g = b.data || [],\n f,\n h,\n l,\n k;\n I(b, \"destroy\");\n this.removeEvents(a);\n (b.axisTypes || []).forEach(function (a) {\n (k = b[a]) && k.series && (d(k.series, b), k.isDirty = k.forceRedraw = !0);\n });\n b.legendItem && b.chart.legend.destroyItem(b);\n for (h = g.length; h--;) (l = g[h]) && l.destroy && l.destroy();\n b.clips && b.clips.forEach(function (a) {\n return a.destroy();\n });\n n.clearTimeout(b.animationTimeout);\n L(b, function (a, b) {\n a instanceof q && !a.survive && (f = e && \"group\" === b ? \"hide\" : \"destroy\", a[f]());\n });\n c.hoverSeries === b && (c.hoverSeries = void 0);\n d(c.series, b);\n c.orderSeries();\n L(b, function (c, d) {\n a && \"hcEvents\" === d || delete b[d];\n });\n };\n a.prototype.applyZones = function () {\n var a = this,\n b = this.chart,\n c = b.renderer,\n d = this.zones,\n e = this.clips || [],\n g = this.graph,\n f = this.area,\n h = Math.max(b.chartWidth, b.chartHeight),\n l = this[(this.zoneAxis || \"y\") + \"Axis\"],\n k = b.inverted,\n m,\n p,\n n,\n t,\n q,\n x,\n w,\n B,\n C = !1;\n if (d.length && (g || f) && l && \"undefined\" !== typeof l.min) {\n var v = l.reversed;\n var u = l.horiz;\n g && !this.showLine && g.hide();\n f && f.hide();\n var D = l.getExtremes();\n d.forEach(function (d, E) {\n m = v ? u ? b.plotWidth : 0 : u ? 0 : l.toPixels(D.min) || 0;\n m = r(K(p, m), 0, h);\n p = r(Math.round(l.toPixels(K(d.value, D.max), !0) || 0), 0, h);\n C && (m = p = l.toPixels(D.max));\n t = Math.abs(m - p);\n q = Math.min(m, p);\n x = Math.max(m, p);\n l.isXAxis ? (n = {\n x: k ? x : q,\n y: 0,\n width: t,\n height: h\n }, u || (n.x = b.plotHeight - n.x)) : (n = {\n x: 0,\n y: k ? x : q,\n width: h,\n height: t\n }, u && (n.y = b.plotWidth - n.y));\n k && c.isVML && (n = l.isXAxis ? {\n x: 0,\n y: v ? q : x,\n height: n.width,\n width: b.chartWidth\n } : {\n x: n.y - b.plotLeft - b.spacingBox.x,\n y: 0,\n width: n.height,\n height: b.chartHeight\n });\n e[E] ? e[E].animate(n) : e[E] = c.clipRect(n);\n w = a[\"zone-area-\" + E];\n B = a[\"zone-graph-\" + E];\n g && B && B.clip(e[E]);\n f && w && w.clip(e[E]);\n C = d.value > D.max;\n a.resetZones && 0 === p && (p = void 0);\n });\n this.clips = e;\n } else a.visible && (g && g.show(!0), f && f.show(!0));\n };\n a.prototype.invertGroups = function (a) {\n function b() {\n [\"group\", \"markerGroup\"].forEach(function (b) {\n c[b] && (d.renderer.isVML && c[b].attr({\n width: c.yAxis.len,\n height: c.xAxis.len\n }), c[b].width = c.yAxis.len, c[b].height = c.xAxis.len, c[b].invert(c.isRadialSeries ? !1 : a));\n });\n }\n var c = this,\n d = c.chart;\n c.xAxis && (c.eventsToUnbind.push(t(d, \"resize\", b)), b(), c.invertGroups = b);\n };\n a.prototype.plotGroup = function (a, b, c, d, e) {\n var f = this[a],\n h = !f;\n c = {\n visibility: c,\n zIndex: d || .1\n };\n \"undefined\" === typeof this.opacity || this.chart.styledMode || \"inactive\" === this.state || (c.opacity = this.opacity);\n h && (this[a] = f = this.chart.renderer.g().add(e));\n f.addClass(\"highcharts-\" + b + \" highcharts-series-\" + this.index + \" highcharts-\" + this.type + \"-series \" + (g(this.colorIndex) ? \"highcharts-color-\" + this.colorIndex + \" \" : \"\") + (this.options.className || \"\") + (f.hasClass(\"highcharts-tracker\") ? \" highcharts-tracker\" : \"\"), !0);\n f.attr(c)[h ? \"attr\" : \"animate\"](this.getPlotBox());\n return f;\n };\n a.prototype.getPlotBox = function () {\n var a = this.chart,\n b = this.xAxis,\n c = this.yAxis;\n a.inverted && (b = c, c = this.xAxis);\n return {\n translateX: b ? b.left : a.plotLeft,\n translateY: c ? c.top : a.plotTop,\n scaleX: 1,\n scaleY: 1\n };\n };\n a.prototype.removeEvents = function (a) {\n a || M(this);\n this.eventsToUnbind.length && (this.eventsToUnbind.forEach(function (a) {\n a();\n }), this.eventsToUnbind.length = 0);\n };\n a.prototype.render = function () {\n var a = this,\n b = a.chart,\n c = a.options,\n d = k(c.animation),\n e = a.visible ? \"inherit\" : \"hidden\",\n g = c.zIndex,\n f = a.hasRendered,\n h = b.seriesGroup,\n l = b.inverted;\n b = !a.finishedAnimating && b.renderer.isSVG ? d.duration : 0;\n I(this, \"render\");\n var m = a.plotGroup(\"group\", \"series\", e, g, h);\n a.markerGroup = a.plotGroup(\"markerGroup\", \"markers\", e, g, h);\n !1 !== c.clip && a.setClip();\n a.animate && b && a.animate(!0);\n m.inverted = K(a.invertible, a.isCartesian) ? l : !1;\n a.drawGraph && (a.drawGraph(), a.applyZones());\n a.visible && a.drawPoints();\n a.drawDataLabels && a.drawDataLabels();\n a.redrawPoints && a.redrawPoints();\n a.drawTracker && !1 !== a.options.enableMouseTracking && a.drawTracker();\n a.invertGroups(l);\n a.animate && b && a.animate();\n f || (b && d.defer && (b += d.defer), a.animationTimeout = Q(function () {\n a.afterAnimate();\n }, b || 0));\n a.isDirty = !1;\n a.hasRendered = !0;\n I(a, \"afterRender\");\n };\n a.prototype.redraw = function () {\n var a = this.chart,\n b = this.isDirty || this.isDirtyData,\n c = this.group,\n d = this.xAxis,\n e = this.yAxis;\n c && (a.inverted && c.attr({\n width: a.plotWidth,\n height: a.plotHeight\n }), c.animate({\n translateX: K(d && d.left, a.plotLeft),\n translateY: K(e && e.top, a.plotTop)\n }));\n this.translate();\n this.render();\n b && delete this.kdTree;\n };\n a.prototype.searchPoint = function (a, b) {\n var c = this.xAxis,\n d = this.yAxis,\n e = this.chart.inverted;\n return this.searchKDTree({\n clientX: e ? c.len - a.chartY + c.pos : a.chartX - c.pos,\n plotY: e ? d.len - a.chartX + d.pos : a.chartY - d.pos\n }, b, a);\n };\n a.prototype.buildKDTree = function (a) {\n function b(a, d, e) {\n var g = a && a.length;\n if (g) {\n var f = c.kdAxisArray[d % e];\n a.sort(function (a, b) {\n return a[f] - b[f];\n });\n g = Math.floor(g / 2);\n return {\n point: a[g],\n left: b(a.slice(0, g), d + 1, e),\n right: b(a.slice(g + 1), d + 1, e)\n };\n }\n }\n this.buildingKdTree = !0;\n var c = this,\n d = -1 < c.options.findNearestPointBy.indexOf(\"y\") ? 2 : 1;\n delete c.kdTree;\n Q(function () {\n c.kdTree = b(c.getValidPoints(null, !c.directTouch), d, d);\n c.buildingKdTree = !1;\n }, c.options.kdNow || a && \"touchstart\" === a.type ? 0 : 1);\n };\n a.prototype.searchKDTree = function (a, b, c) {\n function d(a, b, c, k) {\n var m = b.point,\n p = e.kdAxisArray[c % k],\n n = m,\n r = g(a[f]) && g(m[f]) ? Math.pow(a[f] - m[f], 2) : null;\n var t = g(a[h]) && g(m[h]) ? Math.pow(a[h] - m[h], 2) : null;\n t = (r || 0) + (t || 0);\n m.dist = g(t) ? Math.sqrt(t) : Number.MAX_VALUE;\n m.distX = g(r) ? Math.sqrt(r) : Number.MAX_VALUE;\n p = a[p] - m[p];\n t = 0 > p ? \"left\" : \"right\";\n r = 0 > p ? \"right\" : \"left\";\n b[t] && (t = d(a, b[t], c + 1, k), n = t[l] < n[l] ? t : m);\n b[r] && Math.sqrt(p * p) < n[l] && (a = d(a, b[r], c + 1, k), n = a[l] < n[l] ? a : n);\n return n;\n }\n var e = this,\n f = this.kdAxisArray[0],\n h = this.kdAxisArray[1],\n l = b ? \"distX\" : \"dist\";\n b = -1 < e.options.findNearestPointBy.indexOf(\"y\") ? 2 : 1;\n this.kdTree || this.buildingKdTree || this.buildKDTree(c);\n if (this.kdTree) return d(a, this.kdTree, b, b);\n };\n a.prototype.pointPlacementToXValue = function () {\n var a = this.options,\n b = a.pointRange,\n c = this.xAxis;\n a = a.pointPlacement;\n \"between\" === a && (a = c.reversed ? -.5 : .5);\n return O(a) ? a * (b || c.pointRange) : 0;\n };\n a.prototype.isPointInside = function (a) {\n var b = this.chart,\n c = this.xAxis,\n d = this.yAxis;\n return \"undefined\" !== typeof a.plotY && \"undefined\" !== typeof a.plotX && 0 <= a.plotY && a.plotY <= (d ? d.len : b.plotHeight) && 0 <= a.plotX && a.plotX <= (c ? c.len : b.plotWidth);\n };\n a.prototype.drawTracker = function () {\n var a = this,\n b = a.options,\n c = b.trackByArea,\n d = [].concat(c ? a.areaPath : a.graphPath),\n e = a.chart,\n g = e.pointer,\n h = e.renderer,\n l = e.options.tooltip.snap,\n m = a.tracker,\n k = function (b) {\n if (e.hoverSeries !== a) a.onMouseOver();\n },\n p = \"rgba(192,192,192,\" + (w ? .0001 : .002) + \")\";\n m ? m.attr({\n d: d\n }) : a.graph && (a.tracker = h.path(d).attr({\n visibility: a.visible ? \"visible\" : \"hidden\",\n zIndex: 2\n }).addClass(c ? \"highcharts-tracker-area\" : \"highcharts-tracker-line\").add(a.group), e.styledMode || a.tracker.attr({\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n stroke: p,\n fill: c ? p : \"none\",\n \"stroke-width\": a.graph.strokeWidth() + (c ? 0 : 2 * l)\n }), [a.tracker, a.markerGroup, a.dataLabelsGroup].forEach(function (a) {\n if (a && (a.addClass(\"highcharts-tracker\").on(\"mouseover\", k).on(\"mouseout\", function (a) {\n g.onTrackerMouseOut(a);\n }), b.cursor && !e.styledMode && a.css({\n cursor: b.cursor\n }), f)) a.on(\"touchstart\", k);\n }));\n I(this, \"afterDrawTracker\");\n };\n a.prototype.addPoint = function (a, b, c, d, e) {\n var g = this.options,\n f = this.data,\n h = this.chart,\n l = this.xAxis;\n l = l && l.hasNames && l.names;\n var m = g.data,\n k = this.xData,\n p;\n b = K(b, !0);\n var n = {\n series: this\n };\n this.pointClass.prototype.applyOptions.apply(n, [a]);\n var r = n.x;\n var t = k.length;\n if (this.requireSorting && r < k[t - 1]) for (p = !0; t && k[t - 1] > r;) t--;\n this.updateParallelArrays(n, \"splice\", t, 0, 0);\n this.updateParallelArrays(n, t);\n l && n.name && (l[r] = n.name);\n m.splice(t, 0, a);\n p && (this.data.splice(t, 0, null), this.processData());\n \"point\" === g.legendType && this.generatePoints();\n c && (f[0] && f[0].remove ? f[0].remove(!1) : (f.shift(), this.updateParallelArrays(n, \"shift\"), m.shift()));\n !1 !== e && I(this, \"addPoint\", {\n point: n\n });\n this.isDirtyData = this.isDirty = !0;\n b && h.redraw(d);\n };\n a.prototype.removePoint = function (a, b, c) {\n var d = this,\n g = d.data,\n f = g[a],\n h = d.points,\n l = d.chart,\n k = function () {\n h && h.length === g.length && h.splice(a, 1);\n g.splice(a, 1);\n d.options.data.splice(a, 1);\n d.updateParallelArrays(f || {\n series: d\n }, \"splice\", a, 1);\n f && f.destroy();\n d.isDirty = !0;\n d.isDirtyData = !0;\n b && l.redraw();\n };\n e(c, l);\n b = K(b, !0);\n f ? f.firePointEvent(\"remove\", null, k) : k();\n };\n a.prototype.remove = function (a, b, c, d) {\n function e() {\n g.destroy(d);\n f.isDirtyLegend = f.isDirtyBox = !0;\n f.linkSeries();\n K(a, !0) && f.redraw(b);\n }\n var g = this,\n f = g.chart;\n !1 !== c ? I(g, \"remove\", null, e) : e();\n };\n a.prototype.update = function (a, b) {\n a = l(a, this.userOptions);\n I(this, \"update\", {\n options: a\n });\n var c = this,\n d = c.chart,\n e = c.userOptions,\n g = c.initialType || c.type,\n f = d.options.plotOptions,\n h = B[g].prototype,\n k = c.finishedAnimating && {\n animation: !1\n },\n p = {},\n n,\n r = [\"eventOptions\", \"navigatorSeries\", \"baseSeries\"],\n t = a.type || e.type || d.options.chart.type,\n q = !(this.hasDerivedData || t && t !== this.type || \"undefined\" !== typeof a.pointStart || \"undefined\" !== typeof a.pointInterval || \"undefined\" !== typeof a.relativeXValue || c.hasOptionChanged(\"dataGrouping\") || c.hasOptionChanged(\"pointStart\") || c.hasOptionChanged(\"pointInterval\") || c.hasOptionChanged(\"pointIntervalUnit\") || c.hasOptionChanged(\"keys\"));\n t = t || g;\n q && (r.push(\"data\", \"isDirtyData\", \"points\", \"processedXData\", \"processedYData\", \"xIncrement\", \"cropped\", \"_hasPointMarkers\", \"_hasPointLabels\", \"clips\", \"nodes\", \"layout\", \"mapMap\", \"mapData\", \"minY\", \"maxY\", \"minX\", \"maxX\"), !1 !== a.visible && r.push(\"area\", \"graph\"), c.parallelArrays.forEach(function (a) {\n r.push(a + \"Data\");\n }), a.data && (a.dataSorting && D(c.options.dataSorting, a.dataSorting), this.setData(a.data, !1)));\n a = Y(e, k, {\n index: \"undefined\" === typeof e.index ? c.index : e.index,\n pointStart: K(f && f.series && f.series.pointStart, e.pointStart, c.xData[0])\n }, !q && {\n data: c.options.data\n }, a);\n q && a.data && (a.data = c.options.data);\n r = [\"group\", \"markerGroup\", \"dataLabelsGroup\", \"transformGroup\"].concat(r);\n r.forEach(function (a) {\n r[a] = c[a];\n delete c[a];\n });\n f = !1;\n if (B[t]) {\n if (f = t !== c.type, c.remove(!1, !1, !1, !0), f) if (Object.setPrototypeOf) Object.setPrototypeOf(c, B[t].prototype);else {\n k = Object.hasOwnProperty.call(c, \"hcEvents\") && c.hcEvents;\n for (n in h) c[n] = void 0;\n D(c, B[t].prototype);\n k ? c.hcEvents = k : delete c.hcEvents;\n }\n } else m(17, !0, d, {\n missingModuleFor: t\n });\n r.forEach(function (a) {\n c[a] = r[a];\n });\n c.init(d, a);\n if (q && this.points) {\n var x = c.options;\n !1 === x.visible ? (p.graphic = 1, p.dataLabel = 1) : c._hasPointLabels || (a = x.marker, h = x.dataLabels, !a || !1 !== a.enabled && (e.marker && e.marker.symbol) === a.symbol || (p.graphic = 1), h && !1 === h.enabled && (p.dataLabel = 1));\n this.points.forEach(function (a) {\n a && a.series && (a.resolveColor(), Object.keys(p).length && a.destroyElements(p), !1 === x.showInLegend && a.legendItem && d.legend.destroyItem(a));\n }, this);\n }\n c.initialType = g;\n d.linkSeries();\n f && c.linkedSeries.length && (c.isDirtyData = !0);\n I(this, \"afterUpdate\");\n K(b, !0) && d.redraw(q ? void 0 : !1);\n };\n a.prototype.setName = function (a) {\n this.name = this.options.name = this.userOptions.name = a;\n this.chart.isDirtyLegend = !0;\n };\n a.prototype.hasOptionChanged = function (a) {\n var b = this.options[a],\n c = this.chart.options.plotOptions,\n d = this.userOptions[a];\n return d ? b !== d : b !== K(c && c[this.type] && c[this.type][a], c && c.series && c.series[a], b);\n };\n a.prototype.onMouseOver = function () {\n var a = this.chart,\n b = a.hoverSeries;\n a.pointer.setHoverChartIndex();\n if (b && b !== this) b.onMouseOut();\n this.options.events.mouseOver && I(this, \"mouseOver\");\n this.setState(\"hover\");\n a.hoverSeries = this;\n };\n a.prototype.onMouseOut = function () {\n var a = this.options,\n b = this.chart,\n c = b.tooltip,\n d = b.hoverPoint;\n b.hoverSeries = null;\n if (d) d.onMouseOut();\n this && a.events.mouseOut && I(this, \"mouseOut\");\n !c || this.stickyTracking || c.shared && !this.noSharedTooltip || c.hide();\n b.series.forEach(function (a) {\n a.setState(\"\", !0);\n });\n };\n a.prototype.setState = function (a, b) {\n var c = this,\n d = c.options,\n e = c.graph,\n g = d.inactiveOtherPoints,\n f = d.states,\n h = K(f[a || \"normal\"] && f[a || \"normal\"].animation, c.chart.options.chart.animation),\n l = d.lineWidth,\n k = 0,\n m = d.opacity;\n a = a || \"\";\n if (c.state !== a && ([c.group, c.markerGroup, c.dataLabelsGroup].forEach(function (b) {\n b && (c.state && b.removeClass(\"highcharts-series-\" + c.state), a && b.addClass(\"highcharts-series-\" + a));\n }), c.state = a, !c.chart.styledMode)) {\n if (f[a] && !1 === f[a].enabled) return;\n a && (l = f[a].lineWidth || l + (f[a].lineWidthPlus || 0), m = K(f[a].opacity, m));\n if (e && !e.dashstyle) for (d = {\n \"stroke-width\": l\n }, e.animate(d, h); c[\"zone-graph-\" + k];) c[\"zone-graph-\" + k].animate(d, h), k += 1;\n g || [c.group, c.markerGroup, c.dataLabelsGroup, c.labelBySeries].forEach(function (a) {\n a && a.animate({\n opacity: m\n }, h);\n });\n }\n b && g && c.points && c.setAllPointsToState(a || void 0);\n };\n a.prototype.setAllPointsToState = function (a) {\n this.points.forEach(function (b) {\n b.setState && b.setState(a);\n });\n };\n a.prototype.setVisible = function (a, b) {\n var c = this,\n d = c.chart,\n e = c.legendItem,\n g = d.options.chart.ignoreHiddenSeries,\n f = c.visible,\n h = (c.visible = a = c.options.visible = c.userOptions.visible = \"undefined\" === typeof a ? !f : a) ? \"show\" : \"hide\";\n [\"group\", \"dataLabelsGroup\", \"markerGroup\", \"tracker\", \"tt\"].forEach(function (a) {\n if (c[a]) c[a][h]();\n });\n if (d.hoverSeries === c || (d.hoverPoint && d.hoverPoint.series) === c) c.onMouseOut();\n e && d.legend.colorizeItem(c, a);\n c.isDirty = !0;\n c.options.stacking && d.series.forEach(function (a) {\n a.options.stacking && a.visible && (a.isDirty = !0);\n });\n c.linkedSeries.forEach(function (b) {\n b.setVisible(a, !1);\n });\n g && (d.isDirtyBox = !0);\n I(c, h);\n !1 !== b && d.redraw();\n };\n a.prototype.show = function () {\n this.setVisible(!0);\n };\n a.prototype.hide = function () {\n this.setVisible(!1);\n };\n a.prototype.select = function (a) {\n this.selected = a = this.options.selected = \"undefined\" === typeof a ? !this.selected : a;\n this.checkbox && (this.checkbox.checked = a);\n I(this, a ? \"select\" : \"unselect\");\n };\n a.prototype.shouldShowTooltip = function (a, b, c) {\n void 0 === c && (c = {});\n c.series = this;\n c.visiblePlotOnly = !0;\n return this.chart.isInsidePlot(a, b, c);\n };\n a.defaultOptions = H;\n return a;\n }();\n D(a.prototype, {\n axisTypes: [\"xAxis\", \"yAxis\"],\n coll: \"series\",\n colorCounter: 0,\n cropShoulder: 1,\n directTouch: !1,\n drawLegendSymbol: y.drawLineMarker,\n isCartesian: !0,\n kdAxisArray: [\"clientX\", \"plotY\"],\n parallelArrays: [\"x\", \"y\"],\n pointClass: G,\n requireSorting: !0,\n sorted: !0\n });\n A.series = a;\n \"\";\n \"\";\n return a;\n });\n M(a, \"Extensions/ScrollablePlotArea.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/Axis/Axis.js\"], a[\"Core/Chart/Chart.js\"], a[\"Core/Series/Series.js\"], a[\"Core/Renderer/RendererRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G) {\n var v = a.stop,\n A = G.addEvent,\n q = G.createElement,\n n = G.merge,\n k = G.pick;\n A(z, \"afterSetChartSize\", function (a) {\n var c = this.options.chart.scrollablePlotArea,\n e = c && c.minWidth;\n c = c && c.minHeight;\n if (!this.renderer.forExport) {\n if (e) {\n if (this.scrollablePixelsX = e = Math.max(0, e - this.chartWidth)) {\n this.scrollablePlotBox = this.renderer.scrollablePlotBox = n(this.plotBox);\n this.plotBox.width = this.plotWidth += e;\n this.inverted ? this.clipBox.height += e : this.clipBox.width += e;\n var f = {\n 1: {\n name: \"right\",\n value: e\n }\n };\n }\n } else c && (this.scrollablePixelsY = e = Math.max(0, c - this.chartHeight)) && (this.scrollablePlotBox = this.renderer.scrollablePlotBox = n(this.plotBox), this.plotBox.height = this.plotHeight += e, this.inverted ? this.clipBox.width += e : this.clipBox.height += e, f = {\n 2: {\n name: \"bottom\",\n value: e\n }\n });\n f && !a.skipAxes && this.axes.forEach(function (a) {\n f[a.side] ? a.getPlotLinePath = function () {\n var c = f[a.side].name,\n e = this[c];\n this[c] = e - f[a.side].value;\n var h = u.prototype.getPlotLinePath.apply(this, arguments);\n this[c] = e;\n return h;\n } : (a.setAxisSize(), a.setAxisTranslation());\n });\n }\n });\n A(z, \"render\", function () {\n this.scrollablePixelsX || this.scrollablePixelsY ? (this.setUpScrolling && this.setUpScrolling(), this.applyFixed()) : this.fixedDiv && this.applyFixed();\n });\n z.prototype.setUpScrolling = function () {\n var a = this,\n c = {\n WebkitOverflowScrolling: \"touch\",\n overflowX: \"hidden\",\n overflowY: \"hidden\"\n };\n this.scrollablePixelsX && (c.overflowX = \"auto\");\n this.scrollablePixelsY && (c.overflowY = \"auto\");\n this.scrollingParent = q(\"div\", {\n className: \"highcharts-scrolling-parent\"\n }, {\n position: \"relative\"\n }, this.renderTo);\n this.scrollingContainer = q(\"div\", {\n className: \"highcharts-scrolling\"\n }, c, this.scrollingParent);\n A(this.scrollingContainer, \"scroll\", function () {\n a.pointer && delete a.pointer.chartPosition;\n });\n this.innerContainer = q(\"div\", {\n className: \"highcharts-inner-container\"\n }, null, this.scrollingContainer);\n this.innerContainer.appendChild(this.container);\n this.setUpScrolling = null;\n };\n z.prototype.moveFixedElements = function () {\n var a = this.container,\n c = this.fixedRenderer,\n h = \".highcharts-contextbutton .highcharts-credits .highcharts-legend .highcharts-legend-checkbox .highcharts-navigator-series .highcharts-navigator-xaxis .highcharts-navigator-yaxis .highcharts-navigator .highcharts-reset-zoom .highcharts-drillup-button .highcharts-scrollbar .highcharts-subtitle .highcharts-title\".split(\" \"),\n f;\n this.scrollablePixelsX && !this.inverted ? f = \".highcharts-yaxis\" : this.scrollablePixelsX && this.inverted ? f = \".highcharts-xaxis\" : this.scrollablePixelsY && !this.inverted ? f = \".highcharts-xaxis\" : this.scrollablePixelsY && this.inverted && (f = \".highcharts-yaxis\");\n f && h.push(f + \":not(.highcharts-radial-axis)\", f + \"-labels:not(.highcharts-radial-axis-labels)\");\n h.forEach(function (e) {\n [].forEach.call(a.querySelectorAll(e), function (a) {\n (a.namespaceURI === c.SVG_NS ? c.box : c.box.parentNode).appendChild(a);\n a.style.pointerEvents = \"auto\";\n });\n });\n };\n z.prototype.applyFixed = function () {\n var a = !this.fixedDiv,\n c = this.options.chart,\n h = c.scrollablePlotArea,\n f = y.getRendererType();\n a ? (this.fixedDiv = q(\"div\", {\n className: \"highcharts-fixed\"\n }, {\n position: \"absolute\",\n overflow: \"hidden\",\n pointerEvents: \"none\",\n zIndex: (c.style && c.style.zIndex || 0) + 2,\n top: 0\n }, null, !0), this.scrollingContainer && this.scrollingContainer.parentNode.insertBefore(this.fixedDiv, this.scrollingContainer), this.renderTo.style.overflow = \"visible\", this.fixedRenderer = c = new f(this.fixedDiv, this.chartWidth, this.chartHeight, this.options.chart.style), this.scrollableMask = c.path().attr({\n fill: this.options.chart.backgroundColor || \"#fff\",\n \"fill-opacity\": k(h.opacity, .85),\n zIndex: -1\n }).addClass(\"highcharts-scrollable-mask\").add(), A(this, \"afterShowResetZoom\", this.moveFixedElements), A(this, \"afterDrilldown\", this.moveFixedElements), A(this, \"afterLayOutTitles\", this.moveFixedElements)) : this.fixedRenderer.setSize(this.chartWidth, this.chartHeight);\n if (this.scrollableDirty || a) this.scrollableDirty = !1, this.moveFixedElements();\n c = this.chartWidth + (this.scrollablePixelsX || 0);\n f = this.chartHeight + (this.scrollablePixelsY || 0);\n v(this.container);\n this.container.style.width = c + \"px\";\n this.container.style.height = f + \"px\";\n this.renderer.boxWrapper.attr({\n width: c,\n height: f,\n viewBox: [0, 0, c, f].join(\" \")\n });\n this.chartBackground.attr({\n width: c,\n height: f\n });\n this.scrollingContainer.style.height = this.chartHeight + \"px\";\n a && (h.scrollPositionX && (this.scrollingContainer.scrollLeft = this.scrollablePixelsX * h.scrollPositionX), h.scrollPositionY && (this.scrollingContainer.scrollTop = this.scrollablePixelsY * h.scrollPositionY));\n f = this.axisOffset;\n a = this.plotTop - f[0] - 1;\n h = this.plotLeft - f[3] - 1;\n c = this.plotTop + this.plotHeight + f[2] + 1;\n f = this.plotLeft + this.plotWidth + f[1] + 1;\n var n = this.plotLeft + this.plotWidth - (this.scrollablePixelsX || 0),\n p = this.plotTop + this.plotHeight - (this.scrollablePixelsY || 0);\n a = this.scrollablePixelsX ? [[\"M\", 0, a], [\"L\", this.plotLeft - 1, a], [\"L\", this.plotLeft - 1, c], [\"L\", 0, c], [\"Z\"], [\"M\", n, a], [\"L\", this.chartWidth, a], [\"L\", this.chartWidth, c], [\"L\", n, c], [\"Z\"]] : this.scrollablePixelsY ? [[\"M\", h, 0], [\"L\", h, this.plotTop - 1], [\"L\", f, this.plotTop - 1], [\"L\", f, 0], [\"Z\"], [\"M\", h, p], [\"L\", h, this.chartHeight], [\"L\", f, this.chartHeight], [\"L\", f, p], [\"Z\"]] : [[\"M\", 0, 0]];\n \"adjustHeight\" !== this.redrawTrigger && this.scrollableMask.attr({\n d: a\n });\n };\n A(u, \"afterInit\", function () {\n this.chart.scrollableDirty = !0;\n });\n A(F, \"show\", function () {\n this.chart.scrollableDirty = !0;\n });\n \"\";\n });\n M(a, \"Core/Axis/StackingAxis.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/Axis/Axis.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = a.getDeferredAnimation,\n y = z.addEvent,\n G = z.destroyObjectProperties,\n H = z.fireEvent,\n A = z.isNumber,\n q = z.objectEach,\n n;\n (function (a) {\n function e() {\n var a = this.stacking;\n if (a) {\n var c = a.stacks;\n q(c, function (a, e) {\n G(a);\n c[e] = null;\n });\n a && a.stackTotalGroup && a.stackTotalGroup.destroy();\n }\n }\n function c() {\n this.stacking || (this.stacking = new f(this));\n }\n var h = [];\n a.compose = function (a) {\n -1 === h.indexOf(a) && (h.push(a), y(a, \"init\", c), y(a, \"destroy\", e));\n return a;\n };\n var f = function () {\n function a(a) {\n this.oldStacks = {};\n this.stacks = {};\n this.stacksTouched = 0;\n this.axis = a;\n }\n a.prototype.buildStacks = function () {\n var a = this.axis,\n c = a.series,\n e = a.options.reversedStacks,\n f = c.length,\n h;\n if (!a.isXAxis) {\n this.usePercentage = !1;\n for (h = f; h--;) {\n var k = c[e ? h : f - h - 1];\n k.setStackedPoints();\n k.setGroupedPoints();\n }\n for (h = 0; h < f; h++) c[h].modifyStacks();\n H(a, \"afterBuildStacks\");\n }\n };\n a.prototype.cleanStacks = function () {\n if (!this.axis.isXAxis) {\n if (this.oldStacks) var a = this.stacks = this.oldStacks;\n q(a, function (a) {\n q(a, function (a) {\n a.cumulative = a.total;\n });\n });\n }\n };\n a.prototype.resetStacks = function () {\n var a = this,\n c = a.stacks;\n a.axis.isXAxis || q(c, function (c) {\n q(c, function (e, f) {\n A(e.touched) && e.touched < a.stacksTouched ? (e.destroy(), delete c[f]) : (e.total = null, e.cumulative = null);\n });\n });\n };\n a.prototype.renderStackTotals = function () {\n var a = this.axis,\n c = a.chart,\n e = c.renderer,\n f = this.stacks;\n a = v(c, a.options.stackLabels && a.options.stackLabels.animation || !1);\n var h = this.stackTotalGroup = this.stackTotalGroup || e.g(\"stack-labels\").attr({\n visibility: \"visible\",\n zIndex: 6,\n opacity: 0\n }).add();\n h.translate(c.plotLeft, c.plotTop);\n q(f, function (a) {\n q(a, function (a) {\n a.render(h);\n });\n });\n h.animate({\n opacity: 1\n }, a);\n };\n return a;\n }();\n a.Additions = f;\n })(n || (n = {}));\n return n;\n });\n M(a, \"Extensions/Stacking.js\", [a[\"Core/Axis/Axis.js\"], a[\"Core/Chart/Chart.js\"], a[\"Core/FormatUtilities.js\"], a[\"Core/Globals.js\"], a[\"Core/Series/Series.js\"], a[\"Core/Axis/StackingAxis.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G, H) {\n var v = z.format,\n q = H.correctFloat,\n n = H.defined,\n k = H.destroyObjectProperties,\n e = H.isArray,\n c = H.isNumber,\n h = H.objectEach,\n f = H.pick,\n w = function () {\n function a(a, c, e, f, h) {\n var l = a.chart.inverted;\n this.axis = a;\n this.isNegative = e;\n this.options = c = c || {};\n this.x = f;\n this.total = null;\n this.points = {};\n this.hasValidPoints = !1;\n this.stack = h;\n this.rightCliff = this.leftCliff = 0;\n this.alignOptions = {\n align: c.align || (l ? e ? \"left\" : \"right\" : \"center\"),\n verticalAlign: c.verticalAlign || (l ? \"middle\" : e ? \"bottom\" : \"top\"),\n y: c.y,\n x: c.x\n };\n this.textAlign = c.textAlign || (l ? e ? \"right\" : \"left\" : \"center\");\n }\n a.prototype.destroy = function () {\n k(this, this.axis);\n };\n a.prototype.render = function (a) {\n var c = this.axis.chart,\n e = this.options,\n h = e.format;\n h = h ? v(h, this, c) : e.formatter.call(this);\n this.label ? this.label.attr({\n text: h,\n visibility: \"hidden\"\n }) : (this.label = c.renderer.label(h, null, null, e.shape, null, null, e.useHTML, !1, \"stack-labels\"), h = {\n r: e.borderRadius || 0,\n text: h,\n rotation: e.rotation,\n padding: f(e.padding, 5),\n visibility: \"hidden\"\n }, c.styledMode || (h.fill = e.backgroundColor, h.stroke = e.borderColor, h[\"stroke-width\"] = e.borderWidth, this.label.css(e.style)), this.label.attr(h), this.label.added || this.label.add(a));\n this.label.labelrank = c.plotSizeY;\n };\n a.prototype.setOffset = function (a, e, h, k, p) {\n var l = this.axis,\n b = l.chart;\n k = l.translate(l.stacking.usePercentage ? 100 : k ? k : this.total, 0, 0, 0, 1);\n h = l.translate(h ? h : 0);\n h = n(k) && Math.abs(k - h);\n a = f(p, b.xAxis[0].translate(this.x)) + a;\n l = n(k) && this.getStackBox(b, this, a, k, e, h, l);\n e = this.label;\n h = this.isNegative;\n a = \"justify\" === f(this.options.overflow, \"justify\");\n var g = this.textAlign;\n e && l && (p = e.getBBox(), k = e.padding, g = \"left\" === g ? b.inverted ? -k : k : \"right\" === g ? p.width : b.inverted && \"center\" === g ? p.width / 2 : b.inverted ? h ? p.width + k : -k : p.width / 2, h = b.inverted ? p.height / 2 : h ? -k : p.height, this.alignOptions.x = f(this.options.x, 0), this.alignOptions.y = f(this.options.y, 0), l.x -= g, l.y -= h, e.align(this.alignOptions, null, l), b.isInsidePlot(e.alignAttr.x + g - this.alignOptions.x, e.alignAttr.y + h - this.alignOptions.y) ? e.show() : (e.alignAttr.y = -9999, a = !1), a && y.prototype.justifyDataLabel.call(this.axis, e, this.alignOptions, e.alignAttr, p, l), e.attr({\n x: e.alignAttr.x,\n y: e.alignAttr.y\n }), f(!a && this.options.crop, !0) && ((b = c(e.x) && c(e.y) && b.isInsidePlot(e.x - k + e.width, e.y) && b.isInsidePlot(e.x + k, e.y)) || e.hide()));\n };\n a.prototype.getStackBox = function (a, c, e, f, h, l, b) {\n var g = c.axis.reversed,\n d = a.inverted,\n k = b.height + b.pos - (d ? a.plotLeft : a.plotTop);\n c = c.isNegative && !g || !c.isNegative && g;\n return {\n x: d ? c ? f - b.right : f - l + b.pos - a.plotLeft : e + a.xAxis[0].transB - a.plotLeft,\n y: d ? b.height - e - h : c ? k - f - l : k - f,\n width: d ? l : h,\n height: d ? h : l\n };\n };\n return a;\n }();\n u.prototype.getStacks = function () {\n var a = this,\n c = a.inverted;\n a.yAxis.forEach(function (a) {\n a.stacking && a.stacking.stacks && a.hasVisibleSeries && (a.stacking.oldStacks = a.stacking.stacks);\n });\n a.series.forEach(function (e) {\n var h = e.xAxis && e.xAxis.options || {};\n !e.options.stacking || !0 !== e.visible && !1 !== a.options.chart.ignoreHiddenSeries || (e.stackKey = [e.type, f(e.options.stack, \"\"), c ? h.top : h.left, c ? h.height : h.width].join());\n });\n };\n G.compose(a);\n y.prototype.setGroupedPoints = function () {\n var a = this.yAxis.stacking;\n this.options.centerInCategory && (this.is(\"column\") || this.is(\"columnrange\")) && !this.options.stacking && 1 < this.chart.series.length ? y.prototype.setStackedPoints.call(this, \"group\") : a && h(a.stacks, function (c, e) {\n \"group\" === e.slice(-5) && (h(c, function (a) {\n return a.destroy();\n }), delete a.stacks[e]);\n });\n };\n y.prototype.setStackedPoints = function (a) {\n var c = a || this.options.stacking;\n if (c && (!0 === this.visible || !1 === this.chart.options.chart.ignoreHiddenSeries)) {\n var h = this.processedXData,\n k = this.processedYData,\n p = [],\n r = k.length,\n l = this.options,\n b = l.threshold,\n g = f(l.startFromThreshold && b, 0);\n l = l.stack;\n a = a ? this.type + \",\" + c : this.stackKey;\n var d = \"-\" + a,\n m = this.negStacks,\n v = this.yAxis,\n x = v.stacking.stacks,\n u = v.stacking.oldStacks,\n A,\n y;\n v.stacking.stacksTouched += 1;\n for (y = 0; y < r; y++) {\n var z = h[y];\n var F = k[y];\n var H = this.getStackIndicator(H, z, this.index);\n var G = H.key;\n var K = (A = m && F < (g ? 0 : b)) ? d : a;\n x[K] || (x[K] = {});\n x[K][z] || (u[K] && u[K][z] ? (x[K][z] = u[K][z], x[K][z].total = null) : x[K][z] = new w(v, v.options.stackLabels, A, z, l));\n K = x[K][z];\n null !== F ? (K.points[G] = K.points[this.index] = [f(K.cumulative, g)], n(K.cumulative) || (K.base = G), K.touched = v.stacking.stacksTouched, 0 < H.index && !1 === this.singleStacks && (K.points[G][0] = K.points[this.index + \",\" + z + \",0\"][0])) : K.points[G] = K.points[this.index] = null;\n \"percent\" === c ? (A = A ? a : d, m && x[A] && x[A][z] ? (A = x[A][z], K.total = A.total = Math.max(A.total, K.total) + Math.abs(F) || 0) : K.total = q(K.total + (Math.abs(F) || 0))) : \"group\" === c ? (e(F) && (F = F[0]), null !== F && (K.total = (K.total || 0) + 1)) : K.total = q(K.total + (F || 0));\n K.cumulative = \"group\" === c ? (K.total || 1) - 1 : f(K.cumulative, g) + (F || 0);\n null !== F && (K.points[G].push(K.cumulative), p[y] = K.cumulative, K.hasValidPoints = !0);\n }\n \"percent\" === c && (v.stacking.usePercentage = !0);\n \"group\" !== c && (this.stackedYData = p);\n v.stacking.oldStacks = {};\n }\n };\n y.prototype.modifyStacks = function () {\n var a = this,\n c = a.stackKey,\n e = a.yAxis.stacking.stacks,\n f = a.processedXData,\n h,\n k = a.options.stacking;\n a[k + \"Stacker\"] && [c, \"-\" + c].forEach(function (c) {\n for (var b = f.length, g, d; b--;) if (g = f[b], h = a.getStackIndicator(h, g, a.index, c), d = (g = e[c] && e[c][g]) && g.points[h.key]) a[k + \"Stacker\"](d, g, b);\n });\n };\n y.prototype.percentStacker = function (a, c, e) {\n c = c.total ? 100 / c.total : 0;\n a[0] = q(a[0] * c);\n a[1] = q(a[1] * c);\n this.stackedYData[e] = a[1];\n };\n y.prototype.getStackIndicator = function (a, c, e, f) {\n !n(a) || a.x !== c || f && a.key !== f ? a = {\n x: c,\n index: 0,\n key: f\n } : a.index++;\n a.key = [e, c, a.index].join();\n return a;\n };\n F.StackItem = w;\n \"\";\n return F.StackItem;\n });\n M(a, \"Series/Line/LineSeries.js\", [a[\"Core/Series/Series.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = this && this.__extends || function () {\n var a = function (v, q) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, k) {\n a.__proto__ = k;\n } || function (a, k) {\n for (var e in k) k.hasOwnProperty(e) && (a[e] = k[e]);\n };\n return a(v, q);\n };\n return function (v, q) {\n function n() {\n this.constructor = v;\n }\n a(v, q);\n v.prototype = null === q ? Object.create(q) : (n.prototype = q.prototype, new n());\n };\n }(),\n y = z.defined,\n G = z.merge;\n z = function (u) {\n function A() {\n var a = null !== u && u.apply(this, arguments) || this;\n a.data = void 0;\n a.options = void 0;\n a.points = void 0;\n return a;\n }\n v(A, u);\n A.prototype.drawGraph = function () {\n var a = this,\n n = this.options,\n k = (this.gappedPath || this.getGraphPath).call(this),\n e = this.chart.styledMode,\n c = [[\"graph\", \"highcharts-graph\"]];\n e || c[0].push(n.lineColor || this.color || \"#cccccc\", n.dashStyle);\n c = a.getZonesGraphs(c);\n c.forEach(function (c, f) {\n var h = c[0],\n p = a[h],\n q = p ? \"animate\" : \"attr\";\n p ? (p.endX = a.preventGraphAnimation ? null : k.xMap, p.animate({\n d: k\n })) : k.length && (a[h] = p = a.chart.renderer.path(k).addClass(c[1]).attr({\n zIndex: 1\n }).add(a.group));\n p && !e && (h = {\n stroke: c[2],\n \"stroke-width\": n.lineWidth,\n fill: a.fillGraph && a.color || \"none\"\n }, c[3] ? h.dashstyle = c[3] : \"square\" !== n.linecap && (h[\"stroke-linecap\"] = h[\"stroke-linejoin\"] = \"round\"), p[q](h).shadow(2 > f && n.shadow));\n p && (p.startX = k.xMap, p.isArea = k.isArea);\n });\n };\n A.prototype.getGraphPath = function (a, n, k) {\n var e = this,\n c = e.options,\n h = [],\n f = [],\n q,\n p = c.step;\n a = a || e.points;\n var v = a.reversed;\n v && a.reverse();\n (p = {\n right: 1,\n center: 2\n }[p] || p && 3) && v && (p = 4 - p);\n a = this.getValidPoints(a, !1, !(c.connectNulls && !n && !k));\n a.forEach(function (t, v) {\n var w = t.plotX,\n r = t.plotY,\n l = a[v - 1];\n (t.leftCliff || l && l.rightCliff) && !k && (q = !0);\n t.isNull && !y(n) && 0 < v ? q = !c.connectNulls : t.isNull && !n ? q = !0 : (0 === v || q ? v = [[\"M\", t.plotX, t.plotY]] : e.getPointSpline ? v = [e.getPointSpline(a, t, v)] : p ? (v = 1 === p ? [[\"L\", l.plotX, r]] : 2 === p ? [[\"L\", (l.plotX + w) / 2, l.plotY], [\"L\", (l.plotX + w) / 2, r]] : [[\"L\", w, l.plotY]], v.push([\"L\", w, r])) : v = [[\"L\", w, r]], f.push(t.x), p && (f.push(t.x), 2 === p && f.push(t.x)), h.push.apply(h, v), q = !1);\n });\n h.xMap = f;\n return e.graphPath = h;\n };\n A.prototype.getZonesGraphs = function (a) {\n this.zones.forEach(function (n, k) {\n k = [\"zone-graph-\" + k, \"highcharts-graph highcharts-zone-graph-\" + k + \" \" + (n.className || \"\")];\n this.chart.styledMode || k.push(n.color || this.color, n.dashStyle || this.options.dashStyle);\n a.push(k);\n }, this);\n return a;\n };\n A.defaultOptions = G(a.defaultOptions, {});\n return A;\n }(a);\n u.registerSeriesType(\"line\", z);\n \"\";\n return z;\n });\n M(a, \"Series/Area/AreaSeries.js\", [a[\"Core/Color/Color.js\"], a[\"Core/Legend/LegendSymbol.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F) {\n var v = this && this.__extends || function () {\n var a = function (e, c) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, c) {\n a.__proto__ = c;\n } || function (a, c) {\n for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e]);\n };\n return a(e, c);\n };\n return function (e, c) {\n function h() {\n this.constructor = e;\n }\n a(e, c);\n e.prototype = null === c ? Object.create(c) : (h.prototype = c.prototype, new h());\n };\n }(),\n G = a.parse,\n H = z.seriesTypes.line;\n a = F.extend;\n var A = F.merge,\n q = F.objectEach,\n n = F.pick;\n F = function (a) {\n function e() {\n var c = null !== a && a.apply(this, arguments) || this;\n c.data = void 0;\n c.options = void 0;\n c.points = void 0;\n return c;\n }\n v(e, a);\n e.prototype.drawGraph = function () {\n this.areaPath = [];\n a.prototype.drawGraph.apply(this);\n var c = this,\n e = this.areaPath,\n f = this.options,\n k = [[\"area\", \"highcharts-area\", this.color, f.fillColor]];\n this.zones.forEach(function (a, e) {\n k.push([\"zone-area-\" + e, \"highcharts-area highcharts-zone-area-\" + e + \" \" + a.className, a.color || c.color, a.fillColor || f.fillColor]);\n });\n k.forEach(function (a) {\n var h = a[0],\n k = c[h],\n p = k ? \"animate\" : \"attr\",\n q = {};\n k ? (k.endX = c.preventGraphAnimation ? null : e.xMap, k.animate({\n d: e\n })) : (q.zIndex = 0, k = c[h] = c.chart.renderer.path(e).addClass(a[1]).add(c.group), k.isArea = !0);\n c.chart.styledMode || (q.fill = n(a[3], G(a[2]).setOpacity(n(f.fillOpacity, .75)).get()));\n k[p](q);\n k.startX = e.xMap;\n k.shiftUnit = f.step ? 2 : 1;\n });\n };\n e.prototype.getGraphPath = function (a) {\n var c = H.prototype.getGraphPath,\n e = this.options,\n k = e.stacking,\n p = this.yAxis,\n q,\n t = [],\n v = [],\n u = this.index,\n r = p.stacking.stacks[this.stackKey],\n l = e.threshold,\n b = Math.round(p.getThreshold(e.threshold));\n e = n(e.connectNulls, \"percent\" === k);\n var g = function (c, d, e) {\n var g = a[c];\n c = k && r[g.x].points[u];\n var f = g[e + \"Null\"] || 0;\n e = g[e + \"Cliff\"] || 0;\n g = !0;\n if (e || f) {\n var h = (f ? c[0] : c[1]) + e;\n var n = c[0] + e;\n g = !!f;\n } else !k && a[d] && a[d].isNull && (h = n = l);\n \"undefined\" !== typeof h && (v.push({\n plotX: m,\n plotY: null === h ? b : p.getThreshold(h),\n isNull: g,\n isCliff: !0\n }), t.push({\n plotX: m,\n plotY: null === n ? b : p.getThreshold(n),\n doCurve: !1\n }));\n };\n a = a || this.points;\n k && (a = this.getStackPoints(a));\n for (q = 0; q < a.length; q++) {\n k || (a[q].leftCliff = a[q].rightCliff = a[q].leftNull = a[q].rightNull = void 0);\n var d = a[q].isNull;\n var m = n(a[q].rectPlotX, a[q].plotX);\n var D = k ? n(a[q].yBottom, b) : b;\n if (!d || e) e || g(q, q - 1, \"left\"), d && !k && e || (v.push(a[q]), t.push({\n x: q,\n plotX: m,\n plotY: D\n })), e || g(q, q + 1, \"right\");\n }\n q = c.call(this, v, !0, !0);\n t.reversed = !0;\n d = c.call(this, t, !0, !0);\n (D = d[0]) && \"M\" === D[0] && (d[0] = [\"L\", D[1], D[2]]);\n d = q.concat(d);\n d.length && d.push([\"Z\"]);\n c = c.call(this, v, !1, e);\n d.xMap = q.xMap;\n this.areaPath = d;\n return c;\n };\n e.prototype.getStackPoints = function (a) {\n var c = this,\n e = [],\n k = [],\n p = this.xAxis,\n v = this.yAxis,\n t = v.stacking.stacks[this.stackKey],\n u = {},\n C = v.series,\n r = C.length,\n l = v.options.reversedStacks ? 1 : -1,\n b = C.indexOf(c);\n a = a || this.points;\n if (this.options.stacking) {\n for (var g = 0; g < a.length; g++) a[g].leftNull = a[g].rightNull = void 0, u[a[g].x] = a[g];\n q(t, function (a, b) {\n null !== a.total && k.push(b);\n });\n k.sort(function (a, b) {\n return a - b;\n });\n var d = C.map(function (a) {\n return a.visible;\n });\n k.forEach(function (a, g) {\n var f = 0,\n h,\n m;\n if (u[a] && !u[a].isNull) e.push(u[a]), [-1, 1].forEach(function (e) {\n var f = 1 === e ? \"rightNull\" : \"leftNull\",\n n = 0,\n p = t[k[g + e]];\n if (p) for (var q = b; 0 <= q && q < r;) {\n var v = C[q].index;\n h = p.points[v];\n h || (v === c.index ? u[a][f] = !0 : d[q] && (m = t[a].points[v]) && (n -= m[1] - m[0]));\n q += l;\n }\n u[a][1 === e ? \"rightCliff\" : \"leftCliff\"] = n;\n });else {\n for (var q = b; 0 <= q && q < r;) {\n if (h = t[a].points[C[q].index]) {\n f = h[1];\n break;\n }\n q += l;\n }\n f = n(f, 0);\n f = v.translate(f, 0, 1, 0, 1);\n e.push({\n isNull: !0,\n plotX: p.translate(a, 0, 0, 0, 1),\n x: a,\n plotY: f,\n yBottom: f\n });\n }\n });\n }\n return e;\n };\n e.defaultOptions = A(H.defaultOptions, {\n threshold: 0\n });\n return e;\n }(H);\n a(F.prototype, {\n singleStacks: !1,\n drawLegendSymbol: u.drawRectangle\n });\n z.registerSeriesType(\"area\", F);\n \"\";\n return F;\n });\n M(a, \"Series/Spline/SplineSeries.js\", [a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n var v = this && this.__extends || function () {\n var a = function (v, q) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, k) {\n a.__proto__ = k;\n } || function (a, k) {\n for (var e in k) k.hasOwnProperty(e) && (a[e] = k[e]);\n };\n return a(v, q);\n };\n return function (v, q) {\n function n() {\n this.constructor = v;\n }\n a(v, q);\n v.prototype = null === q ? Object.create(q) : (n.prototype = q.prototype, new n());\n };\n }(),\n F = a.seriesTypes.line,\n y = u.merge,\n G = u.pick;\n u = function (a) {\n function u() {\n var q = null !== a && a.apply(this, arguments) || this;\n q.data = void 0;\n q.options = void 0;\n q.points = void 0;\n return q;\n }\n v(u, a);\n u.prototype.getPointSpline = function (a, n, k) {\n var e = n.plotX || 0,\n c = n.plotY || 0,\n h = a[k - 1];\n k = a[k + 1];\n if (h && !h.isNull && !1 !== h.doCurve && !n.isCliff && k && !k.isNull && !1 !== k.doCurve && !n.isCliff) {\n a = h.plotY || 0;\n var f = k.plotX || 0;\n k = k.plotY || 0;\n var q = 0;\n var p = (1.5 * e + (h.plotX || 0)) / 2.5;\n var v = (1.5 * c + a) / 2.5;\n f = (1.5 * e + f) / 2.5;\n var t = (1.5 * c + k) / 2.5;\n f !== p && (q = (t - v) * (f - e) / (f - p) + c - t);\n v += q;\n t += q;\n v > a && v > c ? (v = Math.max(a, c), t = 2 * c - v) : v < a && v < c && (v = Math.min(a, c), t = 2 * c - v);\n t > k && t > c ? (t = Math.max(k, c), v = 2 * c - t) : t < k && t < c && (t = Math.min(k, c), v = 2 * c - t);\n n.rightContX = f;\n n.rightContY = t;\n }\n n = [\"C\", G(h.rightContX, h.plotX, 0), G(h.rightContY, h.plotY, 0), G(p, e, 0), G(v, c, 0), e, c];\n h.rightContX = h.rightContY = void 0;\n return n;\n };\n u.defaultOptions = y(F.defaultOptions);\n return u;\n }(F);\n a.registerSeriesType(\"spline\", u);\n \"\";\n return u;\n });\n M(a, \"Series/AreaSpline/AreaSplineSeries.js\", [a[\"Series/Area/AreaSeries.js\"], a[\"Series/Spline/SplineSeries.js\"], a[\"Core/Legend/LegendSymbol.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y) {\n var v = this && this.__extends || function () {\n var a = function (k, e) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, e) {\n a.__proto__ = e;\n } || function (a, e) {\n for (var c in e) e.hasOwnProperty(c) && (a[c] = e[c]);\n };\n return a(k, e);\n };\n return function (k, e) {\n function c() {\n this.constructor = k;\n }\n a(k, e);\n k.prototype = null === e ? Object.create(e) : (c.prototype = e.prototype, new c());\n };\n }(),\n H = a.prototype,\n A = y.extend,\n q = y.merge;\n y = function (n) {\n function k() {\n var a = null !== n && n.apply(this, arguments) || this;\n a.data = void 0;\n a.points = void 0;\n a.options = void 0;\n return a;\n }\n v(k, n);\n k.defaultOptions = q(u.defaultOptions, a.defaultOptions);\n return k;\n }(u);\n A(y.prototype, {\n getGraphPath: H.getGraphPath,\n getStackPoints: H.getStackPoints,\n drawGraph: H.drawGraph,\n drawLegendSymbol: z.drawRectangle\n });\n F.registerSeriesType(\"areaspline\", y);\n \"\";\n return y;\n });\n M(a, \"Series/Column/ColumnSeries.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/Color/Color.js\"], a[\"Core/Globals.js\"], a[\"Core/Legend/LegendSymbol.js\"], a[\"Core/Series/Series.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G, H) {\n var v = this && this.__extends || function () {\n var a = function (c, b) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, b) {\n a.__proto__ = b;\n } || function (a, b) {\n for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c]);\n };\n return a(c, b);\n };\n return function (c, b) {\n function e() {\n this.constructor = c;\n }\n a(c, b);\n c.prototype = null === b ? Object.create(b) : (e.prototype = b.prototype, new e());\n };\n }(),\n q = a.animObject,\n n = u.parse,\n k = z.hasTouch;\n a = z.noop;\n var e = H.clamp,\n c = H.css,\n h = H.defined,\n f = H.extend,\n w = H.fireEvent,\n p = H.isArray,\n B = H.isNumber,\n t = H.merge,\n J = H.pick,\n C = H.objectEach;\n H = function (a) {\n function l() {\n var b = null !== a && a.apply(this, arguments) || this;\n b.borderWidth = void 0;\n b.data = void 0;\n b.group = void 0;\n b.options = void 0;\n b.points = void 0;\n return b;\n }\n v(l, a);\n l.prototype.animate = function (a) {\n var b = this,\n c = this.yAxis,\n h = b.options,\n l = this.chart.inverted,\n k = {},\n n = l ? \"translateX\" : \"translateY\";\n if (a) k.scaleY = .001, a = e(c.toPixels(h.threshold), c.pos, c.pos + c.len), l ? k.translateX = a - c.len : k.translateY = a, b.clipBox && b.setClip(), b.group.attr(k);else {\n var p = Number(b.group.attr(n));\n b.group.animate({\n scaleY: 1\n }, f(q(b.options.animation), {\n step: function (a, d) {\n b.group && (k[n] = p + d.pos * (c.pos - p), b.group.attr(k));\n }\n }));\n }\n };\n l.prototype.init = function (b, c) {\n a.prototype.init.apply(this, arguments);\n var d = this;\n b = d.chart;\n b.hasRendered && b.series.forEach(function (a) {\n a.type === d.type && (a.isDirty = !0);\n });\n };\n l.prototype.getColumnMetrics = function () {\n var a = this,\n c = a.options,\n d = a.xAxis,\n e = a.yAxis,\n f = d.options.reversedStacks;\n f = d.reversed && !f || !d.reversed && f;\n var h = {},\n l,\n k = 0;\n !1 === c.grouping ? k = 1 : a.chart.series.forEach(function (b) {\n var c = b.yAxis,\n d = b.options;\n if (b.type === a.type && (b.visible || !a.chart.options.chart.ignoreHiddenSeries) && e.len === c.len && e.pos === c.pos) {\n if (d.stacking && \"group\" !== d.stacking) {\n l = b.stackKey;\n \"undefined\" === typeof h[l] && (h[l] = k++);\n var g = h[l];\n } else !1 !== d.grouping && (g = k++);\n b.columnIndex = g;\n }\n });\n var n = Math.min(Math.abs(d.transA) * (d.ordinal && d.ordinal.slope || c.pointRange || d.closestPointRange || d.tickInterval || 1), d.len),\n p = n * c.groupPadding,\n r = (n - 2 * p) / (k || 1);\n c = Math.min(c.maxPointWidth || d.len, J(c.pointWidth, r * (1 - 2 * c.pointPadding)));\n a.columnMetrics = {\n width: c,\n offset: (r - c) / 2 + (p + ((a.columnIndex || 0) + (f ? 1 : 0)) * r - n / 2) * (f ? -1 : 1),\n paddedWidth: r,\n columnCount: k\n };\n return a.columnMetrics;\n };\n l.prototype.crispCol = function (a, c, d, e) {\n var b = this.chart,\n g = this.borderWidth,\n f = -(g % 2 ? .5 : 0);\n g = g % 2 ? .5 : 1;\n b.inverted && b.renderer.isVML && (g += 1);\n this.options.crisp && (d = Math.round(a + d) + f, a = Math.round(a) + f, d -= a);\n e = Math.round(c + e) + g;\n f = .5 >= Math.abs(c) && .5 < e;\n c = Math.round(c) + g;\n e -= c;\n f && e && (--c, e += 1);\n return {\n x: a,\n y: c,\n width: d,\n height: e\n };\n };\n l.prototype.adjustForMissingColumns = function (a, c, d, e) {\n var b = this,\n g = this.options.stacking;\n if (!d.isNull && 1 < e.columnCount) {\n var f = 0,\n h = 0;\n C(this.yAxis.stacking && this.yAxis.stacking.stacks, function (a) {\n if (\"number\" === typeof d.x && (a = a[d.x.toString()])) {\n var c = a.points[b.index],\n e = a.total;\n g ? (c && (f = h), a.hasValidPoints && h++) : p(c) && (f = c[1], h = e || 0);\n }\n });\n a = (d.plotX || 0) + ((h - 1) * e.paddedWidth + c) / 2 - c - f * e.paddedWidth;\n }\n return a;\n };\n l.prototype.translate = function () {\n var a = this,\n c = a.chart,\n d = a.options,\n f = a.dense = 2 > a.closestPointRange * a.xAxis.transA;\n f = a.borderWidth = J(d.borderWidth, f ? 0 : 1);\n var l = a.xAxis,\n k = a.yAxis,\n n = d.threshold,\n p = a.translatedThreshold = k.getThreshold(n),\n r = J(d.minPointLength, 5),\n q = a.getColumnMetrics(),\n t = q.width,\n v = a.pointXOffset = q.offset,\n u = a.dataMin,\n w = a.dataMax,\n C = a.barW = Math.max(t, 1 + 2 * f);\n c.inverted && (p -= .5);\n d.pointPadding && (C = Math.ceil(C));\n y.prototype.translate.apply(a);\n a.points.forEach(function (b) {\n var g = J(b.yBottom, p),\n f = 999 + Math.abs(g),\n m = b.plotX || 0;\n f = e(b.plotY, -f, k.len + f);\n var x = Math.min(f, g),\n D = Math.max(f, g) - x,\n y = t,\n A = m + v,\n z = C;\n r && Math.abs(D) < r && (D = r, m = !k.reversed && !b.negative || k.reversed && b.negative, B(n) && B(w) && b.y === n && w <= n && (k.min || 0) < n && (u !== w || (k.max || 0) <= n) && (m = !m), x = Math.abs(x - p) > r ? g - r : p - (m ? r : 0));\n h(b.options.pointWidth) && (y = z = Math.ceil(b.options.pointWidth), A -= Math.round((y - t) / 2));\n d.centerInCategory && (A = a.adjustForMissingColumns(A, y, b, q));\n b.barX = A;\n b.pointWidth = y;\n b.tooltipPos = c.inverted ? [e(k.len + k.pos - c.plotLeft - f, k.pos - c.plotLeft, k.len + k.pos - c.plotLeft), l.len + l.pos - c.plotTop - A - z / 2, D] : [l.left - c.plotLeft + A + z / 2, e(f + k.pos - c.plotTop, k.pos - c.plotTop, k.len + k.pos - c.plotTop), D];\n b.shapeType = a.pointClass.prototype.shapeType || \"rect\";\n b.shapeArgs = a.crispCol.apply(a, b.isNull ? [A, p, z, 0] : [A, x, z, D]);\n });\n };\n l.prototype.drawGraph = function () {\n this.group[this.dense ? \"addClass\" : \"removeClass\"](\"highcharts-dense-data\");\n };\n l.prototype.pointAttribs = function (a, c) {\n var b = this.options,\n e = this.pointAttrToOptions || {},\n g = e.stroke || \"borderColor\",\n f = e[\"stroke-width\"] || \"borderWidth\",\n h = a && a.color || this.color,\n l = a && a[g] || b[g] || h;\n e = a && a.options.dashStyle || b.dashStyle;\n var k = a && a[f] || b[f] || this[f] || 0,\n p = J(a && a.opacity, b.opacity, 1);\n if (a && this.zones.length) {\n var r = a.getZone();\n h = a.options.color || r && (r.color || a.nonZonedColor) || this.color;\n r && (l = r.borderColor || l, e = r.dashStyle || e, k = r.borderWidth || k);\n }\n c && a && (a = t(b.states[c], a.options.states && a.options.states[c] || {}), c = a.brightness, h = a.color || \"undefined\" !== typeof c && n(h).brighten(a.brightness).get() || h, l = a[g] || l, k = a[f] || k, e = a.dashStyle || e, p = J(a.opacity, p));\n g = {\n fill: h,\n stroke: l,\n \"stroke-width\": k,\n opacity: p\n };\n e && (g.dashstyle = e);\n return g;\n };\n l.prototype.drawPoints = function () {\n var a = this,\n c = this.chart,\n d = a.options,\n e = c.renderer,\n f = d.animationLimit || 250,\n h;\n a.points.forEach(function (b) {\n var g = b.graphic,\n l = !!g,\n k = g && c.pointCount < f ? \"animate\" : \"attr\";\n if (B(b.plotY) && null !== b.y) {\n h = b.shapeArgs;\n g && b.hasNewShapeType() && (g = g.destroy());\n a.enabledDataSorting && (b.startXPos = a.xAxis.reversed ? -(h ? h.width || 0 : 0) : a.xAxis.width);\n g || (b.graphic = g = e[b.shapeType](h).add(b.group || a.group)) && a.enabledDataSorting && c.hasRendered && c.pointCount < f && (g.attr({\n x: b.startXPos\n }), l = !0, k = \"animate\");\n if (g && l) g[k](t(h));\n if (d.borderRadius) g[k]({\n r: d.borderRadius\n });\n c.styledMode || g[k](a.pointAttribs(b, b.selected && \"select\")).shadow(!1 !== b.allowShadow && d.shadow, null, d.stacking && !d.borderRadius);\n g && (g.addClass(b.getClassName(), !0), g.attr({\n visibility: b.visible ? \"inherit\" : \"hidden\"\n }));\n } else g && (b.graphic = g.destroy());\n });\n };\n l.prototype.drawTracker = function () {\n var a = this,\n e = a.chart,\n d = e.pointer,\n f = function (a) {\n var b = d.getPointFromEvent(a);\n \"undefined\" !== typeof b && (d.isDirectTouch = !0, b.onMouseOver(a));\n },\n h;\n a.points.forEach(function (a) {\n h = p(a.dataLabels) ? a.dataLabels : a.dataLabel ? [a.dataLabel] : [];\n a.graphic && (a.graphic.element.point = a);\n h.forEach(function (b) {\n b.div ? b.div.point = a : b.element.point = a;\n });\n });\n a._hasTracking || (a.trackerGroups.forEach(function (b) {\n if (a[b]) {\n a[b].addClass(\"highcharts-tracker\").on(\"mouseover\", f).on(\"mouseout\", function (a) {\n d.onTrackerMouseOut(a);\n });\n if (k) a[b].on(\"touchstart\", f);\n !e.styledMode && a.options.cursor && a[b].css(c).css({\n cursor: a.options.cursor\n });\n }\n }), a._hasTracking = !0);\n w(this, \"afterDrawTracker\");\n };\n l.prototype.remove = function () {\n var a = this,\n c = a.chart;\n c.hasRendered && c.series.forEach(function (b) {\n b.type === a.type && (b.isDirty = !0);\n });\n y.prototype.remove.apply(a, arguments);\n };\n l.defaultOptions = t(y.defaultOptions, {\n borderRadius: 0,\n centerInCategory: !1,\n groupPadding: .2,\n marker: null,\n pointPadding: .1,\n minPointLength: 0,\n cropThreshold: 50,\n pointRange: null,\n states: {\n hover: {\n halo: !1,\n brightness: .1\n },\n select: {\n color: \"#cccccc\",\n borderColor: \"#000000\"\n }\n },\n dataLabels: {\n align: void 0,\n verticalAlign: void 0,\n y: void 0\n },\n startFromThreshold: !0,\n stickyTracking: !1,\n tooltip: {\n distance: 6\n },\n threshold: 0,\n borderColor: \"#ffffff\"\n });\n return l;\n }(y);\n f(H.prototype, {\n cropShoulder: 0,\n directTouch: !0,\n drawLegendSymbol: F.drawRectangle,\n getSymbol: a,\n negStacks: !0,\n trackerGroups: [\"group\", \"dataLabelsGroup\"]\n });\n G.registerSeriesType(\"column\", H);\n \"\";\n \"\";\n return H;\n });\n M(a, \"Core/Series/DataLabel.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/FormatUtilities.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = a.getDeferredAnimation,\n y = u.format,\n G = z.defined,\n H = z.extend,\n A = z.fireEvent,\n q = z.isArray,\n n = z.merge,\n k = z.objectEach,\n e = z.pick,\n c = z.splat,\n h;\n (function (a) {\n function f(a, b, c, d, f) {\n var g = this,\n h = this.chart,\n l = this.isCartesian && h.inverted,\n k = this.enabledDataSorting,\n m = e(a.dlBox && a.dlBox.centerX, a.plotX, -9999),\n n = e(a.plotY, -9999),\n p = b.getBBox(),\n r = c.rotation,\n q = c.align,\n t = h.isInsidePlot(m, Math.round(n), {\n inverted: l,\n paneCoordinates: !0,\n series: g\n }),\n v = function (c) {\n k && g.xAxis && !u && g.setDataLabelStartPos(a, b, f, t, c);\n },\n u = \"justify\" === e(c.overflow, k ? \"none\" : \"justify\"),\n w = this.visible && !1 !== a.visible && (a.series.forceDL || k && !u || t || e(c.inside, !!this.options.stacking) && d && h.isInsidePlot(m, l ? d.x + 1 : d.y + d.height - 1, {\n inverted: l,\n paneCoordinates: !0,\n series: g\n }));\n if (w) {\n var C = h.renderer.fontMetrics(h.styledMode ? void 0 : c.style.fontSize, b).b;\n d = H({\n x: l ? this.yAxis.len - n : m,\n y: Math.round(l ? this.xAxis.len - m : n),\n width: 0,\n height: 0\n }, d);\n H(c, {\n width: p.width,\n height: p.height\n });\n r ? (u = !1, m = h.renderer.rotCorr(C, r), m = {\n x: d.x + (c.x || 0) + d.width / 2 + m.x,\n y: d.y + (c.y || 0) + {\n top: 0,\n middle: .5,\n bottom: 1\n }[c.verticalAlign] * d.height\n }, v(m), b[f ? \"attr\" : \"animate\"](m).attr({\n align: q\n }), v = (r + 720) % 360, v = 180 < v && 360 > v, \"left\" === q ? m.y -= v ? p.height : 0 : \"center\" === q ? (m.x -= p.width / 2, m.y -= p.height / 2) : \"right\" === q && (m.x -= p.width, m.y -= v ? 0 : p.height), b.placed = !0, b.alignAttr = m) : (v(d), b.align(c, void 0, d), m = b.alignAttr);\n u && 0 <= d.height ? this.justifyDataLabel(b, c, m, p, d, f) : e(c.crop, !0) && (w = h.isInsidePlot(m.x, m.y, {\n paneCoordinates: !0,\n series: g\n }) && h.isInsidePlot(m.x + p.width, m.y + p.height, {\n paneCoordinates: !0,\n series: g\n }));\n if (c.shape && !r) b[f ? \"attr\" : \"animate\"]({\n anchorX: l ? h.plotWidth - a.plotY : a.plotX,\n anchorY: l ? h.plotHeight - a.plotX : a.plotY\n });\n }\n f && k && (b.placed = !1);\n w || k && !u || (b.hide(!0), b.placed = !1);\n }\n function h(a, b) {\n var c = b.filter;\n return c ? (b = c.operator, a = a[c.property], c = c.value, \">\" === b && a > c || \"<\" === b && a < c || \">=\" === b && a >= c || \"<=\" === b && a <= c || \"==\" === b && a == c || \"===\" === b && a === c ? !0 : !1) : !0;\n }\n function u() {\n var a = this,\n b = a.chart,\n g = a.options,\n d = a.points,\n f = a.hasRendered || 0,\n n = b.renderer,\n p = g.dataLabels,\n r,\n t = p.animation;\n t = p.defer ? v(b, t, a) : {\n defer: 0,\n duration: 0\n };\n p = z(z(b.options.plotOptions && b.options.plotOptions.series && b.options.plotOptions.series.dataLabels, b.options.plotOptions && b.options.plotOptions[a.type] && b.options.plotOptions[a.type].dataLabels), p);\n A(this, \"drawDataLabels\");\n if (q(p) || p.enabled || a._hasPointLabels) {\n var u = a.plotGroup(\"dataLabelsGroup\", \"data-labels\", f ? \"inherit\" : \"hidden\", p.zIndex || 6);\n u.attr({\n opacity: +f\n });\n !f && (f = a.dataLabelsGroup) && (a.visible && u.show(!0), f[g.animation ? \"animate\" : \"attr\"]({\n opacity: 1\n }, t));\n d.forEach(function (d) {\n r = c(z(p, d.dlOptions || d.options && d.options.dataLabels));\n r.forEach(function (c, f) {\n var l = c.enabled && (!d.isNull || d.dataLabelOnNull) && h(d, c),\n m = d.connectors ? d.connectors[f] : d.connector,\n p = d.dataLabels ? d.dataLabels[f] : d.dataLabel,\n r = e(c.distance, d.labelDistance),\n q = !p;\n if (l) {\n var t = d.getLabelConfig();\n var v = e(c[d.formatPrefix + \"Format\"], c.format);\n t = G(v) ? y(v, t, b) : (c[d.formatPrefix + \"Formatter\"] || c.formatter).call(t, c);\n v = c.style;\n var w = c.rotation;\n b.styledMode || (v.color = e(c.color, v.color, a.color, \"#000000\"), \"contrast\" === v.color ? (d.contrastColor = n.getContrast(d.color || a.color), v.color = !G(r) && c.inside || 0 > r || g.stacking ? d.contrastColor : \"#000000\") : delete d.contrastColor, g.cursor && (v.cursor = g.cursor));\n var C = {\n r: c.borderRadius || 0,\n rotation: w,\n padding: c.padding,\n zIndex: 1\n };\n b.styledMode || (C.fill = c.backgroundColor, C.stroke = c.borderColor, C[\"stroke-width\"] = c.borderWidth);\n k(C, function (a, b) {\n \"undefined\" === typeof a && delete C[b];\n });\n }\n !p || l && G(t) && !!p.div === !!c.useHTML || (d.dataLabel = p = d.dataLabel && d.dataLabel.destroy(), d.dataLabels && (1 === d.dataLabels.length ? delete d.dataLabels : delete d.dataLabels[f]), f || delete d.dataLabel, m && (d.connector = d.connector.destroy(), d.connectors && (1 === d.connectors.length ? delete d.connectors : delete d.connectors[f])));\n l && G(t) && (p ? C.text = t : (d.dataLabels = d.dataLabels || [], p = d.dataLabels[f] = w ? n.text(t, 0, -9999, c.useHTML).addClass(\"highcharts-data-label\") : n.label(t, 0, -9999, c.shape, null, null, c.useHTML, null, \"data-label\"), f || (d.dataLabel = p), p.addClass(\" highcharts-data-label-color-\" + d.colorIndex + \" \" + (c.className || \"\") + (c.useHTML ? \" highcharts-tracker\" : \"\"))), p.options = c, p.attr(C), b.styledMode || p.css(v).shadow(c.shadow), p.added || p.add(u), c.textPath && !c.useHTML && (p.setTextPath(d.getDataLabelPath && d.getDataLabelPath(p) || d.graphic, c.textPath), d.dataLabelPath && !c.textPath.enabled && (d.dataLabelPath = d.dataLabelPath.destroy())), a.alignDataLabel(d, p, c, null, q));\n });\n });\n }\n A(this, \"afterDrawDataLabels\");\n }\n function t(a, b, c, d, e, f) {\n var g = this.chart,\n h = b.align,\n k = b.verticalAlign,\n l = a.box ? 0 : a.padding || 0,\n m = b.x;\n m = void 0 === m ? 0 : m;\n var n = b.y;\n n = void 0 === n ? 0 : n;\n var p = (c.x || 0) + l;\n if (0 > p) {\n \"right\" === h && 0 <= m ? (b.align = \"left\", b.inside = !0) : m -= p;\n var r = !0;\n }\n p = (c.x || 0) + d.width - l;\n p > g.plotWidth && (\"left\" === h && 0 >= m ? (b.align = \"right\", b.inside = !0) : m += g.plotWidth - p, r = !0);\n p = c.y + l;\n 0 > p && (\"bottom\" === k && 0 <= n ? (b.verticalAlign = \"top\", b.inside = !0) : n -= p, r = !0);\n p = (c.y || 0) + d.height - l;\n p > g.plotHeight && (\"top\" === k && 0 >= n ? (b.verticalAlign = \"bottom\", b.inside = !0) : n += g.plotHeight - p, r = !0);\n r && (b.x = m, b.y = n, a.placed = !f, a.align(b, void 0, e));\n return r;\n }\n function z(a, b) {\n var c = [],\n d;\n if (q(a) && !q(b)) c = a.map(function (a) {\n return n(a, b);\n });else if (q(b) && !q(a)) c = b.map(function (b) {\n return n(a, b);\n });else if (q(a) || q(b)) for (d = Math.max(a.length, b.length); d--;) c[d] = n(a[d], b[d]);else c = n(a, b);\n return c;\n }\n function C(a, b, c, d, e) {\n var g = this.chart,\n f = g.inverted,\n h = this.xAxis,\n k = h.reversed,\n l = f ? b.height / 2 : b.width / 2;\n a = (a = a.pointWidth) ? a / 2 : 0;\n b.startXPos = f ? e.x : k ? -l - a : h.width - l + a;\n b.startYPos = f ? k ? this.yAxis.height - l + a : -l - a : e.y;\n d ? \"hidden\" === b.visibility && (b.show(), b.attr({\n opacity: 0\n }).animate({\n opacity: 1\n })) : b.attr({\n opacity: 1\n }).animate({\n opacity: 0\n }, void 0, b.hide);\n g.hasRendered && (c && b.attr({\n x: b.startXPos,\n y: b.startYPos\n }), b.placed = !0);\n }\n var r = [];\n a.compose = function (a) {\n if (-1 === r.indexOf(a)) {\n var b = a.prototype;\n r.push(a);\n b.alignDataLabel = f;\n b.drawDataLabels = u;\n b.justifyDataLabel = t;\n b.setDataLabelStartPos = C;\n }\n };\n })(h || (h = {}));\n \"\";\n return h;\n });\n M(a, \"Series/Column/ColumnDataLabel.js\", [a[\"Core/Series/DataLabel.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = u.series,\n y = z.merge,\n G = z.pick,\n H;\n (function (u) {\n function q(a, e, c, h, f) {\n var k = this.chart.inverted,\n n = a.series,\n q = (n.xAxis ? n.xAxis.len : this.chart.plotSizeX) || 0;\n n = (n.yAxis ? n.yAxis.len : this.chart.plotSizeY) || 0;\n var t = a.dlBox || a.shapeArgs,\n u = G(a.below, a.plotY > G(this.translatedThreshold, n)),\n C = G(c.inside, !!this.options.stacking);\n t && (h = y(t), 0 > h.y && (h.height += h.y, h.y = 0), t = h.y + h.height - n, 0 < t && t < h.height && (h.height -= t), k && (h = {\n x: n - h.y - h.height,\n y: q - h.x - h.width,\n width: h.height,\n height: h.width\n }), C || (k ? (h.x += u ? 0 : h.width, h.width = 0) : (h.y += u ? h.height : 0, h.height = 0)));\n c.align = G(c.align, !k || C ? \"center\" : u ? \"right\" : \"left\");\n c.verticalAlign = G(c.verticalAlign, k || C ? \"middle\" : u ? \"top\" : \"bottom\");\n v.prototype.alignDataLabel.call(this, a, e, c, h, f);\n c.inside && a.contrastColor && e.css({\n color: a.contrastColor\n });\n }\n var n = [];\n u.compose = function (k) {\n a.compose(v);\n -1 === n.indexOf(k) && (n.push(k), k.prototype.alignDataLabel = q);\n };\n })(H || (H = {}));\n return H;\n });\n M(a, \"Series/Bar/BarSeries.js\", [a[\"Series/Column/ColumnSeries.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = this && this.__extends || function () {\n var a = function (v, q) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, k) {\n a.__proto__ = k;\n } || function (a, k) {\n for (var e in k) k.hasOwnProperty(e) && (a[e] = k[e]);\n };\n return a(v, q);\n };\n return function (v, q) {\n function n() {\n this.constructor = v;\n }\n a(v, q);\n v.prototype = null === q ? Object.create(q) : (n.prototype = q.prototype, new n());\n };\n }(),\n y = z.extend,\n G = z.merge;\n z = function (u) {\n function y() {\n var a = null !== u && u.apply(this, arguments) || this;\n a.data = void 0;\n a.options = void 0;\n a.points = void 0;\n return a;\n }\n v(y, u);\n y.defaultOptions = G(a.defaultOptions, {});\n return y;\n }(a);\n y(z.prototype, {\n inverted: !0\n });\n u.registerSeriesType(\"bar\", z);\n \"\";\n return z;\n });\n M(a, \"Series/Scatter/ScatterSeries.js\", [a[\"Series/Column/ColumnSeries.js\"], a[\"Series/Line/LineSeries.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F) {\n var v = this && this.__extends || function () {\n var a = function (n, k) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, c) {\n a.__proto__ = c;\n } || function (a, c) {\n for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e]);\n };\n return a(n, k);\n };\n return function (n, k) {\n function e() {\n this.constructor = n;\n }\n a(n, k);\n n.prototype = null === k ? Object.create(k) : (e.prototype = k.prototype, new e());\n };\n }(),\n G = F.addEvent,\n H = F.extend,\n A = F.merge;\n F = function (a) {\n function n() {\n var k = null !== a && a.apply(this, arguments) || this;\n k.data = void 0;\n k.options = void 0;\n k.points = void 0;\n return k;\n }\n v(n, a);\n n.prototype.applyJitter = function () {\n var a = this,\n e = this.options.jitter,\n c = this.points.length;\n e && this.points.forEach(function (h, f) {\n [\"x\", \"y\"].forEach(function (k, n) {\n var p = \"plot\" + k.toUpperCase();\n if (e[k] && !h.isNull) {\n var q = a[k + \"Axis\"];\n var v = e[k] * q.transA;\n if (q && !q.isLog) {\n var u = Math.max(0, h[p] - v);\n q = Math.min(q.len, h[p] + v);\n n = 1E4 * Math.sin(f + n * c);\n h[p] = u + (q - u) * (n - Math.floor(n));\n \"x\" === k && (h.clientX = h.plotX);\n }\n }\n });\n });\n };\n n.prototype.drawGraph = function () {\n this.options.lineWidth ? a.prototype.drawGraph.call(this) : this.graph && (this.graph = this.graph.destroy());\n };\n n.defaultOptions = A(u.defaultOptions, {\n lineWidth: 0,\n findNearestPointBy: \"xy\",\n jitter: {\n x: 0,\n y: 0\n },\n marker: {\n enabled: !0\n },\n tooltip: {\n headerFormat: '<span style=\"color:{point.color}\">\\u25cf</span> <span style=\"font-size: 10px\"> {series.name}</span><br/>',\n pointFormat: \"x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>\"\n }\n });\n return n;\n }(u);\n H(F.prototype, {\n drawTracker: a.prototype.drawTracker,\n sorted: !1,\n requireSorting: !1,\n noSharedTooltip: !0,\n trackerGroups: [\"group\", \"markerGroup\", \"dataLabelsGroup\"],\n takeOrdinalPosition: !1\n });\n G(F, \"afterTranslate\", function () {\n this.applyJitter();\n });\n z.registerSeriesType(\"scatter\", F);\n \"\";\n return F;\n });\n M(a, \"Series/CenteredUtilities.js\", [a[\"Core/Globals.js\"], a[\"Core/Series/Series.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = a.deg2rad,\n y = z.isNumber,\n G = z.pick,\n H = z.relativeLength,\n A;\n (function (a) {\n a.getCenter = function () {\n var a = this.options,\n k = this.chart,\n e = 2 * (a.slicedOffset || 0),\n c = k.plotWidth - 2 * e,\n h = k.plotHeight - 2 * e,\n f = a.center,\n q = Math.min(c, h),\n p = a.size,\n v = a.innerSize || 0;\n \"string\" === typeof p && (p = parseFloat(p));\n \"string\" === typeof v && (v = parseFloat(v));\n a = [G(f[0], \"50%\"), G(f[1], \"50%\"), G(p && 0 > p ? void 0 : a.size, \"100%\"), G(v && 0 > v ? void 0 : a.innerSize || 0, \"0%\")];\n !k.angular || this instanceof u || (a[3] = 0);\n for (f = 0; 4 > f; ++f) p = a[f], k = 2 > f || 2 === f && /%$/.test(p), a[f] = H(p, [c, h, q, a[2]][f]) + (k ? e : 0);\n a[3] > a[2] && (a[3] = a[2]);\n return a;\n };\n a.getStartAndEndRadians = function (a, k) {\n a = y(a) ? a : 0;\n k = y(k) && k > a && 360 > k - a ? k : a + 360;\n return {\n start: v * (a + -90),\n end: v * (k + -90)\n };\n };\n })(A || (A = {}));\n \"\";\n return A;\n });\n M(a, \"Series/Pie/PiePoint.js\", [a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/Series/Point.js\"], a[\"Core/Utilities.js\"]], function (a, u, z) {\n var v = this && this.__extends || function () {\n var a = function (e, c) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, c) {\n a.__proto__ = c;\n } || function (a, c) {\n for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e]);\n };\n return a(e, c);\n };\n return function (e, c) {\n function h() {\n this.constructor = e;\n }\n a(e, c);\n e.prototype = null === c ? Object.create(c) : (h.prototype = c.prototype, new h());\n };\n }(),\n y = a.setAnimation,\n G = z.addEvent,\n H = z.defined;\n a = z.extend;\n var A = z.isNumber,\n q = z.pick,\n n = z.relativeLength;\n u = function (a) {\n function e() {\n var c = null !== a && a.apply(this, arguments) || this;\n c.labelDistance = void 0;\n c.options = void 0;\n c.series = void 0;\n return c;\n }\n v(e, a);\n e.prototype.getConnectorPath = function () {\n var a = this.labelPosition,\n e = this.series.options.dataLabels,\n f = this.connectorShapes,\n k = e.connectorShape;\n f[k] && (k = f[k]);\n return k.call(this, {\n x: a.final.x,\n y: a.final.y,\n alignment: a.alignment\n }, a.connectorPosition, e);\n };\n e.prototype.getTranslate = function () {\n return this.sliced ? this.slicedTranslation : {\n translateX: 0,\n translateY: 0\n };\n };\n e.prototype.haloPath = function (a) {\n var c = this.shapeArgs;\n return this.sliced || !this.visible ? [] : this.series.chart.renderer.symbols.arc(c.x, c.y, c.r + a, c.r + a, {\n innerR: c.r - 1,\n start: c.start,\n end: c.end\n });\n };\n e.prototype.init = function () {\n var c = this;\n a.prototype.init.apply(this, arguments);\n this.name = q(this.name, \"Slice\");\n var e = function (a) {\n c.slice(\"select\" === a.type);\n };\n G(this, \"select\", e);\n G(this, \"unselect\", e);\n return this;\n };\n e.prototype.isValid = function () {\n return A(this.y) && 0 <= this.y;\n };\n e.prototype.setVisible = function (a, e) {\n var c = this,\n h = this.series,\n k = h.chart,\n n = h.options.ignoreHiddenPoint;\n e = q(e, n);\n a !== this.visible && (this.visible = this.options.visible = a = \"undefined\" === typeof a ? !this.visible : a, h.options.data[h.data.indexOf(this)] = this.options, [\"graphic\", \"dataLabel\", \"connector\", \"shadowGroup\"].forEach(function (e) {\n if (c[e]) c[e][a ? \"show\" : \"hide\"](a);\n }), this.legendItem && k.legend.colorizeItem(this, a), a || \"hover\" !== this.state || this.setState(\"\"), n && (h.isDirty = !0), e && k.redraw());\n };\n e.prototype.slice = function (a, e, f) {\n var c = this.series;\n y(f, c.chart);\n q(e, !0);\n this.sliced = this.options.sliced = H(a) ? a : !this.sliced;\n c.options.data[c.data.indexOf(this)] = this.options;\n this.graphic && this.graphic.animate(this.getTranslate());\n this.shadowGroup && this.shadowGroup.animate(this.getTranslate());\n };\n return e;\n }(u);\n a(u.prototype, {\n connectorShapes: {\n fixedOffset: function (a, e, c) {\n var h = e.breakAt;\n e = e.touchingSliceAt;\n return [[\"M\", a.x, a.y], c.softConnector ? [\"C\", a.x + (\"left\" === a.alignment ? -5 : 5), a.y, 2 * h.x - e.x, 2 * h.y - e.y, h.x, h.y] : [\"L\", h.x, h.y], [\"L\", e.x, e.y]];\n },\n straight: function (a, e) {\n e = e.touchingSliceAt;\n return [[\"M\", a.x, a.y], [\"L\", e.x, e.y]];\n },\n crookedLine: function (a, e, c) {\n e = e.touchingSliceAt;\n var h = this.series,\n f = h.center[0],\n k = h.chart.plotWidth,\n p = h.chart.plotLeft;\n h = a.alignment;\n var q = this.shapeArgs.r;\n c = n(c.crookDistance, 1);\n k = \"left\" === h ? f + q + (k + p - f - q) * (1 - c) : p + (f - q) * c;\n c = [\"L\", k, a.y];\n f = !0;\n if (\"left\" === h ? k > a.x || k < e.x : k < a.x || k > e.x) f = !1;\n a = [[\"M\", a.x, a.y]];\n f && a.push(c);\n a.push([\"L\", e.x, e.y]);\n return a;\n }\n }\n });\n return u;\n });\n M(a, \"Series/Pie/PieSeries.js\", [a[\"Series/CenteredUtilities.js\"], a[\"Series/Column/ColumnSeries.js\"], a[\"Core/Globals.js\"], a[\"Core/Legend/LegendSymbol.js\"], a[\"Series/Pie/PiePoint.js\"], a[\"Core/Series/Series.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Renderer/SVG/Symbols.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y, G, H, A, q) {\n var n = this && this.__extends || function () {\n var a = function (c, e) {\n a = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (a, c) {\n a.__proto__ = c;\n } || function (a, c) {\n for (var e in c) c.hasOwnProperty(e) && (a[e] = c[e]);\n };\n return a(c, e);\n };\n return function (c, e) {\n function f() {\n this.constructor = c;\n }\n a(c, e);\n c.prototype = null === e ? Object.create(e) : (f.prototype = e.prototype, new f());\n };\n }(),\n k = a.getStartAndEndRadians;\n z = z.noop;\n var e = q.clamp,\n c = q.extend,\n h = q.fireEvent,\n f = q.merge,\n v = q.pick,\n p = q.relativeLength;\n q = function (a) {\n function c() {\n var c = null !== a && a.apply(this, arguments) || this;\n c.center = void 0;\n c.data = void 0;\n c.maxLabelDistance = void 0;\n c.options = void 0;\n c.points = void 0;\n return c;\n }\n n(c, a);\n c.prototype.animate = function (a) {\n var c = this,\n e = c.points,\n f = c.startAngleRad;\n a || e.forEach(function (a) {\n var b = a.graphic,\n d = a.shapeArgs;\n b && d && (b.attr({\n r: v(a.startR, c.center && c.center[3] / 2),\n start: f,\n end: f\n }), b.animate({\n r: d.r,\n start: d.start,\n end: d.end\n }, c.options.animation));\n });\n };\n c.prototype.drawEmpty = function () {\n var a = this.startAngleRad,\n c = this.endAngleRad,\n e = this.options;\n if (0 === this.total && this.center) {\n var f = this.center[0];\n var b = this.center[1];\n this.graph || (this.graph = this.chart.renderer.arc(f, b, this.center[1] / 2, 0, a, c).addClass(\"highcharts-empty-series\").add(this.group));\n this.graph.attr({\n d: A.arc(f, b, this.center[2] / 2, 0, {\n start: a,\n end: c,\n innerR: this.center[3] / 2\n })\n });\n this.chart.styledMode || this.graph.attr({\n \"stroke-width\": e.borderWidth,\n fill: e.fillColor || \"none\",\n stroke: e.color || \"#cccccc\"\n });\n } else this.graph && (this.graph = this.graph.destroy());\n };\n c.prototype.drawPoints = function () {\n var a = this.chart.renderer;\n this.points.forEach(function (c) {\n c.graphic && c.hasNewShapeType() && (c.graphic = c.graphic.destroy());\n c.graphic || (c.graphic = a[c.shapeType](c.shapeArgs).add(c.series.group), c.delayedRendering = !0);\n });\n };\n c.prototype.generatePoints = function () {\n a.prototype.generatePoints.call(this);\n this.updateTotals();\n };\n c.prototype.getX = function (a, c, f) {\n var h = this.center,\n b = this.radii ? this.radii[f.index] || 0 : h[2] / 2;\n a = Math.asin(e((a - h[1]) / (b + f.labelDistance), -1, 1));\n return h[0] + (c ? -1 : 1) * Math.cos(a) * (b + f.labelDistance) + (0 < f.labelDistance ? (c ? -1 : 1) * this.options.dataLabels.padding : 0);\n };\n c.prototype.hasData = function () {\n return !!this.processedXData.length;\n };\n c.prototype.redrawPoints = function () {\n var a = this,\n c = a.chart,\n e = c.renderer,\n h = a.options.shadow,\n b,\n g,\n d,\n k;\n this.drawEmpty();\n !h || a.shadowGroup || c.styledMode || (a.shadowGroup = e.g(\"shadow\").attr({\n zIndex: -1\n }).add(a.group));\n a.points.forEach(function (l) {\n var m = {};\n g = l.graphic;\n if (!l.isNull && g) {\n var n = void 0;\n k = l.shapeArgs;\n b = l.getTranslate();\n c.styledMode || (n = l.shadowGroup, h && !n && (n = l.shadowGroup = e.g(\"shadow\").add(a.shadowGroup)), n && n.attr(b), d = a.pointAttribs(l, l.selected && \"select\"));\n l.delayedRendering ? (g.setRadialReference(a.center).attr(k).attr(b), c.styledMode || g.attr(d).attr({\n \"stroke-linejoin\": \"round\"\n }).shadow(h, n), l.delayedRendering = !1) : (g.setRadialReference(a.center), c.styledMode || f(!0, m, d), f(!0, m, k, b), g.animate(m));\n g.attr({\n visibility: l.visible ? \"inherit\" : \"hidden\"\n });\n g.addClass(l.getClassName(), !0);\n } else g && (l.graphic = g.destroy());\n });\n };\n c.prototype.sortByAngle = function (a, c) {\n a.sort(function (a, e) {\n return \"undefined\" !== typeof a.angle && (e.angle - a.angle) * c;\n });\n };\n c.prototype.translate = function (a) {\n this.generatePoints();\n var c = this.options,\n e = c.slicedOffset,\n f = e + (c.borderWidth || 0),\n b = k(c.startAngle, c.endAngle),\n g = this.startAngleRad = b.start;\n b = (this.endAngleRad = b.end) - g;\n var d = this.points,\n m = c.dataLabels.distance;\n c = c.ignoreHiddenPoint;\n var n = d.length,\n q,\n t = 0;\n a || (this.center = a = this.getCenter());\n for (q = 0; q < n; q++) {\n var u = d[q];\n var w = g + t * b;\n !u.isValid() || c && !u.visible || (t += u.percentage / 100);\n var y = g + t * b;\n var B = {\n x: a[0],\n y: a[1],\n r: a[2] / 2,\n innerR: a[3] / 2,\n start: Math.round(1E3 * w) / 1E3,\n end: Math.round(1E3 * y) / 1E3\n };\n u.shapeType = \"arc\";\n u.shapeArgs = B;\n u.labelDistance = v(u.options.dataLabels && u.options.dataLabels.distance, m);\n u.labelDistance = p(u.labelDistance, B.r);\n this.maxLabelDistance = Math.max(this.maxLabelDistance || 0, u.labelDistance);\n y = (y + w) / 2;\n y > 1.5 * Math.PI ? y -= 2 * Math.PI : y < -Math.PI / 2 && (y += 2 * Math.PI);\n u.slicedTranslation = {\n translateX: Math.round(Math.cos(y) * e),\n translateY: Math.round(Math.sin(y) * e)\n };\n B = Math.cos(y) * a[2] / 2;\n var A = Math.sin(y) * a[2] / 2;\n u.tooltipPos = [a[0] + .7 * B, a[1] + .7 * A];\n u.half = y < -Math.PI / 2 || y > Math.PI / 2 ? 1 : 0;\n u.angle = y;\n w = Math.min(f, u.labelDistance / 5);\n u.labelPosition = {\n natural: {\n x: a[0] + B + Math.cos(y) * u.labelDistance,\n y: a[1] + A + Math.sin(y) * u.labelDistance\n },\n \"final\": {},\n alignment: 0 > u.labelDistance ? \"center\" : u.half ? \"right\" : \"left\",\n connectorPosition: {\n breakAt: {\n x: a[0] + B + Math.cos(y) * w,\n y: a[1] + A + Math.sin(y) * w\n },\n touchingSliceAt: {\n x: a[0] + B,\n y: a[1] + A\n }\n }\n };\n }\n h(this, \"afterTranslate\");\n };\n c.prototype.updateTotals = function () {\n var a = this.points,\n c = a.length,\n e = this.options.ignoreHiddenPoint,\n f,\n b = 0;\n for (f = 0; f < c; f++) {\n var g = a[f];\n !g.isValid() || e && !g.visible || (b += g.y);\n }\n this.total = b;\n for (f = 0; f < c; f++) g = a[f], g.percentage = 0 < b && (g.visible || !e) ? g.y / b * 100 : 0, g.total = b;\n };\n c.defaultOptions = f(G.defaultOptions, {\n center: [null, null],\n clip: !1,\n colorByPoint: !0,\n dataLabels: {\n allowOverlap: !0,\n connectorPadding: 5,\n connectorShape: \"fixedOffset\",\n crookDistance: \"70%\",\n distance: 30,\n enabled: !0,\n formatter: function () {\n return this.point.isNull ? void 0 : this.point.name;\n },\n softConnector: !0,\n x: 0\n },\n fillColor: void 0,\n ignoreHiddenPoint: !0,\n inactiveOtherPoints: !0,\n legendType: \"point\",\n marker: null,\n size: null,\n showInLegend: !1,\n slicedOffset: 10,\n stickyTracking: !1,\n tooltip: {\n followPointer: !0\n },\n borderColor: \"#ffffff\",\n borderWidth: 1,\n lineWidth: void 0,\n states: {\n hover: {\n brightness: .1\n }\n }\n });\n return c;\n }(G);\n c(q.prototype, {\n axisTypes: [],\n directTouch: !0,\n drawGraph: void 0,\n drawLegendSymbol: F.drawRectangle,\n drawTracker: u.prototype.drawTracker,\n getCenter: a.getCenter,\n getSymbol: z,\n isCartesian: !1,\n noSharedTooltip: !0,\n pointAttribs: u.prototype.pointAttribs,\n pointClass: y,\n requireSorting: !1,\n searchPoint: z,\n trackerGroups: [\"group\", \"dataLabelsGroup\"]\n });\n H.registerSeriesType(\"pie\", q);\n \"\";\n return q;\n });\n M(a, \"Series/Pie/PieDataLabel.js\", [a[\"Core/Series/DataLabel.js\"], a[\"Core/Globals.js\"], a[\"Core/Renderer/RendererUtilities.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Core/Utilities.js\"]], function (a, u, z, F, y) {\n var v = u.noop,\n H = z.distribute,\n A = F.series,\n q = y.arrayMax,\n n = y.clamp,\n k = y.defined,\n e = y.merge,\n c = y.pick,\n h = y.relativeLength,\n f;\n (function (f) {\n function p() {\n var a = this,\n f = a.data,\n b = a.chart,\n g = a.options.dataLabels || {},\n d = g.connectorPadding,\n h = b.plotWidth,\n n = b.plotHeight,\n p = b.plotLeft,\n v = Math.round(b.chartWidth / 3),\n t = a.center,\n u = t[2] / 2,\n w = t[1],\n C = [[], []],\n y = [0, 0, 0, 0],\n B = a.dataLabelPositioners,\n z,\n F,\n G,\n J,\n M,\n E,\n T,\n N,\n V,\n W,\n X,\n R;\n a.visible && (g.enabled || a._hasPointLabels) && (f.forEach(function (a) {\n a.dataLabel && a.visible && a.dataLabel.shortened && (a.dataLabel.attr({\n width: \"auto\"\n }).css({\n width: \"auto\",\n textOverflow: \"clip\"\n }), a.dataLabel.shortened = !1);\n }), A.prototype.drawDataLabels.apply(a), f.forEach(function (a) {\n a.dataLabel && (a.visible ? (C[a.half].push(a), a.dataLabel._pos = null, !k(g.style.width) && !k(a.options.dataLabels && a.options.dataLabels.style && a.options.dataLabels.style.width) && a.dataLabel.getBBox().width > v && (a.dataLabel.css({\n width: Math.round(.7 * v) + \"px\"\n }), a.dataLabel.shortened = !0)) : (a.dataLabel = a.dataLabel.destroy(), a.dataLabels && 1 === a.dataLabels.length && delete a.dataLabels));\n }), C.forEach(function (e, f) {\n var l = e.length,\n m = [],\n r;\n if (l) {\n a.sortByAngle(e, f - .5);\n if (0 < a.maxLabelDistance) {\n var q = Math.max(0, w - u - a.maxLabelDistance);\n var v = Math.min(w + u + a.maxLabelDistance, b.plotHeight);\n e.forEach(function (a) {\n 0 < a.labelDistance && a.dataLabel && (a.top = Math.max(0, w - u - a.labelDistance), a.bottom = Math.min(w + u + a.labelDistance, b.plotHeight), r = a.dataLabel.getBBox().height || 21, a.distributeBox = {\n target: a.labelPosition.natural.y - a.top + r / 2,\n size: r,\n rank: a.y\n }, m.push(a.distributeBox));\n });\n q = v + r - q;\n H(m, q, q / 5);\n }\n for (X = 0; X < l; X++) {\n z = e[X];\n E = z.labelPosition;\n J = z.dataLabel;\n W = !1 === z.visible ? \"hidden\" : \"inherit\";\n V = q = E.natural.y;\n m && k(z.distributeBox) && (\"undefined\" === typeof z.distributeBox.pos ? W = \"hidden\" : (T = z.distributeBox.size, V = B.radialDistributionY(z)));\n delete z.positionIndex;\n if (g.justify) N = B.justify(z, u, t);else switch (g.alignTo) {\n case \"connectors\":\n N = B.alignToConnectors(e, f, h, p);\n break;\n case \"plotEdges\":\n N = B.alignToPlotEdges(J, f, h, p);\n break;\n default:\n N = B.radialDistributionX(a, z, V, q);\n }\n J._attr = {\n visibility: W,\n align: E.alignment\n };\n R = z.options.dataLabels || {};\n J._pos = {\n x: N + c(R.x, g.x) + ({\n left: d,\n right: -d\n }[E.alignment] || 0),\n y: V + c(R.y, g.y) - 10\n };\n E.final.x = N;\n E.final.y = V;\n c(g.crop, !0) && (M = J.getBBox().width, q = null, N - M < d && 1 === f ? (q = Math.round(M - N + d), y[3] = Math.max(q, y[3])) : N + M > h - d && 0 === f && (q = Math.round(N + M - h + d), y[1] = Math.max(q, y[1])), 0 > V - T / 2 ? y[0] = Math.max(Math.round(-V + T / 2), y[0]) : V + T / 2 > n && (y[2] = Math.max(Math.round(V + T / 2 - n), y[2])), J.sideOverflow = q);\n }\n }\n }), 0 === q(y) || this.verifyDataLabelOverflow(y)) && (this.placeDataLabels(), this.points.forEach(function (d) {\n R = e(g, d.options.dataLabels);\n if (F = c(R.connectorWidth, 1)) {\n var f;\n G = d.connector;\n if ((J = d.dataLabel) && J._pos && d.visible && 0 < d.labelDistance) {\n W = J._attr.visibility;\n if (f = !G) d.connector = G = b.renderer.path().addClass(\"highcharts-data-label-connector highcharts-color-\" + d.colorIndex + (d.className ? \" \" + d.className : \"\")).add(a.dataLabelsGroup), b.styledMode || G.attr({\n \"stroke-width\": F,\n stroke: R.connectorColor || d.color || \"#666666\"\n });\n G[f ? \"attr\" : \"animate\"]({\n d: d.getConnectorPath()\n });\n G.attr(\"visibility\", W);\n } else G && (d.connector = G.destroy());\n }\n }));\n }\n function u() {\n this.points.forEach(function (a) {\n var c = a.dataLabel,\n b;\n c && a.visible && ((b = c._pos) ? (c.sideOverflow && (c._attr.width = Math.max(c.getBBox().width - c.sideOverflow, 0), c.css({\n width: c._attr.width + \"px\",\n textOverflow: (this.options.dataLabels.style || {}).textOverflow || \"ellipsis\"\n }), c.shortened = !0), c.attr(c._attr), c[c.moved ? \"animate\" : \"attr\"](b), c.moved = !0) : c && c.attr({\n y: -9999\n }));\n delete a.distributeBox;\n }, this);\n }\n function t(a) {\n var c = this.center,\n b = this.options,\n e = b.center,\n d = b.minSize || 80,\n f = null !== b.size;\n if (!f) {\n if (null !== e[0]) var k = Math.max(c[2] - Math.max(a[1], a[3]), d);else k = Math.max(c[2] - a[1] - a[3], d), c[0] += (a[3] - a[1]) / 2;\n null !== e[1] ? k = n(k, d, c[2] - Math.max(a[0], a[2])) : (k = n(k, d, c[2] - a[0] - a[2]), c[1] += (a[0] - a[2]) / 2);\n k < c[2] ? (c[2] = k, c[3] = Math.min(h(b.innerSize || 0, k), k), this.translate(c), this.drawDataLabels && this.drawDataLabels()) : f = !0;\n }\n return f;\n }\n var w = [],\n C = {\n radialDistributionY: function (a) {\n return a.top + a.distributeBox.pos;\n },\n radialDistributionX: function (a, c, b, e) {\n return a.getX(b < c.top + 2 || b > c.bottom - 2 ? e : b, c.half, c);\n },\n justify: function (a, c, b) {\n return b[0] + (a.half ? -1 : 1) * (c + a.labelDistance);\n },\n alignToPlotEdges: function (a, c, b, e) {\n a = a.getBBox().width;\n return c ? a + e : b - a - e;\n },\n alignToConnectors: function (a, c, b, e) {\n var d = 0,\n g;\n a.forEach(function (a) {\n g = a.dataLabel.getBBox().width;\n g > d && (d = g);\n });\n return c ? d + e : b - d - e;\n }\n };\n f.compose = function (c) {\n a.compose(A);\n -1 === w.indexOf(c) && (w.push(c), c = c.prototype, c.dataLabelPositioners = C, c.alignDataLabel = v, c.drawDataLabels = p, c.placeDataLabels = u, c.verifyDataLabelOverflow = t);\n };\n })(f || (f = {}));\n return f;\n });\n M(a, \"Extensions/OverlappingDataLabels.js\", [a[\"Core/Chart/Chart.js\"], a[\"Core/Utilities.js\"]], function (a, u) {\n function v(a, k) {\n var e = !1;\n if (a) {\n var c = a.newOpacity;\n a.oldOpacity !== c && (a.alignAttr && a.placed ? (a[c ? \"removeClass\" : \"addClass\"](\"highcharts-data-label-hidden\"), e = !0, a.alignAttr.opacity = c, a[a.isOld ? \"animate\" : \"attr\"](a.alignAttr, null, function () {\n k.styledMode || a.css({\n pointerEvents: c ? \"auto\" : \"none\"\n });\n }), y(k, \"afterHideOverlappingLabel\")) : a.attr({\n opacity: c\n }));\n a.isOld = !0;\n }\n return e;\n }\n var F = u.addEvent,\n y = u.fireEvent,\n G = u.isArray,\n H = u.isNumber,\n A = u.objectEach,\n q = u.pick;\n F(a, \"render\", function () {\n var a = this,\n k = [];\n (this.labelCollectors || []).forEach(function (a) {\n k = k.concat(a());\n });\n (this.yAxis || []).forEach(function (a) {\n a.stacking && a.options.stackLabels && !a.options.stackLabels.allowOverlap && A(a.stacking.stacks, function (a) {\n A(a, function (a) {\n a.label && \"hidden\" !== a.label.visibility && k.push(a.label);\n });\n });\n });\n (this.series || []).forEach(function (e) {\n var c = e.options.dataLabels;\n e.visible && (!1 !== c.enabled || e._hasPointLabels) && (c = function (c) {\n return c.forEach(function (c) {\n c.visible && (G(c.dataLabels) ? c.dataLabels : c.dataLabel ? [c.dataLabel] : []).forEach(function (e) {\n var f = e.options;\n e.labelrank = q(f.labelrank, c.labelrank, c.shapeArgs && c.shapeArgs.height);\n f.allowOverlap ? (e.oldOpacity = e.opacity, e.newOpacity = 1, v(e, a)) : k.push(e);\n });\n });\n }, c(e.nodes || []), c(e.points));\n });\n this.hideOverlappingLabels(k);\n });\n a.prototype.hideOverlappingLabels = function (a) {\n var k = this,\n e = a.length,\n c = k.renderer,\n h,\n f,\n n,\n p = !1;\n var q = function (a) {\n var e,\n f = a.box ? 0 : a.padding || 0,\n b = e = 0,\n g;\n if (a && (!a.alignAttr || a.placed)) {\n var d = a.alignAttr || {\n x: a.attr(\"x\"),\n y: a.attr(\"y\")\n };\n var h = a.parentGroup;\n a.width || (e = a.getBBox(), a.width = e.width, a.height = e.height, e = c.fontMetrics(null, a.element).h);\n var k = a.width - 2 * f;\n (g = {\n left: \"0\",\n center: \"0.5\",\n right: \"1\"\n }[a.alignValue]) ? b = +g * k : H(a.x) && Math.round(a.x) !== a.translateX && (b = a.x - a.translateX);\n return {\n x: d.x + (h.translateX || 0) + f - (b || 0),\n y: d.y + (h.translateY || 0) + f - e,\n width: a.width - 2 * f,\n height: a.height - 2 * f\n };\n }\n };\n for (f = 0; f < e; f++) if (h = a[f]) h.oldOpacity = h.opacity, h.newOpacity = 1, h.absoluteBox = q(h);\n a.sort(function (a, c) {\n return (c.labelrank || 0) - (a.labelrank || 0);\n });\n for (f = 0; f < e; f++) {\n var t = (q = a[f]) && q.absoluteBox;\n for (h = f + 1; h < e; ++h) {\n var u = (n = a[h]) && n.absoluteBox;\n !t || !u || q === n || 0 === q.newOpacity || 0 === n.newOpacity || u.x >= t.x + t.width || u.x + u.width <= t.x || u.y >= t.y + t.height || u.y + u.height <= t.y || ((q.labelrank < n.labelrank ? q : n).newOpacity = 0);\n }\n }\n a.forEach(function (a) {\n v(a, k) && (p = !0);\n });\n p && y(k, \"afterHideAllOverlappingLabels\");\n };\n });\n M(a, \"Core/Responsive.js\", [a[\"Core/Utilities.js\"]], function (a) {\n var v = a.extend,\n z = a.find,\n F = a.isArray,\n y = a.isObject,\n G = a.merge,\n H = a.objectEach,\n A = a.pick,\n q = a.splat,\n n = a.uniqueKey,\n k;\n (function (a) {\n var c = [];\n a.compose = function (a) {\n -1 === c.indexOf(a) && (c.push(a), v(a.prototype, e.prototype));\n return a;\n };\n var e = function () {\n function a() {}\n a.prototype.currentOptions = function (a) {\n function c(a, f, h, k) {\n var b;\n H(a, function (a, d) {\n if (!k && -1 < e.collectionsWithUpdate.indexOf(d) && f[d]) for (a = q(a), h[d] = [], b = 0; b < Math.max(a.length, f[d].length); b++) f[d][b] && (void 0 === a[b] ? h[d][b] = f[d][b] : (h[d][b] = {}, c(a[b], f[d][b], h[d][b], k + 1)));else y(a) ? (h[d] = F(a) ? [] : {}, c(a, f[d] || {}, h[d], k + 1)) : h[d] = \"undefined\" === typeof f[d] ? null : f[d];\n });\n }\n var e = this,\n f = {};\n c(a, this.options, f, 0);\n return f;\n };\n a.prototype.matchResponsiveRule = function (a, c) {\n var e = a.condition;\n (e.callback || function () {\n return this.chartWidth <= A(e.maxWidth, Number.MAX_VALUE) && this.chartHeight <= A(e.maxHeight, Number.MAX_VALUE) && this.chartWidth >= A(e.minWidth, 0) && this.chartHeight >= A(e.minHeight, 0);\n }).call(this) && c.push(a._id);\n };\n a.prototype.setResponsive = function (a, c) {\n var e = this,\n f = this.options.responsive,\n h = this.currentResponsive,\n k = [];\n !c && f && f.rules && f.rules.forEach(function (a) {\n \"undefined\" === typeof a._id && (a._id = n());\n e.matchResponsiveRule(a, k);\n }, this);\n c = G.apply(void 0, k.map(function (a) {\n return z((f || {}).rules || [], function (c) {\n return c._id === a;\n });\n }).map(function (a) {\n return a && a.chartOptions;\n }));\n c.isResponsiveOptions = !0;\n k = k.toString() || void 0;\n k !== (h && h.ruleIds) && (h && this.update(h.undoOptions, a, !0), k ? (h = this.currentOptions(c), h.isResponsiveOptions = !0, this.currentResponsive = {\n ruleIds: k,\n mergedOptions: c,\n undoOptions: h\n }, this.update(c, a, !0)) : this.currentResponsive = void 0);\n };\n return a;\n }();\n })(k || (k = {}));\n \"\";\n \"\";\n return k;\n });\n M(a, \"masters/highcharts.src.js\", [a[\"Core/Globals.js\"], a[\"Core/Utilities.js\"], a[\"Core/DefaultOptions.js\"], a[\"Core/Animation/Fx.js\"], a[\"Core/Animation/AnimationUtilities.js\"], a[\"Core/Renderer/HTML/AST.js\"], a[\"Core/FormatUtilities.js\"], a[\"Core/Renderer/RendererUtilities.js\"], a[\"Core/Renderer/SVG/SVGElement.js\"], a[\"Core/Renderer/SVG/SVGRenderer.js\"], a[\"Core/Renderer/HTML/HTMLElement.js\"], a[\"Core/Renderer/HTML/HTMLRenderer.js\"], a[\"Core/Axis/Axis.js\"], a[\"Core/Axis/DateTimeAxis.js\"], a[\"Core/Axis/LogarithmicAxis.js\"], a[\"Core/Axis/PlotLineOrBand/PlotLineOrBand.js\"], a[\"Core/Axis/Tick.js\"], a[\"Core/Tooltip.js\"], a[\"Core/Series/Point.js\"], a[\"Core/Pointer.js\"], a[\"Core/MSPointer.js\"], a[\"Core/Legend/Legend.js\"], a[\"Core/Chart/Chart.js\"], a[\"Core/Series/Series.js\"], a[\"Core/Series/SeriesRegistry.js\"], a[\"Series/Column/ColumnSeries.js\"], a[\"Series/Column/ColumnDataLabel.js\"], a[\"Series/Pie/PieSeries.js\"], a[\"Series/Pie/PieDataLabel.js\"], a[\"Core/Series/DataLabel.js\"], a[\"Core/Responsive.js\"], a[\"Core/Color/Color.js\"], a[\"Core/Time.js\"]], function (a, u, z, F, y, G, H, A, q, n, k, e, c, h, f, w, p, B, t, J, C, r, l, b, g, d, m, D, x, I, M, S, O) {\n a.animate = y.animate;\n a.animObject = y.animObject;\n a.getDeferredAnimation = y.getDeferredAnimation;\n a.setAnimation = y.setAnimation;\n a.stop = y.stop;\n a.timers = F.timers;\n a.AST = G;\n a.Axis = c;\n a.Chart = l;\n a.chart = l.chart;\n a.Fx = F;\n a.Legend = r;\n a.PlotLineOrBand = w;\n a.Point = t;\n a.Pointer = C.isRequired() ? C : J;\n a.Series = b;\n a.SVGElement = q;\n a.SVGRenderer = n;\n a.Tick = p;\n a.Time = O;\n a.Tooltip = B;\n a.Color = S;\n a.color = S.parse;\n e.compose(n);\n k.compose(q);\n a.defaultOptions = z.defaultOptions;\n a.getOptions = z.getOptions;\n a.time = z.defaultTime;\n a.setOptions = z.setOptions;\n a.dateFormat = H.dateFormat;\n a.format = H.format;\n a.numberFormat = H.numberFormat;\n a.addEvent = u.addEvent;\n a.arrayMax = u.arrayMax;\n a.arrayMin = u.arrayMin;\n a.attr = u.attr;\n a.clearTimeout = u.clearTimeout;\n a.correctFloat = u.correctFloat;\n a.createElement = u.createElement;\n a.css = u.css;\n a.defined = u.defined;\n a.destroyObjectProperties = u.destroyObjectProperties;\n a.discardElement = u.discardElement;\n a.distribute = A.distribute;\n a.erase = u.erase;\n a.error = u.error;\n a.extend = u.extend;\n a.extendClass = u.extendClass;\n a.find = u.find;\n a.fireEvent = u.fireEvent;\n a.getMagnitude = u.getMagnitude;\n a.getStyle = u.getStyle;\n a.inArray = u.inArray;\n a.isArray = u.isArray;\n a.isClass = u.isClass;\n a.isDOMElement = u.isDOMElement;\n a.isFunction = u.isFunction;\n a.isNumber = u.isNumber;\n a.isObject = u.isObject;\n a.isString = u.isString;\n a.keys = u.keys;\n a.merge = u.merge;\n a.normalizeTickInterval = u.normalizeTickInterval;\n a.objectEach = u.objectEach;\n a.offset = u.offset;\n a.pad = u.pad;\n a.pick = u.pick;\n a.pInt = u.pInt;\n a.relativeLength = u.relativeLength;\n a.removeEvent = u.removeEvent;\n a.seriesType = g.seriesType;\n a.splat = u.splat;\n a.stableSort = u.stableSort;\n a.syncTimeout = u.syncTimeout;\n a.timeUnits = u.timeUnits;\n a.uniqueKey = u.uniqueKey;\n a.useSerialIds = u.useSerialIds;\n a.wrap = u.wrap;\n m.compose(d);\n I.compose(b);\n h.compose(c);\n f.compose(c);\n x.compose(D);\n w.compose(c);\n M.compose(l);\n return a;\n });\n a[\"masters/highcharts.src.js\"]._modules = a;\n return a[\"masters/highcharts.src.js\"];\n});","/*!\n * clipboard.js v1.5.15\n * https://zenorocha.github.io/clipboard.js\n *\n * Licensed MIT © Zeno Rocha\n */\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var t;t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,t.Clipboard=e()}}(function(){var e,t,n;return function e(t,n,i){function o(a,c){if(!n[a]){if(!t[a]){var l=\"function\"==typeof require&&require;if(!c&&l)return l(a,!0);if(r)return r(a,!0);var s=new Error(\"Cannot find module '\"+a+\"'\");throw s.code=\"MODULE_NOT_FOUND\",s}var u=n[a]={exports:{}};t[a][0].call(u.exports,function(e){var n=t[a][1][e];return o(n?n:e)},u,u.exports,e,t,n,i)}return n[a].exports}for(var r=\"function\"==typeof require&&require,a=0;a<i.length;a++)o(i[a]);return o}({1:[function(e,t,n){function i(e,t){for(;e&&e!==document;){if(e.matches(t))return e;e=e.parentNode}}if(Element&&!Element.prototype.matches){var o=Element.prototype;o.matches=o.matchesSelector||o.mozMatchesSelector||o.msMatchesSelector||o.oMatchesSelector||o.webkitMatchesSelector}t.exports=i},{}],2:[function(e,t,n){function i(e,t,n,i,r){var a=o.apply(this,arguments);return e.addEventListener(n,a,r),{destroy:function(){e.removeEventListener(n,a,r)}}}function o(e,t,n,i){return function(n){n.delegateTarget=r(n.target,t),n.delegateTarget&&i.call(e,n)}}var r=e(\"./closest\");t.exports=i},{\"./closest\":1}],3:[function(e,t,n){n.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},n.nodeList=function(e){var t=Object.prototype.toString.call(e);return void 0!==e&&(\"[object NodeList]\"===t||\"[object HTMLCollection]\"===t)&&\"length\"in e&&(0===e.length||n.node(e[0]))},n.string=function(e){return\"string\"==typeof e||e instanceof String},n.fn=function(e){var t=Object.prototype.toString.call(e);return\"[object Function]\"===t}},{}],4:[function(e,t,n){function i(e,t,n){if(!e&&!t&&!n)throw new Error(\"Missing required arguments\");if(!c.string(t))throw new TypeError(\"Second argument must be a String\");if(!c.fn(n))throw new TypeError(\"Third argument must be a Function\");if(c.node(e))return o(e,t,n);if(c.nodeList(e))return r(e,t,n);if(c.string(e))return a(e,t,n);throw new TypeError(\"First argument must be a String, HTMLElement, HTMLCollection, or NodeList\")}function o(e,t,n){return e.addEventListener(t,n),{destroy:function(){e.removeEventListener(t,n)}}}function r(e,t,n){return Array.prototype.forEach.call(e,function(e){e.addEventListener(t,n)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(t,n)})}}}function a(e,t,n){return l(document.body,e,t,n)}var c=e(\"./is\"),l=e(\"delegate\");t.exports=i},{\"./is\":3,delegate:2}],5:[function(e,t,n){function i(e){var t;if(\"SELECT\"===e.nodeName)e.focus(),t=e.value;else if(\"INPUT\"===e.nodeName||\"TEXTAREA\"===e.nodeName)e.focus(),e.setSelectionRange(0,e.value.length),t=e.value;else{e.hasAttribute(\"contenteditable\")&&e.focus();var n=window.getSelection(),i=document.createRange();i.selectNodeContents(e),n.removeAllRanges(),n.addRange(i),t=n.toString()}return t}t.exports=i},{}],6:[function(e,t,n){function i(){}i.prototype={on:function(e,t,n){var i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){function i(){o.off(e,i),t.apply(n,arguments)}var o=this;return i._=t,this.on(e,i,n)},emit:function(e){var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),i=0,o=n.length;for(i;i<o;i++)n[i].fn.apply(n[i].ctx,t);return this},off:function(e,t){var n=this.e||(this.e={}),i=n[e],o=[];if(i&&t)for(var r=0,a=i.length;r<a;r++)i[r].fn!==t&&i[r].fn._!==t&&o.push(i[r]);return o.length?n[e]=o:delete n[e],this}},t.exports=i},{}],7:[function(t,n,i){!function(o,r){if(\"function\"==typeof e&&e.amd)e([\"module\",\"select\"],r);else if(\"undefined\"!=typeof i)r(n,t(\"select\"));else{var a={exports:{}};r(a,o.select),o.clipboardAction=a.exports}}(this,function(e,t){\"use strict\";function n(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}var o=n(t),r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),c=function(){function e(t){i(this,e),this.resolveOptions(t),this.initSelection()}return a(e,[{key:\"resolveOptions\",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=\"\"}},{key:\"initSelection\",value:function e(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:\"selectFake\",value:function e(){var t=this,n=\"rtl\"==document.documentElement.getAttribute(\"dir\");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=document.body.addEventListener(\"click\",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement(\"textarea\"),this.fakeElem.style.fontSize=\"12pt\",this.fakeElem.style.border=\"0\",this.fakeElem.style.padding=\"0\",this.fakeElem.style.margin=\"0\",this.fakeElem.style.position=\"absolute\",this.fakeElem.style[n?\"right\":\"left\"]=\"-9999px\";var i=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.addEventListener(\"focus\",window.scrollTo(0,i)),this.fakeElem.style.top=i+\"px\",this.fakeElem.setAttribute(\"readonly\",\"\"),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:\"removeFake\",value:function e(){this.fakeHandler&&(document.body.removeEventListener(\"click\",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)}},{key:\"selectTarget\",value:function e(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:\"copyText\",value:function e(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:\"handleResult\",value:function e(t){this.emitter.emit(t?\"success\":\"error\",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:\"clearSelection\",value:function e(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()}},{key:\"destroy\",value:function e(){this.removeFake()}},{key:\"action\",set:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"copy\";if(this._action=t,\"copy\"!==this._action&&\"cut\"!==this._action)throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"')},get:function e(){return this._action}},{key:\"target\",set:function e(t){if(void 0!==t){if(!t||\"object\"!==(\"undefined\"==typeof t?\"undefined\":r(t))||1!==t.nodeType)throw new Error('Invalid \"target\" value, use a valid Element');if(\"copy\"===this.action&&t.hasAttribute(\"disabled\"))throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');if(\"cut\"===this.action&&(t.hasAttribute(\"readonly\")||t.hasAttribute(\"disabled\")))throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');this._target=t}},get:function e(){return this._target}}]),e}();e.exports=c})},{select:5}],8:[function(t,n,i){!function(o,r){if(\"function\"==typeof e&&e.amd)e([\"module\",\"./clipboard-action\",\"tiny-emitter\",\"good-listener\"],r);else if(\"undefined\"!=typeof i)r(n,t(\"./clipboard-action\"),t(\"tiny-emitter\"),t(\"good-listener\"));else{var a={exports:{}};r(a,o.clipboardAction,o.tinyEmitter,o.goodListener),o.clipboard=a.exports}}(this,function(e,t,n,i){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function a(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t}function c(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n=\"data-clipboard-\"+e;if(t.hasAttribute(n))return t.getAttribute(n)}var s=o(t),u=o(n),f=o(i),d=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),h=function(e){function t(e,n){r(this,t);var i=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return i.resolveOptions(n),i.listenClick(e),i}return c(t,e),d(t,[{key:\"resolveOptions\",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=\"function\"==typeof t.action?t.action:this.defaultAction,this.target=\"function\"==typeof t.target?t.target:this.defaultTarget,this.text=\"function\"==typeof t.text?t.text:this.defaultText}},{key:\"listenClick\",value:function e(t){var n=this;this.listener=(0,f.default)(t,\"click\",function(e){return n.onClick(e)})}},{key:\"onClick\",value:function e(t){var n=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new s.default({action:this.action(n),target:this.target(n),text:this.text(n),trigger:n,emitter:this})}},{key:\"defaultAction\",value:function e(t){return l(\"action\",t)}},{key:\"defaultTarget\",value:function e(t){var n=l(\"target\",t);if(n)return document.querySelector(n)}},{key:\"defaultText\",value:function e(t){return l(\"text\",t)}},{key:\"destroy\",value:function e(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}]),t}(u.default);e.exports=h})},{\"./clipboard-action\":7,\"good-listener\":4,\"tiny-emitter\":6}]},{},[8])(8)});","/*! \n * medium-editor-insert-plugin v2.5.1 - jQuery insert plugin for MediumEditor\n *\n * http://linkesch.com/medium-editor-insert-plugin\n * \n * Copyright (c) 2014 Pavel Linkesch (http://linkesch.com)\n * Released under the MIT license\n */\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery', 'handlebars/runtime', 'medium-editor', 'blueimp-file-upload', 'jquery-sortable'], factory);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = function (jQuery) {\n if (typeof window === 'undefined') {\n throw new Error(\"medium-editor-insert-plugin runs only in a browser.\");\n }\n if (jQuery === undefined) {\n jQuery = require('jquery');\n }\n window.jQuery = jQuery;\n Handlebars = require('handlebars/runtime');\n MediumEditor = require('medium-editor');\n require('jquery-sortable');\n require('blueimp-file-upload');\n factory(jQuery, Handlebars, MediumEditor);\n return jQuery;\n };\n } else {\n factory(jQuery, Handlebars, MediumEditor);\n }\n})(function ($, Handlebars, MediumEditor) {\n this[\"MediumInsert\"] = this[\"MediumInsert\"] || {};\n this[\"MediumInsert\"][\"Templates\"] = this[\"MediumInsert\"][\"Templates\"] || {};\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/core-buttons.hbs\"] = Handlebars.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = helpers.helperMissing,\n alias3 = \"function\";\n return \" <li><button data-addon=\\\"\" + container.escapeExpression((helper = (helper = helpers.key || data && data.key) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"key\",\n \"hash\": {},\n \"data\": data\n }) : helper)) + \"\\\" data-action=\\\"add\\\" class=\\\"medium-insert-action\\\" type=\\\"button\\\">\" + ((stack1 = (helper = (helper = helpers.label || (depth0 != null ? depth0.label : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"label\",\n \"hash\": {},\n \"data\": data\n }) : helper)) != null ? stack1 : \"\") + \"</button></li>\\n\";\n },\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1;\n return \"<div class=\\\"medium-insert-buttons\\\" contenteditable=\\\"false\\\" style=\\\"display: none\\\">\\n <button class=\\\"medium-insert-buttons-show\\\" type=\\\"button\\\"><span>+</span></button>\\n <ul class=\\\"medium-insert-buttons-addons\\\" style=\\\"display: none\\\">\\n\" + ((stack1 = helpers.each.call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? depth0.addons : depth0, {\n \"name\": \"each\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\") + \" </ul>\\n</div>\\n\";\n },\n \"useData\": true\n });\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/core-caption.hbs\"] = Handlebars.template({\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var helper;\n return \"<figcaption contenteditable=\\\"true\\\" class=\\\"medium-insert-caption-placeholder\\\" data-placeholder=\\\"\" + container.escapeExpression((helper = (helper = helpers.placeholder || (depth0 != null ? depth0.placeholder : depth0)) != null ? helper : helpers.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"placeholder\",\n \"hash\": {},\n \"data\": data\n }) : helper)) + \"\\\"></figcaption>\";\n },\n \"useData\": true\n });\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/core-empty-line.hbs\"] = Handlebars.template({\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n return \"<p><br></p>\\n\";\n },\n \"useData\": true\n });\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/embeds-toolbar.hbs\"] = Handlebars.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var stack1;\n return \" <div class=\\\"medium-insert-embeds-toolbar medium-editor-toolbar medium-toolbar-arrow-under medium-editor-toolbar-active\\\">\\n <ul class=\\\"medium-editor-toolbar-actions clearfix\\\">\\n\" + ((stack1 = helpers.each.call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? depth0.styles : depth0, {\n \"name\": \"each\",\n \"hash\": {},\n \"fn\": container.program(2, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\") + \" </ul>\\n </div>\\n\";\n },\n \"2\": function (container, depth0, helpers, partials, data) {\n var stack1;\n return (stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? depth0.label : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(3, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\";\n },\n \"3\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = helpers.helperMissing,\n alias3 = \"function\";\n return \" <li>\\n <button class=\\\"medium-editor-action\\\" data-action=\\\"\" + container.escapeExpression((helper = (helper = helpers.key || data && data.key) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"key\",\n \"hash\": {},\n \"data\": data\n }) : helper)) + \"\\\">\" + ((stack1 = (helper = (helper = helpers.label || (depth0 != null ? depth0.label : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"label\",\n \"hash\": {},\n \"data\": data\n }) : helper)) != null ? stack1 : \"\") + \"</button>\\n </li>\\n\";\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var stack1;\n return \" <div class=\\\"medium-insert-embeds-toolbar2 medium-editor-toolbar medium-editor-toolbar-active\\\">\\n <ul class=\\\"medium-editor-toolbar-actions clearfix\\\">\\n\" + ((stack1 = helpers.each.call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? depth0.actions : depth0, {\n \"name\": \"each\",\n \"hash\": {},\n \"fn\": container.program(2, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\") + \" </ul>\\n </div>\\n\";\n },\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {};\n return ((stack1 = helpers[\"if\"].call(alias1, depth0 != null ? depth0.styles : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\") + \"\\n\" + ((stack1 = helpers[\"if\"].call(alias1, depth0 != null ? depth0.actions : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(5, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n });\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/embeds-wrapper.hbs\"] = Handlebars.template({\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1, helper;\n return \"<div class=\\\"medium-insert-embeds\\\" contenteditable=\\\"false\\\">\\n\t<figure>\\n\t\t<div class=\\\"medium-insert-embed\\\">\\n\t\t\t\" + ((stack1 = (helper = (helper = helpers.html || (depth0 != null ? depth0.html : depth0)) != null ? helper : helpers.helperMissing, typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : container.nullContext || {}, {\n \"name\": \"html\",\n \"hash\": {},\n \"data\": data\n }) : helper)) != null ? stack1 : \"\") + \"\\n\t\t</div>\\n\t</figure>\\n\t<div class=\\\"medium-insert-embeds-overlay\\\"></div>\\n</div>\";\n },\n \"useData\": true\n });\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/images-fileupload.hbs\"] = Handlebars.template({\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n return \"<input type=\\\"file\\\" multiple>\";\n },\n \"useData\": true\n });\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/images-image.hbs\"] = Handlebars.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n return \" <div class=\\\"medium-insert-images-progress\\\"></div>\\n\";\n },\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {};\n return \"<figure contenteditable=\\\"false\\\">\\n <img src=\\\"\" + container.escapeExpression((helper = (helper = helpers.img || (depth0 != null ? depth0.img : depth0)) != null ? helper : helpers.helperMissing, typeof helper === \"function\" ? helper.call(alias1, {\n \"name\": \"img\",\n \"hash\": {},\n \"data\": data\n }) : helper)) + \"\\\" alt=\\\"\\\" />\\n\" + ((stack1 = helpers[\"if\"].call(alias1, depth0 != null ? depth0.progress : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\") + \"</figure>\\n\";\n },\n \"useData\": true\n });\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/images-progressbar.hbs\"] = Handlebars.template({\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n return \"<progress min=\\\"0\\\" max=\\\"100\\\" value=\\\"0\\\">0</progress>\";\n },\n \"useData\": true\n });\n this[\"MediumInsert\"][\"Templates\"][\"src/js/templates/images-toolbar.hbs\"] = Handlebars.template({\n \"1\": function (container, depth0, helpers, partials, data) {\n var stack1;\n return (stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? depth0.label : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(2, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\";\n },\n \"2\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = helpers.helperMissing,\n alias3 = \"function\";\n return \" <li>\\n <button class=\\\"medium-editor-action\\\" data-action=\\\"\" + container.escapeExpression((helper = (helper = helpers.key || data && data.key) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"key\",\n \"hash\": {},\n \"data\": data\n }) : helper)) + \"\\\">\" + ((stack1 = (helper = (helper = helpers.label || (depth0 != null ? depth0.label : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"label\",\n \"hash\": {},\n \"data\": data\n }) : helper)) != null ? stack1 : \"\") + \"</button>\\n </li>\\n\";\n },\n \"4\": function (container, depth0, helpers, partials, data) {\n var stack1;\n return \"\t<div class=\\\"medium-insert-images-toolbar2 medium-editor-toolbar medium-editor-toolbar-active\\\">\\n\t\t<ul class=\\\"medium-editor-toolbar-actions clearfix\\\">\\n\" + ((stack1 = helpers.each.call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? depth0.actions : depth0, {\n \"name\": \"each\",\n \"hash\": {},\n \"fn\": container.program(5, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\") + \" \t</ul>\\n </div>\\n\";\n },\n \"5\": function (container, depth0, helpers, partials, data) {\n var stack1;\n return (stack1 = helpers[\"if\"].call(depth0 != null ? depth0 : container.nullContext || {}, depth0 != null ? depth0.label : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(6, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\";\n },\n \"6\": function (container, depth0, helpers, partials, data) {\n var stack1,\n helper,\n alias1 = depth0 != null ? depth0 : container.nullContext || {},\n alias2 = helpers.helperMissing,\n alias3 = \"function\";\n return \" \t <li>\\n \t <button class=\\\"medium-editor-action\\\" data-action=\\\"\" + container.escapeExpression((helper = (helper = helpers.key || data && data.key) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"key\",\n \"hash\": {},\n \"data\": data\n }) : helper)) + \"\\\">\" + ((stack1 = (helper = (helper = helpers.label || (depth0 != null ? depth0.label : depth0)) != null ? helper : alias2, typeof helper === alias3 ? helper.call(alias1, {\n \"name\": \"label\",\n \"hash\": {},\n \"data\": data\n }) : helper)) != null ? stack1 : \"\") + \"</button>\\n \t </li>\\n\";\n },\n \"compiler\": [7, \">= 4.0.0\"],\n \"main\": function (container, depth0, helpers, partials, data) {\n var stack1,\n alias1 = depth0 != null ? depth0 : container.nullContext || {};\n return \"<div class=\\\"medium-insert-images-toolbar medium-editor-toolbar medium-toolbar-arrow-under medium-editor-toolbar-active\\\">\\n <ul class=\\\"medium-editor-toolbar-actions clearfix\\\">\\n\" + ((stack1 = helpers.each.call(alias1, depth0 != null ? depth0.styles : depth0, {\n \"name\": \"each\",\n \"hash\": {},\n \"fn\": container.program(1, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\") + \" </ul>\\n</div>\\n\\n\" + ((stack1 = helpers[\"if\"].call(alias1, depth0 != null ? depth0.actions : depth0, {\n \"name\": \"if\",\n \"hash\": {},\n \"fn\": container.program(4, data, 0),\n \"inverse\": container.noop,\n \"data\": data\n })) != null ? stack1 : \"\");\n },\n \"useData\": true\n });\n ;\n (function ($, window, document, undefined) {\n 'use strict';\n\n /** Default values */\n var pluginName = 'mediumInsert',\n defaults = {\n editor: null,\n enabled: true,\n addons: {\n images: true,\n // boolean or object containing configuration\n embeds: true\n }\n };\n\n /**\n * Capitalize first character\n *\n * @param {string} str\n * @return {string}\n */\n\n function ucfirst(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n /**\n * Core plugin's object\n *\n * Sets options, variables and calls init() function\n *\n * @constructor\n * @param {DOM} el - DOM element to init the plugin on\n * @param {object} options - Options to override defaults\n * @return {void}\n */\n\n function Core(el, options) {\n var editor;\n this.el = el;\n this.$el = $(el);\n this.templates = window.MediumInsert.Templates;\n if (options) {\n // Fix #142\n // Avoid deep copying editor object, because since v2.3.0 it contains circular references which causes jQuery.extend to break\n // Instead copy editor object to this.options manually\n editor = options.editor;\n options.editor = null;\n }\n this.options = $.extend(true, {}, defaults, options);\n this.options.editor = editor;\n if (options) {\n options.editor = editor; // Restore original object definition\n }\n\n this._defaults = defaults;\n this._name = pluginName;\n\n // Extend editor's functions\n if (this.options && this.options.editor) {\n if (this.options.editor._serialize === undefined) {\n this.options.editor._serialize = this.options.editor.serialize;\n }\n if (this.options.editor._destroy === undefined) {\n this.options.editor._destroy = this.options.editor.destroy;\n }\n if (this.options.editor._setup === undefined) {\n this.options.editor._setup = this.options.editor.setup;\n }\n this.options.editor._hideInsertButtons = this.hideButtons;\n this.options.editor.serialize = this.editorSerialize;\n this.options.editor.destroy = this.editorDestroy;\n this.options.editor.setup = this.editorSetup;\n if (this.options.editor.getExtensionByName('placeholder') !== undefined) {\n this.options.editor.getExtensionByName('placeholder').updatePlaceholder = this.editorUpdatePlaceholder;\n }\n }\n }\n\n /**\n * Initialization\n *\n * @return {void}\n */\n\n Core.prototype.init = function () {\n this.$el.addClass('medium-editor-insert-plugin');\n if (typeof this.options.addons !== 'object' || Object.keys(this.options.addons).length === 0) {\n this.disable();\n }\n this.initAddons();\n this.clean();\n this.events();\n };\n\n /**\n * Event listeners\n *\n * @return {void}\n */\n\n Core.prototype.events = function () {\n var that = this;\n this.$el.on('dragover drop', function (e) {\n e.preventDefault();\n }).on('keyup click', $.proxy(this, 'toggleButtons')).on('selectstart mousedown', '.medium-insert, .medium-insert-buttons', $.proxy(this, 'disableSelection')).on('click', '.medium-insert-buttons-show', $.proxy(this, 'toggleAddons')).on('click', '.medium-insert-action', $.proxy(this, 'addonAction')).on('paste', '.medium-insert-caption-placeholder', function (e) {\n $.proxy(that, 'removeCaptionPlaceholder')($(e.target));\n });\n $(window).on('resize', $.proxy(this, 'positionButtons', null));\n };\n\n /**\n * Return editor instance\n *\n * @return {object} MediumEditor\n */\n\n Core.prototype.getEditor = function () {\n return this.options.editor;\n };\n\n /**\n * Extend editor's serialize function\n *\n * @return {object} Serialized data\n */\n\n Core.prototype.editorSerialize = function () {\n var data = this._serialize();\n $.each(data, function (key) {\n var $data = $('<div />').html(data[key].value);\n $data.find('.medium-insert-buttons').remove();\n $data.find('.medium-insert-active').removeClass('medium-insert-active');\n\n // Restore original embed code from embed wrapper attribute value.\n $data.find('[data-embed-code]').each(function () {\n var $this = $(this),\n html = $('<div />').html($this.attr('data-embed-code')).text();\n $this.html(html);\n });\n data[key].value = $data.html();\n });\n return data;\n };\n\n /**\n * Extend editor's destroy function to deactivate this plugin too\n *\n * @return {void}\n */\n\n Core.prototype.editorDestroy = function () {\n $.each(this.elements, function (key, el) {\n if ($(el).data('plugin_' + pluginName) instanceof Core) {\n $(el).data('plugin_' + pluginName).disable();\n }\n });\n this._destroy();\n };\n\n /**\n * Extend editor's setup function to activate this plugin too\n *\n * @return {void}\n */\n\n Core.prototype.editorSetup = function () {\n this._setup();\n $.each(this.elements, function (key, el) {\n if ($(el).data('plugin_' + pluginName) instanceof Core) {\n $(el).data('plugin_' + pluginName).enable();\n }\n });\n };\n\n /**\n * Extend editor's placeholder.updatePlaceholder function to show placeholder dispite of the plugin buttons\n *\n * @return {void}\n */\n\n Core.prototype.editorUpdatePlaceholder = function (el, dontShow) {\n var contents = $(el).children().not('.medium-insert-buttons').contents();\n if (!dontShow && contents.length === 1 && contents[0].nodeName.toLowerCase() === 'br') {\n this.showPlaceholder(el);\n this.base._hideInsertButtons($(el));\n } else {\n this.hidePlaceholder(el);\n }\n };\n\n /**\n * Trigger editableInput on editor\n *\n * @return {void}\n */\n\n Core.prototype.triggerInput = function () {\n if (this.getEditor()) {\n this.getEditor().trigger('editableInput', null, this.el);\n }\n };\n\n /**\n * Deselects selected text\n *\n * @return {void}\n */\n\n Core.prototype.deselect = function () {\n document.getSelection().removeAllRanges();\n };\n\n /**\n * Disables the plugin\n *\n * @return {void}\n */\n\n Core.prototype.disable = function () {\n this.options.enabled = false;\n this.$el.find('.medium-insert-buttons').addClass('hide');\n };\n\n /**\n * Enables the plugin\n *\n * @return {void}\n */\n\n Core.prototype.enable = function () {\n this.options.enabled = true;\n this.$el.find('.medium-insert-buttons').removeClass('hide');\n };\n\n /**\n * Disables selectstart mousedown events on plugin elements except images\n *\n * @return {void}\n */\n\n Core.prototype.disableSelection = function (e) {\n var $el = $(e.target);\n if ($el.is('img') === false || $el.hasClass('medium-insert-buttons-show')) {\n e.preventDefault();\n }\n };\n\n /**\n * Initialize addons\n *\n * @return {void}\n */\n\n Core.prototype.initAddons = function () {\n var that = this;\n if (!this.options.addons || this.options.addons.length === 0) {\n return;\n }\n $.each(this.options.addons, function (addon, options) {\n var addonName = pluginName + ucfirst(addon);\n if (options === false) {\n delete that.options.addons[addon];\n return;\n }\n that.$el[addonName](options);\n that.options.addons[addon] = that.$el.data('plugin_' + addonName).options;\n });\n };\n\n /**\n * Cleans a content of the editor\n *\n * @return {void}\n */\n\n Core.prototype.clean = function () {\n var that = this,\n $buttons,\n $lastEl,\n $text;\n if (this.options.enabled === false) {\n return;\n }\n if (this.$el.html().length === 0) {\n this.$el.html(this.templates['src/js/templates/core-empty-line.hbs']().trim());\n }\n\n // Fix #29\n // Wrap content text in <p></p> to avoid Firefox problems\n $text = this.$el.contents().filter(function () {\n return this.nodeName === '#text' && $.trim($(this).text()) !== '' || this.nodeName.toLowerCase() === 'br';\n });\n $text.each(function () {\n $(this).wrap('<p />');\n\n // Fix #145\n // Move caret at the end of the element that's being wrapped\n that.moveCaret($(this).parent(), $(this).text().length);\n });\n this.addButtons();\n $buttons = this.$el.find('.medium-insert-buttons');\n $lastEl = $buttons.prev();\n if ($lastEl.attr('class') && $lastEl.attr('class').match(/medium\\-insert(?!\\-active)/)) {\n $buttons.before(this.templates['src/js/templates/core-empty-line.hbs']().trim());\n }\n };\n\n /**\n * Returns HTML template of buttons\n *\n * @return {string} HTML template of buttons\n */\n\n Core.prototype.getButtons = function () {\n if (this.options.enabled === false) {\n return;\n }\n return this.templates['src/js/templates/core-buttons.hbs']({\n addons: this.options.addons\n }).trim();\n };\n\n /**\n * Appends buttons at the end of the $el\n *\n * @return {void}\n */\n\n Core.prototype.addButtons = function () {\n if (this.$el.find('.medium-insert-buttons').length === 0) {\n this.$el.append(this.getButtons());\n }\n };\n\n /**\n * Move buttons to current active, empty paragraph and show them\n *\n * @return {void}\n */\n\n Core.prototype.toggleButtons = function (e) {\n var $el = $(e.target),\n selection = window.getSelection(),\n that = this,\n range,\n $current,\n $p,\n activeAddon;\n if (this.options.enabled === false) {\n return;\n }\n if (!selection || selection.rangeCount === 0) {\n $current = $el;\n } else {\n range = selection.getRangeAt(0);\n $current = $(range.commonAncestorContainer);\n }\n\n // When user clicks on editor's placeholder in FF, $current el is editor itself, not the first paragraph as it should\n if ($current.hasClass('medium-editor-insert-plugin')) {\n $current = $current.find('p:first');\n }\n $p = $current.is('p') ? $current : $current.closest('p');\n this.clean();\n if ($el.hasClass('medium-editor-placeholder') === false && $el.closest('.medium-insert-buttons').length === 0 && $current.closest('.medium-insert-buttons').length === 0) {\n this.$el.find('.medium-insert-active').removeClass('medium-insert-active');\n $.each(this.options.addons, function (addon) {\n if ($el.closest('.medium-insert-' + addon).length) {\n $current = $el;\n }\n if ($current.closest('.medium-insert-' + addon).length) {\n $p = $current.closest('.medium-insert-' + addon);\n activeAddon = addon;\n return;\n }\n });\n if ($p.length && ($p.text().trim() === '' && !activeAddon || activeAddon === 'images')) {\n $p.addClass('medium-insert-active');\n if (activeAddon === 'images') {\n this.$el.find('.medium-insert-buttons').attr('data-active-addon', activeAddon);\n } else {\n this.$el.find('.medium-insert-buttons').removeAttr('data-active-addon');\n }\n\n // If buttons are displayed on addon paragraph, wait 100ms for possible captions to display\n setTimeout(function () {\n that.positionButtons(activeAddon);\n that.showButtons(activeAddon);\n }, activeAddon ? 100 : 0);\n } else {\n this.hideButtons();\n }\n }\n };\n\n /**\n * Show buttons\n *\n * @param {string} activeAddon - Name of active addon\n * @returns {void}\n */\n\n Core.prototype.showButtons = function (activeAddon) {\n var $buttons = this.$el.find('.medium-insert-buttons');\n $buttons.show();\n $buttons.find('li').show();\n if (activeAddon) {\n $buttons.find('li').hide();\n $buttons.find('button[data-addon=\"' + activeAddon + '\"]').parent().show();\n }\n };\n\n /**\n * Hides buttons\n *\n * @param {jQuery} $el - Editor element\n * @returns {void}\n */\n\n Core.prototype.hideButtons = function ($el) {\n $el = $el || this.$el;\n $el.find('.medium-insert-buttons').hide();\n $el.find('.medium-insert-buttons-addons').hide();\n $el.find('.medium-insert-buttons-show').removeClass('medium-insert-buttons-rotate');\n };\n\n /**\n * Position buttons\n *\n * @param {string} activeAddon - Name of active addon\n * @return {void}\n */\n\n Core.prototype.positionButtons = function (activeAddon) {\n var $buttons = this.$el.find('.medium-insert-buttons'),\n $p = this.$el.find('.medium-insert-active'),\n $lastCaption = $p.hasClass('medium-insert-images-grid') ? [] : $p.find('figure:last figcaption'),\n elementsContainer = this.getEditor() ? this.getEditor().options.elementsContainer : $('body').get(0),\n elementsContainerAbsolute = ['absolute', 'fixed'].indexOf(window.getComputedStyle(elementsContainer).getPropertyValue('position')) > -1,\n position = {};\n if ($p.length) {\n position.left = $p.position().left;\n position.top = $p.position().top;\n if (activeAddon) {\n position.left += $p.width() - $buttons.find('.medium-insert-buttons-show').width() - 10;\n position.top += $p.height() - 20 + ($lastCaption.length ? -$lastCaption.height() - parseInt($lastCaption.css('margin-top'), 10) : 10);\n } else {\n position.left += -parseInt($buttons.find('.medium-insert-buttons-addons').css('left'), 10) - parseInt($buttons.find('.medium-insert-buttons-addons button:first').css('margin-left'), 10);\n position.top += parseInt($p.css('margin-top'), 10);\n }\n if (elementsContainerAbsolute) {\n position.top += elementsContainer.scrollTop;\n }\n if (this.$el.hasClass('medium-editor-placeholder') === false && position.left < 0) {\n position.left = $p.position().left;\n }\n $buttons.css(position);\n }\n };\n\n /**\n * Toggles addons buttons\n *\n * @return {void}\n */\n\n Core.prototype.toggleAddons = function () {\n if (this.$el.find('.medium-insert-buttons').attr('data-active-addon') === 'images') {\n this.$el.find('.medium-insert-buttons').find('button[data-addon=\"images\"]').click();\n return;\n }\n this.$el.find('.medium-insert-buttons-addons').fadeToggle();\n this.$el.find('.medium-insert-buttons-show').toggleClass('medium-insert-buttons-rotate');\n };\n\n /**\n * Hide addons buttons\n *\n * @return {void}\n */\n\n Core.prototype.hideAddons = function () {\n this.$el.find('.medium-insert-buttons-addons').hide();\n this.$el.find('.medium-insert-buttons-show').removeClass('medium-insert-buttons-rotate');\n };\n\n /**\n * Call addon's action\n *\n * @param {Event} e\n * @return {void}\n */\n\n Core.prototype.addonAction = function (e) {\n var $a = $(e.currentTarget),\n addon = $a.data('addon'),\n action = $a.data('action');\n this.$el.data('plugin_' + pluginName + ucfirst(addon))[action]();\n };\n\n /**\n * Move caret at the beginning of the empty paragraph\n *\n * @param {jQuery} $el Element where to place the caret\n * @param {integer} position Position where to move caret. Default: 0\n *\n * @return {void}\n */\n\n Core.prototype.moveCaret = function ($el, position) {\n var range, sel, el, textEl;\n position = position || 0;\n range = document.createRange();\n sel = window.getSelection();\n el = $el.get(0);\n if (!el.childNodes.length) {\n textEl = document.createTextNode(' ');\n el.appendChild(textEl);\n }\n range.setStart(el.childNodes[0], position);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n };\n\n /**\n * Add caption\n *\n * @param {jQuery Element} $el\n * @param {string} placeholder\n * @return {void}\n */\n\n Core.prototype.addCaption = function ($el, placeholder) {\n var $caption = $el.find('figcaption');\n if ($caption.length === 0) {\n $el.append(this.templates['src/js/templates/core-caption.hbs']({\n placeholder: placeholder\n }));\n }\n };\n\n /**\n * Remove captions\n *\n * @param {jQuery Element} $ignore\n * @return {void}\n */\n\n Core.prototype.removeCaptions = function ($ignore) {\n var $captions = this.$el.find('figcaption');\n if ($ignore) {\n $captions = $captions.not($ignore);\n }\n $captions.each(function () {\n if ($(this).hasClass('medium-insert-caption-placeholder') || $(this).text().trim() === '') {\n $(this).remove();\n }\n });\n };\n\n /**\n * Remove caption placeholder\n *\n * @param {jQuery Element} $el\n * @return {void}\n */\n\n Core.prototype.removeCaptionPlaceholder = function ($el) {\n var $caption = $el.is('figcaption') ? $el : $el.find('figcaption');\n if ($caption.length) {\n $caption.removeClass('medium-insert-caption-placeholder').removeAttr('data-placeholder');\n }\n };\n\n /** Plugin initialization */\n\n $.fn[pluginName] = function (options) {\n return this.each(function () {\n var that = this,\n textareaId;\n if ($(that).is('textarea')) {\n textareaId = $(that).attr('medium-editor-textarea-id');\n that = $(that).siblings('[medium-editor-textarea-id=\"' + textareaId + '\"]').get(0);\n }\n if (!$.data(that, 'plugin_' + pluginName)) {\n // Plugin initialization\n $.data(that, 'plugin_' + pluginName, new Core(that, options));\n $.data(that, 'plugin_' + pluginName).init();\n } else if (typeof options === 'string' && $.data(that, 'plugin_' + pluginName)[options]) {\n // Method call\n $.data(that, 'plugin_' + pluginName)[options]();\n }\n });\n };\n })(jQuery, window, document);\n ;\n (function ($, window, document, undefined) {\n 'use strict';\n\n /** Default values */\n var pluginName = 'mediumInsert',\n addonName = 'Embeds',\n // first char is uppercase\n defaults = {\n label: '<span class=\"fa fa-youtube-play\"></span>',\n placeholder: 'Paste a YouTube, Vimeo, Facebook, Twitter or Instagram link and press Enter',\n oembedProxy: 'http://medium.iframe.ly/api/oembed?iframe=1',\n captions: true,\n captionPlaceholder: 'Type caption (optional)',\n storeMeta: false,\n styles: {\n wide: {\n label: '<span class=\"fa fa-align-justify\"></span>'\n // added: function ($el) {},\n // removed: function ($el) {}\n },\n\n left: {\n label: '<span class=\"fa fa-align-left\"></span>'\n // added: function ($el) {},\n // removed: function ($el) {}\n },\n\n right: {\n label: '<span class=\"fa fa-align-right\"></span>'\n // added: function ($el) {},\n // removed: function ($el) {}\n }\n },\n\n actions: {\n remove: {\n label: '<span class=\"fa fa-times\"></span>',\n clicked: function () {\n var $event = $.Event('keydown');\n $event.which = 8;\n $(document).trigger($event);\n }\n }\n },\n parseOnPaste: false\n };\n\n /**\n * Embeds object\n *\n * Sets options, variables and calls init() function\n *\n * @constructor\n * @param {DOM} el - DOM element to init the plugin on\n * @param {object} options - Options to override defaults\n * @return {void}\n */\n\n function Embeds(el, options) {\n this.el = el;\n this.$el = $(el);\n this.templates = window.MediumInsert.Templates;\n this.core = this.$el.data('plugin_' + pluginName);\n this.options = $.extend(true, {}, defaults, options);\n this._defaults = defaults;\n this._name = pluginName;\n\n // Extend editor's functions\n if (this.core.getEditor()) {\n this.core.getEditor()._serializePreEmbeds = this.core.getEditor().serialize;\n this.core.getEditor().serialize = this.editorSerialize;\n }\n this.init();\n }\n\n /**\n * Initialization\n *\n * @return {void}\n */\n\n Embeds.prototype.init = function () {\n var $embeds = this.$el.find('.medium-insert-embeds');\n $embeds.attr('contenteditable', false);\n $embeds.each(function () {\n if ($(this).find('.medium-insert-embeds-overlay').length === 0) {\n $(this).append($('<div />').addClass('medium-insert-embeds-overlay'));\n }\n });\n this.events();\n this.backwardsCompatibility();\n };\n\n /**\n * Event listeners\n *\n * @return {void}\n */\n\n Embeds.prototype.events = function () {\n $(document).on('click', $.proxy(this, 'unselectEmbed')).on('keydown', $.proxy(this, 'removeEmbed')).on('click', '.medium-insert-embeds-toolbar .medium-editor-action', $.proxy(this, 'toolbarAction')).on('click', '.medium-insert-embeds-toolbar2 .medium-editor-action', $.proxy(this, 'toolbar2Action'));\n this.$el.on('keyup click paste', $.proxy(this, 'togglePlaceholder')).on('keydown', $.proxy(this, 'processLink')).on('click', '.medium-insert-embeds-overlay', $.proxy(this, 'selectEmbed')).on('contextmenu', '.medium-insert-embeds-placeholder', $.proxy(this, 'fixRightClickOnPlaceholder'));\n if (this.options.parseOnPaste) {\n this.$el.on('paste', $.proxy(this, 'processPasted'));\n }\n $(window).on('resize', $.proxy(this, 'autoRepositionToolbars'));\n };\n\n /**\n * Replace v0.* class names with new ones, wrap embedded content to new structure\n *\n * @return {void}\n */\n\n Embeds.prototype.backwardsCompatibility = function () {\n var that = this;\n this.$el.find('.mediumInsert-embeds').removeClass('mediumInsert-embeds').addClass('medium-insert-embeds');\n this.$el.find('.medium-insert-embeds').each(function () {\n if ($(this).find('.medium-insert-embed').length === 0) {\n $(this).after(that.templates['src/js/templates/embeds-wrapper.hbs']({\n html: $(this).html()\n }));\n $(this).remove();\n }\n });\n };\n\n /**\n * Extend editor's serialize function\n *\n * @return {object} Serialized data\n */\n\n Embeds.prototype.editorSerialize = function () {\n var data = this._serializePreEmbeds();\n $.each(data, function (key) {\n var $data = $('<div />').html(data[key].value),\n $embeds = $data.find('.medium-insert-embeds');\n $embeds.removeAttr('contenteditable');\n $embeds.find('figcaption').removeAttr('contenteditable');\n $data.find('.medium-insert-embeds-overlay').remove();\n data[key].value = $data.html();\n });\n return data;\n };\n\n /**\n * Add embedded element\n *\n * @return {void}\n */\n\n Embeds.prototype.add = function () {\n var $place = this.$el.find('.medium-insert-active');\n\n // Fix #132\n // Make sure that the content of the paragraph is empty and <br> is wrapped in <p></p> to avoid Firefox problems\n $place.html(this.templates['src/js/templates/core-empty-line.hbs']().trim());\n\n // Replace paragraph with div to prevent #124 issue with pasting in Chrome,\n // because medium editor wraps inserted content into paragraph and paragraphs can't be nested\n if ($place.is('p')) {\n $place.replaceWith('<div class=\"medium-insert-active\">' + $place.html() + '</div>');\n $place = this.$el.find('.medium-insert-active');\n this.core.moveCaret($place);\n }\n $place.addClass('medium-insert-embeds medium-insert-embeds-input medium-insert-embeds-active');\n this.togglePlaceholder({\n target: $place.get(0)\n });\n $place.click();\n this.core.hideButtons();\n };\n\n /**\n * Toggles placeholder\n *\n * @param {Event} e\n * @return {void}\n */\n\n Embeds.prototype.togglePlaceholder = function (e) {\n var $place = $(e.target),\n selection = window.getSelection(),\n range,\n $current,\n text;\n if (!selection || selection.rangeCount === 0) {\n return;\n }\n range = selection.getRangeAt(0);\n $current = $(range.commonAncestorContainer);\n if ($current.hasClass('medium-insert-embeds-active')) {\n $place = $current;\n } else if ($current.closest('.medium-insert-embeds-active').length) {\n $place = $current.closest('.medium-insert-embeds-active');\n }\n if ($place.hasClass('medium-insert-embeds-active')) {\n text = $place.text().trim();\n if (text === '' && $place.hasClass('medium-insert-embeds-placeholder') === false) {\n $place.addClass('medium-insert-embeds-placeholder').attr('data-placeholder', this.options.placeholder);\n } else if (text !== '' && $place.hasClass('medium-insert-embeds-placeholder')) {\n $place.removeClass('medium-insert-embeds-placeholder').removeAttr('data-placeholder');\n }\n } else {\n this.$el.find('.medium-insert-embeds-active').remove();\n }\n };\n\n /**\n * Right click on placeholder in Chrome selects whole line. Fix this by placing caret at the end of line\n *\n * @param {Event} e\n * @return {void}\n */\n\n Embeds.prototype.fixRightClickOnPlaceholder = function (e) {\n this.core.moveCaret($(e.target));\n };\n\n /**\n * Process link\n *\n * @param {Event} e\n * @return {void}\n */\n\n Embeds.prototype.processLink = function (e) {\n var $place = this.$el.find('.medium-insert-embeds-active'),\n url;\n if (!$place.length) {\n return;\n }\n url = $place.text().trim();\n\n // Return empty placeholder on backspace, delete or enter\n if (url === '' && [8, 46, 13].indexOf(e.which) !== -1) {\n $place.remove();\n return;\n }\n if (e.which === 13) {\n e.preventDefault();\n e.stopPropagation();\n if (this.options.oembedProxy) {\n this.oembed(url);\n } else {\n this.parseUrl(url);\n }\n }\n };\n\n /**\n * Process Pasted\n *\n * @param {Event} e\n * @return {void}\n */\n\n Embeds.prototype.processPasted = function (e) {\n var pastedUrl, linkRegEx;\n if ($(\".medium-insert-embeds-active\").length) {\n return;\n }\n pastedUrl = e.originalEvent.clipboardData.getData('text');\n linkRegEx = new RegExp('^(http(s?):)?\\/\\/', 'i');\n if (linkRegEx.test(pastedUrl)) {\n if (this.options.oembedProxy) {\n this.oembed(pastedUrl, true);\n } else {\n this.parseUrl(pastedUrl, true);\n }\n }\n };\n\n /**\n * Get HTML via oEmbed proxy\n *\n * @param {string} url\n * @return {void}\n */\n\n Embeds.prototype.oembed = function (url, pasted) {\n var that = this;\n $.support.cors = true;\n $.ajax({\n crossDomain: true,\n cache: false,\n url: this.options.oembedProxy,\n dataType: 'json',\n data: {\n url: url\n },\n success: function (data) {\n var html = data && data.html;\n if (that.options.storeMeta) {\n html += '<div class=\"medium-insert-embeds-meta\"><script type=\"text/json\">' + JSON.stringify(data) + '</script></div>';\n }\n if (data && !html && data.type === 'photo' && data.url) {\n html = '<img src=\"' + data.url + '\" alt=\"\">';\n }\n if (!html) {\n // Prevent render empty embed.\n $.proxy(that, 'convertBadEmbed', url)();\n return;\n }\n if (pasted) {\n $.proxy(that, 'embed', html, url)();\n } else {\n $.proxy(that, 'embed', html)();\n }\n },\n error: function (jqXHR, textStatus, errorThrown) {\n var responseJSON = function () {\n try {\n return JSON.parse(jqXHR.responseText);\n } catch (e) {}\n }();\n if (typeof window.console !== 'undefined') {\n window.console.log(responseJSON && responseJSON.error || jqXHR.status || errorThrown.message);\n } else {\n window.alert('Error requesting media from ' + that.options.oembedProxy + ' to insert: ' + errorThrown + ' (response status: ' + jqXHR.status + ')');\n }\n $.proxy(that, 'convertBadEmbed', url)();\n }\n });\n };\n\n /**\n * Get HTML using regexp\n *\n * @param {string} url\n * @param {bool} pasted\n * @return {void}\n */\n\n Embeds.prototype.parseUrl = function (url, pasted) {\n var html;\n if (!new RegExp(['youtube', 'youtu.be', 'vimeo', 'instagram', 'twitter', 'facebook'].join('|')).test(url)) {\n $.proxy(this, 'convertBadEmbed', url)();\n return false;\n }\n html = url.replace(/\\n?/g, '').replace(/^((http(s)?:\\/\\/)?(www\\.)?(youtube\\.com|youtu\\.be)\\/(watch\\?v=|v\\/)?)([a-zA-Z0-9\\-_]+)(.*)?$/, '<div class=\"video video-youtube\"><iframe width=\"420\" height=\"315\" src=\"//www.youtube.com/embed/$7\" frameborder=\"0\" allowfullscreen></iframe></div>').replace(/^https?:\\/\\/vimeo\\.com(\\/.+)?\\/([0-9]+)$/, '<div class=\"video video-vimeo\"><iframe src=\"//player.vimeo.com/video/$2\" width=\"500\" height=\"281\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div>').replace(/^https:\\/\\/twitter\\.com\\/(\\w+)\\/status\\/(\\d+)\\/?$/, '<blockquote class=\"twitter-tweet\" align=\"center\" lang=\"en\"><a href=\"https://twitter.com/$1/statuses/$2\"></a></blockquote><script async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>').replace(/^(https:\\/\\/www\\.facebook\\.com\\/(.*))$/, '<script src=\"//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.2\" async></script><div class=\"fb-post\" data-href=\"$1\"><div class=\"fb-xfbml-parse-ignore\"><a href=\"$1\">Loading Facebook post...</a></div></div>').replace(/^https?:\\/\\/instagram\\.com\\/p\\/(.+)\\/?$/, '<span class=\"instagram\"><iframe src=\"//instagram.com/p/$1/embed/\" width=\"612\" height=\"710\" frameborder=\"0\" scrolling=\"no\" allowtransparency=\"true\"></iframe></span>');\n if (this.options.storeMeta) {\n html += '<div class=\"medium-insert-embeds-meta\"><script type=\"text/json\">' + JSON.stringify({}) + '</script></div>';\n }\n if (/<(\"[^\"]*\"|'[^']*'|[^'\">])*>/.test(html) === false) {\n $.proxy(this, 'convertBadEmbed', url)();\n return false;\n }\n if (pasted) {\n this.embed(html, url);\n } else {\n this.embed(html);\n }\n };\n\n /**\n * Add html to page\n *\n * @param {string} html\n * @param {string} pastedUrl\n * @return {void}\n */\n\n Embeds.prototype.embed = function (html, pastedUrl) {\n var $place = this.$el.find('.medium-insert-embeds-active'),\n $div;\n if (!html) {\n alert('Incorrect URL format specified');\n return false;\n } else {\n if (html.indexOf('</script>') > -1) {\n // Store embed code with <script> tag inside wrapper attribute value.\n // Make nice attribute value escaping using jQuery.\n $div = $('<div>').attr('data-embed-code', $('<div />').text(html).html()).html(html);\n html = $('<div>').append($div).html();\n }\n if (pastedUrl) {\n // Get the element with the pasted url\n // place the embed template and remove the pasted text\n $place = this.$el.find(\":not(iframe, script, style)\").contents().filter(function () {\n return this.nodeType === 3 && this.textContent.indexOf(pastedUrl) > -1;\n }).parent();\n $place.after(this.templates['src/js/templates/embeds-wrapper.hbs']({\n html: html\n }));\n $place.text($place.text().replace(pastedUrl, ''));\n } else {\n $place.after(this.templates['src/js/templates/embeds-wrapper.hbs']({\n html: html\n }));\n $place.remove();\n }\n this.core.triggerInput();\n if (html.indexOf('facebook') !== -1) {\n if (typeof FB !== 'undefined') {\n setTimeout(function () {\n FB.XFBML.parse();\n }, 2000);\n }\n }\n }\n };\n\n /**\n * Convert bad oEmbed content to an actual line.\n * Instead of displaying the error message we convert the bad embed\n *\n * @param {string} content Bad content\n *\n * @return {void}\n */\n Embeds.prototype.convertBadEmbed = function (content) {\n var $place,\n $empty,\n $content,\n emptyTemplate = this.templates['src/js/templates/core-empty-line.hbs']().trim();\n $place = this.$el.find('.medium-insert-embeds-active');\n\n // convert embed node to an empty node and insert the bad embed inside\n $content = $(emptyTemplate);\n $place.before($content);\n $place.remove();\n $content.html(content);\n\n // add an new empty node right after to simulate Enter press\n $empty = $(emptyTemplate);\n $content.after($empty);\n this.core.triggerInput();\n this.core.moveCaret($empty);\n };\n\n /**\n * Select clicked embed\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Embeds.prototype.selectEmbed = function (e) {\n var that = this,\n $embed;\n if (this.core.options.enabled) {\n $embed = $(e.target).hasClass('medium-insert-embeds') ? $(e.target) : $(e.target).closest('.medium-insert-embeds');\n $embed.addClass('medium-insert-embeds-selected');\n setTimeout(function () {\n that.addToolbar();\n if (that.options.captions) {\n that.core.addCaption($embed.find('figure'), that.options.captionPlaceholder);\n }\n }, 50);\n }\n };\n\n /**\n * Unselect selected embed\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Embeds.prototype.unselectEmbed = function (e) {\n var $el = $(e.target).hasClass('medium-insert-embeds') ? $(e.target) : $(e.target).closest('.medium-insert-embeds'),\n $embed = this.$el.find('.medium-insert-embeds-selected');\n if ($el.hasClass('medium-insert-embeds-selected')) {\n $embed.not($el).removeClass('medium-insert-embeds-selected');\n $('.medium-insert-embeds-toolbar, .medium-insert-embeds-toolbar2').remove();\n this.core.removeCaptions($el.find('figcaption'));\n if ($(e.target).is('.medium-insert-caption-placeholder') || $(e.target).is('figcaption')) {\n $el.removeClass('medium-insert-embeds-selected');\n this.core.removeCaptionPlaceholder($el.find('figure'));\n }\n return;\n }\n $embed.removeClass('medium-insert-embeds-selected');\n $('.medium-insert-embeds-toolbar, .medium-insert-embeds-toolbar2').remove();\n if ($(e.target).is('.medium-insert-caption-placeholder')) {\n this.core.removeCaptionPlaceholder($el.find('figure'));\n } else if ($(e.target).is('figcaption') === false) {\n this.core.removeCaptions();\n }\n };\n\n /**\n * Remove embed\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Embeds.prototype.removeEmbed = function (e) {\n var $embed, $empty;\n if (e.which === 8 || e.which === 46) {\n $embed = this.$el.find('.medium-insert-embeds-selected');\n if ($embed.length) {\n e.preventDefault();\n $('.medium-insert-embeds-toolbar, .medium-insert-embeds-toolbar2').remove();\n $empty = $(this.templates['src/js/templates/core-empty-line.hbs']().trim());\n $embed.before($empty);\n $embed.remove();\n\n // Hide addons\n this.core.hideAddons();\n this.core.moveCaret($empty);\n this.core.triggerInput();\n }\n }\n };\n\n /**\n * Adds embed toolbar to editor\n *\n * @returns {void}\n */\n\n Embeds.prototype.addToolbar = function () {\n var $embed = this.$el.find('.medium-insert-embeds-selected'),\n active = false,\n $toolbar,\n $toolbar2,\n mediumEditor,\n toolbarContainer;\n if ($embed.length === 0) {\n return;\n }\n mediumEditor = this.core.getEditor();\n toolbarContainer = mediumEditor.options.elementsContainer || 'body';\n $(toolbarContainer).append(this.templates['src/js/templates/embeds-toolbar.hbs']({\n styles: this.options.styles,\n actions: this.options.actions\n }).trim());\n $toolbar = $('.medium-insert-embeds-toolbar');\n $toolbar2 = $('.medium-insert-embeds-toolbar2');\n $toolbar.find('button').each(function () {\n if ($embed.hasClass('medium-insert-embeds-' + $(this).data('action'))) {\n $(this).addClass('medium-editor-button-active');\n active = true;\n }\n });\n if (active === false) {\n $toolbar.find('button').first().addClass('medium-editor-button-active');\n }\n this.repositionToolbars();\n $toolbar.fadeIn();\n $toolbar2.fadeIn();\n };\n Embeds.prototype.autoRepositionToolbars = function () {\n setTimeout(function () {\n this.repositionToolbars();\n this.repositionToolbars();\n }.bind(this), 0);\n };\n Embeds.prototype.repositionToolbars = function () {\n var $toolbar = $('.medium-insert-embeds-toolbar'),\n $toolbar2 = $('.medium-insert-embeds-toolbar2'),\n $embed = this.$el.find('.medium-insert-embeds-selected'),\n elementsContainer = this.core.getEditor().options.elementsContainer,\n elementsContainerAbsolute = ['absolute', 'fixed'].indexOf(window.getComputedStyle(elementsContainer).getPropertyValue('position')) > -1,\n elementsContainerBoundary = elementsContainerAbsolute ? elementsContainer.getBoundingClientRect() : null,\n containerWidth = $(window).width(),\n position = {};\n if ($toolbar2.length) {\n position.top = $embed.offset().top + 2; // 2px - distance from a border\n position.left = $embed.offset().left + $embed.width() - $toolbar2.width() - 4; // 4px - distance from a border\n\n if (elementsContainerAbsolute) {\n position.top += elementsContainer.scrollTop - elementsContainerBoundary.top;\n position.left -= elementsContainerBoundary.left;\n containerWidth = $(elementsContainer).width();\n }\n if (position.left + $toolbar2.width() > containerWidth) {\n position.left = containerWidth - $toolbar2.width();\n }\n $toolbar2.css(position);\n }\n if ($toolbar.length) {\n position.left = $embed.offset().left + $embed.width() / 2 - $toolbar.width() / 2;\n position.top = $embed.offset().top - $toolbar.height() - 8 - 2 - 5; // 8px - hight of an arrow under toolbar, 2px - height of an embed outset, 5px - distance from an embed\n\n if (elementsContainerAbsolute) {\n position.top += elementsContainer.scrollTop - elementsContainerBoundary.top;\n position.left -= elementsContainerBoundary.left;\n }\n if (position.top < 0) {\n position.top = 0;\n }\n $toolbar.css(position);\n }\n };\n\n /**\n * Fires toolbar action\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Embeds.prototype.toolbarAction = function (e) {\n var $button = $(e.target).is('button') ? $(e.target) : $(e.target).closest('button'),\n $li = $button.closest('li'),\n $ul = $li.closest('ul'),\n $lis = $ul.find('li'),\n $embed = this.$el.find('.medium-insert-embeds-selected'),\n that = this;\n $button.addClass('medium-editor-button-active');\n $li.siblings().find('.medium-editor-button-active').removeClass('medium-editor-button-active');\n $lis.find('button').each(function () {\n var className = 'medium-insert-embeds-' + $(this).data('action');\n if ($(this).hasClass('medium-editor-button-active')) {\n $embed.addClass(className);\n if ((that.options.styles[$(this).data('action')] || {}).added) {\n that.options.styles[$(this).data('action')].added($embed);\n }\n } else {\n $embed.removeClass(className);\n if ((that.options.styles[$(this).data('action')] || {}).removed) {\n that.options.styles[$(this).data('action')].removed($embed);\n }\n }\n });\n this.core.triggerInput();\n };\n\n /**\n * Fires toolbar2 action\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Embeds.prototype.toolbar2Action = function (e) {\n var $button = $(e.target).is('button') ? $(e.target) : $(e.target).closest('button'),\n callback = (this.options.actions[$button.data('action')] || {}).clicked;\n if (callback) {\n callback(this.$el.find('.medium-insert-embeds-selected'));\n }\n this.core.triggerInput();\n };\n\n /** Plugin initialization */\n\n $.fn[pluginName + addonName] = function (options) {\n return this.each(function () {\n if (!$.data(this, 'plugin_' + pluginName + addonName)) {\n $.data(this, 'plugin_' + pluginName + addonName, new Embeds(this, options));\n }\n });\n };\n })(jQuery, window, document);\n\n /*global MediumEditor*/\n\n ;\n (function ($, window, document, Util, undefined) {\n 'use strict';\n\n /** Default values */\n var pluginName = 'mediumInsert',\n addonName = 'Images',\n // first char is uppercase\n defaults = {\n label: '<span class=\"fa fa-camera\"></span>',\n deleteMethod: 'POST',\n deleteScript: 'delete.php',\n preview: true,\n captions: true,\n captionPlaceholder: 'Type caption for image (optional)',\n autoGrid: 3,\n fileUploadOptions: {\n // See https://github.com/blueimp/jQuery-File-Upload/wiki/Options\n url: null,\n acceptFileTypes: /(\\.|\\/)(gif|jpe?g|png)$/i\n },\n fileDeleteOptions: {},\n styles: {\n wide: {\n label: '<span class=\"fa fa-align-justify\"></span>'\n // added: function ($el) {},\n // removed: function ($el) {}\n },\n\n left: {\n label: '<span class=\"fa fa-align-left\"></span>'\n // added: function ($el) {},\n // removed: function ($el) {}\n },\n\n right: {\n label: '<span class=\"fa fa-align-right\"></span>'\n // added: function ($el) {},\n // removed: function ($el) {}\n },\n\n grid: {\n label: '<span class=\"fa fa-th\"></span>'\n // added: function ($el) {},\n // removed: function ($el) {}\n }\n },\n\n actions: {\n remove: {\n label: '<span class=\"fa fa-times\"></span>',\n clicked: function () {\n var $event = $.Event('keydown');\n $event.which = 8;\n $(document).trigger($event);\n }\n }\n },\n sorting: function () {\n var that = this;\n $('.medium-insert-images').sortable({\n group: 'medium-insert-images',\n containerSelector: '.medium-insert-images',\n itemSelector: 'figure',\n placeholder: '<figure class=\"placeholder\">',\n handle: 'img',\n nested: false,\n vertical: false,\n afterMove: function () {\n that.core.triggerInput();\n }\n });\n },\n messages: {\n acceptFileTypesError: 'This file is not in a supported format: ',\n maxFileSizeError: 'This file is too big: '\n }\n // uploadError: function($el, data) {}\n // uploadCompleted: function ($el, data) {}\n };\n\n /**\n * Images object\n *\n * Sets options, variables and calls init() function\n *\n * @constructor\n * @param {DOM} el - DOM element to init the plugin on\n * @param {object} options - Options to override defaults\n * @return {void}\n */\n\n function Images(el, options) {\n this.el = el;\n this.$el = $(el);\n this.$currentImage = null;\n this.templates = window.MediumInsert.Templates;\n this.core = this.$el.data('plugin_' + pluginName);\n this.options = $.extend(true, {}, defaults, options);\n this._defaults = defaults;\n this._name = pluginName;\n\n // Allow image preview only in browsers, that support's that\n if (this.options.preview && !window.FileReader) {\n this.options.preview = false;\n }\n\n // Extend editor's functions\n if (this.core.getEditor()) {\n this.core.getEditor()._serializePreImages = this.core.getEditor().serialize;\n this.core.getEditor().serialize = this.editorSerialize;\n }\n this.init();\n }\n\n /**\n * Initialization\n *\n * @return {void}\n */\n\n Images.prototype.init = function () {\n var $images = this.$el.find('.medium-insert-images');\n $images.find('figcaption').attr('contenteditable', true);\n $images.find('figure').attr('contenteditable', false);\n this.events();\n this.backwardsCompatibility();\n this.sorting();\n };\n\n /**\n * Event listeners\n *\n * @return {void}\n */\n\n Images.prototype.events = function () {\n $(document).on('click', $.proxy(this, 'unselectImage')).on('keydown', $.proxy(this, 'removeImage')).on('click', '.medium-insert-images-toolbar .medium-editor-action', $.proxy(this, 'toolbarAction')).on('click', '.medium-insert-images-toolbar2 .medium-editor-action', $.proxy(this, 'toolbar2Action'));\n this.$el.on('click', '.medium-insert-images img', $.proxy(this, 'selectImage'));\n $(window).on('resize', $.proxy(this, 'autoRepositionToolbars'));\n };\n\n /**\n * Replace v0.* class names with new ones\n *\n * @return {void}\n */\n\n Images.prototype.backwardsCompatibility = function () {\n this.$el.find('.mediumInsert').removeClass('mediumInsert').addClass('medium-insert-images');\n this.$el.find('.medium-insert-images.small').removeClass('small').addClass('medium-insert-images-left');\n };\n\n /**\n * Extend editor's serialize function\n *\n * @return {object} Serialized data\n */\n\n Images.prototype.editorSerialize = function () {\n var data = this._serializePreImages();\n $.each(data, function (key) {\n var $data = $('<div />').html(data[key].value);\n $data.find('.medium-insert-images').find('figcaption, figure').removeAttr('contenteditable');\n $data.find('.medium-insert-images-progress').remove();\n data[key].value = $data.html();\n });\n return data;\n };\n\n /**\n * Add image\n *\n * @return {void}\n */\n\n Images.prototype.add = function () {\n var that = this,\n $file = $(this.templates['src/js/templates/images-fileupload.hbs']()),\n fileUploadOptions = {\n dataType: 'json',\n add: function (e, data) {\n $.proxy(that, 'uploadAdd', e, data)();\n },\n done: function (e, data) {\n $.proxy(that, 'uploadDone', e, data)();\n }\n };\n\n // Only add progress callbacks for browsers that support XHR2,\n // and test for XHR2 per:\n // http://stackoverflow.com/questions/6767887/\n // what-is-the-best-way-to-check-for-xhr2-file-upload-support\n if (new XMLHttpRequest().upload) {\n fileUploadOptions.progress = function (e, data) {\n $.proxy(that, 'uploadProgress', e, data)();\n };\n fileUploadOptions.progressall = function (e, data) {\n $.proxy(that, 'uploadProgressall', e, data)();\n };\n }\n $file.fileupload($.extend(true, {}, this.options.fileUploadOptions, fileUploadOptions));\n $file.click();\n };\n\n /**\n * Callback invoked as soon as files are added to the fileupload widget - via file input selection, drag & drop or add API call.\n * https://github.com/blueimp/jQuery-File-Upload/wiki/Options#add\n *\n * @param {Event} e\n * @param {object} data\n * @return {void}\n */\n\n Images.prototype.uploadAdd = function (e, data) {\n var $place = this.$el.find('.medium-insert-active'),\n that = this,\n uploadErrors = [],\n file = data.files[0],\n acceptFileTypes = this.options.fileUploadOptions.acceptFileTypes,\n maxFileSize = this.options.fileUploadOptions.maxFileSize,\n previewImg;\n if (acceptFileTypes && !acceptFileTypes.test(file.type)) {\n uploadErrors.push(this.options.messages.acceptFileTypesError + file.name);\n } else if (maxFileSize && file.size > maxFileSize) {\n uploadErrors.push(this.options.messages.maxFileSizeError + file.name);\n }\n if (uploadErrors.length > 0) {\n if (this.options.uploadFailed && typeof this.options.uploadFailed === \"function\") {\n this.options.uploadFailed(uploadErrors, data);\n return;\n }\n alert(uploadErrors.join(\"\\n\"));\n return;\n }\n this.core.hideButtons();\n\n // Replace paragraph with div, because figure elements can't be inside paragraph\n if ($place.is('p')) {\n $place.replaceWith('<div class=\"medium-insert-active\">' + $place.html() + '</div>');\n $place = this.$el.find('.medium-insert-active');\n if ($place.next().is('p')) {\n this.core.moveCaret($place.next());\n } else {\n $place.after('<p><br></p>'); // add empty paragraph so we can move the caret to the next line.\n this.core.moveCaret($place.next());\n }\n }\n $place.addClass('medium-insert-images');\n if (this.options.preview === false && $place.find('progress').length === 0 && new XMLHttpRequest().upload) {\n $place.append(this.templates['src/js/templates/images-progressbar.hbs']());\n }\n if (data.autoUpload || data.autoUpload !== false && $(e.target).fileupload('option', 'autoUpload')) {\n data.process().done(function () {\n // If preview is set to true, let the showImage handle the upload start\n if (that.options.preview) {\n previewImg = document.createElement('img');\n window.URL = window.URL || window.webkitURL;\n previewImg.src = window.URL.createObjectURL(data.files[0]);\n previewImg.onload = function () {\n $.proxy(that, 'showImage', this.src, data)();\n setTimeout(function () {\n window.URL.revokeObjectURL(this.src);\n });\n };\n } else {\n data.submit();\n }\n });\n }\n };\n\n /**\n * Callback for global upload progress events\n * https://github.com/blueimp/jQuery-File-Upload/wiki/Options#progressall\n *\n * @param {Event} e\n * @param {object} data\n * @return {void}\n */\n\n Images.prototype.uploadProgressall = function (e, data) {\n var progress, $progressbar;\n if (this.options.preview === false) {\n progress = parseInt(data.loaded / data.total * 100, 10);\n $progressbar = this.$el.find('.medium-insert-active').find('progress');\n $progressbar.attr('value', progress).text(progress);\n if (progress === 100) {\n $progressbar.remove();\n }\n }\n };\n\n /**\n * Callback for upload progress events.\n * https://github.com/blueimp/jQuery-File-Upload/wiki/Options#progress\n *\n * @param {Event} e\n * @param {object} data\n * @return {void}\n */\n\n Images.prototype.uploadProgress = function (e, data) {\n var progress, $progressbar;\n if (this.options.preview) {\n progress = 100 - parseInt(data.loaded / data.total * 100, 10);\n $progressbar = data.context.find('.medium-insert-images-progress');\n $progressbar.css('width', progress + '%');\n if (progress === 0) {\n $progressbar.remove();\n }\n }\n };\n\n /**\n * Callback for successful upload requests.\n * https://github.com/blueimp/jQuery-File-Upload/wiki/Options#done\n *\n * @param {Event} e\n * @param {object} data\n * @return {void}\n */\n\n Images.prototype.uploadDone = function (e, data) {\n $.proxy(this, 'showImage', data.result.files[0].url, data)();\n this.core.clean();\n this.sorting();\n };\n\n /**\n * Add uploaded / preview image to DOM\n *\n * @param {string} img\n * @returns {void}\n */\n\n Images.prototype.showImage = function (img, data) {\n var $place = this.$el.find('.medium-insert-active'),\n domImage,\n that;\n\n // Hide editor's placeholder\n $place.click();\n\n // If preview is allowed and preview image already exists,\n // replace it with uploaded image\n that = this;\n if (this.options.preview && data.context) {\n domImage = this.getDOMImage();\n domImage.onload = function () {\n data.context.find('img').attr('src', img);\n if (this.options.uploadCompleted) {\n this.options.uploadCompleted(data.context, data);\n }\n that.core.triggerInput();\n }.bind(this);\n domImage.src = img;\n } else {\n data.context = $(this.templates['src/js/templates/images-image.hbs']({\n img: img,\n progress: this.options.preview\n })).appendTo($place);\n $place.find('br').remove();\n if (this.options.autoGrid && $place.find('figure').length >= this.options.autoGrid) {\n $.each(this.options.styles, function (style, options) {\n var className = 'medium-insert-images-' + style;\n $place.removeClass(className);\n if (options.removed) {\n options.removed($place);\n }\n });\n $place.addClass('medium-insert-images-grid');\n if (this.options.styles.grid.added) {\n this.options.styles.grid.added($place);\n }\n }\n if (this.options.preview) {\n data.submit();\n } else if (this.options.uploadCompleted) {\n this.options.uploadCompleted(data.context, data);\n }\n }\n this.core.triggerInput();\n return data.context;\n };\n Images.prototype.getDOMImage = function () {\n return new window.Image();\n };\n\n /**\n * Select clicked image\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Images.prototype.selectImage = function (e) {\n var that = this,\n $image;\n if (this.core.options.enabled) {\n $image = $(e.target);\n this.$currentImage = $image;\n\n // Hide keyboard on mobile devices\n this.$el.blur();\n $image.addClass('medium-insert-image-active');\n $image.closest('.medium-insert-images').addClass('medium-insert-active');\n setTimeout(function () {\n that.addToolbar();\n if (that.options.captions) {\n that.core.addCaption($image.closest('figure'), that.options.captionPlaceholder);\n }\n }, 50);\n }\n };\n\n /**\n * Unselect selected image\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Images.prototype.unselectImage = function (e) {\n var $el = $(e.target),\n $image = this.$el.find('.medium-insert-image-active');\n if ($el.is('img') && $el.hasClass('medium-insert-image-active')) {\n $image.not($el).removeClass('medium-insert-image-active');\n $('.medium-insert-images-toolbar, .medium-insert-images-toolbar2').remove();\n this.core.removeCaptions($el);\n return;\n }\n $image.removeClass('medium-insert-image-active');\n $('.medium-insert-images-toolbar, .medium-insert-images-toolbar2').remove();\n if ($el.is('.medium-insert-caption-placeholder')) {\n this.core.removeCaptionPlaceholder($image.closest('figure'));\n } else if ($el.is('figcaption') === false) {\n this.core.removeCaptions();\n }\n this.$currentImage = null;\n };\n\n /**\n * Remove image\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Images.prototype.removeImage = function (e) {\n var images = [],\n $selectedImage = this.$el.find('.medium-insert-image-active'),\n $parent,\n $empty,\n selection,\n range,\n current,\n caretPosition,\n $current,\n $sibling,\n selectedHtml,\n i;\n if (e.which === 8 || e.which === 46) {\n if ($selectedImage.length) {\n images.push($selectedImage);\n }\n\n // Remove image even if it's not selected, but backspace/del is pressed in text\n selection = window.getSelection();\n if (selection && selection.rangeCount) {\n range = selection.getRangeAt(0);\n current = range.commonAncestorContainer;\n $current = current.nodeName === '#text' || current.nodeName === 'BR' ? $(current).parent() : $(current);\n caretPosition = MediumEditor.selection.getCaretOffsets(current).left;\n\n // Is backspace pressed and caret is at the beginning of a paragraph, get previous element\n if (e.which === 8 && caretPosition === 0) {\n $sibling = $current.prev();\n // Is del pressed and caret is at the end of a paragraph, get next element\n } else if (e.which === 46 && caretPosition === $current.text().length) {\n $sibling = $current.next();\n }\n if ($sibling && $sibling.hasClass('medium-insert-images')) {\n images.push($sibling.find('img'));\n }\n\n // If text is selected, find images in the selection\n selectedHtml = MediumEditor.selection.getSelectionHtml(document);\n if (selectedHtml) {\n $('<div></div>').html(selectedHtml).find('.medium-insert-images img').each(function () {\n images.push($(this));\n });\n }\n }\n if (images.length) {\n for (i = 0; i < images.length; i++) {\n this.deleteFile(images[i].attr('src'), images[i]);\n $parent = images[i].closest('.medium-insert-images');\n images[i].closest('figure').remove();\n if ($parent.find('figure').length === 0) {\n $empty = $parent.next();\n if ($empty.is('p') === false || $empty.text() !== '') {\n $empty = $(this.templates['src/js/templates/core-empty-line.hbs']().trim());\n $parent.before($empty);\n }\n $parent.remove();\n }\n }\n\n // Hide addons\n this.core.hideAddons();\n if (!selectedHtml && $empty) {\n e.preventDefault();\n this.core.moveCaret($empty);\n }\n $('.medium-insert-images-toolbar, .medium-insert-images-toolbar2').remove();\n this.core.triggerInput();\n }\n }\n };\n\n /**\n * Makes ajax call to deleteScript\n *\n * @param {string} file The name of the file to delete\n * @param {jQuery} $el The jQuery element of the file to delete\n * @returns {void}\n */\n\n Images.prototype.deleteFile = function (file, $el) {\n // only take action if there is a truthy value\n if (this.options.deleteScript) {\n // try to run it as a callback\n if (typeof this.options.deleteScript === 'function') {\n this.options.deleteScript(file, $el);\n // otherwise, it's probably a string, call it as ajax\n } else {\n $.ajax($.extend(true, {}, {\n url: this.options.deleteScript,\n type: this.options.deleteMethod || 'POST',\n data: {\n file: file\n }\n }, this.options.fileDeleteOptions));\n }\n }\n };\n\n /**\n * Adds image toolbar to editor\n *\n * @returns {void}\n */\n\n Images.prototype.addToolbar = function () {\n var $image = this.$el.find('.medium-insert-image-active'),\n $p = $image.closest('.medium-insert-images'),\n active = false,\n mediumEditor = this.core.getEditor(),\n toolbarContainer = mediumEditor.options.elementsContainer || 'body',\n $toolbar,\n $toolbar2;\n $(toolbarContainer).append(this.templates['src/js/templates/images-toolbar.hbs']({\n styles: this.options.styles,\n actions: this.options.actions\n }).trim());\n $toolbar = $('.medium-insert-images-toolbar');\n $toolbar2 = $('.medium-insert-images-toolbar2');\n $toolbar.find('button').each(function () {\n if ($p.hasClass('medium-insert-images-' + $(this).data('action'))) {\n $(this).addClass('medium-editor-button-active');\n active = true;\n }\n });\n if (active === false) {\n $toolbar.find('button').first().addClass('medium-editor-button-active');\n }\n this.repositionToolbars();\n $toolbar.fadeIn();\n $toolbar2.fadeIn();\n };\n Images.prototype.autoRepositionToolbars = function () {\n setTimeout(function () {\n this.repositionToolbars();\n this.repositionToolbars();\n }.bind(this), 0);\n };\n Images.prototype.repositionToolbars = function () {\n var $toolbar = $('.medium-insert-images-toolbar'),\n $toolbar2 = $('.medium-insert-images-toolbar2'),\n $image = this.$el.find('.medium-insert-image-active'),\n elementsContainer = this.core.getEditor().options.elementsContainer,\n elementsContainerAbsolute = ['absolute', 'fixed'].indexOf(window.getComputedStyle(elementsContainer).getPropertyValue('position')) > -1,\n elementsContainerBoundary = elementsContainerAbsolute ? elementsContainer.getBoundingClientRect() : null,\n containerWidth = $(window).width(),\n position = {};\n if ($toolbar2.length) {\n position.top = $image.offset().top + 2;\n position.left = $image.offset().left + $image.width() - $toolbar2.width() - 4; // 4px - distance from a border\n\n if (elementsContainerAbsolute) {\n position.top += elementsContainer.scrollTop - elementsContainerBoundary.top;\n position.left -= elementsContainerBoundary.left;\n containerWidth = $(elementsContainer).width();\n }\n if (position.left + $toolbar2.width() > containerWidth) {\n position.left = containerWidth - $toolbar2.width();\n }\n $toolbar2.css(position);\n }\n if ($toolbar.length) {\n if ($image.closest('.medium-insert-images-grid-active').length) {\n $image = $image.closest('.medium-insert-images-grid-active');\n }\n position.top = $image.offset().top - $toolbar.height() - 8 - 2 - 5; // 8px - hight of an arrow under toolbar, 2px - height of an image outset, 5px - distance from an image\n position.left = $image.offset().left + $image.width() / 2 - $toolbar.width() / 2;\n if (elementsContainerAbsolute) {\n position.top += elementsContainer.scrollTop - elementsContainerBoundary.top;\n position.left -= elementsContainerBoundary.left;\n }\n if (position.top < 0) {\n position.top = 0;\n }\n $toolbar.css(position);\n }\n };\n\n /**\n * Fires toolbar action\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Images.prototype.toolbarAction = function (e) {\n var that = this,\n $button,\n $li,\n $ul,\n $lis,\n $p;\n if (this.$currentImage === null) {\n return;\n }\n $button = $(e.target).is('button') ? $(e.target) : $(e.target).closest('button');\n $li = $button.closest('li');\n $ul = $li.closest('ul');\n $lis = $ul.find('li');\n $p = this.$el.find('.medium-insert-active');\n $button.addClass('medium-editor-button-active');\n $li.siblings().find('.medium-editor-button-active').removeClass('medium-editor-button-active');\n $lis.find('button').each(function () {\n var className = 'medium-insert-images-' + $(this).data('action');\n if ($(this).hasClass('medium-editor-button-active')) {\n $p.addClass(className);\n if (that.options.styles[$(this).data('action')].added) {\n that.options.styles[$(this).data('action')].added($p);\n }\n } else {\n $p.removeClass(className);\n if (that.options.styles[$(this).data('action')].removed) {\n that.options.styles[$(this).data('action')].removed($p);\n }\n }\n });\n this.core.hideButtons();\n this.core.triggerInput();\n };\n\n /**\n * Fires toolbar2 action\n *\n * @param {Event} e\n * @returns {void}\n */\n\n Images.prototype.toolbar2Action = function (e) {\n var $button, callback;\n if (this.$currentImage === null) {\n return;\n }\n $button = $(e.target).is('button') ? $(e.target) : $(e.target).closest('button');\n callback = this.options.actions[$button.data('action')].clicked;\n if (callback) {\n callback(this.$el.find('.medium-insert-image-active'));\n }\n this.core.hideButtons();\n this.core.triggerInput();\n };\n\n /**\n * Initialize sorting\n *\n * @returns {void}\n */\n\n Images.prototype.sorting = function () {\n $.proxy(this.options.sorting, this)();\n };\n\n /** Plugin initialization */\n\n $.fn[pluginName + addonName] = function (options) {\n return this.each(function () {\n if (!$.data(this, 'plugin_' + pluginName + addonName)) {\n $.data(this, 'plugin_' + pluginName + addonName, new Images(this, options));\n }\n });\n };\n })(jQuery, window, document, MediumEditor.util);\n});","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\nimport Rails from '@rails/ujs';\nRails.start();\nimport { cable } from \"@hotwired/turbo-rails\"\n\nimport \"core-js/stable\"\nimport \"regenerator-runtime/runtime\"\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\n// Jquery\nimport $ from \"jquery\";\nimport \"jquery-ujs\"\nimport \"jquery-ui-dist/jquery-ui.js\"\nimport \"jquery-datetimepicker\"\n\n// Bootstrap\nimport \"bootstrap\"\nimport \"bootstrap-toggle\"\nimport \"bootstrap-select\"\nimport \"bootstrap-fixes\"\nimport \"moment\"\nimport \"handlebars\"\n\n// Forms & Filters\nimport '@yaireo/tagify'\nimport \"@client-side-validations/client-side-validations\"\nimport \"@melloware/coloris/dist/coloris.css\"\nimport \"filterrific\"\nimport \"forms\"\nimport \"charts\"\nimport \"clipboards\"\nimport \"mailgun_validator.js\"\nimport \"email_validation.js\"\nimport \"vendor/date.js\"\nimport \"posts.js\"\nimport \"misc.js\"\nimport \"navigation.js\"\nimport \"reader_options.js\"\nimport \"static.js\"\n\n\n//checkout\nimport \"price.js\"\n\nimport \"surveys.js\"\nimport \"survey_questions.js\"\nimport { moment } from \"vendor/moment.js\"\nimport \"vanilla-cookieconsent\"\n\n\nconst application = Application.start()\nconst context = require.context(\"../controllers\", true, /\\.js$/)\n\napplication.load(definitionsFromContext(context))\n\n// temp fix for various components until I can find a more \"webpack\" way of doing this\n// include jQuery in global and window scope (so you can access it globally)\n// in your web browser, when you type $('.div'), it is actually refering to global.$('.div')\nglobal.$ = $;\nwindow.jQuery = $;\nwindow.$ = $;\n\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n clearImmediate: clearImmediate\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n setImmediate: setImmediate\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n var version = global.Bun.version.split('.');\n return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n var firstParamIndex = hasTimeArg ? 2 : 1;\n return WRAP ? function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n var fn = isCallable(handler) ? handler : Function(handler);\n var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n var callback = boundArgs ? function () {\n apply(fn, this, params);\n } : fn;\n return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n } : scheduler;\n};\n","'use strict';\n/* global Bun -- Deno case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var DateFormatter;\n!function () {\n \"use strict\";\n\n var D, s, r, a, n;\n D = function (e, t) {\n return \"string\" == typeof e && \"string\" == typeof t && e.toLowerCase() === t.toLowerCase();\n }, s = function (e, t, a) {\n var n = a || \"0\",\n r = e.toString();\n return r.length < t ? s(n + r, t) : r;\n }, r = function (e) {\n var t, a;\n for (e = e || {}, t = 1; t < arguments.length; t++) if (a = arguments[t]) for (var n in a) a.hasOwnProperty(n) && (\"object\" == typeof a[n] ? r(e[n], a[n]) : e[n] = a[n]);\n return e;\n }, a = function (e, t) {\n for (var a = 0; a < t.length; a++) if (t[a].toLowerCase() === e.toLowerCase()) return a;\n return -1;\n }, n = {\n dateSettings: {\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n meridiem: [\"AM\", \"PM\"],\n ordinal: function (e) {\n var t = e % 10,\n a = {\n 1: \"st\",\n 2: \"nd\",\n 3: \"rd\"\n };\n return 1 !== Math.floor(e % 100 / 10) && a[t] ? a[t] : \"th\";\n }\n },\n separators: /[ \\-+\\/\\.T:@]/g,\n validParts: /[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,\n intParts: /[djwNzmnyYhHgGis]/g,\n tzParts: /\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g,\n tzClip: /[^-+\\dA-Z]/g\n }, (DateFormatter = function (e) {\n var t = this,\n a = r(n, e);\n t.dateSettings = a.dateSettings, t.separators = a.separators, t.validParts = a.validParts, t.intParts = a.intParts, t.tzParts = a.tzParts, t.tzClip = a.tzClip;\n }).prototype = {\n constructor: DateFormatter,\n getMonth: function (e) {\n var t;\n return 0 === (t = a(e, this.dateSettings.monthsShort) + 1) && (t = a(e, this.dateSettings.months) + 1), t;\n },\n parseDate: function (e, t) {\n var a,\n n,\n r,\n o,\n i,\n s,\n d,\n u,\n l,\n f,\n c = this,\n m = !1,\n h = !1,\n g = c.dateSettings,\n p = {\n date: null,\n year: null,\n month: null,\n day: null,\n hour: 0,\n min: 0,\n sec: 0\n };\n if (!e) return null;\n if (e instanceof Date) return e;\n if (\"U\" === t) return (r = parseInt(e)) ? new Date(1e3 * r) : e;\n switch (typeof e) {\n case \"number\":\n return new Date(e);\n case \"string\":\n break;\n default:\n return null;\n }\n if (!(a = t.match(c.validParts)) || 0 === a.length) throw new Error(\"Invalid date format definition.\");\n for (n = e.replace(c.separators, \"\\0\").split(\"\\0\"), r = 0; r < n.length; r++) switch (o = n[r], i = parseInt(o), a[r]) {\n case \"y\":\n case \"Y\":\n if (!i) return null;\n l = o.length, p.year = 2 === l ? parseInt((i < 70 ? \"20\" : \"19\") + o) : i, m = !0;\n break;\n case \"m\":\n case \"n\":\n case \"M\":\n case \"F\":\n if (isNaN(i)) {\n if (!(0 < (s = c.getMonth(o)))) return null;\n p.month = s;\n } else {\n if (!(1 <= i && i <= 12)) return null;\n p.month = i;\n }\n m = !0;\n break;\n case \"d\":\n case \"j\":\n if (!(1 <= i && i <= 31)) return null;\n p.day = i, m = !0;\n break;\n case \"g\":\n case \"h\":\n if (f = n[d = -1 < a.indexOf(\"a\") ? a.indexOf(\"a\") : -1 < a.indexOf(\"A\") ? a.indexOf(\"A\") : -1], -1 < d) u = D(f, g.meridiem[0]) ? 0 : D(f, g.meridiem[1]) ? 12 : -1, 1 <= i && i <= 12 && -1 < u ? p.hour = i + u - 1 : 0 <= i && i <= 23 && (p.hour = i);else {\n if (!(0 <= i && i <= 23)) return null;\n p.hour = i;\n }\n h = !0;\n break;\n case \"G\":\n case \"H\":\n if (!(0 <= i && i <= 23)) return null;\n p.hour = i, h = !0;\n break;\n case \"i\":\n if (!(0 <= i && i <= 59)) return null;\n p.min = i, h = !0;\n break;\n case \"s\":\n if (!(0 <= i && i <= 59)) return null;\n p.sec = i, h = !0;\n }\n if (!0 === m && p.year && p.month && p.day) p.date = new Date(p.year, p.month - 1, p.day, p.hour, p.min, p.sec, 0);else {\n if (!0 !== h) return null;\n p.date = new Date(0, 0, 0, p.hour, p.min, p.sec, 0);\n }\n return p.date;\n },\n guessDate: function (e, t) {\n if (\"string\" != typeof e) return e;\n var a,\n n,\n r,\n o,\n i,\n s,\n d = e.replace(this.separators, \"\\0\").split(\"\\0\"),\n u = t.match(this.validParts),\n l = new Date(),\n f = 0;\n if (!/^[djmn]/g.test(u[0])) return e;\n for (r = 0; r < d.length; r++) {\n if (f = 2, i = d[r], s = parseInt(i.substr(0, 2)), isNaN(s)) return null;\n switch (r) {\n case 0:\n \"m\" === u[0] || \"n\" === u[0] ? l.setMonth(s - 1) : l.setDate(s);\n break;\n case 1:\n \"m\" === u[0] || \"n\" === u[0] ? l.setDate(s) : l.setMonth(s - 1);\n break;\n case 2:\n if (n = l.getFullYear(), f = (a = i.length) < 4 ? a : 4, !(n = parseInt(a < 4 ? n.toString().substr(0, 4 - a) + i : i.substr(0, 4)))) return null;\n l.setFullYear(n);\n break;\n case 3:\n l.setHours(s);\n break;\n case 4:\n l.setMinutes(s);\n break;\n case 5:\n l.setSeconds(s);\n }\n 0 < (o = i.substr(f)).length && d.splice(r + 1, 0, o);\n }\n return l;\n },\n parseFormat: function (e, n) {\n var a,\n t = this,\n r = t.dateSettings,\n o = /\\\\?(.?)/gi,\n i = function (e, t) {\n return a[e] ? a[e]() : t;\n };\n return a = {\n d: function () {\n return s(a.j(), 2);\n },\n D: function () {\n return r.daysShort[a.w()];\n },\n j: function () {\n return n.getDate();\n },\n l: function () {\n return r.days[a.w()];\n },\n N: function () {\n return a.w() || 7;\n },\n w: function () {\n return n.getDay();\n },\n z: function () {\n var e = new Date(a.Y(), a.n() - 1, a.j()),\n t = new Date(a.Y(), 0, 1);\n return Math.round((e - t) / 864e5);\n },\n W: function () {\n var e = new Date(a.Y(), a.n() - 1, a.j() - a.N() + 3),\n t = new Date(e.getFullYear(), 0, 4);\n return s(1 + Math.round((e - t) / 864e5 / 7), 2);\n },\n F: function () {\n return r.months[n.getMonth()];\n },\n m: function () {\n return s(a.n(), 2);\n },\n M: function () {\n return r.monthsShort[n.getMonth()];\n },\n n: function () {\n return n.getMonth() + 1;\n },\n t: function () {\n return new Date(a.Y(), a.n(), 0).getDate();\n },\n L: function () {\n var e = a.Y();\n return e % 4 == 0 && e % 100 != 0 || e % 400 == 0 ? 1 : 0;\n },\n o: function () {\n var e = a.n(),\n t = a.W();\n return a.Y() + (12 === e && t < 9 ? 1 : 1 === e && 9 < t ? -1 : 0);\n },\n Y: function () {\n return n.getFullYear();\n },\n y: function () {\n return a.Y().toString().slice(-2);\n },\n a: function () {\n return a.A().toLowerCase();\n },\n A: function () {\n var e = a.G() < 12 ? 0 : 1;\n return r.meridiem[e];\n },\n B: function () {\n var e = 3600 * n.getUTCHours(),\n t = 60 * n.getUTCMinutes(),\n a = n.getUTCSeconds();\n return s(Math.floor((e + t + a + 3600) / 86.4) % 1e3, 3);\n },\n g: function () {\n return a.G() % 12 || 12;\n },\n G: function () {\n return n.getHours();\n },\n h: function () {\n return s(a.g(), 2);\n },\n H: function () {\n return s(a.G(), 2);\n },\n i: function () {\n return s(n.getMinutes(), 2);\n },\n s: function () {\n return s(n.getSeconds(), 2);\n },\n u: function () {\n return s(1e3 * n.getMilliseconds(), 6);\n },\n e: function () {\n return /\\((.*)\\)/.exec(String(n))[1] || \"Coordinated Universal Time\";\n },\n I: function () {\n return new Date(a.Y(), 0) - Date.UTC(a.Y(), 0) != new Date(a.Y(), 6) - Date.UTC(a.Y(), 6) ? 1 : 0;\n },\n O: function () {\n var e = n.getTimezoneOffset(),\n t = Math.abs(e);\n return (0 < e ? \"-\" : \"+\") + s(100 * Math.floor(t / 60) + t % 60, 4);\n },\n P: function () {\n var e = a.O();\n return e.substr(0, 3) + \":\" + e.substr(3, 2);\n },\n T: function () {\n return (String(n).match(t.tzParts) || [\"\"]).pop().replace(t.tzClip, \"\") || \"UTC\";\n },\n Z: function () {\n return 60 * -n.getTimezoneOffset();\n },\n c: function () {\n return \"Y-m-d\\\\TH:i:sP\".replace(o, i);\n },\n r: function () {\n return \"D, d M Y H:i:s O\".replace(o, i);\n },\n U: function () {\n return n.getTime() / 1e3 || 0;\n }\n }, i(e, e);\n },\n formatDate: function (e, t) {\n var a,\n n,\n r,\n o,\n i,\n s = \"\";\n if (\"string\" == typeof e && !(e = this.parseDate(e, t))) return null;\n if (e instanceof Date) {\n for (r = t.length, a = 0; a < r; a++) \"S\" !== (i = t.charAt(a)) && \"\\\\\" !== i && (0 < a && \"\\\\\" === t.charAt(a - 1) ? s += i : (o = this.parseFormat(i, e), a !== r - 1 && this.intParts.test(i) && \"S\" === t.charAt(a + 1) && (n = parseInt(o) || 0, o += this.dateSettings.ordinal(n)), s += o));\n return s;\n }\n return \"\";\n }\n };\n}();\nvar datetimepickerFactory = function (L) {\n \"use strict\";\n\n var s = {\n i18n: {\n ar: {\n months: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"مايو\", \"Øزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\n dayOfWeekShort: [\"Ù†\", \"Ø«\", \"ع\", \"Ø®\", \"ج\", \"س\", \"Ø\"],\n dayOfWeek: [\"الأØد\", \"الاثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\", \"الأØد\"]\n },\n ro: {\n months: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\n dayOfWeekShort: [\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sâ\"],\n dayOfWeek: [\"Duminică\", \"Luni\", \"MarÅ£i\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sâmbătă\"]\n },\n id: {\n months: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n dayOfWeekShort: [\"Min\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"],\n dayOfWeek: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\n },\n is: {\n months: [\"Janúar\", \"Febrúar\", \"Mars\", \"AprÃl\", \"MaÃ\", \"JúnÃ\", \"JúlÃ\", \"Ãgúst\", \"September\", \"Október\", \"Nóvember\", \"Desember\"],\n dayOfWeekShort: [\"Sun\", \"Mán\", \"Þrið\", \"Mið\", \"Fim\", \"Fös\", \"Lau\"],\n dayOfWeek: [\"Sunnudagur\", \"Mánudagur\", \"Þriðjudagur\", \"Miðvikudagur\", \"Fimmtudagur\", \"Föstudagur\", \"Laugardagur\"]\n },\n bg: {\n months: [\"Януари\", \"Февруари\", \"Март\", \"Ðприл\", \"Май\", \"Юни\", \"Юли\", \"ÐвгуÑÑ‚\", \"Септември\", \"Октомври\", \"Ðоември\", \"Декември\"],\n dayOfWeekShort: [\"Ðд\", \"Пн\", \"Ð’Ñ‚\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n dayOfWeek: [\"ÐеделÑ\", \"Понеделник\", \"Вторник\", \"СрÑда\", \"Четвъртък\", \"Петък\", \"Събота\"]\n },\n fa: {\n months: [\"Ùروردین\", \"اردیبهشت\", \"خرداد\", \"تیر\", \"مرداد\", \"شهریور\", \"مهر\", \"آبان\", \"آذر\", \"دی\", \"بهمن\", \"اسÙند\"],\n dayOfWeekShort: [\"یکشنبه\", \"دوشنبه\", \"سه شنبه\", \"چهارشنبه\", \"پنجشنبه\", \"جمعه\", \"شنبه\"],\n dayOfWeek: [\"یک‌شنبه\", \"دوشنبه\", \"سه‌شنبه\", \"چهارشنبه\", \"پنج‌شنبه\", \"جمعه\", \"شنبه\", \"یک‌شنبه\"]\n },\n ru: {\n months: [\"Январь\", \"Февраль\", \"Март\", \"Ðпрель\", \"Май\", \"Июнь\", \"Июль\", \"ÐвгуÑÑ‚\", \"СентÑбрь\", \"ОктÑбрь\", \"ÐоÑбрь\", \"Декабрь\"],\n dayOfWeekShort: [\"Ð’Ñ\", \"Пн\", \"Ð’Ñ‚\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n dayOfWeek: [\"ВоÑкреÑенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"ПÑтница\", \"Суббота\"]\n },\n uk: {\n months: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"ВереÑень\", \"Жовтень\", \"ЛиÑтопад\", \"Грудень\"],\n dayOfWeekShort: [\"Ðдл\", \"Пнд\", \"Ð’Ñ‚Ñ€\", \"Срд\", \"Чтв\", \"Птн\", \"Сбт\"],\n dayOfWeek: [\"ÐеділÑ\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ÑтницÑ\", \"Субота\"]\n },\n en: {\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n dayOfWeekShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayOfWeek: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n el: {\n months: [\"ΙανουάÏιος\", \"ΦεβÏουάÏιος\", \"ΜάÏτιος\", \"ΑπÏίλιος\", \"Μάιος\", \"ΙοÏνιος\", \"ΙοÏλιος\", \"ΑÏγουστος\", \"ΣεπτÎμβÏιος\", \"ΟκτώβÏιος\", \"ÎοÎμβÏιος\", \"ΔεκÎμβÏιος\"],\n dayOfWeekShort: [\"ΚυÏ\", \"Δευ\", \"ΤÏι\", \"Τετ\", \"Πεμ\", \"ΠαÏ\", \"Σαβ\"],\n dayOfWeek: [\"ΚυÏιακή\", \"ΔευτÎÏα\", \"ΤÏίτη\", \"ΤετάÏτη\", \"Î Îμπτη\", \"ΠαÏασκευή\", \"Σάββατο\"]\n },\n de: {\n months: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\n dayOfWeekShort: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n dayOfWeek: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\n },\n nl: {\n months: [\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"],\n dayOfWeekShort: [\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"],\n dayOfWeek: [\"zondag\", \"maandag\", \"dinsdag\", \"woensdag\", \"donderdag\", \"vrijdag\", \"zaterdag\"]\n },\n tr: {\n months: [\"Ocak\", \"Åžubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"AÄŸustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\n dayOfWeekShort: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"],\n dayOfWeek: [\"Pazar\", \"Pazartesi\", \"Salı\", \"ÇarÅŸamba\", \"PerÅŸembe\", \"Cuma\", \"Cumartesi\"]\n },\n fr: {\n months: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\n dayOfWeekShort: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"],\n dayOfWeek: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"]\n },\n es: {\n months: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n dayOfWeekShort: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"],\n dayOfWeek: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"]\n },\n th: {\n months: [\"มà¸à¸£à¸²à¸„ม\", \"à¸à¸¸à¸¡à¸ าพันธ์\", \"มีนาคม\", \"เมษายน\", \"พฤษภาคม\", \"มิถุนายน\", \"à¸à¸£à¸à¸Žà¸²à¸„ม\", \"สิงหาคม\", \"à¸à¸±à¸™à¸¢à¸²à¸¢à¸™\", \"ตุลาคม\", \"พฤศจิà¸à¸²à¸¢à¸™\", \"ธันวาคม\"],\n dayOfWeekShort: [\"à¸à¸².\", \"จ.\", \"à¸.\", \"พ.\", \"พฤ.\", \"ศ.\", \"ส.\"],\n dayOfWeek: [\"à¸à¸²à¸—ิตย์\", \"จันทร์\", \"à¸à¸±à¸‡à¸„าร\", \"พุธ\", \"พฤหัส\", \"ศุà¸à¸£à¹Œ\", \"เสาร์\", \"à¸à¸²à¸—ิตย์\"]\n },\n pl: {\n months: [\"styczeÅ„\", \"luty\", \"marzec\", \"kwiecieÅ„\", \"maj\", \"czerwiec\", \"lipiec\", \"sierpieÅ„\", \"wrzesieÅ„\", \"październik\", \"listopad\", \"grudzieÅ„\"],\n dayOfWeekShort: [\"nd\", \"pn\", \"wt\", \"Å›r\", \"cz\", \"pt\", \"sb\"],\n dayOfWeek: [\"niedziela\", \"poniedziaÅ‚ek\", \"wtorek\", \"Å›roda\", \"czwartek\", \"piÄ…tek\", \"sobota\"]\n },\n pt: {\n months: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n dayOfWeekShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"],\n dayOfWeek: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\n },\n ch: {\n months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"å…月\", \"七月\", \"八月\", \"ä¹æœˆ\", \"å月\", \"å一月\", \"å二月\"],\n dayOfWeekShort: [\"æ—¥\", \"一\", \"二\", \"三\", \"å››\", \"五\", \"å…\"]\n },\n se: {\n months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n dayOfWeekShort: [\"Sön\", \"MÃ¥n\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\n },\n km: {\n months: [\"មករា​\", \"កុម្ភៈ\", \"មិនា​\", \"មáŸážŸáž¶â€‹\", \"ឧសភា​\", \"មិážáž»áž“ា​\", \"កក្កដា​\", \"សីហា​\", \"កញ្ញា​\", \"ážáž»áž›áž¶â€‹\", \"វិច្ឆិកា\", \"ធ្នូ​\"],\n dayOfWeekShort: [\"អាទិ​\", \"áž…áŸáž“្ទ​\", \"អង្គារ​\", \"ពុធ​\", \"ព្រហ​​\", \"សុក្រ​\", \"សៅរáŸ\"],\n dayOfWeek: [\"អាទិážáŸ’យ​\", \"áž…áŸáž“្ទ​\", \"អង្គារ​\", \"ពុធ​\", \"ព្រហស្បážáž·áŸâ€‹\", \"សុក្រ​\", \"សៅរáŸ\"]\n },\n kr: {\n months: [\"1ì›”\", \"2ì›”\", \"3ì›”\", \"4ì›”\", \"5ì›”\", \"6ì›”\", \"7ì›”\", \"8ì›”\", \"9ì›”\", \"10ì›”\", \"11ì›”\", \"12ì›”\"],\n dayOfWeekShort: [\"ì¼\", \"ì›”\", \"í™”\", \"수\", \"목\", \"금\", \"í† \"],\n dayOfWeek: [\"ì¼ìš”ì¼\", \"월요ì¼\", \"화요ì¼\", \"수요ì¼\", \"목요ì¼\", \"금요ì¼\", \"í† ìš”ì¼\"]\n },\n it: {\n months: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\n dayOfWeekShort: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n dayOfWeek: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"]\n },\n da: {\n months: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\n dayOfWeekShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"],\n dayOfWeek: [\"søndag\", \"mandag\", \"tirsdag\", \"onsdag\", \"torsdag\", \"fredag\", \"lørdag\"]\n },\n no: {\n months: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n dayOfWeekShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"],\n dayOfWeek: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\n },\n ja: {\n months: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\n dayOfWeekShort: [\"æ—¥\", \"月\", \"ç«\", \"æ°´\", \"木\", \"金\", \"土\"],\n dayOfWeek: [\"日曜\", \"月曜\", \"ç«æ›œ\", \"水曜\", \"木曜\", \"金曜\", \"土曜\"]\n },\n vi: {\n months: [\"Tháng 1\", \"Tháng 2\", \"Tháng 3\", \"Tháng 4\", \"Tháng 5\", \"Tháng 6\", \"Tháng 7\", \"Tháng 8\", \"Tháng 9\", \"Tháng 10\", \"Tháng 11\", \"Tháng 12\"],\n dayOfWeekShort: [\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"],\n dayOfWeek: [\"Chủ nháºt\", \"Thứ hai\", \"Thứ ba\", \"Thứ tÆ°\", \"Thứ năm\", \"Thứ sáu\", \"Thứ bảy\"]\n },\n sl: {\n months: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\n dayOfWeekShort: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"ÄŒet\", \"Pet\", \"Sob\"],\n dayOfWeek: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"ÄŒetrtek\", \"Petek\", \"Sobota\"]\n },\n cs: {\n months: [\"Leden\", \"Únor\", \"BÅ™ezen\", \"Duben\", \"KvÄ›ten\", \"ÄŒerven\", \"ÄŒervenec\", \"Srpen\", \"ZářÃ\", \"ŘÃjen\", \"Listopad\", \"Prosinec\"],\n dayOfWeekShort: [\"Ne\", \"Po\", \"Út\", \"St\", \"ÄŒt\", \"Pá\", \"So\"]\n },\n hu: {\n months: [\"Január\", \"Február\", \"Március\", \"Ãprilis\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\n dayOfWeekShort: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Cs\", \"Pé\", \"Szo\"],\n dayOfWeek: [\"vasárnap\", \"hétfÅ‘\", \"kedd\", \"szerda\", \"csütörtök\", \"péntek\", \"szombat\"]\n },\n az: {\n months: [\"Yanvar\", \"Fevral\", \"Mart\", \"Aprel\", \"May\", \"Iyun\", \"Iyul\", \"Avqust\", \"Sentyabr\", \"Oktyabr\", \"Noyabr\", \"Dekabr\"],\n dayOfWeekShort: [\"B\", \"Be\", \"Ça\", \"Ç\", \"Ca\", \"C\", \"Åž\"],\n dayOfWeek: [\"Bazar\", \"Bazar ertÉ™si\", \"ÇərÅŸÉ™nbÉ™ axÅŸamı\", \"ÇərÅŸÉ™nbÉ™\", \"CümÉ™ axÅŸamı\", \"CümÉ™\", \"ŞənbÉ™\"]\n },\n bs: {\n months: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n dayOfWeekShort: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"ÄŒet\", \"Pet\", \"Sub\"],\n dayOfWeek: [\"Nedjelja\", \"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"ÄŒetvrtak\", \"Petak\", \"Subota\"]\n },\n ca: {\n months: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n dayOfWeekShort: [\"Dg\", \"Dl\", \"Dt\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"],\n dayOfWeek: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\n },\n \"en-GB\": {\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n dayOfWeekShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n dayOfWeek: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n et: {\n months: [\"Jaanuar\", \"Veebruar\", \"Märts\", \"Aprill\", \"Mai\", \"Juuni\", \"Juuli\", \"August\", \"September\", \"Oktoober\", \"November\", \"Detsember\"],\n dayOfWeekShort: [\"P\", \"E\", \"T\", \"K\", \"N\", \"R\", \"L\"],\n dayOfWeek: [\"Pühapäev\", \"Esmaspäev\", \"Teisipäev\", \"Kolmapäev\", \"Neljapäev\", \"Reede\", \"Laupäev\"]\n },\n eu: {\n months: [\"Urtarrila\", \"Otsaila\", \"Martxoa\", \"Apirila\", \"Maiatza\", \"Ekaina\", \"Uztaila\", \"Abuztua\", \"Iraila\", \"Urria\", \"Azaroa\", \"Abendua\"],\n dayOfWeekShort: [\"Ig.\", \"Al.\", \"Ar.\", \"Az.\", \"Og.\", \"Or.\", \"La.\"],\n dayOfWeek: [\"Igandea\", \"Astelehena\", \"Asteartea\", \"Asteazkena\", \"Osteguna\", \"Ostirala\", \"Larunbata\"]\n },\n fi: {\n months: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\n dayOfWeekShort: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"],\n dayOfWeek: [\"sunnuntai\", \"maanantai\", \"tiistai\", \"keskiviikko\", \"torstai\", \"perjantai\", \"lauantai\"]\n },\n gl: {\n months: [\"Xan\", \"Feb\", \"Maz\", \"Abr\", \"Mai\", \"Xun\", \"Xul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dec\"],\n dayOfWeekShort: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Xov\", \"Ven\", \"Sab\"],\n dayOfWeek: [\"Domingo\", \"Luns\", \"Martes\", \"Mércores\", \"Xoves\", \"Venres\", \"Sábado\"]\n },\n hr: {\n months: [\"SijeÄanj\", \"VeljaÄa\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"],\n dayOfWeekShort: [\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"ÄŒet\", \"Pet\", \"Sub\"],\n dayOfWeek: [\"Nedjelja\", \"Ponedjeljak\", \"Utorak\", \"Srijeda\", \"ÄŒetvrtak\", \"Petak\", \"Subota\"]\n },\n ko: {\n months: [\"1ì›”\", \"2ì›”\", \"3ì›”\", \"4ì›”\", \"5ì›”\", \"6ì›”\", \"7ì›”\", \"8ì›”\", \"9ì›”\", \"10ì›”\", \"11ì›”\", \"12ì›”\"],\n dayOfWeekShort: [\"ì¼\", \"ì›”\", \"í™”\", \"수\", \"목\", \"금\", \"í† \"],\n dayOfWeek: [\"ì¼ìš”ì¼\", \"월요ì¼\", \"화요ì¼\", \"수요ì¼\", \"목요ì¼\", \"금요ì¼\", \"í† ìš”ì¼\"]\n },\n lt: {\n months: [\"Sausio\", \"Vasario\", \"Kovo\", \"Balandžio\", \"Gegužės\", \"Birželio\", \"Liepos\", \"RugpjÅ«Äio\", \"RugsÄ—jo\", \"Spalio\", \"LapkriÄio\", \"Gruodžio\"],\n dayOfWeekShort: [\"Sek\", \"Pir\", \"Ant\", \"Tre\", \"Ket\", \"Pen\", \"Å eÅ¡\"],\n dayOfWeek: [\"Sekmadienis\", \"Pirmadienis\", \"Antradienis\", \"TreÄiadienis\", \"Ketvirtadienis\", \"Penktadienis\", \"Å eÅ¡tadienis\"]\n },\n lv: {\n months: [\"JanvÄris\", \"FebruÄris\", \"Marts\", \"AprÄ«lis \", \"Maijs\", \"JÅ«nijs\", \"JÅ«lijs\", \"Augusts\", \"Septembris\", \"Oktobris\", \"Novembris\", \"Decembris\"],\n dayOfWeekShort: [\"Sv\", \"Pr\", \"Ot\", \"Tr\", \"Ct\", \"Pk\", \"St\"],\n dayOfWeek: [\"SvÄ“tdiena\", \"Pirmdiena\", \"Otrdiena\", \"TreÅ¡diena\", \"Ceturtdiena\", \"Piektdiena\", \"Sestdiena\"]\n },\n mk: {\n months: [\"јануари\", \"февруари\", \"март\", \"април\", \"мај\", \"јуни\", \"јули\", \"авгуÑÑ‚\", \"Ñептември\", \"октомври\", \"ноември\", \"декември\"],\n dayOfWeekShort: [\"нед\", \"пон\", \"вто\", \"Ñре\", \"чет\", \"пет\", \"Ñаб\"],\n dayOfWeek: [\"Ðедела\", \"Понеделник\", \"Вторник\", \"Среда\", \"Четврток\", \"Петок\", \"Сабота\"]\n },\n mn: {\n months: [\"1-Ñ€ Ñар\", \"2-Ñ€ Ñар\", \"3-Ñ€ Ñар\", \"4-Ñ€ Ñар\", \"5-Ñ€ Ñар\", \"6-Ñ€ Ñар\", \"7-Ñ€ Ñар\", \"8-Ñ€ Ñар\", \"9-Ñ€ Ñар\", \"10-Ñ€ Ñар\", \"11-Ñ€ Ñар\", \"12-Ñ€ Ñар\"],\n dayOfWeekShort: [\"Дав\", \"ÐœÑг\", \"Лха\", \"Пүр\", \"БÑн\", \"БÑм\", \"ÐÑм\"],\n dayOfWeek: [\"Даваа\", \"ÐœÑгмар\", \"Лхагва\", \"ПүрÑв\", \"БааÑан\", \"БÑмба\", \"ÐÑм\"]\n },\n \"pt-BR\": {\n months: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\n dayOfWeekShort: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n dayOfWeek: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\n },\n sk: {\n months: [\"Január\", \"Február\", \"Marec\", \"AprÃl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\n dayOfWeekShort: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Å t\", \"Pi\", \"So\"],\n dayOfWeek: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Å tvrtok\", \"Piatok\", \"Sobota\"]\n },\n sq: {\n months: [\"Janar\", \"Shkurt\", \"Mars\", \"Prill\", \"Maj\", \"Qershor\", \"Korrik\", \"Gusht\", \"Shtator\", \"Tetor\", \"Nëntor\", \"Dhjetor\"],\n dayOfWeekShort: [\"Die\", \"Hën\", \"Mar\", \"Mër\", \"Enj\", \"Pre\", \"Shtu\"],\n dayOfWeek: [\"E Diel\", \"E Hënë\", \"E MartÄ“\", \"E Mërkurë\", \"E Enjte\", \"E Premte\", \"E Shtunë\"]\n },\n \"sr-YU\": {\n months: [\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"],\n dayOfWeekShort: [\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"Äet\", \"Pet\", \"Sub\"],\n dayOfWeek: [\"Nedelja\", \"Ponedeljak\", \"Utorak\", \"Sreda\", \"ÄŒetvrtak\", \"Petak\", \"Subota\"]\n },\n sr: {\n months: [\"јануар\", \"фебруар\", \"март\", \"април\", \"мај\", \"јун\", \"јул\", \"авгуÑÑ‚\", \"Ñептембар\", \"октобар\", \"новембар\", \"децембар\"],\n dayOfWeekShort: [\"нед\", \"пон\", \"уто\", \"Ñре\", \"чет\", \"пет\", \"Ñуб\"],\n dayOfWeek: [\"Ðедеља\", \"Понедељак\", \"Уторак\", \"Среда\", \"Четвртак\", \"Петак\", \"Субота\"]\n },\n sv: {\n months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\n dayOfWeekShort: [\"Sön\", \"MÃ¥n\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"],\n dayOfWeek: [\"Söndag\", \"MÃ¥ndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\n },\n \"zh-TW\": {\n months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"å…月\", \"七月\", \"八月\", \"ä¹æœˆ\", \"å月\", \"å一月\", \"å二月\"],\n dayOfWeekShort: [\"æ—¥\", \"一\", \"二\", \"三\", \"å››\", \"五\", \"å…\"],\n dayOfWeek: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期å…\"]\n },\n zh: {\n months: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"å…月\", \"七月\", \"八月\", \"ä¹æœˆ\", \"å月\", \"å一月\", \"å二月\"],\n dayOfWeekShort: [\"æ—¥\", \"一\", \"二\", \"三\", \"å››\", \"五\", \"å…\"],\n dayOfWeek: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期å…\"]\n },\n ug: {\n months: [\"1-ئاي\", \"2-ئاي\", \"3-ئاي\", \"4-ئاي\", \"5-ئاي\", \"6-ئاي\", \"7-ئاي\", \"8-ئاي\", \"9-ئاي\", \"10-ئاي\", \"11-ئاي\", \"12-ئاي\"],\n dayOfWeek: [\"يەكشەنبە\", \"دۈشەنبە\", \"سەيشەنبە\", \"چارشەنبە\", \"پەيشەنبە\", \"جۈمە\", \"شەنبە\"]\n },\n he: {\n months: [\"×™× ×•×ר\", \"פברו×ר\", \"מרץ\", \"×פריל\", \"מ××™\", \"×™×•× ×™\", \"יולי\", \"×וגוסט\", \"ספטמבר\", \"×וקטובר\", \"× ×•×‘×ž×‘×¨\", \"דצמבר\"],\n dayOfWeekShort: [\"×'\", \"ב'\", \"×’'\", \"ד'\", \"×”'\", \"ו'\", \"שבת\"],\n dayOfWeek: [\"ר×שון\", \"×©× ×™\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\", \"ר×שון\"]\n },\n hy: {\n months: [\"Õ€Õ¸Ö‚Õ¶Õ¾Õ¡Ö€\", \"Õ“Õ¥Õ¿Ö€Õ¾Õ¡Ö€\", \"Õ„Õ¡Ö€Õ¿\", \"Ô±ÕºÖ€Õ«Õ¬\", \"Õ„Õ¡ÕµÕ«Õ½\", \"Õ€Õ¸Ö‚Õ¶Õ«Õ½\", \"Õ€Õ¸Ö‚Õ¬Õ«Õ½\", \"Õ•Õ£Õ¸Õ½Õ¿Õ¸Õ½\", \"ÕÕ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€\", \"Õ€Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€\", \"Õ†Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€\", \"Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€\"],\n dayOfWeekShort: [\"Ô¿Õ«\", \"ÔµÖ€Õ¯\", \"ÔµÖ€Ö„\", \"Õ‰Õ¸Ö€\", \"Õ€Õ¶Õ£\", \"ÕˆÖ‚Ö€Õ¢\", \"Õ‡Õ¢Õ©\"],\n dayOfWeek: [\"Ô¿Õ«Ö€Õ¡Õ¯Õ«\", \"ÔµÖ€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«\", \"ÔµÖ€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«\", \"Õ‰Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«\", \"Õ€Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«\", \"ÕˆÖ‚Ö€Õ¢Õ¡Õ©\", \"Õ‡Õ¡Õ¢Õ¡Õ©\"]\n },\n kg: {\n months: [\"Үчтүн айы\", \"Бирдин айы\", \"Жалган Куран\", \"Чын Куран\", \"Бугу\", \"Кулжа\", \"Теке\", \"Баш Оона\", \"ÐÑк Оона\", \"Тогуздун айы\", \"Жетинин айы\", \"Бештин айы\"],\n dayOfWeekShort: [\"Жек\", \"Дүй\", \"Шей\", \"Шар\", \"Бей\", \"Жум\", \"Ише\"],\n dayOfWeek: [\"Жекшемб\", \"Дүйшөмб\", \"Шейшемб\", \"Шаршемб\", \"Бейшемби\", \"Жума\", \"Ишенб\"]\n },\n rm: {\n months: [\"Schaner\", \"Favrer\", \"Mars\", \"Avrigl\", \"Matg\", \"Zercladur\", \"Fanadur\", \"Avust\", \"Settember\", \"October\", \"November\", \"December\"],\n dayOfWeekShort: [\"Du\", \"Gli\", \"Ma\", \"Me\", \"Gie\", \"Ve\", \"So\"],\n dayOfWeek: [\"Dumengia\", \"Glindesdi\", \"Mardi\", \"Mesemna\", \"Gievgia\", \"Venderdi\", \"Sonda\"]\n },\n ka: {\n months: [\"იáƒáƒœáƒ•áƒáƒ ი\", \"თებერვáƒáƒšáƒ˜\", \"მáƒáƒ ტი\", \"áƒáƒžáƒ ილი\", \"მáƒáƒ˜áƒ¡áƒ˜\", \"ივნისი\", \"ივლისი\", \"áƒáƒ’ვისტáƒ\", \"სექტემბერი\", \"áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი\", \"ნáƒáƒ”მბერი\", \"დეკემბერი\"],\n dayOfWeekShort: [\"კვ\", \"áƒáƒ შ\", \"სáƒáƒ›áƒ¨\", \"áƒáƒ—ხ\", \"ხუთ\", \"პáƒáƒ \", \"შáƒáƒ‘\"],\n dayOfWeek: [\"კვირáƒ\", \"áƒáƒ შáƒáƒ‘áƒáƒ—ი\", \"სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი\", \"áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი\", \"ხუთშáƒáƒ‘áƒáƒ—ი\", \"პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი\", \"შáƒáƒ‘áƒáƒ—ი\"]\n }\n },\n ownerDocument: document,\n contentWindow: window,\n value: \"\",\n rtl: !1,\n format: \"Y/m/d H:i\",\n formatTime: \"H:i\",\n formatDate: \"Y/m/d\",\n startDate: !1,\n step: 60,\n monthChangeSpinner: !0,\n closeOnDateSelect: !1,\n closeOnTimeSelect: !0,\n closeOnWithoutClick: !0,\n closeOnInputClick: !0,\n openOnFocus: !0,\n timepicker: !0,\n datepicker: !0,\n weeks: !1,\n defaultTime: !1,\n defaultDate: !1,\n minDate: !1,\n maxDate: !1,\n minTime: !1,\n maxTime: !1,\n minDateTime: !1,\n maxDateTime: !1,\n allowTimes: [],\n opened: !1,\n initTime: !0,\n inline: !1,\n theme: \"\",\n touchMovedThreshold: 5,\n onSelectDate: function () {},\n onSelectTime: function () {},\n onChangeMonth: function () {},\n onGetWeekOfYear: function () {},\n onChangeYear: function () {},\n onChangeDateTime: function () {},\n onShow: function () {},\n onClose: function () {},\n onGenerate: function () {},\n withoutCopyright: !0,\n inverseButton: !1,\n hours12: !1,\n next: \"xdsoft_next\",\n prev: \"xdsoft_prev\",\n dayOfWeekStart: 0,\n parentID: \"body\",\n timeHeightInTimePicker: 25,\n timepickerScrollbar: !0,\n todayButton: !0,\n prevButton: !0,\n nextButton: !0,\n defaultSelect: !0,\n scrollMonth: !0,\n scrollTime: !0,\n scrollInput: !0,\n lazyInit: !1,\n mask: !1,\n validateOnBlur: !0,\n allowBlank: !0,\n yearStart: 1950,\n yearEnd: 2050,\n monthStart: 0,\n monthEnd: 11,\n style: \"\",\n id: \"\",\n fixed: !1,\n roundTime: \"round\",\n className: \"\",\n weekends: [],\n highlightedDates: [],\n highlightedPeriods: [],\n allowDates: [],\n allowDateRe: null,\n disabledDates: [],\n disabledWeekDays: [],\n yearOffset: 0,\n beforeShowDay: null,\n enterLikeTab: !0,\n showApplyButton: !1,\n insideParent: !1\n },\n E = null,\n n = null,\n R = \"en\",\n a = {\n meridiem: [\"AM\", \"PM\"]\n },\n r = function () {\n var e = s.i18n[R],\n t = {\n days: e.dayOfWeek,\n daysShort: e.dayOfWeekShort,\n months: e.months,\n monthsShort: L.map(e.months, function (e) {\n return e.substring(0, 3);\n })\n };\n \"function\" == typeof DateFormatter && (E = n = new DateFormatter({\n dateSettings: L.extend({}, a, t)\n }));\n },\n o = {\n moment: {\n default_options: {\n format: \"YYYY/MM/DD HH:mm\",\n formatDate: \"YYYY/MM/DD\",\n formatTime: \"HH:mm\"\n },\n formatter: {\n parseDate: function (e, t) {\n if (i(t)) return n.parseDate(e, t);\n var a = moment(e, t);\n return !!a.isValid() && a.toDate();\n },\n formatDate: function (e, t) {\n return i(t) ? n.formatDate(e, t) : moment(e).format(t);\n },\n formatMask: function (e) {\n return e.replace(/Y{4}/g, \"9999\").replace(/Y{2}/g, \"99\").replace(/M{2}/g, \"19\").replace(/D{2}/g, \"39\").replace(/H{2}/g, \"29\").replace(/m{2}/g, \"59\").replace(/s{2}/g, \"59\");\n }\n }\n }\n };\n L.datetimepicker = {\n setLocale: function (e) {\n var t = s.i18n[e] ? e : \"en\";\n R !== t && (R = t, r());\n },\n setDateFormatter: function (e) {\n if (\"string\" == typeof e && o.hasOwnProperty(e)) {\n var t = o[e];\n L.extend(s, t.default_options), E = t.formatter;\n } else E = e;\n }\n };\n var t = {\n RFC_2822: \"D, d M Y H:i:s O\",\n ATOM: \"Y-m-dTH:i:sP\",\n ISO_8601: \"Y-m-dTH:i:sO\",\n RFC_822: \"D, d M y H:i:s O\",\n RFC_850: \"l, d-M-y H:i:s T\",\n RFC_1036: \"D, d M y H:i:s O\",\n RFC_1123: \"D, d M Y H:i:s O\",\n RSS: \"D, d M Y H:i:s O\",\n W3C: \"Y-m-dTH:i:sP\"\n },\n i = function (e) {\n return -1 !== Object.values(t).indexOf(e);\n };\n function m(e, t, a) {\n this.date = e, this.desc = t, this.style = a;\n }\n L.extend(L.datetimepicker, t), r(), window.getComputedStyle || (window.getComputedStyle = function (a) {\n return this.el = a, this.getPropertyValue = function (e) {\n var t = /(-([a-z]))/g;\n return \"float\" === e && (e = \"styleFloat\"), t.test(e) && (e = e.replace(t, function (e, t, a) {\n return a.toUpperCase();\n })), a.currentStyle[e] || null;\n }, this;\n }), Array.prototype.indexOf || (Array.prototype.indexOf = function (e, t) {\n var a, n;\n for (a = t || 0, n = this.length; a < n; a += 1) if (this[a] === e) return a;\n return -1;\n }), Date.prototype.countDaysInMonth = function () {\n return new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();\n }, L.fn.xdsoftScroller = function (p, D) {\n return this.each(function () {\n var o,\n i,\n s,\n d,\n u,\n l = L(this),\n a = function (e) {\n var t,\n a = {\n x: 0,\n y: 0\n };\n return \"touchstart\" === e.type || \"touchmove\" === e.type || \"touchend\" === e.type || \"touchcancel\" === e.type ? (t = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0], a.x = t.clientX, a.y = t.clientY) : \"mousedown\" !== e.type && \"mouseup\" !== e.type && \"mousemove\" !== e.type && \"mouseover\" !== e.type && \"mouseout\" !== e.type && \"mouseenter\" !== e.type && \"mouseleave\" !== e.type || (a.x = e.clientX, a.y = e.clientY), a;\n },\n f = 100,\n n = !1,\n r = 0,\n c = 0,\n m = 0,\n t = !1,\n h = 0,\n g = function () {};\n \"hide\" !== D ? (L(this).hasClass(\"xdsoft_scroller_box\") || (o = l.children().eq(0), i = l[0].clientHeight, s = o[0].offsetHeight, d = L('<div class=\"xdsoft_scrollbar\"></div>'), u = L('<div class=\"xdsoft_scroller\"></div>'), d.append(u), l.addClass(\"xdsoft_scroller_box\").append(d), g = function (e) {\n var t = a(e).y - r + h;\n t < 0 && (t = 0), t + u[0].offsetHeight > m && (t = m - u[0].offsetHeight), l.trigger(\"scroll_element.xdsoft_scroller\", [f ? t / f : 0]);\n }, u.on(\"touchstart.xdsoft_scroller mousedown.xdsoft_scroller\", function (e) {\n i || l.trigger(\"resize_scroll.xdsoft_scroller\", [D]), r = a(e).y, h = parseInt(u.css(\"margin-top\"), 10), m = d[0].offsetHeight, \"mousedown\" === e.type || \"touchstart\" === e.type ? (p.ownerDocument && L(p.ownerDocument.body).addClass(\"xdsoft_noselect\"), L([p.ownerDocument.body, p.contentWindow]).on(\"touchend mouseup.xdsoft_scroller\", function e() {\n L([p.ownerDocument.body, p.contentWindow]).off(\"touchend mouseup.xdsoft_scroller\", e).off(\"mousemove.xdsoft_scroller\", g).removeClass(\"xdsoft_noselect\");\n }), L(p.ownerDocument.body).on(\"mousemove.xdsoft_scroller\", g)) : (t = !0, e.stopPropagation(), e.preventDefault());\n }).on(\"touchmove\", function (e) {\n t && (e.preventDefault(), g(e));\n }).on(\"touchend touchcancel\", function () {\n t = !1, h = 0;\n }), l.on(\"scroll_element.xdsoft_scroller\", function (e, t) {\n i || l.trigger(\"resize_scroll.xdsoft_scroller\", [t, !0]), t = 1 < t ? 1 : t < 0 || isNaN(t) ? 0 : t, u.css(\"margin-top\", f * t), setTimeout(function () {\n o.css(\"marginTop\", -parseInt((o[0].offsetHeight - i) * t, 10));\n }, 10);\n }).on(\"resize_scroll.xdsoft_scroller\", function (e, t, a) {\n var n, r;\n i = l[0].clientHeight, s = o[0].offsetHeight, r = (n = i / s) * d[0].offsetHeight, 1 < n ? u.hide() : (u.show(), u.css(\"height\", parseInt(10 < r ? r : 10, 10)), f = d[0].offsetHeight - u[0].offsetHeight, !0 !== a && l.trigger(\"scroll_element.xdsoft_scroller\", [t || Math.abs(parseInt(o.css(\"marginTop\"), 10)) / (s - i)]));\n }), l.on(\"mousewheel\", function (e) {\n var t = Math.abs(parseInt(o.css(\"marginTop\"), 10));\n return (t -= 20 * e.deltaY) < 0 && (t = 0), l.trigger(\"scroll_element.xdsoft_scroller\", [t / (s - i)]), e.stopPropagation(), !1;\n }), l.on(\"touchstart\", function (e) {\n n = a(e), c = Math.abs(parseInt(o.css(\"marginTop\"), 10));\n }), l.on(\"touchmove\", function (e) {\n if (n) {\n e.preventDefault();\n var t = a(e);\n l.trigger(\"scroll_element.xdsoft_scroller\", [(c - (t.y - n.y)) / (s - i)]);\n }\n }), l.on(\"touchend touchcancel\", function () {\n n = !1, c = 0;\n })), l.trigger(\"resize_scroll.xdsoft_scroller\", [D])) : l.find(\".xdsoft_scrollbar\").hide();\n });\n }, L.fn.datetimepicker = function (H, a) {\n var n,\n r,\n o = this,\n p = 17,\n D = 13,\n y = 27,\n v = 37,\n b = 38,\n k = 39,\n x = 40,\n T = 9,\n S = 116,\n M = 65,\n w = 67,\n j = 86,\n J = 90,\n z = 89,\n I = !1,\n N = L.isPlainObject(H) || !H ? L.extend(!0, {}, s, H) : L.extend(!0, {}, s),\n i = 0;\n return n = function (O) {\n var t,\n n,\n a,\n r,\n W,\n h,\n _ = L('<div class=\"xdsoft_datetimepicker xdsoft_noselect\"></div>'),\n e = L('<div class=\"xdsoft_copyright\"><a target=\"_blank\" href=\"http://xdsoft.net/jqplugins/datetimepicker/\">xdsoft.net</a></div>'),\n g = L('<div class=\"xdsoft_datepicker active\"></div>'),\n F = L('<div class=\"xdsoft_monthpicker\"><button type=\"button\" class=\"xdsoft_prev\"></button><button type=\"button\" class=\"xdsoft_today_button\"></button><div class=\"xdsoft_label xdsoft_month\"><span></span><i></i></div><div class=\"xdsoft_label xdsoft_year\"><span></span><i></i></div><button type=\"button\" class=\"xdsoft_next\"></button></div>'),\n C = L('<div class=\"xdsoft_calendar\"></div>'),\n o = L('<div class=\"xdsoft_timepicker active\"><button type=\"button\" class=\"xdsoft_prev\"></button><div class=\"xdsoft_time_box\"></div><button type=\"button\" class=\"xdsoft_next\"></button></div>'),\n u = o.find(\".xdsoft_time_box\").eq(0),\n P = L('<div class=\"xdsoft_time_variant\"></div>'),\n i = L('<button type=\"button\" class=\"xdsoft_save_selected blue-gradient-button\">Save Selected</button>'),\n Y = L('<div class=\"xdsoft_select xdsoft_monthselect\"><div></div></div>'),\n A = L('<div class=\"xdsoft_select xdsoft_yearselect\"><div></div></div>'),\n s = !1,\n d = 0;\n N.id && _.attr(\"id\", N.id), N.style && _.attr(\"style\", N.style), N.weeks && _.addClass(\"xdsoft_showweeks\"), N.rtl && _.addClass(\"xdsoft_rtl\"), _.addClass(\"xdsoft_\" + N.theme), _.addClass(N.className), F.find(\".xdsoft_month span\").after(Y), F.find(\".xdsoft_year span\").after(A), F.find(\".xdsoft_month,.xdsoft_year\").on(\"touchstart mousedown.xdsoft\", function (e) {\n var t,\n a,\n n = L(this).find(\".xdsoft_select\").eq(0),\n r = 0,\n o = 0,\n i = n.is(\":visible\");\n for (F.find(\".xdsoft_select\").hide(), W.currentTime && (r = W.currentTime[L(this).hasClass(\"xdsoft_month\") ? \"getMonth\" : \"getFullYear\"]()), n[i ? \"hide\" : \"show\"](), t = n.find(\"div.xdsoft_option\"), a = 0; a < t.length && t.eq(a).data(\"value\") !== r; a += 1) o += t[0].offsetHeight;\n return n.xdsoftScroller(N, o / (n.children()[0].offsetHeight - n[0].clientHeight)), e.stopPropagation(), !1;\n });\n var l = function (e) {\n var t = e.originalEvent,\n a = t.touches ? t.touches[0] : t;\n this.touchStartPosition = this.touchStartPosition || a;\n var n = Math.abs(this.touchStartPosition.clientX - a.clientX),\n r = Math.abs(this.touchStartPosition.clientY - a.clientY);\n Math.sqrt(n * n + r * r) > N.touchMovedThreshold && (this.touchMoved = !0);\n };\n function f() {\n var e,\n t = !1;\n return N.startDate ? t = W.strToDate(N.startDate) : (t = N.value || (O && O.val && O.val() ? O.val() : \"\")) ? (t = W.strToDateTime(t), N.yearOffset && (t = new Date(t.getFullYear() - N.yearOffset, t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), t.getSeconds(), t.getMilliseconds()))) : N.defaultDate && (t = W.strToDateTime(N.defaultDate), N.defaultTime && (e = W.strtotime(N.defaultTime), t.setHours(e.getHours()), t.setMinutes(e.getMinutes()))), t && W.isValidDate(t) ? _.data(\"changed\", !0) : t = \"\", t || 0;\n }\n function c(m) {\n var h = function (e, t) {\n var a = e.replace(/([\\[\\]\\/\\{\\}\\(\\)\\-\\.\\+]{1})/g, \"\\\\$1\").replace(/_/g, \"{digit+}\").replace(/([0-9]{1})/g, \"{digit$1}\").replace(/\\{digit([0-9]{1})\\}/g, \"[0-$1_]{1}\").replace(/\\{digit[\\+]\\}/g, \"[0-9_]{1}\");\n return new RegExp(a).test(t);\n },\n g = function (e, t) {\n if (!(e = \"string\" == typeof e || e instanceof String ? m.ownerDocument.getElementById(e) : e)) return !1;\n if (e.createTextRange) {\n var a = e.createTextRange();\n return a.collapse(!0), a.moveEnd(\"character\", t), a.moveStart(\"character\", t), a.select(), !0;\n }\n return !!e.setSelectionRange && (e.setSelectionRange(t, t), !0);\n };\n m.mask && O.off(\"keydown.xdsoft\"), !0 === m.mask && (E.formatMask ? m.mask = E.formatMask(m.format) : m.mask = m.format.replace(/Y/g, \"9999\").replace(/F/g, \"9999\").replace(/m/g, \"19\").replace(/d/g, \"39\").replace(/H/g, \"29\").replace(/i/g, \"59\").replace(/s/g, \"59\")), \"string\" === L.type(m.mask) && (h(m.mask, O.val()) || (O.val(m.mask.replace(/[0-9]/g, \"_\")), g(O[0], 0)), O.on(\"paste.xdsoft\", function (e) {\n var t = (e.clipboardData || e.originalEvent.clipboardData || window.clipboardData).getData(\"text\"),\n a = this.value,\n n = this.selectionStart;\n return a = a.substr(0, n) + t + a.substr(n + t.length), n += t.length, h(m.mask, a) ? (this.value = a, g(this, n)) : \"\" === L.trim(a) ? this.value = m.mask.replace(/[0-9]/g, \"_\") : O.trigger(\"error_input.xdsoft\"), e.preventDefault(), !1;\n }), O.on(\"keydown.xdsoft\", function (e) {\n var t,\n a = this.value,\n n = e.which,\n r = this.selectionStart,\n o = this.selectionEnd,\n i = r !== o;\n if (48 <= n && n <= 57 || 96 <= n && n <= 105 || 8 === n || 46 === n) {\n for (t = 8 === n || 46 === n ? \"_\" : String.fromCharCode(96 <= n && n <= 105 ? n - 48 : n), 8 === n && r && !i && (r -= 1);;) {\n var s = m.mask.substr(r, 1),\n d = r < m.mask.length,\n u = 0 < r;\n if (!(/[^0-9_]/.test(s) && d && u)) break;\n r += 8 !== n || i ? 1 : -1;\n }\n if (e.metaKey && (i = !(r = 0)), i) {\n var l = o - r,\n f = m.mask.replace(/[0-9]/g, \"_\"),\n c = f.substr(r, l).substr(1);\n a = a.substr(0, r) + (t + c) + a.substr(r + l);\n } else {\n a = a.substr(0, r) + t + a.substr(r + 1);\n }\n if (\"\" === L.trim(a)) a = f;else if (r === m.mask.length) return e.preventDefault(), !1;\n for (r += 8 === n ? 0 : 1; /[^0-9_]/.test(m.mask.substr(r, 1)) && r < m.mask.length && 0 < r;) r += 8 === n ? 0 : 1;\n h(m.mask, a) ? (this.value = a, g(this, r)) : \"\" === L.trim(a) ? this.value = m.mask.replace(/[0-9]/g, \"_\") : O.trigger(\"error_input.xdsoft\");\n } else if (-1 !== [M, w, j, J, z].indexOf(n) && I || -1 !== [y, b, x, v, k, S, p, T, D].indexOf(n)) return !0;\n return e.preventDefault(), !1;\n }));\n }\n F.find(\".xdsoft_select\").xdsoftScroller(N).on(\"touchstart mousedown.xdsoft\", function (e) {\n var t = e.originalEvent;\n this.touchMoved = !1, this.touchStartPosition = t.touches ? t.touches[0] : t, e.stopPropagation(), e.preventDefault();\n }).on(\"touchmove\", \".xdsoft_option\", l).on(\"touchend mousedown.xdsoft\", \".xdsoft_option\", function () {\n if (!this.touchMoved) {\n void 0 !== W.currentTime && null !== W.currentTime || (W.currentTime = W.now());\n var e = W.currentTime.getFullYear();\n W && W.currentTime && W.currentTime[L(this).parent().parent().hasClass(\"xdsoft_monthselect\") ? \"setMonth\" : \"setFullYear\"](L(this).data(\"value\")), L(this).parent().parent().hide(), _.trigger(\"xchange.xdsoft\"), N.onChangeMonth && L.isFunction(N.onChangeMonth) && N.onChangeMonth.call(_, W.currentTime, _.data(\"input\")), e !== W.currentTime.getFullYear() && L.isFunction(N.onChangeYear) && N.onChangeYear.call(_, W.currentTime, _.data(\"input\"));\n }\n }), _.getValue = function () {\n return W.getCurrentTime();\n }, _.setOptions = function (e) {\n var l = {};\n N = L.extend(!0, {}, N, e), e.allowTimes && L.isArray(e.allowTimes) && e.allowTimes.length && (N.allowTimes = L.extend(!0, [], e.allowTimes)), e.weekends && L.isArray(e.weekends) && e.weekends.length && (N.weekends = L.extend(!0, [], e.weekends)), e.allowDates && L.isArray(e.allowDates) && e.allowDates.length && (N.allowDates = L.extend(!0, [], e.allowDates)), e.allowDateRe && \"[object String]\" === Object.prototype.toString.call(e.allowDateRe) && (N.allowDateRe = new RegExp(e.allowDateRe)), e.highlightedDates && L.isArray(e.highlightedDates) && e.highlightedDates.length && (L.each(e.highlightedDates, function (e, t) {\n var a,\n n = L.map(t.split(\",\"), L.trim),\n r = new m(E.parseDate(n[0], N.formatDate), n[1], n[2]),\n o = E.formatDate(r.date, N.formatDate);\n void 0 !== l[o] ? (a = l[o].desc) && a.length && r.desc && r.desc.length && (l[o].desc = a + \"\\n\" + r.desc) : l[o] = r;\n }), N.highlightedDates = L.extend(!0, [], l)), e.highlightedPeriods && L.isArray(e.highlightedPeriods) && e.highlightedPeriods.length && (l = L.extend(!0, [], N.highlightedDates), L.each(e.highlightedPeriods, function (e, t) {\n var a, n, r, o, i, s, d;\n if (L.isArray(t)) a = t[0], n = t[1], r = t[2], d = t[3];else {\n var u = L.map(t.split(\",\"), L.trim);\n a = E.parseDate(u[0], N.formatDate), n = E.parseDate(u[1], N.formatDate), r = u[2], d = u[3];\n }\n for (; a <= n;) o = new m(a, r, d), i = E.formatDate(a, N.formatDate), a.setDate(a.getDate() + 1), void 0 !== l[i] ? (s = l[i].desc) && s.length && o.desc && o.desc.length && (l[i].desc = s + \"\\n\" + o.desc) : l[i] = o;\n }), N.highlightedDates = L.extend(!0, [], l)), e.disabledDates && L.isArray(e.disabledDates) && e.disabledDates.length && (N.disabledDates = L.extend(!0, [], e.disabledDates)), e.disabledWeekDays && L.isArray(e.disabledWeekDays) && e.disabledWeekDays.length && (N.disabledWeekDays = L.extend(!0, [], e.disabledWeekDays)), !N.open && !N.opened || N.inline || O.trigger(\"open.xdsoft\"), N.inline && (s = !0, _.addClass(\"xdsoft_inline\"), O.after(_).hide()), N.inverseButton && (N.next = \"xdsoft_prev\", N.prev = \"xdsoft_next\"), N.datepicker ? g.addClass(\"active\") : g.removeClass(\"active\"), N.timepicker ? o.addClass(\"active\") : o.removeClass(\"active\"), N.value && (W.setCurrentTime(N.value), O && O.val && O.val(W.str)), isNaN(N.dayOfWeekStart) ? N.dayOfWeekStart = 0 : N.dayOfWeekStart = parseInt(N.dayOfWeekStart, 10) % 7, N.timepickerScrollbar || u.xdsoftScroller(N, \"hide\"), N.minDate && /^[\\+\\-](.*)$/.test(N.minDate) && (N.minDate = E.formatDate(W.strToDateTime(N.minDate), N.formatDate)), N.maxDate && /^[\\+\\-](.*)$/.test(N.maxDate) && (N.maxDate = E.formatDate(W.strToDateTime(N.maxDate), N.formatDate)), N.minDateTime && /^\\+(.*)$/.test(N.minDateTime) && (N.minDateTime = W.strToDateTime(N.minDateTime).dateFormat(N.formatDate)), N.maxDateTime && /^\\+(.*)$/.test(N.maxDateTime) && (N.maxDateTime = W.strToDateTime(N.maxDateTime).dateFormat(N.formatDate)), i.toggle(N.showApplyButton), F.find(\".xdsoft_today_button\").css(\"visibility\", N.todayButton ? \"visible\" : \"hidden\"), F.find(\".\" + N.prev).css(\"visibility\", N.prevButton ? \"visible\" : \"hidden\"), F.find(\".\" + N.next).css(\"visibility\", N.nextButton ? \"visible\" : \"hidden\"), c(N), N.validateOnBlur && O.off(\"blur.xdsoft\").on(\"blur.xdsoft\", function () {\n if (N.allowBlank && (!L.trim(L(this).val()).length || \"string\" == typeof N.mask && L.trim(L(this).val()) === N.mask.replace(/[0-9]/g, \"_\"))) L(this).val(null), _.data(\"xdsoft_datetime\").empty();else {\n var e = E.parseDate(L(this).val(), N.format);\n if (e) L(this).val(E.formatDate(e, N.format));else {\n var t = +[L(this).val()[0], L(this).val()[1]].join(\"\"),\n a = +[L(this).val()[2], L(this).val()[3]].join(\"\");\n !N.datepicker && N.timepicker && 0 <= t && t < 24 && 0 <= a && a < 60 ? L(this).val([t, a].map(function (e) {\n return 9 < e ? e : \"0\" + e;\n }).join(\":\")) : L(this).val(E.formatDate(W.now(), N.format));\n }\n _.data(\"xdsoft_datetime\").setCurrentTime(L(this).val());\n }\n _.trigger(\"changedatetime.xdsoft\"), _.trigger(\"close.xdsoft\");\n }), N.dayOfWeekStartPrev = 0 === N.dayOfWeekStart ? 6 : N.dayOfWeekStart - 1, _.trigger(\"xchange.xdsoft\").trigger(\"afterOpen.xdsoft\");\n }, _.data(\"options\", N).on(\"touchstart mousedown.xdsoft\", function (e) {\n return e.stopPropagation(), e.preventDefault(), A.hide(), Y.hide(), !1;\n }), u.append(P), u.xdsoftScroller(N), _.on(\"afterOpen.xdsoft\", function () {\n u.xdsoftScroller(N);\n }), _.append(g).append(o), !0 !== N.withoutCopyright && _.append(e), g.append(F).append(C).append(i), N.insideParent ? L(O).parent().append(_) : L(N.parentID).append(_), W = new function () {\n var r = this;\n r.now = function (e) {\n var t,\n a,\n n = new Date();\n return !e && N.defaultDate && (t = r.strToDateTime(N.defaultDate), n.setFullYear(t.getFullYear()), n.setMonth(t.getMonth()), n.setDate(t.getDate())), n.setFullYear(n.getFullYear()), !e && N.defaultTime && (a = r.strtotime(N.defaultTime), n.setHours(a.getHours()), n.setMinutes(a.getMinutes()), n.setSeconds(a.getSeconds()), n.setMilliseconds(a.getMilliseconds())), n;\n }, r.isValidDate = function (e) {\n return \"[object Date]\" === Object.prototype.toString.call(e) && !isNaN(e.getTime());\n }, r.setCurrentTime = function (e, t) {\n \"string\" == typeof e ? r.currentTime = r.strToDateTime(e) : r.isValidDate(e) ? r.currentTime = e : e || t || !N.allowBlank || N.inline ? r.currentTime = r.now() : r.currentTime = null, _.trigger(\"xchange.xdsoft\");\n }, r.empty = function () {\n r.currentTime = null;\n }, r.getCurrentTime = function () {\n return r.currentTime;\n }, r.nextMonth = function () {\n void 0 !== r.currentTime && null !== r.currentTime || (r.currentTime = r.now());\n var e,\n t = r.currentTime.getMonth() + 1;\n return 12 === t && (r.currentTime.setFullYear(r.currentTime.getFullYear() + 1), t = 0), e = r.currentTime.getFullYear(), r.currentTime.setDate(Math.min(new Date(r.currentTime.getFullYear(), t + 1, 0).getDate(), r.currentTime.getDate())), r.currentTime.setMonth(t), N.onChangeMonth && L.isFunction(N.onChangeMonth) && N.onChangeMonth.call(_, W.currentTime, _.data(\"input\")), e !== r.currentTime.getFullYear() && L.isFunction(N.onChangeYear) && N.onChangeYear.call(_, W.currentTime, _.data(\"input\")), _.trigger(\"xchange.xdsoft\"), t;\n }, r.prevMonth = function () {\n void 0 !== r.currentTime && null !== r.currentTime || (r.currentTime = r.now());\n var e = r.currentTime.getMonth() - 1;\n return -1 === e && (r.currentTime.setFullYear(r.currentTime.getFullYear() - 1), e = 11), r.currentTime.setDate(Math.min(new Date(r.currentTime.getFullYear(), e + 1, 0).getDate(), r.currentTime.getDate())), r.currentTime.setMonth(e), N.onChangeMonth && L.isFunction(N.onChangeMonth) && N.onChangeMonth.call(_, W.currentTime, _.data(\"input\")), _.trigger(\"xchange.xdsoft\"), e;\n }, r.getWeekOfYear = function (e) {\n if (N.onGetWeekOfYear && L.isFunction(N.onGetWeekOfYear)) {\n var t = N.onGetWeekOfYear.call(_, e);\n if (void 0 !== t) return t;\n }\n var a = new Date(e.getFullYear(), 0, 1);\n return 4 !== a.getDay() && a.setMonth(0, 1 + (4 - a.getDay() + 7) % 7), Math.ceil(((e - a) / 864e5 + a.getDay() + 1) / 7);\n }, r.strToDateTime = function (e) {\n var t,\n a,\n n = [];\n return e && e instanceof Date && r.isValidDate(e) ? e : ((n = /^([+-]{1})(.*)$/.exec(e)) && (n[2] = E.parseDate(n[2], N.formatDate)), a = n && n[2] ? (t = n[2].getTime() - 6e4 * n[2].getTimezoneOffset(), new Date(r.now(!0).getTime() + parseInt(n[1] + \"1\", 10) * t)) : e ? E.parseDate(e, N.format) : r.now(), r.isValidDate(a) || (a = r.now()), a);\n }, r.strToDate = function (e) {\n if (e && e instanceof Date && r.isValidDate(e)) return e;\n var t = e ? E.parseDate(e, N.formatDate) : r.now(!0);\n return r.isValidDate(t) || (t = r.now(!0)), t;\n }, r.strtotime = function (e) {\n if (e && e instanceof Date && r.isValidDate(e)) return e;\n var t = e ? E.parseDate(e, N.formatTime) : r.now(!0);\n return r.isValidDate(t) || (t = r.now(!0)), t;\n }, r.str = function () {\n var e = N.format;\n return N.yearOffset && (e = (e = e.replace(\"Y\", r.currentTime.getFullYear() + N.yearOffset)).replace(\"y\", String(r.currentTime.getFullYear() + N.yearOffset).substring(2, 4))), E.formatDate(r.currentTime, e);\n }, r.currentTime = this.now();\n }(), i.on(\"touchend click\", function (e) {\n e.preventDefault(), _.data(\"changed\", !0), W.setCurrentTime(f()), O.val(W.str()), _.trigger(\"close.xdsoft\");\n }), F.find(\".xdsoft_today_button\").on(\"touchend mousedown.xdsoft\", function () {\n _.data(\"changed\", !0), W.setCurrentTime(0, !0), _.trigger(\"afterOpen.xdsoft\");\n }).on(\"dblclick.xdsoft\", function () {\n var e,\n t,\n a = W.getCurrentTime();\n a = new Date(a.getFullYear(), a.getMonth(), a.getDate()), e = W.strToDate(N.minDate), a < (e = new Date(e.getFullYear(), e.getMonth(), e.getDate())) || (t = W.strToDate(N.maxDate), (t = new Date(t.getFullYear(), t.getMonth(), t.getDate())) < a || (O.val(W.str()), O.trigger(\"change\"), _.trigger(\"close.xdsoft\")));\n }), F.find(\".xdsoft_prev,.xdsoft_next\").on(\"touchend mousedown.xdsoft\", function () {\n var a = L(this),\n n = 0,\n r = !1;\n !function e(t) {\n a.hasClass(N.next) ? W.nextMonth() : a.hasClass(N.prev) && W.prevMonth(), N.monthChangeSpinner && (r || (n = setTimeout(e, t || 100)));\n }(500), L([N.ownerDocument.body, N.contentWindow]).on(\"touchend mouseup.xdsoft\", function e() {\n clearTimeout(n), r = !0, L([N.ownerDocument.body, N.contentWindow]).off(\"touchend mouseup.xdsoft\", e);\n });\n }), o.find(\".xdsoft_prev,.xdsoft_next\").on(\"touchend mousedown.xdsoft\", function () {\n var o = L(this),\n i = 0,\n s = !1,\n d = 110;\n !function e(t) {\n var a = u[0].clientHeight,\n n = P[0].offsetHeight,\n r = Math.abs(parseInt(P.css(\"marginTop\"), 10));\n o.hasClass(N.next) && n - a - N.timeHeightInTimePicker >= r ? P.css(\"marginTop\", \"-\" + (r + N.timeHeightInTimePicker) + \"px\") : o.hasClass(N.prev) && 0 <= r - N.timeHeightInTimePicker && P.css(\"marginTop\", \"-\" + (r - N.timeHeightInTimePicker) + \"px\"), u.trigger(\"scroll_element.xdsoft_scroller\", [Math.abs(parseInt(P[0].style.marginTop, 10) / (n - a))]), d = 10 < d ? 10 : d - 10, s || (i = setTimeout(e, t || d));\n }(500), L([N.ownerDocument.body, N.contentWindow]).on(\"touchend mouseup.xdsoft\", function e() {\n clearTimeout(i), s = !0, L([N.ownerDocument.body, N.contentWindow]).off(\"touchend mouseup.xdsoft\", e);\n });\n }), t = 0, _.on(\"xchange.xdsoft\", function (e) {\n clearTimeout(t), t = setTimeout(function () {\n void 0 !== W.currentTime && null !== W.currentTime || (W.currentTime = W.now());\n for (var e, t, a, n, r, o, i, s, d, u, l = \"\", f = new Date(W.currentTime.getFullYear(), W.currentTime.getMonth(), 1, 12, 0, 0), c = 0, m = W.now(), h = !1, g = !1, p = !1, D = !1, y = [], v = !0, b = \"\"; f.getDay() !== N.dayOfWeekStart;) f.setDate(f.getDate() - 1);\n for (l += \"<table><thead><tr>\", N.weeks && (l += \"<th></th>\"), e = 0; e < 7; e += 1) l += \"<th>\" + N.i18n[R].dayOfWeekShort[(e + N.dayOfWeekStart) % 7] + \"</th>\";\n for (l += \"</tr></thead>\", l += \"<tbody>\", !1 !== N.maxDate && (h = W.strToDate(N.maxDate), h = new Date(h.getFullYear(), h.getMonth(), h.getDate(), 23, 59, 59, 999)), !1 !== N.minDate && (g = W.strToDate(N.minDate), g = new Date(g.getFullYear(), g.getMonth(), g.getDate())), !1 !== N.minDateTime && (p = W.strToDate(N.minDateTime), p = new Date(p.getFullYear(), p.getMonth(), p.getDate(), p.getHours(), p.getMinutes(), p.getSeconds())), !1 !== N.maxDateTime && (D = W.strToDate(N.maxDateTime), D = new Date(D.getFullYear(), D.getMonth(), D.getDate(), D.getHours(), D.getMinutes(), D.getSeconds())), !1 !== D && (u = 31 * (12 * D.getFullYear() + D.getMonth()) + D.getDate()); c < W.currentTime.countDaysInMonth() || f.getDay() !== N.dayOfWeekStart || W.currentTime.getMonth() === f.getMonth();) {\n y = [], c += 1, a = f.getDay(), n = f.getDate(), r = f.getFullYear(), M = f.getMonth(), o = W.getWeekOfYear(f), d = \"\", y.push(\"xdsoft_date\"), i = N.beforeShowDay && L.isFunction(N.beforeShowDay.call) ? N.beforeShowDay.call(_, f) : null, N.allowDateRe && \"[object RegExp]\" === Object.prototype.toString.call(N.allowDateRe) && (N.allowDateRe.test(E.formatDate(f, N.formatDate)) || y.push(\"xdsoft_disabled\")), N.allowDates && 0 < N.allowDates.length && -1 === N.allowDates.indexOf(E.formatDate(f, N.formatDate)) && y.push(\"xdsoft_disabled\");\n var k = 31 * (12 * f.getFullYear() + f.getMonth()) + f.getDate();\n (!1 !== h && h < f || !1 !== p && f < p || !1 !== g && f < g || !1 !== D && u < k || i && !1 === i[0]) && y.push(\"xdsoft_disabled\"), -1 !== N.disabledDates.indexOf(E.formatDate(f, N.formatDate)) && y.push(\"xdsoft_disabled\"), -1 !== N.disabledWeekDays.indexOf(a) && y.push(\"xdsoft_disabled\"), O.is(\"[disabled]\") && y.push(\"xdsoft_disabled\"), i && \"\" !== i[1] && y.push(i[1]), W.currentTime.getMonth() !== M && y.push(\"xdsoft_other_month\"), (N.defaultSelect || _.data(\"changed\")) && E.formatDate(W.currentTime, N.formatDate) === E.formatDate(f, N.formatDate) && y.push(\"xdsoft_current\"), E.formatDate(m, N.formatDate) === E.formatDate(f, N.formatDate) && y.push(\"xdsoft_today\"), 0 !== f.getDay() && 6 !== f.getDay() && -1 === N.weekends.indexOf(E.formatDate(f, N.formatDate)) || y.push(\"xdsoft_weekend\"), void 0 !== N.highlightedDates[E.formatDate(f, N.formatDate)] && (t = N.highlightedDates[E.formatDate(f, N.formatDate)], y.push(void 0 === t.style ? \"xdsoft_highlighted_default\" : t.style), d = void 0 === t.desc ? \"\" : t.desc), N.beforeShowDay && L.isFunction(N.beforeShowDay) && y.push(N.beforeShowDay(f)), v && (l += \"<tr>\", v = !1, N.weeks && (l += \"<th>\" + o + \"</th>\")), l += '<td data-date=\"' + n + '\" data-month=\"' + M + '\" data-year=\"' + r + '\" class=\"xdsoft_date xdsoft_day_of_week' + f.getDay() + \" \" + y.join(\" \") + '\" title=\"' + d + '\"><div>' + n + \"</div></td>\", f.getDay() === N.dayOfWeekStartPrev && (l += \"</tr>\", v = !0), f.setDate(n + 1);\n }\n l += \"</tbody></table>\", C.html(l), F.find(\".xdsoft_label span\").eq(0).text(N.i18n[R].months[W.currentTime.getMonth()]), F.find(\".xdsoft_label span\").eq(1).text(W.currentTime.getFullYear() + N.yearOffset), M = b = \"\";\n var x = 0;\n if (!1 !== N.minTime) {\n var T = W.strtotime(N.minTime);\n x = 60 * T.getHours() + T.getMinutes();\n }\n var S = 1440;\n if (!1 !== N.maxTime) {\n T = W.strtotime(N.maxTime);\n S = 60 * T.getHours() + T.getMinutes();\n }\n if (!1 !== N.minDateTime) {\n T = W.strToDateTime(N.minDateTime);\n if (E.formatDate(W.currentTime, N.formatDate) === E.formatDate(T, N.formatDate)) {\n var M = 60 * T.getHours() + T.getMinutes();\n x < M && (x = M);\n }\n }\n if (!1 !== N.maxDateTime) {\n T = W.strToDateTime(N.maxDateTime);\n if (E.formatDate(W.currentTime, N.formatDate) === E.formatDate(T, N.formatDate)) (M = 60 * T.getHours() + T.getMinutes()) < S && (S = M);\n }\n if (s = function (e, t) {\n var a,\n n = W.now(),\n r = N.allowTimes && L.isArray(N.allowTimes) && N.allowTimes.length;\n n.setHours(e), e = parseInt(n.getHours(), 10), n.setMinutes(t), t = parseInt(n.getMinutes(), 10), y = [];\n var o = 60 * e + t;\n (O.is(\"[disabled]\") || S <= o || o < x) && y.push(\"xdsoft_disabled\"), (a = new Date(W.currentTime)).setHours(parseInt(W.currentTime.getHours(), 10)), r || a.setMinutes(Math[N.roundTime](W.currentTime.getMinutes() / N.step) * N.step), (N.initTime || N.defaultSelect || _.data(\"changed\")) && a.getHours() === parseInt(e, 10) && (!r && 59 < N.step || a.getMinutes() === parseInt(t, 10)) && (N.defaultSelect || _.data(\"changed\") ? y.push(\"xdsoft_current\") : N.initTime && y.push(\"xdsoft_init_time\")), parseInt(m.getHours(), 10) === parseInt(e, 10) && parseInt(m.getMinutes(), 10) === parseInt(t, 10) && y.push(\"xdsoft_today\"), b += '<div class=\"xdsoft_time ' + y.join(\" \") + '\" data-hour=\"' + e + '\" data-minute=\"' + t + '\">' + E.formatDate(n, N.formatTime) + \"</div>\";\n }, N.allowTimes && L.isArray(N.allowTimes) && N.allowTimes.length) for (c = 0; c < N.allowTimes.length; c += 1) s(W.strtotime(N.allowTimes[c]).getHours(), M = W.strtotime(N.allowTimes[c]).getMinutes());else for (e = c = 0; c < (N.hours12 ? 12 : 24); c += 1) for (e = 0; e < 60; e += N.step) {\n var w = 60 * c + e;\n w < x || S <= w || s((c < 10 ? \"0\" : \"\") + c, M = (e < 10 ? \"0\" : \"\") + e);\n }\n for (P.html(b), H = \"\", c = parseInt(N.yearStart, 10); c <= parseInt(N.yearEnd, 10); c += 1) H += '<div class=\"xdsoft_option ' + (W.currentTime.getFullYear() === c ? \"xdsoft_current\" : \"\") + '\" data-value=\"' + c + '\">' + (c + N.yearOffset) + \"</div>\";\n for (A.children().eq(0).html(H), c = parseInt(N.monthStart, 10), H = \"\"; c <= parseInt(N.monthEnd, 10); c += 1) H += '<div class=\"xdsoft_option ' + (W.currentTime.getMonth() === c ? \"xdsoft_current\" : \"\") + '\" data-value=\"' + c + '\">' + N.i18n[R].months[c] + \"</div>\";\n Y.children().eq(0).html(H), L(_).trigger(\"generate.xdsoft\");\n }, 10), e.stopPropagation();\n }).on(\"afterOpen.xdsoft\", function () {\n var e, t, a, n;\n N.timepicker && (P.find(\".xdsoft_current\").length ? e = \".xdsoft_current\" : P.find(\".xdsoft_init_time\").length && (e = \".xdsoft_init_time\"), e ? (t = u[0].clientHeight, (a = P[0].offsetHeight) - t < (n = P.find(e).index() * N.timeHeightInTimePicker + 1) && (n = a - t), u.trigger(\"scroll_element.xdsoft_scroller\", [parseInt(n, 10) / (a - t)])) : u.trigger(\"scroll_element.xdsoft_scroller\", [0]));\n }), n = 0, C.on(\"touchend click.xdsoft\", \"td\", function (e) {\n e.stopPropagation(), n += 1;\n var t = L(this),\n a = W.currentTime;\n if (null == a && (W.currentTime = W.now(), a = W.currentTime), t.hasClass(\"xdsoft_disabled\")) return !1;\n a.setDate(1), a.setFullYear(t.data(\"year\")), a.setMonth(t.data(\"month\")), a.setDate(t.data(\"date\")), _.trigger(\"select.xdsoft\", [a]), O.val(W.str()), N.onSelectDate && L.isFunction(N.onSelectDate) && N.onSelectDate.call(_, W.currentTime, _.data(\"input\"), e), _.data(\"changed\", !0), _.trigger(\"xchange.xdsoft\"), _.trigger(\"changedatetime.xdsoft\"), (1 < n || !0 === N.closeOnDateSelect || !1 === N.closeOnDateSelect && !N.timepicker) && !N.inline && _.trigger(\"close.xdsoft\"), setTimeout(function () {\n n = 0;\n }, 200);\n }), P.on(\"touchstart\", \"div\", function (e) {\n this.touchMoved = !1;\n }).on(\"touchmove\", \"div\", l).on(\"touchend click.xdsoft\", \"div\", function (e) {\n if (!this.touchMoved) {\n e.stopPropagation();\n var t = L(this),\n a = W.currentTime;\n if (null == a && (W.currentTime = W.now(), a = W.currentTime), t.hasClass(\"xdsoft_disabled\")) return !1;\n a.setHours(t.data(\"hour\")), a.setMinutes(t.data(\"minute\")), _.trigger(\"select.xdsoft\", [a]), _.data(\"input\").val(W.str()), N.onSelectTime && L.isFunction(N.onSelectTime) && N.onSelectTime.call(_, W.currentTime, _.data(\"input\"), e), _.data(\"changed\", !0), _.trigger(\"xchange.xdsoft\"), _.trigger(\"changedatetime.xdsoft\"), !0 !== N.inline && !0 === N.closeOnTimeSelect && _.trigger(\"close.xdsoft\");\n }\n }), g.on(\"mousewheel.xdsoft\", function (e) {\n return !N.scrollMonth || (e.deltaY < 0 ? W.nextMonth() : W.prevMonth(), !1);\n }), O.on(\"mousewheel.xdsoft\", function (e) {\n return !N.scrollInput || (!N.datepicker && N.timepicker ? (0 <= (a = P.find(\".xdsoft_current\").length ? P.find(\".xdsoft_current\").eq(0).index() : 0) + e.deltaY && a + e.deltaY < P.children().length && (a += e.deltaY), P.children().eq(a).length && P.children().eq(a).trigger(\"mousedown\"), !1) : N.datepicker && !N.timepicker ? (g.trigger(e, [e.deltaY, e.deltaX, e.deltaY]), O.val && O.val(W.str()), _.trigger(\"changedatetime.xdsoft\"), !1) : void 0);\n }), _.on(\"changedatetime.xdsoft\", function (e) {\n if (N.onChangeDateTime && L.isFunction(N.onChangeDateTime)) {\n var t = _.data(\"input\");\n N.onChangeDateTime.call(_, W.currentTime, t, e), delete N.value, t.trigger(\"change\");\n }\n }).on(\"generate.xdsoft\", function () {\n N.onGenerate && L.isFunction(N.onGenerate) && N.onGenerate.call(_, W.currentTime, _.data(\"input\")), s && (_.trigger(\"afterOpen.xdsoft\"), s = !1);\n }).on(\"click.xdsoft\", function (e) {\n e.stopPropagation();\n }), a = 0, h = function (e, t) {\n do {\n if (!(e = e.parentNode) || !1 === t(e)) break;\n } while (\"HTML\" !== e.nodeName);\n }, r = function () {\n var e, t, a, n, r, o, i, s, d, u, l, f, c;\n if (e = (s = _.data(\"input\")).offset(), t = s[0], u = \"top\", a = e.top + t.offsetHeight - 1, n = e.left, r = \"absolute\", d = L(N.contentWindow).width(), f = L(N.contentWindow).height(), c = L(N.contentWindow).scrollTop(), N.ownerDocument.documentElement.clientWidth - e.left < g.parent().outerWidth(!0)) {\n var m = g.parent().outerWidth(!0) - t.offsetWidth;\n n -= m;\n }\n \"rtl\" === s.parent().css(\"direction\") && (n -= _.outerWidth() - s.outerWidth()), N.fixed ? (a -= c, n -= L(N.contentWindow).scrollLeft(), r = \"fixed\") : (i = !1, h(t, function (e) {\n return null !== e && (\"fixed\" === N.contentWindow.getComputedStyle(e).getPropertyValue(\"position\") ? !(i = !0) : void 0);\n }), i && !N.insideParent ? (r = \"fixed\", a + _.outerHeight() > f + c ? (u = \"bottom\", a = f + c - e.top) : a -= c) : a + _[0].offsetHeight > f + c && (a = e.top - _[0].offsetHeight + 1), a < 0 && (a = 0), n + t.offsetWidth > d && (n = d - t.offsetWidth)), o = _[0], h(o, function (e) {\n if (\"relative\" === N.contentWindow.getComputedStyle(e).getPropertyValue(\"position\") && d >= e.offsetWidth) return n -= (d - e.offsetWidth) / 2, !1;\n }), l = {\n position: r,\n left: N.insideParent ? t.offsetLeft : n,\n top: \"\",\n bottom: \"\"\n }, N.insideParent ? l[u] = t.offsetTop + t.offsetHeight : l[u] = a, _.css(l);\n }, _.on(\"open.xdsoft\", function (e) {\n var t = !0;\n N.onShow && L.isFunction(N.onShow) && (t = N.onShow.call(_, W.currentTime, _.data(\"input\"), e)), !1 !== t && (_.show(), r(), L(N.contentWindow).off(\"resize.xdsoft\", r).on(\"resize.xdsoft\", r), N.closeOnWithoutClick && L([N.ownerDocument.body, N.contentWindow]).on(\"touchstart mousedown.xdsoft\", function e() {\n _.trigger(\"close.xdsoft\"), L([N.ownerDocument.body, N.contentWindow]).off(\"touchstart mousedown.xdsoft\", e);\n }));\n }).on(\"close.xdsoft\", function (e) {\n var t = !0;\n F.find(\".xdsoft_month,.xdsoft_year\").find(\".xdsoft_select\").hide(), N.onClose && L.isFunction(N.onClose) && (t = N.onClose.call(_, W.currentTime, _.data(\"input\"), e)), !1 === t || N.opened || N.inline || _.hide(), e.stopPropagation();\n }).on(\"toggle.xdsoft\", function () {\n _.is(\":visible\") ? _.trigger(\"close.xdsoft\") : _.trigger(\"open.xdsoft\");\n }).data(\"input\", O), d = 0, _.data(\"xdsoft_datetime\", W), _.setOptions(N), W.setCurrentTime(f()), O.data(\"xdsoft_datetimepicker\", _).on(\"open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart\", function () {\n O.is(\":disabled\") || O.data(\"xdsoft_datetimepicker\").is(\":visible\") && N.closeOnInputClick || N.openOnFocus && (clearTimeout(d), d = setTimeout(function () {\n O.is(\":disabled\") || (s = !0, W.setCurrentTime(f(), !0), N.mask && c(N), _.trigger(\"open.xdsoft\"));\n }, 100));\n }).on(\"keydown.xdsoft\", function (e) {\n var t,\n a = e.which;\n return -1 !== [D].indexOf(a) && N.enterLikeTab ? (t = L(\"input:visible,textarea:visible,button:visible,a:visible\"), _.trigger(\"close.xdsoft\"), t.eq(t.index(this) + 1).focus(), !1) : -1 !== [T].indexOf(a) ? (_.trigger(\"close.xdsoft\"), !0) : void 0;\n }).on(\"blur.xdsoft\", function () {\n _.trigger(\"close.xdsoft\");\n });\n }, r = function (e) {\n var t = e.data(\"xdsoft_datetimepicker\");\n t && (t.data(\"xdsoft_datetime\", null), t.remove(), e.data(\"xdsoft_datetimepicker\", null).off(\".xdsoft\"), L(N.contentWindow).off(\"resize.xdsoft\"), L([N.contentWindow, N.ownerDocument.body]).off(\"mousedown.xdsoft touchstart\"), e.unmousewheel && e.unmousewheel());\n }, L(N.ownerDocument).off(\"keydown.xdsoftctrl keyup.xdsoftctrl\").off(\"keydown.xdsoftcmd keyup.xdsoftcmd\").on(\"keydown.xdsoftctrl\", function (e) {\n e.keyCode === p && (I = !0);\n }).on(\"keyup.xdsoftctrl\", function (e) {\n e.keyCode === p && (I = !1);\n }).on(\"keydown.xdsoftcmd\", function (e) {\n 91 === e.keyCode && !0;\n }).on(\"keyup.xdsoftcmd\", function (e) {\n 91 === e.keyCode && !1;\n }), this.each(function () {\n var t,\n e = L(this).data(\"xdsoft_datetimepicker\");\n if (e) {\n if (\"string\" === L.type(H)) switch (H) {\n case \"show\":\n L(this).select().focus(), e.trigger(\"open.xdsoft\");\n break;\n case \"hide\":\n e.trigger(\"close.xdsoft\");\n break;\n case \"toggle\":\n e.trigger(\"toggle.xdsoft\");\n break;\n case \"destroy\":\n r(L(this));\n break;\n case \"reset\":\n this.value = this.defaultValue, this.value && e.data(\"xdsoft_datetime\").isValidDate(E.parseDate(this.value, N.format)) || e.data(\"changed\", !1), e.data(\"xdsoft_datetime\").setCurrentTime(this.value);\n break;\n case \"validate\":\n e.data(\"input\").trigger(\"blur.xdsoft\");\n break;\n default:\n e[H] && L.isFunction(e[H]) && (o = e[H](a));\n } else e.setOptions(H);\n return 0;\n }\n \"string\" !== L.type(H) && (!N.lazyInit || N.open || N.inline ? n(L(this)) : (t = L(this)).on(\"open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart\", function e() {\n t.is(\":disabled\") || t.data(\"xdsoft_datetimepicker\") || (clearTimeout(i), i = setTimeout(function () {\n t.data(\"xdsoft_datetimepicker\") || n(t), t.off(\"open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart\", e).trigger(\"open.xdsoft\");\n }, 100));\n }));\n }), o;\n }, L.fn.datetimepicker.defaults = s;\n};\n!function (e) {\n \"function\" == typeof define && define.amd ? define([\"jquery\", \"jquery-mousewheel\"], e) : \"object\" == typeof exports ? module.exports = e(require(\"jquery\")) : e(jQuery);\n}(datetimepickerFactory), function (e) {\n \"function\" == typeof define && define.amd ? define([\"jquery\"], e) : \"object\" == typeof exports ? module.exports = e : e(jQuery);\n}(function (c) {\n var m,\n h,\n e = [\"wheel\", \"mousewheel\", \"DOMMouseScroll\", \"MozMousePixelScroll\"],\n t = \"onwheel\" in document || 9 <= document.documentMode ? [\"wheel\"] : [\"mousewheel\", \"DomMouseScroll\", \"MozMousePixelScroll\"],\n g = Array.prototype.slice;\n if (c.event.fixHooks) for (var a = e.length; a;) c.event.fixHooks[e[--a]] = c.event.mouseHooks;\n var p = c.event.special.mousewheel = {\n version: \"3.1.12\",\n setup: function () {\n if (this.addEventListener) for (var e = t.length; e;) this.addEventListener(t[--e], n, !1);else this.onmousewheel = n;\n c.data(this, \"mousewheel-line-height\", p.getLineHeight(this)), c.data(this, \"mousewheel-page-height\", p.getPageHeight(this));\n },\n teardown: function () {\n if (this.removeEventListener) for (var e = t.length; e;) this.removeEventListener(t[--e], n, !1);else this.onmousewheel = null;\n c.removeData(this, \"mousewheel-line-height\"), c.removeData(this, \"mousewheel-page-height\");\n },\n getLineHeight: function (e) {\n var t = c(e),\n a = t[\"offsetParent\" in c.fn ? \"offsetParent\" : \"parent\"]();\n return a.length || (a = c(\"body\")), parseInt(a.css(\"fontSize\"), 10) || parseInt(t.css(\"fontSize\"), 10) || 16;\n },\n getPageHeight: function (e) {\n return c(e).height();\n },\n settings: {\n adjustOldDeltas: !0,\n normalizeOffset: !0\n }\n };\n function n(e) {\n var t,\n a = e || window.event,\n n = g.call(arguments, 1),\n r = 0,\n o = 0,\n i = 0,\n s = 0,\n d = 0;\n if ((e = c.event.fix(a)).type = \"mousewheel\", \"detail\" in a && (i = -1 * a.detail), \"wheelDelta\" in a && (i = a.wheelDelta), \"wheelDeltaY\" in a && (i = a.wheelDeltaY), \"wheelDeltaX\" in a && (o = -1 * a.wheelDeltaX), \"axis\" in a && a.axis === a.HORIZONTAL_AXIS && (o = -1 * i, i = 0), r = 0 === i ? o : i, \"deltaY\" in a && (r = i = -1 * a.deltaY), \"deltaX\" in a && (o = a.deltaX, 0 === i && (r = -1 * o)), 0 !== i || 0 !== o) {\n if (1 === a.deltaMode) {\n var u = c.data(this, \"mousewheel-line-height\");\n r *= u, i *= u, o *= u;\n } else if (2 === a.deltaMode) {\n var l = c.data(this, \"mousewheel-page-height\");\n r *= l, i *= l, o *= l;\n }\n if (t = Math.max(Math.abs(i), Math.abs(o)), (!h || t < h) && y(a, h = t) && (h /= 40), y(a, t) && (r /= 40, o /= 40, i /= 40), r = Math[1 <= r ? \"floor\" : \"ceil\"](r / h), o = Math[1 <= o ? \"floor\" : \"ceil\"](o / h), i = Math[1 <= i ? \"floor\" : \"ceil\"](i / h), p.settings.normalizeOffset && this.getBoundingClientRect) {\n var f = this.getBoundingClientRect();\n s = e.clientX - f.left, d = e.clientY - f.top;\n }\n return e.deltaX = o, e.deltaY = i, e.deltaFactor = h, e.offsetX = s, e.offsetY = d, e.deltaMode = 0, n.unshift(e, r, o, i), m && clearTimeout(m), m = setTimeout(D, 200), (c.event.dispatch || c.event.handle).apply(this, n);\n }\n }\n function D() {\n h = null;\n }\n function y(e, t) {\n return p.settings.adjustOldDeltas && \"mousewheel\" === e.type && t % 120 == 0;\n }\n c.fn.extend({\n mousewheel: function (e) {\n return e ? this.bind(\"mousewheel\", e) : this.trigger(\"mousewheel\");\n },\n unmousewheel: function (e) {\n return this.unbind(\"mousewheel\", e);\n }\n });\n});","var map = {\n\t\"./af\": 77,\n\t\"./af.js\": 77,\n\t\"./ar\": 78,\n\t\"./ar-dz\": 79,\n\t\"./ar-dz.js\": 79,\n\t\"./ar-kw\": 80,\n\t\"./ar-kw.js\": 80,\n\t\"./ar-ly\": 81,\n\t\"./ar-ly.js\": 81,\n\t\"./ar-ma\": 82,\n\t\"./ar-ma.js\": 82,\n\t\"./ar-sa\": 83,\n\t\"./ar-sa.js\": 83,\n\t\"./ar-tn\": 84,\n\t\"./ar-tn.js\": 84,\n\t\"./ar.js\": 78,\n\t\"./az\": 85,\n\t\"./az.js\": 85,\n\t\"./be\": 86,\n\t\"./be.js\": 86,\n\t\"./bg\": 87,\n\t\"./bg.js\": 87,\n\t\"./bm\": 88,\n\t\"./bm.js\": 88,\n\t\"./bn\": 89,\n\t\"./bn-bd\": 90,\n\t\"./bn-bd.js\": 90,\n\t\"./bn.js\": 89,\n\t\"./bo\": 91,\n\t\"./bo.js\": 91,\n\t\"./br\": 92,\n\t\"./br.js\": 92,\n\t\"./bs\": 93,\n\t\"./bs.js\": 93,\n\t\"./ca\": 94,\n\t\"./ca.js\": 94,\n\t\"./cs\": 95,\n\t\"./cs.js\": 95,\n\t\"./cv\": 96,\n\t\"./cv.js\": 96,\n\t\"./cy\": 97,\n\t\"./cy.js\": 97,\n\t\"./da\": 98,\n\t\"./da.js\": 98,\n\t\"./de\": 99,\n\t\"./de-at\": 100,\n\t\"./de-at.js\": 100,\n\t\"./de-ch\": 101,\n\t\"./de-ch.js\": 101,\n\t\"./de.js\": 99,\n\t\"./dv\": 102,\n\t\"./dv.js\": 102,\n\t\"./el\": 103,\n\t\"./el.js\": 103,\n\t\"./en-au\": 104,\n\t\"./en-au.js\": 104,\n\t\"./en-ca\": 105,\n\t\"./en-ca.js\": 105,\n\t\"./en-gb\": 106,\n\t\"./en-gb.js\": 106,\n\t\"./en-ie\": 107,\n\t\"./en-ie.js\": 107,\n\t\"./en-il\": 108,\n\t\"./en-il.js\": 108,\n\t\"./en-in\": 109,\n\t\"./en-in.js\": 109,\n\t\"./en-nz\": 110,\n\t\"./en-nz.js\": 110,\n\t\"./en-sg\": 111,\n\t\"./en-sg.js\": 111,\n\t\"./eo\": 112,\n\t\"./eo.js\": 112,\n\t\"./es\": 113,\n\t\"./es-do\": 114,\n\t\"./es-do.js\": 114,\n\t\"./es-mx\": 115,\n\t\"./es-mx.js\": 115,\n\t\"./es-us\": 116,\n\t\"./es-us.js\": 116,\n\t\"./es.js\": 113,\n\t\"./et\": 117,\n\t\"./et.js\": 117,\n\t\"./eu\": 118,\n\t\"./eu.js\": 118,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 120,\n\t\"./fi.js\": 120,\n\t\"./fil\": 121,\n\t\"./fil.js\": 121,\n\t\"./fo\": 122,\n\t\"./fo.js\": 122,\n\t\"./fr\": 123,\n\t\"./fr-ca\": 124,\n\t\"./fr-ca.js\": 124,\n\t\"./fr-ch\": 125,\n\t\"./fr-ch.js\": 125,\n\t\"./fr.js\": 123,\n\t\"./fy\": 126,\n\t\"./fy.js\": 126,\n\t\"./ga\": 127,\n\t\"./ga.js\": 127,\n\t\"./gd\": 128,\n\t\"./gd.js\": 128,\n\t\"./gl\": 129,\n\t\"./gl.js\": 129,\n\t\"./gom-deva\": 130,\n\t\"./gom-deva.js\": 130,\n\t\"./gom-latn\": 131,\n\t\"./gom-latn.js\": 131,\n\t\"./gu\": 132,\n\t\"./gu.js\": 132,\n\t\"./he\": 133,\n\t\"./he.js\": 133,\n\t\"./hi\": 134,\n\t\"./hi.js\": 134,\n\t\"./hr\": 135,\n\t\"./hr.js\": 135,\n\t\"./hu\": 136,\n\t\"./hu.js\": 136,\n\t\"./hy-am\": 137,\n\t\"./hy-am.js\": 137,\n\t\"./id\": 138,\n\t\"./id.js\": 138,\n\t\"./is\": 139,\n\t\"./is.js\": 139,\n\t\"./it\": 140,\n\t\"./it-ch\": 141,\n\t\"./it-ch.js\": 141,\n\t\"./it.js\": 140,\n\t\"./ja\": 142,\n\t\"./ja.js\": 142,\n\t\"./jv\": 143,\n\t\"./jv.js\": 143,\n\t\"./ka\": 144,\n\t\"./ka.js\": 144,\n\t\"./kk\": 145,\n\t\"./kk.js\": 145,\n\t\"./km\": 146,\n\t\"./km.js\": 146,\n\t\"./kn\": 147,\n\t\"./kn.js\": 147,\n\t\"./ko\": 148,\n\t\"./ko.js\": 148,\n\t\"./ku\": 149,\n\t\"./ku.js\": 149,\n\t\"./ky\": 150,\n\t\"./ky.js\": 150,\n\t\"./lb\": 151,\n\t\"./lb.js\": 151,\n\t\"./lo\": 152,\n\t\"./lo.js\": 152,\n\t\"./lt\": 153,\n\t\"./lt.js\": 153,\n\t\"./lv\": 154,\n\t\"./lv.js\": 154,\n\t\"./me\": 155,\n\t\"./me.js\": 155,\n\t\"./mi\": 156,\n\t\"./mi.js\": 156,\n\t\"./mk\": 157,\n\t\"./mk.js\": 157,\n\t\"./ml\": 158,\n\t\"./ml.js\": 158,\n\t\"./mn\": 159,\n\t\"./mn.js\": 159,\n\t\"./mr\": 160,\n\t\"./mr.js\": 160,\n\t\"./ms\": 161,\n\t\"./ms-my\": 162,\n\t\"./ms-my.js\": 162,\n\t\"./ms.js\": 161,\n\t\"./mt\": 163,\n\t\"./mt.js\": 163,\n\t\"./my\": 164,\n\t\"./my.js\": 164,\n\t\"./nb\": 165,\n\t\"./nb.js\": 165,\n\t\"./ne\": 166,\n\t\"./ne.js\": 166,\n\t\"./nl\": 167,\n\t\"./nl-be\": 168,\n\t\"./nl-be.js\": 168,\n\t\"./nl.js\": 167,\n\t\"./nn\": 169,\n\t\"./nn.js\": 169,\n\t\"./oc-lnc\": 170,\n\t\"./oc-lnc.js\": 170,\n\t\"./pa-in\": 171,\n\t\"./pa-in.js\": 171,\n\t\"./pl\": 172,\n\t\"./pl.js\": 172,\n\t\"./pt\": 173,\n\t\"./pt-br\": 174,\n\t\"./pt-br.js\": 174,\n\t\"./pt.js\": 173,\n\t\"./ro\": 175,\n\t\"./ro.js\": 175,\n\t\"./ru\": 176,\n\t\"./ru.js\": 176,\n\t\"./sd\": 177,\n\t\"./sd.js\": 177,\n\t\"./se\": 178,\n\t\"./se.js\": 178,\n\t\"./si\": 179,\n\t\"./si.js\": 179,\n\t\"./sk\": 180,\n\t\"./sk.js\": 180,\n\t\"./sl\": 181,\n\t\"./sl.js\": 181,\n\t\"./sq\": 182,\n\t\"./sq.js\": 182,\n\t\"./sr\": 183,\n\t\"./sr-cyrl\": 184,\n\t\"./sr-cyrl.js\": 184,\n\t\"./sr.js\": 183,\n\t\"./ss\": 185,\n\t\"./ss.js\": 185,\n\t\"./sv\": 186,\n\t\"./sv.js\": 186,\n\t\"./sw\": 187,\n\t\"./sw.js\": 187,\n\t\"./ta\": 188,\n\t\"./ta.js\": 188,\n\t\"./te\": 189,\n\t\"./te.js\": 189,\n\t\"./tet\": 190,\n\t\"./tet.js\": 190,\n\t\"./tg\": 191,\n\t\"./tg.js\": 191,\n\t\"./th\": 192,\n\t\"./th.js\": 192,\n\t\"./tk\": 193,\n\t\"./tk.js\": 193,\n\t\"./tl-ph\": 194,\n\t\"./tl-ph.js\": 194,\n\t\"./tlh\": 195,\n\t\"./tlh.js\": 195,\n\t\"./tr\": 196,\n\t\"./tr.js\": 196,\n\t\"./tzl\": 197,\n\t\"./tzl.js\": 197,\n\t\"./tzm\": 198,\n\t\"./tzm-latn\": 199,\n\t\"./tzm-latn.js\": 199,\n\t\"./tzm.js\": 198,\n\t\"./ug-cn\": 200,\n\t\"./ug-cn.js\": 200,\n\t\"./uk\": 201,\n\t\"./uk.js\": 201,\n\t\"./ur\": 202,\n\t\"./ur.js\": 202,\n\t\"./uz\": 203,\n\t\"./uz-latn\": 204,\n\t\"./uz-latn.js\": 204,\n\t\"./uz.js\": 203,\n\t\"./vi\": 205,\n\t\"./vi.js\": 205,\n\t\"./x-pseudo\": 206,\n\t\"./x-pseudo.js\": 206,\n\t\"./yo\": 207,\n\t\"./yo.js\": 207,\n\t\"./zh-cn\": 208,\n\t\"./zh-cn.js\": 208,\n\t\"./zh-hk\": 209,\n\t\"./zh-hk.js\": 209,\n\t\"./zh-mo\": 210,\n\t\"./zh-mo.js\": 210,\n\t\"./zh-tw\": 211,\n\t\"./zh-tw.js\": 211\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 323;","/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory;\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function ($) {\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n toBind = 'onwheel' in document || document.documentMode >= 9 ? ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout,\n lowestDelta;\n if ($.event.fixHooks) {\n for (var i = toFix.length; i;) {\n $.event.fixHooks[toFix[--i]] = $.event.mouseHooks;\n }\n }\n var special = $.event.special.mousewheel = {\n version: '3.1.12',\n setup: function () {\n if (this.addEventListener) {\n for (var i = toBind.length; i;) {\n this.addEventListener(toBind[--i], handler, false);\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n },\n teardown: function () {\n if (this.removeEventListener) {\n for (var i = toBind.length; i;) {\n this.removeEventListener(toBind[--i], handler, false);\n }\n } else {\n this.onmousewheel = null;\n }\n // Clean up the data we added to the element\n $.removeData(this, 'mousewheel-line-height');\n $.removeData(this, 'mousewheel-page-height');\n },\n getLineHeight: function (elem) {\n var $elem = $(elem),\n $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n if (!$parent.length) {\n $parent = $('body');\n }\n return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n },\n getPageHeight: function (elem) {\n return $(elem).height();\n },\n settings: {\n adjustOldDeltas: true,\n // see shouldAdjustOldDeltas() below\n normalizeOffset: true // calls getBoundingClientRect for each event\n }\n };\n\n $.fn.extend({\n mousewheel: function (fn) {\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n },\n unmousewheel: function (fn) {\n return this.unbind('mousewheel', fn);\n }\n });\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0,\n offsetX = 0,\n offsetY = 0;\n event = $.event.fix(orgEvent);\n event.type = 'mousewheel';\n\n // Old school scrollwheel delta\n if ('detail' in orgEvent) {\n deltaY = orgEvent.detail * -1;\n }\n if ('wheelDelta' in orgEvent) {\n deltaY = orgEvent.wheelDelta;\n }\n if ('wheelDeltaY' in orgEvent) {\n deltaY = orgEvent.wheelDeltaY;\n }\n if ('wheelDeltaX' in orgEvent) {\n deltaX = orgEvent.wheelDeltaX * -1;\n }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if ('axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if ('deltaY' in orgEvent) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if ('deltaX' in orgEvent) {\n deltaX = orgEvent.deltaX;\n if (deltaY === 0) {\n delta = deltaX * -1;\n }\n }\n\n // No change actually happened, no reason to go any further\n if (deltaY === 0 && deltaX === 0) {\n return;\n }\n\n // Need to convert lines and pages to pixels if we aren't already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if (orgEvent.deltaMode === 1) {\n var lineHeight = $.data(this, 'mousewheel-line-height');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if (orgEvent.deltaMode === 2) {\n var pageHeight = $.data(this, 'mousewheel-page-height');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max(Math.abs(deltaY), Math.abs(deltaX));\n if (!lowestDelta || absDelta < lowestDelta) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[delta >= 1 ? 'floor' : 'ceil'](delta / lowestDelta);\n deltaX = Math[deltaX >= 1 ? 'floor' : 'ceil'](deltaX / lowestDelta);\n deltaY = Math[deltaY >= 1 ? 'floor' : 'ceil'](deltaY / lowestDelta);\n\n // Normalise offsetX and offsetY properties\n if (special.settings.normalizeOffset && this.getBoundingClientRect) {\n var boundingRect = this.getBoundingClientRect();\n offsetX = event.clientX - boundingRect.left;\n offsetY = event.clientY - boundingRect.top;\n }\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n event.offsetX = offsetX;\n event.offsetY = offsetY;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) {\n clearTimeout(nullLowestDeltaTimeout);\n }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n function nullLowestDelta() {\n lowestDelta = null;\n }\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n }\n});","/*! ========================================================================\n * Bootstrap Toggle: bootstrap-toggle.js v2.2.0\n * http://www.bootstraptoggle.com\n * ========================================================================\n * Copyright 2014 Min Hur, The New York Times Company\n * Licensed under MIT\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n // TOGGLE PUBLIC CLASS DEFINITION\n // ==============================\n var Toggle = function (element, options) {\n this.$element = $(element);\n this.options = $.extend({}, this.defaults(), options);\n this.render();\n };\n Toggle.VERSION = '2.2.0';\n Toggle.DEFAULTS = {\n on: 'On',\n off: 'Off',\n onstyle: 'primary',\n offstyle: 'default',\n size: 'normal',\n style: '',\n width: null,\n height: null\n };\n Toggle.prototype.defaults = function () {\n return {\n on: this.$element.attr('data-on') || Toggle.DEFAULTS.on,\n off: this.$element.attr('data-off') || Toggle.DEFAULTS.off,\n onstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,\n offstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,\n size: this.$element.attr('data-size') || Toggle.DEFAULTS.size,\n style: this.$element.attr('data-style') || Toggle.DEFAULTS.style,\n width: this.$element.attr('data-width') || Toggle.DEFAULTS.width,\n height: this.$element.attr('data-height') || Toggle.DEFAULTS.height\n };\n };\n Toggle.prototype.render = function () {\n this._onstyle = 'btn-' + this.options.onstyle;\n this._offstyle = 'btn-' + this.options.offstyle;\n var size = this.options.size === 'large' ? 'btn-lg' : this.options.size === 'small' ? 'btn-sm' : this.options.size === 'mini' ? 'btn-xs' : '';\n var $toggleOn = $('<label class=\"btn\">').html(this.options.on).addClass(this._onstyle + ' ' + size);\n var $toggleOff = $('<label class=\"btn\">').html(this.options.off).addClass(this._offstyle + ' ' + size + ' active');\n var $toggleHandle = $('<span class=\"toggle-handle btn btn-default\">').addClass(size);\n var $toggleGroup = $('<div class=\"toggle-group\">').append($toggleOn, $toggleOff, $toggleHandle);\n var $toggle = $('<div class=\"toggle btn\" data-toggle=\"toggle\">').addClass(this.$element.prop('checked') ? this._onstyle : this._offstyle + ' off').addClass(size).addClass(this.options.style);\n this.$element.wrap($toggle);\n $.extend(this, {\n $toggle: this.$element.parent(),\n $toggleOn: $toggleOn,\n $toggleOff: $toggleOff,\n $toggleGroup: $toggleGroup\n });\n this.$toggle.append($toggleGroup);\n var width = this.options.width || Math.max($toggleOn.outerWidth(), $toggleOff.outerWidth()) + $toggleHandle.outerWidth() / 2;\n var height = this.options.height || Math.max($toggleOn.outerHeight(), $toggleOff.outerHeight());\n $toggleOn.addClass('toggle-on');\n $toggleOff.addClass('toggle-off');\n this.$toggle.css({\n width: width,\n height: height\n });\n if (this.options.height) {\n $toggleOn.css('line-height', $toggleOn.height() + 'px');\n $toggleOff.css('line-height', $toggleOff.height() + 'px');\n }\n this.update(true);\n this.trigger(true);\n };\n Toggle.prototype.toggle = function () {\n if (this.$element.prop('checked')) this.off();else this.on();\n };\n Toggle.prototype.on = function (silent) {\n if (this.$element.prop('disabled')) return false;\n this.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle);\n this.$element.prop('checked', true);\n if (!silent) this.trigger();\n };\n Toggle.prototype.off = function (silent) {\n if (this.$element.prop('disabled')) return false;\n this.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off');\n this.$element.prop('checked', false);\n if (!silent) this.trigger();\n };\n Toggle.prototype.enable = function () {\n this.$toggle.removeAttr('disabled');\n this.$element.prop('disabled', false);\n };\n Toggle.prototype.disable = function () {\n this.$toggle.attr('disabled', 'disabled');\n this.$element.prop('disabled', true);\n };\n Toggle.prototype.update = function (silent) {\n if (this.$element.prop('disabled')) this.disable();else this.enable();\n if (this.$element.prop('checked')) this.on(silent);else this.off(silent);\n };\n Toggle.prototype.trigger = function (silent) {\n this.$element.off('change.bs.toggle');\n if (!silent) this.$element.change();\n this.$element.on('change.bs.toggle', $.proxy(function () {\n this.update();\n }, this));\n };\n Toggle.prototype.destroy = function () {\n this.$element.off('change.bs.toggle');\n this.$toggleGroup.remove();\n this.$element.removeData('bs.toggle');\n this.$element.unwrap();\n };\n\n // TOGGLE PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data('bs.toggle');\n var options = typeof option == 'object' && option;\n if (!data) $this.data('bs.toggle', data = new Toggle(this, options));\n if (typeof option == 'string' && data[option]) data[option]();\n });\n }\n var old = $.fn.bootstrapToggle;\n $.fn.bootstrapToggle = Plugin;\n $.fn.bootstrapToggle.Constructor = Toggle;\n\n // TOGGLE NO CONFLICT\n // ==================\n\n $.fn.toggle.noConflict = function () {\n $.fn.bootstrapToggle = old;\n return this;\n };\n\n // TOGGLE DATA-API\n // ===============\n\n $(function () {\n $('input[type=checkbox][data-toggle^=toggle]').bootstrapToggle();\n });\n $(document).on('click.bs.toggle', 'div[data-toggle^=toggle]', function (e) {\n var $checkbox = $(this).find('input[type=checkbox]');\n $checkbox.bootstrapToggle('toggle');\n e.preventDefault();\n });\n}(jQuery);","/*!\r\n * Bootstrap-select v1.13.18 (https://developer.snapappointments.com/bootstrap-select)\r\n *\r\n * Copyright 2012-2020 SnapAppointments, LLC\r\n * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)\r\n */\n\n(function (root, factory) {\n if (root === undefined && window !== undefined) root = window;\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n define([\"jquery\"], function (a0) {\n return factory(a0);\n });\n } else if (typeof module === 'object' && module.exports) {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory(require(\"jquery\"));\n } else {\n factory(root[\"jQuery\"]);\n }\n})(this, function (jQuery) {\n (function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', 'tabindex', 'style', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n\n /**\r\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\r\n *\r\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\r\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n\n /**\r\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\r\n *\r\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\r\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n return true;\n }\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp;\n });\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n return false;\n }\n function sanitizeHtml(unsafeElements, whiteList, sanitizeFn) {\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeElements);\n }\n var whitelistKeys = Object.keys(whiteList);\n for (var i = 0, len = unsafeElements.length; i < len; i++) {\n var elements = unsafeElements[i].querySelectorAll('*');\n for (var j = 0, len2 = elements.length; j < len2; j++) {\n var el = elements[j];\n var elName = el.nodeName.toLowerCase();\n if (whitelistKeys.indexOf(elName) === -1) {\n el.parentNode.removeChild(el);\n continue;\n }\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n for (var k = 0, len3 = attributeList.length; k < len3; k++) {\n var attr = attributeList[k];\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n }\n }\n }\n }\n\n // Polyfill for browsers with no classList support\n // Remove in v2\n if (!('classList' in document.createElement('_'))) {\n (function (view) {\n if (!('Element' in view)) return;\n var classListProp = 'classList',\n protoProp = 'prototype',\n elemCtrProto = view.Element[protoProp],\n objCtr = Object,\n classListGetter = function () {\n var $elem = $(this);\n return {\n add: function (classes) {\n classes = Array.prototype.slice.call(arguments).join(' ');\n return $elem.addClass(classes);\n },\n remove: function (classes) {\n classes = Array.prototype.slice.call(arguments).join(' ');\n return $elem.removeClass(classes);\n },\n toggle: function (classes, force) {\n return $elem.toggleClass(classes, force);\n },\n contains: function (classes) {\n return $elem.hasClass(classes);\n }\n };\n };\n if (objCtr.defineProperty) {\n var classListPropDesc = {\n get: classListGetter,\n enumerable: true,\n configurable: true\n };\n try {\n objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n } catch (ex) {\n // IE 8 doesn't support enumerable:true\n // adding undefined to fight this issue https://github.com/eligrey/classList.js/issues/36\n // modernie IE8-MSW7 machine has IE8 8.0.6001.18702 and is affected\n if (ex.number === undefined || ex.number === -0x7FF5EC54) {\n classListPropDesc.enumerable = false;\n objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);\n }\n }\n } else if (objCtr[protoProp].__defineGetter__) {\n elemCtrProto.__defineGetter__(classListProp, classListGetter);\n }\n })(window);\n }\n var testElement = document.createElement('_');\n testElement.classList.add('c1', 'c2');\n if (!testElement.classList.contains('c2')) {\n var _add = DOMTokenList.prototype.add,\n _remove = DOMTokenList.prototype.remove;\n DOMTokenList.prototype.add = function () {\n Array.prototype.forEach.call(arguments, _add.bind(this));\n };\n DOMTokenList.prototype.remove = function () {\n Array.prototype.forEach.call(arguments, _remove.bind(this));\n };\n }\n testElement.classList.toggle('c3', false);\n\n // Polyfill for IE 10 and Firefox <24, where classList.toggle does not\n // support the second argument.\n if (testElement.classList.contains('c3')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (1 in arguments && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n }\n testElement = null;\n\n // shallow array comparison\n function isEqual(array1, array2) {\n return array1.length === array2.length && array1.every(function (element, index) {\n return element === array2[index];\n });\n }\n ;\n\n // <editor-fold desc=\"Shims\">\n if (!String.prototype.startsWith) {\n (function () {\n 'use strict';\n\n // needed to support `apply`/`call` with `undefined`/`null`\n var defineProperty = function () {\n // IE 8 only supports `Object.defineProperty` on DOM elements\n try {\n var object = {};\n var $defineProperty = Object.defineProperty;\n var result = $defineProperty(object, object, object) && $defineProperty;\n } catch (error) {}\n return result;\n }();\n var toString = {}.toString;\n var startsWith = function (search) {\n if (this == null) {\n throw new TypeError();\n }\n var string = String(this);\n if (search && toString.call(search) == '[object RegExp]') {\n throw new TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n // `ToInteger`\n var pos = position ? Number(position) : 0;\n if (pos != pos) {\n // better `isNaN`\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n // Avoid the `indexOf` call if no match is possible\n if (searchLength + start > stringLength) {\n return false;\n }\n var index = -1;\n while (++index < searchLength) {\n if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\n return false;\n }\n }\n return true;\n };\n if (defineProperty) {\n defineProperty(String.prototype, 'startsWith', {\n 'value': startsWith,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.prototype.startsWith = startsWith;\n }\n })();\n }\n if (!Object.keys) {\n Object.keys = function (o,\n // object\n k,\n // key\n r // result array\n ) {\n // initialize object and result\n r = [];\n // iterate over object keys\n for (k in o) {\n // fill result array with non-prototypical keys\n r.hasOwnProperty.call(o, k) && r.push(k);\n }\n // return result\n return r;\n };\n }\n if (HTMLSelectElement && !HTMLSelectElement.prototype.hasOwnProperty('selectedOptions')) {\n Object.defineProperty(HTMLSelectElement.prototype, 'selectedOptions', {\n get: function () {\n return this.querySelectorAll(':checked');\n }\n });\n }\n function getSelectedOptions(select, ignoreDisabled) {\n var selectedOptions = select.selectedOptions,\n options = [],\n opt;\n if (ignoreDisabled) {\n for (var i = 0, len = selectedOptions.length; i < len; i++) {\n opt = selectedOptions[i];\n if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) {\n options.push(opt);\n }\n }\n return options;\n }\n return selectedOptions;\n }\n\n // much faster than $.val()\n function getSelectValues(select, selectedOptions) {\n var value = [],\n options = selectedOptions || select.selectedOptions,\n opt;\n for (var i = 0, len = options.length; i < len; i++) {\n opt = options[i];\n if (!(opt.disabled || opt.parentNode.tagName === 'OPTGROUP' && opt.parentNode.disabled)) {\n value.push(opt.value);\n }\n }\n if (!select.multiple) {\n return !value.length ? null : value[0];\n }\n return value;\n }\n\n // set data-selected on select element if the value has been programmatically selected\n // prior to initialization of bootstrap-select\n // * consider removing or replacing an alternative method *\n var valHooks = {\n useDefault: false,\n _set: $.valHooks.select.set\n };\n $.valHooks.select.set = function (elem, value) {\n if (value && !valHooks.useDefault) $(elem).data('selected', true);\n return valHooks._set.apply(this, arguments);\n };\n var changedArguments = null;\n var EventIsSupported = function () {\n try {\n new Event('change');\n return true;\n } catch (e) {\n return false;\n }\n }();\n $.fn.triggerNative = function (eventName) {\n var el = this[0],\n event;\n if (el.dispatchEvent) {\n // for modern browsers & IE9+\n if (EventIsSupported) {\n // For modern browsers\n event = new Event(eventName, {\n bubbles: true\n });\n } else {\n // For IE since it doesn't support Event constructor\n event = document.createEvent('Event');\n event.initEvent(eventName, true, false);\n }\n el.dispatchEvent(event);\n } else if (el.fireEvent) {\n // for IE8\n event = document.createEventObject();\n event.eventType = eventName;\n el.fireEvent('on' + eventName, event);\n } else {\n // fall back to jQuery.trigger\n this.trigger(eventName);\n }\n };\n // </editor-fold>\n\n function stringSearch(li, searchString, method, normalize) {\n var stringTypes = ['display', 'subtext', 'tokens'],\n searchSuccess = false;\n for (var i = 0; i < stringTypes.length; i++) {\n var stringType = stringTypes[i],\n string = li[stringType];\n if (string) {\n string = string.toString();\n\n // Strip HTML tags. This isn't perfect, but it's much faster than any other method\n if (stringType === 'display') {\n string = string.replace(/<[^>]+>/g, '');\n }\n if (normalize) string = normalizeToBase(string);\n string = string.toUpperCase();\n if (method === 'contains') {\n searchSuccess = string.indexOf(searchString) >= 0;\n } else {\n searchSuccess = string.startsWith(searchString);\n }\n if (searchSuccess) break;\n }\n }\n return searchSuccess;\n }\n function toInteger(value) {\n return parseInt(value, 10) || 0;\n }\n\n // Borrowed from Lodash (_.deburr)\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A',\n '\\xc1': 'A',\n '\\xc2': 'A',\n '\\xc3': 'A',\n '\\xc4': 'A',\n '\\xc5': 'A',\n '\\xe0': 'a',\n '\\xe1': 'a',\n '\\xe2': 'a',\n '\\xe3': 'a',\n '\\xe4': 'a',\n '\\xe5': 'a',\n '\\xc7': 'C',\n '\\xe7': 'c',\n '\\xd0': 'D',\n '\\xf0': 'd',\n '\\xc8': 'E',\n '\\xc9': 'E',\n '\\xca': 'E',\n '\\xcb': 'E',\n '\\xe8': 'e',\n '\\xe9': 'e',\n '\\xea': 'e',\n '\\xeb': 'e',\n '\\xcc': 'I',\n '\\xcd': 'I',\n '\\xce': 'I',\n '\\xcf': 'I',\n '\\xec': 'i',\n '\\xed': 'i',\n '\\xee': 'i',\n '\\xef': 'i',\n '\\xd1': 'N',\n '\\xf1': 'n',\n '\\xd2': 'O',\n '\\xd3': 'O',\n '\\xd4': 'O',\n '\\xd5': 'O',\n '\\xd6': 'O',\n '\\xd8': 'O',\n '\\xf2': 'o',\n '\\xf3': 'o',\n '\\xf4': 'o',\n '\\xf5': 'o',\n '\\xf6': 'o',\n '\\xf8': 'o',\n '\\xd9': 'U',\n '\\xda': 'U',\n '\\xdb': 'U',\n '\\xdc': 'U',\n '\\xf9': 'u',\n '\\xfa': 'u',\n '\\xfb': 'u',\n '\\xfc': 'u',\n '\\xdd': 'Y',\n '\\xfd': 'y',\n '\\xff': 'y',\n '\\xc6': 'Ae',\n '\\xe6': 'ae',\n '\\xde': 'Th',\n '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u0104': 'A',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u0105': 'a',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010a': 'C',\n '\\u010c': 'C',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010b': 'c',\n '\\u010d': 'c',\n '\\u010e': 'D',\n '\\u0110': 'D',\n '\\u010f': 'd',\n '\\u0111': 'd',\n '\\u0112': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u0118': 'E',\n '\\u011a': 'E',\n '\\u0113': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u0119': 'e',\n '\\u011b': 'e',\n '\\u011c': 'G',\n '\\u011e': 'G',\n '\\u0120': 'G',\n '\\u0122': 'G',\n '\\u011d': 'g',\n '\\u011f': 'g',\n '\\u0121': 'g',\n '\\u0123': 'g',\n '\\u0124': 'H',\n '\\u0126': 'H',\n '\\u0125': 'h',\n '\\u0127': 'h',\n '\\u0128': 'I',\n '\\u012a': 'I',\n '\\u012c': 'I',\n '\\u012e': 'I',\n '\\u0130': 'I',\n '\\u0129': 'i',\n '\\u012b': 'i',\n '\\u012d': 'i',\n '\\u012f': 'i',\n '\\u0131': 'i',\n '\\u0134': 'J',\n '\\u0135': 'j',\n '\\u0136': 'K',\n '\\u0137': 'k',\n '\\u0138': 'k',\n '\\u0139': 'L',\n '\\u013b': 'L',\n '\\u013d': 'L',\n '\\u013f': 'L',\n '\\u0141': 'L',\n '\\u013a': 'l',\n '\\u013c': 'l',\n '\\u013e': 'l',\n '\\u0140': 'l',\n '\\u0142': 'l',\n '\\u0143': 'N',\n '\\u0145': 'N',\n '\\u0147': 'N',\n '\\u014a': 'N',\n '\\u0144': 'n',\n '\\u0146': 'n',\n '\\u0148': 'n',\n '\\u014b': 'n',\n '\\u014c': 'O',\n '\\u014e': 'O',\n '\\u0150': 'O',\n '\\u014d': 'o',\n '\\u014f': 'o',\n '\\u0151': 'o',\n '\\u0154': 'R',\n '\\u0156': 'R',\n '\\u0158': 'R',\n '\\u0155': 'r',\n '\\u0157': 'r',\n '\\u0159': 'r',\n '\\u015a': 'S',\n '\\u015c': 'S',\n '\\u015e': 'S',\n '\\u0160': 'S',\n '\\u015b': 's',\n '\\u015d': 's',\n '\\u015f': 's',\n '\\u0161': 's',\n '\\u0162': 'T',\n '\\u0164': 'T',\n '\\u0166': 'T',\n '\\u0163': 't',\n '\\u0165': 't',\n '\\u0167': 't',\n '\\u0168': 'U',\n '\\u016a': 'U',\n '\\u016c': 'U',\n '\\u016e': 'U',\n '\\u0170': 'U',\n '\\u0172': 'U',\n '\\u0169': 'u',\n '\\u016b': 'u',\n '\\u016d': 'u',\n '\\u016f': 'u',\n '\\u0171': 'u',\n '\\u0173': 'u',\n '\\u0174': 'W',\n '\\u0175': 'w',\n '\\u0176': 'Y',\n '\\u0177': 'y',\n '\\u0178': 'Y',\n '\\u0179': 'Z',\n '\\u017b': 'Z',\n '\\u017d': 'Z',\n '\\u017a': 'z',\n '\\u017c': 'z',\n '\\u017e': 'z',\n '\\u0132': 'IJ',\n '\\u0133': 'ij',\n '\\u0152': 'Oe',\n '\\u0153': 'oe',\n '\\u0149': \"'n\",\n '\\u017f': 's'\n };\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to compose unicode character classes. */\n var rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboMarksExtendedRange = '\\\\u1ab0-\\\\u1aff',\n rsComboMarksSupplementRange = '\\\\u1dc0-\\\\u1dff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange + rsComboMarksExtendedRange + rsComboMarksSupplementRange;\n\n /** Used to compose unicode capture groups. */\n var rsCombo = '[' + rsComboRange + ']';\n\n /**\r\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\r\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\r\n */\n var reComboMark = RegExp(rsCombo, 'g');\n function deburrLetter(key) {\n return deburredLetters[key];\n }\n ;\n function normalizeToBase(string) {\n string = string.toString();\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function (map) {\n var escaper = function (match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + Object.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function (string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n var htmlEscape = createEscaper(escapeMap);\n\n /**\r\n * ------------------------------------------------------------------------\r\n * Constants\r\n * ------------------------------------------------------------------------\r\n */\n\n var keyCodeMap = {\n 32: ' ',\n 48: '0',\n 49: '1',\n 50: '2',\n 51: '3',\n 52: '4',\n 53: '5',\n 54: '6',\n 55: '7',\n 56: '8',\n 57: '9',\n 59: ';',\n 65: 'A',\n 66: 'B',\n 67: 'C',\n 68: 'D',\n 69: 'E',\n 70: 'F',\n 71: 'G',\n 72: 'H',\n 73: 'I',\n 74: 'J',\n 75: 'K',\n 76: 'L',\n 77: 'M',\n 78: 'N',\n 79: 'O',\n 80: 'P',\n 81: 'Q',\n 82: 'R',\n 83: 'S',\n 84: 'T',\n 85: 'U',\n 86: 'V',\n 87: 'W',\n 88: 'X',\n 89: 'Y',\n 90: 'Z',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9'\n };\n var keyCodes = {\n ESCAPE: 27,\n // KeyboardEvent.which value for Escape (Esc) key\n ENTER: 13,\n // KeyboardEvent.which value for Enter key\n SPACE: 32,\n // KeyboardEvent.which value for space key\n TAB: 9,\n // KeyboardEvent.which value for tab key\n ARROW_UP: 38,\n // KeyboardEvent.which value for up arrow key\n ARROW_DOWN: 40 // KeyboardEvent.which value for down arrow key\n };\n\n var version = {\n success: false,\n major: '3'\n };\n try {\n version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.');\n version.major = version.full[0];\n version.success = true;\n } catch (err) {\n // do nothing\n }\n var selectId = 0;\n var EVENT_KEY = '.bs.select';\n var classNames = {\n DISABLED: 'disabled',\n DIVIDER: 'divider',\n SHOW: 'open',\n DROPUP: 'dropup',\n MENU: 'dropdown-menu',\n MENURIGHT: 'dropdown-menu-right',\n MENULEFT: 'dropdown-menu-left',\n // to-do: replace with more advanced template/customization options\n BUTTONCLASS: 'btn-default',\n POPOVERHEADER: 'popover-title',\n ICONBASE: 'glyphicon',\n TICKICON: 'glyphicon-ok'\n };\n var Selector = {\n MENU: '.' + classNames.MENU\n };\n var elementTemplates = {\n div: document.createElement('div'),\n span: document.createElement('span'),\n i: document.createElement('i'),\n subtext: document.createElement('small'),\n a: document.createElement('a'),\n li: document.createElement('li'),\n whitespace: document.createTextNode('\\u00A0'),\n fragment: document.createDocumentFragment()\n };\n elementTemplates.noResults = elementTemplates.li.cloneNode(false);\n elementTemplates.noResults.className = 'no-results';\n elementTemplates.a.setAttribute('role', 'option');\n elementTemplates.a.className = 'dropdown-item';\n elementTemplates.subtext.className = 'text-muted';\n elementTemplates.text = elementTemplates.span.cloneNode(false);\n elementTemplates.text.className = 'text';\n elementTemplates.checkMark = elementTemplates.span.cloneNode(false);\n var REGEXP_ARROW = new RegExp(keyCodes.ARROW_UP + '|' + keyCodes.ARROW_DOWN);\n var REGEXP_TAB_OR_ESCAPE = new RegExp('^' + keyCodes.TAB + '$|' + keyCodes.ESCAPE);\n var generateOption = {\n li: function (content, classes, optgroup) {\n var li = elementTemplates.li.cloneNode(false);\n if (content) {\n if (content.nodeType === 1 || content.nodeType === 11) {\n li.appendChild(content);\n } else {\n li.innerHTML = content;\n }\n }\n if (typeof classes !== 'undefined' && classes !== '') li.className = classes;\n if (typeof optgroup !== 'undefined' && optgroup !== null) li.classList.add('optgroup-' + optgroup);\n return li;\n },\n a: function (text, classes, inline) {\n var a = elementTemplates.a.cloneNode(true);\n if (text) {\n if (text.nodeType === 11) {\n a.appendChild(text);\n } else {\n a.insertAdjacentHTML('beforeend', text);\n }\n }\n if (typeof classes !== 'undefined' && classes !== '') a.classList.add.apply(a.classList, classes.split(/\\s+/));\n if (inline) a.setAttribute('style', inline);\n return a;\n },\n text: function (options, useFragment) {\n var textElement = elementTemplates.text.cloneNode(false),\n subtextElement,\n iconElement;\n if (options.content) {\n textElement.innerHTML = options.content;\n } else {\n textElement.textContent = options.text;\n if (options.icon) {\n var whitespace = elementTemplates.whitespace.cloneNode(false);\n\n // need to use <i> for icons in the button to prevent a breaking change\n // note: switch to span in next major release\n iconElement = (useFragment === true ? elementTemplates.i : elementTemplates.span).cloneNode(false);\n iconElement.className = this.options.iconBase + ' ' + options.icon;\n elementTemplates.fragment.appendChild(iconElement);\n elementTemplates.fragment.appendChild(whitespace);\n }\n if (options.subtext) {\n subtextElement = elementTemplates.subtext.cloneNode(false);\n subtextElement.textContent = options.subtext;\n textElement.appendChild(subtextElement);\n }\n }\n if (useFragment === true) {\n while (textElement.childNodes.length > 0) {\n elementTemplates.fragment.appendChild(textElement.childNodes[0]);\n }\n } else {\n elementTemplates.fragment.appendChild(textElement);\n }\n return elementTemplates.fragment;\n },\n label: function (options) {\n var textElement = elementTemplates.text.cloneNode(false),\n subtextElement,\n iconElement;\n textElement.innerHTML = options.display;\n if (options.icon) {\n var whitespace = elementTemplates.whitespace.cloneNode(false);\n iconElement = elementTemplates.span.cloneNode(false);\n iconElement.className = this.options.iconBase + ' ' + options.icon;\n elementTemplates.fragment.appendChild(iconElement);\n elementTemplates.fragment.appendChild(whitespace);\n }\n if (options.subtext) {\n subtextElement = elementTemplates.subtext.cloneNode(false);\n subtextElement.textContent = options.subtext;\n textElement.appendChild(subtextElement);\n }\n elementTemplates.fragment.appendChild(textElement);\n return elementTemplates.fragment;\n }\n };\n function showNoResults(searchMatch, searchValue) {\n if (!searchMatch.length) {\n elementTemplates.noResults.innerHTML = this.options.noneResultsText.replace('{0}', '\"' + htmlEscape(searchValue) + '\"');\n this.$menuInner[0].firstChild.appendChild(elementTemplates.noResults);\n }\n }\n var Selectpicker = function (element, options) {\n var that = this;\n\n // bootstrap-select has been initialized - revert valHooks.select.set back to its original function\n if (!valHooks.useDefault) {\n $.valHooks.select.set = valHooks._set;\n valHooks.useDefault = true;\n }\n this.$element = $(element);\n this.$newElement = null;\n this.$button = null;\n this.$menu = null;\n this.options = options;\n this.selectpicker = {\n main: {},\n search: {},\n current: {},\n // current changes if a search is in progress\n view: {},\n isSearching: false,\n keydown: {\n keyHistory: '',\n resetKeyHistory: {\n start: function () {\n return setTimeout(function () {\n that.selectpicker.keydown.keyHistory = '';\n }, 800);\n }\n }\n }\n };\n this.sizeInfo = {};\n\n // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a\n // data-attribute)\n if (this.options.title === null) {\n this.options.title = this.$element.attr('title');\n }\n\n // Format window padding\n var winPad = this.options.windowPadding;\n if (typeof winPad === 'number') {\n this.options.windowPadding = [winPad, winPad, winPad, winPad];\n }\n\n // Expose public methods\n this.val = Selectpicker.prototype.val;\n this.render = Selectpicker.prototype.render;\n this.refresh = Selectpicker.prototype.refresh;\n this.setStyle = Selectpicker.prototype.setStyle;\n this.selectAll = Selectpicker.prototype.selectAll;\n this.deselectAll = Selectpicker.prototype.deselectAll;\n this.destroy = Selectpicker.prototype.destroy;\n this.remove = Selectpicker.prototype.remove;\n this.show = Selectpicker.prototype.show;\n this.hide = Selectpicker.prototype.hide;\n this.init();\n };\n Selectpicker.VERSION = '1.13.18';\n\n // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.\n Selectpicker.DEFAULTS = {\n noneSelectedText: 'Nothing selected',\n noneResultsText: 'No results matched {0}',\n countSelectedText: function (numSelected, numTotal) {\n return numSelected == 1 ? '{0} item selected' : '{0} items selected';\n },\n maxOptionsText: function (numAll, numGroup) {\n return [numAll == 1 ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', numGroup == 1 ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'];\n },\n selectAllText: 'Select All',\n deselectAllText: 'Deselect All',\n doneButton: false,\n doneButtonText: 'Close',\n multipleSeparator: ', ',\n styleBase: 'btn',\n style: classNames.BUTTONCLASS,\n size: 'auto',\n title: null,\n selectedTextFormat: 'values',\n width: false,\n container: false,\n hideDisabled: false,\n showSubtext: false,\n showIcon: true,\n showContent: true,\n dropupAuto: true,\n header: false,\n liveSearch: false,\n liveSearchPlaceholder: null,\n liveSearchNormalize: false,\n liveSearchStyle: 'contains',\n actionsBox: false,\n iconBase: classNames.ICONBASE,\n tickIcon: classNames.TICKICON,\n showTick: false,\n template: {\n caret: '<span class=\"caret\"></span>'\n },\n maxOptions: false,\n mobile: false,\n selectOnTab: false,\n dropdownAlignRight: false,\n windowPadding: 0,\n virtualScroll: 600,\n display: false,\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist\n };\n Selectpicker.prototype = {\n constructor: Selectpicker,\n init: function () {\n var that = this,\n id = this.$element.attr('id'),\n element = this.$element[0],\n form = element.form;\n selectId++;\n this.selectId = 'bs-select-' + selectId;\n element.classList.add('bs-select-hidden');\n this.multiple = this.$element.prop('multiple');\n this.autofocus = this.$element.prop('autofocus');\n if (element.classList.contains('show-tick')) {\n this.options.showTick = true;\n }\n this.$newElement = this.createDropdown();\n this.buildData();\n this.$element.after(this.$newElement).prependTo(this.$newElement);\n\n // ensure select is associated with form element if it got unlinked after moving it inside newElement\n if (form && element.form === null) {\n if (!form.id) form.id = 'form-' + this.selectId;\n element.setAttribute('form', form.id);\n }\n this.$button = this.$newElement.children('button');\n this.$menu = this.$newElement.children(Selector.MENU);\n this.$menuInner = this.$menu.children('.inner');\n this.$searchbox = this.$menu.find('input');\n element.classList.remove('bs-select-hidden');\n if (this.options.dropdownAlignRight === true) this.$menu[0].classList.add(classNames.MENURIGHT);\n if (typeof id !== 'undefined') {\n this.$button.attr('data-id', id);\n }\n this.checkDisabled();\n this.clickListener();\n if (this.options.liveSearch) {\n this.liveSearchListener();\n this.focusedParent = this.$searchbox[0];\n } else {\n this.focusedParent = this.$menuInner[0];\n }\n this.setStyle();\n this.render();\n this.setWidth();\n if (this.options.container) {\n this.selectPosition();\n } else {\n this.$element.on('hide' + EVENT_KEY, function () {\n if (that.isVirtual()) {\n // empty menu on close\n var menuInner = that.$menuInner[0],\n emptyMenu = menuInner.firstChild.cloneNode(false);\n\n // replace the existing UL with an empty one - this is faster than $.empty() or innerHTML = ''\n menuInner.replaceChild(emptyMenu, menuInner.firstChild);\n menuInner.scrollTop = 0;\n }\n });\n }\n this.$menu.data('this', this);\n this.$newElement.data('this', this);\n if (this.options.mobile) this.mobile();\n this.$newElement.on({\n 'hide.bs.dropdown': function (e) {\n that.$element.trigger('hide' + EVENT_KEY, e);\n },\n 'hidden.bs.dropdown': function (e) {\n that.$element.trigger('hidden' + EVENT_KEY, e);\n },\n 'show.bs.dropdown': function (e) {\n that.$element.trigger('show' + EVENT_KEY, e);\n },\n 'shown.bs.dropdown': function (e) {\n that.$element.trigger('shown' + EVENT_KEY, e);\n }\n });\n if (element.hasAttribute('required')) {\n this.$element.on('invalid' + EVENT_KEY, function () {\n that.$button[0].classList.add('bs-invalid');\n that.$element.on('shown' + EVENT_KEY + '.invalid', function () {\n that.$element.val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened\n .off('shown' + EVENT_KEY + '.invalid');\n }).on('rendered' + EVENT_KEY, function () {\n // if select is no longer invalid, remove the bs-invalid class\n if (this.validity.valid) that.$button[0].classList.remove('bs-invalid');\n that.$element.off('rendered' + EVENT_KEY);\n });\n that.$button.on('blur' + EVENT_KEY, function () {\n that.$element.trigger('focus').trigger('blur');\n that.$button.off('blur' + EVENT_KEY);\n });\n });\n }\n setTimeout(function () {\n that.buildList();\n that.$element.trigger('loaded' + EVENT_KEY);\n });\n },\n createDropdown: function () {\n // Options\n // If we are multiple or showTick option is set, then add the show-tick class\n var showTick = this.multiple || this.options.showTick ? ' show-tick' : '',\n multiselectable = this.multiple ? ' aria-multiselectable=\"true\"' : '',\n inputGroup = '',\n autofocus = this.autofocus ? ' autofocus' : '';\n if (version.major < 4 && this.$element.parent().hasClass('input-group')) {\n inputGroup = ' input-group-btn';\n }\n\n // Elements\n var drop,\n header = '',\n searchbox = '',\n actionsbox = '',\n donebutton = '';\n if (this.options.header) {\n header = '<div class=\"' + classNames.POPOVERHEADER + '\">' + '<button type=\"button\" class=\"close\" aria-hidden=\"true\">×</button>' + this.options.header + '</div>';\n }\n if (this.options.liveSearch) {\n searchbox = '<div class=\"bs-searchbox\">' + '<input type=\"search\" class=\"form-control\" autocomplete=\"off\"' + (this.options.liveSearchPlaceholder === null ? '' : ' placeholder=\"' + htmlEscape(this.options.liveSearchPlaceholder) + '\"') + ' role=\"combobox\" aria-label=\"Search\" aria-controls=\"' + this.selectId + '\" aria-autocomplete=\"list\">' + '</div>';\n }\n if (this.multiple && this.options.actionsBox) {\n actionsbox = '<div class=\"bs-actionsbox\">' + '<div class=\"btn-group btn-group-sm btn-block\">' + '<button type=\"button\" class=\"actions-btn bs-select-all btn ' + classNames.BUTTONCLASS + '\">' + this.options.selectAllText + '</button>' + '<button type=\"button\" class=\"actions-btn bs-deselect-all btn ' + classNames.BUTTONCLASS + '\">' + this.options.deselectAllText + '</button>' + '</div>' + '</div>';\n }\n if (this.multiple && this.options.doneButton) {\n donebutton = '<div class=\"bs-donebutton\">' + '<div class=\"btn-group btn-block\">' + '<button type=\"button\" class=\"btn btn-sm ' + classNames.BUTTONCLASS + '\">' + this.options.doneButtonText + '</button>' + '</div>' + '</div>';\n }\n drop = '<div class=\"dropdown bootstrap-select' + showTick + inputGroup + '\">' + '<button type=\"button\" tabindex=\"-1\" class=\"' + this.options.styleBase + ' dropdown-toggle\" ' + (this.options.display === 'static' ? 'data-display=\"static\"' : '') + 'data-toggle=\"dropdown\"' + autofocus + ' role=\"combobox\" aria-owns=\"' + this.selectId + '\" aria-haspopup=\"listbox\" aria-expanded=\"false\">' + '<div class=\"filter-option\">' + '<div class=\"filter-option-inner\">' + '<div class=\"filter-option-inner-inner\"></div>' + '</div> ' + '</div>' + (version.major === '4' ? '' : '<span class=\"bs-caret\">' + this.options.template.caret + '</span>') + '</button>' + '<div class=\"' + classNames.MENU + ' ' + (version.major === '4' ? '' : classNames.SHOW) + '\">' + header + searchbox + actionsbox + '<div class=\"inner ' + classNames.SHOW + '\" role=\"listbox\" id=\"' + this.selectId + '\" tabindex=\"-1\" ' + multiselectable + '>' + '<ul class=\"' + classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : '') + '\" role=\"presentation\">' + '</ul>' + '</div>' + donebutton + '</div>' + '</div>';\n return $(drop);\n },\n setPositionData: function () {\n this.selectpicker.view.canHighlight = [];\n this.selectpicker.view.size = 0;\n this.selectpicker.view.firstHighlightIndex = false;\n for (var i = 0; i < this.selectpicker.current.data.length; i++) {\n var li = this.selectpicker.current.data[i],\n canHighlight = true;\n if (li.type === 'divider') {\n canHighlight = false;\n li.height = this.sizeInfo.dividerHeight;\n } else if (li.type === 'optgroup-label') {\n canHighlight = false;\n li.height = this.sizeInfo.dropdownHeaderHeight;\n } else {\n li.height = this.sizeInfo.liHeight;\n }\n if (li.disabled) canHighlight = false;\n this.selectpicker.view.canHighlight.push(canHighlight);\n if (canHighlight) {\n this.selectpicker.view.size++;\n li.posinset = this.selectpicker.view.size;\n if (this.selectpicker.view.firstHighlightIndex === false) this.selectpicker.view.firstHighlightIndex = i;\n }\n li.position = (i === 0 ? 0 : this.selectpicker.current.data[i - 1].position) + li.height;\n }\n },\n isVirtual: function () {\n return this.options.virtualScroll !== false && this.selectpicker.main.elements.length >= this.options.virtualScroll || this.options.virtualScroll === true;\n },\n createView: function (isSearching, setSize, refresh) {\n var that = this,\n scrollTop = 0,\n active = [],\n selected,\n prevActive;\n this.selectpicker.isSearching = isSearching;\n this.selectpicker.current = isSearching ? this.selectpicker.search : this.selectpicker.main;\n this.setPositionData();\n if (setSize) {\n if (refresh) {\n scrollTop = this.$menuInner[0].scrollTop;\n } else if (!that.multiple) {\n var element = that.$element[0],\n selectedIndex = (element.options[element.selectedIndex] || {}).liIndex;\n if (typeof selectedIndex === 'number' && that.options.size !== false) {\n var selectedData = that.selectpicker.main.data[selectedIndex],\n position = selectedData && selectedData.position;\n if (position) {\n scrollTop = position - (that.sizeInfo.menuInnerHeight + that.sizeInfo.liHeight) / 2;\n }\n }\n }\n }\n scroll(scrollTop, true);\n this.$menuInner.off('scroll.createView').on('scroll.createView', function (e, updateValue) {\n if (!that.noScroll) scroll(this.scrollTop, updateValue);\n that.noScroll = false;\n });\n function scroll(scrollTop, init) {\n var size = that.selectpicker.current.elements.length,\n chunks = [],\n chunkSize,\n chunkCount,\n firstChunk,\n lastChunk,\n currentChunk,\n prevPositions,\n positionIsDifferent,\n previousElements,\n menuIsDifferent = true,\n isVirtual = that.isVirtual();\n that.selectpicker.view.scrollTop = scrollTop;\n chunkSize = Math.ceil(that.sizeInfo.menuInnerHeight / that.sizeInfo.liHeight * 1.5); // number of options in a chunk\n chunkCount = Math.round(size / chunkSize) || 1; // number of chunks\n\n for (var i = 0; i < chunkCount; i++) {\n var endOfChunk = (i + 1) * chunkSize;\n if (i === chunkCount - 1) {\n endOfChunk = size;\n }\n chunks[i] = [i * chunkSize + (!i ? 0 : 1), endOfChunk];\n if (!size) break;\n if (currentChunk === undefined && scrollTop - 1 <= that.selectpicker.current.data[endOfChunk - 1].position - that.sizeInfo.menuInnerHeight) {\n currentChunk = i;\n }\n }\n if (currentChunk === undefined) currentChunk = 0;\n prevPositions = [that.selectpicker.view.position0, that.selectpicker.view.position1];\n\n // always display previous, current, and next chunks\n firstChunk = Math.max(0, currentChunk - 1);\n lastChunk = Math.min(chunkCount - 1, currentChunk + 1);\n that.selectpicker.view.position0 = isVirtual === false ? 0 : Math.max(0, chunks[firstChunk][0]) || 0;\n that.selectpicker.view.position1 = isVirtual === false ? size : Math.min(size, chunks[lastChunk][1]) || 0;\n positionIsDifferent = prevPositions[0] !== that.selectpicker.view.position0 || prevPositions[1] !== that.selectpicker.view.position1;\n if (that.activeIndex !== undefined) {\n prevActive = that.selectpicker.main.elements[that.prevActiveIndex];\n active = that.selectpicker.main.elements[that.activeIndex];\n selected = that.selectpicker.main.elements[that.selectedIndex];\n if (init) {\n if (that.activeIndex !== that.selectedIndex) {\n that.defocusItem(active);\n }\n that.activeIndex = undefined;\n }\n if (that.activeIndex && that.activeIndex !== that.selectedIndex) {\n that.defocusItem(selected);\n }\n }\n if (that.prevActiveIndex !== undefined && that.prevActiveIndex !== that.activeIndex && that.prevActiveIndex !== that.selectedIndex) {\n that.defocusItem(prevActive);\n }\n if (init || positionIsDifferent) {\n previousElements = that.selectpicker.view.visibleElements ? that.selectpicker.view.visibleElements.slice() : [];\n if (isVirtual === false) {\n that.selectpicker.view.visibleElements = that.selectpicker.current.elements;\n } else {\n that.selectpicker.view.visibleElements = that.selectpicker.current.elements.slice(that.selectpicker.view.position0, that.selectpicker.view.position1);\n }\n that.setOptionStatus();\n\n // if searching, check to make sure the list has actually been updated before updating DOM\n // this prevents unnecessary repaints\n if (isSearching || isVirtual === false && init) menuIsDifferent = !isEqual(previousElements, that.selectpicker.view.visibleElements);\n\n // if virtual scroll is disabled and not searching,\n // menu should never need to be updated more than once\n if ((init || isVirtual === true) && menuIsDifferent) {\n var menuInner = that.$menuInner[0],\n menuFragment = document.createDocumentFragment(),\n emptyMenu = menuInner.firstChild.cloneNode(false),\n marginTop,\n marginBottom,\n elements = that.selectpicker.view.visibleElements,\n toSanitize = [];\n\n // replace the existing UL with an empty one - this is faster than $.empty()\n menuInner.replaceChild(emptyMenu, menuInner.firstChild);\n for (var i = 0, visibleElementsLen = elements.length; i < visibleElementsLen; i++) {\n var element = elements[i],\n elText,\n elementData;\n if (that.options.sanitize) {\n elText = element.lastChild;\n if (elText) {\n elementData = that.selectpicker.current.data[i + that.selectpicker.view.position0];\n if (elementData && elementData.content && !elementData.sanitized) {\n toSanitize.push(elText);\n elementData.sanitized = true;\n }\n }\n }\n menuFragment.appendChild(element);\n }\n if (that.options.sanitize && toSanitize.length) {\n sanitizeHtml(toSanitize, that.options.whiteList, that.options.sanitizeFn);\n }\n if (isVirtual === true) {\n marginTop = that.selectpicker.view.position0 === 0 ? 0 : that.selectpicker.current.data[that.selectpicker.view.position0 - 1].position;\n marginBottom = that.selectpicker.view.position1 > size - 1 ? 0 : that.selectpicker.current.data[size - 1].position - that.selectpicker.current.data[that.selectpicker.view.position1 - 1].position;\n menuInner.firstChild.style.marginTop = marginTop + 'px';\n menuInner.firstChild.style.marginBottom = marginBottom + 'px';\n } else {\n menuInner.firstChild.style.marginTop = 0;\n menuInner.firstChild.style.marginBottom = 0;\n }\n menuInner.firstChild.appendChild(menuFragment);\n\n // if an option is encountered that is wider than the current menu width, update the menu width accordingly\n // switch to ResizeObserver with increased browser support\n if (isVirtual === true && that.sizeInfo.hasScrollBar) {\n var menuInnerInnerWidth = menuInner.firstChild.offsetWidth;\n if (init && menuInnerInnerWidth < that.sizeInfo.menuInnerInnerWidth && that.sizeInfo.totalMenuWidth > that.sizeInfo.selectWidth) {\n menuInner.firstChild.style.minWidth = that.sizeInfo.menuInnerInnerWidth + 'px';\n } else if (menuInnerInnerWidth > that.sizeInfo.menuInnerInnerWidth) {\n // set to 0 to get actual width of menu\n that.$menu[0].style.minWidth = 0;\n var actualMenuWidth = menuInner.firstChild.offsetWidth;\n if (actualMenuWidth > that.sizeInfo.menuInnerInnerWidth) {\n that.sizeInfo.menuInnerInnerWidth = actualMenuWidth;\n menuInner.firstChild.style.minWidth = that.sizeInfo.menuInnerInnerWidth + 'px';\n }\n\n // reset to default CSS styling\n that.$menu[0].style.minWidth = '';\n }\n }\n }\n }\n that.prevActiveIndex = that.activeIndex;\n if (!that.options.liveSearch) {\n that.$menuInner.trigger('focus');\n } else if (isSearching && init) {\n var index = 0,\n newActive;\n if (!that.selectpicker.view.canHighlight[index]) {\n index = 1 + that.selectpicker.view.canHighlight.slice(1).indexOf(true);\n }\n newActive = that.selectpicker.view.visibleElements[index];\n that.defocusItem(that.selectpicker.view.currentActive);\n that.activeIndex = (that.selectpicker.current.data[index] || {}).index;\n that.focusItem(newActive);\n }\n }\n $(window).off('resize' + EVENT_KEY + '.' + this.selectId + '.createView').on('resize' + EVENT_KEY + '.' + this.selectId + '.createView', function () {\n var isActive = that.$newElement.hasClass(classNames.SHOW);\n if (isActive) scroll(that.$menuInner[0].scrollTop);\n });\n },\n focusItem: function (li, liData, noStyle) {\n if (li) {\n liData = liData || this.selectpicker.main.data[this.activeIndex];\n var a = li.firstChild;\n if (a) {\n a.setAttribute('aria-setsize', this.selectpicker.view.size);\n a.setAttribute('aria-posinset', liData.posinset);\n if (noStyle !== true) {\n this.focusedParent.setAttribute('aria-activedescendant', a.id);\n li.classList.add('active');\n a.classList.add('active');\n }\n }\n }\n },\n defocusItem: function (li) {\n if (li) {\n li.classList.remove('active');\n if (li.firstChild) li.firstChild.classList.remove('active');\n }\n },\n setPlaceholder: function () {\n var that = this,\n updateIndex = false;\n if (this.options.title && !this.multiple) {\n if (!this.selectpicker.view.titleOption) this.selectpicker.view.titleOption = document.createElement('option');\n\n // this option doesn't create a new <li> element, but does add a new option at the start,\n // so startIndex should increase to prevent having to check every option for the bs-title-option class\n updateIndex = true;\n var element = this.$element[0],\n selectTitleOption = false,\n titleNotAppended = !this.selectpicker.view.titleOption.parentNode,\n selectedIndex = element.selectedIndex,\n selectedOption = element.options[selectedIndex],\n navigation = window.performance && window.performance.getEntriesByType('navigation'),\n // Safari doesn't support getEntriesByType('navigation') - fall back to performance.navigation\n isNotBackForward = navigation && navigation.length ? navigation[0].type !== 'back_forward' : window.performance.navigation.type !== 2;\n if (titleNotAppended) {\n // Use native JS to prepend option (faster)\n this.selectpicker.view.titleOption.className = 'bs-title-option';\n this.selectpicker.view.titleOption.value = '';\n\n // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.\n // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs,\n // if so, the select will have the data-selected attribute\n selectTitleOption = !selectedOption || selectedIndex === 0 && selectedOption.defaultSelected === false && this.$element.data('selected') === undefined;\n }\n if (titleNotAppended || this.selectpicker.view.titleOption.index !== 0) {\n element.insertBefore(this.selectpicker.view.titleOption, element.firstChild);\n }\n\n // Set selected *after* appending to select,\n // otherwise the option doesn't get selected in IE\n // set using selectedIndex, as setting the selected attr to true here doesn't work in IE11\n if (selectTitleOption && isNotBackForward) {\n element.selectedIndex = 0;\n } else if (document.readyState !== 'complete') {\n // if navigation type is back_forward, there's a chance the select will have its value set by BFCache\n // wait for that value to be set, then run render again\n window.addEventListener('pageshow', function () {\n if (that.selectpicker.view.displayedValue !== element.value) that.render();\n });\n }\n }\n return updateIndex;\n },\n buildData: function () {\n var optionSelector = ':not([hidden]):not([data-hidden=\"true\"])',\n mainData = [],\n optID = 0,\n startIndex = this.setPlaceholder() ? 1 : 0; // append the titleOption if necessary and skip the first option in the loop\n\n if (this.options.hideDisabled) optionSelector += ':not(:disabled)';\n var selectOptions = this.$element[0].querySelectorAll('select > *' + optionSelector);\n function addDivider(config) {\n var previousData = mainData[mainData.length - 1];\n\n // ensure optgroup doesn't create back-to-back dividers\n if (previousData && previousData.type === 'divider' && (previousData.optID || config.optID)) {\n return;\n }\n config = config || {};\n config.type = 'divider';\n mainData.push(config);\n }\n function addOption(option, config) {\n config = config || {};\n config.divider = option.getAttribute('data-divider') === 'true';\n if (config.divider) {\n addDivider({\n optID: config.optID\n });\n } else {\n var liIndex = mainData.length,\n cssText = option.style.cssText,\n inlineStyle = cssText ? htmlEscape(cssText) : '',\n optionClass = (option.className || '') + (config.optgroupClass || '');\n if (config.optID) optionClass = 'opt ' + optionClass;\n config.optionClass = optionClass.trim();\n config.inlineStyle = inlineStyle;\n config.text = option.textContent;\n config.content = option.getAttribute('data-content');\n config.tokens = option.getAttribute('data-tokens');\n config.subtext = option.getAttribute('data-subtext');\n config.icon = option.getAttribute('data-icon');\n option.liIndex = liIndex;\n config.display = config.content || config.text;\n config.type = 'option';\n config.index = liIndex;\n config.option = option;\n config.selected = !!option.selected;\n config.disabled = config.disabled || !!option.disabled;\n mainData.push(config);\n }\n }\n function addOptgroup(index, selectOptions) {\n var optgroup = selectOptions[index],\n // skip placeholder option\n previous = index - 1 < startIndex ? false : selectOptions[index - 1],\n next = selectOptions[index + 1],\n options = optgroup.querySelectorAll('option' + optionSelector);\n if (!options.length) return;\n var config = {\n display: htmlEscape(optgroup.label),\n subtext: optgroup.getAttribute('data-subtext'),\n icon: optgroup.getAttribute('data-icon'),\n type: 'optgroup-label',\n optgroupClass: ' ' + (optgroup.className || '')\n },\n headerIndex,\n lastIndex;\n optID++;\n if (previous) {\n addDivider({\n optID: optID\n });\n }\n config.optID = optID;\n mainData.push(config);\n for (var j = 0, len = options.length; j < len; j++) {\n var option = options[j];\n if (j === 0) {\n headerIndex = mainData.length - 1;\n lastIndex = headerIndex + len;\n }\n addOption(option, {\n headerIndex: headerIndex,\n lastIndex: lastIndex,\n optID: config.optID,\n optgroupClass: config.optgroupClass,\n disabled: optgroup.disabled\n });\n }\n if (next) {\n addDivider({\n optID: optID\n });\n }\n }\n for (var len = selectOptions.length, i = startIndex; i < len; i++) {\n var item = selectOptions[i];\n if (item.tagName !== 'OPTGROUP') {\n addOption(item, {});\n } else {\n addOptgroup(i, selectOptions);\n }\n }\n this.selectpicker.main.data = this.selectpicker.current.data = mainData;\n },\n buildList: function () {\n var that = this,\n selectData = this.selectpicker.main.data,\n mainElements = [],\n widestOptionLength = 0;\n if ((that.options.showTick || that.multiple) && !elementTemplates.checkMark.parentNode) {\n elementTemplates.checkMark.className = this.options.iconBase + ' ' + that.options.tickIcon + ' check-mark';\n elementTemplates.a.appendChild(elementTemplates.checkMark);\n }\n function buildElement(item) {\n var liElement,\n combinedLength = 0;\n switch (item.type) {\n case 'divider':\n liElement = generateOption.li(false, classNames.DIVIDER, item.optID ? item.optID + 'div' : undefined);\n break;\n case 'option':\n liElement = generateOption.li(generateOption.a(generateOption.text.call(that, item), item.optionClass, item.inlineStyle), '', item.optID);\n if (liElement.firstChild) {\n liElement.firstChild.id = that.selectId + '-' + item.index;\n }\n break;\n case 'optgroup-label':\n liElement = generateOption.li(generateOption.label.call(that, item), 'dropdown-header' + item.optgroupClass, item.optID);\n break;\n }\n item.element = liElement;\n mainElements.push(liElement);\n\n // count the number of characters in the option - not perfect, but should work in most cases\n if (item.display) combinedLength += item.display.length;\n if (item.subtext) combinedLength += item.subtext.length;\n // if there is an icon, ensure this option's width is checked\n if (item.icon) combinedLength += 1;\n if (combinedLength > widestOptionLength) {\n widestOptionLength = combinedLength;\n\n // guess which option is the widest\n // use this when calculating menu width\n // not perfect, but it's fast, and the width will be updating accordingly when scrolling\n that.selectpicker.view.widestOption = mainElements[mainElements.length - 1];\n }\n }\n for (var len = selectData.length, i = 0; i < len; i++) {\n var item = selectData[i];\n buildElement(item);\n }\n this.selectpicker.main.elements = this.selectpicker.current.elements = mainElements;\n },\n findLis: function () {\n return this.$menuInner.find('.inner > li');\n },\n render: function () {\n var that = this,\n element = this.$element[0],\n // ensure titleOption is appended and selected (if necessary) before getting selectedOptions\n placeholderSelected = this.setPlaceholder() && element.selectedIndex === 0,\n selectedOptions = getSelectedOptions(element, this.options.hideDisabled),\n selectedCount = selectedOptions.length,\n button = this.$button[0],\n buttonInner = button.querySelector('.filter-option-inner-inner'),\n multipleSeparator = document.createTextNode(this.options.multipleSeparator),\n titleFragment = elementTemplates.fragment.cloneNode(false),\n showCount,\n countMax,\n hasContent = false;\n button.classList.toggle('bs-placeholder', that.multiple ? !selectedCount : !getSelectValues(element, selectedOptions));\n if (!that.multiple && selectedOptions.length === 1) {\n that.selectpicker.view.displayedValue = getSelectValues(element, selectedOptions);\n }\n if (this.options.selectedTextFormat === 'static') {\n titleFragment = generateOption.text.call(this, {\n text: this.options.title\n }, true);\n } else {\n showCount = this.multiple && this.options.selectedTextFormat.indexOf('count') !== -1 && selectedCount > 1;\n\n // determine if the number of selected options will be shown (showCount === true)\n if (showCount) {\n countMax = this.options.selectedTextFormat.split('>');\n showCount = countMax.length > 1 && selectedCount > countMax[1] || countMax.length === 1 && selectedCount >= 2;\n }\n\n // only loop through all selected options if the count won't be shown\n if (showCount === false) {\n if (!placeholderSelected) {\n for (var selectedIndex = 0; selectedIndex < selectedCount; selectedIndex++) {\n if (selectedIndex < 50) {\n var option = selectedOptions[selectedIndex],\n thisData = this.selectpicker.main.data[option.liIndex],\n titleOptions = {};\n if (this.multiple && selectedIndex > 0) {\n titleFragment.appendChild(multipleSeparator.cloneNode(false));\n }\n if (option.title) {\n titleOptions.text = option.title;\n } else if (thisData) {\n if (thisData.content && that.options.showContent) {\n titleOptions.content = thisData.content.toString();\n hasContent = true;\n } else {\n if (that.options.showIcon) {\n titleOptions.icon = thisData.icon;\n }\n if (that.options.showSubtext && !that.multiple && thisData.subtext) titleOptions.subtext = ' ' + thisData.subtext;\n titleOptions.text = option.textContent.trim();\n }\n }\n titleFragment.appendChild(generateOption.text.call(this, titleOptions, true));\n } else {\n break;\n }\n }\n\n // add ellipsis\n if (selectedCount > 49) {\n titleFragment.appendChild(document.createTextNode('...'));\n }\n }\n } else {\n var optionSelector = ':not([hidden]):not([data-hidden=\"true\"]):not([data-divider=\"true\"])';\n if (this.options.hideDisabled) optionSelector += ':not(:disabled)';\n\n // If this is a multiselect, and selectedTextFormat is count, then show 1 of 2 selected, etc.\n var totalCount = this.$element[0].querySelectorAll('select > option' + optionSelector + ', optgroup' + optionSelector + ' option' + optionSelector).length,\n tr8nText = typeof this.options.countSelectedText === 'function' ? this.options.countSelectedText(selectedCount, totalCount) : this.options.countSelectedText;\n titleFragment = generateOption.text.call(this, {\n text: tr8nText.replace('{0}', selectedCount.toString()).replace('{1}', totalCount.toString())\n }, true);\n }\n }\n if (this.options.title == undefined) {\n // use .attr to ensure undefined is returned if title attribute is not set\n this.options.title = this.$element.attr('title');\n }\n\n // If the select doesn't have a title, then use the default, or if nothing is set at all, use noneSelectedText\n if (!titleFragment.childNodes.length) {\n titleFragment = generateOption.text.call(this, {\n text: typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText\n }, true);\n }\n\n // strip all HTML tags and trim the result, then unescape any escaped tags\n button.title = titleFragment.textContent.replace(/<[^>]*>?/g, '').trim();\n if (this.options.sanitize && hasContent) {\n sanitizeHtml([titleFragment], that.options.whiteList, that.options.sanitizeFn);\n }\n buttonInner.innerHTML = '';\n buttonInner.appendChild(titleFragment);\n if (version.major < 4 && this.$newElement[0].classList.contains('bs3-has-addon')) {\n var filterExpand = button.querySelector('.filter-expand'),\n clone = buttonInner.cloneNode(true);\n clone.className = 'filter-expand';\n if (filterExpand) {\n button.replaceChild(clone, filterExpand);\n } else {\n button.appendChild(clone);\n }\n }\n this.$element.trigger('rendered' + EVENT_KEY);\n },\n /**\r\n * @param [style]\r\n * @param [status]\r\n */\n setStyle: function (newStyle, status) {\n var button = this.$button[0],\n newElement = this.$newElement[0],\n style = this.options.style.trim(),\n buttonClass;\n if (this.$element.attr('class')) {\n this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]/gi, ''));\n }\n if (version.major < 4) {\n newElement.classList.add('bs3');\n if (newElement.parentNode.classList && newElement.parentNode.classList.contains('input-group') && (newElement.previousElementSibling || newElement.nextElementSibling) && (newElement.previousElementSibling || newElement.nextElementSibling).classList.contains('input-group-addon')) {\n newElement.classList.add('bs3-has-addon');\n }\n }\n if (newStyle) {\n buttonClass = newStyle.trim();\n } else {\n buttonClass = style;\n }\n if (status == 'add') {\n if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' '));\n } else if (status == 'remove') {\n if (buttonClass) button.classList.remove.apply(button.classList, buttonClass.split(' '));\n } else {\n if (style) button.classList.remove.apply(button.classList, style.split(' '));\n if (buttonClass) button.classList.add.apply(button.classList, buttonClass.split(' '));\n }\n },\n liHeight: function (refresh) {\n if (!refresh && (this.options.size === false || Object.keys(this.sizeInfo).length)) return;\n var newElement = elementTemplates.div.cloneNode(false),\n menu = elementTemplates.div.cloneNode(false),\n menuInner = elementTemplates.div.cloneNode(false),\n menuInnerInner = document.createElement('ul'),\n divider = elementTemplates.li.cloneNode(false),\n dropdownHeader = elementTemplates.li.cloneNode(false),\n li,\n a = elementTemplates.a.cloneNode(false),\n text = elementTemplates.span.cloneNode(false),\n header = this.options.header && this.$menu.find('.' + classNames.POPOVERHEADER).length > 0 ? this.$menu.find('.' + classNames.POPOVERHEADER)[0].cloneNode(true) : null,\n search = this.options.liveSearch ? elementTemplates.div.cloneNode(false) : null,\n actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,\n doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null,\n firstOption = this.$element.find('option')[0];\n this.sizeInfo.selectWidth = this.$newElement[0].offsetWidth;\n text.className = 'text';\n a.className = 'dropdown-item ' + (firstOption ? firstOption.className : '');\n newElement.className = this.$menu[0].parentNode.className + ' ' + classNames.SHOW;\n newElement.style.width = 0; // ensure button width doesn't affect natural width of menu when calculating\n if (this.options.width === 'auto') menu.style.minWidth = 0;\n menu.className = classNames.MENU + ' ' + classNames.SHOW;\n menuInner.className = 'inner ' + classNames.SHOW;\n menuInnerInner.className = classNames.MENU + ' inner ' + (version.major === '4' ? classNames.SHOW : '');\n divider.className = classNames.DIVIDER;\n dropdownHeader.className = 'dropdown-header';\n text.appendChild(document.createTextNode('\\u200b'));\n if (this.selectpicker.current.data.length) {\n for (var i = 0; i < this.selectpicker.current.data.length; i++) {\n var data = this.selectpicker.current.data[i];\n if (data.type === 'option') {\n li = data.element;\n break;\n }\n }\n } else {\n li = elementTemplates.li.cloneNode(false);\n a.appendChild(text);\n li.appendChild(a);\n }\n dropdownHeader.appendChild(text.cloneNode(true));\n if (this.selectpicker.view.widestOption) {\n menuInnerInner.appendChild(this.selectpicker.view.widestOption.cloneNode(true));\n }\n menuInnerInner.appendChild(li);\n menuInnerInner.appendChild(divider);\n menuInnerInner.appendChild(dropdownHeader);\n if (header) menu.appendChild(header);\n if (search) {\n var input = document.createElement('input');\n search.className = 'bs-searchbox';\n input.className = 'form-control';\n search.appendChild(input);\n menu.appendChild(search);\n }\n if (actions) menu.appendChild(actions);\n menuInner.appendChild(menuInnerInner);\n menu.appendChild(menuInner);\n if (doneButton) menu.appendChild(doneButton);\n newElement.appendChild(menu);\n document.body.appendChild(newElement);\n var liHeight = li.offsetHeight,\n dropdownHeaderHeight = dropdownHeader ? dropdownHeader.offsetHeight : 0,\n headerHeight = header ? header.offsetHeight : 0,\n searchHeight = search ? search.offsetHeight : 0,\n actionsHeight = actions ? actions.offsetHeight : 0,\n doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,\n dividerHeight = $(divider).outerHeight(true),\n // fall back to jQuery if getComputedStyle is not supported\n menuStyle = window.getComputedStyle ? window.getComputedStyle(menu) : false,\n menuWidth = menu.offsetWidth,\n $menu = menuStyle ? null : $(menu),\n menuPadding = {\n vert: toInteger(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + toInteger(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + toInteger(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + toInteger(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),\n horiz: toInteger(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + toInteger(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + toInteger(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + toInteger(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth'))\n },\n menuExtras = {\n vert: menuPadding.vert + toInteger(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + toInteger(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2,\n horiz: menuPadding.horiz + toInteger(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + toInteger(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2\n },\n scrollBarWidth;\n menuInner.style.overflowY = 'scroll';\n scrollBarWidth = menu.offsetWidth - menuWidth;\n document.body.removeChild(newElement);\n this.sizeInfo.liHeight = liHeight;\n this.sizeInfo.dropdownHeaderHeight = dropdownHeaderHeight;\n this.sizeInfo.headerHeight = headerHeight;\n this.sizeInfo.searchHeight = searchHeight;\n this.sizeInfo.actionsHeight = actionsHeight;\n this.sizeInfo.doneButtonHeight = doneButtonHeight;\n this.sizeInfo.dividerHeight = dividerHeight;\n this.sizeInfo.menuPadding = menuPadding;\n this.sizeInfo.menuExtras = menuExtras;\n this.sizeInfo.menuWidth = menuWidth;\n this.sizeInfo.menuInnerInnerWidth = menuWidth - menuPadding.horiz;\n this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth;\n this.sizeInfo.scrollBarWidth = scrollBarWidth;\n this.sizeInfo.selectHeight = this.$newElement[0].offsetHeight;\n this.setPositionData();\n },\n getSelectPosition: function () {\n var that = this,\n $window = $(window),\n pos = that.$newElement.offset(),\n $container = $(that.options.container),\n containerPos;\n if (that.options.container && $container.length && !$container.is('body')) {\n containerPos = $container.offset();\n containerPos.top += parseInt($container.css('borderTopWidth'));\n containerPos.left += parseInt($container.css('borderLeftWidth'));\n } else {\n containerPos = {\n top: 0,\n left: 0\n };\n }\n var winPad = that.options.windowPadding;\n this.sizeInfo.selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();\n this.sizeInfo.selectOffsetBot = $window.height() - this.sizeInfo.selectOffsetTop - this.sizeInfo.selectHeight - containerPos.top - winPad[2];\n this.sizeInfo.selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();\n this.sizeInfo.selectOffsetRight = $window.width() - this.sizeInfo.selectOffsetLeft - this.sizeInfo.selectWidth - containerPos.left - winPad[1];\n this.sizeInfo.selectOffsetTop -= winPad[0];\n this.sizeInfo.selectOffsetLeft -= winPad[3];\n },\n setMenuSize: function (isAuto) {\n this.getSelectPosition();\n var selectWidth = this.sizeInfo.selectWidth,\n liHeight = this.sizeInfo.liHeight,\n headerHeight = this.sizeInfo.headerHeight,\n searchHeight = this.sizeInfo.searchHeight,\n actionsHeight = this.sizeInfo.actionsHeight,\n doneButtonHeight = this.sizeInfo.doneButtonHeight,\n divHeight = this.sizeInfo.dividerHeight,\n menuPadding = this.sizeInfo.menuPadding,\n menuInnerHeight,\n menuHeight,\n divLength = 0,\n minHeight,\n _minHeight,\n maxHeight,\n menuInnerMinHeight,\n estimate,\n isDropup;\n if (this.options.dropupAuto) {\n // Get the estimated height of the menu without scrollbars.\n // This is useful for smaller menus, where there might be plenty of room\n // below the button without setting dropup, but we can't know\n // the exact height of the menu until createView is called later\n estimate = liHeight * this.selectpicker.current.elements.length + menuPadding.vert;\n isDropup = this.sizeInfo.selectOffsetTop - this.sizeInfo.selectOffsetBot > this.sizeInfo.menuExtras.vert && estimate + this.sizeInfo.menuExtras.vert + 50 > this.sizeInfo.selectOffsetBot;\n\n // ensure dropup doesn't change while searching (so menu doesn't bounce back and forth)\n if (this.selectpicker.isSearching === true) {\n isDropup = this.selectpicker.dropup;\n }\n this.$newElement.toggleClass(classNames.DROPUP, isDropup);\n this.selectpicker.dropup = isDropup;\n }\n if (this.options.size === 'auto') {\n _minHeight = this.selectpicker.current.elements.length > 3 ? this.sizeInfo.liHeight * 3 + this.sizeInfo.menuExtras.vert - 2 : 0;\n menuHeight = this.sizeInfo.selectOffsetBot - this.sizeInfo.menuExtras.vert;\n minHeight = _minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight;\n menuInnerMinHeight = Math.max(_minHeight - menuPadding.vert, 0);\n if (this.$newElement.hasClass(classNames.DROPUP)) {\n menuHeight = this.sizeInfo.selectOffsetTop - this.sizeInfo.menuExtras.vert;\n }\n maxHeight = menuHeight;\n menuInnerHeight = menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert;\n } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) {\n for (var i = 0; i < this.options.size; i++) {\n if (this.selectpicker.current.data[i].type === 'divider') divLength++;\n }\n menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;\n menuInnerHeight = menuHeight - menuPadding.vert;\n maxHeight = menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight;\n minHeight = menuInnerMinHeight = '';\n }\n this.$menu.css({\n 'max-height': maxHeight + 'px',\n 'overflow': 'hidden',\n 'min-height': minHeight + 'px'\n });\n this.$menuInner.css({\n 'max-height': menuInnerHeight + 'px',\n 'overflow-y': 'auto',\n 'min-height': menuInnerMinHeight + 'px'\n });\n\n // ensure menuInnerHeight is always a positive number to prevent issues calculating chunkSize in createView\n this.sizeInfo.menuInnerHeight = Math.max(menuInnerHeight, 1);\n if (this.selectpicker.current.data.length && this.selectpicker.current.data[this.selectpicker.current.data.length - 1].position > this.sizeInfo.menuInnerHeight) {\n this.sizeInfo.hasScrollBar = true;\n this.sizeInfo.totalMenuWidth = this.sizeInfo.menuWidth + this.sizeInfo.scrollBarWidth;\n }\n if (this.options.dropdownAlignRight === 'auto') {\n this.$menu.toggleClass(classNames.MENURIGHT, this.sizeInfo.selectOffsetLeft > this.sizeInfo.selectOffsetRight && this.sizeInfo.selectOffsetRight < this.sizeInfo.totalMenuWidth - selectWidth);\n }\n if (this.dropdown && this.dropdown._popper) this.dropdown._popper.update();\n },\n setSize: function (refresh) {\n this.liHeight(refresh);\n if (this.options.header) this.$menu.css('padding-top', 0);\n if (this.options.size !== false) {\n var that = this,\n $window = $(window);\n this.setMenuSize();\n if (this.options.liveSearch) {\n this.$searchbox.off('input.setMenuSize propertychange.setMenuSize').on('input.setMenuSize propertychange.setMenuSize', function () {\n return that.setMenuSize();\n });\n }\n if (this.options.size === 'auto') {\n $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize').on('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize', function () {\n return that.setMenuSize();\n });\n } else if (this.options.size && this.options.size != 'auto' && this.selectpicker.current.elements.length > this.options.size) {\n $window.off('resize' + EVENT_KEY + '.' + this.selectId + '.setMenuSize' + ' scroll' + EVENT_KEY + '.' + this.selectId + '.setMenuSize');\n }\n }\n this.createView(false, true, refresh);\n },\n setWidth: function () {\n var that = this;\n if (this.options.width === 'auto') {\n requestAnimationFrame(function () {\n that.$menu.css('min-width', '0');\n that.$element.on('loaded' + EVENT_KEY, function () {\n that.liHeight();\n that.setMenuSize();\n\n // Get correct width if element is hidden\n var $selectClone = that.$newElement.clone().appendTo('body'),\n btnWidth = $selectClone.css('width', 'auto').children('button').outerWidth();\n $selectClone.remove();\n\n // Set width to whatever's larger, button title or longest option\n that.sizeInfo.selectWidth = Math.max(that.sizeInfo.totalMenuWidth, btnWidth);\n that.$newElement.css('width', that.sizeInfo.selectWidth + 'px');\n });\n });\n } else if (this.options.width === 'fit') {\n // Remove inline min-width so width can be changed from 'auto'\n this.$menu.css('min-width', '');\n this.$newElement.css('width', '').addClass('fit-width');\n } else if (this.options.width) {\n // Remove inline min-width so width can be changed from 'auto'\n this.$menu.css('min-width', '');\n this.$newElement.css('width', this.options.width);\n } else {\n // Remove inline min-width/width so width can be changed\n this.$menu.css('min-width', '');\n this.$newElement.css('width', '');\n }\n // Remove fit-width class if width is changed programmatically\n if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\n this.$newElement[0].classList.remove('fit-width');\n }\n },\n selectPosition: function () {\n this.$bsContainer = $('<div class=\"bs-container\" />');\n var that = this,\n $container = $(this.options.container),\n pos,\n containerPos,\n actualHeight,\n getPlacement = function ($element) {\n var containerPosition = {},\n // fall back to dropdown's default display setting if display is not manually set\n display = that.options.display || (\n // Bootstrap 3 doesn't have $.fn.dropdown.Constructor.Default\n $.fn.dropdown.Constructor.Default ? $.fn.dropdown.Constructor.Default.display : false);\n that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass(classNames.DROPUP, $element.hasClass(classNames.DROPUP));\n pos = $element.offset();\n if (!$container.is('body')) {\n containerPos = $container.offset();\n containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();\n containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();\n } else {\n containerPos = {\n top: 0,\n left: 0\n };\n }\n actualHeight = $element.hasClass(classNames.DROPUP) ? 0 : $element[0].offsetHeight;\n\n // Bootstrap 4+ uses Popper for menu positioning\n if (version.major < 4 || display === 'static') {\n containerPosition.top = pos.top - containerPos.top + actualHeight;\n containerPosition.left = pos.left - containerPos.left;\n }\n containerPosition.width = $element[0].offsetWidth;\n that.$bsContainer.css(containerPosition);\n };\n this.$button.on('click.bs.dropdown.data-api', function () {\n if (that.isDisabled()) {\n return;\n }\n getPlacement(that.$newElement);\n that.$bsContainer.appendTo(that.options.container).toggleClass(classNames.SHOW, !that.$button.hasClass(classNames.SHOW)).append(that.$menu);\n });\n $(window).off('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId).on('resize' + EVENT_KEY + '.' + this.selectId + ' scroll' + EVENT_KEY + '.' + this.selectId, function () {\n var isActive = that.$newElement.hasClass(classNames.SHOW);\n if (isActive) getPlacement(that.$newElement);\n });\n this.$element.on('hide' + EVENT_KEY, function () {\n that.$menu.data('height', that.$menu.height());\n that.$bsContainer.detach();\n });\n },\n setOptionStatus: function (selectedOnly) {\n var that = this;\n that.noScroll = false;\n if (that.selectpicker.view.visibleElements && that.selectpicker.view.visibleElements.length) {\n for (var i = 0; i < that.selectpicker.view.visibleElements.length; i++) {\n var liData = that.selectpicker.current.data[i + that.selectpicker.view.position0],\n option = liData.option;\n if (option) {\n if (selectedOnly !== true) {\n that.setDisabled(liData.index, liData.disabled);\n }\n that.setSelected(liData.index, option.selected);\n }\n }\n }\n },\n /**\r\n * @param {number} index - the index of the option that is being changed\r\n * @param {boolean} selected - true if the option is being selected, false if being deselected\r\n */\n setSelected: function (index, selected) {\n var li = this.selectpicker.main.elements[index],\n liData = this.selectpicker.main.data[index],\n activeIndexIsSet = this.activeIndex !== undefined,\n thisIsActive = this.activeIndex === index,\n prevActive,\n a,\n // if current option is already active\n // OR\n // if the current option is being selected, it's NOT multiple, and\n // activeIndex is undefined:\n // - when the menu is first being opened, OR\n // - after a search has been performed, OR\n // - when retainActive is false when selecting a new option (i.e. index of the newly selected option is not the same as the current activeIndex)\n keepActive = thisIsActive || selected && !this.multiple && !activeIndexIsSet;\n liData.selected = selected;\n a = li.firstChild;\n if (selected) {\n this.selectedIndex = index;\n }\n li.classList.toggle('selected', selected);\n if (keepActive) {\n this.focusItem(li, liData);\n this.selectpicker.view.currentActive = li;\n this.activeIndex = index;\n } else {\n this.defocusItem(li);\n }\n if (a) {\n a.classList.toggle('selected', selected);\n if (selected) {\n a.setAttribute('aria-selected', true);\n } else {\n if (this.multiple) {\n a.setAttribute('aria-selected', false);\n } else {\n a.removeAttribute('aria-selected');\n }\n }\n }\n if (!keepActive && !activeIndexIsSet && selected && this.prevActiveIndex !== undefined) {\n prevActive = this.selectpicker.main.elements[this.prevActiveIndex];\n this.defocusItem(prevActive);\n }\n },\n /**\r\n * @param {number} index - the index of the option that is being disabled\r\n * @param {boolean} disabled - true if the option is being disabled, false if being enabled\r\n */\n setDisabled: function (index, disabled) {\n var li = this.selectpicker.main.elements[index],\n a;\n this.selectpicker.main.data[index].disabled = disabled;\n a = li.firstChild;\n li.classList.toggle(classNames.DISABLED, disabled);\n if (a) {\n if (version.major === '4') a.classList.toggle(classNames.DISABLED, disabled);\n if (disabled) {\n a.setAttribute('aria-disabled', disabled);\n a.setAttribute('tabindex', -1);\n } else {\n a.removeAttribute('aria-disabled');\n a.setAttribute('tabindex', 0);\n }\n }\n },\n isDisabled: function () {\n return this.$element[0].disabled;\n },\n checkDisabled: function () {\n if (this.isDisabled()) {\n this.$newElement[0].classList.add(classNames.DISABLED);\n this.$button.addClass(classNames.DISABLED).attr('aria-disabled', true);\n } else {\n if (this.$button[0].classList.contains(classNames.DISABLED)) {\n this.$newElement[0].classList.remove(classNames.DISABLED);\n this.$button.removeClass(classNames.DISABLED).attr('aria-disabled', false);\n }\n }\n },\n clickListener: function () {\n var that = this,\n $document = $(document);\n $document.data('spaceSelect', false);\n this.$button.on('keyup', function (e) {\n if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {\n e.preventDefault();\n $document.data('spaceSelect', false);\n }\n });\n this.$newElement.on('show.bs.dropdown', function () {\n if (version.major > 3 && !that.dropdown) {\n that.dropdown = that.$button.data('bs.dropdown');\n that.dropdown._menu = that.$menu[0];\n }\n });\n this.$button.on('click.bs.dropdown.data-api', function () {\n if (!that.$newElement.hasClass(classNames.SHOW)) {\n that.setSize();\n }\n });\n function setFocus() {\n if (that.options.liveSearch) {\n that.$searchbox.trigger('focus');\n } else {\n that.$menuInner.trigger('focus');\n }\n }\n function checkPopperExists() {\n if (that.dropdown && that.dropdown._popper && that.dropdown._popper.state.isCreated) {\n setFocus();\n } else {\n requestAnimationFrame(checkPopperExists);\n }\n }\n this.$element.on('shown' + EVENT_KEY, function () {\n if (that.$menuInner[0].scrollTop !== that.selectpicker.view.scrollTop) {\n that.$menuInner[0].scrollTop = that.selectpicker.view.scrollTop;\n }\n if (version.major > 3) {\n requestAnimationFrame(checkPopperExists);\n } else {\n setFocus();\n }\n });\n\n // ensure posinset and setsize are correct before selecting an option via a click\n this.$menuInner.on('mouseenter', 'li a', function (e) {\n var hoverLi = this.parentElement,\n position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0,\n index = Array.prototype.indexOf.call(hoverLi.parentElement.children, hoverLi),\n hoverData = that.selectpicker.current.data[index + position0];\n that.focusItem(hoverLi, hoverData, true);\n });\n this.$menuInner.on('click', 'li a', function (e, retainActive) {\n var $this = $(this),\n element = that.$element[0],\n position0 = that.isVirtual() ? that.selectpicker.view.position0 : 0,\n clickedData = that.selectpicker.current.data[$this.parent().index() + position0],\n clickedIndex = clickedData.index,\n prevValue = getSelectValues(element),\n prevIndex = element.selectedIndex,\n prevOption = element.options[prevIndex],\n triggerChange = true;\n\n // Don't close on multi choice menu\n if (that.multiple && that.options.maxOptions !== 1) {\n e.stopPropagation();\n }\n e.preventDefault();\n\n // Don't run if the select is disabled\n if (!that.isDisabled() && !$this.parent().hasClass(classNames.DISABLED)) {\n var option = clickedData.option,\n $option = $(option),\n state = option.selected,\n $optgroup = $option.parent('optgroup'),\n $optgroupOptions = $optgroup.find('option'),\n maxOptions = that.options.maxOptions,\n maxOptionsGrp = $optgroup.data('maxOptions') || false;\n if (clickedIndex === that.activeIndex) retainActive = true;\n if (!retainActive) {\n that.prevActiveIndex = that.activeIndex;\n that.activeIndex = undefined;\n }\n if (!that.multiple) {\n // Deselect all others if not multi select box\n if (prevOption) prevOption.selected = false;\n option.selected = true;\n that.setSelected(clickedIndex, true);\n } else {\n // Toggle the one we have chosen if we are multi select.\n option.selected = !state;\n that.setSelected(clickedIndex, !state);\n that.focusedParent.focus();\n if (maxOptions !== false || maxOptionsGrp !== false) {\n var maxReached = maxOptions < getSelectedOptions(element).length,\n maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;\n if (maxOptions && maxReached || maxOptionsGrp && maxReachedGrp) {\n if (maxOptions && maxOptions == 1) {\n element.selectedIndex = -1;\n option.selected = true;\n that.setOptionStatus(true);\n } else if (maxOptionsGrp && maxOptionsGrp == 1) {\n for (var i = 0; i < $optgroupOptions.length; i++) {\n var _option = $optgroupOptions[i];\n _option.selected = false;\n that.setSelected(_option.liIndex, false);\n }\n option.selected = true;\n that.setSelected(clickedIndex, true);\n } else {\n var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,\n maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,\n maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\n maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\n $notify = $('<div class=\"notify\"></div>');\n // If {var} is set in array, replace it\n /** @deprecated */\n if (maxOptionsArr[2]) {\n maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\n maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\n }\n option.selected = false;\n that.$menu.append($notify);\n if (maxOptions && maxReached) {\n $notify.append($('<div>' + maxTxt + '</div>'));\n triggerChange = false;\n that.$element.trigger('maxReached' + EVENT_KEY);\n }\n if (maxOptionsGrp && maxReachedGrp) {\n $notify.append($('<div>' + maxTxtGrp + '</div>'));\n triggerChange = false;\n that.$element.trigger('maxReachedGrp' + EVENT_KEY);\n }\n setTimeout(function () {\n that.setSelected(clickedIndex, false);\n }, 10);\n $notify[0].classList.add('fadeOut');\n setTimeout(function () {\n $notify.remove();\n }, 1050);\n }\n }\n }\n }\n if (!that.multiple || that.multiple && that.options.maxOptions === 1) {\n that.$button.trigger('focus');\n } else if (that.options.liveSearch) {\n that.$searchbox.trigger('focus');\n }\n\n // Trigger select 'change'\n if (triggerChange) {\n if (that.multiple || prevIndex !== element.selectedIndex) {\n // $option.prop('selected') is current option state (selected/unselected). prevValue is the value of the select prior to being changed.\n changedArguments = [option.index, $option.prop('selected'), prevValue];\n that.$element.triggerNative('change');\n }\n }\n }\n });\n this.$menu.on('click', 'li.' + classNames.DISABLED + ' a, .' + classNames.POPOVERHEADER + ', .' + classNames.POPOVERHEADER + ' :not(.close)', function (e) {\n if (e.currentTarget == this) {\n e.preventDefault();\n e.stopPropagation();\n if (that.options.liveSearch && !$(e.target).hasClass('close')) {\n that.$searchbox.trigger('focus');\n } else {\n that.$button.trigger('focus');\n }\n }\n });\n this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {\n e.preventDefault();\n e.stopPropagation();\n if (that.options.liveSearch) {\n that.$searchbox.trigger('focus');\n } else {\n that.$button.trigger('focus');\n }\n });\n this.$menu.on('click', '.' + classNames.POPOVERHEADER + ' .close', function () {\n that.$button.trigger('click');\n });\n this.$searchbox.on('click', function (e) {\n e.stopPropagation();\n });\n this.$menu.on('click', '.actions-btn', function (e) {\n if (that.options.liveSearch) {\n that.$searchbox.trigger('focus');\n } else {\n that.$button.trigger('focus');\n }\n e.preventDefault();\n e.stopPropagation();\n if ($(this).hasClass('bs-select-all')) {\n that.selectAll();\n } else {\n that.deselectAll();\n }\n });\n this.$button.on('focus' + EVENT_KEY, function (e) {\n var tabindex = that.$element[0].getAttribute('tabindex');\n\n // only change when button is actually focused\n if (tabindex !== undefined && e.originalEvent && e.originalEvent.isTrusted) {\n // apply select element's tabindex to ensure correct order is followed when tabbing to the next element\n this.setAttribute('tabindex', tabindex);\n // set element's tabindex to -1 to allow for reverse tabbing\n that.$element[0].setAttribute('tabindex', -1);\n that.selectpicker.view.tabindex = tabindex;\n }\n }).on('blur' + EVENT_KEY, function (e) {\n // revert everything to original tabindex\n if (that.selectpicker.view.tabindex !== undefined && e.originalEvent && e.originalEvent.isTrusted) {\n that.$element[0].setAttribute('tabindex', that.selectpicker.view.tabindex);\n this.setAttribute('tabindex', -1);\n that.selectpicker.view.tabindex = undefined;\n }\n });\n this.$element.on('change' + EVENT_KEY, function () {\n that.render();\n that.$element.trigger('changed' + EVENT_KEY, changedArguments);\n changedArguments = null;\n }).on('focus' + EVENT_KEY, function () {\n if (!that.options.mobile) that.$button[0].focus();\n });\n },\n liveSearchListener: function () {\n var that = this;\n this.$button.on('click.bs.dropdown.data-api', function () {\n if (!!that.$searchbox.val()) {\n that.$searchbox.val('');\n that.selectpicker.search.previousValue = undefined;\n }\n });\n this.$searchbox.on('click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api', function (e) {\n e.stopPropagation();\n });\n this.$searchbox.on('input propertychange', function () {\n var searchValue = that.$searchbox[0].value;\n that.selectpicker.search.elements = [];\n that.selectpicker.search.data = [];\n if (searchValue) {\n var i,\n searchMatch = [],\n q = searchValue.toUpperCase(),\n cache = {},\n cacheArr = [],\n searchStyle = that._searchStyle(),\n normalizeSearch = that.options.liveSearchNormalize;\n if (normalizeSearch) q = normalizeToBase(q);\n for (var i = 0; i < that.selectpicker.main.data.length; i++) {\n var li = that.selectpicker.main.data[i];\n if (!cache[i]) {\n cache[i] = stringSearch(li, q, searchStyle, normalizeSearch);\n }\n if (cache[i] && li.headerIndex !== undefined && cacheArr.indexOf(li.headerIndex) === -1) {\n if (li.headerIndex > 0) {\n cache[li.headerIndex - 1] = true;\n cacheArr.push(li.headerIndex - 1);\n }\n cache[li.headerIndex] = true;\n cacheArr.push(li.headerIndex);\n cache[li.lastIndex + 1] = true;\n }\n if (cache[i] && li.type !== 'optgroup-label') cacheArr.push(i);\n }\n for (var i = 0, cacheLen = cacheArr.length; i < cacheLen; i++) {\n var index = cacheArr[i],\n prevIndex = cacheArr[i - 1],\n li = that.selectpicker.main.data[index],\n liPrev = that.selectpicker.main.data[prevIndex];\n if (li.type !== 'divider' || li.type === 'divider' && liPrev && liPrev.type !== 'divider' && cacheLen - 1 !== i) {\n that.selectpicker.search.data.push(li);\n searchMatch.push(that.selectpicker.main.elements[index]);\n }\n }\n that.activeIndex = undefined;\n that.noScroll = true;\n that.$menuInner.scrollTop(0);\n that.selectpicker.search.elements = searchMatch;\n that.createView(true);\n showNoResults.call(that, searchMatch, searchValue);\n } else if (that.selectpicker.search.previousValue) {\n // for IE11 (#2402)\n that.$menuInner.scrollTop(0);\n that.createView(false);\n }\n that.selectpicker.search.previousValue = searchValue;\n });\n },\n _searchStyle: function () {\n return this.options.liveSearchStyle || 'contains';\n },\n val: function (value) {\n var element = this.$element[0];\n if (typeof value !== 'undefined') {\n var prevValue = getSelectValues(element);\n changedArguments = [null, null, prevValue];\n this.$element.val(value).trigger('changed' + EVENT_KEY, changedArguments);\n if (this.$newElement.hasClass(classNames.SHOW)) {\n if (this.multiple) {\n this.setOptionStatus(true);\n } else {\n var liSelectedIndex = (element.options[element.selectedIndex] || {}).liIndex;\n if (typeof liSelectedIndex === 'number') {\n this.setSelected(this.selectedIndex, false);\n this.setSelected(liSelectedIndex, true);\n }\n }\n }\n this.render();\n changedArguments = null;\n return this.$element;\n } else {\n return this.$element.val();\n }\n },\n changeAll: function (status) {\n if (!this.multiple) return;\n if (typeof status === 'undefined') status = true;\n var element = this.$element[0],\n previousSelected = 0,\n currentSelected = 0,\n prevValue = getSelectValues(element);\n element.classList.add('bs-select-hidden');\n for (var i = 0, data = this.selectpicker.current.data, len = data.length; i < len; i++) {\n var liData = data[i],\n option = liData.option;\n if (option && !liData.disabled && liData.type !== 'divider') {\n if (liData.selected) previousSelected++;\n option.selected = status;\n if (status === true) currentSelected++;\n }\n }\n element.classList.remove('bs-select-hidden');\n if (previousSelected === currentSelected) return;\n this.setOptionStatus();\n changedArguments = [null, null, prevValue];\n this.$element.triggerNative('change');\n },\n selectAll: function () {\n return this.changeAll(true);\n },\n deselectAll: function () {\n return this.changeAll(false);\n },\n toggle: function (e) {\n e = e || window.event;\n if (e) e.stopPropagation();\n this.$button.trigger('click.bs.dropdown.data-api');\n },\n keydown: function (e) {\n var $this = $(this),\n isToggle = $this.hasClass('dropdown-toggle'),\n $parent = isToggle ? $this.closest('.dropdown') : $this.closest(Selector.MENU),\n that = $parent.data('this'),\n $items = that.findLis(),\n index,\n isActive,\n liActive,\n activeLi,\n offset,\n updateScroll = false,\n downOnTab = e.which === keyCodes.TAB && !isToggle && !that.options.selectOnTab,\n isArrowKey = REGEXP_ARROW.test(e.which) || downOnTab,\n scrollTop = that.$menuInner[0].scrollTop,\n isVirtual = that.isVirtual(),\n position0 = isVirtual === true ? that.selectpicker.view.position0 : 0;\n\n // do nothing if a function key is pressed\n if (e.which >= 112 && e.which <= 123) return;\n isActive = that.$newElement.hasClass(classNames.SHOW);\n if (!isActive && (isArrowKey || e.which >= 48 && e.which <= 57 || e.which >= 96 && e.which <= 105 || e.which >= 65 && e.which <= 90)) {\n that.$button.trigger('click.bs.dropdown.data-api');\n if (that.options.liveSearch) {\n that.$searchbox.trigger('focus');\n return;\n }\n }\n if (e.which === keyCodes.ESCAPE && isActive) {\n e.preventDefault();\n that.$button.trigger('click.bs.dropdown.data-api').trigger('focus');\n }\n if (isArrowKey) {\n // if up or down\n if (!$items.length) return;\n liActive = that.selectpicker.main.elements[that.activeIndex];\n index = liActive ? Array.prototype.indexOf.call(liActive.parentElement.children, liActive) : -1;\n if (index !== -1) {\n that.defocusItem(liActive);\n }\n if (e.which === keyCodes.ARROW_UP) {\n // up\n if (index !== -1) index--;\n if (index + position0 < 0) index += $items.length;\n if (!that.selectpicker.view.canHighlight[index + position0]) {\n index = that.selectpicker.view.canHighlight.slice(0, index + position0).lastIndexOf(true) - position0;\n if (index === -1) index = $items.length - 1;\n }\n } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) {\n // down\n index++;\n if (index + position0 >= that.selectpicker.view.canHighlight.length) index = that.selectpicker.view.firstHighlightIndex;\n if (!that.selectpicker.view.canHighlight[index + position0]) {\n index = index + 1 + that.selectpicker.view.canHighlight.slice(index + position0 + 1).indexOf(true);\n }\n }\n e.preventDefault();\n var liActiveIndex = position0 + index;\n if (e.which === keyCodes.ARROW_UP) {\n // up\n // scroll to bottom and highlight last option\n if (position0 === 0 && index === $items.length - 1) {\n that.$menuInner[0].scrollTop = that.$menuInner[0].scrollHeight;\n liActiveIndex = that.selectpicker.current.elements.length - 1;\n } else {\n activeLi = that.selectpicker.current.data[liActiveIndex];\n offset = activeLi.position - activeLi.height;\n updateScroll = offset < scrollTop;\n }\n } else if (e.which === keyCodes.ARROW_DOWN || downOnTab) {\n // down\n // scroll to top and highlight first option\n if (index === that.selectpicker.view.firstHighlightIndex) {\n that.$menuInner[0].scrollTop = 0;\n liActiveIndex = that.selectpicker.view.firstHighlightIndex;\n } else {\n activeLi = that.selectpicker.current.data[liActiveIndex];\n offset = activeLi.position - that.sizeInfo.menuInnerHeight;\n updateScroll = offset > scrollTop;\n }\n }\n liActive = that.selectpicker.current.elements[liActiveIndex];\n that.activeIndex = that.selectpicker.current.data[liActiveIndex].index;\n that.focusItem(liActive);\n that.selectpicker.view.currentActive = liActive;\n if (updateScroll) that.$menuInner[0].scrollTop = offset;\n if (that.options.liveSearch) {\n that.$searchbox.trigger('focus');\n } else {\n $this.trigger('focus');\n }\n } else if (!$this.is('input') && !REGEXP_TAB_OR_ESCAPE.test(e.which) || e.which === keyCodes.SPACE && that.selectpicker.keydown.keyHistory) {\n var searchMatch,\n matches = [],\n keyHistory;\n e.preventDefault();\n that.selectpicker.keydown.keyHistory += keyCodeMap[e.which];\n if (that.selectpicker.keydown.resetKeyHistory.cancel) clearTimeout(that.selectpicker.keydown.resetKeyHistory.cancel);\n that.selectpicker.keydown.resetKeyHistory.cancel = that.selectpicker.keydown.resetKeyHistory.start();\n keyHistory = that.selectpicker.keydown.keyHistory;\n\n // if all letters are the same, set keyHistory to just the first character when searching\n if (/^(.)\\1+$/.test(keyHistory)) {\n keyHistory = keyHistory.charAt(0);\n }\n\n // find matches\n for (var i = 0; i < that.selectpicker.current.data.length; i++) {\n var li = that.selectpicker.current.data[i],\n hasMatch;\n hasMatch = stringSearch(li, keyHistory, 'startsWith', true);\n if (hasMatch && that.selectpicker.view.canHighlight[i]) {\n matches.push(li.index);\n }\n }\n if (matches.length) {\n var matchIndex = 0;\n $items.removeClass('active').find('a').removeClass('active');\n\n // either only one key has been pressed or they are all the same key\n if (keyHistory.length === 1) {\n matchIndex = matches.indexOf(that.activeIndex);\n if (matchIndex === -1 || matchIndex === matches.length - 1) {\n matchIndex = 0;\n } else {\n matchIndex++;\n }\n }\n searchMatch = matches[matchIndex];\n activeLi = that.selectpicker.main.data[searchMatch];\n if (scrollTop - activeLi.position > 0) {\n offset = activeLi.position - activeLi.height;\n updateScroll = true;\n } else {\n offset = activeLi.position - that.sizeInfo.menuInnerHeight;\n // if the option is already visible at the current scroll position, just keep it the same\n updateScroll = activeLi.position > scrollTop + that.sizeInfo.menuInnerHeight;\n }\n liActive = that.selectpicker.main.elements[searchMatch];\n that.activeIndex = matches[matchIndex];\n that.focusItem(liActive);\n if (liActive) liActive.firstChild.focus();\n if (updateScroll) that.$menuInner[0].scrollTop = offset;\n $this.trigger('focus');\n }\n }\n\n // Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\n if (isActive && (e.which === keyCodes.SPACE && !that.selectpicker.keydown.keyHistory || e.which === keyCodes.ENTER || e.which === keyCodes.TAB && that.options.selectOnTab)) {\n if (e.which !== keyCodes.SPACE) e.preventDefault();\n if (!that.options.liveSearch || e.which !== keyCodes.SPACE) {\n that.$menuInner.find('.active a').trigger('click', true); // retain active class\n $this.trigger('focus');\n if (!that.options.liveSearch) {\n // Prevent screen from scrolling if the user hits the spacebar\n e.preventDefault();\n // Fixes spacebar selection of dropdown items in FF & IE\n $(document).data('spaceSelect', true);\n }\n }\n }\n },\n mobile: function () {\n // ensure mobile is set to true if mobile function is called after init\n this.options.mobile = true;\n this.$element[0].classList.add('mobile-device');\n },\n refresh: function () {\n // update options if data attributes have been changed\n var config = $.extend({}, this.options, this.$element.data());\n this.options = config;\n this.checkDisabled();\n this.buildData();\n this.setStyle();\n this.render();\n this.buildList();\n this.setWidth();\n this.setSize(true);\n this.$element.trigger('refreshed' + EVENT_KEY);\n },\n hide: function () {\n this.$newElement.hide();\n },\n show: function () {\n this.$newElement.show();\n },\n remove: function () {\n this.$newElement.remove();\n this.$element.remove();\n },\n destroy: function () {\n this.$newElement.before(this.$element).remove();\n if (this.$bsContainer) {\n this.$bsContainer.remove();\n } else {\n this.$menu.remove();\n }\n if (this.selectpicker.view.titleOption && this.selectpicker.view.titleOption.parentNode) {\n this.selectpicker.view.titleOption.parentNode.removeChild(this.selectpicker.view.titleOption);\n }\n this.$element.off(EVENT_KEY).removeData('selectpicker').removeClass('bs-select-hidden selectpicker');\n $(window).off(EVENT_KEY + '.' + this.selectId);\n }\n };\n\n // SELECTPICKER PLUGIN DEFINITION\n // ==============================\n function Plugin(option) {\n // get the args of the outer function..\n var args = arguments;\n // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them\n // to get lost/corrupted in android 2.3 and IE9 #715 #775\n var _option = option;\n [].shift.apply(args);\n\n // if the version was not set successfully\n if (!version.success) {\n // try to retreive it again\n try {\n version.full = ($.fn.dropdown.Constructor.VERSION || '').split(' ')[0].split('.');\n } catch (err) {\n // fall back to use BootstrapVersion if set\n if (Selectpicker.BootstrapVersion) {\n version.full = Selectpicker.BootstrapVersion.split(' ')[0].split('.');\n } else {\n version.full = [version.major, '0', '0'];\n console.warn('There was an issue retrieving Bootstrap\\'s version. ' + 'Ensure Bootstrap is being loaded before bootstrap-select and there is no namespace collision. ' + 'If loading Bootstrap asynchronously, the version may need to be manually specified via $.fn.selectpicker.Constructor.BootstrapVersion.', err);\n }\n }\n version.major = version.full[0];\n version.success = true;\n }\n if (version.major === '4') {\n // some defaults need to be changed if using Bootstrap 4\n // check to see if they have already been manually changed before forcing them to update\n var toUpdate = [];\n if (Selectpicker.DEFAULTS.style === classNames.BUTTONCLASS) toUpdate.push({\n name: 'style',\n className: 'BUTTONCLASS'\n });\n if (Selectpicker.DEFAULTS.iconBase === classNames.ICONBASE) toUpdate.push({\n name: 'iconBase',\n className: 'ICONBASE'\n });\n if (Selectpicker.DEFAULTS.tickIcon === classNames.TICKICON) toUpdate.push({\n name: 'tickIcon',\n className: 'TICKICON'\n });\n classNames.DIVIDER = 'dropdown-divider';\n classNames.SHOW = 'show';\n classNames.BUTTONCLASS = 'btn-light';\n classNames.POPOVERHEADER = 'popover-header';\n classNames.ICONBASE = '';\n classNames.TICKICON = 'bs-ok-default';\n for (var i = 0; i < toUpdate.length; i++) {\n var option = toUpdate[i];\n Selectpicker.DEFAULTS[option.name] = classNames[option.className];\n }\n }\n var value;\n var chain = this.each(function () {\n var $this = $(this);\n if ($this.is('select')) {\n var data = $this.data('selectpicker'),\n options = typeof _option == 'object' && _option;\n if (!data) {\n var dataAttributes = $this.data();\n for (var dataAttr in dataAttributes) {\n if (Object.prototype.hasOwnProperty.call(dataAttributes, dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr];\n }\n }\n var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, dataAttributes, options);\n config.template = $.extend({}, Selectpicker.DEFAULTS.template, $.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}, dataAttributes.template, options.template);\n $this.data('selectpicker', data = new Selectpicker(this, config));\n } else if (options) {\n for (var i in options) {\n if (Object.prototype.hasOwnProperty.call(options, i)) {\n data.options[i] = options[i];\n }\n }\n }\n if (typeof _option == 'string') {\n if (data[_option] instanceof Function) {\n value = data[_option].apply(data, args);\n } else {\n value = data.options[_option];\n }\n }\n }\n });\n if (typeof value !== 'undefined') {\n // noinspection JSUnusedAssignment\n return value;\n } else {\n return chain;\n }\n }\n var old = $.fn.selectpicker;\n $.fn.selectpicker = Plugin;\n $.fn.selectpicker.Constructor = Selectpicker;\n\n // SELECTPICKER NO CONFLICT\n // ========================\n $.fn.selectpicker.noConflict = function () {\n $.fn.selectpicker = old;\n return this;\n };\n\n // get Bootstrap's keydown event handler for either Bootstrap 4 or Bootstrap 3\n function keydownHandler() {\n if ($.fn.dropdown) {\n // wait to define until function is called in case Bootstrap isn't loaded yet\n var bootstrapKeydown = $.fn.dropdown.Constructor._dataApiKeydownHandler || $.fn.dropdown.Constructor.prototype.keydown;\n return bootstrapKeydown.apply(this, arguments);\n }\n }\n $(document).off('keydown.bs.dropdown.data-api').on('keydown.bs.dropdown.data-api', ':not(.bootstrap-select) > [data-toggle=\"dropdown\"]', keydownHandler).on('keydown.bs.dropdown.data-api', ':not(.bootstrap-select) > .dropdown-menu', keydownHandler).on('keydown' + EVENT_KEY, '.bootstrap-select [data-toggle=\"dropdown\"], .bootstrap-select [role=\"listbox\"], .bootstrap-select .bs-searchbox input', Selectpicker.prototype.keydown).on('focusin.modal', '.bootstrap-select [data-toggle=\"dropdown\"], .bootstrap-select [role=\"listbox\"], .bootstrap-select .bs-searchbox input', function (e) {\n e.stopPropagation();\n });\n\n // SELECTPICKER DATA-API\n // =====================\n $(window).on('load' + EVENT_KEY + '.data-api', function () {\n $('.selectpicker').each(function () {\n var $selectpicker = $(this);\n Plugin.call($selectpicker, $selectpicker.data());\n });\n });\n })(jQuery);\n});","// tooltips - init (unless mobile device with touch)\nif(isTouchDevice()===false) {\n document.addEventListener(\"turbo:frame-load\", function() {\n initTooltips()\n })\n\n document.addEventListener(\"turbo:load\", function() {\n initTooltips()\n })\n}\n\nvar initTooltips = function () {\n $(\".tooltip\").tooltip(\"hide\");\n $('[data-toggle=\"tooltip\"]').tooltip({\n trigger: 'hover'\n })\n};\n\nfunction isTouchDevice(){\n return true == (\"ontouchstart\" in window || window.DocumentTouch && document instanceof DocumentTouch);\n}","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _handlebarsRuntime = require('./handlebars.runtime');\nvar _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime);\n\n// Compiler imports\n\nvar _handlebarsCompilerAst = require('./handlebars/compiler/ast');\nvar _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);\nvar _handlebarsCompilerBase = require('./handlebars/compiler/base');\nvar _handlebarsCompilerCompiler = require('./handlebars/compiler/compiler');\nvar _handlebarsCompilerJavascriptCompiler = require('./handlebars/compiler/javascript-compiler');\nvar _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);\nvar _handlebarsCompilerVisitor = require('./handlebars/compiler/visitor');\nvar _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\nvar _create = _handlebarsRuntime2['default'].create;\nfunction create() {\n var hb = _create();\n hb.compile = function (input, options) {\n return _handlebarsCompilerCompiler.compile(input, options, hb);\n };\n hb.precompile = function (input, options) {\n return _handlebarsCompilerCompiler.precompile(input, options, hb);\n };\n hb.AST = _handlebarsCompilerAst2['default'];\n hb.Compiler = _handlebarsCompilerCompiler.Compiler;\n hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default'];\n hb.Parser = _handlebarsCompilerBase.parser;\n hb.parse = _handlebarsCompilerBase.parse;\n hb.parseWithoutProcessing = _handlebarsCompilerBase.parseWithoutProcessing;\n return hb;\n}\nvar inst = create();\ninst.create = create;\n_handlebarsNoConflict2['default'](inst);\ninst.Visitor = _handlebarsCompilerVisitor2['default'];\ninst['default'] = inst;\nexports['default'] = inst;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nvar _utils = require('../utils');\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = {\n data: data\n };\n }\n return fn(context, options);\n }\n });\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _utils = require('../utils');\nvar _exception = require('../exception');\nvar _exception2 = _interopRequireDefault(_exception);\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n var newContext = [];\n var iterator = context[Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n if (i === 0) {\n ret = inverse(this);\n }\n return ret;\n });\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _exception = require('../exception');\nvar _exception2 = _interopRequireDefault(_exception);\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _utils = require('../utils');\nvar _exception = require('../exception');\nvar _exception2 = _interopRequireDefault(_exception);\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n instance.log.apply(instance, args);\n });\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _utils = require('../utils');\nvar _exception = require('../exception');\nvar _exception2 = _interopRequireDefault(_exception);\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n var fn = options.fn;\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _decoratorsInline = require('./decorators/inline');\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}","'use strict';\n\nexports.__esModule = true;\nvar _utils = require('../utils');\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n props.partials[options.args[0]] = options.fn;\n return ret;\n });\n};\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\nexports['default'] = SafeString;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n newObj['default'] = obj;\n return newObj;\n }\n}\nvar _utils = require('./utils');\nvar Utils = _interopRequireWildcard(_utils);\nvar _exception = require('./exception');\nvar _exception2 = _interopRequireDefault(_exception);\nvar _base = require('./base');\nvar _helpers = require('./helpers');\nvar _internalWrapHelper = require('./internal/wrapHelper');\nvar _internalProtoAccess = require('./internal/proto-access');\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var data = options.data;\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n ret.isTop = true;\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\nfunction noop() {\n return '';\n}\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({\n lookupProperty: lookupProperty\n }, options);\n });\n}","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}","'use strict';\n\nexports.__esModule = true;\nexports.parseWithoutProcessing = parseWithoutProcessing;\nexports.parse = parse;\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n newObj['default'] = obj;\n return newObj;\n }\n}\n\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _parser = require('./parser');\nvar _parser2 = _interopRequireDefault(_parser);\nvar _whitespaceControl = require('./whitespace-control');\nvar _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);\nvar _helpers = require('./helpers');\nvar Helpers = _interopRequireWildcard(_helpers);\nvar _utils = require('../utils');\nexports.parser = _parser2['default'];\nvar yy = {};\n_utils.extend(yy, Helpers);\nfunction parseWithoutProcessing(input, options) {\n // Just return if an already-compiled AST was passed in.\n if (input.type === 'Program') {\n return input;\n }\n _parser2['default'].yy = yy;\n\n // Altering the shared object here, but this is ok as parser is a sync operation\n yy.locInfo = function (locInfo) {\n return new yy.SourceLocation(options && options.srcName, locInfo);\n };\n var ast = _parser2['default'].parse(input);\n return ast;\n}\nfunction parse(input, options) {\n var ast = parseWithoutProcessing(input, options);\n var strip = new _whitespaceControl2['default'](options);\n return strip.accept(ast);\n}","// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\n\"use strict\";\n\nexports.__esModule = true;\nvar handlebars = function () {\n var parser = {\n trace: function trace() {},\n yy: {},\n symbols_: {\n \"error\": 2,\n \"root\": 3,\n \"program\": 4,\n \"EOF\": 5,\n \"program_repetition0\": 6,\n \"statement\": 7,\n \"mustache\": 8,\n \"block\": 9,\n \"rawBlock\": 10,\n \"partial\": 11,\n \"partialBlock\": 12,\n \"content\": 13,\n \"COMMENT\": 14,\n \"CONTENT\": 15,\n \"openRawBlock\": 16,\n \"rawBlock_repetition0\": 17,\n \"END_RAW_BLOCK\": 18,\n \"OPEN_RAW_BLOCK\": 19,\n \"helperName\": 20,\n \"openRawBlock_repetition0\": 21,\n \"openRawBlock_option0\": 22,\n \"CLOSE_RAW_BLOCK\": 23,\n \"openBlock\": 24,\n \"block_option0\": 25,\n \"closeBlock\": 26,\n \"openInverse\": 27,\n \"block_option1\": 28,\n \"OPEN_BLOCK\": 29,\n \"openBlock_repetition0\": 30,\n \"openBlock_option0\": 31,\n \"openBlock_option1\": 32,\n \"CLOSE\": 33,\n \"OPEN_INVERSE\": 34,\n \"openInverse_repetition0\": 35,\n \"openInverse_option0\": 36,\n \"openInverse_option1\": 37,\n \"openInverseChain\": 38,\n \"OPEN_INVERSE_CHAIN\": 39,\n \"openInverseChain_repetition0\": 40,\n \"openInverseChain_option0\": 41,\n \"openInverseChain_option1\": 42,\n \"inverseAndProgram\": 43,\n \"INVERSE\": 44,\n \"inverseChain\": 45,\n \"inverseChain_option0\": 46,\n \"OPEN_ENDBLOCK\": 47,\n \"OPEN\": 48,\n \"mustache_repetition0\": 49,\n \"mustache_option0\": 50,\n \"OPEN_UNESCAPED\": 51,\n \"mustache_repetition1\": 52,\n \"mustache_option1\": 53,\n \"CLOSE_UNESCAPED\": 54,\n \"OPEN_PARTIAL\": 55,\n \"partialName\": 56,\n \"partial_repetition0\": 57,\n \"partial_option0\": 58,\n \"openPartialBlock\": 59,\n \"OPEN_PARTIAL_BLOCK\": 60,\n \"openPartialBlock_repetition0\": 61,\n \"openPartialBlock_option0\": 62,\n \"param\": 63,\n \"sexpr\": 64,\n \"OPEN_SEXPR\": 65,\n \"sexpr_repetition0\": 66,\n \"sexpr_option0\": 67,\n \"CLOSE_SEXPR\": 68,\n \"hash\": 69,\n \"hash_repetition_plus0\": 70,\n \"hashSegment\": 71,\n \"ID\": 72,\n \"EQUALS\": 73,\n \"blockParams\": 74,\n \"OPEN_BLOCK_PARAMS\": 75,\n \"blockParams_repetition_plus0\": 76,\n \"CLOSE_BLOCK_PARAMS\": 77,\n \"path\": 78,\n \"dataName\": 79,\n \"STRING\": 80,\n \"NUMBER\": 81,\n \"BOOLEAN\": 82,\n \"UNDEFINED\": 83,\n \"NULL\": 84,\n \"DATA\": 85,\n \"pathSegments\": 86,\n \"SEP\": 87,\n \"$accept\": 0,\n \"$end\": 1\n },\n terminals_: {\n 2: \"error\",\n 5: \"EOF\",\n 14: \"COMMENT\",\n 15: \"CONTENT\",\n 18: \"END_RAW_BLOCK\",\n 19: \"OPEN_RAW_BLOCK\",\n 23: \"CLOSE_RAW_BLOCK\",\n 29: \"OPEN_BLOCK\",\n 33: \"CLOSE\",\n 34: \"OPEN_INVERSE\",\n 39: \"OPEN_INVERSE_CHAIN\",\n 44: \"INVERSE\",\n 47: \"OPEN_ENDBLOCK\",\n 48: \"OPEN\",\n 51: \"OPEN_UNESCAPED\",\n 54: \"CLOSE_UNESCAPED\",\n 55: \"OPEN_PARTIAL\",\n 60: \"OPEN_PARTIAL_BLOCK\",\n 65: \"OPEN_SEXPR\",\n 68: \"CLOSE_SEXPR\",\n 72: \"ID\",\n 73: \"EQUALS\",\n 75: \"OPEN_BLOCK_PARAMS\",\n 77: \"CLOSE_BLOCK_PARAMS\",\n 80: \"STRING\",\n 81: \"NUMBER\",\n 82: \"BOOLEAN\",\n 83: \"UNDEFINED\",\n 84: \"NULL\",\n 85: \"DATA\",\n 87: \"SEP\"\n },\n productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) {\n var $0 = $$.length - 1;\n switch (yystate) {\n case 1:\n return $$[$0 - 1];\n break;\n case 2:\n this.$ = yy.prepareProgram($$[$0]);\n break;\n case 3:\n this.$ = $$[$0];\n break;\n case 4:\n this.$ = $$[$0];\n break;\n case 5:\n this.$ = $$[$0];\n break;\n case 6:\n this.$ = $$[$0];\n break;\n case 7:\n this.$ = $$[$0];\n break;\n case 8:\n this.$ = $$[$0];\n break;\n case 9:\n this.$ = {\n type: 'CommentStatement',\n value: yy.stripComment($$[$0]),\n strip: yy.stripFlags($$[$0], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n case 10:\n this.$ = {\n type: 'ContentStatement',\n original: $$[$0],\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n case 11:\n this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n case 12:\n this.$ = {\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1]\n };\n break;\n case 13:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);\n break;\n case 14:\n this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);\n break;\n case 15:\n this.$ = {\n open: $$[$0 - 5],\n path: $$[$0 - 4],\n params: $$[$0 - 3],\n hash: $$[$0 - 2],\n blockParams: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 5], $$[$0])\n };\n break;\n case 16:\n this.$ = {\n path: $$[$0 - 4],\n params: $$[$0 - 3],\n hash: $$[$0 - 2],\n blockParams: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 5], $$[$0])\n };\n break;\n case 17:\n this.$ = {\n path: $$[$0 - 4],\n params: $$[$0 - 3],\n hash: $$[$0 - 2],\n blockParams: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 5], $$[$0])\n };\n break;\n case 18:\n this.$ = {\n strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]),\n program: $$[$0]\n };\n break;\n case 19:\n var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$),\n program = yy.prepareProgram([inverse], $$[$0 - 1].loc);\n program.chained = true;\n this.$ = {\n strip: $$[$0 - 2].strip,\n program: program,\n chain: true\n };\n break;\n case 20:\n this.$ = $$[$0];\n break;\n case 21:\n this.$ = {\n path: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 2], $$[$0])\n };\n break;\n case 22:\n this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);\n break;\n case 23:\n this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);\n break;\n case 24:\n this.$ = {\n type: 'PartialStatement',\n name: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n indent: '',\n strip: yy.stripFlags($$[$0 - 4], $$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n case 25:\n this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);\n break;\n case 26:\n this.$ = {\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n strip: yy.stripFlags($$[$0 - 4], $$[$0])\n };\n break;\n case 27:\n this.$ = $$[$0];\n break;\n case 28:\n this.$ = $$[$0];\n break;\n case 29:\n this.$ = {\n type: 'SubExpression',\n path: $$[$0 - 3],\n params: $$[$0 - 2],\n hash: $$[$0 - 1],\n loc: yy.locInfo(this._$)\n };\n break;\n case 30:\n this.$ = {\n type: 'Hash',\n pairs: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n case 31:\n this.$ = {\n type: 'HashPair',\n key: yy.id($$[$0 - 2]),\n value: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n case 32:\n this.$ = yy.id($$[$0 - 1]);\n break;\n case 33:\n this.$ = $$[$0];\n break;\n case 34:\n this.$ = $$[$0];\n break;\n case 35:\n this.$ = {\n type: 'StringLiteral',\n value: $$[$0],\n original: $$[$0],\n loc: yy.locInfo(this._$)\n };\n break;\n case 36:\n this.$ = {\n type: 'NumberLiteral',\n value: Number($$[$0]),\n original: Number($$[$0]),\n loc: yy.locInfo(this._$)\n };\n break;\n case 37:\n this.$ = {\n type: 'BooleanLiteral',\n value: $$[$0] === 'true',\n original: $$[$0] === 'true',\n loc: yy.locInfo(this._$)\n };\n break;\n case 38:\n this.$ = {\n type: 'UndefinedLiteral',\n original: undefined,\n value: undefined,\n loc: yy.locInfo(this._$)\n };\n break;\n case 39:\n this.$ = {\n type: 'NullLiteral',\n original: null,\n value: null,\n loc: yy.locInfo(this._$)\n };\n break;\n case 40:\n this.$ = $$[$0];\n break;\n case 41:\n this.$ = $$[$0];\n break;\n case 42:\n this.$ = yy.preparePath(true, $$[$0], this._$);\n break;\n case 43:\n this.$ = yy.preparePath(false, $$[$0], this._$);\n break;\n case 44:\n $$[$0 - 2].push({\n part: yy.id($$[$0]),\n original: $$[$0],\n separator: $$[$0 - 1]\n });\n this.$ = $$[$0 - 2];\n break;\n case 45:\n this.$ = [{\n part: yy.id($$[$0]),\n original: $$[$0]\n }];\n break;\n case 46:\n this.$ = [];\n break;\n case 47:\n $$[$0 - 1].push($$[$0]);\n break;\n case 48:\n this.$ = [];\n break;\n case 49:\n $$[$0 - 1].push($$[$0]);\n break;\n case 50:\n this.$ = [];\n break;\n case 51:\n $$[$0 - 1].push($$[$0]);\n break;\n case 58:\n this.$ = [];\n break;\n case 59:\n $$[$0 - 1].push($$[$0]);\n break;\n case 64:\n this.$ = [];\n break;\n case 65:\n $$[$0 - 1].push($$[$0]);\n break;\n case 70:\n this.$ = [];\n break;\n case 71:\n $$[$0 - 1].push($$[$0]);\n break;\n case 78:\n this.$ = [];\n break;\n case 79:\n $$[$0 - 1].push($$[$0]);\n break;\n case 82:\n this.$ = [];\n break;\n case 83:\n $$[$0 - 1].push($$[$0]);\n break;\n case 86:\n this.$ = [];\n break;\n case 87:\n $$[$0 - 1].push($$[$0]);\n break;\n case 90:\n this.$ = [];\n break;\n case 91:\n $$[$0 - 1].push($$[$0]);\n break;\n case 94:\n this.$ = [];\n break;\n case 95:\n $$[$0 - 1].push($$[$0]);\n break;\n case 98:\n this.$ = [$$[$0]];\n break;\n case 99:\n $$[$0 - 1].push($$[$0]);\n break;\n case 100:\n this.$ = [$$[$0]];\n break;\n case 101:\n $$[$0 - 1].push($$[$0]);\n break;\n }\n },\n table: [{\n 3: 1,\n 4: 2,\n 5: [2, 46],\n 6: 3,\n 14: [2, 46],\n 15: [2, 46],\n 19: [2, 46],\n 29: [2, 46],\n 34: [2, 46],\n 48: [2, 46],\n 51: [2, 46],\n 55: [2, 46],\n 60: [2, 46]\n }, {\n 1: [3]\n }, {\n 5: [1, 4]\n }, {\n 5: [2, 2],\n 7: 5,\n 8: 6,\n 9: 7,\n 10: 8,\n 11: 9,\n 12: 10,\n 13: 11,\n 14: [1, 12],\n 15: [1, 20],\n 16: 17,\n 19: [1, 23],\n 24: 15,\n 27: 16,\n 29: [1, 21],\n 34: [1, 22],\n 39: [2, 2],\n 44: [2, 2],\n 47: [2, 2],\n 48: [1, 13],\n 51: [1, 14],\n 55: [1, 18],\n 59: 19,\n 60: [1, 24]\n }, {\n 1: [2, 1]\n }, {\n 5: [2, 47],\n 14: [2, 47],\n 15: [2, 47],\n 19: [2, 47],\n 29: [2, 47],\n 34: [2, 47],\n 39: [2, 47],\n 44: [2, 47],\n 47: [2, 47],\n 48: [2, 47],\n 51: [2, 47],\n 55: [2, 47],\n 60: [2, 47]\n }, {\n 5: [2, 3],\n 14: [2, 3],\n 15: [2, 3],\n 19: [2, 3],\n 29: [2, 3],\n 34: [2, 3],\n 39: [2, 3],\n 44: [2, 3],\n 47: [2, 3],\n 48: [2, 3],\n 51: [2, 3],\n 55: [2, 3],\n 60: [2, 3]\n }, {\n 5: [2, 4],\n 14: [2, 4],\n 15: [2, 4],\n 19: [2, 4],\n 29: [2, 4],\n 34: [2, 4],\n 39: [2, 4],\n 44: [2, 4],\n 47: [2, 4],\n 48: [2, 4],\n 51: [2, 4],\n 55: [2, 4],\n 60: [2, 4]\n }, {\n 5: [2, 5],\n 14: [2, 5],\n 15: [2, 5],\n 19: [2, 5],\n 29: [2, 5],\n 34: [2, 5],\n 39: [2, 5],\n 44: [2, 5],\n 47: [2, 5],\n 48: [2, 5],\n 51: [2, 5],\n 55: [2, 5],\n 60: [2, 5]\n }, {\n 5: [2, 6],\n 14: [2, 6],\n 15: [2, 6],\n 19: [2, 6],\n 29: [2, 6],\n 34: [2, 6],\n 39: [2, 6],\n 44: [2, 6],\n 47: [2, 6],\n 48: [2, 6],\n 51: [2, 6],\n 55: [2, 6],\n 60: [2, 6]\n }, {\n 5: [2, 7],\n 14: [2, 7],\n 15: [2, 7],\n 19: [2, 7],\n 29: [2, 7],\n 34: [2, 7],\n 39: [2, 7],\n 44: [2, 7],\n 47: [2, 7],\n 48: [2, 7],\n 51: [2, 7],\n 55: [2, 7],\n 60: [2, 7]\n }, {\n 5: [2, 8],\n 14: [2, 8],\n 15: [2, 8],\n 19: [2, 8],\n 29: [2, 8],\n 34: [2, 8],\n 39: [2, 8],\n 44: [2, 8],\n 47: [2, 8],\n 48: [2, 8],\n 51: [2, 8],\n 55: [2, 8],\n 60: [2, 8]\n }, {\n 5: [2, 9],\n 14: [2, 9],\n 15: [2, 9],\n 19: [2, 9],\n 29: [2, 9],\n 34: [2, 9],\n 39: [2, 9],\n 44: [2, 9],\n 47: [2, 9],\n 48: [2, 9],\n 51: [2, 9],\n 55: [2, 9],\n 60: [2, 9]\n }, {\n 20: 25,\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 20: 36,\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 4: 37,\n 6: 3,\n 14: [2, 46],\n 15: [2, 46],\n 19: [2, 46],\n 29: [2, 46],\n 34: [2, 46],\n 39: [2, 46],\n 44: [2, 46],\n 47: [2, 46],\n 48: [2, 46],\n 51: [2, 46],\n 55: [2, 46],\n 60: [2, 46]\n }, {\n 4: 38,\n 6: 3,\n 14: [2, 46],\n 15: [2, 46],\n 19: [2, 46],\n 29: [2, 46],\n 34: [2, 46],\n 44: [2, 46],\n 47: [2, 46],\n 48: [2, 46],\n 51: [2, 46],\n 55: [2, 46],\n 60: [2, 46]\n }, {\n 15: [2, 48],\n 17: 39,\n 18: [2, 48]\n }, {\n 20: 41,\n 56: 40,\n 64: 42,\n 65: [1, 43],\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 4: 44,\n 6: 3,\n 14: [2, 46],\n 15: [2, 46],\n 19: [2, 46],\n 29: [2, 46],\n 34: [2, 46],\n 47: [2, 46],\n 48: [2, 46],\n 51: [2, 46],\n 55: [2, 46],\n 60: [2, 46]\n }, {\n 5: [2, 10],\n 14: [2, 10],\n 15: [2, 10],\n 18: [2, 10],\n 19: [2, 10],\n 29: [2, 10],\n 34: [2, 10],\n 39: [2, 10],\n 44: [2, 10],\n 47: [2, 10],\n 48: [2, 10],\n 51: [2, 10],\n 55: [2, 10],\n 60: [2, 10]\n }, {\n 20: 45,\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 20: 46,\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 20: 47,\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 20: 41,\n 56: 48,\n 64: 42,\n 65: [1, 43],\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 33: [2, 78],\n 49: 49,\n 65: [2, 78],\n 72: [2, 78],\n 80: [2, 78],\n 81: [2, 78],\n 82: [2, 78],\n 83: [2, 78],\n 84: [2, 78],\n 85: [2, 78]\n }, {\n 23: [2, 33],\n 33: [2, 33],\n 54: [2, 33],\n 65: [2, 33],\n 68: [2, 33],\n 72: [2, 33],\n 75: [2, 33],\n 80: [2, 33],\n 81: [2, 33],\n 82: [2, 33],\n 83: [2, 33],\n 84: [2, 33],\n 85: [2, 33]\n }, {\n 23: [2, 34],\n 33: [2, 34],\n 54: [2, 34],\n 65: [2, 34],\n 68: [2, 34],\n 72: [2, 34],\n 75: [2, 34],\n 80: [2, 34],\n 81: [2, 34],\n 82: [2, 34],\n 83: [2, 34],\n 84: [2, 34],\n 85: [2, 34]\n }, {\n 23: [2, 35],\n 33: [2, 35],\n 54: [2, 35],\n 65: [2, 35],\n 68: [2, 35],\n 72: [2, 35],\n 75: [2, 35],\n 80: [2, 35],\n 81: [2, 35],\n 82: [2, 35],\n 83: [2, 35],\n 84: [2, 35],\n 85: [2, 35]\n }, {\n 23: [2, 36],\n 33: [2, 36],\n 54: [2, 36],\n 65: [2, 36],\n 68: [2, 36],\n 72: [2, 36],\n 75: [2, 36],\n 80: [2, 36],\n 81: [2, 36],\n 82: [2, 36],\n 83: [2, 36],\n 84: [2, 36],\n 85: [2, 36]\n }, {\n 23: [2, 37],\n 33: [2, 37],\n 54: [2, 37],\n 65: [2, 37],\n 68: [2, 37],\n 72: [2, 37],\n 75: [2, 37],\n 80: [2, 37],\n 81: [2, 37],\n 82: [2, 37],\n 83: [2, 37],\n 84: [2, 37],\n 85: [2, 37]\n }, {\n 23: [2, 38],\n 33: [2, 38],\n 54: [2, 38],\n 65: [2, 38],\n 68: [2, 38],\n 72: [2, 38],\n 75: [2, 38],\n 80: [2, 38],\n 81: [2, 38],\n 82: [2, 38],\n 83: [2, 38],\n 84: [2, 38],\n 85: [2, 38]\n }, {\n 23: [2, 39],\n 33: [2, 39],\n 54: [2, 39],\n 65: [2, 39],\n 68: [2, 39],\n 72: [2, 39],\n 75: [2, 39],\n 80: [2, 39],\n 81: [2, 39],\n 82: [2, 39],\n 83: [2, 39],\n 84: [2, 39],\n 85: [2, 39]\n }, {\n 23: [2, 43],\n 33: [2, 43],\n 54: [2, 43],\n 65: [2, 43],\n 68: [2, 43],\n 72: [2, 43],\n 75: [2, 43],\n 80: [2, 43],\n 81: [2, 43],\n 82: [2, 43],\n 83: [2, 43],\n 84: [2, 43],\n 85: [2, 43],\n 87: [1, 50]\n }, {\n 72: [1, 35],\n 86: 51\n }, {\n 23: [2, 45],\n 33: [2, 45],\n 54: [2, 45],\n 65: [2, 45],\n 68: [2, 45],\n 72: [2, 45],\n 75: [2, 45],\n 80: [2, 45],\n 81: [2, 45],\n 82: [2, 45],\n 83: [2, 45],\n 84: [2, 45],\n 85: [2, 45],\n 87: [2, 45]\n }, {\n 52: 52,\n 54: [2, 82],\n 65: [2, 82],\n 72: [2, 82],\n 80: [2, 82],\n 81: [2, 82],\n 82: [2, 82],\n 83: [2, 82],\n 84: [2, 82],\n 85: [2, 82]\n }, {\n 25: 53,\n 38: 55,\n 39: [1, 57],\n 43: 56,\n 44: [1, 58],\n 45: 54,\n 47: [2, 54]\n }, {\n 28: 59,\n 43: 60,\n 44: [1, 58],\n 47: [2, 56]\n }, {\n 13: 62,\n 15: [1, 20],\n 18: [1, 61]\n }, {\n 33: [2, 86],\n 57: 63,\n 65: [2, 86],\n 72: [2, 86],\n 80: [2, 86],\n 81: [2, 86],\n 82: [2, 86],\n 83: [2, 86],\n 84: [2, 86],\n 85: [2, 86]\n }, {\n 33: [2, 40],\n 65: [2, 40],\n 72: [2, 40],\n 80: [2, 40],\n 81: [2, 40],\n 82: [2, 40],\n 83: [2, 40],\n 84: [2, 40],\n 85: [2, 40]\n }, {\n 33: [2, 41],\n 65: [2, 41],\n 72: [2, 41],\n 80: [2, 41],\n 81: [2, 41],\n 82: [2, 41],\n 83: [2, 41],\n 84: [2, 41],\n 85: [2, 41]\n }, {\n 20: 64,\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 26: 65,\n 47: [1, 66]\n }, {\n 30: 67,\n 33: [2, 58],\n 65: [2, 58],\n 72: [2, 58],\n 75: [2, 58],\n 80: [2, 58],\n 81: [2, 58],\n 82: [2, 58],\n 83: [2, 58],\n 84: [2, 58],\n 85: [2, 58]\n }, {\n 33: [2, 64],\n 35: 68,\n 65: [2, 64],\n 72: [2, 64],\n 75: [2, 64],\n 80: [2, 64],\n 81: [2, 64],\n 82: [2, 64],\n 83: [2, 64],\n 84: [2, 64],\n 85: [2, 64]\n }, {\n 21: 69,\n 23: [2, 50],\n 65: [2, 50],\n 72: [2, 50],\n 80: [2, 50],\n 81: [2, 50],\n 82: [2, 50],\n 83: [2, 50],\n 84: [2, 50],\n 85: [2, 50]\n }, {\n 33: [2, 90],\n 61: 70,\n 65: [2, 90],\n 72: [2, 90],\n 80: [2, 90],\n 81: [2, 90],\n 82: [2, 90],\n 83: [2, 90],\n 84: [2, 90],\n 85: [2, 90]\n }, {\n 20: 74,\n 33: [2, 80],\n 50: 71,\n 63: 72,\n 64: 75,\n 65: [1, 43],\n 69: 73,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 72: [1, 79]\n }, {\n 23: [2, 42],\n 33: [2, 42],\n 54: [2, 42],\n 65: [2, 42],\n 68: [2, 42],\n 72: [2, 42],\n 75: [2, 42],\n 80: [2, 42],\n 81: [2, 42],\n 82: [2, 42],\n 83: [2, 42],\n 84: [2, 42],\n 85: [2, 42],\n 87: [1, 50]\n }, {\n 20: 74,\n 53: 80,\n 54: [2, 84],\n 63: 81,\n 64: 75,\n 65: [1, 43],\n 69: 82,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 26: 83,\n 47: [1, 66]\n }, {\n 47: [2, 55]\n }, {\n 4: 84,\n 6: 3,\n 14: [2, 46],\n 15: [2, 46],\n 19: [2, 46],\n 29: [2, 46],\n 34: [2, 46],\n 39: [2, 46],\n 44: [2, 46],\n 47: [2, 46],\n 48: [2, 46],\n 51: [2, 46],\n 55: [2, 46],\n 60: [2, 46]\n }, {\n 47: [2, 20]\n }, {\n 20: 85,\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 4: 86,\n 6: 3,\n 14: [2, 46],\n 15: [2, 46],\n 19: [2, 46],\n 29: [2, 46],\n 34: [2, 46],\n 47: [2, 46],\n 48: [2, 46],\n 51: [2, 46],\n 55: [2, 46],\n 60: [2, 46]\n }, {\n 26: 87,\n 47: [1, 66]\n }, {\n 47: [2, 57]\n }, {\n 5: [2, 11],\n 14: [2, 11],\n 15: [2, 11],\n 19: [2, 11],\n 29: [2, 11],\n 34: [2, 11],\n 39: [2, 11],\n 44: [2, 11],\n 47: [2, 11],\n 48: [2, 11],\n 51: [2, 11],\n 55: [2, 11],\n 60: [2, 11]\n }, {\n 15: [2, 49],\n 18: [2, 49]\n }, {\n 20: 74,\n 33: [2, 88],\n 58: 88,\n 63: 89,\n 64: 75,\n 65: [1, 43],\n 69: 90,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 65: [2, 94],\n 66: 91,\n 68: [2, 94],\n 72: [2, 94],\n 80: [2, 94],\n 81: [2, 94],\n 82: [2, 94],\n 83: [2, 94],\n 84: [2, 94],\n 85: [2, 94]\n }, {\n 5: [2, 25],\n 14: [2, 25],\n 15: [2, 25],\n 19: [2, 25],\n 29: [2, 25],\n 34: [2, 25],\n 39: [2, 25],\n 44: [2, 25],\n 47: [2, 25],\n 48: [2, 25],\n 51: [2, 25],\n 55: [2, 25],\n 60: [2, 25]\n }, {\n 20: 92,\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 20: 74,\n 31: 93,\n 33: [2, 60],\n 63: 94,\n 64: 75,\n 65: [1, 43],\n 69: 95,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 75: [2, 60],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 20: 74,\n 33: [2, 66],\n 36: 96,\n 63: 97,\n 64: 75,\n 65: [1, 43],\n 69: 98,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 75: [2, 66],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 20: 74,\n 22: 99,\n 23: [2, 52],\n 63: 100,\n 64: 75,\n 65: [1, 43],\n 69: 101,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 20: 74,\n 33: [2, 92],\n 62: 102,\n 63: 103,\n 64: 75,\n 65: [1, 43],\n 69: 104,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 33: [1, 105]\n }, {\n 33: [2, 79],\n 65: [2, 79],\n 72: [2, 79],\n 80: [2, 79],\n 81: [2, 79],\n 82: [2, 79],\n 83: [2, 79],\n 84: [2, 79],\n 85: [2, 79]\n }, {\n 33: [2, 81]\n }, {\n 23: [2, 27],\n 33: [2, 27],\n 54: [2, 27],\n 65: [2, 27],\n 68: [2, 27],\n 72: [2, 27],\n 75: [2, 27],\n 80: [2, 27],\n 81: [2, 27],\n 82: [2, 27],\n 83: [2, 27],\n 84: [2, 27],\n 85: [2, 27]\n }, {\n 23: [2, 28],\n 33: [2, 28],\n 54: [2, 28],\n 65: [2, 28],\n 68: [2, 28],\n 72: [2, 28],\n 75: [2, 28],\n 80: [2, 28],\n 81: [2, 28],\n 82: [2, 28],\n 83: [2, 28],\n 84: [2, 28],\n 85: [2, 28]\n }, {\n 23: [2, 30],\n 33: [2, 30],\n 54: [2, 30],\n 68: [2, 30],\n 71: 106,\n 72: [1, 107],\n 75: [2, 30]\n }, {\n 23: [2, 98],\n 33: [2, 98],\n 54: [2, 98],\n 68: [2, 98],\n 72: [2, 98],\n 75: [2, 98]\n }, {\n 23: [2, 45],\n 33: [2, 45],\n 54: [2, 45],\n 65: [2, 45],\n 68: [2, 45],\n 72: [2, 45],\n 73: [1, 108],\n 75: [2, 45],\n 80: [2, 45],\n 81: [2, 45],\n 82: [2, 45],\n 83: [2, 45],\n 84: [2, 45],\n 85: [2, 45],\n 87: [2, 45]\n }, {\n 23: [2, 44],\n 33: [2, 44],\n 54: [2, 44],\n 65: [2, 44],\n 68: [2, 44],\n 72: [2, 44],\n 75: [2, 44],\n 80: [2, 44],\n 81: [2, 44],\n 82: [2, 44],\n 83: [2, 44],\n 84: [2, 44],\n 85: [2, 44],\n 87: [2, 44]\n }, {\n 54: [1, 109]\n }, {\n 54: [2, 83],\n 65: [2, 83],\n 72: [2, 83],\n 80: [2, 83],\n 81: [2, 83],\n 82: [2, 83],\n 83: [2, 83],\n 84: [2, 83],\n 85: [2, 83]\n }, {\n 54: [2, 85]\n }, {\n 5: [2, 13],\n 14: [2, 13],\n 15: [2, 13],\n 19: [2, 13],\n 29: [2, 13],\n 34: [2, 13],\n 39: [2, 13],\n 44: [2, 13],\n 47: [2, 13],\n 48: [2, 13],\n 51: [2, 13],\n 55: [2, 13],\n 60: [2, 13]\n }, {\n 38: 55,\n 39: [1, 57],\n 43: 56,\n 44: [1, 58],\n 45: 111,\n 46: 110,\n 47: [2, 76]\n }, {\n 33: [2, 70],\n 40: 112,\n 65: [2, 70],\n 72: [2, 70],\n 75: [2, 70],\n 80: [2, 70],\n 81: [2, 70],\n 82: [2, 70],\n 83: [2, 70],\n 84: [2, 70],\n 85: [2, 70]\n }, {\n 47: [2, 18]\n }, {\n 5: [2, 14],\n 14: [2, 14],\n 15: [2, 14],\n 19: [2, 14],\n 29: [2, 14],\n 34: [2, 14],\n 39: [2, 14],\n 44: [2, 14],\n 47: [2, 14],\n 48: [2, 14],\n 51: [2, 14],\n 55: [2, 14],\n 60: [2, 14]\n }, {\n 33: [1, 113]\n }, {\n 33: [2, 87],\n 65: [2, 87],\n 72: [2, 87],\n 80: [2, 87],\n 81: [2, 87],\n 82: [2, 87],\n 83: [2, 87],\n 84: [2, 87],\n 85: [2, 87]\n }, {\n 33: [2, 89]\n }, {\n 20: 74,\n 63: 115,\n 64: 75,\n 65: [1, 43],\n 67: 114,\n 68: [2, 96],\n 69: 116,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 33: [1, 117]\n }, {\n 32: 118,\n 33: [2, 62],\n 74: 119,\n 75: [1, 120]\n }, {\n 33: [2, 59],\n 65: [2, 59],\n 72: [2, 59],\n 75: [2, 59],\n 80: [2, 59],\n 81: [2, 59],\n 82: [2, 59],\n 83: [2, 59],\n 84: [2, 59],\n 85: [2, 59]\n }, {\n 33: [2, 61],\n 75: [2, 61]\n }, {\n 33: [2, 68],\n 37: 121,\n 74: 122,\n 75: [1, 120]\n }, {\n 33: [2, 65],\n 65: [2, 65],\n 72: [2, 65],\n 75: [2, 65],\n 80: [2, 65],\n 81: [2, 65],\n 82: [2, 65],\n 83: [2, 65],\n 84: [2, 65],\n 85: [2, 65]\n }, {\n 33: [2, 67],\n 75: [2, 67]\n }, {\n 23: [1, 123]\n }, {\n 23: [2, 51],\n 65: [2, 51],\n 72: [2, 51],\n 80: [2, 51],\n 81: [2, 51],\n 82: [2, 51],\n 83: [2, 51],\n 84: [2, 51],\n 85: [2, 51]\n }, {\n 23: [2, 53]\n }, {\n 33: [1, 124]\n }, {\n 33: [2, 91],\n 65: [2, 91],\n 72: [2, 91],\n 80: [2, 91],\n 81: [2, 91],\n 82: [2, 91],\n 83: [2, 91],\n 84: [2, 91],\n 85: [2, 91]\n }, {\n 33: [2, 93]\n }, {\n 5: [2, 22],\n 14: [2, 22],\n 15: [2, 22],\n 19: [2, 22],\n 29: [2, 22],\n 34: [2, 22],\n 39: [2, 22],\n 44: [2, 22],\n 47: [2, 22],\n 48: [2, 22],\n 51: [2, 22],\n 55: [2, 22],\n 60: [2, 22]\n }, {\n 23: [2, 99],\n 33: [2, 99],\n 54: [2, 99],\n 68: [2, 99],\n 72: [2, 99],\n 75: [2, 99]\n }, {\n 73: [1, 108]\n }, {\n 20: 74,\n 63: 125,\n 64: 75,\n 65: [1, 43],\n 72: [1, 35],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 5: [2, 23],\n 14: [2, 23],\n 15: [2, 23],\n 19: [2, 23],\n 29: [2, 23],\n 34: [2, 23],\n 39: [2, 23],\n 44: [2, 23],\n 47: [2, 23],\n 48: [2, 23],\n 51: [2, 23],\n 55: [2, 23],\n 60: [2, 23]\n }, {\n 47: [2, 19]\n }, {\n 47: [2, 77]\n }, {\n 20: 74,\n 33: [2, 72],\n 41: 126,\n 63: 127,\n 64: 75,\n 65: [1, 43],\n 69: 128,\n 70: 76,\n 71: 77,\n 72: [1, 78],\n 75: [2, 72],\n 78: 26,\n 79: 27,\n 80: [1, 28],\n 81: [1, 29],\n 82: [1, 30],\n 83: [1, 31],\n 84: [1, 32],\n 85: [1, 34],\n 86: 33\n }, {\n 5: [2, 24],\n 14: [2, 24],\n 15: [2, 24],\n 19: [2, 24],\n 29: [2, 24],\n 34: [2, 24],\n 39: [2, 24],\n 44: [2, 24],\n 47: [2, 24],\n 48: [2, 24],\n 51: [2, 24],\n 55: [2, 24],\n 60: [2, 24]\n }, {\n 68: [1, 129]\n }, {\n 65: [2, 95],\n 68: [2, 95],\n 72: [2, 95],\n 80: [2, 95],\n 81: [2, 95],\n 82: [2, 95],\n 83: [2, 95],\n 84: [2, 95],\n 85: [2, 95]\n }, {\n 68: [2, 97]\n }, {\n 5: [2, 21],\n 14: [2, 21],\n 15: [2, 21],\n 19: [2, 21],\n 29: [2, 21],\n 34: [2, 21],\n 39: [2, 21],\n 44: [2, 21],\n 47: [2, 21],\n 48: [2, 21],\n 51: [2, 21],\n 55: [2, 21],\n 60: [2, 21]\n }, {\n 33: [1, 130]\n }, {\n 33: [2, 63]\n }, {\n 72: [1, 132],\n 76: 131\n }, {\n 33: [1, 133]\n }, {\n 33: [2, 69]\n }, {\n 15: [2, 12],\n 18: [2, 12]\n }, {\n 14: [2, 26],\n 15: [2, 26],\n 19: [2, 26],\n 29: [2, 26],\n 34: [2, 26],\n 47: [2, 26],\n 48: [2, 26],\n 51: [2, 26],\n 55: [2, 26],\n 60: [2, 26]\n }, {\n 23: [2, 31],\n 33: [2, 31],\n 54: [2, 31],\n 68: [2, 31],\n 72: [2, 31],\n 75: [2, 31]\n }, {\n 33: [2, 74],\n 42: 134,\n 74: 135,\n 75: [1, 120]\n }, {\n 33: [2, 71],\n 65: [2, 71],\n 72: [2, 71],\n 75: [2, 71],\n 80: [2, 71],\n 81: [2, 71],\n 82: [2, 71],\n 83: [2, 71],\n 84: [2, 71],\n 85: [2, 71]\n }, {\n 33: [2, 73],\n 75: [2, 73]\n }, {\n 23: [2, 29],\n 33: [2, 29],\n 54: [2, 29],\n 65: [2, 29],\n 68: [2, 29],\n 72: [2, 29],\n 75: [2, 29],\n 80: [2, 29],\n 81: [2, 29],\n 82: [2, 29],\n 83: [2, 29],\n 84: [2, 29],\n 85: [2, 29]\n }, {\n 14: [2, 15],\n 15: [2, 15],\n 19: [2, 15],\n 29: [2, 15],\n 34: [2, 15],\n 39: [2, 15],\n 44: [2, 15],\n 47: [2, 15],\n 48: [2, 15],\n 51: [2, 15],\n 55: [2, 15],\n 60: [2, 15]\n }, {\n 72: [1, 137],\n 77: [1, 136]\n }, {\n 72: [2, 100],\n 77: [2, 100]\n }, {\n 14: [2, 16],\n 15: [2, 16],\n 19: [2, 16],\n 29: [2, 16],\n 34: [2, 16],\n 44: [2, 16],\n 47: [2, 16],\n 48: [2, 16],\n 51: [2, 16],\n 55: [2, 16],\n 60: [2, 16]\n }, {\n 33: [1, 138]\n }, {\n 33: [2, 75]\n }, {\n 33: [2, 32]\n }, {\n 72: [2, 101],\n 77: [2, 101]\n }, {\n 14: [2, 17],\n 15: [2, 17],\n 19: [2, 17],\n 29: [2, 17],\n 34: [2, 17],\n 39: [2, 17],\n 44: [2, 17],\n 47: [2, 17],\n 48: [2, 17],\n 51: [2, 17],\n 55: [2, 17],\n 60: [2, 17]\n }],\n defaultActions: {\n 4: [2, 1],\n 54: [2, 55],\n 56: [2, 20],\n 60: [2, 57],\n 73: [2, 81],\n 82: [2, 85],\n 86: [2, 18],\n 90: [2, 89],\n 101: [2, 53],\n 104: [2, 93],\n 110: [2, 19],\n 111: [2, 77],\n 116: [2, 97],\n 119: [2, 63],\n 122: [2, 69],\n 135: [2, 75],\n 136: [2, 32]\n },\n parseError: function parseError(str, hash) {\n throw new Error(str);\n },\n parse: function parse(input) {\n var self = this,\n stack = [0],\n vstack = [null],\n lstack = [],\n table = this.table,\n yytext = \"\",\n yylineno = 0,\n yyleng = 0,\n recovering = 0,\n TERROR = 2,\n EOF = 1;\n this.lexer.setInput(input);\n this.lexer.yy = this.yy;\n this.yy.lexer = this.lexer;\n this.yy.parser = this;\n if (typeof this.lexer.yylloc == \"undefined\") this.lexer.yylloc = {};\n var yyloc = this.lexer.yylloc;\n lstack.push(yyloc);\n var ranges = this.lexer.options && this.lexer.options.ranges;\n if (typeof this.yy.parseError === \"function\") this.parseError = this.yy.parseError;\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = self.lexer.lex() || 1;\n if (typeof token !== \"number\") {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol,\n preErrorSymbol,\n state,\n action,\n a,\n r,\n yyval = {},\n p,\n len,\n newState,\n expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == \"undefined\") {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === \"undefined\" || !action.length || !action[0]) {\n var errStr = \"\";\n if (!recovering) {\n expected = [];\n for (p in table[state]) if (this.terminals_[p] && p > 2) {\n expected.push(\"'\" + this.terminals_[p] + \"'\");\n }\n if (this.lexer.showPosition) {\n errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n } else {\n errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1 ? \"end of input\" : \"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n }\n this.parseError(errStr, {\n text: this.lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: this.lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(this.lexer.yytext);\n lstack.push(this.lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = this.lexer.yyleng;\n yytext = this.lexer.yytext;\n yylineno = this.lexer.yylineno;\n yyloc = this.lexer.yylloc;\n if (recovering > 0) recovering--;\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n }\n r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n if (typeof r !== \"undefined\") {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n }\n };\n /* Jison generated lexer */\n var lexer = function () {\n var lexer = {\n EOF: 1,\n parseError: function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n setInput: function setInput(input) {\n this._input = input;\n this._more = this._less = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) this.yylloc.range = [0, 0];\n this.offset = 0;\n return this;\n },\n input: function input() {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) this.yylloc.range[1]++;\n this._input = this._input.slice(1);\n return ch;\n },\n unput: function unput(ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len - 1);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n if (lines.length - 1) this.yylineno -= lines.length - 1;\n var r = this.yylloc.range;\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len\n };\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n return this;\n },\n more: function more() {\n this._more = true;\n return this;\n },\n less: function less(n) {\n this.unput(this.match.slice(n));\n },\n pastInput: function pastInput() {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\\n/g, \"\");\n },\n upcomingInput: function upcomingInput() {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20 - next.length);\n }\n return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n showPosition: function showPosition() {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n next: function next() {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) this.done = true;\n var token, match, tempMatch, index, col, lines;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (!this.options.flex) break;\n }\n }\n if (match) {\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) this.yylineno += lines.length;\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) this.done = false;\n if (token) return token;else return;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n lex: function lex() {\n var r = this.next();\n if (typeof r !== 'undefined') {\n return r;\n } else {\n return this.lex();\n }\n },\n begin: function begin(condition) {\n this.conditionStack.push(condition);\n },\n popState: function popState() {\n return this.conditionStack.pop();\n },\n _currentRules: function _currentRules() {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n },\n topState: function topState() {\n return this.conditionStack[this.conditionStack.length - 2];\n },\n pushState: function begin(condition) {\n this.begin(condition);\n }\n };\n lexer.options = {};\n lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {\n function strip(start, end) {\n return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n }\n var YYSTATE = YY_START;\n switch ($avoiding_name_collisions) {\n case 0:\n if (yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n strip(0, 1);\n this.begin(\"mu\");\n } else if (yy_.yytext.slice(-1) === \"\\\\\") {\n strip(0, 1);\n this.begin(\"emu\");\n } else {\n this.begin(\"mu\");\n }\n if (yy_.yytext) return 15;\n break;\n case 1:\n return 15;\n break;\n case 2:\n this.popState();\n return 15;\n break;\n case 3:\n this.begin('raw');\n return 15;\n break;\n case 4:\n this.popState();\n // Should be using `this.topState()` below, but it currently\n // returns the second top instead of the first top. Opened an\n // issue about it at https://github.com/zaach/jison/issues/291\n if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {\n return 15;\n } else {\n strip(5, 9);\n return 'END_RAW_BLOCK';\n }\n break;\n case 5:\n return 15;\n break;\n case 6:\n this.popState();\n return 14;\n break;\n case 7:\n return 65;\n break;\n case 8:\n return 68;\n break;\n case 9:\n return 19;\n break;\n case 10:\n this.popState();\n this.begin('raw');\n return 23;\n break;\n case 11:\n return 55;\n break;\n case 12:\n return 60;\n break;\n case 13:\n return 29;\n break;\n case 14:\n return 47;\n break;\n case 15:\n this.popState();\n return 44;\n break;\n case 16:\n this.popState();\n return 44;\n break;\n case 17:\n return 34;\n break;\n case 18:\n return 39;\n break;\n case 19:\n return 51;\n break;\n case 20:\n return 48;\n break;\n case 21:\n this.unput(yy_.yytext);\n this.popState();\n this.begin('com');\n break;\n case 22:\n this.popState();\n return 14;\n break;\n case 23:\n return 48;\n break;\n case 24:\n return 73;\n break;\n case 25:\n return 72;\n break;\n case 26:\n return 72;\n break;\n case 27:\n return 87;\n break;\n case 28:\n // ignore whitespace\n break;\n case 29:\n this.popState();\n return 54;\n break;\n case 30:\n this.popState();\n return 33;\n break;\n case 31:\n yy_.yytext = strip(1, 2).replace(/\\\\\"/g, '\"');\n return 80;\n break;\n case 32:\n yy_.yytext = strip(1, 2).replace(/\\\\'/g, \"'\");\n return 80;\n break;\n case 33:\n return 85;\n break;\n case 34:\n return 82;\n break;\n case 35:\n return 82;\n break;\n case 36:\n return 83;\n break;\n case 37:\n return 84;\n break;\n case 38:\n return 81;\n break;\n case 39:\n return 75;\n break;\n case 40:\n return 77;\n break;\n case 41:\n return 72;\n break;\n case 42:\n yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g, '$1');\n return 72;\n break;\n case 43:\n return 'INVALID';\n break;\n case 44:\n return 5;\n break;\n }\n };\n lexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/, /^(?:[^\\x00]+)/, /^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/, /^(?:\\{\\{\\{\\{(?=[^/]))/, /^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/, /^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/, /^(?:[\\s\\S]*?--(~)?\\}\\})/, /^(?:\\()/, /^(?:\\))/, /^(?:\\{\\{\\{\\{)/, /^(?:\\}\\}\\}\\})/, /^(?:\\{\\{(~)?>)/, /^(?:\\{\\{(~)?#>)/, /^(?:\\{\\{(~)?#\\*?)/, /^(?:\\{\\{(~)?\\/)/, /^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/, /^(?:\\{\\{(~)?\\^)/, /^(?:\\{\\{(~)?\\s*else\\b)/, /^(?:\\{\\{(~)?\\{)/, /^(?:\\{\\{(~)?&)/, /^(?:\\{\\{(~)?!--)/, /^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/, /^(?:\\{\\{(~)?\\*?)/, /^(?:=)/, /^(?:\\.\\.)/, /^(?:\\.(?=([=~}\\s\\/.)|])))/, /^(?:[\\/.])/, /^(?:\\s+)/, /^(?:\\}(~)?\\}\\})/, /^(?:(~)?\\}\\})/, /^(?:\"(\\\\[\"]|[^\"])*\")/, /^(?:'(\\\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\\s)])))/, /^(?:false(?=([~}\\s)])))/, /^(?:undefined(?=([~}\\s)])))/, /^(?:null(?=([~}\\s)])))/, /^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/, /^(?:as\\s+\\|)/, /^(?:\\|)/, /^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/, /^(?:\\[(\\\\\\]|[^\\]])*\\])/, /^(?:.)/, /^(?:$)/];\n lexer.conditions = {\n \"mu\": {\n \"rules\": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44],\n \"inclusive\": false\n },\n \"emu\": {\n \"rules\": [2],\n \"inclusive\": false\n },\n \"com\": {\n \"rules\": [6],\n \"inclusive\": false\n },\n \"raw\": {\n \"rules\": [3, 4, 5],\n \"inclusive\": false\n },\n \"INITIAL\": {\n \"rules\": [0, 1, 44],\n \"inclusive\": true\n }\n };\n return lexer;\n }();\n parser.lexer = lexer;\n function Parser() {\n this.yy = {};\n }\n Parser.prototype = parser;\n parser.Parser = Parser;\n return new Parser();\n}();\nexports[\"default\"] = handlebars;\nmodule.exports = exports[\"default\"];","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _visitor = require('./visitor');\nvar _visitor2 = _interopRequireDefault(_visitor);\nfunction WhitespaceControl() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n this.options = options;\n}\nWhitespaceControl.prototype = new _visitor2['default']();\nWhitespaceControl.prototype.Program = function (program) {\n var doStandalone = !this.options.ignoreStandalone;\n var isRoot = !this.isRootSeen;\n this.isRootSeen = true;\n var body = program.body;\n for (var i = 0, l = body.length; i < l; i++) {\n var current = body[i],\n strip = this.accept(current);\n if (!strip) {\n continue;\n }\n var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n openStandalone = strip.openStandalone && _isPrevWhitespace,\n closeStandalone = strip.closeStandalone && _isNextWhitespace,\n inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n if (strip.close) {\n omitRight(body, i, true);\n }\n if (strip.open) {\n omitLeft(body, i, true);\n }\n if (doStandalone && inlineStandalone) {\n omitRight(body, i);\n if (omitLeft(body, i)) {\n // If we are on a standalone node, save the indent info for partials\n if (current.type === 'PartialStatement') {\n // Pull out the whitespace from the final line\n current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n }\n }\n }\n if (doStandalone && openStandalone) {\n omitRight((current.program || current.inverse).body);\n\n // Strip out the previous content node if it's whitespace only\n omitLeft(body, i);\n }\n if (doStandalone && closeStandalone) {\n // Always strip the next node\n omitRight(body, i);\n omitLeft((current.inverse || current.program).body);\n }\n }\n return program;\n};\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) {\n this.accept(block.program);\n this.accept(block.inverse);\n\n // Find the inverse program that is involed with whitespace stripping.\n var program = block.program || block.inverse,\n inverse = block.program && block.inverse,\n firstInverse = inverse,\n lastInverse = inverse;\n if (inverse && inverse.chained) {\n firstInverse = inverse.body[0].program;\n\n // Walk the inverse chain to find the last inverse that is actually in the chain.\n while (lastInverse.chained) {\n lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n }\n }\n var strip = {\n open: block.openStrip.open,\n close: block.closeStrip.close,\n // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n // so our parent can determine if we actually are standalone\n openStandalone: isNextWhitespace(program.body),\n closeStandalone: isPrevWhitespace((firstInverse || program).body)\n };\n if (block.openStrip.close) {\n omitRight(program.body, null, true);\n }\n if (inverse) {\n var inverseStrip = block.inverseStrip;\n if (inverseStrip.open) {\n omitLeft(program.body, null, true);\n }\n if (inverseStrip.close) {\n omitRight(firstInverse.body, null, true);\n }\n if (block.closeStrip.open) {\n omitLeft(lastInverse.body, null, true);\n }\n\n // Find standalone else statments\n if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) {\n omitLeft(program.body);\n omitRight(firstInverse.body);\n }\n } else if (block.closeStrip.open) {\n omitLeft(program.body, null, true);\n }\n return strip;\n};\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) {\n return mustache.strip;\n};\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) {\n /* istanbul ignore next */\n var strip = node.strip || {};\n return {\n inlineStandalone: true,\n open: strip.open,\n close: strip.close\n };\n};\nfunction isPrevWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = body.length;\n }\n\n // Nodes that end with newlines are considered whitespace (but are special\n // cased for strip operations)\n var prev = body[i - 1],\n sibling = body[i - 2];\n if (!prev) {\n return isRoot;\n }\n if (prev.type === 'ContentStatement') {\n return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(prev.original);\n }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n if (i === undefined) {\n i = -1;\n }\n var next = body[i + 1],\n sibling = body[i + 2];\n if (!next) {\n return isRoot;\n }\n if (next.type === 'ContentStatement') {\n return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(next.original);\n }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n var current = body[i == null ? 0 : i + 1];\n if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) {\n return;\n }\n var original = current.value;\n current.value = current.value.replace(multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/, '');\n current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n var current = body[i == null ? body.length - 1 : i - 1];\n if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) {\n return;\n }\n\n // We omit the last node if it's whitespace only and not preceded by a non-content node.\n var original = current.value;\n current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n current.leftStripped = current.value !== original;\n return current.leftStripped;\n}\nexports['default'] = WhitespaceControl;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.SourceLocation = SourceLocation;\nexports.id = id;\nexports.stripFlags = stripFlags;\nexports.stripComment = stripComment;\nexports.preparePath = preparePath;\nexports.prepareMustache = prepareMustache;\nexports.prepareRawBlock = prepareRawBlock;\nexports.prepareBlock = prepareBlock;\nexports.prepareProgram = prepareProgram;\nexports.preparePartialBlock = preparePartialBlock;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _exception = require('../exception');\nvar _exception2 = _interopRequireDefault(_exception);\nfunction validateClose(open, close) {\n close = close.path ? close.path.original : close;\n if (open.path.original !== close) {\n var errorNode = {\n loc: open.path.loc\n };\n throw new _exception2['default'](open.path.original + \" doesn't match \" + close, errorNode);\n }\n}\nfunction SourceLocation(source, locInfo) {\n this.source = source;\n this.start = {\n line: locInfo.first_line,\n column: locInfo.first_column\n };\n this.end = {\n line: locInfo.last_line,\n column: locInfo.last_column\n };\n}\nfunction id(token) {\n if (/^\\[.*\\]$/.test(token)) {\n return token.substring(1, token.length - 1);\n } else {\n return token;\n }\n}\nfunction stripFlags(open, close) {\n return {\n open: open.charAt(2) === '~',\n close: close.charAt(close.length - 3) === '~'\n };\n}\nfunction stripComment(comment) {\n return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\nfunction preparePath(data, parts, loc) {\n loc = this.locInfo(loc);\n var original = data ? '@' : '',\n dig = [],\n depth = 0;\n for (var i = 0, l = parts.length; i < l; i++) {\n var part = parts[i].part,\n // If we have [] syntax then we do not treat path references as operators,\n // i.e. foo.[this] resolves to approximately context.foo['this']\n isLiteral = parts[i].original !== part;\n original += (parts[i].separator || '') + part;\n if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n if (dig.length > 0) {\n throw new _exception2['default']('Invalid path: ' + original, {\n loc: loc\n });\n } else if (part === '..') {\n depth++;\n }\n } else {\n dig.push(part);\n }\n }\n return {\n type: 'PathExpression',\n data: data,\n depth: depth,\n parts: dig,\n original: original,\n loc: loc\n };\n}\nfunction prepareMustache(path, params, hash, open, strip, locInfo) {\n // Must use charAt to support IE pre-10\n var escapeFlag = open.charAt(3) || open.charAt(2),\n escaped = escapeFlag !== '{' && escapeFlag !== '&';\n var decorator = /\\*/.test(open);\n return {\n type: decorator ? 'Decorator' : 'MustacheStatement',\n path: path,\n params: params,\n hash: hash,\n escaped: escaped,\n strip: strip,\n loc: this.locInfo(locInfo)\n };\n}\nfunction prepareRawBlock(openRawBlock, contents, close, locInfo) {\n validateClose(openRawBlock, close);\n locInfo = this.locInfo(locInfo);\n var program = {\n type: 'Program',\n body: contents,\n strip: {},\n loc: locInfo\n };\n return {\n type: 'BlockStatement',\n path: openRawBlock.path,\n params: openRawBlock.params,\n hash: openRawBlock.hash,\n program: program,\n openStrip: {},\n inverseStrip: {},\n closeStrip: {},\n loc: locInfo\n };\n}\nfunction prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {\n if (close && close.path) {\n validateClose(openBlock, close);\n }\n var decorator = /\\*/.test(openBlock.open);\n program.blockParams = openBlock.blockParams;\n var inverse = undefined,\n inverseStrip = undefined;\n if (inverseAndProgram) {\n if (decorator) {\n throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram);\n }\n if (inverseAndProgram.chain) {\n inverseAndProgram.program.body[0].closeStrip = close.strip;\n }\n inverseStrip = inverseAndProgram.strip;\n inverse = inverseAndProgram.program;\n }\n if (inverted) {\n inverted = inverse;\n inverse = program;\n program = inverted;\n }\n return {\n type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n path: openBlock.path,\n params: openBlock.params,\n hash: openBlock.hash,\n program: program,\n inverse: inverse,\n openStrip: openBlock.strip,\n inverseStrip: inverseStrip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}\nfunction prepareProgram(statements, loc) {\n if (!loc && statements.length) {\n var firstLoc = statements[0].loc,\n lastLoc = statements[statements.length - 1].loc;\n\n /* istanbul ignore else */\n if (firstLoc && lastLoc) {\n loc = {\n source: firstLoc.source,\n start: {\n line: firstLoc.start.line,\n column: firstLoc.start.column\n },\n end: {\n line: lastLoc.end.line,\n column: lastLoc.end.column\n }\n };\n }\n }\n return {\n type: 'Program',\n body: statements,\n strip: {},\n loc: loc\n };\n}\nfunction preparePartialBlock(open, program, close, locInfo) {\n validateClose(open, close);\n return {\n type: 'PartialBlockStatement',\n name: open.path,\n params: open.params,\n hash: open.hash,\n program: program,\n openStrip: open.strip,\n closeStrip: close && close.strip,\n loc: this.locInfo(locInfo)\n };\n}","/* eslint-disable new-cap */\n\n'use strict';\n\nexports.__esModule = true;\nexports.Compiler = Compiler;\nexports.precompile = precompile;\nexports.compile = compile;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _exception = require('../exception');\nvar _exception2 = _interopRequireDefault(_exception);\nvar _utils = require('../utils');\nvar _ast = require('./ast');\nvar _ast2 = _interopRequireDefault(_ast);\nvar slice = [].slice;\nfunction Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n compiler: Compiler,\n equals: function equals(other) {\n var len = this.opcodes.length;\n if (other.opcodes.length !== len) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n var opcode = this.opcodes[i],\n otherOpcode = other.opcodes[i];\n if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {\n return false;\n }\n }\n\n // We know that length is the same between the two arrays because they are directly tied\n // to the opcode behavior above.\n len = this.children.length;\n for (var i = 0; i < len; i++) {\n if (!this.children[i].equals(other.children[i])) {\n return false;\n }\n }\n return true;\n },\n guid: 0,\n compile: function compile(program, options) {\n this.sourceNode = [];\n this.opcodes = [];\n this.children = [];\n this.options = options;\n this.stringParams = options.stringParams;\n this.trackIds = options.trackIds;\n options.blockParams = options.blockParams || [];\n options.knownHelpers = _utils.extend(Object.create(null), {\n helperMissing: true,\n blockHelperMissing: true,\n each: true,\n 'if': true,\n unless: true,\n 'with': true,\n log: true,\n lookup: true\n }, options.knownHelpers);\n return this.accept(program);\n },\n compileProgram: function compileProgram(program) {\n var childCompiler = new this.compiler(),\n // eslint-disable-line new-cap\n result = childCompiler.compile(program, this.options),\n guid = this.guid++;\n this.usePartial = this.usePartial || result.usePartial;\n this.children[guid] = result;\n this.useDepths = this.useDepths || result.useDepths;\n return guid;\n },\n accept: function accept(node) {\n /* istanbul ignore next: Sanity code */\n if (!this[node.type]) {\n throw new _exception2['default']('Unknown type: ' + node.type, node);\n }\n this.sourceNode.unshift(node);\n var ret = this[node.type](node);\n this.sourceNode.shift();\n return ret;\n },\n Program: function Program(program) {\n this.options.blockParams.unshift(program.blockParams);\n var body = program.body,\n bodyLength = body.length;\n for (var i = 0; i < bodyLength; i++) {\n this.accept(body[i]);\n }\n this.options.blockParams.shift();\n this.isSimple = bodyLength === 1;\n this.blockParams = program.blockParams ? program.blockParams.length : 0;\n return this;\n },\n BlockStatement: function BlockStatement(block) {\n transformLiteralToPath(block);\n var program = block.program,\n inverse = block.inverse;\n program = program && this.compileProgram(program);\n inverse = inverse && this.compileProgram(inverse);\n var type = this.classifySexpr(block);\n if (type === 'helper') {\n this.helperSexpr(block, program, inverse);\n } else if (type === 'simple') {\n this.simpleSexpr(block);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('blockValue', block.path.original);\n } else {\n this.ambiguousSexpr(block, program, inverse);\n\n // now that the simple mustache is resolved, we need to\n // evaluate it by executing `blockHelperMissing`\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n this.opcode('emptyHash');\n this.opcode('ambiguousBlockValue');\n }\n this.opcode('append');\n },\n DecoratorBlock: function DecoratorBlock(decorator) {\n var program = decorator.program && this.compileProgram(decorator.program);\n var params = this.setupFullMustacheParams(decorator, program, undefined),\n path = decorator.path;\n this.useDecorators = true;\n this.opcode('registerDecorator', params.length, path.original);\n },\n PartialStatement: function PartialStatement(partial) {\n this.usePartial = true;\n var program = partial.program;\n if (program) {\n program = this.compileProgram(partial.program);\n }\n var params = partial.params;\n if (params.length > 1) {\n throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial);\n } else if (!params.length) {\n if (this.options.explicitPartialContext) {\n this.opcode('pushLiteral', 'undefined');\n } else {\n params.push({\n type: 'PathExpression',\n parts: [],\n depth: 0\n });\n }\n }\n var partialName = partial.name.original,\n isDynamic = partial.name.type === 'SubExpression';\n if (isDynamic) {\n this.accept(partial.name);\n }\n this.setupFullMustacheParams(partial, program, undefined, true);\n var indent = partial.indent || '';\n if (this.options.preventIndent && indent) {\n this.opcode('appendContent', indent);\n indent = '';\n }\n this.opcode('invokePartial', isDynamic, partialName, indent);\n this.opcode('append');\n },\n PartialBlockStatement: function PartialBlockStatement(partialBlock) {\n this.PartialStatement(partialBlock);\n },\n MustacheStatement: function MustacheStatement(mustache) {\n this.SubExpression(mustache);\n if (mustache.escaped && !this.options.noEscape) {\n this.opcode('appendEscaped');\n } else {\n this.opcode('append');\n }\n },\n Decorator: function Decorator(decorator) {\n this.DecoratorBlock(decorator);\n },\n ContentStatement: function ContentStatement(content) {\n if (content.value) {\n this.opcode('appendContent', content.value);\n }\n },\n CommentStatement: function CommentStatement() {},\n SubExpression: function SubExpression(sexpr) {\n transformLiteralToPath(sexpr);\n var type = this.classifySexpr(sexpr);\n if (type === 'simple') {\n this.simpleSexpr(sexpr);\n } else if (type === 'helper') {\n this.helperSexpr(sexpr);\n } else {\n this.ambiguousSexpr(sexpr);\n }\n },\n ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) {\n var path = sexpr.path,\n name = path.parts[0],\n isBlock = program != null || inverse != null;\n this.opcode('getContext', path.depth);\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n path.strict = true;\n this.accept(path);\n this.opcode('invokeAmbiguous', name, isBlock);\n },\n simpleSexpr: function simpleSexpr(sexpr) {\n var path = sexpr.path;\n path.strict = true;\n this.accept(path);\n this.opcode('resolvePossibleLambda');\n },\n helperSexpr: function helperSexpr(sexpr, program, inverse) {\n var params = this.setupFullMustacheParams(sexpr, program, inverse),\n path = sexpr.path,\n name = path.parts[0];\n if (this.options.knownHelpers[name]) {\n this.opcode('invokeKnownHelper', params.length, name);\n } else if (this.options.knownHelpersOnly) {\n throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr);\n } else {\n path.strict = true;\n path.falsy = true;\n this.accept(path);\n this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path));\n }\n },\n PathExpression: function PathExpression(path) {\n this.addDepth(path.depth);\n this.opcode('getContext', path.depth);\n var name = path.parts[0],\n scoped = _ast2['default'].helpers.scopedId(path),\n blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n if (blockParamId) {\n this.opcode('lookupBlockParam', blockParamId, path.parts);\n } else if (!name) {\n // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n this.opcode('pushContext');\n } else if (path.data) {\n this.options.data = true;\n this.opcode('lookupData', path.depth, path.parts, path.strict);\n } else {\n this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped);\n }\n },\n StringLiteral: function StringLiteral(string) {\n this.opcode('pushString', string.value);\n },\n NumberLiteral: function NumberLiteral(number) {\n this.opcode('pushLiteral', number.value);\n },\n BooleanLiteral: function BooleanLiteral(bool) {\n this.opcode('pushLiteral', bool.value);\n },\n UndefinedLiteral: function UndefinedLiteral() {\n this.opcode('pushLiteral', 'undefined');\n },\n NullLiteral: function NullLiteral() {\n this.opcode('pushLiteral', 'null');\n },\n Hash: function Hash(hash) {\n var pairs = hash.pairs,\n i = 0,\n l = pairs.length;\n this.opcode('pushHash');\n for (; i < l; i++) {\n this.pushParam(pairs[i].value);\n }\n while (i--) {\n this.opcode('assignToHash', pairs[i].key);\n }\n this.opcode('popHash');\n },\n // HELPERS\n opcode: function opcode(name) {\n this.opcodes.push({\n opcode: name,\n args: slice.call(arguments, 1),\n loc: this.sourceNode[0].loc\n });\n },\n addDepth: function addDepth(depth) {\n if (!depth) {\n return;\n }\n this.useDepths = true;\n },\n classifySexpr: function classifySexpr(sexpr) {\n var isSimple = _ast2['default'].helpers.simpleId(sexpr.path);\n var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n // a mustache is an eligible helper if:\n // * its id is simple (a single part, not `this` or `..`)\n var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr);\n\n // if a mustache is an eligible helper but not a definite\n // helper, it is ambiguous, and will be resolved in a later\n // pass or at runtime.\n var isEligible = !isBlockParam && (isHelper || isSimple);\n\n // if ambiguous, we can possibly resolve the ambiguity now\n // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n if (isEligible && !isHelper) {\n var _name = sexpr.path.parts[0],\n options = this.options;\n if (options.knownHelpers[_name]) {\n isHelper = true;\n } else if (options.knownHelpersOnly) {\n isEligible = false;\n }\n }\n if (isHelper) {\n return 'helper';\n } else if (isEligible) {\n return 'ambiguous';\n } else {\n return 'simple';\n }\n },\n pushParams: function pushParams(params) {\n for (var i = 0, l = params.length; i < l; i++) {\n this.pushParam(params[i]);\n }\n },\n pushParam: function pushParam(val) {\n var value = val.value != null ? val.value : val.original || '';\n if (this.stringParams) {\n if (value.replace) {\n value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n }\n if (val.depth) {\n this.addDepth(val.depth);\n }\n this.opcode('getContext', val.depth || 0);\n this.opcode('pushStringParam', value, val.type);\n if (val.type === 'SubExpression') {\n // SubExpressions get evaluated and passed in\n // in string params mode.\n this.accept(val);\n }\n } else {\n if (this.trackIds) {\n var blockParamIndex = undefined;\n if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) {\n blockParamIndex = this.blockParamIndex(val.parts[0]);\n }\n if (blockParamIndex) {\n var blockParamChild = val.parts.slice(1).join('.');\n this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n } else {\n value = val.original || value;\n if (value.replace) {\n value = value.replace(/^this(?:\\.|$)/, '').replace(/^\\.\\//, '').replace(/^\\.$/, '');\n }\n this.opcode('pushId', val.type, value);\n }\n }\n this.accept(val);\n }\n },\n setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) {\n var params = sexpr.params;\n this.pushParams(params);\n this.opcode('pushProgram', program);\n this.opcode('pushProgram', inverse);\n if (sexpr.hash) {\n this.accept(sexpr.hash);\n } else {\n this.opcode('emptyHash', omitEmpty);\n }\n return params;\n },\n blockParamIndex: function blockParamIndex(name) {\n for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) {\n var blockParams = this.options.blockParams[depth],\n param = blockParams && _utils.indexOf(blockParams, name);\n if (blockParams && param >= 0) {\n return [depth, param];\n }\n }\n }\n};\nfunction precompile(input, options, env) {\n if (input == null || typeof input !== 'string' && input.type !== 'Program') {\n throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input);\n }\n options = options || {};\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n var ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options);\n return new env.JavaScriptCompiler().compile(environment, options);\n}\nfunction compile(input, options, env) {\n if (options === undefined) options = {};\n if (input == null || typeof input !== 'string' && input.type !== 'Program') {\n throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input);\n }\n options = _utils.extend({}, options);\n if (!('data' in options)) {\n options.data = true;\n }\n if (options.compat) {\n options.useDepths = true;\n }\n var compiled = undefined;\n function compileInput() {\n var ast = env.parse(input, options),\n environment = new env.Compiler().compile(ast, options),\n templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);\n return env.template(templateSpec);\n }\n\n // Template is only compiled on first use and cached after that point.\n function ret(context, execOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled.call(this, context, execOptions);\n }\n ret._setup = function (setupOptions) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._setup(setupOptions);\n };\n ret._child = function (i, data, blockParams, depths) {\n if (!compiled) {\n compiled = compileInput();\n }\n return compiled._child(i, data, blockParams, depths);\n };\n return ret;\n}\nfunction argEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) {\n for (var i = 0; i < a.length; i++) {\n if (!argEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n}\nfunction transformLiteralToPath(sexpr) {\n if (!sexpr.path.parts) {\n var literal = sexpr.path;\n // Casting to string here to make false and 0 literal values play nicely with the rest\n // of the system.\n sexpr.path = {\n type: 'PathExpression',\n data: false,\n depth: 0,\n parts: [literal.original + ''],\n original: literal.original + '',\n loc: literal.loc\n };\n }\n}","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\nvar _base = require('../base');\nvar _exception = require('../exception');\nvar _exception2 = _interopRequireDefault(_exception);\nvar _utils = require('../utils');\nvar _codeGen = require('./code-gen');\nvar _codeGen2 = _interopRequireDefault(_codeGen);\nfunction Literal(value) {\n this.value = value;\n}\nfunction JavaScriptCompiler() {}\nJavaScriptCompiler.prototype = {\n // PUBLIC API: You can override these methods in a subclass to provide\n // alternative compiled forms for name lookup and buffering semantics\n nameLookup: function nameLookup(parent, name /*, type */) {\n return this.internalNameLookup(parent, name);\n },\n depthedLookup: function depthedLookup(name) {\n return [this.aliasable('container.lookup'), '(depths, ', JSON.stringify(name), ')'];\n },\n compilerInfo: function compilerInfo() {\n var revision = _base.COMPILER_REVISION,\n versions = _base.REVISION_CHANGES[revision];\n return [revision, versions];\n },\n appendToBuffer: function appendToBuffer(source, location, explicit) {\n // Force a source as this simplifies the merge logic.\n if (!_utils.isArray(source)) {\n source = [source];\n }\n source = this.source.wrap(source, location);\n if (this.environment.isSimple) {\n return ['return ', source, ';'];\n } else if (explicit) {\n // This is a case where the buffer operation occurs as a child of another\n // construct, generally braces. We have to explicitly output these buffer\n // operations to ensure that the emitted code goes in the correct location.\n return ['buffer += ', source, ';'];\n } else {\n source.appendToBuffer = true;\n return source;\n }\n },\n initializeBuffer: function initializeBuffer() {\n return this.quotedString('');\n },\n // END PUBLIC API\n internalNameLookup: function internalNameLookup(parent, name) {\n this.lookupPropertyFunctionIsUsed = true;\n return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n },\n lookupPropertyFunctionIsUsed: false,\n compile: function compile(environment, options, context, asObject) {\n this.environment = environment;\n this.options = options;\n this.stringParams = this.options.stringParams;\n this.trackIds = this.options.trackIds;\n this.precompile = !asObject;\n this.name = this.environment.name;\n this.isChild = !!context;\n this.context = context || {\n decorators: [],\n programs: [],\n environments: []\n };\n this.preamble();\n this.stackSlot = 0;\n this.stackVars = [];\n this.aliases = {};\n this.registers = {\n list: []\n };\n this.hashes = [];\n this.compileStack = [];\n this.inlineStack = [];\n this.blockParams = [];\n this.compileChildren(environment, options);\n this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;\n this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n var opcodes = environment.opcodes,\n opcode = undefined,\n firstLoc = undefined,\n i = undefined,\n l = undefined;\n for (i = 0, l = opcodes.length; i < l; i++) {\n opcode = opcodes[i];\n this.source.currentLocation = opcode.loc;\n firstLoc = firstLoc || opcode.loc;\n this[opcode.opcode].apply(this, opcode.args);\n }\n\n // Flush any trailing content that might be pending.\n this.source.currentLocation = firstLoc;\n this.pushSource('');\n\n /* istanbul ignore next */\n if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n throw new _exception2['default']('Compile completed with content left on stack');\n }\n if (!this.decorators.isEmpty()) {\n this.useDecorators = true;\n this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\\n']);\n this.decorators.push('return fn;');\n if (asObject) {\n this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);\n } else {\n this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\\n');\n this.decorators.push('}\\n');\n this.decorators = this.decorators.merge();\n }\n } else {\n this.decorators = undefined;\n }\n var fn = this.createFunctionContext(asObject);\n if (!this.isChild) {\n var ret = {\n compiler: this.compilerInfo(),\n main: fn\n };\n if (this.decorators) {\n ret.main_d = this.decorators; // eslint-disable-line camelcase\n ret.useDecorators = true;\n }\n var _context = this.context;\n var programs = _context.programs;\n var decorators = _context.decorators;\n for (i = 0, l = programs.length; i < l; i++) {\n if (programs[i]) {\n ret[i] = programs[i];\n if (decorators[i]) {\n ret[i + '_d'] = decorators[i];\n ret.useDecorators = true;\n }\n }\n }\n if (this.environment.usePartial) {\n ret.usePartial = true;\n }\n if (this.options.data) {\n ret.useData = true;\n }\n if (this.useDepths) {\n ret.useDepths = true;\n }\n if (this.useBlockParams) {\n ret.useBlockParams = true;\n }\n if (this.options.compat) {\n ret.compat = true;\n }\n if (!asObject) {\n ret.compiler = JSON.stringify(ret.compiler);\n this.source.currentLocation = {\n start: {\n line: 1,\n column: 0\n }\n };\n ret = this.objectLiteral(ret);\n if (options.srcName) {\n ret = ret.toStringWithSourceMap({\n file: options.destName\n });\n ret.map = ret.map && ret.map.toString();\n } else {\n ret = ret.toString();\n }\n } else {\n ret.compilerOptions = this.options;\n }\n return ret;\n } else {\n return fn;\n }\n },\n preamble: function preamble() {\n // track the last context pushed into place to allow skipping the\n // getContext opcode when it would be a noop\n this.lastContext = 0;\n this.source = new _codeGen2['default'](this.options.srcName);\n this.decorators = new _codeGen2['default'](this.options.srcName);\n },\n createFunctionContext: function createFunctionContext(asObject) {\n // istanbul ignore next\n\n var _this = this;\n var varDeclarations = '';\n var locals = this.stackVars.concat(this.registers.list);\n if (locals.length > 0) {\n varDeclarations += ', ' + locals.join(', ');\n }\n\n // Generate minimizer alias mappings\n //\n // When using true SourceNodes, this will update all references to the given alias\n // as the source nodes are reused in situ. For the non-source node compilation mode,\n // aliases will not be used, but this case is already being run on the client and\n // we aren't concern about minimizing the template size.\n var aliasCount = 0;\n Object.keys(this.aliases).forEach(function (alias) {\n var node = _this.aliases[alias];\n if (node.children && node.referenceCount > 1) {\n varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n node.children[0] = 'alias' + aliasCount;\n }\n });\n if (this.lookupPropertyFunctionIsUsed) {\n varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n }\n var params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n if (this.useBlockParams || this.useDepths) {\n params.push('blockParams');\n }\n if (this.useDepths) {\n params.push('depths');\n }\n\n // Perform a second pass over the output to merge content when possible\n var source = this.mergeSource(varDeclarations);\n if (asObject) {\n params.push(source);\n return Function.apply(this, params);\n } else {\n return this.source.wrap(['function(', params.join(','), ') {\\n ', source, '}']);\n }\n },\n mergeSource: function mergeSource(varDeclarations) {\n var isSimple = this.environment.isSimple,\n appendOnly = !this.forceBuffer,\n appendFirst = undefined,\n sourceSeen = undefined,\n bufferStart = undefined,\n bufferEnd = undefined;\n this.source.each(function (line) {\n if (line.appendToBuffer) {\n if (bufferStart) {\n line.prepend(' + ');\n } else {\n bufferStart = line;\n }\n bufferEnd = line;\n } else {\n if (bufferStart) {\n if (!sourceSeen) {\n appendFirst = true;\n } else {\n bufferStart.prepend('buffer += ');\n }\n bufferEnd.add(';');\n bufferStart = bufferEnd = undefined;\n }\n sourceSeen = true;\n if (!isSimple) {\n appendOnly = false;\n }\n }\n });\n if (appendOnly) {\n if (bufferStart) {\n bufferStart.prepend('return ');\n bufferEnd.add(';');\n } else if (!sourceSeen) {\n this.source.push('return \"\";');\n }\n } else {\n varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n if (bufferStart) {\n bufferStart.prepend('return buffer + ');\n bufferEnd.add(';');\n } else {\n this.source.push('return buffer;');\n }\n }\n if (varDeclarations) {\n this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n'));\n }\n return this.source.merge();\n },\n lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() {\n return '\\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\\n return parent[propertyName];\\n }\\n return undefined\\n }\\n '.trim();\n },\n // [blockValue]\n //\n // On stack, before: hash, inverse, program, value\n // On stack, after: return value of blockHelperMissing\n //\n // The purpose of this opcode is to take a block of the form\n // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n // replace it on the stack with the result of properly\n // invoking blockHelperMissing.\n blockValue: function blockValue(name) {\n var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),\n params = [this.contextName(0)];\n this.setupHelperArgs(name, 0, params);\n var blockName = this.popStack();\n params.splice(1, 0, blockName);\n this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n },\n // [ambiguousBlockValue]\n //\n // On stack, before: hash, inverse, program, value\n // Compiler value, before: lastHelper=value of last found helper, if any\n // On stack, after, if no lastHelper: same as [blockValue]\n // On stack, after, if lastHelper: value\n ambiguousBlockValue: function ambiguousBlockValue() {\n // We're being a bit cheeky and reusing the options value from the prior exec\n var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'),\n params = [this.contextName(0)];\n this.setupHelperArgs('', 0, params, true);\n this.flushInline();\n var current = this.topStack();\n params.splice(1, 0, current);\n this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);\n },\n // [appendContent]\n //\n // On stack, before: ...\n // On stack, after: ...\n //\n // Appends the string value of `content` to the current buffer\n appendContent: function appendContent(content) {\n if (this.pendingContent) {\n content = this.pendingContent + content;\n } else {\n this.pendingLocation = this.source.currentLocation;\n }\n this.pendingContent = content;\n },\n // [append]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Coerces `value` to a String and appends it to the current buffer.\n //\n // If `value` is truthy, or 0, it is coerced into a string and appended\n // Otherwise, the empty string is appended\n append: function append() {\n if (this.isInline()) {\n this.replaceStack(function (current) {\n return [' != null ? ', current, ' : \"\"'];\n });\n this.pushSource(this.appendToBuffer(this.popStack()));\n } else {\n var local = this.popStack();\n this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);\n if (this.environment.isSimple) {\n this.pushSource(['else { ', this.appendToBuffer(\"''\", undefined, true), ' }']);\n }\n }\n },\n // [appendEscaped]\n //\n // On stack, before: value, ...\n // On stack, after: ...\n //\n // Escape `value` and append it to the buffer\n appendEscaped: function appendEscaped() {\n this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));\n },\n // [getContext]\n //\n // On stack, before: ...\n // On stack, after: ...\n // Compiler value, after: lastContext=depth\n //\n // Set the value of the `lastContext` compiler value to the depth\n getContext: function getContext(depth) {\n this.lastContext = depth;\n },\n // [pushContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext, ...\n //\n // Pushes the value of the current context onto the stack.\n pushContext: function pushContext() {\n this.pushStackLiteral(this.contextName(this.lastContext));\n },\n // [lookupOnContext]\n //\n // On stack, before: ...\n // On stack, after: currentContext[name], ...\n //\n // Looks up the value of `name` on the current context and pushes\n // it onto the stack.\n lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {\n var i = 0;\n if (!scoped && this.options.compat && !this.lastContext) {\n // The depthed query is expected to handle the undefined logic for the root level that\n // is implemented below, so we evaluate that directly in compat mode\n this.push(this.depthedLookup(parts[i++]));\n } else {\n this.pushContext();\n }\n this.resolvePath('context', parts, i, falsy, strict);\n },\n // [lookupBlockParam]\n //\n // On stack, before: ...\n // On stack, after: blockParam[name], ...\n //\n // Looks up the value of `parts` on the given block param and pushes\n // it onto the stack.\n lookupBlockParam: function lookupBlockParam(blockParamId, parts) {\n this.useBlockParams = true;\n this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n this.resolvePath('context', parts, 1);\n },\n // [lookupData]\n //\n // On stack, before: ...\n // On stack, after: data, ...\n //\n // Push the data lookup operator\n lookupData: function lookupData(depth, parts, strict) {\n if (!depth) {\n this.pushStackLiteral('data');\n } else {\n this.pushStackLiteral('container.data(data, ' + depth + ')');\n }\n this.resolvePath('data', parts, 0, true, strict);\n },\n resolvePath: function resolvePath(type, parts, i, falsy, strict) {\n // istanbul ignore next\n\n var _this2 = this;\n if (this.options.strict || this.options.assumeObjects) {\n this.push(strictLookup(this.options.strict && strict, this, parts, i, type));\n return;\n }\n var len = parts.length;\n for (; i < len; i++) {\n /* eslint-disable no-loop-func */\n this.replaceStack(function (current) {\n var lookup = _this2.nameLookup(current, parts[i], type);\n // We want to ensure that zero and false are handled properly if the context (falsy flag)\n // needs to have the special handling for these values.\n if (!falsy) {\n return [' != null ? ', lookup, ' : ', current];\n } else {\n // Otherwise we can use generic falsy handling\n return [' && ', lookup];\n }\n });\n /* eslint-enable no-loop-func */\n }\n },\n\n // [resolvePossibleLambda]\n //\n // On stack, before: value, ...\n // On stack, after: resolved value, ...\n //\n // If the `value` is a lambda, replace it on the stack by\n // the return value of the lambda\n resolvePossibleLambda: function resolvePossibleLambda() {\n this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);\n },\n // [pushStringParam]\n //\n // On stack, before: ...\n // On stack, after: string, currentContext, ...\n //\n // This opcode is designed for use in string mode, which\n // provides the string value of a parameter along with its\n // depth rather than resolving it immediately.\n pushStringParam: function pushStringParam(string, type) {\n this.pushContext();\n this.pushString(type);\n\n // If it's a subexpression, the string result\n // will be pushed after this opcode.\n if (type !== 'SubExpression') {\n if (typeof string === 'string') {\n this.pushString(string);\n } else {\n this.pushStackLiteral(string);\n }\n }\n },\n emptyHash: function emptyHash(omitEmpty) {\n if (this.trackIds) {\n this.push('{}'); // hashIds\n }\n\n if (this.stringParams) {\n this.push('{}'); // hashContexts\n this.push('{}'); // hashTypes\n }\n\n this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n },\n pushHash: function pushHash() {\n if (this.hash) {\n this.hashes.push(this.hash);\n }\n this.hash = {\n values: {},\n types: [],\n contexts: [],\n ids: []\n };\n },\n popHash: function popHash() {\n var hash = this.hash;\n this.hash = this.hashes.pop();\n if (this.trackIds) {\n this.push(this.objectLiteral(hash.ids));\n }\n if (this.stringParams) {\n this.push(this.objectLiteral(hash.contexts));\n this.push(this.objectLiteral(hash.types));\n }\n this.push(this.objectLiteral(hash.values));\n },\n // [pushString]\n //\n // On stack, before: ...\n // On stack, after: quotedString(string), ...\n //\n // Push a quoted version of `string` onto the stack\n pushString: function pushString(string) {\n this.pushStackLiteral(this.quotedString(string));\n },\n // [pushLiteral]\n //\n // On stack, before: ...\n // On stack, after: value, ...\n //\n // Pushes a value onto the stack. This operation prevents\n // the compiler from creating a temporary variable to hold\n // it.\n pushLiteral: function pushLiteral(value) {\n this.pushStackLiteral(value);\n },\n // [pushProgram]\n //\n // On stack, before: ...\n // On stack, after: program(guid), ...\n //\n // Push a program expression onto the stack. This takes\n // a compile-time guid and converts it into a runtime-accessible\n // expression.\n pushProgram: function pushProgram(guid) {\n if (guid != null) {\n this.pushStackLiteral(this.programExpression(guid));\n } else {\n this.pushStackLiteral(null);\n }\n },\n // [registerDecorator]\n //\n // On stack, before: hash, program, params..., ...\n // On stack, after: ...\n //\n // Pops off the decorator's parameters, invokes the decorator,\n // and inserts the decorator into the decorators list.\n registerDecorator: function registerDecorator(paramSize, name) {\n var foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n options = this.setupHelperArgs(name, paramSize);\n this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);\n },\n // [invokeHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // Pops off the helper's parameters, invokes the helper,\n // and pushes the helper's return value onto the stack.\n //\n // If the helper is not found, `helperMissing` is called.\n invokeHelper: function invokeHelper(paramSize, name, isSimple) {\n var nonHelper = this.popStack(),\n helper = this.setupHelper(paramSize, name);\n var possibleFunctionCalls = [];\n if (isSimple) {\n // direct call to helper\n possibleFunctionCalls.push(helper.name);\n }\n // call a function from the input object\n possibleFunctionCalls.push(nonHelper);\n if (!this.options.strict) {\n possibleFunctionCalls.push(this.aliasable('container.hooks.helperMissing'));\n }\n var functionLookupCode = ['(', this.itemsSeparatedBy(possibleFunctionCalls, '||'), ')'];\n var functionCall = this.source.functionCall(functionLookupCode, 'call', helper.callParams);\n this.push(functionCall);\n },\n itemsSeparatedBy: function itemsSeparatedBy(items, separator) {\n var result = [];\n result.push(items[0]);\n for (var i = 1; i < items.length; i++) {\n result.push(separator, items[i]);\n }\n return result;\n },\n // [invokeKnownHelper]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of helper invocation\n //\n // This operation is used when the helper is known to exist,\n // so a `helperMissing` fallback is not required.\n invokeKnownHelper: function invokeKnownHelper(paramSize, name) {\n var helper = this.setupHelper(paramSize, name);\n this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n },\n // [invokeAmbiguous]\n //\n // On stack, before: hash, inverse, program, params..., ...\n // On stack, after: result of disambiguation\n //\n // This operation is used when an expression like `{{foo}}`\n // is provided, but we don't know at compile-time whether it\n // is a helper or a path.\n //\n // This operation emits more code than the other options,\n // and can be avoided by passing the `knownHelpers` and\n // `knownHelpersOnly` flags at compile-time.\n invokeAmbiguous: function invokeAmbiguous(name, helperCall) {\n this.useRegister('helper');\n var nonHelper = this.popStack();\n this.emptyHash();\n var helper = this.setupHelper(0, name, helperCall);\n var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');\n var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n if (!this.options.strict) {\n lookup[0] = '(helper = ';\n lookup.push(' != null ? helper : ', this.aliasable('container.hooks.helperMissing'));\n }\n this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('\"function\"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);\n },\n // [invokePartial]\n //\n // On stack, before: context, ...\n // On stack after: result of partial invocation\n //\n // This operation pops off a context, invokes a partial with that context,\n // and pushes the result of the invocation back.\n invokePartial: function invokePartial(isDynamic, name, indent) {\n var params = [],\n options = this.setupParams(name, 1, params);\n if (isDynamic) {\n name = this.popStack();\n delete options.name;\n }\n if (indent) {\n options.indent = JSON.stringify(indent);\n }\n options.helpers = 'helpers';\n options.partials = 'partials';\n options.decorators = 'container.decorators';\n if (!isDynamic) {\n params.unshift(this.nameLookup('partials', name, 'partial'));\n } else {\n params.unshift(name);\n }\n if (this.options.compat) {\n options.depths = 'depths';\n }\n options = this.objectLiteral(options);\n params.push(options);\n this.push(this.source.functionCall('container.invokePartial', '', params));\n },\n // [assignToHash]\n //\n // On stack, before: value, ..., hash, ...\n // On stack, after: ..., hash, ...\n //\n // Pops a value off the stack and assigns it to the current hash\n assignToHash: function assignToHash(key) {\n var value = this.popStack(),\n context = undefined,\n type = undefined,\n id = undefined;\n if (this.trackIds) {\n id = this.popStack();\n }\n if (this.stringParams) {\n type = this.popStack();\n context = this.popStack();\n }\n var hash = this.hash;\n if (context) {\n hash.contexts[key] = context;\n }\n if (type) {\n hash.types[key] = type;\n }\n if (id) {\n hash.ids[key] = id;\n }\n hash.values[key] = value;\n },\n pushId: function pushId(type, name, child) {\n if (type === 'BlockParam') {\n this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));\n } else if (type === 'PathExpression') {\n this.pushString(name);\n } else if (type === 'SubExpression') {\n this.pushStackLiteral('true');\n } else {\n this.pushStackLiteral('null');\n }\n },\n // HELPERS\n\n compiler: JavaScriptCompiler,\n compileChildren: function compileChildren(environment, options) {\n var children = environment.children,\n child = undefined,\n compiler = undefined;\n for (var i = 0, l = children.length; i < l; i++) {\n child = children[i];\n compiler = new this.compiler(); // eslint-disable-line new-cap\n\n var existing = this.matchExistingProgram(child);\n if (existing == null) {\n this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n var index = this.context.programs.length;\n child.index = index;\n child.name = 'program' + index;\n this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);\n this.context.decorators[index] = compiler.decorators;\n this.context.environments[index] = child;\n this.useDepths = this.useDepths || compiler.useDepths;\n this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n child.useDepths = this.useDepths;\n child.useBlockParams = this.useBlockParams;\n } else {\n child.index = existing.index;\n child.name = 'program' + existing.index;\n this.useDepths = this.useDepths || existing.useDepths;\n this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n }\n }\n },\n matchExistingProgram: function matchExistingProgram(child) {\n for (var i = 0, len = this.context.environments.length; i < len; i++) {\n var environment = this.context.environments[i];\n if (environment && environment.equals(child)) {\n return environment;\n }\n }\n },\n programExpression: function programExpression(guid) {\n var child = this.environment.children[guid],\n programParams = [child.index, 'data', child.blockParams];\n if (this.useBlockParams || this.useDepths) {\n programParams.push('blockParams');\n }\n if (this.useDepths) {\n programParams.push('depths');\n }\n return 'container.program(' + programParams.join(', ') + ')';\n },\n useRegister: function useRegister(name) {\n if (!this.registers[name]) {\n this.registers[name] = true;\n this.registers.list.push(name);\n }\n },\n push: function push(expr) {\n if (!(expr instanceof Literal)) {\n expr = this.source.wrap(expr);\n }\n this.inlineStack.push(expr);\n return expr;\n },\n pushStackLiteral: function pushStackLiteral(item) {\n this.push(new Literal(item));\n },\n pushSource: function pushSource(source) {\n if (this.pendingContent) {\n this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));\n this.pendingContent = undefined;\n }\n if (source) {\n this.source.push(source);\n }\n },\n replaceStack: function replaceStack(callback) {\n var prefix = ['('],\n stack = undefined,\n createdStack = undefined,\n usedLiteral = undefined;\n\n /* istanbul ignore next */\n if (!this.isInline()) {\n throw new _exception2['default']('replaceStack on non-inline');\n }\n\n // We want to merge the inline statement into the replacement statement via ','\n var top = this.popStack(true);\n if (top instanceof Literal) {\n // Literals do not need to be inlined\n stack = [top.value];\n prefix = ['(', stack];\n usedLiteral = true;\n } else {\n // Get or create the current stack name for use by the inline\n createdStack = true;\n var _name = this.incrStack();\n prefix = ['((', this.push(_name), ' = ', top, ')'];\n stack = this.topStack();\n }\n var item = callback.call(this, stack);\n if (!usedLiteral) {\n this.popStack();\n }\n if (createdStack) {\n this.stackSlot--;\n }\n this.push(prefix.concat(item, ')'));\n },\n incrStack: function incrStack() {\n this.stackSlot++;\n if (this.stackSlot > this.stackVars.length) {\n this.stackVars.push('stack' + this.stackSlot);\n }\n return this.topStackName();\n },\n topStackName: function topStackName() {\n return 'stack' + this.stackSlot;\n },\n flushInline: function flushInline() {\n var inlineStack = this.inlineStack;\n this.inlineStack = [];\n for (var i = 0, len = inlineStack.length; i < len; i++) {\n var entry = inlineStack[i];\n /* istanbul ignore if */\n if (entry instanceof Literal) {\n this.compileStack.push(entry);\n } else {\n var stack = this.incrStack();\n this.pushSource([stack, ' = ', entry, ';']);\n this.compileStack.push(stack);\n }\n }\n },\n isInline: function isInline() {\n return this.inlineStack.length;\n },\n popStack: function popStack(wrapped) {\n var inline = this.isInline(),\n item = (inline ? this.inlineStack : this.compileStack).pop();\n if (!wrapped && item instanceof Literal) {\n return item.value;\n } else {\n if (!inline) {\n /* istanbul ignore next */\n if (!this.stackSlot) {\n throw new _exception2['default']('Invalid stack pop');\n }\n this.stackSlot--;\n }\n return item;\n }\n },\n topStack: function topStack() {\n var stack = this.isInline() ? this.inlineStack : this.compileStack,\n item = stack[stack.length - 1];\n\n /* istanbul ignore if */\n if (item instanceof Literal) {\n return item.value;\n } else {\n return item;\n }\n },\n contextName: function contextName(context) {\n if (this.useDepths && context) {\n return 'depths[' + context + ']';\n } else {\n return 'depth' + context;\n }\n },\n quotedString: function quotedString(str) {\n return this.source.quotedString(str);\n },\n objectLiteral: function objectLiteral(obj) {\n return this.source.objectLiteral(obj);\n },\n aliasable: function aliasable(name) {\n var ret = this.aliases[name];\n if (ret) {\n ret.referenceCount++;\n return ret;\n }\n ret = this.aliases[name] = this.source.wrap(name);\n ret.aliasable = true;\n ret.referenceCount = 1;\n return ret;\n },\n setupHelper: function setupHelper(paramSize, name, blockHelper) {\n var params = [],\n paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n var foundHelper = this.nameLookup('helpers', name, 'helper'),\n callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})');\n return {\n params: params,\n paramsInit: paramsInit,\n name: foundHelper,\n callParams: [callContext].concat(params)\n };\n },\n setupParams: function setupParams(helper, paramSize, params) {\n var options = {},\n contexts = [],\n types = [],\n ids = [],\n objectArgs = !params,\n param = undefined;\n if (objectArgs) {\n params = [];\n }\n options.name = this.quotedString(helper);\n options.hash = this.popStack();\n if (this.trackIds) {\n options.hashIds = this.popStack();\n }\n if (this.stringParams) {\n options.hashTypes = this.popStack();\n options.hashContexts = this.popStack();\n }\n var inverse = this.popStack(),\n program = this.popStack();\n\n // Avoid setting fn and inverse if neither are set. This allows\n // helpers to do a check for `if (options.fn)`\n if (program || inverse) {\n options.fn = program || 'container.noop';\n options.inverse = inverse || 'container.noop';\n }\n\n // The parameters go on to the stack in order (making sure that they are evaluated in order)\n // so we need to pop them off the stack in reverse order\n var i = paramSize;\n while (i--) {\n param = this.popStack();\n params[i] = param;\n if (this.trackIds) {\n ids[i] = this.popStack();\n }\n if (this.stringParams) {\n types[i] = this.popStack();\n contexts[i] = this.popStack();\n }\n }\n if (objectArgs) {\n options.args = this.source.generateArray(params);\n }\n if (this.trackIds) {\n options.ids = this.source.generateArray(ids);\n }\n if (this.stringParams) {\n options.types = this.source.generateArray(types);\n options.contexts = this.source.generateArray(contexts);\n }\n if (this.options.data) {\n options.data = 'data';\n }\n if (this.useBlockParams) {\n options.blockParams = 'blockParams';\n }\n return options;\n },\n setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {\n var options = this.setupParams(helper, paramSize, params);\n options.loc = JSON.stringify(this.source.currentLocation);\n options = this.objectLiteral(options);\n if (useRegister) {\n this.useRegister('options');\n params.push('options');\n return ['options=', options];\n } else if (params) {\n params.push(options);\n return '';\n } else {\n return options;\n }\n }\n};\n(function () {\n var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' ');\n var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};\n for (var i = 0, l = reservedWords.length; i < l; i++) {\n compilerWords[reservedWords[i]] = true;\n }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function (name) {\n return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);\n};\nfunction strictLookup(requireTerminal, compiler, parts, i, type) {\n var stack = compiler.popStack(),\n len = parts.length;\n if (requireTerminal) {\n len--;\n }\n for (; i < len; i++) {\n stack = compiler.nameLookup(stack, parts[i], type);\n }\n if (requireTerminal) {\n return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ', ', JSON.stringify(compiler.source.currentLocation), ' )'];\n } else {\n return stack;\n }\n}\nexports['default'] = JavaScriptCompiler;\nmodule.exports = exports['default'];","/* global define, require */\n'use strict';\n\nexports.__esModule = true;\nvar _utils = require('../utils');\nvar SourceNode = undefined;\ntry {\n /* istanbul ignore next */\n if (typeof define !== 'function' || !define.amd) {\n // We don't support this in AMD environments. For these environments, we assume that\n // they are running on the browser and thus have no need for the source-map library.\n var SourceMap = require('source-map');\n SourceNode = SourceMap.SourceNode;\n }\n} catch (err) {}\n/* NOP */\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build */\nif (!SourceNode) {\n SourceNode = function (line, column, srcFile, chunks) {\n this.src = '';\n if (chunks) {\n this.add(chunks);\n }\n };\n /* istanbul ignore next */\n SourceNode.prototype = {\n add: function add(chunks) {\n if (_utils.isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src += chunks;\n },\n prepend: function prepend(chunks) {\n if (_utils.isArray(chunks)) {\n chunks = chunks.join('');\n }\n this.src = chunks + this.src;\n },\n toStringWithSourceMap: function toStringWithSourceMap() {\n return {\n code: this.toString()\n };\n },\n toString: function toString() {\n return this.src;\n }\n };\n}\nfunction castChunk(chunk, codeGen, loc) {\n if (_utils.isArray(chunk)) {\n var ret = [];\n for (var i = 0, len = chunk.length; i < len; i++) {\n ret.push(codeGen.wrap(chunk[i], loc));\n }\n return ret;\n } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n // Handle primitives that the SourceNode will throw up on\n return chunk + '';\n }\n return chunk;\n}\nfunction CodeGen(srcFile) {\n this.srcFile = srcFile;\n this.source = [];\n}\nCodeGen.prototype = {\n isEmpty: function isEmpty() {\n return !this.source.length;\n },\n prepend: function prepend(source, loc) {\n this.source.unshift(this.wrap(source, loc));\n },\n push: function push(source, loc) {\n this.source.push(this.wrap(source, loc));\n },\n merge: function merge() {\n var source = this.empty();\n this.each(function (line) {\n source.add([' ', line, '\\n']);\n });\n return source;\n },\n each: function each(iter) {\n for (var i = 0, len = this.source.length; i < len; i++) {\n iter(this.source[i]);\n }\n },\n empty: function empty() {\n var loc = this.currentLocation || {\n start: {}\n };\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n },\n wrap: function wrap(chunk) {\n var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || {\n start: {}\n } : arguments[1];\n if (chunk instanceof SourceNode) {\n return chunk;\n }\n chunk = castChunk(chunk, this, loc);\n return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk);\n },\n functionCall: function functionCall(fn, type, params) {\n params = this.generateList(params);\n return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n },\n quotedString: function quotedString(str) {\n return '\"' + (str + '').replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n .replace(/\\u2029/g, '\\\\u2029') + '\"';\n },\n objectLiteral: function objectLiteral(obj) {\n // istanbul ignore next\n\n var _this = this;\n var pairs = [];\n Object.keys(obj).forEach(function (key) {\n var value = castChunk(obj[key], _this);\n if (value !== 'undefined') {\n pairs.push([_this.quotedString(key), ':', value]);\n }\n });\n var ret = this.generateList(pairs);\n ret.prepend('{');\n ret.add('}');\n return ret;\n },\n generateList: function generateList(entries) {\n var ret = this.empty();\n for (var i = 0, len = entries.length; i < len; i++) {\n if (i) {\n ret.add(',');\n }\n ret.add(castChunk(entries[i], this));\n }\n return ret;\n },\n generateArray: function generateArray(entries) {\n var ret = this.generateList(entries);\n ret.prepend('[');\n ret.add(']');\n return ret;\n }\n};\nexports['default'] = CodeGen;\nmodule.exports = exports['default'];","/*!\n * Client Side Validations JS - v0.1.5 (https://github.com/DavyJonesLocker/client_side_validations)\n * Copyright (c) 2020 Geremia Taglialatela, Brian Cardarella\n * Licensed under MIT (https://opensource.org/licenses/mit-license.php)\n */\n\nimport $ from 'jquery';\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}\nvar ClientSideValidations = {\n callbacks: {\n element: {\n after: function after(element, eventData) {},\n before: function before(element, eventData) {},\n fail: function fail(element, message, addError, eventData) {\n return addError();\n },\n pass: function pass(element, removeError, eventData) {\n return removeError();\n }\n },\n form: {\n after: function after(form, eventData) {},\n before: function before(form, eventData) {},\n fail: function fail(form, eventData) {},\n pass: function pass(form, eventData) {}\n }\n },\n eventsToBind: {\n form: function form(_form, $form) {\n return {\n 'submit.ClientSideValidations': function submitClientSideValidations(eventData) {\n if (!$form.isValid(_form.ClientSideValidations.settings.validators)) {\n eventData.preventDefault();\n eventData.stopImmediatePropagation();\n }\n },\n 'ajax:beforeSend.ClientSideValidations': function ajaxBeforeSendClientSideValidations(eventData) {\n if (eventData.target === this) {\n $form.isValid(_form.ClientSideValidations.settings.validators);\n }\n },\n 'form:validate:after.ClientSideValidations': function formValidateAfterClientSideValidations(eventData) {\n ClientSideValidations.callbacks.form.after($form, eventData);\n },\n 'form:validate:before.ClientSideValidations': function formValidateBeforeClientSideValidations(eventData) {\n ClientSideValidations.callbacks.form.before($form, eventData);\n },\n 'form:validate:fail.ClientSideValidations': function formValidateFailClientSideValidations(eventData) {\n ClientSideValidations.callbacks.form.fail($form, eventData);\n },\n 'form:validate:pass.ClientSideValidations': function formValidatePassClientSideValidations(eventData) {\n ClientSideValidations.callbacks.form.pass($form, eventData);\n }\n };\n },\n input: function input(form) {\n return {\n 'focusout.ClientSideValidations': function focusoutClientSideValidations() {\n $(this).isValid(form.ClientSideValidations.settings.validators);\n },\n 'change.ClientSideValidations': function changeClientSideValidations() {\n $(this).data('changed', true);\n },\n 'element:validate:after.ClientSideValidations': function elementValidateAfterClientSideValidations(eventData) {\n ClientSideValidations.callbacks.element.after($(this), eventData);\n },\n 'element:validate:before.ClientSideValidations': function elementValidateBeforeClientSideValidations(eventData) {\n ClientSideValidations.callbacks.element.before($(this), eventData);\n },\n 'element:validate:fail.ClientSideValidations': function elementValidateFailClientSideValidations(eventData, message) {\n var $element = $(this);\n ClientSideValidations.callbacks.element.fail($element, message, function () {\n return form.ClientSideValidations.addError($element, message);\n }, eventData);\n },\n 'element:validate:pass.ClientSideValidations': function elementValidatePassClientSideValidations(eventData) {\n var $element = $(this);\n ClientSideValidations.callbacks.element.pass($element, function () {\n return form.ClientSideValidations.removeError($element);\n }, eventData);\n }\n };\n },\n inputConfirmation: function inputConfirmation(element, form) {\n return {\n 'focusout.ClientSideValidations': function focusoutClientSideValidations() {\n element.data('changed', true).isValid(form.ClientSideValidations.settings.validators);\n },\n 'keyup.ClientSideValidations': function keyupClientSideValidations() {\n element.data('changed', true).isValid(form.ClientSideValidations.settings.validators);\n }\n };\n }\n },\n enablers: {\n form: function form(_form2) {\n var $form = $(_form2);\n _form2.ClientSideValidations = {\n settings: $form.data('clientSideValidations'),\n addError: function addError(element, message) {\n return ClientSideValidations.formBuilders[_form2.ClientSideValidations.settings.html_settings.type].add(element, _form2.ClientSideValidations.settings.html_settings, message);\n },\n removeError: function removeError(element) {\n return ClientSideValidations.formBuilders[_form2.ClientSideValidations.settings.html_settings.type].remove(element, _form2.ClientSideValidations.settings.html_settings);\n }\n };\n var eventsToBind = ClientSideValidations.eventsToBind.form(_form2, $form);\n for (var eventName in eventsToBind) {\n var eventFunction = eventsToBind[eventName];\n $form.on(eventName, eventFunction);\n }\n $form.find(ClientSideValidations.selectors.inputs).each(function () {\n ClientSideValidations.enablers.input(this);\n });\n },\n input: function input(_input) {\n var $input = $(_input);\n var form = _input.form;\n var $form = $(form);\n var eventsToBind = ClientSideValidations.eventsToBind.input(form);\n for (var eventName in eventsToBind) {\n var eventFunction = eventsToBind[eventName];\n $input.filter(':not(:radio):not([id$=_confirmation])').each(function () {\n return $(this).attr('data-validate', true);\n }).on(eventName, eventFunction);\n }\n $input.filter(':checkbox').on('change.ClientSideValidations', function () {\n $(this).isValid(form.ClientSideValidations.settings.validators);\n });\n $input.filter('[id$=_confirmation]').each(function () {\n var $element = $(this);\n var $elementToConfirm = $form.find('#' + this.id.match(/(.+)_confirmation/)[1] + ':input');\n if ($elementToConfirm.length) {\n var _eventsToBind = ClientSideValidations.eventsToBind.inputConfirmation($elementToConfirm, form);\n for (var _eventName in _eventsToBind) {\n var _eventFunction = _eventsToBind[_eventName];\n $('#' + $element.attr('id')).on(_eventName, _eventFunction);\n }\n }\n });\n }\n },\n formBuilders: {\n 'ActionView::Helpers::FormBuilder': {\n add: function add(element, settings, message) {\n var form = $(element[0].form);\n if (element.data('valid') !== false && form.find(\"label.message[for='\" + element.attr('id') + \"']\")[0] == null) {\n var inputErrorField = $(settings.input_tag);\n var labelErrorField = $(settings.label_tag);\n var label = form.find(\"label[for='\" + element.attr('id') + \"']:not(.message)\");\n if (element.attr('autofocus')) {\n element.attr('autofocus', false);\n }\n element.before(inputErrorField);\n inputErrorField.find('span#input_tag').replaceWith(element);\n inputErrorField.find('label.message').attr('for', element.attr('id'));\n labelErrorField.find('label.message').attr('for', element.attr('id'));\n labelErrorField.insertAfter(label);\n labelErrorField.find('label#label_tag').replaceWith(label);\n }\n form.find(\"label.message[for='\" + element.attr('id') + \"']\").text(message);\n },\n remove: function remove(element, settings) {\n var form = $(element[0].form);\n var inputErrorFieldClass = $(settings.input_tag).attr('class');\n var inputErrorField = element.closest('.' + inputErrorFieldClass.replace(/ /g, '.'));\n var label = form.find(\"label[for='\" + element.attr('id') + \"']:not(.message)\");\n var labelErrorFieldClass = $(settings.label_tag).attr('class');\n var labelErrorField = label.closest('.' + labelErrorFieldClass.replace(/ /g, '.'));\n if (inputErrorField[0]) {\n inputErrorField.find('#' + element.attr('id')).detach();\n inputErrorField.replaceWith(element);\n label.detach();\n labelErrorField.replaceWith(label);\n }\n }\n }\n },\n patterns: {\n numericality: {\n \"default\": /^[-+]?[0-9]*\\.?[0-9]+([eE][-+]?[0-9]+)?$/,\n only_integer: /^[+-]?\\d+$/\n }\n },\n selectors: {\n inputs: ':input:not(button):not([type=\"submit\"])[name]:visible:enabled',\n validate_inputs: ':input:enabled:visible[data-validate]',\n forms: 'form[data-client-side-validations]'\n },\n validators: {\n all: function all() {\n return $.extend({}, ClientSideValidations.validators.local, ClientSideValidations.validators.remote);\n },\n local: {},\n remote: {}\n },\n disable: function disable(target) {\n var $target = $(target);\n $target.off('.ClientSideValidations');\n if ($target.is('form')) {\n ClientSideValidations.disable($target.find(':input'));\n } else {\n $target.removeData(['changed', 'valid']);\n $target.filter(':input').each(function () {\n $(this).removeAttr('data-validate');\n });\n }\n },\n reset: function reset(form) {\n var $form = $(form);\n ClientSideValidations.disable(form);\n for (var key in form.ClientSideValidations.settings.validators) {\n form.ClientSideValidations.removeError($form.find(\"[name='\" + key + \"']\"));\n }\n ClientSideValidations.enablers.form(form);\n },\n start: function start() {\n if (window.Turbolinks != null && window.Turbolinks.supported) {\n var initializeOnEvent = window.Turbolinks.EVENTS != null ? 'page:change' : 'turbolinks:load';\n $(document).on(initializeOnEvent, function () {\n return $(ClientSideValidations.selectors.forms).validate();\n });\n } else {\n $(function () {\n return $(ClientSideValidations.selectors.forms).validate();\n });\n }\n }\n};\nvar arrayHasValue = function arrayHasValue(value, otherValues) {\n for (var i = 0, l = otherValues.length; i < l; i++) {\n if (value === otherValues[i]) {\n return true;\n }\n }\n return false;\n};\nvar valueIsPresent = function valueIsPresent(value) {\n return !/^\\s*$/.test(value || '');\n};\nvar absenceLocalValidator = function absenceLocalValidator(element, options) {\n if (valueIsPresent(element.val())) {\n return options.message;\n }\n};\nvar presenceLocalValidator = function presenceLocalValidator(element, options) {\n if (!valueIsPresent(element.val())) {\n return options.message;\n }\n};\nvar DEFAULT_ACCEPT_OPTION = ['1', true];\nArray.isArray || (Array.isArray = function (a) {\n var object = {};\n return '' + a !== a && object.toString.call(a) === '[object Array]';\n});\nvar isTextAccepted = function isTextAccepted(value, acceptOption) {\n if (!acceptOption) {\n acceptOption = DEFAULT_ACCEPT_OPTION;\n }\n if (Array.isArray(acceptOption)) {\n return arrayHasValue(value, acceptOption);\n }\n return value === acceptOption;\n};\nvar acceptanceLocalValidator = function acceptanceLocalValidator(element, options) {\n var valid = true;\n if (element.attr('type') === 'checkbox') {\n valid = element.prop('checked');\n }\n if (element.attr('type') === 'text') {\n valid = isTextAccepted(element.val(), options.accept);\n }\n if (!valid) {\n return options.message;\n }\n};\nvar isMatching = function isMatching(value, regExpOptions) {\n return new RegExp(regExpOptions.source, regExpOptions.options).test(value);\n};\nvar hasValidFormat = function hasValidFormat(value, withOptions, withoutOptions) {\n return withOptions && isMatching(value, withOptions) || withoutOptions && !isMatching(value, withoutOptions);\n};\nvar formatLocalValidator = function formatLocalValidator(element, options) {\n var value = element.val();\n if (options.allow_blank && !valueIsPresent(value)) {\n return;\n }\n if (!hasValidFormat(value, options[\"with\"], options.without)) {\n return options.message;\n }\n};\nvar VALIDATIONS = {\n even: function even(a) {\n return parseInt(a, 10) % 2 === 0;\n },\n greater_than: function greater_than(a, b) {\n return parseFloat(a) > parseFloat(b);\n },\n greater_than_or_equal_to: function greater_than_or_equal_to(a, b) {\n return parseFloat(a) >= parseFloat(b);\n },\n equal_to: function equal_to(a, b) {\n return parseFloat(a) === parseFloat(b);\n },\n less_than: function less_than(a, b) {\n return parseFloat(a) < parseFloat(b);\n },\n less_than_or_equal_to: function less_than_or_equal_to(a, b) {\n return parseFloat(a) <= parseFloat(b);\n },\n odd: function odd(a) {\n return parseInt(a, 10) % 2 === 1;\n }\n};\nvar getOtherValue = function getOtherValue(validationOption, $form) {\n if (!isNaN(parseFloat(validationOption))) {\n return validationOption;\n }\n var validationElement = $form.find('[name*=' + validationOption + ']');\n if (validationElement.length === 1) {\n var numberFormat = $form[0].ClientSideValidations.settings.number_format;\n var otherFormattedValue = $.trim(validationElement.val()).replace(new RegExp('\\\\' + numberFormat.separator, 'g'), '.');\n if (!isNaN(parseFloat(otherFormattedValue))) {\n return otherFormattedValue;\n }\n }\n};\nvar isValid = function isValid(validationFunction, validationOption, formattedValue, $form) {\n if (validationFunction.length === 2) {\n var otherValue = getOtherValue(validationOption, $form);\n return otherValue == null || otherValue === '' || validationFunction(formattedValue, otherValue);\n } else {\n return validationFunction(formattedValue);\n }\n};\nvar runFunctionValidations = function runFunctionValidations(formattedValue, $form, options) {\n for (var validation in VALIDATIONS) {\n var validationOption = options[validation];\n var validationFunction = VALIDATIONS[validation]; // Must check for null because this could be 0\n\n if (validationOption == null) {\n continue;\n }\n if (!isValid(validationFunction, validationOption, formattedValue, $form)) {\n return options.messages[validation];\n }\n }\n};\nvar runValidations = function runValidations(formattedValue, $form, options) {\n if (options.only_integer && !ClientSideValidations.patterns.numericality.only_integer.test(formattedValue)) {\n return options.messages.only_integer;\n }\n if (!ClientSideValidations.patterns.numericality[\"default\"].test(formattedValue)) {\n return options.messages.numericality;\n }\n return runFunctionValidations(formattedValue, $form, options);\n};\nvar numericalityLocalValidator = function numericalityLocalValidator(element, options) {\n var value = element.val();\n if (options.allow_blank && !valueIsPresent(value)) {\n return;\n }\n var $form = $(element[0].form);\n var numberFormat = $form[0].ClientSideValidations.settings.number_format;\n var formattedValue = $.trim(value).replace(new RegExp('\\\\' + numberFormat.separator, 'g'), '.');\n return runValidations(formattedValue, $form, options);\n};\nvar VALIDATIONS$1 = {\n is: function is(a, b) {\n return a === parseInt(b, 10);\n },\n minimum: function minimum(a, b) {\n return a >= parseInt(b, 10);\n },\n maximum: function maximum(a, b) {\n return a <= parseInt(b, 10);\n }\n};\nvar runValidations$1 = function runValidations(valueLength, options) {\n for (var validation in VALIDATIONS$1) {\n var validationOption = options[validation];\n var validationFunction = VALIDATIONS$1[validation];\n if (validationOption && !validationFunction(valueLength, validationOption)) {\n return options.messages[validation];\n }\n }\n};\nvar lengthLocalValidator = function lengthLocalValidator(element, options) {\n var value = element.val();\n if (options.allow_blank && !valueIsPresent(value)) {\n return;\n }\n return runValidations$1(value.length, options);\n};\nvar isInList = function isInList(value, otherValues) {\n var normalizedOtherValues = [];\n for (var otherValueIndex in otherValues) {\n normalizedOtherValues.push(otherValues[otherValueIndex].toString());\n }\n return arrayHasValue(value, normalizedOtherValues);\n};\nvar isInRange = function isInRange(value, range) {\n return value >= range[0] && value <= range[1];\n};\nvar isIncluded = function isIncluded(value, options, allowBlank) {\n if ((options.allow_blank && !valueIsPresent(value)) === allowBlank) {\n return true;\n }\n return options[\"in\"] && isInList(value, options[\"in\"]) || options.range && isInRange(value, options.range);\n};\nvar exclusionLocalValidator = function exclusionLocalValidator(element, options) {\n var value = element.val();\n if (isIncluded(value, options, false) || !options.allow_blank && !valueIsPresent(value)) {\n return options.message;\n }\n};\nvar inclusionLocalValidator = function inclusionLocalValidator(element, options) {\n if (!isIncluded(element.val(), options, true)) {\n return options.message;\n }\n};\nvar confirmationLocalValidator = function confirmationLocalValidator(element, options) {\n var value = element.val();\n var confirmationValue = $('#' + element.attr('id') + '_confirmation').val();\n if (!options.case_sensitive) {\n value = value.toLowerCase();\n confirmationValue = confirmationValue.toLowerCase();\n }\n if (value !== confirmationValue) {\n return options.message;\n }\n};\nvar isLocallyUnique = function isLocallyUnique(currentElement, value, otherValue, caseSensitive) {\n if (!caseSensitive) {\n value = value.toLowerCase();\n otherValue = otherValue.toLowerCase();\n }\n if (otherValue === value) {\n $(currentElement).data('notLocallyUnique', true);\n return false;\n }\n if ($(currentElement).data('notLocallyUnique')) {\n $(currentElement).removeData('notLocallyUnique').data('changed', true);\n }\n return true;\n};\nvar uniquenessLocalValidator = function uniquenessLocalValidator(element, options) {\n var elementName = element.attr('name');\n var matches = elementName.match(/^(.+_attributes\\])\\[\\d+\\](.+)$/);\n if (!matches) {\n return;\n }\n var form = element.closest('form');\n var value = element.val();\n var valid = true;\n form.find(':input[name^=\"' + matches[1] + '\"][name$=\"' + matches[2] + '\"]').not(element).each(function () {\n var otherValue = $(this).val();\n if (!isLocallyUnique(this, value, otherValue, options.case_sensitive)) {\n valid = false;\n }\n });\n if (!valid) {\n return options.message;\n }\n};\nClientSideValidations.validators.local = {\n absence: absenceLocalValidator,\n presence: presenceLocalValidator,\n acceptance: acceptanceLocalValidator,\n format: formatLocalValidator,\n numericality: numericalityLocalValidator,\n length: lengthLocalValidator,\n inclusion: inclusionLocalValidator,\n exclusion: exclusionLocalValidator,\n confirmation: confirmationLocalValidator,\n uniqueness: uniquenessLocalValidator\n};\n$.fn.disableClientSideValidations = function () {\n ClientSideValidations.disable(this);\n return this;\n};\n$.fn.enableClientSideValidations = function () {\n var _this = this;\n var selectors = {\n forms: 'form',\n inputs: 'input'\n };\n var _loop = function _loop(selector) {\n var enablers = selectors[selector];\n _this.filter(ClientSideValidations.selectors[selector]).each(function () {\n return ClientSideValidations.enablers[enablers](this);\n });\n };\n for (var selector in selectors) {\n _loop(selector);\n }\n return this;\n};\n$.fn.resetClientSideValidations = function () {\n this.filter(ClientSideValidations.selectors.forms).each(function () {\n return ClientSideValidations.reset(this);\n });\n return this;\n};\n$.fn.validate = function () {\n this.filter(ClientSideValidations.selectors.forms).each(function () {\n return $(this).enableClientSideValidations();\n });\n return this;\n};\n$.fn.isValid = function (validators) {\n var obj = $(this[0]);\n if (obj.is('form')) {\n return validateForm(obj, validators);\n } else {\n return validateElement(obj, validatorsFor(this[0].name, validators));\n }\n};\nvar cleanNestedElementName = function cleanNestedElementName(elementName, nestedMatches, validators) {\n for (var validatorName in validators) {\n if (validatorName.match('\\\\[' + nestedMatches[1] + '\\\\].*\\\\[\\\\]\\\\[' + nestedMatches[2] + '\\\\]$')) {\n elementName = elementName.replace(/\\[[\\da-z_]+\\]\\[(\\w+)\\]$/g, '[][$1]');\n }\n }\n return elementName;\n};\nvar cleanElementName = function cleanElementName(elementName, validators) {\n elementName = elementName.replace(/\\[(\\w+_attributes)\\]\\[[\\da-z_]+\\](?=\\[(?:\\w+_attributes)\\])/g, '[$1][]');\n var nestedMatches = elementName.match(/\\[(\\w+_attributes)\\].*\\[(\\w+)\\]$/);\n if (nestedMatches) {\n elementName = cleanNestedElementName(elementName, nestedMatches, validators);\n }\n return elementName;\n};\nvar validatorsFor = function validatorsFor(elementName, validators) {\n if (Object.prototype.hasOwnProperty.call(validators, elementName)) {\n return validators[elementName];\n }\n return validators[cleanElementName(elementName, validators)] || {};\n};\nvar validateForm = function validateForm(form, validators) {\n var valid = true;\n form.trigger('form:validate:before.ClientSideValidations');\n form.find(ClientSideValidations.selectors.validate_inputs).each(function () {\n if (!$(this).isValid(validators)) {\n valid = false;\n }\n return true;\n });\n if (valid) {\n form.trigger('form:validate:pass.ClientSideValidations');\n } else {\n form.trigger('form:validate:fail.ClientSideValidations');\n }\n form.trigger('form:validate:after.ClientSideValidations');\n return valid;\n};\nvar passElement = function passElement(element) {\n element.trigger('element:validate:pass.ClientSideValidations').data('valid', null);\n};\nvar failElement = function failElement(element, message) {\n element.trigger('element:validate:fail.ClientSideValidations', message).data('valid', false);\n};\nvar afterValidate = function afterValidate(element) {\n return element.trigger('element:validate:after.ClientSideValidations').data('valid') !== false;\n};\nvar executeValidator = function executeValidator(validatorFunctions, validatorFunction, validatorOptions, element) {\n for (var validatorOption in validatorOptions) {\n if (!validatorOptions[validatorOption]) {\n continue;\n }\n var message = validatorFunction.call(validatorFunctions, element, validatorOptions[validatorOption]);\n if (message) {\n failElement(element, message);\n return false;\n }\n }\n return true;\n};\nvar executeValidators = function executeValidators(validatorFunctions, element, validators) {\n for (var validator in validators) {\n if (!validatorFunctions[validator]) {\n continue;\n }\n if (!executeValidator(validatorFunctions, validatorFunctions[validator], validators[validator], element)) {\n return false;\n }\n }\n return true;\n};\nvar isMarkedForDestroy = function isMarkedForDestroy(element) {\n if (element.attr('name').search(/\\[([^\\]]*?)\\]$/) >= 0) {\n var destroyInputName = element.attr('name').replace(/\\[([^\\]]*?)\\]$/, '[_destroy]');\n if ($(\"input[name='\" + destroyInputName + \"']\").val() === '1') {\n return true;\n }\n }\n return false;\n};\nvar executeAllValidators = function executeAllValidators(element, validators) {\n if (element.data('changed') === false || element.prop('disabled')) {\n return;\n }\n element.data('changed', false);\n if (executeValidators(ClientSideValidations.validators.all(), element, validators)) {\n passElement(element);\n }\n};\nvar validateElement = function validateElement(element, validators) {\n element.trigger('element:validate:before.ClientSideValidations');\n if (isMarkedForDestroy(element)) {\n passElement(element);\n } else {\n executeAllValidators(element, validators);\n }\n return afterValidate(element);\n};\nif (!window.ClientSideValidations) {\n window.ClientSideValidations = ClientSideValidations;\n if (!isAMD() && !isCommonJS()) {\n ClientSideValidations.start();\n }\n}\nfunction isAMD() {\n return typeof define === 'function' && define.amd; // eslint-disable-line no-undef\n}\n\nfunction isCommonJS() {\n return (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined'; // eslint-disable-line no-undef\n}\n\nexport default ClientSideValidations;","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","/**\n * Javascript behaviors for Filterrific.\n * http://filterrific.clearcove.ca\n *\n * Requires jQuery 1.7.0 or later.\n *\n * Released under the MIT license\n *\n */\n// Create global Filterrific namespace\nif (typeof Filterrific === 'undefined') {\n var Filterrific = {};\n}\n\n// Define function to submit Filterrific filter form\nFilterrific.submitFilterForm = function(){\n //console.log(\"form field changed\")\n var form = $(this).parents(\"form\"),\n url = form.attr(\"action\");\n // send before event\n $(form).trigger('loadingFilterrificResults');\n // turn on spinner\n //console.log(\"display loading table\")\n $('.loading-table').show();\n $('.results-table').hide();\n // Submit ajax request\n $.ajax({\n url: url,\n data: form.serialize(),\n type: 'GET',\n dataType: 'script'\n }).done(function( msg ) {\n // send after event\n $(form).trigger('loadedFilterrificResults');\n $('.results-table').show();\n $('.loading-table').hide();\n });\n};\n//\n// Embed jquery.observe_field.js to observe Filterrific filter inputs\n//\n// Copied from https://github.com/splendeo/jquery.observe_field\n// Wrap in immediately invoked function for compatibility with other js libraries\n//\n(function($) {\n\n $.fn.filterrific_observe_field = function(frequency, callback) {\n frequency = frequency * 1000; // translate to milliseconds\n return this.each(function(){\n var $this = $(this);\n var prev = $this.val();\n var check = function() {\n if(removed()){ // if removed clear the interval and don't fire the callback\n if(ti) clearInterval(ti);\n return;\n }\n var val = $this.val();\n if(prev != val){\n prev = val;\n $this.map(callback); // invokes the callback on $this\n }\n };\n var removed = function() {\n return $this.closest('html').length == 0\n };\n var reset = function() {\n if(ti){\n clearInterval(ti);\n ti = setInterval(check, frequency);\n }\n };\n check();\n var ti = setInterval(check, frequency); // invoke check periodically\n // reset counter after user interaction\n $this.bind('keyup click mousemove', reset); //mousemove is for selects\n });\n };\n})(jQuery);\nFilterrific.init = function() {\n console.log(\"Filterrific started\")\n // Add change event handler to all Filterrific filter inputs.\n $('#filterrific_filter').on(\n \"change\",\n \":input\",\n Filterrific.submitFilterForm\n );\n\n // Add periodic observer to selected inputs.\n // Use this for text fields you want to observe for change, e.g., a search input.\n $(\".filterrific-periodically-observed\").filterrific_observe_field(\n 0.5,\n Filterrific.submitFilterForm\n );\n};\n\nwindow.initFilterrific = function(){\n Filterrific.init();\n}\n\n// Initialize event observers on document ready and turbolinks page:load\n$(document).on('turbo:load', function() {\n initFilterrific();\n});","import Tagify from '@yaireo/tagify'\nimport \"tempusdominus-bootstrap-4\"\n//import Coloris from \"@melloware/coloris\"\nimport 'vanilla-icon-picker/dist/themes/default.min.css'\nimport IconPicker from 'vanilla-icon-picker'\n\n\n$(document).on('turbo:load', function() {\n tagify()\n});\n\n// Icon Picker - Compatibility issues with stimulus (doesn't load font-awesome icons) so adding here.\nwindow.initIconPicker = function(){\n const button = document.querySelector('.btn-icon-picker');\n\n // Check if the icon picker has already been initialized\n if (button.dataset.iconPickerInitialized) {\n return;\n }\n\n console.log('initIconPicker')\n // Icon picker with `default` theme\n const iconPickerButton = new IconPicker(button, {\n theme: 'default',\n iconSource: ['FontAwesome Solid 6', 'FontAwesome Regular 6'],\n closeOnSelect: true,\n defaultValue: \"fas fa-comment\",\n i18n: {\n 'text:title': 'Choose an icon',\n 'input:placeholder': 'Search icons…'\n }\n });\n\n const iconElementButton = document.querySelector('.icon-selected-text');\n\n iconPickerButton.on('select', (icon) => {\n iconElementButton.innerHTML = `Icon selected name: <b>${icon.name}</b> & value: <b>${icon.value}</b>`;\n });\n\n // Mark the icon picker as initialized\n button.dataset.iconPickerInitialized = true;\n}\n\n\nconst tagify = function() {\n // Tagify (frontend for tag fields)\n window.startTagify = function() {\n // The DOM element you wish to replace with Tagify\n var input = document.querySelector('.tagifyField');\n var tagify = new Tagify(input, {\n originalInputValueFormat: valuesArr => valuesArr.map(item => item.value).join(','),\n enforceWhitelist : false,\n whitelist : [],\n dropdown : {\n classname : \"color-blue\",\n enabled : 0, // show the dropdown immediately on focus\n maxItems : 5,\n position : \"text\", // place the dropdown near the typed text\n closeOnSelect : false, // keep the dropdown open after selecting a suggestion\n highlightFirst: true\n }\n });\n };\n startTagify()\n}\n\n// Affiliate Payment Form: Show and hide fields based on payment_type select.\n$(document).on('turbo:load', function() {\n $('.affiliate_payment').hide();\n $('#ptype').change(function() {\n $('.affiliate_payment_box').hide();\n $('#affiliate_payment_' + $(this).val()).show();\n });\n});\n\n$(document).on('turbo:load', function() {\n var current_time = new Date();\n var start_of_day = moment.utc().startOf('day');\n var end_of_day = moment.utc().endOf('day');\n\n // Datepicker\n $.fn.datetimepicker.Constructor.Default = $.extend({}, $.fn.datetimepicker.Constructor.Default, {\n debug: true,\n format: 'MMMM D YYYY, h:mm A',\n useCurrent: false,\n sideBySide: true,\n defaultDate: false,\n buttons: {\n showClose: true,\n showToday: false,\n showClear: false\n },\n icons: {\n time: 'far fa-clock',\n date: 'far fa-calendar-alt',\n up: 'far fa-chevron-circle-up',\n down: 'far fa-chevron-circle-down',\n previous: 'far fa-caret-circle-left',\n next: 'far fa-caret-circle-right',\n today: 'far fa-calendar-check',\n clear: 'far fa-delete',\n close: 'fal fa-times-circle'\n } });\n\n // Date Range Fields\n $('#datetime-range-start').datetimepicker({\n maxDate: current_time,\n });\n\n $('#datetime-range-end').datetimepicker({\n maxDate: current_time,\n });\n\n $(\"#datetime-range-start\").on(\"change.datetimepicker\", function (e) {\n $('#datetime-range-end').datetimepicker('minDate', e.date);\n });\n\n $(\"#datetime-range-end\").on(\"change.datetimepicker\", function (e) {\n $('#datetime-range-start').datetimepicker('maxDate', e.date);\n });\n\n});\n// Show password helper (required format) on form field click\n$(document).on('turbo:load', function() {\n $(\"#user_password\").on('click', function(e){\n $('.password-helper').show();\n });\n});\n\n// Frontpage POTD email toggle\n$(document).on('turbo:load', function() {\n let status = $('#potd_status').data('potd')\n if (status == true){\n $('#email_potd').bootstrapToggle('on')\n }else {\n $('#email_potd').bootstrapToggle('off')\n }\n});\n\nwindow.toggleShareLink = function(){\n $('.urlButton').on('click', function(){\n let shareUrl = $(this).attr(\"data-url\")\n console.log(shareUrl)\n $('#shareableLink').val(shareUrl)\n $('.urlButton').removeClass('active')\n $(this).addClass('active')\n });\n};\n\n$(document).on('turbo:load', function() {\n toggleShareLink();\n});\n","/*!@preserve\r\n * Tempus Dominus Bootstrap4 v5.39.0 (https://tempusdominus.github.io/bootstrap-4/)\r\n * Copyright 2016-2020 Jonathan Peterson and contributors\r\n * Licensed under MIT (https://github.com/tempusdominus/bootstrap-3/blob/master/LICENSE)\r\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Tempus Dominus Bootstrap4\\'s requires jQuery. jQuery must be included before Tempus Dominus Bootstrap4\\'s JavaScript.');\n}\n+function ($) {\n var version = $.fn.jquery.split(' ')[0].split('.');\n if (version[0] < 2 && version[1] < 9 || version[0] === 1 && version[1] === 9 && version[2] < 1 || version[0] >= 4) {\n throw new Error('Tempus Dominus Bootstrap4\\'s requires at least jQuery v3.0.0 but less than v4.0.0');\n }\n}(jQuery);\nif (typeof moment === 'undefined') {\n throw new Error('Tempus Dominus Bootstrap4\\'s requires moment.js. Moment.js must be included before Tempus Dominus Bootstrap4\\'s JavaScript.');\n}\nvar version = moment.version.split('.');\nif (version[0] <= 2 && version[1] < 17 || version[0] >= 3) {\n throw new Error('Tempus Dominus Bootstrap4\\'s requires at least moment.js v2.17.0 but less than v3.0.0');\n}\n+function () {\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\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 function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n // ReSharper disable once InconsistentNaming\n var DateTimePicker = function ($, moment) {\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n function isValidDate(date) {\n return Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());\n }\n function isValidDateTimeStr(str) {\n return isValidDate(new Date(str));\n } // ReSharper disable InconsistentNaming\n\n var trim = function trim(str) {\n return str.replace(/(^\\s+)|(\\s+$)/g, '');\n },\n NAME = 'datetimepicker',\n DATA_KEY = \"\" + NAME,\n EVENT_KEY = \".\" + DATA_KEY,\n DATA_API_KEY = '.data-api',\n Selector = {\n DATA_TOGGLE: \"[data-toggle=\\\"\" + DATA_KEY + \"\\\"]\"\n },\n ClassName = {\n INPUT: NAME + \"-input\"\n },\n Event = {\n CHANGE: \"change\" + EVENT_KEY,\n BLUR: \"blur\" + EVENT_KEY,\n KEYUP: \"keyup\" + EVENT_KEY,\n KEYDOWN: \"keydown\" + EVENT_KEY,\n FOCUS: \"focus\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY,\n //emitted\n UPDATE: \"update\" + EVENT_KEY,\n ERROR: \"error\" + EVENT_KEY,\n HIDE: \"hide\" + EVENT_KEY,\n SHOW: \"show\" + EVENT_KEY\n },\n DatePickerModes = [{\n CLASS_NAME: 'days',\n NAV_FUNCTION: 'M',\n NAV_STEP: 1\n }, {\n CLASS_NAME: 'months',\n NAV_FUNCTION: 'y',\n NAV_STEP: 1\n }, {\n CLASS_NAME: 'years',\n NAV_FUNCTION: 'y',\n NAV_STEP: 10\n }, {\n CLASS_NAME: 'decades',\n NAV_FUNCTION: 'y',\n NAV_STEP: 100\n }],\n KeyMap = {\n 'up': 38,\n 38: 'up',\n 'down': 40,\n 40: 'down',\n 'left': 37,\n 37: 'left',\n 'right': 39,\n 39: 'right',\n 'tab': 9,\n 9: 'tab',\n 'escape': 27,\n 27: 'escape',\n 'enter': 13,\n 13: 'enter',\n 'pageUp': 33,\n 33: 'pageUp',\n 'pageDown': 34,\n 34: 'pageDown',\n 'shift': 16,\n 16: 'shift',\n 'control': 17,\n 17: 'control',\n 'space': 32,\n 32: 'space',\n 't': 84,\n 84: 't',\n 'delete': 46,\n 46: 'delete'\n },\n ViewModes = ['times', 'days', 'months', 'years', 'decades'],\n keyState = {},\n keyPressHandled = {},\n optionsSortMap = {\n timeZone: -39,\n format: -38,\n dayViewHeaderFormat: -37,\n extraFormats: -36,\n stepping: -35,\n minDate: -34,\n maxDate: -33,\n useCurrent: -32,\n collapse: -31,\n locale: -30,\n defaultDate: -29,\n disabledDates: -28,\n enabledDates: -27,\n icons: -26,\n tooltips: -25,\n useStrict: -24,\n sideBySide: -23,\n daysOfWeekDisabled: -22,\n calendarWeeks: -21,\n viewMode: -20,\n toolbarPlacement: -19,\n buttons: -18,\n widgetPositioning: -17,\n widgetParent: -16,\n ignoreReadonly: -15,\n keepOpen: -14,\n focusOnShow: -13,\n inline: -12,\n keepInvalid: -11,\n keyBinds: -10,\n debug: -9,\n allowInputToggle: -8,\n disabledTimeIntervals: -7,\n disabledHours: -6,\n enabledHours: -5,\n viewDate: -4,\n allowMultidate: -3,\n multidateSeparator: -2,\n updateOnlyThroughDateOption: -1,\n date: 1\n },\n defaultFeatherIcons = {\n time: 'clock',\n date: 'calendar',\n up: 'arrow-up',\n down: 'arrow-down',\n previous: 'arrow-left',\n next: 'arrow-right',\n today: 'arrow-down-circle',\n clear: 'trash-2',\n close: 'x'\n };\n function optionsSortFn(optionKeyA, optionKeyB) {\n if (optionsSortMap[optionKeyA] && optionsSortMap[optionKeyB]) {\n if (optionsSortMap[optionKeyA] < 0 && optionsSortMap[optionKeyB] < 0) {\n return Math.abs(optionsSortMap[optionKeyB]) - Math.abs(optionsSortMap[optionKeyA]);\n } else if (optionsSortMap[optionKeyA] < 0) {\n return -1;\n } else if (optionsSortMap[optionKeyB] < 0) {\n return 1;\n }\n return optionsSortMap[optionKeyA] - optionsSortMap[optionKeyB];\n } else if (optionsSortMap[optionKeyA]) {\n return optionsSortMap[optionKeyA];\n } else if (optionsSortMap[optionKeyB]) {\n return optionsSortMap[optionKeyB];\n }\n return 0;\n }\n var Default = {\n timeZone: '',\n format: false,\n dayViewHeaderFormat: 'MMMM YYYY',\n extraFormats: false,\n stepping: 1,\n minDate: false,\n maxDate: false,\n useCurrent: true,\n collapse: true,\n locale: moment.locale(),\n defaultDate: false,\n disabledDates: false,\n enabledDates: false,\n icons: {\n type: 'class',\n time: 'fa fa-clock-o',\n date: 'fa fa-calendar',\n up: 'fa fa-arrow-up',\n down: 'fa fa-arrow-down',\n previous: 'fa fa-chevron-left',\n next: 'fa fa-chevron-right',\n today: 'fa fa-calendar-check-o',\n clear: 'fa fa-trash',\n close: 'fa fa-times'\n },\n tooltips: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n togglePeriod: 'Toggle Period',\n selectTime: 'Select Time',\n selectDate: 'Select Date'\n },\n useStrict: false,\n sideBySide: false,\n daysOfWeekDisabled: false,\n calendarWeeks: false,\n viewMode: 'days',\n toolbarPlacement: 'default',\n buttons: {\n showToday: false,\n showClear: false,\n showClose: false\n },\n widgetPositioning: {\n horizontal: 'auto',\n vertical: 'auto'\n },\n widgetParent: null,\n readonly: false,\n ignoreReadonly: false,\n keepOpen: false,\n focusOnShow: true,\n inline: false,\n keepInvalid: false,\n keyBinds: {\n up: function up() {\n if (!this.widget) {\n return false;\n }\n var d = this._dates[0] || this.getMoment();\n if (this.widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(7, 'd'));\n } else {\n this.date(d.clone().add(this.stepping(), 'm'));\n }\n return true;\n },\n down: function down() {\n if (!this.widget) {\n this.show();\n return false;\n }\n var d = this._dates[0] || this.getMoment();\n if (this.widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(7, 'd'));\n } else {\n this.date(d.clone().subtract(this.stepping(), 'm'));\n }\n return true;\n },\n 'control up': function controlUp() {\n if (!this.widget) {\n return false;\n }\n var d = this._dates[0] || this.getMoment();\n if (this.widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'y'));\n } else {\n this.date(d.clone().add(1, 'h'));\n }\n return true;\n },\n 'control down': function controlDown() {\n if (!this.widget) {\n return false;\n }\n var d = this._dates[0] || this.getMoment();\n if (this.widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'y'));\n } else {\n this.date(d.clone().subtract(1, 'h'));\n }\n return true;\n },\n left: function left() {\n if (!this.widget) {\n return false;\n }\n var d = this._dates[0] || this.getMoment();\n if (this.widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'd'));\n }\n return true;\n },\n right: function right() {\n if (!this.widget) {\n return false;\n }\n var d = this._dates[0] || this.getMoment();\n if (this.widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'd'));\n }\n return true;\n },\n pageUp: function pageUp() {\n if (!this.widget) {\n return false;\n }\n var d = this._dates[0] || this.getMoment();\n if (this.widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'M'));\n }\n return true;\n },\n pageDown: function pageDown() {\n if (!this.widget) {\n return false;\n }\n var d = this._dates[0] || this.getMoment();\n if (this.widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'M'));\n }\n return true;\n },\n enter: function enter() {\n if (!this.widget) {\n return false;\n }\n this.hide();\n return true;\n },\n escape: function escape() {\n if (!this.widget) {\n return false;\n }\n this.hide();\n return true;\n },\n 'control space': function controlSpace() {\n if (!this.widget) {\n return false;\n }\n if (this.widget.find('.timepicker').is(':visible')) {\n this.widget.find('.btn[data-action=\"togglePeriod\"]').click();\n }\n return true;\n },\n t: function t() {\n if (!this.widget) {\n return false;\n }\n this.date(this.getMoment());\n return true;\n },\n 'delete': function _delete() {\n if (!this.widget) {\n return false;\n }\n this.clear();\n return true;\n }\n },\n debug: false,\n allowInputToggle: false,\n disabledTimeIntervals: false,\n disabledHours: false,\n enabledHours: false,\n viewDate: false,\n allowMultidate: false,\n multidateSeparator: ', ',\n updateOnlyThroughDateOption: false,\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200\n }; // ReSharper restore InconsistentNaming\n // ReSharper disable once DeclarationHides\n // ReSharper disable once InconsistentNaming\n\n var DateTimePicker = /*#__PURE__*/function () {\n /** @namespace eData.dateOptions */\n\n /** @namespace moment.tz */\n function DateTimePicker(element, options) {\n this._options = this._getOptions(options);\n this._element = element;\n this._dates = [];\n this._datesFormatted = [];\n this._viewDate = null;\n this.unset = true;\n this.component = false;\n this.widget = false;\n this.use24Hours = null;\n this.actualFormat = null;\n this.parseFormats = null;\n this.currentViewMode = null;\n this.MinViewModeNumber = 0;\n this.isInitFormatting = false;\n this.isInit = false;\n this.isDateUpdateThroughDateOptionFromClientCode = false;\n this.hasInitDate = false;\n this.initDate = void 0;\n this._notifyChangeEventContext = void 0;\n this._currentPromptTimeTimeout = null;\n this._int();\n }\n /**\r\n * @return {string}\r\n */\n\n var _proto = DateTimePicker.prototype;\n\n //private\n _proto._int = function _int() {\n this.isInit = true;\n var targetInput = this._element.data('target-input');\n if (this._element.is('input')) {\n this.input = this._element;\n } else if (targetInput !== undefined) {\n if (targetInput === 'nearest') {\n this.input = this._element.find('input');\n } else {\n this.input = $(targetInput);\n }\n }\n this._dates = [];\n this._dates[0] = this.getMoment();\n this._viewDate = this.getMoment().clone();\n $.extend(true, this._options, this._dataToOptions());\n this.hasInitDate = false;\n this.initDate = void 0;\n this.options(this._options);\n this.isInitFormatting = true;\n this._initFormatting();\n this.isInitFormatting = false;\n if (this.input !== undefined && this.input.is('input') && this.input.val().trim().length !== 0) {\n this._setValue(this._parseInputDate(this.input.val().trim()), 0);\n } else if (this._options.defaultDate && this.input !== undefined && this.input.attr('placeholder') === undefined) {\n this._setValue(this._options.defaultDate, 0);\n }\n if (this.hasInitDate) {\n this.date(this.initDate);\n }\n if (this._options.inline) {\n this.show();\n }\n this.isInit = false;\n };\n _proto._update = function _update() {\n if (!this.widget) {\n return;\n }\n this._fillDate();\n this._fillTime();\n };\n _proto._setValue = function _setValue(targetMoment, index) {\n var noIndex = typeof index === 'undefined',\n isClear = !targetMoment && noIndex,\n isDateUpdateThroughDateOptionFromClientCode = this.isDateUpdateThroughDateOptionFromClientCode,\n isNotAllowedProgrammaticUpdate = !this.isInit && this._options.updateOnlyThroughDateOption && !isDateUpdateThroughDateOptionFromClientCode;\n var outpValue = '',\n isInvalid = false,\n oldDate = this.unset ? null : this._dates[index];\n if (!oldDate && !this.unset && noIndex && isClear) {\n oldDate = this._dates[this._dates.length - 1];\n } // case of calling setValue(null or false)\n\n if (!targetMoment) {\n if (isNotAllowedProgrammaticUpdate) {\n this._notifyEvent({\n type: DateTimePicker.Event.CHANGE,\n date: targetMoment,\n oldDate: oldDate,\n isClear: isClear,\n isInvalid: isInvalid,\n isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\n isInit: this.isInit\n });\n return;\n }\n if (!this._options.allowMultidate || this._dates.length === 1 || isClear) {\n this.unset = true;\n this._dates = [];\n this._datesFormatted = [];\n } else {\n outpValue = \"\" + this._element.data('date') + this._options.multidateSeparator;\n outpValue = oldDate && outpValue.replace(\"\" + oldDate.format(this.actualFormat) + this._options.multidateSeparator, '').replace(\"\" + this._options.multidateSeparator + this._options.multidateSeparator, '').replace(new RegExp(escapeRegExp(this._options.multidateSeparator) + \"\\\\s*$\"), '') || '';\n this._dates.splice(index, 1);\n this._datesFormatted.splice(index, 1);\n }\n outpValue = trim(outpValue);\n if (this.input !== undefined) {\n this.input.val(outpValue);\n this.input.trigger('input');\n }\n this._element.data('date', outpValue);\n this._notifyEvent({\n type: DateTimePicker.Event.CHANGE,\n date: false,\n oldDate: oldDate,\n isClear: isClear,\n isInvalid: isInvalid,\n isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\n isInit: this.isInit\n });\n this._update();\n return;\n }\n targetMoment = targetMoment.clone().locale(this._options.locale);\n if (this._hasTimeZone()) {\n targetMoment.tz(this._options.timeZone);\n }\n if (this._options.stepping !== 1) {\n targetMoment.minutes(Math.round(targetMoment.minutes() / this._options.stepping) * this._options.stepping).seconds(0);\n }\n if (this._isValid(targetMoment)) {\n if (isNotAllowedProgrammaticUpdate) {\n this._notifyEvent({\n type: DateTimePicker.Event.CHANGE,\n date: targetMoment.clone(),\n oldDate: oldDate,\n isClear: isClear,\n isInvalid: isInvalid,\n isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\n isInit: this.isInit\n });\n return;\n }\n this._dates[index] = targetMoment;\n this._datesFormatted[index] = targetMoment.format('YYYY-MM-DD');\n this._viewDate = targetMoment.clone();\n if (this._options.allowMultidate && this._dates.length > 1) {\n for (var i = 0; i < this._dates.length; i++) {\n outpValue += \"\" + this._dates[i].format(this.actualFormat) + this._options.multidateSeparator;\n }\n outpValue = outpValue.replace(new RegExp(this._options.multidateSeparator + \"\\\\s*$\"), '');\n } else {\n outpValue = this._dates[index].format(this.actualFormat);\n }\n outpValue = trim(outpValue);\n if (this.input !== undefined) {\n this.input.val(outpValue);\n this.input.trigger('input');\n }\n this._element.data('date', outpValue);\n this.unset = false;\n this._update();\n this._notifyEvent({\n type: DateTimePicker.Event.CHANGE,\n date: this._dates[index].clone(),\n oldDate: oldDate,\n isClear: isClear,\n isInvalid: isInvalid,\n isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\n isInit: this.isInit\n });\n } else {\n isInvalid = true;\n if (!this._options.keepInvalid) {\n if (this.input !== undefined) {\n this.input.val(\"\" + (this.unset ? '' : this._dates[index].format(this.actualFormat)));\n this.input.trigger('input');\n }\n } else {\n this._notifyEvent({\n type: DateTimePicker.Event.CHANGE,\n date: targetMoment,\n oldDate: oldDate,\n isClear: isClear,\n isInvalid: isInvalid,\n isDateUpdateThroughDateOptionFromClientCode: isDateUpdateThroughDateOptionFromClientCode,\n isInit: this.isInit\n });\n }\n this._notifyEvent({\n type: DateTimePicker.Event.ERROR,\n date: targetMoment,\n oldDate: oldDate\n });\n }\n };\n _proto._change = function _change(e) {\n var val = $(e.target).val().trim(),\n parsedDate = val ? this._parseInputDate(val) : null;\n this._setValue(parsedDate, 0);\n e.stopImmediatePropagation();\n return false;\n } //noinspection JSMethodCanBeStatic\n ;\n\n _proto._getOptions = function _getOptions(options) {\n options = $.extend(true, {}, Default, options && options.icons && options.icons.type === 'feather' ? {\n icons: defaultFeatherIcons\n } : {}, options);\n return options;\n };\n _proto._hasTimeZone = function _hasTimeZone() {\n return moment.tz !== undefined && this._options.timeZone !== undefined && this._options.timeZone !== null && this._options.timeZone !== '';\n };\n _proto._isEnabled = function _isEnabled(granularity) {\n if (typeof granularity !== 'string' || granularity.length > 1) {\n throw new TypeError('isEnabled expects a single character string parameter');\n }\n switch (granularity) {\n case 'y':\n return this.actualFormat.indexOf('Y') !== -1;\n case 'M':\n return this.actualFormat.indexOf('M') !== -1;\n case 'd':\n return this.actualFormat.toLowerCase().indexOf('d') !== -1;\n case 'h':\n case 'H':\n return this.actualFormat.toLowerCase().indexOf('h') !== -1;\n case 'm':\n return this.actualFormat.indexOf('m') !== -1;\n case 's':\n return this.actualFormat.indexOf('s') !== -1;\n case 'a':\n case 'A':\n return this.actualFormat.toLowerCase().indexOf('a') !== -1;\n default:\n return false;\n }\n };\n _proto._hasTime = function _hasTime() {\n return this._isEnabled('h') || this._isEnabled('m') || this._isEnabled('s');\n };\n _proto._hasDate = function _hasDate() {\n return this._isEnabled('y') || this._isEnabled('M') || this._isEnabled('d');\n };\n _proto._dataToOptions = function _dataToOptions() {\n var eData = this._element.data();\n var dataOptions = {};\n if (eData.dateOptions && eData.dateOptions instanceof Object) {\n dataOptions = $.extend(true, dataOptions, eData.dateOptions);\n }\n $.each(this._options, function (key) {\n var attributeName = \"date\" + key.charAt(0).toUpperCase() + key.slice(1); //todo data api key\n\n if (eData[attributeName] !== undefined) {\n dataOptions[key] = eData[attributeName];\n } else {\n delete dataOptions[key];\n }\n });\n return dataOptions;\n };\n _proto._format = function _format() {\n return this._options.format || 'YYYY-MM-DD HH:mm';\n };\n _proto._areSameDates = function _areSameDates(a, b) {\n var format = this._format();\n return a && b && (a.isSame(b) || moment(a.format(format), format).isSame(moment(b.format(format), format)));\n };\n _proto._notifyEvent = function _notifyEvent(e) {\n if (e.type === DateTimePicker.Event.CHANGE) {\n this._notifyChangeEventContext = this._notifyChangeEventContext || 0;\n this._notifyChangeEventContext++;\n if (e.date && this._areSameDates(e.date, e.oldDate) || !e.isClear && !e.date && !e.oldDate || this._notifyChangeEventContext > 1) {\n this._notifyChangeEventContext = void 0;\n return;\n }\n this._handlePromptTimeIfNeeded(e);\n }\n this._element.trigger(e);\n this._notifyChangeEventContext = void 0;\n };\n _proto._handlePromptTimeIfNeeded = function _handlePromptTimeIfNeeded(e) {\n if (this._options.promptTimeOnDateChange) {\n if (!e.oldDate && this._options.useCurrent) {\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n return;\n } else if (e.oldDate && e.date && (e.oldDate.format('YYYY-MM-DD') === e.date.format('YYYY-MM-DD') || e.oldDate.format('YYYY-MM-DD') !== e.date.format('YYYY-MM-DD') && e.oldDate.format('HH:mm:ss') !== e.date.format('HH:mm:ss'))) {\n // Date didn't change (time did) or date changed because time did.\n return;\n }\n var that = this;\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(function () {\n if (that.widget) {\n that.widget.find('[data-action=\"togglePicker\"]').click();\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n };\n _proto._viewUpdate = function _viewUpdate(e) {\n if (e === 'y') {\n e = 'YYYY';\n }\n this._notifyEvent({\n type: DateTimePicker.Event.UPDATE,\n change: e,\n viewDate: this._viewDate.clone()\n });\n };\n _proto._showMode = function _showMode(dir) {\n if (!this.widget) {\n return;\n }\n if (dir) {\n this.currentViewMode = Math.max(this.MinViewModeNumber, Math.min(3, this.currentViewMode + dir));\n }\n this.widget.find('.datepicker > div').hide().filter(\".datepicker-\" + DatePickerModes[this.currentViewMode].CLASS_NAME).show();\n };\n _proto._isInDisabledDates = function _isInDisabledDates(testDate) {\n return this._options.disabledDates[testDate.format('YYYY-MM-DD')] === true;\n };\n _proto._isInEnabledDates = function _isInEnabledDates(testDate) {\n return this._options.enabledDates[testDate.format('YYYY-MM-DD')] === true;\n };\n _proto._isInDisabledHours = function _isInDisabledHours(testDate) {\n return this._options.disabledHours[testDate.format('H')] === true;\n };\n _proto._isInEnabledHours = function _isInEnabledHours(testDate) {\n return this._options.enabledHours[testDate.format('H')] === true;\n };\n _proto._isValid = function _isValid(targetMoment, granularity) {\n if (!targetMoment || !targetMoment.isValid()) {\n return false;\n }\n if (this._options.disabledDates && granularity === 'd' && this._isInDisabledDates(targetMoment)) {\n return false;\n }\n if (this._options.enabledDates && granularity === 'd' && !this._isInEnabledDates(targetMoment)) {\n return false;\n }\n if (this._options.minDate && targetMoment.isBefore(this._options.minDate, granularity)) {\n return false;\n }\n if (this._options.maxDate && targetMoment.isAfter(this._options.maxDate, granularity)) {\n return false;\n }\n if (this._options.daysOfWeekDisabled && granularity === 'd' && this._options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1) {\n return false;\n }\n if (this._options.disabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && this._isInDisabledHours(targetMoment)) {\n return false;\n }\n if (this._options.enabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && !this._isInEnabledHours(targetMoment)) {\n return false;\n }\n if (this._options.disabledTimeIntervals && (granularity === 'h' || granularity === 'm' || granularity === 's')) {\n var found = false;\n $.each(this._options.disabledTimeIntervals, function () {\n if (targetMoment.isBetween(this[0], this[1])) {\n found = true;\n return false;\n }\n });\n if (found) {\n return false;\n }\n }\n return true;\n };\n _proto._parseInputDate = function _parseInputDate(inputDate, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$isPickerShow = _ref.isPickerShow,\n isPickerShow = _ref$isPickerShow === void 0 ? false : _ref$isPickerShow;\n if (this._options.parseInputDate === undefined || isPickerShow) {\n if (!moment.isMoment(inputDate)) {\n inputDate = this.getMoment(inputDate);\n }\n } else {\n inputDate = this._options.parseInputDate(inputDate);\n } //inputDate.locale(this.options.locale);\n\n return inputDate;\n };\n _proto._keydown = function _keydown(e) {\n var handler = null,\n index,\n index2,\n keyBindKeys,\n allModifiersPressed;\n var pressedKeys = [],\n pressedModifiers = {},\n currentKey = e.which,\n pressed = 'p';\n keyState[currentKey] = pressed;\n for (index in keyState) {\n if (keyState.hasOwnProperty(index) && keyState[index] === pressed) {\n pressedKeys.push(index);\n if (parseInt(index, 10) !== currentKey) {\n pressedModifiers[index] = true;\n }\n }\n }\n for (index in this._options.keyBinds) {\n if (this._options.keyBinds.hasOwnProperty(index) && typeof this._options.keyBinds[index] === 'function') {\n keyBindKeys = index.split(' ');\n if (keyBindKeys.length === pressedKeys.length && KeyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1]) {\n allModifiersPressed = true;\n for (index2 = keyBindKeys.length - 2; index2 >= 0; index2--) {\n if (!(KeyMap[keyBindKeys[index2]] in pressedModifiers)) {\n allModifiersPressed = false;\n break;\n }\n }\n if (allModifiersPressed) {\n handler = this._options.keyBinds[index];\n break;\n }\n }\n }\n }\n if (handler) {\n if (handler.call(this)) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n } //noinspection JSMethodCanBeStatic,SpellCheckingInspection\n ;\n\n _proto._keyup = function _keyup(e) {\n keyState[e.which] = 'r';\n if (keyPressHandled[e.which]) {\n keyPressHandled[e.which] = false;\n e.stopPropagation();\n e.preventDefault();\n }\n };\n _proto._indexGivenDates = function _indexGivenDates(givenDatesArray) {\n // Store given enabledDates and disabledDates as keys.\n // This way we can check their existence in O(1) time instead of looping through whole array.\n // (for example: options.enabledDates['2014-02-27'] === true)\n var givenDatesIndexed = {},\n self = this;\n $.each(givenDatesArray, function () {\n var dDate = self._parseInputDate(this);\n if (dDate.isValid()) {\n givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true;\n }\n });\n return Object.keys(givenDatesIndexed).length ? givenDatesIndexed : false;\n };\n _proto._indexGivenHours = function _indexGivenHours(givenHoursArray) {\n // Store given enabledHours and disabledHours as keys.\n // This way we can check their existence in O(1) time instead of looping through whole array.\n // (for example: options.enabledHours['2014-02-27'] === true)\n var givenHoursIndexed = {};\n $.each(givenHoursArray, function () {\n givenHoursIndexed[this] = true;\n });\n return Object.keys(givenHoursIndexed).length ? givenHoursIndexed : false;\n };\n _proto._initFormatting = function _initFormatting() {\n var format = this._options.format || 'L LT',\n self = this;\n this.actualFormat = format.replace(/(\\[[^\\[]*])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput) {\n return (self.isInitFormatting && self._options.date === null ? self.getMoment() : self._dates[0]).localeData().longDateFormat(formatInput) || formatInput; //todo taking the first date should be ok\n });\n\n this.parseFormats = this._options.extraFormats ? this._options.extraFormats.slice() : [];\n if (this.parseFormats.indexOf(format) < 0 && this.parseFormats.indexOf(this.actualFormat) < 0) {\n this.parseFormats.push(this.actualFormat);\n }\n this.use24Hours = this.actualFormat.toLowerCase().indexOf('a') < 1 && this.actualFormat.replace(/\\[.*?]/g, '').indexOf('h') < 1;\n if (this._isEnabled('y')) {\n this.MinViewModeNumber = 2;\n }\n if (this._isEnabled('M')) {\n this.MinViewModeNumber = 1;\n }\n if (this._isEnabled('d')) {\n this.MinViewModeNumber = 0;\n }\n this.currentViewMode = Math.max(this.MinViewModeNumber, this.currentViewMode);\n if (!this.unset) {\n this._setValue(this._dates[0], 0);\n }\n };\n _proto._getLastPickedDate = function _getLastPickedDate() {\n var lastPickedDate = this._dates[this._getLastPickedDateIndex()];\n if (!lastPickedDate && this._options.allowMultidate) {\n lastPickedDate = moment(new Date());\n }\n return lastPickedDate;\n };\n _proto._getLastPickedDateIndex = function _getLastPickedDateIndex() {\n return this._dates.length - 1;\n } //public\n ;\n\n _proto.getMoment = function getMoment(d) {\n var returnMoment;\n if (d === undefined || d === null) {\n // TODO: Should this use format?\n returnMoment = moment().clone().locale(this._options.locale);\n } else if (this._hasTimeZone()) {\n // There is a string to parse and a default time zone\n // parse with the tz function which takes a default time zone if it is not in the format string\n returnMoment = moment.tz(d, this.parseFormats, this._options.locale, this._options.useStrict, this._options.timeZone);\n } else {\n returnMoment = moment(d, this.parseFormats, this._options.locale, this._options.useStrict);\n }\n if (this._hasTimeZone()) {\n returnMoment.tz(this._options.timeZone);\n }\n return returnMoment;\n };\n _proto.toggle = function toggle() {\n return this.widget ? this.hide() : this.show();\n };\n _proto.readonly = function readonly(_readonly) {\n if (arguments.length === 0) {\n return this._options.readonly;\n }\n if (typeof _readonly !== 'boolean') {\n throw new TypeError('readonly() expects a boolean parameter');\n }\n this._options.readonly = _readonly;\n if (this.input !== undefined) {\n this.input.prop('readonly', this._options.readonly);\n }\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto.ignoreReadonly = function ignoreReadonly(_ignoreReadonly) {\n if (arguments.length === 0) {\n return this._options.ignoreReadonly;\n }\n if (typeof _ignoreReadonly !== 'boolean') {\n throw new TypeError('ignoreReadonly() expects a boolean parameter');\n }\n this._options.ignoreReadonly = _ignoreReadonly;\n };\n _proto.options = function options(newOptions) {\n if (arguments.length === 0) {\n return $.extend(true, {}, this._options);\n }\n if (!(newOptions instanceof Object)) {\n throw new TypeError('options() this.options parameter should be an object');\n }\n $.extend(true, this._options, newOptions);\n var self = this,\n optionsKeys = Object.keys(this._options).sort(optionsSortFn);\n $.each(optionsKeys, function (i, key) {\n var value = self._options[key];\n if (self[key] !== undefined) {\n if (self.isInit && key === 'date') {\n self.hasInitDate = true;\n self.initDate = value;\n return;\n }\n self[key](value);\n }\n });\n };\n _proto.date = function date(newDate, index) {\n index = index || 0;\n if (arguments.length === 0) {\n if (this.unset) {\n return null;\n }\n if (this._options.allowMultidate) {\n return this._dates.join(this._options.multidateSeparator);\n } else {\n return this._dates[index].clone();\n }\n }\n if (newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\n throw new TypeError('date() parameter must be one of [null, string, moment or Date]');\n }\n if (typeof newDate === 'string' && isValidDateTimeStr(newDate)) {\n newDate = new Date(newDate);\n }\n this._setValue(newDate === null ? null : this._parseInputDate(newDate), index);\n };\n _proto.updateOnlyThroughDateOption = function updateOnlyThroughDateOption(_updateOnlyThroughDateOption) {\n if (typeof _updateOnlyThroughDateOption !== 'boolean') {\n throw new TypeError('updateOnlyThroughDateOption() expects a boolean parameter');\n }\n this._options.updateOnlyThroughDateOption = _updateOnlyThroughDateOption;\n };\n _proto.format = function format(newFormat) {\n if (arguments.length === 0) {\n return this._options.format;\n }\n if (typeof newFormat !== 'string' && (typeof newFormat !== 'boolean' || newFormat !== false)) {\n throw new TypeError(\"format() expects a string or boolean:false parameter \" + newFormat);\n }\n this._options.format = newFormat;\n if (this.actualFormat) {\n this._initFormatting(); // reinitialize formatting\n }\n };\n\n _proto.timeZone = function timeZone(newZone) {\n if (arguments.length === 0) {\n return this._options.timeZone;\n }\n if (typeof newZone !== 'string') {\n throw new TypeError('newZone() expects a string parameter');\n }\n this._options.timeZone = newZone;\n };\n _proto.dayViewHeaderFormat = function dayViewHeaderFormat(newFormat) {\n if (arguments.length === 0) {\n return this._options.dayViewHeaderFormat;\n }\n if (typeof newFormat !== 'string') {\n throw new TypeError('dayViewHeaderFormat() expects a string parameter');\n }\n this._options.dayViewHeaderFormat = newFormat;\n };\n _proto.extraFormats = function extraFormats(formats) {\n if (arguments.length === 0) {\n return this._options.extraFormats;\n }\n if (formats !== false && !(formats instanceof Array)) {\n throw new TypeError('extraFormats() expects an array or false parameter');\n }\n this._options.extraFormats = formats;\n if (this.parseFormats) {\n this._initFormatting(); // reinit formatting\n }\n };\n\n _proto.disabledDates = function disabledDates(dates) {\n if (arguments.length === 0) {\n return this._options.disabledDates ? $.extend({}, this._options.disabledDates) : this._options.disabledDates;\n }\n if (!dates) {\n this._options.disabledDates = false;\n this._update();\n return true;\n }\n if (!(dates instanceof Array)) {\n throw new TypeError('disabledDates() expects an array parameter');\n }\n this._options.disabledDates = this._indexGivenDates(dates);\n this._options.enabledDates = false;\n this._update();\n };\n _proto.enabledDates = function enabledDates(dates) {\n if (arguments.length === 0) {\n return this._options.enabledDates ? $.extend({}, this._options.enabledDates) : this._options.enabledDates;\n }\n if (!dates) {\n this._options.enabledDates = false;\n this._update();\n return true;\n }\n if (!(dates instanceof Array)) {\n throw new TypeError('enabledDates() expects an array parameter');\n }\n this._options.enabledDates = this._indexGivenDates(dates);\n this._options.disabledDates = false;\n this._update();\n };\n _proto.daysOfWeekDisabled = function daysOfWeekDisabled(_daysOfWeekDisabled) {\n if (arguments.length === 0) {\n return this._options.daysOfWeekDisabled.splice(0);\n }\n if (typeof _daysOfWeekDisabled === 'boolean' && !_daysOfWeekDisabled) {\n this._options.daysOfWeekDisabled = false;\n this._update();\n return true;\n }\n if (!(_daysOfWeekDisabled instanceof Array)) {\n throw new TypeError('daysOfWeekDisabled() expects an array parameter');\n }\n this._options.daysOfWeekDisabled = _daysOfWeekDisabled.reduce(function (previousValue, currentValue) {\n currentValue = parseInt(currentValue, 10);\n if (currentValue > 6 || currentValue < 0 || isNaN(currentValue)) {\n return previousValue;\n }\n if (previousValue.indexOf(currentValue) === -1) {\n previousValue.push(currentValue);\n }\n return previousValue;\n }, []).sort();\n if (this._options.useCurrent && !this._options.keepInvalid) {\n for (var i = 0; i < this._dates.length; i++) {\n var tries = 0;\n while (!this._isValid(this._dates[i], 'd')) {\n this._dates[i].add(1, 'd');\n if (tries === 31) {\n throw 'Tried 31 times to find a valid date';\n }\n tries++;\n }\n this._setValue(this._dates[i], i);\n }\n }\n this._update();\n };\n _proto.maxDate = function maxDate(_maxDate) {\n if (arguments.length === 0) {\n return this._options.maxDate ? this._options.maxDate.clone() : this._options.maxDate;\n }\n if (typeof _maxDate === 'boolean' && _maxDate === false) {\n this._options.maxDate = false;\n this._update();\n return true;\n }\n if (typeof _maxDate === 'string') {\n if (_maxDate === 'now' || _maxDate === 'moment') {\n _maxDate = this.getMoment();\n }\n }\n var parsedDate = this._parseInputDate(_maxDate);\n if (!parsedDate.isValid()) {\n throw new TypeError(\"maxDate() Could not parse date parameter: \" + _maxDate);\n }\n if (this._options.minDate && parsedDate.isBefore(this._options.minDate)) {\n throw new TypeError(\"maxDate() date parameter is before this.options.minDate: \" + parsedDate.format(this.actualFormat));\n }\n this._options.maxDate = parsedDate;\n for (var i = 0; i < this._dates.length; i++) {\n if (this._options.useCurrent && !this._options.keepInvalid && this._dates[i].isAfter(_maxDate)) {\n this._setValue(this._options.maxDate, i);\n }\n }\n if (this._viewDate.isAfter(parsedDate)) {\n this._viewDate = parsedDate.clone().subtract(this._options.stepping, 'm');\n }\n this._update();\n };\n _proto.minDate = function minDate(_minDate) {\n if (arguments.length === 0) {\n return this._options.minDate ? this._options.minDate.clone() : this._options.minDate;\n }\n if (typeof _minDate === 'boolean' && _minDate === false) {\n this._options.minDate = false;\n this._update();\n return true;\n }\n if (typeof _minDate === 'string') {\n if (_minDate === 'now' || _minDate === 'moment') {\n _minDate = this.getMoment();\n }\n }\n var parsedDate = this._parseInputDate(_minDate);\n if (!parsedDate.isValid()) {\n throw new TypeError(\"minDate() Could not parse date parameter: \" + _minDate);\n }\n if (this._options.maxDate && parsedDate.isAfter(this._options.maxDate)) {\n throw new TypeError(\"minDate() date parameter is after this.options.maxDate: \" + parsedDate.format(this.actualFormat));\n }\n this._options.minDate = parsedDate;\n for (var i = 0; i < this._dates.length; i++) {\n if (this._options.useCurrent && !this._options.keepInvalid && this._dates[i].isBefore(_minDate)) {\n this._setValue(this._options.minDate, i);\n }\n }\n if (this._viewDate.isBefore(parsedDate)) {\n this._viewDate = parsedDate.clone().add(this._options.stepping, 'm');\n }\n this._update();\n };\n _proto.defaultDate = function defaultDate(_defaultDate) {\n if (arguments.length === 0) {\n return this._options.defaultDate ? this._options.defaultDate.clone() : this._options.defaultDate;\n }\n if (!_defaultDate) {\n this._options.defaultDate = false;\n return true;\n }\n if (typeof _defaultDate === 'string') {\n if (_defaultDate === 'now' || _defaultDate === 'moment') {\n _defaultDate = this.getMoment();\n } else {\n _defaultDate = this.getMoment(_defaultDate);\n }\n }\n var parsedDate = this._parseInputDate(_defaultDate);\n if (!parsedDate.isValid()) {\n throw new TypeError(\"defaultDate() Could not parse date parameter: \" + _defaultDate);\n }\n if (!this._isValid(parsedDate)) {\n throw new TypeError('defaultDate() date passed is invalid according to component setup validations');\n }\n this._options.defaultDate = parsedDate;\n if (this._options.defaultDate && this._options.inline || this.input !== undefined && this.input.val().trim() === '') {\n this._setValue(this._options.defaultDate, 0);\n }\n };\n _proto.locale = function locale(_locale) {\n if (arguments.length === 0) {\n return this._options.locale;\n }\n if (!moment.localeData(_locale)) {\n throw new TypeError(\"locale() locale \" + _locale + \" is not loaded from moment locales!\");\n }\n this._options.locale = _locale;\n for (var i = 0; i < this._dates.length; i++) {\n this._dates[i].locale(this._options.locale);\n }\n this._viewDate.locale(this._options.locale);\n if (this.actualFormat) {\n this._initFormatting(); // reinitialize formatting\n }\n\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto.stepping = function stepping(_stepping) {\n if (arguments.length === 0) {\n return this._options.stepping;\n }\n _stepping = parseInt(_stepping, 10);\n if (isNaN(_stepping) || _stepping < 1) {\n _stepping = 1;\n }\n this._options.stepping = _stepping;\n };\n _proto.useCurrent = function useCurrent(_useCurrent) {\n var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute'];\n if (arguments.length === 0) {\n return this._options.useCurrent;\n }\n if (typeof _useCurrent !== 'boolean' && typeof _useCurrent !== 'string') {\n throw new TypeError('useCurrent() expects a boolean or string parameter');\n }\n if (typeof _useCurrent === 'string' && useCurrentOptions.indexOf(_useCurrent.toLowerCase()) === -1) {\n throw new TypeError(\"useCurrent() expects a string parameter of \" + useCurrentOptions.join(', '));\n }\n this._options.useCurrent = _useCurrent;\n };\n _proto.collapse = function collapse(_collapse) {\n if (arguments.length === 0) {\n return this._options.collapse;\n }\n if (typeof _collapse !== 'boolean') {\n throw new TypeError('collapse() expects a boolean parameter');\n }\n if (this._options.collapse === _collapse) {\n return true;\n }\n this._options.collapse = _collapse;\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto.icons = function icons(_icons) {\n if (arguments.length === 0) {\n return $.extend({}, this._options.icons);\n }\n if (!(_icons instanceof Object)) {\n throw new TypeError('icons() expects parameter to be an Object');\n }\n $.extend(this._options.icons, _icons);\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto.tooltips = function tooltips(_tooltips) {\n if (arguments.length === 0) {\n return $.extend({}, this._options.tooltips);\n }\n if (!(_tooltips instanceof Object)) {\n throw new TypeError('tooltips() expects parameter to be an Object');\n }\n $.extend(this._options.tooltips, _tooltips);\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto.useStrict = function useStrict(_useStrict) {\n if (arguments.length === 0) {\n return this._options.useStrict;\n }\n if (typeof _useStrict !== 'boolean') {\n throw new TypeError('useStrict() expects a boolean parameter');\n }\n this._options.useStrict = _useStrict;\n };\n _proto.sideBySide = function sideBySide(_sideBySide) {\n if (arguments.length === 0) {\n return this._options.sideBySide;\n }\n if (typeof _sideBySide !== 'boolean') {\n throw new TypeError('sideBySide() expects a boolean parameter');\n }\n this._options.sideBySide = _sideBySide;\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto.viewMode = function viewMode(_viewMode) {\n if (arguments.length === 0) {\n return this._options.viewMode;\n }\n if (typeof _viewMode !== 'string') {\n throw new TypeError('viewMode() expects a string parameter');\n }\n if (DateTimePicker.ViewModes.indexOf(_viewMode) === -1) {\n throw new TypeError(\"viewMode() parameter must be one of (\" + DateTimePicker.ViewModes.join(', ') + \") value\");\n }\n this._options.viewMode = _viewMode;\n this.currentViewMode = Math.max(DateTimePicker.ViewModes.indexOf(_viewMode) - 1, this.MinViewModeNumber);\n this._showMode();\n };\n _proto.calendarWeeks = function calendarWeeks(_calendarWeeks) {\n if (arguments.length === 0) {\n return this._options.calendarWeeks;\n }\n if (typeof _calendarWeeks !== 'boolean') {\n throw new TypeError('calendarWeeks() expects parameter to be a boolean value');\n }\n this._options.calendarWeeks = _calendarWeeks;\n this._update();\n };\n _proto.buttons = function buttons(_buttons) {\n if (arguments.length === 0) {\n return $.extend({}, this._options.buttons);\n }\n if (!(_buttons instanceof Object)) {\n throw new TypeError('buttons() expects parameter to be an Object');\n }\n $.extend(this._options.buttons, _buttons);\n if (typeof this._options.buttons.showToday !== 'boolean') {\n throw new TypeError('buttons.showToday expects a boolean parameter');\n }\n if (typeof this._options.buttons.showClear !== 'boolean') {\n throw new TypeError('buttons.showClear expects a boolean parameter');\n }\n if (typeof this._options.buttons.showClose !== 'boolean') {\n throw new TypeError('buttons.showClose expects a boolean parameter');\n }\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto.keepOpen = function keepOpen(_keepOpen) {\n if (arguments.length === 0) {\n return this._options.keepOpen;\n }\n if (typeof _keepOpen !== 'boolean') {\n throw new TypeError('keepOpen() expects a boolean parameter');\n }\n this._options.keepOpen = _keepOpen;\n };\n _proto.focusOnShow = function focusOnShow(_focusOnShow) {\n if (arguments.length === 0) {\n return this._options.focusOnShow;\n }\n if (typeof _focusOnShow !== 'boolean') {\n throw new TypeError('focusOnShow() expects a boolean parameter');\n }\n this._options.focusOnShow = _focusOnShow;\n };\n _proto.inline = function inline(_inline) {\n if (arguments.length === 0) {\n return this._options.inline;\n }\n if (typeof _inline !== 'boolean') {\n throw new TypeError('inline() expects a boolean parameter');\n }\n this._options.inline = _inline;\n };\n _proto.clear = function clear() {\n this._setValue(null); //todo\n };\n\n _proto.keyBinds = function keyBinds(_keyBinds) {\n if (arguments.length === 0) {\n return this._options.keyBinds;\n }\n this._options.keyBinds = _keyBinds;\n };\n _proto.debug = function debug(_debug) {\n if (typeof _debug !== 'boolean') {\n throw new TypeError('debug() expects a boolean parameter');\n }\n this._options.debug = _debug;\n };\n _proto.allowInputToggle = function allowInputToggle(_allowInputToggle) {\n if (arguments.length === 0) {\n return this._options.allowInputToggle;\n }\n if (typeof _allowInputToggle !== 'boolean') {\n throw new TypeError('allowInputToggle() expects a boolean parameter');\n }\n this._options.allowInputToggle = _allowInputToggle;\n };\n _proto.keepInvalid = function keepInvalid(_keepInvalid) {\n if (arguments.length === 0) {\n return this._options.keepInvalid;\n }\n if (typeof _keepInvalid !== 'boolean') {\n throw new TypeError('keepInvalid() expects a boolean parameter');\n }\n this._options.keepInvalid = _keepInvalid;\n };\n _proto.datepickerInput = function datepickerInput(_datepickerInput) {\n if (arguments.length === 0) {\n return this._options.datepickerInput;\n }\n if (typeof _datepickerInput !== 'string') {\n throw new TypeError('datepickerInput() expects a string parameter');\n }\n this._options.datepickerInput = _datepickerInput;\n };\n _proto.parseInputDate = function parseInputDate(_parseInputDate2) {\n if (arguments.length === 0) {\n return this._options.parseInputDate;\n }\n if (typeof _parseInputDate2 !== 'function') {\n throw new TypeError('parseInputDate() should be as function');\n }\n this._options.parseInputDate = _parseInputDate2;\n };\n _proto.disabledTimeIntervals = function disabledTimeIntervals(_disabledTimeIntervals) {\n if (arguments.length === 0) {\n return this._options.disabledTimeIntervals ? $.extend({}, this._options.disabledTimeIntervals) : this._options.disabledTimeIntervals;\n }\n if (!_disabledTimeIntervals) {\n this._options.disabledTimeIntervals = false;\n this._update();\n return true;\n }\n if (!(_disabledTimeIntervals instanceof Array)) {\n throw new TypeError('disabledTimeIntervals() expects an array parameter');\n }\n this._options.disabledTimeIntervals = _disabledTimeIntervals;\n this._update();\n };\n _proto.disabledHours = function disabledHours(hours) {\n if (arguments.length === 0) {\n return this._options.disabledHours ? $.extend({}, this._options.disabledHours) : this._options.disabledHours;\n }\n if (!hours) {\n this._options.disabledHours = false;\n this._update();\n return true;\n }\n if (!(hours instanceof Array)) {\n throw new TypeError('disabledHours() expects an array parameter');\n }\n this._options.disabledHours = this._indexGivenHours(hours);\n this._options.enabledHours = false;\n if (this._options.useCurrent && !this._options.keepInvalid) {\n for (var i = 0; i < this._dates.length; i++) {\n var tries = 0;\n while (!this._isValid(this._dates[i], 'h')) {\n this._dates[i].add(1, 'h');\n if (tries === 24) {\n throw 'Tried 24 times to find a valid date';\n }\n tries++;\n }\n this._setValue(this._dates[i], i);\n }\n }\n this._update();\n };\n _proto.enabledHours = function enabledHours(hours) {\n if (arguments.length === 0) {\n return this._options.enabledHours ? $.extend({}, this._options.enabledHours) : this._options.enabledHours;\n }\n if (!hours) {\n this._options.enabledHours = false;\n this._update();\n return true;\n }\n if (!(hours instanceof Array)) {\n throw new TypeError('enabledHours() expects an array parameter');\n }\n this._options.enabledHours = this._indexGivenHours(hours);\n this._options.disabledHours = false;\n if (this._options.useCurrent && !this._options.keepInvalid) {\n for (var i = 0; i < this._dates.length; i++) {\n var tries = 0;\n while (!this._isValid(this._dates[i], 'h')) {\n this._dates[i].add(1, 'h');\n if (tries === 24) {\n throw 'Tried 24 times to find a valid date';\n }\n tries++;\n }\n this._setValue(this._dates[i], i);\n }\n }\n this._update();\n };\n _proto.viewDate = function viewDate(newDate) {\n if (arguments.length === 0) {\n return this._viewDate.clone();\n }\n if (!newDate) {\n this._viewDate = (this._dates[0] || this.getMoment()).clone();\n return true;\n }\n if (typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\n throw new TypeError('viewDate() parameter must be one of [string, moment or Date]');\n }\n this._viewDate = this._parseInputDate(newDate);\n this._update();\n this._viewUpdate(DatePickerModes[this.currentViewMode] && DatePickerModes[this.currentViewMode].NAV_FUNCTION);\n };\n _proto._fillDate = function _fillDate() {};\n _proto._useFeatherIcons = function _useFeatherIcons() {\n return this._options.icons.type === 'feather';\n };\n _proto.allowMultidate = function allowMultidate(_allowMultidate) {\n if (typeof _allowMultidate !== 'boolean') {\n throw new TypeError('allowMultidate() expects a boolean parameter');\n }\n this._options.allowMultidate = _allowMultidate;\n };\n _proto.multidateSeparator = function multidateSeparator(_multidateSeparator) {\n if (arguments.length === 0) {\n return this._options.multidateSeparator;\n }\n if (typeof _multidateSeparator !== 'string') {\n throw new TypeError('multidateSeparator expects a string parameter');\n }\n this._options.multidateSeparator = _multidateSeparator;\n };\n _createClass(DateTimePicker, null, [{\n key: \"NAME\",\n get: function get() {\n return NAME;\n }\n /**\r\n * @return {string}\r\n */\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY;\n }\n /**\r\n * @return {string}\r\n */\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY;\n }\n /**\r\n * @return {string}\r\n */\n }, {\n key: \"DATA_API_KEY\",\n get: function get() {\n return DATA_API_KEY;\n }\n }, {\n key: \"DatePickerModes\",\n get: function get() {\n return DatePickerModes;\n }\n }, {\n key: \"ViewModes\",\n get: function get() {\n return ViewModes;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"Selector\",\n get: function get() {\n return Selector;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n },\n set: function set(value) {\n Default = value;\n }\n }, {\n key: \"ClassName\",\n get: function get() {\n return ClassName;\n }\n }]);\n return DateTimePicker;\n }();\n return DateTimePicker;\n }(jQuery, moment); //noinspection JSUnusedGlobalSymbols\n\n /* global DateTimePicker */\n\n /* global feather */\n\n var TempusDominusBootstrap4 = function ($) {\n // eslint-disable-line no-unused-vars\n // ReSharper disable once InconsistentNaming\n var JQUERY_NO_CONFLICT = $.fn[DateTimePicker.NAME],\n verticalModes = ['top', 'bottom', 'auto'],\n horizontalModes = ['left', 'right', 'auto'],\n toolbarPlacements = ['default', 'top', 'bottom'],\n getSelectorFromElement = function getSelectorFromElement($element) {\n var selector = $element.data('target'),\n $selector;\n if (!selector) {\n selector = $element.attr('href') || '';\n selector = /^#[a-z]/i.test(selector) ? selector : null;\n }\n $selector = $(selector);\n if ($selector.length === 0) {\n return $element;\n }\n if (!$selector.data(DateTimePicker.DATA_KEY)) {\n $.extend({}, $selector.data(), $(this).data());\n }\n return $selector;\n }; // ReSharper disable once InconsistentNaming\n\n var TempusDominusBootstrap4 = /*#__PURE__*/function (_DateTimePicker) {\n _inheritsLoose(TempusDominusBootstrap4, _DateTimePicker);\n function TempusDominusBootstrap4(element, options) {\n var _this;\n _this = _DateTimePicker.call(this, element, options) || this;\n _this._init();\n return _this;\n }\n var _proto2 = TempusDominusBootstrap4.prototype;\n _proto2._init = function _init() {\n if (this._element.hasClass('input-group')) {\n var datepickerButton = this._element.find('.datepickerbutton');\n if (datepickerButton.length === 0) {\n this.component = this._element.find('[data-toggle=\"datetimepicker\"]');\n } else {\n this.component = datepickerButton;\n }\n }\n };\n _proto2._iconTag = function _iconTag(iconName) {\n if (typeof feather !== 'undefined' && this._useFeatherIcons() && feather.icons[iconName]) {\n return $('<span>').html(feather.icons[iconName].toSvg());\n } else {\n return $('<span>').addClass(iconName);\n }\n };\n _proto2._getDatePickerTemplate = function _getDatePickerTemplate() {\n var headTemplate = $('<thead>').append($('<tr>').append($('<th>').addClass('prev').attr('data-action', 'previous').append(this._iconTag(this._options.icons.previous))).append($('<th>').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', \"\" + (this._options.calendarWeeks ? '6' : '5'))).append($('<th>').addClass('next').attr('data-action', 'next').append(this._iconTag(this._options.icons.next)))),\n contTemplate = $('<tbody>').append($('<tr>').append($('<td>').attr('colspan', \"\" + (this._options.calendarWeeks ? '8' : '7'))));\n return [$('<div>').addClass('datepicker-days').append($('<table>').addClass('table table-sm').append(headTemplate).append($('<tbody>'))), $('<div>').addClass('datepicker-months').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-years').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-decades').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone()))];\n };\n _proto2._getTimePickerMainTemplate = function _getTimePickerMainTemplate() {\n var topRow = $('<tr>'),\n middleRow = $('<tr>'),\n bottomRow = $('<tr>');\n if (this._isEnabled('h')) {\n topRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': this._options.tooltips.incrementHour\n }).addClass('btn').attr('data-action', 'incrementHours').append(this._iconTag(this._options.icons.up))));\n middleRow.append($('<td>').append($('<span>').addClass('timepicker-hour').attr({\n 'data-time-component': 'hours',\n 'title': this._options.tooltips.pickHour\n }).attr('data-action', 'showHours')));\n bottomRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': this._options.tooltips.decrementHour\n }).addClass('btn').attr('data-action', 'decrementHours').append(this._iconTag(this._options.icons.down))));\n }\n if (this._isEnabled('m')) {\n if (this._isEnabled('h')) {\n topRow.append($('<td>').addClass('separator'));\n middleRow.append($('<td>').addClass('separator').html(':'));\n bottomRow.append($('<td>').addClass('separator'));\n }\n topRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': this._options.tooltips.incrementMinute\n }).addClass('btn').attr('data-action', 'incrementMinutes').append(this._iconTag(this._options.icons.up))));\n middleRow.append($('<td>').append($('<span>').addClass('timepicker-minute').attr({\n 'data-time-component': 'minutes',\n 'title': this._options.tooltips.pickMinute\n }).attr('data-action', 'showMinutes')));\n bottomRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': this._options.tooltips.decrementMinute\n }).addClass('btn').attr('data-action', 'decrementMinutes').append(this._iconTag(this._options.icons.down))));\n }\n if (this._isEnabled('s')) {\n if (this._isEnabled('m')) {\n topRow.append($('<td>').addClass('separator'));\n middleRow.append($('<td>').addClass('separator').html(':'));\n bottomRow.append($('<td>').addClass('separator'));\n }\n topRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': this._options.tooltips.incrementSecond\n }).addClass('btn').attr('data-action', 'incrementSeconds').append(this._iconTag(this._options.icons.up))));\n middleRow.append($('<td>').append($('<span>').addClass('timepicker-second').attr({\n 'data-time-component': 'seconds',\n 'title': this._options.tooltips.pickSecond\n }).attr('data-action', 'showSeconds')));\n bottomRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': this._options.tooltips.decrementSecond\n }).addClass('btn').attr('data-action', 'decrementSeconds').append(this._iconTag(this._options.icons.down))));\n }\n if (!this.use24Hours) {\n topRow.append($('<td>').addClass('separator'));\n middleRow.append($('<td>').append($('<button>').addClass('btn btn-primary').attr({\n 'data-action': 'togglePeriod',\n tabindex: '-1',\n 'title': this._options.tooltips.togglePeriod\n })));\n bottomRow.append($('<td>').addClass('separator'));\n }\n return $('<div>').addClass('timepicker-picker').append($('<table>').addClass('table-condensed').append([topRow, middleRow, bottomRow]));\n };\n _proto2._getTimePickerTemplate = function _getTimePickerTemplate() {\n var hoursView = $('<div>').addClass('timepicker-hours').append($('<table>').addClass('table-condensed')),\n minutesView = $('<div>').addClass('timepicker-minutes').append($('<table>').addClass('table-condensed')),\n secondsView = $('<div>').addClass('timepicker-seconds').append($('<table>').addClass('table-condensed')),\n ret = [this._getTimePickerMainTemplate()];\n if (this._isEnabled('h')) {\n ret.push(hoursView);\n }\n if (this._isEnabled('m')) {\n ret.push(minutesView);\n }\n if (this._isEnabled('s')) {\n ret.push(secondsView);\n }\n return ret;\n };\n _proto2._getToolbar = function _getToolbar() {\n var row = [];\n if (this._options.buttons.showToday) {\n row.push($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'data-action': 'today',\n 'title': this._options.tooltips.today\n }).append(this._iconTag(this._options.icons.today))));\n }\n if (!this._options.sideBySide && this._options.collapse && this._hasDate() && this._hasTime()) {\n var title, icon;\n if (this._options.viewMode === 'times') {\n title = this._options.tooltips.selectDate;\n icon = this._options.icons.date;\n } else {\n title = this._options.tooltips.selectTime;\n icon = this._options.icons.time;\n }\n row.push($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'data-action': 'togglePicker',\n 'title': title\n }).append(this._iconTag(icon))));\n }\n if (this._options.buttons.showClear) {\n row.push($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'data-action': 'clear',\n 'title': this._options.tooltips.clear\n }).append(this._iconTag(this._options.icons.clear))));\n }\n if (this._options.buttons.showClose) {\n row.push($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'data-action': 'close',\n 'title': this._options.tooltips.close\n }).append(this._iconTag(this._options.icons.close))));\n }\n return row.length === 0 ? '' : $('<table>').addClass('table-condensed').append($('<tbody>').append($('<tr>').append(row)));\n };\n _proto2._getTemplate = function _getTemplate() {\n var template = $('<div>').addClass((\"bootstrap-datetimepicker-widget dropdown-menu \" + (this._options.calendarWeeks ? 'tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks' : '') + \" \" + ((this._useFeatherIcons() ? 'tempusdominus-bootstrap-datetimepicker-widget-with-feather-icons' : '') + \" \")).trim()),\n dateView = $('<div>').addClass('datepicker').append(this._getDatePickerTemplate()),\n timeView = $('<div>').addClass('timepicker').append(this._getTimePickerTemplate()),\n content = $('<ul>').addClass('list-unstyled'),\n toolbar = $('<li>').addClass((\"picker-switch\" + (this._options.collapse ? ' accordion-toggle' : '') + \" \" + (\"\" + (this._useFeatherIcons() ? 'picker-switch-with-feathers-icons' : ''))).trim()).append(this._getToolbar());\n if (this._options.inline) {\n template.removeClass('dropdown-menu');\n }\n if (this.use24Hours) {\n template.addClass('usetwentyfour');\n }\n if (this.input !== undefined && this.input.prop('readonly') || this._options.readonly) {\n template.addClass('bootstrap-datetimepicker-widget-readonly');\n }\n if (this._isEnabled('s') && !this.use24Hours) {\n template.addClass('wider');\n }\n if (this._options.sideBySide && this._hasDate() && this._hasTime()) {\n template.addClass('timepicker-sbs');\n if (this._options.toolbarPlacement === 'top') {\n template.append(toolbar);\n }\n template.append($('<div>').addClass('row').append(dateView.addClass('col-md-6')).append(timeView.addClass('col-md-6')));\n if (this._options.toolbarPlacement === 'bottom' || this._options.toolbarPlacement === 'default') {\n template.append(toolbar);\n }\n return template;\n }\n if (this._options.toolbarPlacement === 'top') {\n content.append(toolbar);\n }\n if (this._hasDate()) {\n content.append($('<li>').addClass(this._options.collapse && this._hasTime() ? 'collapse' : '').addClass(this._options.collapse && this._hasTime() && this._options.viewMode === 'times' ? '' : 'show').append(dateView));\n }\n if (this._options.toolbarPlacement === 'default') {\n content.append(toolbar);\n }\n if (this._hasTime()) {\n content.append($('<li>').addClass(this._options.collapse && this._hasDate() ? 'collapse' : '').addClass(this._options.collapse && this._hasDate() && this._options.viewMode === 'times' ? 'show' : '').append(timeView));\n }\n if (this._options.toolbarPlacement === 'bottom') {\n content.append(toolbar);\n }\n return template.append(content);\n };\n _proto2._place = function _place(e) {\n var self = e && e.data && e.data.picker || this,\n vertical = self._options.widgetPositioning.vertical,\n horizontal = self._options.widgetPositioning.horizontal,\n parent;\n var position = (self.component && self.component.length ? self.component : self._element).position(),\n offset = (self.component && self.component.length ? self.component : self._element).offset();\n if (self._options.widgetParent) {\n parent = self._options.widgetParent.append(self.widget);\n } else if (self._element.is('input')) {\n parent = self._element.after(self.widget).parent();\n } else if (self._options.inline) {\n parent = self._element.append(self.widget);\n return;\n } else {\n parent = self._element;\n self._element.children().first().after(self.widget);\n } // Top and bottom logic\n\n if (vertical === 'auto') {\n //noinspection JSValidateTypes\n if (offset.top + self.widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() && self.widget.height() + self._element.outerHeight() < offset.top) {\n vertical = 'top';\n } else {\n vertical = 'bottom';\n }\n } // Left and right logic\n\n if (horizontal === 'auto') {\n if (parent.width() < offset.left + self.widget.outerWidth() / 2 && offset.left + self.widget.outerWidth() > $(window).width()) {\n horizontal = 'right';\n } else {\n horizontal = 'left';\n }\n }\n if (vertical === 'top') {\n self.widget.addClass('top').removeClass('bottom');\n } else {\n self.widget.addClass('bottom').removeClass('top');\n }\n if (horizontal === 'right') {\n self.widget.addClass('float-right');\n } else {\n self.widget.removeClass('float-right');\n } // find the first parent element that has a relative css positioning\n\n if (parent.css('position') !== 'relative') {\n parent = parent.parents().filter(function () {\n return $(this).css('position') === 'relative';\n }).first();\n }\n if (parent.length === 0) {\n throw new Error('datetimepicker component should be placed within a relative positioned container');\n }\n self.widget.css({\n top: vertical === 'top' ? 'auto' : position.top + self._element.outerHeight() + 'px',\n bottom: vertical === 'top' ? parent.outerHeight() - (parent === self._element ? 0 : position.top) + 'px' : 'auto',\n left: horizontal === 'left' ? (parent === self._element ? 0 : position.left) + 'px' : 'auto',\n right: horizontal === 'left' ? 'auto' : parent.outerWidth() - self._element.outerWidth() - (parent === self._element ? 0 : position.left) + 'px'\n });\n };\n _proto2._fillDow = function _fillDow() {\n var row = $('<tr>'),\n currentDate = this._viewDate.clone().startOf('w').startOf('d');\n if (this._options.calendarWeeks === true) {\n row.append($('<th>').addClass('cw').text('#'));\n }\n while (currentDate.isBefore(this._viewDate.clone().endOf('w'))) {\n row.append($('<th>').addClass('dow').text(currentDate.format('dd')));\n currentDate.add(1, 'd');\n }\n this.widget.find('.datepicker-days thead').append(row);\n };\n _proto2._fillMonths = function _fillMonths() {\n var spans = [],\n monthsShort = this._viewDate.clone().startOf('y').startOf('d');\n while (monthsShort.isSame(this._viewDate, 'y')) {\n spans.push($('<span>').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM')));\n monthsShort.add(1, 'M');\n }\n this.widget.find('.datepicker-months td').empty().append(spans);\n };\n _proto2._updateMonths = function _updateMonths() {\n var monthsView = this.widget.find('.datepicker-months'),\n monthsViewHeader = monthsView.find('th'),\n months = monthsView.find('tbody').find('span'),\n self = this,\n lastPickedDate = this._getLastPickedDate();\n monthsViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevYear);\n monthsViewHeader.eq(1).attr('title', this._options.tooltips.selectYear);\n monthsViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextYear);\n monthsView.find('.disabled').removeClass('disabled');\n if (!this._isValid(this._viewDate.clone().subtract(1, 'y'), 'y')) {\n monthsViewHeader.eq(0).addClass('disabled');\n }\n monthsViewHeader.eq(1).text(this._viewDate.year());\n if (!this._isValid(this._viewDate.clone().add(1, 'y'), 'y')) {\n monthsViewHeader.eq(2).addClass('disabled');\n }\n months.removeClass('active');\n if (lastPickedDate && lastPickedDate.isSame(this._viewDate, 'y') && !this.unset) {\n months.eq(lastPickedDate.month()).addClass('active');\n }\n months.each(function (index) {\n if (!self._isValid(self._viewDate.clone().month(index), 'M')) {\n $(this).addClass('disabled');\n }\n });\n };\n _proto2._getStartEndYear = function _getStartEndYear(factor, year) {\n var step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n };\n _proto2._updateYears = function _updateYears() {\n var yearsView = this.widget.find('.datepicker-years'),\n yearsViewHeader = yearsView.find('th'),\n yearCaps = this._getStartEndYear(10, this._viewDate.year()),\n startYear = this._viewDate.clone().year(yearCaps[0]),\n endYear = this._viewDate.clone().year(yearCaps[1]);\n var html = '';\n yearsViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevDecade);\n yearsViewHeader.eq(1).attr('title', this._options.tooltips.selectDecade);\n yearsViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextDecade);\n yearsView.find('.disabled').removeClass('disabled');\n if (this._options.minDate && this._options.minDate.isAfter(startYear, 'y')) {\n yearsViewHeader.eq(0).addClass('disabled');\n }\n yearsViewHeader.eq(1).text(startYear.year() + \"-\" + endYear.year());\n if (this._options.maxDate && this._options.maxDate.isBefore(endYear, 'y')) {\n yearsViewHeader.eq(2).addClass('disabled');\n }\n html += \"<span data-action=\\\"selectYear\\\" class=\\\"year old\" + (!this._isValid(startYear, 'y') ? ' disabled' : '') + \"\\\">\" + (startYear.year() - 1) + \"</span>\";\n while (!startYear.isAfter(endYear, 'y')) {\n html += \"<span data-action=\\\"selectYear\\\" class=\\\"year\" + (startYear.isSame(this._getLastPickedDate(), 'y') && !this.unset ? ' active' : '') + (!this._isValid(startYear, 'y') ? ' disabled' : '') + \"\\\">\" + startYear.year() + \"</span>\";\n startYear.add(1, 'y');\n }\n html += \"<span data-action=\\\"selectYear\\\" class=\\\"year old\" + (!this._isValid(startYear, 'y') ? ' disabled' : '') + \"\\\">\" + startYear.year() + \"</span>\";\n yearsView.find('td').html(html);\n };\n _proto2._updateDecades = function _updateDecades() {\n var decadesView = this.widget.find('.datepicker-decades'),\n decadesViewHeader = decadesView.find('th'),\n yearCaps = this._getStartEndYear(100, this._viewDate.year()),\n startDecade = this._viewDate.clone().year(yearCaps[0]),\n endDecade = this._viewDate.clone().year(yearCaps[1]),\n lastPickedDate = this._getLastPickedDate();\n var minDateDecade = false,\n maxDateDecade = false,\n endDecadeYear,\n html = '';\n decadesViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevCentury);\n decadesViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextCentury);\n decadesView.find('.disabled').removeClass('disabled');\n if (startDecade.year() === 0 || this._options.minDate && this._options.minDate.isAfter(startDecade, 'y')) {\n decadesViewHeader.eq(0).addClass('disabled');\n }\n decadesViewHeader.eq(1).text(startDecade.year() + \"-\" + endDecade.year());\n if (this._options.maxDate && this._options.maxDate.isBefore(endDecade, 'y')) {\n decadesViewHeader.eq(2).addClass('disabled');\n }\n if (startDecade.year() - 10 < 0) {\n html += '<span> </span>';\n } else {\n html += \"<span data-action=\\\"selectDecade\\\" class=\\\"decade old\\\" data-selection=\\\"\" + (startDecade.year() + 6) + \"\\\">\" + (startDecade.year() - 10) + \"</span>\";\n }\n while (!startDecade.isAfter(endDecade, 'y')) {\n endDecadeYear = startDecade.year() + 11;\n minDateDecade = this._options.minDate && this._options.minDate.isAfter(startDecade, 'y') && this._options.minDate.year() <= endDecadeYear;\n maxDateDecade = this._options.maxDate && this._options.maxDate.isAfter(startDecade, 'y') && this._options.maxDate.year() <= endDecadeYear;\n html += \"<span data-action=\\\"selectDecade\\\" class=\\\"decade\" + (lastPickedDate && lastPickedDate.isAfter(startDecade) && lastPickedDate.year() <= endDecadeYear ? ' active' : '') + (!this._isValid(startDecade, 'y') && !minDateDecade && !maxDateDecade ? ' disabled' : '') + \"\\\" data-selection=\\\"\" + (startDecade.year() + 6) + \"\\\">\" + startDecade.year() + \"</span>\";\n startDecade.add(10, 'y');\n }\n html += \"<span data-action=\\\"selectDecade\\\" class=\\\"decade old\\\" data-selection=\\\"\" + (startDecade.year() + 6) + \"\\\">\" + startDecade.year() + \"</span>\";\n decadesView.find('td').html(html);\n };\n _proto2._fillDate = function _fillDate() {\n _DateTimePicker.prototype._fillDate.call(this);\n var daysView = this.widget.find('.datepicker-days'),\n daysViewHeader = daysView.find('th'),\n html = [];\n var currentDate, row, clsName, i;\n if (!this._hasDate()) {\n return;\n }\n daysViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevMonth);\n daysViewHeader.eq(1).attr('title', this._options.tooltips.selectMonth);\n daysViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextMonth);\n daysView.find('.disabled').removeClass('disabled');\n daysViewHeader.eq(1).text(this._viewDate.format(this._options.dayViewHeaderFormat));\n if (!this._isValid(this._viewDate.clone().subtract(1, 'M'), 'M')) {\n daysViewHeader.eq(0).addClass('disabled');\n }\n if (!this._isValid(this._viewDate.clone().add(1, 'M'), 'M')) {\n daysViewHeader.eq(2).addClass('disabled');\n }\n currentDate = this._viewDate.clone().startOf('M').startOf('w').startOf('d');\n for (i = 0; i < 42; i++) {\n //always display 42 days (should show 6 weeks)\n if (currentDate.weekday() === 0) {\n row = $('<tr>');\n if (this._options.calendarWeeks) {\n row.append(\"<td class=\\\"cw\\\">\" + currentDate.week() + \"</td>\");\n }\n html.push(row);\n }\n clsName = '';\n if (currentDate.isBefore(this._viewDate, 'M')) {\n clsName += ' old';\n }\n if (currentDate.isAfter(this._viewDate, 'M')) {\n clsName += ' new';\n }\n if (this._options.allowMultidate) {\n var index = this._datesFormatted.indexOf(currentDate.format('YYYY-MM-DD'));\n if (index !== -1) {\n if (currentDate.isSame(this._datesFormatted[index], 'd') && !this.unset) {\n clsName += ' active';\n }\n }\n } else {\n if (currentDate.isSame(this._getLastPickedDate(), 'd') && !this.unset) {\n clsName += ' active';\n }\n }\n if (!this._isValid(currentDate, 'd')) {\n clsName += ' disabled';\n }\n if (currentDate.isSame(this.getMoment(), 'd')) {\n clsName += ' today';\n }\n if (currentDate.day() === 0 || currentDate.day() === 6) {\n clsName += ' weekend';\n }\n row.append(\"<td data-action=\\\"selectDay\\\" data-day=\\\"\" + currentDate.format('L') + \"\\\" class=\\\"day\" + clsName + \"\\\">\" + currentDate.date() + \"</td>\");\n currentDate.add(1, 'd');\n }\n $('body').addClass('tempusdominus-bootstrap-datetimepicker-widget-day-click');\n $('body').append('<div class=\"tempusdominus-bootstrap-datetimepicker-widget-day-click-glass-panel\"></div>');\n daysView.find('tbody').empty().append(html);\n $('body').find('.tempusdominus-bootstrap-datetimepicker-widget-day-click-glass-panel').remove();\n $('body').removeClass('tempusdominus-bootstrap-datetimepicker-widget-day-click');\n this._updateMonths();\n this._updateYears();\n this._updateDecades();\n };\n _proto2._fillHours = function _fillHours() {\n var table = this.widget.find('.timepicker-hours table'),\n currentHour = this._viewDate.clone().startOf('d'),\n html = [];\n var row = $('<tr>');\n if (this._viewDate.hour() > 11 && !this.use24Hours) {\n currentHour.hour(12);\n }\n while (currentHour.isSame(this._viewDate, 'd') && (this.use24Hours || this._viewDate.hour() < 12 && currentHour.hour() < 12 || this._viewDate.hour() > 11)) {\n if (currentHour.hour() % 4 === 0) {\n row = $('<tr>');\n html.push(row);\n }\n row.append(\"<td data-action=\\\"selectHour\\\" class=\\\"hour\" + (!this._isValid(currentHour, 'h') ? ' disabled' : '') + \"\\\">\" + currentHour.format(this.use24Hours ? 'HH' : 'hh') + \"</td>\");\n currentHour.add(1, 'h');\n }\n table.empty().append(html);\n };\n _proto2._fillMinutes = function _fillMinutes() {\n var table = this.widget.find('.timepicker-minutes table'),\n currentMinute = this._viewDate.clone().startOf('h'),\n html = [],\n step = this._options.stepping === 1 ? 5 : this._options.stepping;\n var row = $('<tr>');\n while (this._viewDate.isSame(currentMinute, 'h')) {\n if (currentMinute.minute() % (step * 4) === 0) {\n row = $('<tr>');\n html.push(row);\n }\n row.append(\"<td data-action=\\\"selectMinute\\\" class=\\\"minute\" + (!this._isValid(currentMinute, 'm') ? ' disabled' : '') + \"\\\">\" + currentMinute.format('mm') + \"</td>\");\n currentMinute.add(step, 'm');\n }\n table.empty().append(html);\n };\n _proto2._fillSeconds = function _fillSeconds() {\n var table = this.widget.find('.timepicker-seconds table'),\n currentSecond = this._viewDate.clone().startOf('m'),\n html = [];\n var row = $('<tr>');\n while (this._viewDate.isSame(currentSecond, 'm')) {\n if (currentSecond.second() % 20 === 0) {\n row = $('<tr>');\n html.push(row);\n }\n row.append(\"<td data-action=\\\"selectSecond\\\" class=\\\"second\" + (!this._isValid(currentSecond, 's') ? ' disabled' : '') + \"\\\">\" + currentSecond.format('ss') + \"</td>\");\n currentSecond.add(5, 's');\n }\n table.empty().append(html);\n };\n _proto2._fillTime = function _fillTime() {\n var toggle, newDate;\n var timeComponents = this.widget.find('.timepicker span[data-time-component]'),\n lastPickedDate = this._getLastPickedDate();\n if (!this.use24Hours) {\n toggle = this.widget.find('.timepicker [data-action=togglePeriod]');\n newDate = lastPickedDate ? lastPickedDate.clone().add(lastPickedDate.hours() >= 12 ? -12 : 12, 'h') : void 0;\n lastPickedDate && toggle.text(lastPickedDate.format('A'));\n if (this._isValid(newDate, 'h')) {\n toggle.removeClass('disabled');\n } else {\n toggle.addClass('disabled');\n }\n }\n lastPickedDate && timeComponents.filter('[data-time-component=hours]').text(lastPickedDate.format(\"\" + (this.use24Hours ? 'HH' : 'hh')));\n lastPickedDate && timeComponents.filter('[data-time-component=minutes]').text(lastPickedDate.format('mm'));\n lastPickedDate && timeComponents.filter('[data-time-component=seconds]').text(lastPickedDate.format('ss'));\n this._fillHours();\n this._fillMinutes();\n this._fillSeconds();\n };\n _proto2._doAction = function _doAction(e, action) {\n var lastPicked = this._getLastPickedDate();\n if ($(e.currentTarget).is('.disabled')) {\n return false;\n }\n action = action || $(e.currentTarget).data('action');\n switch (action) {\n case 'next':\n {\n var navFnc = DateTimePicker.DatePickerModes[this.currentViewMode].NAV_FUNCTION;\n this._viewDate.add(DateTimePicker.DatePickerModes[this.currentViewMode].NAV_STEP, navFnc);\n this._fillDate();\n this._viewUpdate(navFnc);\n break;\n }\n case 'previous':\n {\n var _navFnc = DateTimePicker.DatePickerModes[this.currentViewMode].NAV_FUNCTION;\n this._viewDate.subtract(DateTimePicker.DatePickerModes[this.currentViewMode].NAV_STEP, _navFnc);\n this._fillDate();\n this._viewUpdate(_navFnc);\n break;\n }\n case 'pickerSwitch':\n this._showMode(1);\n break;\n case 'selectMonth':\n {\n var month = $(e.target).closest('tbody').find('span').index($(e.target));\n this._viewDate.month(month);\n if (this.currentViewMode === this.MinViewModeNumber) {\n this._setValue(lastPicked.clone().year(this._viewDate.year()).month(this._viewDate.month()), this._getLastPickedDateIndex());\n if (!this._options.inline) {\n this.hide();\n }\n } else {\n this._showMode(-1);\n this._fillDate();\n }\n this._viewUpdate('M');\n break;\n }\n case 'selectYear':\n {\n var year = parseInt($(e.target).text(), 10) || 0;\n this._viewDate.year(year);\n if (this.currentViewMode === this.MinViewModeNumber) {\n this._setValue(lastPicked.clone().year(this._viewDate.year()), this._getLastPickedDateIndex());\n if (!this._options.inline) {\n this.hide();\n }\n } else {\n this._showMode(-1);\n this._fillDate();\n }\n this._viewUpdate('YYYY');\n break;\n }\n case 'selectDecade':\n {\n var _year = parseInt($(e.target).data('selection'), 10) || 0;\n this._viewDate.year(_year);\n if (this.currentViewMode === this.MinViewModeNumber) {\n this._setValue(lastPicked.clone().year(this._viewDate.year()), this._getLastPickedDateIndex());\n if (!this._options.inline) {\n this.hide();\n }\n } else {\n this._showMode(-1);\n this._fillDate();\n }\n this._viewUpdate('YYYY');\n break;\n }\n case 'selectDay':\n {\n var day = this._viewDate.clone();\n if ($(e.target).is('.old')) {\n day.subtract(1, 'M');\n }\n if ($(e.target).is('.new')) {\n day.add(1, 'M');\n }\n var selectDate = day.date(parseInt($(e.target).text(), 10)),\n index = 0;\n if (this._options.allowMultidate) {\n index = this._datesFormatted.indexOf(selectDate.format('YYYY-MM-DD'));\n if (index !== -1) {\n this._setValue(null, index); //deselect multidate\n } else {\n this._setValue(selectDate, this._getLastPickedDateIndex() + 1);\n }\n } else {\n this._setValue(selectDate, this._getLastPickedDateIndex());\n }\n if (!this._hasTime() && !this._options.keepOpen && !this._options.inline && !this._options.allowMultidate) {\n this.hide();\n }\n break;\n }\n case 'incrementHours':\n {\n if (!lastPicked) {\n break;\n }\n var newDate = lastPicked.clone().add(1, 'h');\n if (this._isValid(newDate, 'h')) {\n if (this._getLastPickedDateIndex() < 0) {\n this.date(newDate);\n }\n this._setValue(newDate, this._getLastPickedDateIndex());\n }\n break;\n }\n case 'incrementMinutes':\n {\n if (!lastPicked) {\n break;\n }\n var _newDate = lastPicked.clone().add(this._options.stepping, 'm');\n if (this._isValid(_newDate, 'm')) {\n if (this._getLastPickedDateIndex() < 0) {\n this.date(_newDate);\n }\n this._setValue(_newDate, this._getLastPickedDateIndex());\n }\n break;\n }\n case 'incrementSeconds':\n {\n if (!lastPicked) {\n break;\n }\n var _newDate2 = lastPicked.clone().add(1, 's');\n if (this._isValid(_newDate2, 's')) {\n if (this._getLastPickedDateIndex() < 0) {\n this.date(_newDate2);\n }\n this._setValue(_newDate2, this._getLastPickedDateIndex());\n }\n break;\n }\n case 'decrementHours':\n {\n if (!lastPicked) {\n break;\n }\n var _newDate3 = lastPicked.clone().subtract(1, 'h');\n if (this._isValid(_newDate3, 'h')) {\n if (this._getLastPickedDateIndex() < 0) {\n this.date(_newDate3);\n }\n this._setValue(_newDate3, this._getLastPickedDateIndex());\n }\n break;\n }\n case 'decrementMinutes':\n {\n if (!lastPicked) {\n break;\n }\n var _newDate4 = lastPicked.clone().subtract(this._options.stepping, 'm');\n if (this._isValid(_newDate4, 'm')) {\n if (this._getLastPickedDateIndex() < 0) {\n this.date(_newDate4);\n }\n this._setValue(_newDate4, this._getLastPickedDateIndex());\n }\n break;\n }\n case 'decrementSeconds':\n {\n if (!lastPicked) {\n break;\n }\n var _newDate5 = lastPicked.clone().subtract(1, 's');\n if (this._isValid(_newDate5, 's')) {\n if (this._getLastPickedDateIndex() < 0) {\n this.date(_newDate5);\n }\n this._setValue(_newDate5, this._getLastPickedDateIndex());\n }\n break;\n }\n case 'togglePeriod':\n {\n this._setValue(lastPicked.clone().add(lastPicked.hours() >= 12 ? -12 : 12, 'h'), this._getLastPickedDateIndex());\n break;\n }\n case 'togglePicker':\n {\n var $this = $(e.target),\n $link = $this.closest('a'),\n $parent = $this.closest('ul'),\n expanded = $parent.find('.show'),\n closed = $parent.find('.collapse:not(.show)'),\n $span = $this.is('span') ? $this : $this.find('span');\n var collapseData, inactiveIcon, iconTest;\n if (expanded && expanded.length) {\n collapseData = expanded.data('collapse');\n if (collapseData && collapseData.transitioning) {\n return true;\n }\n if (expanded.collapse) {\n // if collapse plugin is available through bootstrap.js then use it\n expanded.collapse('hide');\n closed.collapse('show');\n } else {\n // otherwise just toggle in class on the two views\n expanded.removeClass('show');\n closed.addClass('show');\n }\n if (this._useFeatherIcons()) {\n $link.toggleClass(this._options.icons.time + ' ' + this._options.icons.date);\n inactiveIcon = $link.hasClass(this._options.icons.time) ? this._options.icons.date : this._options.icons.time;\n $link.html(this._iconTag(inactiveIcon));\n } else {\n $span.toggleClass(this._options.icons.time + ' ' + this._options.icons.date);\n }\n if (this._useFeatherIcons()) {\n iconTest = $link.hasClass(this._options.icons.date);\n } else {\n iconTest = $span.hasClass(this._options.icons.date);\n }\n if (iconTest) {\n $link.attr('title', this._options.tooltips.selectDate);\n } else {\n $link.attr('title', this._options.tooltips.selectTime);\n }\n }\n }\n break;\n case 'showPicker':\n this.widget.find('.timepicker > div:not(.timepicker-picker)').hide();\n this.widget.find('.timepicker .timepicker-picker').show();\n break;\n case 'showHours':\n this.widget.find('.timepicker .timepicker-picker').hide();\n this.widget.find('.timepicker .timepicker-hours').show();\n break;\n case 'showMinutes':\n this.widget.find('.timepicker .timepicker-picker').hide();\n this.widget.find('.timepicker .timepicker-minutes').show();\n break;\n case 'showSeconds':\n this.widget.find('.timepicker .timepicker-picker').hide();\n this.widget.find('.timepicker .timepicker-seconds').show();\n break;\n case 'selectHour':\n {\n var hour = parseInt($(e.target).text(), 10);\n if (!this.use24Hours) {\n if (lastPicked.hours() >= 12) {\n if (hour !== 12) {\n hour += 12;\n }\n } else {\n if (hour === 12) {\n hour = 0;\n }\n }\n }\n this._setValue(lastPicked.clone().hours(hour), this._getLastPickedDateIndex());\n if (!this._isEnabled('a') && !this._isEnabled('m') && !this._options.keepOpen && !this._options.inline) {\n this.hide();\n } else {\n this._doAction(e, 'showPicker');\n }\n break;\n }\n case 'selectMinute':\n this._setValue(lastPicked.clone().minutes(parseInt($(e.target).text(), 10)), this._getLastPickedDateIndex());\n if (!this._isEnabled('a') && !this._isEnabled('s') && !this._options.keepOpen && !this._options.inline) {\n this.hide();\n } else {\n this._doAction(e, 'showPicker');\n }\n break;\n case 'selectSecond':\n this._setValue(lastPicked.clone().seconds(parseInt($(e.target).text(), 10)), this._getLastPickedDateIndex());\n if (!this._isEnabled('a') && !this._options.keepOpen && !this._options.inline) {\n this.hide();\n } else {\n this._doAction(e, 'showPicker');\n }\n break;\n case 'clear':\n this.clear();\n break;\n case 'close':\n this.hide();\n break;\n case 'today':\n {\n var todaysDate = this.getMoment();\n if (this._isValid(todaysDate, 'd')) {\n this._setValue(todaysDate, this._getLastPickedDateIndex());\n }\n break;\n }\n }\n return false;\n } //public\n ;\n\n _proto2.hide = function hide() {\n var transitioning = false;\n if (!this.widget) {\n return;\n } // Ignore event if in the middle of a picker transition\n\n this.widget.find('.collapse').each(function () {\n var collapseData = $(this).data('collapse');\n if (collapseData && collapseData.transitioning) {\n transitioning = true;\n return false;\n }\n return true;\n });\n if (transitioning) {\n return;\n }\n if (this.component && this.component.hasClass('btn')) {\n this.component.toggleClass('active');\n }\n this.widget.hide();\n $(window).off('resize', this._place);\n this.widget.off('click', '[data-action]');\n this.widget.off('mousedown', false);\n this.widget.remove();\n this.widget = false;\n if (this.input !== undefined && this.input.val() !== undefined && this.input.val().trim().length !== 0) {\n this._setValue(this._parseInputDate(this.input.val().trim(), {\n isPickerShow: false\n }), 0);\n }\n var lastPickedDate = this._getLastPickedDate();\n this._notifyEvent({\n type: DateTimePicker.Event.HIDE,\n date: this.unset ? null : lastPickedDate ? lastPickedDate.clone() : void 0\n });\n if (this.input !== undefined) {\n this.input.blur();\n }\n this._viewDate = lastPickedDate ? lastPickedDate.clone() : this.getMoment();\n };\n _proto2.show = function show() {\n var currentMoment,\n shouldUseCurrentIfUnset = false;\n var useCurrentGranularity = {\n 'year': function year(m) {\n return m.month(0).date(1).hours(0).seconds(0).minutes(0);\n },\n 'month': function month(m) {\n return m.date(1).hours(0).seconds(0).minutes(0);\n },\n 'day': function day(m) {\n return m.hours(0).seconds(0).minutes(0);\n },\n 'hour': function hour(m) {\n return m.seconds(0).minutes(0);\n },\n 'minute': function minute(m) {\n return m.seconds(0);\n }\n };\n if (this.input !== undefined) {\n if (this.input.prop('disabled') || !this._options.ignoreReadonly && this.input.prop('readonly') || this.widget) {\n return;\n }\n if (this.input.val() !== undefined && this.input.val().trim().length !== 0) {\n this._setValue(this._parseInputDate(this.input.val().trim(), {\n isPickerShow: true\n }), 0);\n } else {\n shouldUseCurrentIfUnset = true;\n }\n } else {\n shouldUseCurrentIfUnset = true;\n }\n if (shouldUseCurrentIfUnset && this.unset && this._options.useCurrent) {\n currentMoment = this.getMoment();\n if (typeof this._options.useCurrent === 'string') {\n currentMoment = useCurrentGranularity[this._options.useCurrent](currentMoment);\n }\n this._setValue(currentMoment, 0);\n }\n this.widget = this._getTemplate();\n this._fillDow();\n this._fillMonths();\n this.widget.find('.timepicker-hours').hide();\n this.widget.find('.timepicker-minutes').hide();\n this.widget.find('.timepicker-seconds').hide();\n this._update();\n this._showMode();\n $(window).on('resize', {\n picker: this\n }, this._place);\n this.widget.on('click', '[data-action]', $.proxy(this._doAction, this)); // this handles clicks on the widget\n\n this.widget.on('mousedown', false);\n if (this.component && this.component.hasClass('btn')) {\n this.component.toggleClass('active');\n }\n this._place();\n this.widget.show();\n if (this.input !== undefined && this._options.focusOnShow && !this.input.is(':focus')) {\n this.input.focus();\n }\n this._notifyEvent({\n type: DateTimePicker.Event.SHOW\n });\n };\n _proto2.destroy = function destroy() {\n this.hide(); //todo doc off?\n\n this._element.removeData(DateTimePicker.DATA_KEY);\n this._element.removeData('date');\n };\n _proto2.disable = function disable() {\n this.hide();\n if (this.component && this.component.hasClass('btn')) {\n this.component.addClass('disabled');\n }\n if (this.input !== undefined) {\n this.input.prop('disabled', true); //todo disable this/comp if input is null\n }\n };\n\n _proto2.enable = function enable() {\n if (this.component && this.component.hasClass('btn')) {\n this.component.removeClass('disabled');\n }\n if (this.input !== undefined) {\n this.input.prop('disabled', false); //todo enable comp/this if input is null\n }\n };\n\n _proto2.toolbarPlacement = function toolbarPlacement(_toolbarPlacement) {\n if (arguments.length === 0) {\n return this._options.toolbarPlacement;\n }\n if (typeof _toolbarPlacement !== 'string') {\n throw new TypeError('toolbarPlacement() expects a string parameter');\n }\n if (toolbarPlacements.indexOf(_toolbarPlacement) === -1) {\n throw new TypeError(\"toolbarPlacement() parameter must be one of (\" + toolbarPlacements.join(', ') + \") value\");\n }\n this._options.toolbarPlacement = _toolbarPlacement;\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto2.widgetPositioning = function widgetPositioning(_widgetPositioning) {\n if (arguments.length === 0) {\n return $.extend({}, this._options.widgetPositioning);\n }\n if ({}.toString.call(_widgetPositioning) !== '[object Object]') {\n throw new TypeError('widgetPositioning() expects an object variable');\n }\n if (_widgetPositioning.horizontal) {\n if (typeof _widgetPositioning.horizontal !== 'string') {\n throw new TypeError('widgetPositioning() horizontal variable must be a string');\n }\n _widgetPositioning.horizontal = _widgetPositioning.horizontal.toLowerCase();\n if (horizontalModes.indexOf(_widgetPositioning.horizontal) === -1) {\n throw new TypeError(\"widgetPositioning() expects horizontal parameter to be one of (\" + horizontalModes.join(', ') + \")\");\n }\n this._options.widgetPositioning.horizontal = _widgetPositioning.horizontal;\n }\n if (_widgetPositioning.vertical) {\n if (typeof _widgetPositioning.vertical !== 'string') {\n throw new TypeError('widgetPositioning() vertical variable must be a string');\n }\n _widgetPositioning.vertical = _widgetPositioning.vertical.toLowerCase();\n if (verticalModes.indexOf(_widgetPositioning.vertical) === -1) {\n throw new TypeError(\"widgetPositioning() expects vertical parameter to be one of (\" + verticalModes.join(', ') + \")\");\n }\n this._options.widgetPositioning.vertical = _widgetPositioning.vertical;\n }\n this._update();\n };\n _proto2.widgetParent = function widgetParent(_widgetParent) {\n if (arguments.length === 0) {\n return this._options.widgetParent;\n }\n if (typeof _widgetParent === 'string') {\n _widgetParent = $(_widgetParent);\n }\n if (_widgetParent !== null && typeof _widgetParent !== 'string' && !(_widgetParent instanceof $)) {\n throw new TypeError('widgetParent() expects a string or a jQuery object parameter');\n }\n this._options.widgetParent = _widgetParent;\n if (this.widget) {\n this.hide();\n this.show();\n }\n };\n _proto2.setMultiDate = function setMultiDate(multiDateArray) {\n var dateFormat = this._options.format;\n this.clear();\n for (var index = 0; index < multiDateArray.length; index++) {\n var date = moment(multiDateArray[index], dateFormat);\n this._setValue(date, index);\n }\n } //static\n ;\n\n TempusDominusBootstrap4._jQueryHandleThis = function _jQueryHandleThis(me, option, argument) {\n var data = $(me).data(DateTimePicker.DATA_KEY);\n if (typeof option === 'object') {\n $.extend({}, DateTimePicker.Default, option);\n }\n if (!data) {\n data = new TempusDominusBootstrap4($(me), option);\n $(me).data(DateTimePicker.DATA_KEY, data);\n }\n if (typeof option === 'string') {\n if (data[option] === undefined) {\n throw new Error(\"No method named \\\"\" + option + \"\\\"\");\n }\n if (argument === undefined) {\n return data[option]();\n } else {\n if (option === 'date') {\n data.isDateUpdateThroughDateOptionFromClientCode = true;\n }\n var ret = data[option](argument);\n data.isDateUpdateThroughDateOptionFromClientCode = false;\n return ret;\n }\n }\n };\n TempusDominusBootstrap4._jQueryInterface = function _jQueryInterface(option, argument) {\n if (this.length === 1) {\n return TempusDominusBootstrap4._jQueryHandleThis(this[0], option, argument);\n }\n return this.each(function () {\n TempusDominusBootstrap4._jQueryHandleThis(this, option, argument);\n });\n };\n return TempusDominusBootstrap4;\n }(DateTimePicker);\n /**\r\n * ------------------------------------------------------------------------\r\n * jQuery\r\n * ------------------------------------------------------------------------\r\n */\n\n $(document).on(DateTimePicker.Event.CLICK_DATA_API, DateTimePicker.Selector.DATA_TOGGLE, function () {\n var $originalTarget = $(this),\n $target = getSelectorFromElement($originalTarget),\n config = $target.data(DateTimePicker.DATA_KEY);\n if ($target.length === 0) {\n return;\n }\n if (config._options.allowInputToggle && $originalTarget.is('input[data-toggle=\"datetimepicker\"]')) {\n return;\n }\n TempusDominusBootstrap4._jQueryInterface.call($target, 'toggle');\n }).on(DateTimePicker.Event.CHANGE, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\n var $target = getSelectorFromElement($(this));\n if ($target.length === 0 || event.isInit) {\n return;\n }\n TempusDominusBootstrap4._jQueryInterface.call($target, '_change', event);\n }).on(DateTimePicker.Event.BLUR, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\n var $target = getSelectorFromElement($(this)),\n config = $target.data(DateTimePicker.DATA_KEY);\n if ($target.length === 0) {\n return;\n }\n if (config._options.debug || window.debug) {\n return;\n }\n TempusDominusBootstrap4._jQueryInterface.call($target, 'hide', event);\n }).on(DateTimePicker.Event.KEYDOWN, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\n var $target = getSelectorFromElement($(this));\n if ($target.length === 0) {\n return;\n }\n TempusDominusBootstrap4._jQueryInterface.call($target, '_keydown', event);\n }).on(DateTimePicker.Event.KEYUP, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\n var $target = getSelectorFromElement($(this));\n if ($target.length === 0) {\n return;\n }\n TempusDominusBootstrap4._jQueryInterface.call($target, '_keyup', event);\n }).on(DateTimePicker.Event.FOCUS, \".\" + DateTimePicker.ClassName.INPUT, function (event) {\n var $target = getSelectorFromElement($(this)),\n config = $target.data(DateTimePicker.DATA_KEY);\n if ($target.length === 0) {\n return;\n }\n if (!config._options.allowInputToggle) {\n return;\n }\n TempusDominusBootstrap4._jQueryInterface.call($target, 'show', event);\n });\n $.fn[DateTimePicker.NAME] = TempusDominusBootstrap4._jQueryInterface;\n $.fn[DateTimePicker.NAME].Constructor = TempusDominusBootstrap4;\n $.fn[DateTimePicker.NAME].noConflict = function () {\n $.fn[DateTimePicker.NAME] = JQUERY_NO_CONFLICT;\n return TempusDominusBootstrap4._jQueryInterface;\n };\n return TempusDominusBootstrap4;\n }(jQuery);\n}();","import * as Highcharts from \"highcharts\"\n\n// HighCharts\n$(document).on('turbo:load', function() {\n Highcharts.setOptions({\n lang: {\n printChart: 'Aaaa',\n thousandsSep: ','\n }\n });\n});\n \n$(document).on('turbo:load', function() {\n function coordinates(element) {\n element = $(element);\n var top = element.position().top;\n var left = element.position().left;\n $('.top-coord').val(top)\n $('.left-coord').val(left)\n }\n\n $('.draggable').draggable({\n start: function() {\n coordinates(this);\n },\n stop: function() {\n coordinates(this);\n }\n });\n});\n\n\n\n","import * as Clipboard from \"vendor/clipboard.min.js\"\n\n$(document).on('turbo:load', function() {\n loadClipboard();\n});\n\n// Clipboards (uses clipboard.min.js)\nwindow.loadClipboard = function() {\n var clipboard = new Clipboard('.btn-clipboard');\n\n clipboard.on('success', function(e) {\n console.log(e);\n });\n\n clipboard.on('error', function(e) {\n console.log(e);\n });\n\n changeClipboardButton();\n};\n\nfunction changeClipboardButton(){\n $('.copyemailButton').on(\"click\", function(){\n var $this = $(this);\n $this.find( '.fa' ).removeClass('fa-copy').addClass('fa-check')\n $this.find( '.copyemailText' ).text('Email Copied!');\n });\n\n $('.copylinkButton').on(\"click\", function(){\n var $this = $(this)\n $this.find( '.fa' ).removeClass('fa-copy').addClass('fa-check')\n $this.find( '.copylinkText' ).text('copied!');\n });\n};","//\n// Mailgun Address Validation Plugin\n//\n// Attaching to a form:\n//\n// $('jquery_selector').mailgun_validator({\n// api_key: 'api-key',\n// in_progress: in_progress_callback, // called when request is made to validator\n// success: success_callback, // called when validator has returned\n// error: validation_error, // called when an error reaching the validator has occured\n// });\n//\n//\n// Sample JSON in success callback:\n//\n// {\n// \"is_valid\": true,\n// \"parts\": {\n// \"local_part\": \"john.smith@example.com\",\n// \"domain\": \"example.com\",\n// \"display_name\": \"\"\n// },\n// \"address\": \"john.smith@example.com\",\n// \"did_you_mean\": null\n// }\n//\n// More API details: https://api.mailgun.net/v2/address\n//\n\n(function( $ ) {\n $.fn.mailgun_validator = function(options) {\n return this.each(function() {\n var thisElement = $(this);\n thisElement.focusout(function(e) {\n //Trim string and autocorrect whitespace issues\n var elementValue = thisElement.val();\n elementValue = $.trim(elementValue);\n thisElement.val(elementValue);\n\n //Attach event to options\n options.e = e;\n\n run_validator(elementValue, options, thisElement);\n });\n });\n };\n\n function run_validator(address_text, options, element) {\n //Abort existing AJAX Request to prevent flooding\n if(element.mailgunRequest) {\n element.mailgunRequest.abort();\n element.mailgunRequest = null;\n }\n\n // don't run validator without input\n if (!address_text) {\n return;\n }\n\n // validator is in progress\n if (options && options.in_progress) {\n options.in_progress(options.e);\n }\n\n // don't run dupicate calls\n if (element.mailgunLastSuccessReturn) {\n if (address_text == element.mailgunLastSuccessReturn.address) {\n if (options && options.success) {\n options.success(element.mailgunLastSuccessReturn, options.e);\n }\n return;\n }\n }\n\n // length and @ syntax check\n var error_message = false;\n if (address_text.length > 512)\n error_message = 'Email address exceeds maxiumum allowable length of 512.';\n else if (1 !== address_text.split('@').length-1)\n error_message = 'Email address must contain only one @.';\n\n if (error_message) {\n if (options && options.error) {\n options.error(error_message, options.e);\n }\n else {\n if (console) console.log(error_message);\n }\n return;\n }\n\n // require api key\n if (options && options.api_key == undefined) {\n if (console) console.log('Please pass in api_key to mailgun_validator.');\n }\n\n // timeout incase of some kind of internal server error\n var timeoutID = setTimeout(function() {\n error_message = 'Error occurred, unable to validate address.';\n if (!success) {\n //Abort existing AJAX Request for a true timeout\n if(element.mailgunRequest) {\n element.mailgunRequest.abort();\n element.mailgunRequest = null;\n }\n\n if (options && options.error) {\n options.error(error_message, options.e);\n }\n else {\n if (console) console.log(error_message);\n }\n }\n }, 30000); //30 seconds\n\n // make ajax call to get validation results\n element.mailgunRequest = $.ajax({\n type: \"GET\",\n url: 'https://api.mailgun.net/v2/address/validate?callback=?',\n data: { address: address_text, api_key: options.api_key },\n dataType: \"jsonp\",\n crossDomain: true,\n success: function(data, status_text) {\n clearTimeout(timeoutID);\n\n element.mailgunLastSuccessReturn = data;\n if (options && options.success) {\n options.success(data, options.e);\n }\n },\n error: function(request, status_text, error) {\n clearTimeout(timeoutID);\n error_message = 'Error occurred, unable to validate address.';\n\n if (options && options.error) {\n options.error(error_message, options.e);\n }\n else {\n if (console) console.log(error_message);\n }\n }\n });\n }\n})( jQuery );","import Rails from '@rails/ujs';\n\n// document ready\n$(function() {\n // capture all enter and do nothing\n $('#registration_email, #user_message_email').keypress(function(e) {\n console.log(\"validation email field\")\n if(e.which == 13) {\n $('#registration_email, #user_message_email').trigger('focusout');\n return false;\n }\n });\n // capture clicks on validate and do nothing\n $(\"#validate_submit\").click(function() {\n return false;\n });\n\n // attach jquery plugin to validate address\n $('#registration_email, #user_message_email').mailgun_validator({\n api_key: 'pubkey-4f6a81e3f4324a9de334621471ef527d', // replace this with your Mailgun public API key\n in_progress: validation_in_progress,\n success: validation_success,\n error: validation_error,\n });\n});\n// while the lookup is performing\nfunction validation_in_progress() {\n console.log(\"validating email with Mailgun\")\n $('#email_status').html(\"\");\n $(\"input[type=submit], button[type=submit]\").attr('disabled','disabled');\n}\n// if email successfully validated\nfunction validation_success(data) {\n var valid = data['is_valid']\n var dym = data['did_you_mean']\n var form = document.getElementById('formEmailSubmit');\n $('#email_status').html(get_suggestion_str(data['is_valid'], data['did_you_mean']));\n\n if(valid == true) {\n $(\"input[type=submit], button[type=submit]\").removeAttr('disabled');\n }\n\n if (valid == true && form !== null){\n Rails.fire(form, 'submit'); \n }\n}\n// if email is invalid\nfunction validation_error(error_message) {\n $(\"input[type=submit], button[type=submit]\").attr('disabled','disabled');\n $('#email_status').html('<div class=\"email-error\">' + error_message + '</div>');\n\n}\n// suggest a valid email\nfunction get_suggestion_str(is_valid, alternate) {\n if (is_valid) {\n var result = '';\n if (alternate) {\n result += '<div class=\"email-error\">Did you mean <em>' + alternate + '</em>?</div>';\n }\n return result\n } else if (alternate) {\n return '<div class=\"email-error\">Did you mean <em>' + alternate + '</em>?</div>';\n } else {\n return '<div class=\"email-error\"><span class=\"fa fa-warning register-icon\"></span>Email Address is invalid.</div>';\n }\n}","/**\n * @version: 1.0 Alpha-1\n * @author: Coolite Inc. http://www.coolite.com/\n * @date: 2008-05-13\n * @copyright: Copyright (c) 2006-2008, Coolite Inc. (http://www.coolite.com/). All rights reserved.\n * @license: Licensed under The MIT License. See license.txt and http://www.datejs.com/license/. \n * @website: http://www.datejs.com/\n */\nDate.CultureInfo={name:\"en-US\",englishName:\"English (United States)\",nativeName:\"English (United States)\",dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],abbreviatedDayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],shortestDayNames:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],firstLetterDayNames:[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"],monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],abbreviatedMonthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],amDesignator:\"AM\",pmDesignator:\"PM\",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:\"mdy\",formatPatterns:{shortDate:\"M/d/yyyy\",longDate:\"dddd, MMMM dd, yyyy\",shortTime:\"h:mm tt\",longTime:\"h:mm:ss tt\",fullDateTime:\"dddd, MMMM dd, yyyy h:mm:ss tt\",sortableDateTime:\"yyyy-MM-ddTHH:mm:ss\",universalSortableDateTime:\"yyyy-MM-dd HH:mm:ssZ\",rfc1123:\"ddd, dd MMM yyyy HH:mm:ss GMT\",monthDay:\"MMMM dd\",yearMonth:\"MMMM, yyyy\"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\\+|aft(er)?|from|hence)/i,subtract:/^(\\-|bef(ore)?|ago)/i,yesterday:/^yes(terday)?/i,today:/^t(od(ay)?)?/i,tomorrow:/^tom(orrow)?/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^mn|min(ute)?s?/i,hour:/^h(our)?s?/i,week:/^w(eek)?s?/i,month:/^m(onth)?s?/i,day:/^d(ay)?s?/i,year:/^y(ear)?s?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\\.?m?\\.?|p\\.?m?\\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)/i,ordinalSuffix:/^\\s*(st|nd|rd|th)/i,timeContext:/^\\s*(\\:|a(?!u|p)|p)/i},timezones:[{name:\"UTC\",offset:\"-000\"},{name:\"GMT\",offset:\"-000\"},{name:\"EST\",offset:\"-0500\"},{name:\"EDT\",offset:\"-0400\"},{name:\"CST\",offset:\"-0600\"},{name:\"CDT\",offset:\"-0500\"},{name:\"MST\",offset:\"-0700\"},{name:\"MDT\",offset:\"-0600\"},{name:\"PST\",offset:\"-0800\"},{name:\"PDT\",offset:\"-0700\"}]};\n(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,p=function(s,l){if(!l){l=2;}\nreturn(\"000\"+s).slice(l*-1);};$P.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};$P.setTimeToNow=function(){var n=new Date();this.setHours(n.getHours());this.setMinutes(n.getMinutes());this.setSeconds(n.getSeconds());this.setMilliseconds(n.getMilliseconds());return this;};$D.today=function(){return new Date().clearTime();};$D.compare=function(date1,date2){if(isNaN(date1)||isNaN(date2)){throw new Error(date1+\" - \"+date2);}else if(date1 instanceof Date&&date2 instanceof Date){return(date1<date2)?-1:(date1>date2)?1:0;}else{throw new TypeError(date1+\" - \"+date2);}};$D.equals=function(date1,date2){return(date1.compareTo(date2)===0);};$D.getDayNumberFromName=function(name){var n=$C.dayNames,m=$C.abbreviatedDayNames,o=$C.shortestDayNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s||o[i].toLowerCase()==s){return i;}}\nreturn-1;};$D.getMonthNumberFromName=function(name){var n=$C.monthNames,m=$C.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}\nreturn-1;};$D.isLeapYear=function(year){return((year%4===0&&year%100!==0)||year%400===0);};$D.getDaysInMonth=function(year,month){return[31,($D.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month];};$D.getTimezoneAbbreviation=function(offset){var z=$C.timezones,p;for(var i=0;i<z.length;i++){if(z[i].offset===offset){return z[i].name;}}\nreturn null;};$D.getTimezoneOffset=function(name){var z=$C.timezones,p;for(var i=0;i<z.length;i++){if(z[i].name===name.toUpperCase()){return z[i].offset;}}\nreturn null;};$P.clone=function(){return new Date(this.getTime());};$P.compareTo=function(date){return Date.compare(this,date);};$P.equals=function(date){return Date.equals(this,date||new Date());};$P.between=function(start,end){return this.getTime()>=start.getTime()&&this.getTime()<=end.getTime();};$P.isAfter=function(date){return this.compareTo(date||new Date())===1;};$P.isBefore=function(date){return(this.compareTo(date||new Date())===-1);};$P.isToday=function(){return this.isSameDay(new Date());};$P.isSameDay=function(date){return this.clone().clearTime().equals(date.clone().clearTime());};$P.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};$P.addSeconds=function(value){return this.addMilliseconds(value*1000);};$P.addMinutes=function(value){return this.addMilliseconds(value*60000);};$P.addHours=function(value){return this.addMilliseconds(value*3600000);};$P.addDays=function(value){this.setDate(this.getDate()+value);return this;};$P.addWeeks=function(value){return this.addDays(value*7);};$P.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,$D.getDaysInMonth(this.getFullYear(),this.getMonth())));return this;};$P.addYears=function(value){return this.addMonths(value*12);};$P.add=function(config){if(typeof config==\"number\"){this._orient=config;return this;}\nvar x=config;if(x.milliseconds){this.addMilliseconds(x.milliseconds);}\nif(x.seconds){this.addSeconds(x.seconds);}\nif(x.minutes){this.addMinutes(x.minutes);}\nif(x.hours){this.addHours(x.hours);}\nif(x.weeks){this.addWeeks(x.weeks);}\nif(x.months){this.addMonths(x.months);}\nif(x.years){this.addYears(x.years);}\nif(x.days){this.addDays(x.days);}\nreturn this;};var $y,$m,$d;$P.getWeek=function(){var a,b,c,d,e,f,g,n,s,w;$y=(!$y)?this.getFullYear():$y;$m=(!$m)?this.getMonth()+1:$m;$d=(!$d)?this.getDate():$d;if($m<=2){a=$y-1;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);s=b-c;e=0;f=$d-1+(31*($m-1));}else{a=$y;b=(a/4|0)-(a/100|0)+(a/400|0);c=((a-1)/4|0)-((a-1)/100|0)+((a-1)/400|0);s=b-c;e=s+1;f=$d+((153*($m-3)+2)/5)+58+s;}\ng=(a+b)%7;d=(f+g-e)%7;n=(f+3-d)|0;if(n<0){w=53-((g-s)/5|0);}else if(n>364+s){w=1;}else{w=(n/7|0)+1;}\n$y=$m=$d=null;return w;};$P.getISOWeek=function(){$y=this.getUTCFullYear();$m=this.getUTCMonth()+1;$d=this.getUTCDate();return p(this.getWeek());};$P.setWeek=function(n){return this.moveToDayOfWeek(1).addWeeks(n-this.getWeek());};$D._validate=function(n,min,max,name){if(typeof n==\"undefined\"){return false;}else if(typeof n!=\"number\"){throw new TypeError(n+\" is not a Number.\");}else if(n<min||n>max){throw new RangeError(n+\" is not a valid value for \"+name+\".\");}\nreturn true;};$D.validateMillisecond=function(value){return $D._validate(value,0,999,\"millisecond\");};$D.validateSecond=function(value){return $D._validate(value,0,59,\"second\");};$D.validateMinute=function(value){return $D._validate(value,0,59,\"minute\");};$D.validateHour=function(value){return $D._validate(value,0,23,\"hour\");};$D.validateDay=function(value,year,month){return $D._validate(value,1,$D.getDaysInMonth(year,month),\"day\");};$D.validateMonth=function(value){return $D._validate(value,0,11,\"month\");};$D.validateYear=function(value){return $D._validate(value,0,9999,\"year\");};$P.set=function(config){if($D.validateMillisecond(config.millisecond)){this.addMilliseconds(config.millisecond-this.getMilliseconds());}\nif($D.validateSecond(config.second)){this.addSeconds(config.second-this.getSeconds());}\nif($D.validateMinute(config.minute)){this.addMinutes(config.minute-this.getMinutes());}\nif($D.validateHour(config.hour)){this.addHours(config.hour-this.getHours());}\nif($D.validateMonth(config.month)){this.addMonths(config.month-this.getMonth());}\nif($D.validateYear(config.year)){this.addYears(config.year-this.getFullYear());}\nif($D.validateDay(config.day,this.getFullYear(),this.getMonth())){this.addDays(config.day-this.getDate());}\nif(config.timezone){this.setTimezone(config.timezone);}\nif(config.timezoneOffset){this.setTimezoneOffset(config.timezoneOffset);}\nif(config.week&&$D._validate(config.week,0,53,\"week\")){this.setWeek(config.week);}\nreturn this;};$P.moveToFirstDayOfMonth=function(){return this.set({day:1});};$P.moveToLastDayOfMonth=function(){return this.set({day:$D.getDaysInMonth(this.getFullYear(),this.getMonth())});};$P.moveToNthOccurrence=function(dayOfWeek,occurrence){var shift=0;if(occurrence>0){shift=occurrence-1;}\nelse if(occurrence===-1){this.moveToLastDayOfMonth();if(this.getDay()!==dayOfWeek){this.moveToDayOfWeek(dayOfWeek,-1);}\nreturn this;}\nreturn this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(dayOfWeek,+1).addWeeks(shift);};$P.moveToDayOfWeek=function(dayOfWeek,orient){var diff=(dayOfWeek-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};$P.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};$P.getOrdinalNumber=function(){return Math.ceil((this.clone().clearTime()-new Date(this.getFullYear(),0,1))/86400000)+1;};$P.getTimezone=function(){return $D.getTimezoneAbbreviation(this.getUTCOffset());};$P.setTimezoneOffset=function(offset){var here=this.getTimezoneOffset(),there=Number(offset)*-6/10;return this.addMinutes(there-here);};$P.setTimezone=function(offset){return this.setTimezoneOffset($D.getTimezoneOffset(offset));};$P.hasDaylightSavingTime=function(){return(Date.today().set({month:0,day:1}).getTimezoneOffset()!==Date.today().set({month:6,day:1}).getTimezoneOffset());};$P.isDaylightSavingTime=function(){return(this.hasDaylightSavingTime()&&new Date().getTimezoneOffset()===Date.today().set({month:6,day:1}).getTimezoneOffset());};$P.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r.charAt(0)+r.substr(2);}else{r=(n+10000).toString();return\"+\"+r.substr(1);}};$P.getElapsed=function(date){return(date||new Date())-this;};if(!$P.toISOString){$P.toISOString=function(){function f(n){return n<10?'0'+n:n;}\nreturn'\"'+this.getUTCFullYear()+'-'+\nf(this.getUTCMonth()+1)+'-'+\nf(this.getUTCDate())+'T'+\nf(this.getUTCHours())+':'+\nf(this.getUTCMinutes())+':'+\nf(this.getUTCSeconds())+'Z\"';};}\n$P._toString=$P.toString;$P.toString=function(format){var x=this;if(format&&format.length==1){var c=$C.formatPatterns;x.t=x.toString;switch(format){case\"d\":return x.t(c.shortDate);case\"D\":return x.t(c.longDate);case\"F\":return x.t(c.fullDateTime);case\"m\":return x.t(c.monthDay);case\"r\":return x.t(c.rfc1123);case\"s\":return x.t(c.sortableDateTime);case\"t\":return x.t(c.shortTime);case\"T\":return x.t(c.longTime);case\"u\":return x.t(c.universalSortableDateTime);case\"y\":return x.t(c.yearMonth);}}\nvar ord=function(n){switch(n*1){case 1:case 21:case 31:return\"st\";case 2:case 22:return\"nd\";case 3:case 23:return\"rd\";default:return\"th\";}};return format?format.replace(/(\\\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S)/g,function(m){if(m.charAt(0)===\"\\\\\"){return m.replace(\"\\\\\",\"\");}\nx.h=x.getHours;switch(m){case\"hh\":return p(x.h()<13?(x.h()===0?12:x.h()):(x.h()-12));case\"h\":return x.h()<13?(x.h()===0?12:x.h()):(x.h()-12);case\"HH\":return p(x.h());case\"H\":return x.h();case\"mm\":return p(x.getMinutes());case\"m\":return x.getMinutes();case\"ss\":return p(x.getSeconds());case\"s\":return x.getSeconds();case\"yyyy\":return p(x.getFullYear(),4);case\"yy\":return p(x.getFullYear());case\"dddd\":return $C.dayNames[x.getDay()];case\"ddd\":return $C.abbreviatedDayNames[x.getDay()];case\"dd\":return p(x.getDate());case\"d\":return x.getDate();case\"MMMM\":return $C.monthNames[x.getMonth()];case\"MMM\":return $C.abbreviatedMonthNames[x.getMonth()];case\"MM\":return p((x.getMonth()+1));case\"M\":return x.getMonth()+1;case\"t\":return x.h()<12?$C.amDesignator.substring(0,1):$C.pmDesignator.substring(0,1);case\"tt\":return x.h()<12?$C.amDesignator:$C.pmDesignator;case\"S\":return ord(x.getDate());default:return m;}}):this._toString();};}());\n(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo,$N=Number.prototype;$P._orient=+1;$P._nth=null;$P._is=false;$P._same=false;$P._isSecond=false;$N._dateElement=\"day\";$P.next=function(){this._orient=+1;return this;};$D.next=function(){return $D.today().next();};$P.last=$P.prev=$P.previous=function(){this._orient=-1;return this;};$D.last=$D.prev=$D.previous=function(){return $D.today().last();};$P.is=function(){this._is=true;return this;};$P.same=function(){this._same=true;this._isSecond=false;return this;};$P.today=function(){return this.same().day();};$P.weekday=function(){if(this._is){this._is=false;return(!this.is().sat()&&!this.is().sun());}\nreturn false;};$P.at=function(time){return(typeof time===\"string\")?$D.parse(this.toString(\"d\")+\" \"+time):this.set(time);};$N.fromNow=$N.after=function(date){var c={};c[this._dateElement]=this;return((!date)?new Date():date.clone()).add(c);};$N.ago=$N.before=function(date){var c={};c[this._dateElement]=this*-1;return((!date)?new Date():date.clone()).add(c);};var dx=(\"sunday monday tuesday wednesday thursday friday saturday\").split(/\\s/),mx=(\"january february march april may june july august september october november december\").split(/\\s/),px=(\"Millisecond Second Minute Hour Day Week Month Year\").split(/\\s/),pxf=(\"Milliseconds Seconds Minutes Hours Date Week Month FullYear\").split(/\\s/),nth=(\"final first second third fourth fifth\").split(/\\s/),de;$P.toObject=function(){var o={};for(var i=0;i<px.length;i++){o[px[i].toLowerCase()]=this[\"get\"+pxf[i]]();}\nreturn o;};$D.fromObject=function(config){config.week=null;return Date.today().set(config);};var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;}\nif(this._nth!==null){if(this._isSecond){this.addSeconds(this._orient*-1);}\nthis._isSecond=false;var ntemp=this._nth;this._nth=null;var temp=this.clone().moveToLastDayOfMonth();this.moveToNthOccurrence(n,ntemp);if(this>temp){throw new RangeError($D.getDayName(n)+\" does not occur \"+ntemp+\" times in the month of \"+$D.getMonthName(temp.getMonth())+\" \"+temp.getFullYear()+\".\");}\nreturn this;}\nreturn this.moveToDayOfWeek(n,this._orient);};};var sdf=function(n){return function(){var t=$D.today(),shift=n-t.getDay();if(n===0&&$C.firstDayOfWeek===1&&t.getDay()!==0){shift=shift+7;}\nreturn t.addDays(shift);};};for(var i=0;i<dx.length;i++){$D[dx[i].toUpperCase()]=$D[dx[i].toUpperCase().substring(0,3)]=i;$D[dx[i]]=$D[dx[i].substring(0,3)]=sdf(i);$P[dx[i]]=$P[dx[i].substring(0,3)]=df(i);}\nvar mf=function(n){return function(){if(this._is){this._is=false;return this.getMonth()===n;}\nreturn this.moveToMonth(n,this._orient);};};var smf=function(n){return function(){return $D.today().set({month:n,day:1});};};for(var j=0;j<mx.length;j++){$D[mx[j].toUpperCase()]=$D[mx[j].toUpperCase().substring(0,3)]=j;$D[mx[j]]=$D[mx[j].substring(0,3)]=smf(j);$P[mx[j]]=$P[mx[j].substring(0,3)]=mf(j);}\nvar ef=function(j){return function(){if(this._isSecond){this._isSecond=false;return this;}\nif(this._same){this._same=this._is=false;var o1=this.toObject(),o2=(arguments[0]||new Date()).toObject(),v=\"\",k=j.toLowerCase();for(var m=(px.length-1);m>-1;m--){v=px[m].toLowerCase();if(o1[v]!=o2[v]){return false;}\nif(k==v){break;}}\nreturn true;}\nif(j.substring(j.length-1)!=\"s\"){j+=\"s\";}\nreturn this[\"add\"+j](this._orient);};};var nf=function(n){return function(){this._dateElement=n;return this;};};for(var k=0;k<px.length;k++){de=px[k].toLowerCase();$P[de]=$P[de+\"s\"]=ef(px[k]);$N[de]=$N[de+\"s\"]=nf(de);}\n$P._ss=ef(\"Second\");var nthfn=function(n){return function(dayOfWeek){if(this._same){return this._ss(arguments[0]);}\nif(dayOfWeek||dayOfWeek===0){return this.moveToNthOccurrence(dayOfWeek,n);}\nthis._nth=n;if(n===2&&(dayOfWeek===undefined||dayOfWeek===null)){this._isSecond=true;return this.addSeconds(this._orient);}\nreturn this;};};for(var l=0;l<nth.length;l++){$P[nth[l]]=(l===0)?nthfn(-1):nthfn(l);}}());\n(function(){Date.Parsing={Exception:function(s){this.message=\"Parse error at '\"+s.substring(0,10)+\" ...'\";}};var $P=Date.Parsing;var _=$P.Operators={rtoken:function(r){return function(s){var mx=s.match(r);if(mx){return([mx[0],s.substring(mx[0].length)]);}else{throw new $P.Exception(s);}};},token:function(s){return function(s){return _.rtoken(new RegExp(\"^\\s*\"+s+\"\\s*\"))(s);};},stoken:function(s){return _.rtoken(new RegExp(\"^\"+s));},until:function(p){return function(s){var qx=[],rx=null;while(s.length){try{rx=p.call(this,s);}catch(e){qx.push(rx[0]);s=rx[1];continue;}\nbreak;}\nreturn[qx,s];};},many:function(p){return function(s){var rx=[],r=null;while(s.length){try{r=p.call(this,s);}catch(e){return[rx,s];}\nrx.push(r[0]);s=r[1];}\nreturn[rx,s];};},optional:function(p){return function(s){var r=null;try{r=p.call(this,s);}catch(e){return[null,s];}\nreturn[r[0],r[1]];};},not:function(p){return function(s){try{p.call(this,s);}catch(e){return[null,s];}\nthrow new $P.Exception(s);};},ignore:function(p){return p?function(s){var r=null;r=p.call(this,s);return[null,r[1]];}:null;},product:function(){var px=arguments[0],qx=Array.prototype.slice.call(arguments,1),rx=[];for(var i=0;i<px.length;i++){rx.push(_.each(px[i],qx));}\nreturn rx;},cache:function(rule){var cache={},r=null;return function(s){try{r=cache[s]=(cache[s]||rule.call(this,s));}catch(e){r=cache[s]=e;}\nif(r instanceof $P.Exception){throw r;}else{return r;}};},any:function(){var px=arguments;return function(s){var r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}\ntry{r=(px[i].call(this,s));}catch(e){r=null;}\nif(r){return r;}}\nthrow new $P.Exception(s);};},each:function(){var px=arguments;return function(s){var rx=[],r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}\ntry{r=(px[i].call(this,s));}catch(e){throw new $P.Exception(s);}\nrx.push(r[0]);s=r[1];}\nreturn[rx,s];};},all:function(){var px=arguments,_=_;return _.each(_.optional(px));},sequence:function(px,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;if(px.length==1){return px[0];}\nreturn function(s){var r=null,q=null;var rx=[];for(var i=0;i<px.length;i++){try{r=px[i].call(this,s);}catch(e){break;}\nrx.push(r[0]);try{q=d.call(this,r[1]);}catch(ex){q=null;break;}\ns=q[1];}\nif(!r){throw new $P.Exception(s);}\nif(q){throw new $P.Exception(q[1]);}\nif(c){try{r=c.call(this,r[1]);}catch(ey){throw new $P.Exception(r[1]);}}\nreturn[rx,(r?r[1]:s)];};},between:function(d1,p,d2){d2=d2||d1;var _fn=_.each(_.ignore(d1),p,_.ignore(d2));return function(s){var rx=_fn.call(this,s);return[[rx[0][0],r[0][2]],rx[1]];};},list:function(p,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;return(p instanceof Array?_.each(_.product(p.slice(0,-1),_.ignore(d)),p.slice(-1),_.ignore(c)):_.each(_.many(_.each(p,_.ignore(d))),px,_.ignore(c)));},set:function(px,d,c){d=d||_.rtoken(/^\\s*/);c=c||null;return function(s){var r=null,p=null,q=null,rx=null,best=[[],s],last=false;for(var i=0;i<px.length;i++){q=null;p=null;r=null;last=(px.length==1);try{r=px[i].call(this,s);}catch(e){continue;}\nrx=[[r[0]],r[1]];if(r[1].length>0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;}\nif(!last&&q[1].length===0){last=true;}\nif(!last){var qx=[];for(var j=0;j<px.length;j++){if(i!=j){qx.push(px[j]);}}\np=_.set(qx,d).call(this,q[1]);if(p[0].length>0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}}\nif(rx[1].length<best[1].length){best=rx;}\nif(best[1].length===0){break;}}\nif(best[0].length===0){return best;}\nif(c){try{q=c.call(this,best[1]);}catch(ey){throw new $P.Exception(best[1]);}\nbest[1]=q[1];}\nreturn best;};},forward:function(gr,fname){return function(s){return gr[fname].call(this,s);};},replace:function(rule,repl){return function(s){var r=rule.call(this,s);return[repl,r[1]];};},process:function(rule,fn){return function(s){var r=rule.call(this,s);return[fn.call(this,r[0]),r[1]];};},min:function(min,rule){return function(s){var rx=rule.call(this,s);if(rx[0].length<min){throw new $P.Exception(s);}\nreturn rx;};}};var _generator=function(op){return function(){var args=null,rx=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];}\nif(args){for(var i=0,px=args.shift();i<px.length;i++){args.unshift(px[i]);rx.push(op.apply(null,args));args.shift();return rx;}}else{return op.apply(null,arguments);}};};var gx=\"optional not ignore cache\".split(/\\s/);for(var i=0;i<gx.length;i++){_[gx[i]]=_generator(_[gx[i]]);}\nvar _vector=function(op){return function(){if(arguments[0]instanceof Array){return op.apply(null,arguments[0]);}else{return op.apply(null,arguments);}};};var vx=\"each any all\".split(/\\s/);for(var j=0;j<vx.length;j++){_[vx[j]]=_vector(_[vx[j]]);}}());(function(){var $D=Date,$P=$D.prototype,$C=$D.CultureInfo;var flattenAndCompact=function(ax){var rx=[];for(var i=0;i<ax.length;i++){if(ax[i]instanceof Array){rx=rx.concat(flattenAndCompact(ax[i]));}else{if(ax[i]){rx.push(ax[i]);}}}\nreturn rx;};$D.Grammar={};$D.Translator={hour:function(s){return function(){this.hour=Number(s);};},minute:function(s){return function(){this.minute=Number(s);};},second:function(s){return function(){this.second=Number(s);};},meridian:function(s){return function(){this.meridian=s.slice(0,1).toLowerCase();};},timezone:function(s){return function(){var n=s.replace(/[^\\d\\+\\-]/g,\"\");if(n.length){this.timezoneOffset=Number(n);}else{this.timezone=s.toLowerCase();}};},day:function(x){var s=x[0];return function(){this.day=Number(s.match(/\\d+/)[0]);};},month:function(s){return function(){this.month=(s.length==3)?\"jan feb mar apr may jun jul aug sep oct nov dec\".indexOf(s)/4:Number(s)-1;};},year:function(s){return function(){var n=Number(s);this.year=((s.length>2)?n:(n+(((n+2000)<$C.twoDigitYearMax)?2000:1900)));};},rday:function(s){return function(){switch(s){case\"yesterday\":this.days=-1;break;case\"tomorrow\":this.days=1;break;case\"today\":this.days=0;break;case\"now\":this.days=0;this.now=true;break;}};},finishExact:function(x){x=(x instanceof Array)?x:[x];for(var i=0;i<x.length;i++){if(x[i]){x[i].call(this);}}\nvar now=new Date();if((this.hour||this.minute)&&(!this.month&&!this.year&&!this.day)){this.day=now.getDate();}\nif(!this.year){this.year=now.getFullYear();}\nif(!this.month&&this.month!==0){this.month=now.getMonth();}\nif(!this.day){this.day=1;}\nif(!this.hour){this.hour=0;}\nif(!this.minute){this.minute=0;}\nif(!this.second){this.second=0;}\nif(this.meridian&&this.hour){if(this.meridian==\"p\"&&this.hour<12){this.hour=this.hour+12;}else if(this.meridian==\"a\"&&this.hour==12){this.hour=0;}}\nif(this.day>$D.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+\" is not a valid value for days.\");}\nvar r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});}\nreturn r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;}\nfor(var i=0;i<x.length;i++){if(typeof x[i]==\"function\"){x[i].call(this);}}\nvar today=$D.today();if(this.now&&!this.unit&&!this.operator){return new Date();}else if(this.now){today=new Date();}\nvar expression=!!(this.days&&this.days!==null||this.orient||this.operator);var gap,mod,orient;orient=((this.orient==\"past\"||this.operator==\"subtract\")?-1:1);if(!this.now&&\"hour minute second\".indexOf(this.unit)!=-1){today.setTimeToNow();}\nif(this.month||this.month===0){if(\"year day hour minute second\".indexOf(this.unit)!=-1){this.value=this.month+1;this.month=null;expression=true;}}\nif(!expression&&this.weekday&&!this.day&&!this.days){var temp=Date[this.weekday]();this.day=temp.getDate();if(!this.month){this.month=temp.getMonth();}\nthis.year=temp.getFullYear();}\nif(expression&&this.weekday&&this.unit!=\"month\"){this.unit=\"day\";gap=($D.getDayNumberFromName(this.weekday)-today.getDay());mod=7;this.days=gap?((gap+(orient*mod))%mod):(orient*mod);}\nif(this.month&&this.unit==\"day\"&&this.operator){this.value=(this.month+1);this.month=null;}\nif(this.value!=null&&this.month!=null&&this.year!=null){this.day=this.value*1;}\nif(this.month&&!this.day&&this.value){today.set({day:this.value*1});if(!expression){this.day=this.value*1;}}\nif(!this.month&&this.value&&this.unit==\"month\"&&!this.now){this.month=this.value;expression=true;}\nif(expression&&(this.month||this.month===0)&&this.unit!=\"year\"){this.unit=\"month\";gap=(this.month-today.getMonth());mod=12;this.months=gap?((gap+(orient*mod))%mod):(orient*mod);this.month=null;}\nif(!this.unit){this.unit=\"day\";}\nif(!this.value&&this.operator&&this.operator!==null&&this[this.unit+\"s\"]&&this[this.unit+\"s\"]!==null){this[this.unit+\"s\"]=this[this.unit+\"s\"]+((this.operator==\"add\")?1:-1)+(this.value||0)*orient;}else if(this[this.unit+\"s\"]==null||this.operator!=null){if(!this.value){this.value=1;}\nthis[this.unit+\"s\"]=this.value*orient;}\nif(this.meridian&&this.hour){if(this.meridian==\"p\"&&this.hour<12){this.hour=this.hour+12;}else if(this.meridian==\"a\"&&this.hour==12){this.hour=0;}}\nif(this.weekday&&!this.day&&!this.days){var temp=Date[this.weekday]();this.day=temp.getDate();if(temp.getMonth()!==today.getMonth()){this.month=temp.getMonth();}}\nif((this.month||this.month===0)&&!this.day){this.day=1;}\nif(!this.orient&&!this.operator&&this.unit==\"week\"&&this.value&&!this.day&&!this.month){return Date.today().setWeek(this.value);}\nif(expression&&this.timezone&&this.day&&this.days){this.day=this.days;}\nreturn(expression)?today.add(this):today.set(this);}};var _=$D.Parsing.Operators,g=$D.Grammar,t=$D.Translator,_fn;g.datePartDelimiter=_.rtoken(/^([\\s\\-\\.\\,\\/\\x27]+)/);g.timePartDelimiter=_.stoken(\":\");g.whiteSpace=_.rtoken(/^\\s*/);g.generalDelimiter=_.rtoken(/^(([\\s\\,]|at|@|on)+)/);var _C={};g.ctoken=function(keys){var fn=_C[keys];if(!fn){var c=$C.regexPatterns;var kx=keys.split(/\\s+/),px=[];for(var i=0;i<kx.length;i++){px.push(_.replace(_.rtoken(c[kx[i]]),kx[i]));}\nfn=_C[keys]=_.any.apply(null,px);}\nreturn fn;};g.ctoken2=function(key){return _.rtoken($C.regexPatterns[key]);};g.h=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),t.hour));g.hh=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/),t.hour));g.H=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),t.hour));g.HH=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/),t.hour));g.m=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.minute));g.mm=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.minute));g.s=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.second));g.ss=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.second));g.hms=_.cache(_.sequence([g.H,g.m,g.s],g.timePartDelimiter));g.t=_.cache(_.process(g.ctoken2(\"shortMeridian\"),t.meridian));g.tt=_.cache(_.process(g.ctoken2(\"longMeridian\"),t.meridian));g.z=_.cache(_.process(_.rtoken(/^((\\+|\\-)\\s*\\d\\d\\d\\d)|((\\+|\\-)\\d\\d\\:?\\d\\d)/),t.timezone));g.zz=_.cache(_.process(_.rtoken(/^((\\+|\\-)\\s*\\d\\d\\d\\d)|((\\+|\\-)\\d\\d\\:?\\d\\d)/),t.timezone));g.zzz=_.cache(_.process(g.ctoken2(\"timezone\"),t.timezone));g.timeSuffix=_.each(_.ignore(g.whiteSpace),_.set([g.tt,g.zzz]));g.time=_.each(_.optional(_.ignore(_.stoken(\"T\"))),g.hms,g.timeSuffix);g.d=_.cache(_.process(_.each(_.rtoken(/^([0-2]\\d|3[0-1]|\\d)/),_.optional(g.ctoken2(\"ordinalSuffix\"))),t.day));g.dd=_.cache(_.process(_.each(_.rtoken(/^([0-2]\\d|3[0-1])/),_.optional(g.ctoken2(\"ordinalSuffix\"))),t.day));g.ddd=g.dddd=_.cache(_.process(g.ctoken(\"sun mon tue wed thu fri sat\"),function(s){return function(){this.weekday=s;};}));g.M=_.cache(_.process(_.rtoken(/^(1[0-2]|0\\d|\\d)/),t.month));g.MM=_.cache(_.process(_.rtoken(/^(1[0-2]|0\\d)/),t.month));g.MMM=g.MMMM=_.cache(_.process(g.ctoken(\"jan feb mar apr may jun jul aug sep oct nov dec\"),t.month));g.y=_.cache(_.process(_.rtoken(/^(\\d\\d?)/),t.year));g.yy=_.cache(_.process(_.rtoken(/^(\\d\\d)/),t.year));g.yyy=_.cache(_.process(_.rtoken(/^(\\d\\d?\\d?\\d?)/),t.year));g.yyyy=_.cache(_.process(_.rtoken(/^(\\d\\d\\d\\d)/),t.year));_fn=function(){return _.each(_.any.apply(null,arguments),_.not(g.ctoken2(\"timeContext\")));};g.day=_fn(g.d,g.dd);g.month=_fn(g.M,g.MMM);g.year=_fn(g.yyyy,g.yy);g.orientation=_.process(g.ctoken(\"past future\"),function(s){return function(){this.orient=s;};});g.operator=_.process(g.ctoken(\"add subtract\"),function(s){return function(){this.operator=s;};});g.rday=_.process(g.ctoken(\"yesterday tomorrow today now\"),t.rday);g.unit=_.process(g.ctoken(\"second minute hour day week month year\"),function(s){return function(){this.unit=s;};});g.value=_.process(_.rtoken(/^\\d\\d?(st|nd|rd|th)?/),function(s){return function(){this.value=s.replace(/\\D/g,\"\");};});g.expression=_.set([g.rday,g.operator,g.value,g.unit,g.orientation,g.ddd,g.MMM]);_fn=function(){return _.set(arguments,g.datePartDelimiter);};g.mdy=_fn(g.ddd,g.month,g.day,g.year);g.ymd=_fn(g.ddd,g.year,g.month,g.day);g.dmy=_fn(g.ddd,g.day,g.month,g.year);g.date=function(s){return((g[$C.dateElementOrder]||g.mdy).call(this,s));};g.format=_.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(fmt){if(g[fmt]){return g[fmt];}else{throw $D.Parsing.Exception(fmt);}}),_.process(_.rtoken(/^[^dMyhHmstz]+/),function(s){return _.ignore(_.stoken(s));}))),function(rules){return _.process(_.each.apply(null,rules),t.finishExact);});var _F={};var _get=function(f){return _F[f]=(_F[f]||g.format(f)[0]);};g.formats=function(fx){if(fx instanceof Array){var rx=[];for(var i=0;i<fx.length;i++){rx.push(_get(fx[i]));}\nreturn _.any.apply(null,rx);}else{return _get(fx);}};g._formats=g.formats([\"\\\"yyyy-MM-ddTHH:mm:ssZ\\\"\",\"yyyy-MM-ddTHH:mm:ssZ\",\"yyyy-MM-ddTHH:mm:ssz\",\"yyyy-MM-ddTHH:mm:ss\",\"yyyy-MM-ddTHH:mmZ\",\"yyyy-MM-ddTHH:mmz\",\"yyyy-MM-ddTHH:mm\",\"ddd, MMM dd, yyyy H:mm:ss tt\",\"ddd MMM d yyyy HH:mm:ss zzz\",\"MMddyyyy\",\"ddMMyyyy\",\"Mddyyyy\",\"ddMyyyy\",\"Mdyyyy\",\"dMyyyy\",\"yyyy\",\"Mdyy\",\"dMyy\",\"d\"]);g._start=_.process(_.set([g.date,g.time,g.expression],g.generalDelimiter,g.whiteSpace),t.finish);g.start=function(s){try{var r=g._formats.call({},s);if(r[1].length===0){return r;}}catch(e){}\nreturn g._start.call({},s);};$D._parse=$D.parse;$D.parse=function(s){var r=null;if(!s){return null;}\nif(s instanceof Date){return s;}\ntry{r=$D.Grammar.start.call({},s.replace(/^\\s*(\\S*(\\s+\\S+)*)\\s*$/,\"$1\"));}catch(e){return null;}\nreturn((r[1].length===0)?r[0]:null);};$D.getParseFunction=function(fx){var fn=$D.Grammar.formats(fx);return function(s){var r=null;try{r=fn.call({},s);}catch(e){return null;}\nreturn((r[1].length===0)?r[0]:null);};};$D.parseExact=function(s,fx){return $D.getParseFunction(fx)(s);};}());\n","import rangy from \"rangy\";\nimport \"rangy/lib/rangy-classapplier\";\nimport * as MediumEditor from \"medium-editor\"\nimport MediumInsert from \"medium-editor-insert-plugin\"\nwindow.MediumInsert = MediumInsert.MediumInsert;\n\n$(document).on('turbo:load', function() {\n miniEditable();\n standardEditable();\n contenaEditable();\n});\n\nwindow.standardEditable = function(){\n rangy.init();\n \n var HighlighterButton = MediumEditor.extensions.button.extend({\n name: 'highlighter',\n tagNames: ['mark'], // nodeName which indicates the button should be 'active' when isAlreadyApplied() is called\n contentDefault: '<span class=\"fas fa-highlighter\"></span>', // default innerHTML of the button\n aria: 'highlighter', // used as both aria-label and title attributes\n action: 'highlighter', // used as the data-action attribute of the button\n\n init: function () {\n MediumEditor.extensions.button.prototype.init.call(this);\n \n this.classApplier = rangy.createClassApplier('highlighter', {\n elementTagName: 'mark',\n normalize: true,\n });\n },\n \n handleClick: function (event) {\n this.classApplier.toggleSelection();\n this.base.checkContentChanged();\n }\n\n });\n\n var CodeButton = MediumEditor.extensions.button.extend({\n name: 'code',\n tagNames: ['code'], // nodeName which indicates the button should be 'active' when isAlreadyApplied() is called\n contentDefault: '<span class=\"fas fa-code\"></span>', // default innerHTML of the button\n aria: 'code', // used as both aria-label and title attributes\n action: 'code', // used as the data-action attribute of the button\n \n init: function () {\n MediumEditor.extensions.button.prototype.init.call(this);\n \n this.classApplier = rangy.createClassApplier('code', {\n elementTagName: 'code',\n normalize: true,\n });\n },\n \n handleClick: function (event) {\n this.classApplier.toggleSelection();\n this.base.checkContentChanged();\n }\n });\n\n /** Call Medium Editors **/\n\n var editor = new MediumEditor('.editable', {\n placeholder: {\n text: 'Blank document',\n hideOnClick: false\n },\n paste: {\n forcePlainText: false,\n cleanPastedHTML: true,\n cleanReplacements: [\n /* Alignment */\n [new RegExp(/<center/gi), '<div align=\"center\">'],\n [new RegExp(/<\\/center>/gi), '</div>'],\n [new RegExp(/<aside/gi), '<p'],\n [new RegExp(/<\\/aside>/gi), '</p>'],\n\n /* Blockquote */\n [new RegExp(/<q>/gi), '<blockquote>'],\n [new RegExp(/<\\/q>/gi), '</blockquote>'],\n\n /* Bold*/\n [new RegExp(/<em>/gi), '<i>'],\n [new RegExp(/<\\/em>/gi), '</i>'],\n [new RegExp(/<strong/gi), '<b'],\n [new RegExp(/<\\/strong>/gi), '</b>'],\n\n /* Headings */\n [new RegExp(/<h[1-3]/gi), '<h2'], // Convert h1 - h2 to heading (h2)\n [new RegExp(/<\\/h[1-3]>/gi), '</h2>'],\n [new RegExp(/<h[4-6]/gi), '<p><b'], // Convert h3 - h6 to bold paragraph\n [new RegExp(/<\\/h[4-6]>/gi), '</p></b>'],\n ],\n cleanAttrs:['class','id','style','dir','lang','paraid','paraeid','xml:lang'],\n cleanTags:['basefont','center','data','dialog','fieldset','form','frame','iframe','meta','noscript','object','script','section','span']\n },\n toolbar: {\n diffTop: -20,\n buttons: [\n {\n name: 'bold',\n contentDefault: '<span class=\"fas fa-bold\"></span>',\n },\n {\n name: 'italic',\n contentDefault: '<span class=\"fas fa-italic\"></span>',\n },\n {\n name: 'underline',\n contentDefault: '<span class=\"fas fa-underline\"></span>',\n },\n {\n name: 'strikethrough',\n contentDefault: '<span class=\"fas fa-strikethrough\"></span>',\n }, \n {\n name: 'h2',\n contentDefault: '<span class=\"fas fa-heading\"></span>',\n }, \n {\n name: 'quote',\n contentDefault: '<span class=\"fas fa-quote-left\"></span>',\n }, \n {\n name: 'unorderedlist',\n contentDefault: '<span class=\"fas fa-list-ul\"></span>',\n },\n {\n name: 'orderedlist',\n contentDefault: '<span class=\"fas fa-list-ol\"></span>',\n },\n {\n name: 'anchor',\n contentDefault: '<span class=\"fas fa-link\"></span>',\n },\n {\n name: 'removeFormat',\n contentDefault: '<span class=\"fas fa-text-slash\"></span>',\n }\n ]\n },\n extensions: {\n 'highlighter': new HighlighterButton(),\n 'code': new CodeButton()\n },\n anchor: {\n /* These are the default options for anchor form,\n if nothing is passed this is what it used */\n customClassOption: null,\n customClassOptionText: 'Button',\n linkValidation: false,\n placeholderText: 'Paste or type a link',\n targetCheckbox: false,\n targetCheckboxText: 'Open in new window'\n },\n keyboardCommands: {\n /* This example includes the default options for keyboardCommands,\n if nothing is passed this is what it used */\n commands: [\n {\n command: 'bold',\n key: 'B',\n meta: true,\n shift: false,\n alt: false\n },\n {\n command: 'italic',\n key: 'I',\n meta: true,\n shift: false,\n alt: false\n },\n {\n command: 'underline',\n key: 'U',\n meta: true,\n shift: false,\n alt: false\n },\n {\n command: 'strikethrough',\n key: 'X',\n meta: true,\n shift: true,\n alt: false\n },\n {\n command: 'append-blockquote',\n key: 'B',\n meta: true,\n shift: true,\n alt: false\n },\n {\n command: 'append-h2',\n key: 'H',\n meta: true,\n shift: true,\n alt: false\n },\n {\n command: 'insertunorderedlist',\n key: 'J',\n meta: true,\n shift: true,\n alt: false\n },\n {\n command: 'insertorderedlist',\n key: 'L',\n meta: true,\n shift: true,\n alt: false\n },\n {\n command: 'createlink',\n key: 'K',\n meta: true,\n shift: false,\n alt: false\n }\n ],\n }\n });\n $(function () {\n var postId = $('.post-form-wrapper').attr(\"data-post-id\")\n $('.editable').mediumInsert({\n editor: editor,\n paste: {\n forcePlainText: false,\n cleanPastedHTML: true,\n cleanReplacements: [\n /* Alignment */\n [new RegExp(/<center/gi), '<div align=\"center\">'],\n [new RegExp(/<\\/center>/gi), '</div>'],\n [new RegExp(/<aside/gi), '<p'],\n [new RegExp(/<\\/aside>/gi), '</p>'],\n \n /* Blockquote */\n [new RegExp(/<q>/gi), '<blockquote>'],\n [new RegExp(/<\\/q>/gi), '</blockquote>'],\n \n /* Bold*/\n [new RegExp(/<em>/gi), '<i>'],\n [new RegExp(/<\\/em>/gi), '</i>'],\n [new RegExp(/<strong/gi), '<b'],\n [new RegExp(/<\\/strong>/gi), '</b>'],\n \n /* Headings */\n [new RegExp(/<h[1-3]/gi), '<h2'], // Convert h1 - h2 to heading (h2)\n [new RegExp(/<\\/h[1-3]>/gi), '</h2>'],\n [new RegExp(/<h[4-6]/gi), '<p><b'], // Convert h3 - h6 to bold paragraph\n [new RegExp(/<\\/h[4-6]>/gi), '</p></b>'],\n ],\n cleanAttrs:['class','id','style','dir','lang','paraid','paraeid','xml:lang'],\n cleanTags:['basefont','center','data','dialog','fieldset','form','frame','iframe','meta','noscript','object','script','section','span']\n },\n addons: {\n images: {\n label: '<span class=\"fas fa-upload medium-upload-icon\"></span>',\n captionPlaceholder: 'Image caption (optional)', // (string) Caption placeholder\n deleteScript: '',\n fileUploadOptions: {\n url: `images/upload`,\n type: 'post',\n acceptFileTypes: /(.|\\/)(gif|jpe?g|png)$/i,\n }\n },\n embeds: { // (object) Embeds addon configuration\n label: '<span class=\"fab fa-twitter medium-embed-icon\"></span>', // (string) A label for an embeds addon\n placeholder: 'Add link to social media post and press enter', // (string) Placeholder displayed when entering URL to embed\n captions: true, // (boolean) Enable captions\n captionPlaceholder: 'Content caption (optional)', // (string) Caption placeholder\n oembedProxy: 'https://iframe.ly/api/oembed?api_key=afa509950953f241ca464c&iframe=1', // (string/null) URL to oEmbed proxy endpoint, such as Iframely, Embedly or your own. You are welcome to use \"http://medium.iframe.ly/api/oembed?iframe=1\" for your dev and testing needs, courtesy of Iframely. *Null* will make the plugin use pre-defined set of embed rules without making server calls.\n actions: { // (object) Actions for an optional second toolbar\n remove: { // (object) Remove action configuration\n label: '<span class=\"fa fa-times\"></span>', // (string) Label for an action\n clicked: function ($el) { // (function) Callback function called when an action is selected\n var $event = $.Event('keydown');\n\n $event.which = 8;\n $(document).trigger($event);\n }\n }\n }\n },\n }\n });\n });\n}\n\nwindow.contenaEditable = function(){\n var editor = new MediumEditor('.contenaeditable', {\n toolbar: {\n buttons: [\n {\n name: 'bold',\n contentDefault: '<span class=\"fas fa-bold\"></span>',\n },\n {\n name: 'italic',\n contentDefault: '<span class=\"fas fa-italic\"></span>',\n },\n {\n name: 'underline',\n contentDefault: '<span class=\"fas fa-underline\"></span>',\n },\n {\n name: 'strikethrough',\n contentDefault: '<span class=\"fas fa-strikethrough\"></span>',\n },\n {\n name: 'h2',\n contentDefault: '<span class=\"fas fa-heading\"></span>',\n }, \n {\n name: 'quote',\n contentDefault: '<span class=\"fas fa-quote-left\"></span>',\n },\n {\n name: 'superscript',\n contentDefault: '<span class=\"fas fa-megaphone\"></span>',\n },\n {\n name: 'anchor',\n contentDefault: '<span class=\"fas fa-link\"></span>',\n },\n {\n name: 'unorderedlist',\n contentDefault: '<span class=\"fas fa-list-ul\"></span>',\n },\n {\n name: 'orderedlist',\n contentDefault: '<span class=\"fas fa-list-ol\"></span>',\n },\n {\n name: 'removeFormat',\n contentDefault: '<span class=\"fas fa-text-slash\"></span>',\n }\n ]\n },\n anchor: {\n /* These are the default options for anchor form,\n if nothing is passed this is what it used */\n customClassOption: null,\n customClassOptionText: 'Button',\n linkValidation: false,\n placeholderText: 'Paste or type a link',\n targetCheckbox: false,\n targetCheckboxText: 'Open in new window'\n }\n });\n $(function () {\n var postId = $('.post-form-wrapper').attr(\"data-post-id\")\n $('.contenaeditable').mediumInsert({\n editor: editor,\n addons: {\n images: {\n label: '<span class=\"fas fa-upload medium-upload-icon\"></span>',\n captionPlaceholder: 'Image caption (optional)', // (string) Caption placeholder\n deleteScript: '',\n fileUploadOptions: {\n url: 'images/upload',\n type: 'post',\n acceptFileTypes: /(.|\\/)(gif|jpe?g|png)$/i,\n }\n },\n embeds: { // (object) Embeds addon configuration\n label: '<span class=\"fab fa-twitter medium-embed-icon\"></span>', // (string) A label for an embeds addon\n placeholder: 'Add link to social media post and press enter', // (string) Placeholder displayed when entering URL to embed\n captions: true, // (boolean) Enable captions\n captionPlaceholder: 'Content caption (optional)', // (string) Caption placeholder\n oembedProxy: 'https://iframe.ly/api/oembed?api_key=afa509950953f241ca464c&iframe=1', // (string/null) URL to oEmbed proxy endpoint, such as Iframely, Embedly or your own. You are welcome to use \"http://medium.iframe.ly/api/oembed?iframe=1\" for your dev and testing needs, courtesy of Iframely. *Null* will make the plugin use pre-defined set of embed rules without making server calls.\n actions: { // (object) Actions for an optional second toolbar\n remove: { // (object) Remove action configuration\n label: '<span class=\"fa fa-times\"></span>', // (string) Label for an action\n clicked: function ($el) { // (function) Callback function called when an action is selected\n var $event = $.Event('keydown');\n\n $event.which = 8;\n $(document).trigger($event);\n } \n }\n }\n }\n }\n });\n });\n}\n\n\n\nwindow.miniEditable = function(){\n /** Limited Medium Editor Config **/\n var minieditor = new MediumEditor('.minieditable', {\n toolbar: {\n buttons: [\n {\n name: 'bold',\n contentDefault: '<span class=\"fas fa-bold\"></span>',\n },\n {\n name: 'italic',\n contentDefault: '<span class=\"fas fa-italic\"></span>',\n },\n {\n name: 'underline',\n contentDefault: '<span class=\"fas fa-underline\"></span>',\n },\n {\n name: 'strikethrough',\n contentDefault: '<span class=\"fas fa-strikethrough\"></span>',\n },\n {\n name: 'anchor',\n contentDefault: '<span class=\"fas fa-link\"></span>',\n },\n {\n name: 'unorderedlist',\n contentDefault: '<span class=\"fas fa-list-ul\"></span>',\n },\n {\n name: 'orderedlist',\n contentDefault: '<span class=\"fas fa-list-ol\"></span>',\n }\n ]\n },\n anchor: {\n /* These are the default options for anchor form,\n if nothing is passed this is what it used */\n customClassOption: null,\n customClassOptionText: 'Button',\n linkValidation: false,\n placeholderText: 'Paste or type a link',\n targetCheckbox: false,\n targetCheckboxText: 'Open in new window'\n }\n });\n}\n","/**\n * Class Applier module for Rangy.\n * Adds, removes and toggles classes on Ranges and Selections\n *\n * Part of Rangy, a cross-browser JavaScript range and selection library\n * https://github.com/timdown/rangy\n *\n * Depends on Rangy core.\n *\n * Copyright 2022, Tim Down\n * Licensed under the MIT license.\n * Version: 1.3.1\n * Build date: 17 August 2022\n */\n(function (factory, root) {\n if (typeof define == \"function\" && define.amd) {\n // AMD. Register as an anonymous module with a dependency on Rangy.\n define([\"./rangy-core\"], factory);\n } else if (typeof module != \"undefined\" && typeof exports == \"object\") {\n // Node/CommonJS style\n module.exports = factory(require(\"rangy\"));\n } else {\n // No AMD or CommonJS support so we use the rangy property of root (probably the global variable)\n factory(root.rangy);\n }\n})(function (rangy) {\n rangy.createModule(\"ClassApplier\", [\"WrappedSelection\"], function (api, module) {\n var dom = api.dom;\n var DomPosition = dom.DomPosition;\n var contains = dom.arrayContains;\n var util = api.util;\n var forEach = util.forEach;\n var defaultTagName = \"span\";\n var createElementNSSupported = util.isHostMethod(document, \"createElementNS\");\n function each(obj, func) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (func(i, obj[i]) === false) {\n return false;\n }\n }\n }\n return true;\n }\n function trim(str) {\n return str.replace(/^\\s\\s*/, \"\").replace(/\\s\\s*$/, \"\");\n }\n function classNameContainsClass(fullClassName, className) {\n return !!fullClassName && new RegExp(\"(?:^|\\\\s)\" + className + \"(?:\\\\s|$)\").test(fullClassName);\n }\n\n // Inefficient, inelegant nonsense for IE's svg element, which has no classList and non-HTML className implementation\n function hasClass(el, className) {\n if (typeof el.classList == \"object\") {\n return el.classList.contains(className);\n } else {\n var classNameSupported = typeof el.className == \"string\";\n var elClass = classNameSupported ? el.className : el.getAttribute(\"class\");\n return classNameContainsClass(elClass, className);\n }\n }\n function addClass(el, className) {\n if (typeof el.classList == \"object\") {\n el.classList.add(className);\n } else {\n var classNameSupported = typeof el.className == \"string\";\n var elClass = classNameSupported ? el.className : el.getAttribute(\"class\");\n if (elClass) {\n if (!classNameContainsClass(elClass, className)) {\n elClass += \" \" + className;\n }\n } else {\n elClass = className;\n }\n if (classNameSupported) {\n el.className = elClass;\n } else {\n el.setAttribute(\"class\", elClass);\n }\n }\n }\n var removeClass = function () {\n function replacer(matched, whiteSpaceBefore, whiteSpaceAfter) {\n return whiteSpaceBefore && whiteSpaceAfter ? \" \" : \"\";\n }\n return function (el, className) {\n if (typeof el.classList == \"object\") {\n el.classList.remove(className);\n } else {\n var classNameSupported = typeof el.className == \"string\";\n var elClass = classNameSupported ? el.className : el.getAttribute(\"class\");\n elClass = elClass.replace(new RegExp(\"(^|\\\\s)\" + className + \"(\\\\s|$)\"), replacer);\n if (classNameSupported) {\n el.className = elClass;\n } else {\n el.setAttribute(\"class\", elClass);\n }\n }\n };\n }();\n function getClass(el) {\n var classNameSupported = typeof el.className == \"string\";\n return classNameSupported ? el.className : el.getAttribute(\"class\");\n }\n function sortClassName(className) {\n return className && className.split(/\\s+/).sort().join(\" \");\n }\n function getSortedClassName(el) {\n return sortClassName(getClass(el));\n }\n function haveSameClasses(el1, el2) {\n return getSortedClassName(el1) == getSortedClassName(el2);\n }\n function hasAllClasses(el, className) {\n var classes = className.split(/\\s+/);\n for (var i = 0, len = classes.length; i < len; ++i) {\n if (!hasClass(el, trim(classes[i]))) {\n return false;\n }\n }\n return true;\n }\n function canTextBeStyled(textNode) {\n var parent = textNode.parentNode;\n return parent && parent.nodeType == 1 && !/^(textarea|style|script|select|iframe)$/i.test(parent.nodeName);\n }\n function movePosition(position, oldParent, oldIndex, newParent, newIndex) {\n var posNode = position.node,\n posOffset = position.offset;\n var newNode = posNode,\n newOffset = posOffset;\n if (posNode == newParent && posOffset > newIndex) {\n ++newOffset;\n }\n if (posNode == oldParent && (posOffset == oldIndex || posOffset == oldIndex + 1)) {\n newNode = newParent;\n newOffset += newIndex - oldIndex;\n }\n if (posNode == oldParent && posOffset > oldIndex + 1) {\n --newOffset;\n }\n position.node = newNode;\n position.offset = newOffset;\n }\n function movePositionWhenRemovingNode(position, parentNode, index) {\n if (position.node == parentNode && position.offset > index) {\n --position.offset;\n }\n }\n function movePreservingPositions(node, newParent, newIndex, positionsToPreserve) {\n // For convenience, allow newIndex to be -1 to mean \"insert at the end\".\n if (newIndex == -1) {\n newIndex = newParent.childNodes.length;\n }\n var oldParent = node.parentNode;\n var oldIndex = dom.getNodeIndex(node);\n forEach(positionsToPreserve, function (position) {\n movePosition(position, oldParent, oldIndex, newParent, newIndex);\n });\n\n // Now actually move the node.\n if (newParent.childNodes.length == newIndex) {\n newParent.appendChild(node);\n } else {\n newParent.insertBefore(node, newParent.childNodes[newIndex]);\n }\n }\n function removePreservingPositions(node, positionsToPreserve) {\n var oldParent = node.parentNode;\n var oldIndex = dom.getNodeIndex(node);\n forEach(positionsToPreserve, function (position) {\n movePositionWhenRemovingNode(position, oldParent, oldIndex);\n });\n dom.removeNode(node);\n }\n function moveChildrenPreservingPositions(node, newParent, newIndex, removeNode, positionsToPreserve) {\n var child,\n children = [];\n while (child = node.firstChild) {\n movePreservingPositions(child, newParent, newIndex++, positionsToPreserve);\n children.push(child);\n }\n if (removeNode) {\n removePreservingPositions(node, positionsToPreserve);\n }\n return children;\n }\n function replaceWithOwnChildrenPreservingPositions(element, positionsToPreserve) {\n return moveChildrenPreservingPositions(element, element.parentNode, dom.getNodeIndex(element), true, positionsToPreserve);\n }\n function rangeSelectsAnyText(range, textNode) {\n var textNodeRange = range.cloneRange();\n textNodeRange.selectNodeContents(textNode);\n var intersectionRange = textNodeRange.intersection(range);\n var text = intersectionRange ? intersectionRange.toString() : \"\";\n return text != \"\";\n }\n function getEffectiveTextNodes(range) {\n var nodes = range.getNodes([3]);\n\n // Optimization as per issue 145\n\n // Remove non-intersecting text nodes from the start of the range\n var start = 0,\n node;\n while ((node = nodes[start]) && !rangeSelectsAnyText(range, node)) {\n ++start;\n }\n\n // Remove non-intersecting text nodes from the start of the range\n var end = nodes.length - 1;\n while ((node = nodes[end]) && !rangeSelectsAnyText(range, node)) {\n --end;\n }\n return nodes.slice(start, end + 1);\n }\n function elementsHaveSameNonClassAttributes(el1, el2) {\n if (el1.attributes.length != el2.attributes.length) return false;\n for (var i = 0, len = el1.attributes.length, attr1, attr2, name; i < len; ++i) {\n attr1 = el1.attributes[i];\n name = attr1.name;\n if (name != \"class\") {\n attr2 = el2.attributes.getNamedItem(name);\n if (attr1 === null != (attr2 === null)) return false;\n if (attr1.specified != attr2.specified) return false;\n if (attr1.specified && attr1.nodeValue !== attr2.nodeValue) return false;\n }\n }\n return true;\n }\n function elementHasNonClassAttributes(el, exceptions) {\n for (var i = 0, len = el.attributes.length, attrName; i < len; ++i) {\n attrName = el.attributes[i].name;\n if (!(exceptions && contains(exceptions, attrName)) && el.attributes[i].specified && attrName != \"class\") {\n return true;\n }\n }\n return false;\n }\n var getComputedStyleProperty = dom.getComputedStyleProperty;\n var isEditableElement = function () {\n var testEl = document.createElement(\"div\");\n return typeof testEl.isContentEditable == \"boolean\" ? function (node) {\n return node && node.nodeType == 1 && node.isContentEditable;\n } : function (node) {\n if (!node || node.nodeType != 1 || node.contentEditable == \"false\") {\n return false;\n }\n return node.contentEditable == \"true\" || isEditableElement(node.parentNode);\n };\n }();\n function isEditingHost(node) {\n var parent;\n return node && node.nodeType == 1 && ((parent = node.parentNode) && parent.nodeType == 9 && parent.designMode == \"on\" || isEditableElement(node) && !isEditableElement(node.parentNode));\n }\n function isEditable(node) {\n return (isEditableElement(node) || node.nodeType != 1 && isEditableElement(node.parentNode)) && !isEditingHost(node);\n }\n var inlineDisplayRegex = /^inline(-block|-table)?$/i;\n function isNonInlineElement(node) {\n return node && node.nodeType == 1 && !inlineDisplayRegex.test(getComputedStyleProperty(node, \"display\"));\n }\n\n // White space characters as defined by HTML 4 (http://www.w3.org/TR/html401/struct/text.html)\n var htmlNonWhiteSpaceRegex = /[^\\r\\n\\t\\f \\u200B]/;\n function isUnrenderedWhiteSpaceNode(node) {\n if (node.data.length == 0) {\n return true;\n }\n if (htmlNonWhiteSpaceRegex.test(node.data)) {\n return false;\n }\n var cssWhiteSpace = getComputedStyleProperty(node.parentNode, \"whiteSpace\");\n switch (cssWhiteSpace) {\n case \"pre\":\n case \"pre-wrap\":\n case \"-moz-pre-wrap\":\n return false;\n case \"pre-line\":\n if (/[\\r\\n]/.test(node.data)) {\n return false;\n }\n }\n\n // We now have a whitespace-only text node that may be rendered depending on its context. If it is adjacent to a\n // non-inline element, it will not be rendered. This seems to be a good enough definition.\n return isNonInlineElement(node.previousSibling) || isNonInlineElement(node.nextSibling);\n }\n function getRangeBoundaries(ranges) {\n var positions = [],\n i,\n range;\n for (i = 0; range = ranges[i++];) {\n positions.push(new DomPosition(range.startContainer, range.startOffset), new DomPosition(range.endContainer, range.endOffset));\n }\n return positions;\n }\n function updateRangesFromBoundaries(ranges, positions) {\n for (var i = 0, range, start, end, len = ranges.length; i < len; ++i) {\n range = ranges[i];\n start = positions[i * 2];\n end = positions[i * 2 + 1];\n range.setStartAndEnd(start.node, start.offset, end.node, end.offset);\n }\n }\n function isSplitPoint(node, offset) {\n if (dom.isCharacterDataNode(node)) {\n if (offset == 0) {\n return !!node.previousSibling;\n } else if (offset == node.length) {\n return !!node.nextSibling;\n } else {\n return true;\n }\n }\n return offset > 0 && offset < node.childNodes.length;\n }\n function splitNodeAt(node, descendantNode, descendantOffset, positionsToPreserve) {\n var newNode, parentNode;\n var splitAtStart = descendantOffset == 0;\n if (dom.isAncestorOf(descendantNode, node)) {\n return node;\n }\n if (dom.isCharacterDataNode(descendantNode)) {\n var descendantIndex = dom.getNodeIndex(descendantNode);\n if (descendantOffset == 0) {\n descendantOffset = descendantIndex;\n } else if (descendantOffset == descendantNode.length) {\n descendantOffset = descendantIndex + 1;\n } else {\n throw module.createError(\"splitNodeAt() should not be called with offset in the middle of a data node (\" + descendantOffset + \" in \" + descendantNode.data);\n }\n descendantNode = descendantNode.parentNode;\n }\n if (isSplitPoint(descendantNode, descendantOffset)) {\n // descendantNode is now guaranteed not to be a text or other character node\n newNode = descendantNode.cloneNode(false);\n parentNode = descendantNode.parentNode;\n if (newNode.id) {\n newNode.removeAttribute(\"id\");\n }\n var child,\n newChildIndex = 0;\n while (child = descendantNode.childNodes[descendantOffset]) {\n movePreservingPositions(child, newNode, newChildIndex++, positionsToPreserve);\n }\n movePreservingPositions(newNode, parentNode, dom.getNodeIndex(descendantNode) + 1, positionsToPreserve);\n return descendantNode == node ? newNode : splitNodeAt(node, parentNode, dom.getNodeIndex(newNode), positionsToPreserve);\n } else if (node != descendantNode) {\n newNode = descendantNode.parentNode;\n\n // Work out a new split point in the parent node\n var newNodeIndex = dom.getNodeIndex(descendantNode);\n if (!splitAtStart) {\n newNodeIndex++;\n }\n return splitNodeAt(node, newNode, newNodeIndex, positionsToPreserve);\n }\n return node;\n }\n function areElementsMergeable(el1, el2) {\n return el1.namespaceURI == el2.namespaceURI && el1.tagName.toLowerCase() == el2.tagName.toLowerCase() && haveSameClasses(el1, el2) && elementsHaveSameNonClassAttributes(el1, el2) && getComputedStyleProperty(el1, \"display\") == \"inline\" && getComputedStyleProperty(el2, \"display\") == \"inline\";\n }\n function createAdjacentMergeableTextNodeGetter(forward) {\n var siblingPropName = forward ? \"nextSibling\" : \"previousSibling\";\n return function (textNode, checkParentElement) {\n var el = textNode.parentNode;\n var adjacentNode = textNode[siblingPropName];\n if (adjacentNode) {\n // Can merge if the node's previous/next sibling is a text node\n if (adjacentNode && adjacentNode.nodeType == 3) {\n return adjacentNode;\n }\n } else if (checkParentElement) {\n // Compare text node parent element with its sibling\n adjacentNode = el[siblingPropName];\n if (adjacentNode && adjacentNode.nodeType == 1 && areElementsMergeable(el, adjacentNode)) {\n var adjacentNodeChild = adjacentNode[forward ? \"firstChild\" : \"lastChild\"];\n if (adjacentNodeChild && adjacentNodeChild.nodeType == 3) {\n return adjacentNodeChild;\n }\n }\n }\n return null;\n };\n }\n var getPreviousMergeableTextNode = createAdjacentMergeableTextNodeGetter(false),\n getNextMergeableTextNode = createAdjacentMergeableTextNodeGetter(true);\n function Merge(firstNode) {\n this.isElementMerge = firstNode.nodeType == 1;\n this.textNodes = [];\n var firstTextNode = this.isElementMerge ? firstNode.lastChild : firstNode;\n if (firstTextNode) {\n this.textNodes[0] = firstTextNode;\n }\n }\n Merge.prototype = {\n doMerge: function (positionsToPreserve) {\n var textNodes = this.textNodes;\n var firstTextNode = textNodes[0];\n if (textNodes.length > 1) {\n var firstTextNodeIndex = dom.getNodeIndex(firstTextNode);\n var textParts = [],\n combinedTextLength = 0,\n textNode,\n parent;\n forEach(textNodes, function (textNode, i) {\n parent = textNode.parentNode;\n if (i > 0) {\n parent.removeChild(textNode);\n if (!parent.hasChildNodes()) {\n dom.removeNode(parent);\n }\n if (positionsToPreserve) {\n forEach(positionsToPreserve, function (position) {\n // Handle case where position is inside the text node being merged into a preceding node\n if (position.node == textNode) {\n position.node = firstTextNode;\n position.offset += combinedTextLength;\n }\n // Handle case where both text nodes precede the position within the same parent node\n if (position.node == parent && position.offset > firstTextNodeIndex) {\n --position.offset;\n if (position.offset == firstTextNodeIndex + 1 && i < textNodes.length - 1) {\n position.node = firstTextNode;\n position.offset = combinedTextLength;\n }\n }\n });\n }\n }\n textParts[i] = textNode.data;\n combinedTextLength += textNode.data.length;\n });\n firstTextNode.data = textParts.join(\"\");\n }\n return firstTextNode.data;\n },\n getLength: function () {\n var i = this.textNodes.length,\n len = 0;\n while (i--) {\n len += this.textNodes[i].length;\n }\n return len;\n },\n toString: function () {\n var textParts = [];\n forEach(this.textNodes, function (textNode, i) {\n textParts[i] = \"'\" + textNode.data + \"'\";\n });\n return \"[Merge(\" + textParts.join(\",\") + \")]\";\n }\n };\n var optionProperties = [\"elementTagName\", \"ignoreWhiteSpace\", \"applyToEditableOnly\", \"useExistingElements\", \"removeEmptyElements\", \"onElementCreate\"];\n\n // TODO: Populate this with every attribute name that corresponds to a property with a different name. Really??\n var attrNamesForProperties = {};\n function ClassApplier(className, options, tagNames) {\n var normalize,\n i,\n len,\n propName,\n applier = this;\n applier.cssClass = applier.className = className; // cssClass property is for backward compatibility\n\n var elementPropertiesFromOptions = null,\n elementAttributes = {};\n\n // Initialize from options object\n if (typeof options == \"object\" && options !== null) {\n if (typeof options.elementTagName !== \"undefined\") {\n options.elementTagName = options.elementTagName.toLowerCase();\n }\n tagNames = options.tagNames;\n elementPropertiesFromOptions = options.elementProperties;\n elementAttributes = options.elementAttributes;\n for (i = 0; propName = optionProperties[i++];) {\n if (options.hasOwnProperty(propName)) {\n applier[propName] = options[propName];\n }\n }\n normalize = options.normalize;\n } else {\n normalize = options;\n }\n\n // Backward compatibility: the second parameter can also be a Boolean indicating to normalize after unapplying\n applier.normalize = typeof normalize == \"undefined\" ? true : normalize;\n\n // Initialize element properties and attribute exceptions\n applier.attrExceptions = [];\n var el = document.createElement(applier.elementTagName);\n applier.elementProperties = applier.copyPropertiesToElement(elementPropertiesFromOptions, el, true);\n each(elementAttributes, function (attrName, attrValue) {\n applier.attrExceptions.push(attrName);\n // Ensure each attribute value is a string\n elementAttributes[attrName] = \"\" + attrValue;\n });\n applier.elementAttributes = elementAttributes;\n applier.elementSortedClassName = applier.elementProperties.hasOwnProperty(\"className\") ? sortClassName(applier.elementProperties.className + \" \" + className) : className;\n\n // Initialize tag names\n applier.applyToAnyTagName = false;\n var type = typeof tagNames;\n if (type == \"string\") {\n if (tagNames == \"*\") {\n applier.applyToAnyTagName = true;\n } else {\n applier.tagNames = trim(tagNames.toLowerCase()).split(/\\s*,\\s*/);\n }\n } else if (type == \"object\" && typeof tagNames.length == \"number\") {\n applier.tagNames = [];\n for (i = 0, len = tagNames.length; i < len; ++i) {\n if (tagNames[i] == \"*\") {\n applier.applyToAnyTagName = true;\n } else {\n applier.tagNames.push(tagNames[i].toLowerCase());\n }\n }\n } else {\n applier.tagNames = [applier.elementTagName];\n }\n }\n ClassApplier.prototype = {\n elementTagName: defaultTagName,\n elementProperties: {},\n elementAttributes: {},\n ignoreWhiteSpace: true,\n applyToEditableOnly: false,\n useExistingElements: true,\n removeEmptyElements: true,\n onElementCreate: null,\n copyPropertiesToElement: function (props, el, createCopy) {\n var s,\n elStyle,\n elProps = {},\n elPropsStyle,\n propValue,\n elPropValue,\n attrName;\n for (var p in props) {\n if (props.hasOwnProperty(p)) {\n propValue = props[p];\n elPropValue = el[p];\n\n // Special case for class. The copied properties object has the applier's class as well as its own\n // to simplify checks when removing styling elements\n if (p == \"className\") {\n addClass(el, propValue);\n addClass(el, this.className);\n el[p] = sortClassName(el[p]);\n if (createCopy) {\n elProps[p] = propValue;\n }\n }\n\n // Special case for style\n else if (p == \"style\") {\n elStyle = elPropValue;\n if (createCopy) {\n elProps[p] = elPropsStyle = {};\n }\n for (s in props[p]) {\n if (props[p].hasOwnProperty(s)) {\n elStyle[s] = propValue[s];\n if (createCopy) {\n elPropsStyle[s] = elStyle[s];\n }\n }\n }\n this.attrExceptions.push(p);\n } else {\n el[p] = propValue;\n // Copy the property back from the dummy element so that later comparisons to check whether\n // elements may be removed are checking against the right value. For example, the href property\n // of an element returns a fully qualified URL even if it was previously assigned a relative\n // URL.\n if (createCopy) {\n elProps[p] = el[p];\n\n // Not all properties map to identically-named attributes\n attrName = attrNamesForProperties.hasOwnProperty(p) ? attrNamesForProperties[p] : p;\n this.attrExceptions.push(attrName);\n }\n }\n }\n }\n return createCopy ? elProps : \"\";\n },\n copyAttributesToElement: function (attrs, el) {\n for (var attrName in attrs) {\n if (attrs.hasOwnProperty(attrName) && !/^class(?:Name)?$/i.test(attrName)) {\n el.setAttribute(attrName, attrs[attrName]);\n }\n }\n },\n appliesToElement: function (el) {\n return contains(this.tagNames, el.tagName.toLowerCase());\n },\n getEmptyElements: function (range) {\n var applier = this;\n return range.getNodes([1], function (el) {\n return applier.appliesToElement(el) && !el.hasChildNodes();\n });\n },\n hasClass: function (node) {\n return node.nodeType == 1 && (this.applyToAnyTagName || this.appliesToElement(node)) && hasClass(node, this.className);\n },\n getSelfOrAncestorWithClass: function (node) {\n while (node) {\n if (this.hasClass(node)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n },\n isModifiable: function (node) {\n return !this.applyToEditableOnly || isEditable(node);\n },\n // White space adjacent to an unwrappable node can be ignored for wrapping\n isIgnorableWhiteSpaceNode: function (node) {\n return this.ignoreWhiteSpace && node && node.nodeType == 3 && isUnrenderedWhiteSpaceNode(node);\n },\n // Normalizes nodes after applying a class to a Range.\n postApply: function (textNodes, range, positionsToPreserve, isUndo) {\n var firstNode = textNodes[0],\n lastNode = textNodes[textNodes.length - 1];\n var merges = [],\n currentMerge;\n var rangeStartNode = firstNode,\n rangeEndNode = lastNode;\n var rangeStartOffset = 0,\n rangeEndOffset = lastNode.length;\n var precedingTextNode;\n\n // Check for every required merge and create a Merge object for each\n forEach(textNodes, function (textNode) {\n precedingTextNode = getPreviousMergeableTextNode(textNode, !isUndo);\n if (precedingTextNode) {\n if (!currentMerge) {\n currentMerge = new Merge(precedingTextNode);\n merges.push(currentMerge);\n }\n currentMerge.textNodes.push(textNode);\n if (textNode === firstNode) {\n rangeStartNode = currentMerge.textNodes[0];\n rangeStartOffset = rangeStartNode.length;\n }\n if (textNode === lastNode) {\n rangeEndNode = currentMerge.textNodes[0];\n rangeEndOffset = currentMerge.getLength();\n }\n } else {\n currentMerge = null;\n }\n });\n\n // Test whether the first node after the range needs merging\n var nextTextNode = getNextMergeableTextNode(lastNode, !isUndo);\n if (nextTextNode) {\n if (!currentMerge) {\n currentMerge = new Merge(lastNode);\n merges.push(currentMerge);\n }\n currentMerge.textNodes.push(nextTextNode);\n }\n\n // Apply the merges\n if (merges.length) {\n for (var i = 0, len = merges.length; i < len; ++i) {\n merges[i].doMerge(positionsToPreserve);\n }\n\n // Set the range boundaries\n range.setStartAndEnd(rangeStartNode, rangeStartOffset, rangeEndNode, rangeEndOffset);\n }\n },\n createContainer: function (parentNode) {\n var doc = dom.getDocument(parentNode);\n var namespace;\n var el = createElementNSSupported && !dom.isHtmlNamespace(parentNode) && (namespace = parentNode.namespaceURI) ? doc.createElementNS(parentNode.namespaceURI, this.elementTagName) : doc.createElement(this.elementTagName);\n this.copyPropertiesToElement(this.elementProperties, el, false);\n this.copyAttributesToElement(this.elementAttributes, el);\n addClass(el, this.className);\n if (this.onElementCreate) {\n this.onElementCreate(el, this);\n }\n return el;\n },\n elementHasProperties: function (el, props) {\n var applier = this;\n return each(props, function (p, propValue) {\n if (p == \"className\") {\n // For checking whether we should reuse an existing element, we just want to check that the element\n // has all the classes specified in the className property. When deciding whether the element is\n // removable when unapplying a class, there is separate special handling to check whether the\n // element has extra classes so the same simple check will do.\n return hasAllClasses(el, propValue);\n } else if (typeof propValue == \"object\") {\n if (!applier.elementHasProperties(el[p], propValue)) {\n return false;\n }\n } else if (el[p] !== propValue) {\n return false;\n }\n });\n },\n elementHasAttributes: function (el, attrs) {\n return each(attrs, function (name, value) {\n if (el.getAttribute(name) !== value) {\n return false;\n }\n });\n },\n applyToTextNode: function (textNode, positionsToPreserve) {\n // Check whether the text node can be styled. Text within a <style> or <script> element, for example,\n // should not be styled. See issue 283.\n if (canTextBeStyled(textNode)) {\n var parent = textNode.parentNode;\n if (parent.childNodes.length == 1 && this.useExistingElements && this.appliesToElement(parent) && this.elementHasProperties(parent, this.elementProperties) && this.elementHasAttributes(parent, this.elementAttributes)) {\n addClass(parent, this.className);\n } else {\n var textNodeParent = textNode.parentNode;\n var el = this.createContainer(textNodeParent);\n textNodeParent.insertBefore(el, textNode);\n el.appendChild(textNode);\n }\n }\n },\n isRemovable: function (el) {\n return el.tagName.toLowerCase() == this.elementTagName && getSortedClassName(el) == this.elementSortedClassName && this.elementHasProperties(el, this.elementProperties) && !elementHasNonClassAttributes(el, this.attrExceptions) && this.elementHasAttributes(el, this.elementAttributes) && this.isModifiable(el);\n },\n isEmptyContainer: function (el) {\n var childNodeCount = el.childNodes.length;\n return el.nodeType == 1 && this.isRemovable(el) && (childNodeCount == 0 || childNodeCount == 1 && this.isEmptyContainer(el.firstChild));\n },\n removeEmptyContainers: function (range) {\n var applier = this;\n var nodesToRemove = range.getNodes([1], function (el) {\n return applier.isEmptyContainer(el);\n });\n var rangesToPreserve = [range];\n var positionsToPreserve = getRangeBoundaries(rangesToPreserve);\n forEach(nodesToRemove, function (node) {\n removePreservingPositions(node, positionsToPreserve);\n });\n\n // Update the range from the preserved boundary positions\n updateRangesFromBoundaries(rangesToPreserve, positionsToPreserve);\n },\n undoToTextNode: function (textNode, range, ancestorWithClass, positionsToPreserve) {\n if (!range.containsNode(ancestorWithClass)) {\n // Split out the portion of the ancestor from which we can remove the class\n //var parent = ancestorWithClass.parentNode, index = dom.getNodeIndex(ancestorWithClass);\n var ancestorRange = range.cloneRange();\n ancestorRange.selectNode(ancestorWithClass);\n if (ancestorRange.isPointInRange(range.endContainer, range.endOffset)) {\n splitNodeAt(ancestorWithClass, range.endContainer, range.endOffset, positionsToPreserve);\n range.setEndAfter(ancestorWithClass);\n }\n if (ancestorRange.isPointInRange(range.startContainer, range.startOffset)) {\n ancestorWithClass = splitNodeAt(ancestorWithClass, range.startContainer, range.startOffset, positionsToPreserve);\n }\n }\n if (this.isRemovable(ancestorWithClass)) {\n replaceWithOwnChildrenPreservingPositions(ancestorWithClass, positionsToPreserve);\n } else {\n removeClass(ancestorWithClass, this.className);\n }\n },\n splitAncestorWithClass: function (container, offset, positionsToPreserve) {\n var ancestorWithClass = this.getSelfOrAncestorWithClass(container);\n if (ancestorWithClass) {\n splitNodeAt(ancestorWithClass, container, offset, positionsToPreserve);\n }\n },\n undoToAncestor: function (ancestorWithClass, positionsToPreserve) {\n if (this.isRemovable(ancestorWithClass)) {\n replaceWithOwnChildrenPreservingPositions(ancestorWithClass, positionsToPreserve);\n } else {\n removeClass(ancestorWithClass, this.className);\n }\n },\n applyToRange: function (range, rangesToPreserve) {\n var applier = this;\n rangesToPreserve = rangesToPreserve || [];\n\n // Create an array of range boundaries to preserve\n var positionsToPreserve = getRangeBoundaries(rangesToPreserve || []);\n range.splitBoundariesPreservingPositions(positionsToPreserve);\n\n // Tidy up the DOM by removing empty containers\n if (applier.removeEmptyElements) {\n applier.removeEmptyContainers(range);\n }\n var textNodes = getEffectiveTextNodes(range);\n if (textNodes.length) {\n forEach(textNodes, function (textNode) {\n if (!applier.isIgnorableWhiteSpaceNode(textNode) && !applier.getSelfOrAncestorWithClass(textNode) && applier.isModifiable(textNode)) {\n applier.applyToTextNode(textNode, positionsToPreserve);\n }\n });\n var lastTextNode = textNodes[textNodes.length - 1];\n range.setStartAndEnd(textNodes[0], 0, lastTextNode, lastTextNode.length);\n if (applier.normalize) {\n applier.postApply(textNodes, range, positionsToPreserve, false);\n }\n\n // Update the ranges from the preserved boundary positions\n updateRangesFromBoundaries(rangesToPreserve, positionsToPreserve);\n }\n\n // Apply classes to any appropriate empty elements\n var emptyElements = applier.getEmptyElements(range);\n forEach(emptyElements, function (el) {\n addClass(el, applier.className);\n });\n },\n applyToRanges: function (ranges) {\n var i = ranges.length;\n while (i--) {\n this.applyToRange(ranges[i], ranges);\n }\n return ranges;\n },\n applyToSelection: function (win) {\n var sel = api.getSelection(win);\n sel.setRanges(this.applyToRanges(sel.getAllRanges()));\n },\n undoToRange: function (range, rangesToPreserve) {\n var applier = this;\n // Create an array of range boundaries to preserve\n rangesToPreserve = rangesToPreserve || [];\n var positionsToPreserve = getRangeBoundaries(rangesToPreserve);\n range.splitBoundariesPreservingPositions(positionsToPreserve);\n\n // Tidy up the DOM by removing empty containers\n if (applier.removeEmptyElements) {\n applier.removeEmptyContainers(range, positionsToPreserve);\n }\n var textNodes = getEffectiveTextNodes(range);\n var textNode, ancestorWithClass;\n var lastTextNode = textNodes[textNodes.length - 1];\n if (textNodes.length) {\n applier.splitAncestorWithClass(range.endContainer, range.endOffset, positionsToPreserve);\n applier.splitAncestorWithClass(range.startContainer, range.startOffset, positionsToPreserve);\n for (var i = 0, len = textNodes.length; i < len; ++i) {\n textNode = textNodes[i];\n ancestorWithClass = applier.getSelfOrAncestorWithClass(textNode);\n if (ancestorWithClass && applier.isModifiable(textNode)) {\n applier.undoToAncestor(ancestorWithClass, positionsToPreserve);\n }\n }\n // Ensure the range is still valid\n range.setStartAndEnd(textNodes[0], 0, lastTextNode, lastTextNode.length);\n if (applier.normalize) {\n applier.postApply(textNodes, range, positionsToPreserve, true);\n }\n\n // Update the ranges from the preserved boundary positions\n updateRangesFromBoundaries(rangesToPreserve, positionsToPreserve);\n }\n\n // Remove class from any appropriate empty elements\n var emptyElements = applier.getEmptyElements(range);\n forEach(emptyElements, function (el) {\n removeClass(el, applier.className);\n });\n },\n undoToRanges: function (ranges) {\n // Get ranges returned in document order\n var i = ranges.length;\n while (i--) {\n this.undoToRange(ranges[i], ranges);\n }\n return ranges;\n },\n undoToSelection: function (win) {\n var sel = api.getSelection(win);\n var ranges = api.getSelection(win).getAllRanges();\n this.undoToRanges(ranges);\n sel.setRanges(ranges);\n },\n isAppliedToRange: function (range) {\n if (range.collapsed || range.toString() == \"\") {\n return !!this.getSelfOrAncestorWithClass(range.commonAncestorContainer);\n } else {\n var textNodes = range.getNodes([3]);\n if (textNodes.length) for (var i = 0, textNode; textNode = textNodes[i++];) {\n if (!this.isIgnorableWhiteSpaceNode(textNode) && rangeSelectsAnyText(range, textNode) && this.isModifiable(textNode) && !this.getSelfOrAncestorWithClass(textNode)) {\n return false;\n }\n }\n return true;\n }\n },\n isAppliedToRanges: function (ranges) {\n var i = ranges.length;\n if (i == 0) {\n return false;\n }\n while (i--) {\n if (!this.isAppliedToRange(ranges[i])) {\n return false;\n }\n }\n return true;\n },\n isAppliedToSelection: function (win) {\n var sel = api.getSelection(win);\n return this.isAppliedToRanges(sel.getAllRanges());\n },\n toggleRange: function (range) {\n if (this.isAppliedToRange(range)) {\n this.undoToRange(range);\n } else {\n this.applyToRange(range);\n }\n },\n toggleSelection: function (win) {\n if (this.isAppliedToSelection(win)) {\n this.undoToSelection(win);\n } else {\n this.applyToSelection(win);\n }\n },\n getElementsWithClassIntersectingRange: function (range) {\n var elements = [];\n var applier = this;\n range.getNodes([3], function (textNode) {\n var el = applier.getSelfOrAncestorWithClass(textNode);\n if (el && !contains(elements, el)) {\n elements.push(el);\n }\n });\n return elements;\n },\n detach: function () {}\n };\n function createClassApplier(className, options, tagNames) {\n return new ClassApplier(className, options, tagNames);\n }\n ClassApplier.util = {\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n getClass: getClass,\n hasSameClasses: haveSameClasses,\n hasAllClasses: hasAllClasses,\n replaceWithOwnChildren: replaceWithOwnChildrenPreservingPositions,\n elementsHaveSameNonClassAttributes: elementsHaveSameNonClassAttributes,\n elementHasNonClassAttributes: elementHasNonClassAttributes,\n splitNodeAt: splitNodeAt,\n isEditableElement: isEditableElement,\n isEditingHost: isEditingHost,\n isEditable: isEditable\n };\n api.CssClassApplier = api.ClassApplier = ClassApplier;\n api.createClassApplier = createClassApplier;\n util.createAliasForDeprecatedMethod(api, \"createCssClassApplier\", \"createClassApplier\", module);\n });\n return rangy;\n}, this);","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\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 }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\nfunction noop() {}\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\nprocess.listeners = function (name) {\n return [];\n};\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\n};","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];","/*\n * jQuery File Upload Plugin\n * https://github.com/blueimp/jQuery-File-Upload\n *\n * Copyright 2010, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* jshint nomen:false */\n/* global define, require, window, document, location, Blob, FormData */\n\n;\n(function (factory) {\n 'use strict';\n\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['jquery', 'jquery-ui/ui/widget'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS:\n factory(require('jquery'), require('./vendor/jquery.ui.widget'));\n } else {\n // Browser globals:\n factory(window.jQuery);\n }\n})(function ($) {\n 'use strict';\n\n // Detect file input support, based on\n // http://viljamis.com/blog/2012/file-upload-support-on-mobile/\n $.support.fileInput = !(new RegExp(\n // Handle devices which give false positives for the feature detection:\n '(Android (1\\\\.[0156]|2\\\\.[01]))' + '|(Windows Phone (OS 7|8\\\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' + '|(w(eb)?OSBrowser)|(webOS)' + '|(Kindle/(1\\\\.0|2\\\\.[05]|3\\\\.0))').test(window.navigator.userAgent) ||\n // Feature detection for all other devices:\n $('<input type=\"file\"/>').prop('disabled'));\n\n // The FileReader API is not actually used, but works as feature detection,\n // as some Safari versions (5?) support XHR file uploads via the FormData API,\n // but not non-multipart XHR file uploads.\n // window.XMLHttpRequestUpload is not available on IE10, so we check for\n // window.ProgressEvent instead to detect XHR2 file upload capability:\n $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader);\n $.support.xhrFormDataFileUpload = !!window.FormData;\n\n // Detect support for Blob slicing (required for chunked uploads):\n $.support.blobSlice = window.Blob && (Blob.prototype.slice || Blob.prototype.webkitSlice || Blob.prototype.mozSlice);\n\n // Helper function to create drag handlers for dragover/dragenter/dragleave:\n function getDragHandler(type) {\n var isDragOver = type === 'dragover';\n return function (e) {\n e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;\n var dataTransfer = e.dataTransfer;\n if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 && this._trigger(type, $.Event(type, {\n delegatedEvent: e\n })) !== false) {\n e.preventDefault();\n if (isDragOver) {\n dataTransfer.dropEffect = 'copy';\n }\n }\n };\n }\n\n // The fileupload widget listens for change events on file input fields defined\n // via fileInput setting and paste or drop events of the given dropZone.\n // In addition to the default jQuery Widget methods, the fileupload widget\n // exposes the \"add\" and \"send\" methods, to add or directly send files using\n // the fileupload API.\n // By default, files added via file input selection, paste, drag & drop or\n // \"add\" method are uploaded immediately, but it is possible to override\n // the \"add\" callback option to queue file uploads.\n $.widget('blueimp.fileupload', {\n options: {\n // The drop target element(s), by the default the complete document.\n // Set to null to disable drag & drop support:\n dropZone: $(document),\n // The paste target element(s), by the default undefined.\n // Set to a DOM node or jQuery object to enable file pasting:\n pasteZone: undefined,\n // The file input field(s), that are listened to for change events.\n // If undefined, it is set to the file input fields inside\n // of the widget element on plugin initialization.\n // Set to null to disable the change listener.\n fileInput: undefined,\n // By default, the file input field is replaced with a clone after\n // each input field change event. This is required for iframe transport\n // queues and allows change events to be fired for the same file\n // selection, but can be disabled by setting the following option to false:\n replaceFileInput: true,\n // The parameter name for the file form data (the request argument name).\n // If undefined or empty, the name property of the file input field is\n // used, or \"files[]\" if the file input name property is also empty,\n // can be a string or an array of strings:\n paramName: undefined,\n // By default, each file of a selection is uploaded using an individual\n // request for XHR type uploads. Set to false to upload file\n // selections in one request each:\n singleFileUploads: true,\n // To limit the number of files uploaded with one XHR request,\n // set the following option to an integer greater than 0:\n limitMultiFileUploads: undefined,\n // The following option limits the number of files uploaded with one\n // XHR request to keep the request size under or equal to the defined\n // limit in bytes:\n limitMultiFileUploadSize: undefined,\n // Multipart file uploads add a number of bytes to each uploaded file,\n // therefore the following option adds an overhead for each file used\n // in the limitMultiFileUploadSize configuration:\n limitMultiFileUploadSizeOverhead: 512,\n // Set the following option to true to issue all file upload requests\n // in a sequential order:\n sequentialUploads: false,\n // To limit the number of concurrent uploads,\n // set the following option to an integer greater than 0:\n limitConcurrentUploads: undefined,\n // Set the following option to true to force iframe transport uploads:\n forceIframeTransport: false,\n // Set the following option to the location of a redirect url on the\n // origin server, for cross-domain iframe transport uploads:\n redirect: undefined,\n // The parameter name for the redirect url, sent as part of the form\n // data and set to 'redirect' if this option is empty:\n redirectParamName: undefined,\n // Set the following option to the location of a postMessage window,\n // to enable postMessage transport uploads:\n postMessage: undefined,\n // By default, XHR file uploads are sent as multipart/form-data.\n // The iframe transport is always using multipart/form-data.\n // Set to false to enable non-multipart XHR uploads:\n multipart: true,\n // To upload large files in smaller chunks, set the following option\n // to a preferred maximum chunk size. If set to 0, null or undefined,\n // or the browser does not support the required Blob API, files will\n // be uploaded as a whole.\n maxChunkSize: undefined,\n // When a non-multipart upload or a chunked multipart upload has been\n // aborted, this option can be used to resume the upload by setting\n // it to the size of the already uploaded bytes. This option is most\n // useful when modifying the options object inside of the \"add\" or\n // \"send\" callbacks, as the options are cloned for each file upload.\n uploadedBytes: undefined,\n // By default, failed (abort or error) file uploads are removed from the\n // global progress calculation. Set the following option to false to\n // prevent recalculating the global progress data:\n recalculateProgress: true,\n // Interval in milliseconds to calculate and trigger progress events:\n progressInterval: 100,\n // Interval in milliseconds to calculate progress bitrate:\n bitrateInterval: 500,\n // By default, uploads are started automatically when adding files:\n autoUpload: true,\n // By default, duplicate file names are expected to be handled on\n // the server-side. If this is not possible (e.g. when uploading\n // files directly to Amazon S3), the following option can be set to\n // an empty object or an object mapping existing filenames, e.g.:\n // { \"image.jpg\": true, \"image (1).jpg\": true }\n // If it is set, all files will be uploaded with unique filenames,\n // adding increasing number suffixes if necessary, e.g.:\n // \"image (2).jpg\"\n uniqueFilenames: undefined,\n // Error and info messages:\n messages: {\n uploadedBytes: 'Uploaded bytes exceed file size'\n },\n // Translation function, gets the message key to be translated\n // and an object with context specific data as arguments:\n i18n: function (message, context) {\n message = this.messages[message] || message.toString();\n if (context) {\n $.each(context, function (key, value) {\n message = message.replace('{' + key + '}', value);\n });\n }\n return message;\n },\n // Additional form data to be sent along with the file uploads can be set\n // using this option, which accepts an array of objects with name and\n // value properties, a function returning such an array, a FormData\n // object (for XHR file uploads), or a simple object.\n // The form of the first fileInput is given as parameter to the function:\n formData: function (form) {\n return form.serializeArray();\n },\n // The add callback is invoked as soon as files are added to the fileupload\n // widget (via file input selection, drag & drop, paste or add API call).\n // If the singleFileUploads option is enabled, this callback will be\n // called once for each file in the selection for XHR file uploads, else\n // once for each file selection.\n //\n // The upload starts when the submit method is invoked on the data parameter.\n // The data object contains a files property holding the added files\n // and allows you to override plugin options as well as define ajax settings.\n //\n // Listeners for this callback can also be bound the following way:\n // .bind('fileuploadadd', func);\n //\n // data.submit() returns a Promise object and allows to attach additional\n // handlers using jQuery's Deferred callbacks:\n // data.submit().done(func).fail(func).always(func);\n add: function (e, data) {\n if (e.isDefaultPrevented()) {\n return false;\n }\n if (data.autoUpload || data.autoUpload !== false && $(this).fileupload('option', 'autoUpload')) {\n data.process().done(function () {\n data.submit();\n });\n }\n },\n // Other callbacks:\n\n // Callback for the submit event of each file upload:\n // submit: function (e, data) {}, // .bind('fileuploadsubmit', func);\n\n // Callback for the start of each file upload request:\n // send: function (e, data) {}, // .bind('fileuploadsend', func);\n\n // Callback for successful uploads:\n // done: function (e, data) {}, // .bind('fileuploaddone', func);\n\n // Callback for failed (abort or error) uploads:\n // fail: function (e, data) {}, // .bind('fileuploadfail', func);\n\n // Callback for completed (success, abort or error) requests:\n // always: function (e, data) {}, // .bind('fileuploadalways', func);\n\n // Callback for upload progress events:\n // progress: function (e, data) {}, // .bind('fileuploadprogress', func);\n\n // Callback for global upload progress events:\n // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func);\n\n // Callback for uploads start, equivalent to the global ajaxStart event:\n // start: function (e) {}, // .bind('fileuploadstart', func);\n\n // Callback for uploads stop, equivalent to the global ajaxStop event:\n // stop: function (e) {}, // .bind('fileuploadstop', func);\n\n // Callback for change events of the fileInput(s):\n // change: function (e, data) {}, // .bind('fileuploadchange', func);\n\n // Callback for paste events to the pasteZone(s):\n // paste: function (e, data) {}, // .bind('fileuploadpaste', func);\n\n // Callback for drop events of the dropZone(s):\n // drop: function (e, data) {}, // .bind('fileuploaddrop', func);\n\n // Callback for dragover events of the dropZone(s):\n // dragover: function (e) {}, // .bind('fileuploaddragover', func);\n\n // Callback before the start of each chunk upload request (before form data initialization):\n // chunkbeforesend: function (e, data) {}, // .bind('fileuploadchunkbeforesend', func);\n\n // Callback for the start of each chunk upload request:\n // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func);\n\n // Callback for successful chunk uploads:\n // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func);\n\n // Callback for failed (abort or error) chunk uploads:\n // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func);\n\n // Callback for completed (success, abort or error) chunk upload requests:\n // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func);\n\n // The plugin options are used as settings object for the ajax calls.\n // The following are jQuery ajax settings required for the file uploads:\n processData: false,\n contentType: false,\n cache: false,\n timeout: 0\n },\n // A list of options that require reinitializing event listeners and/or\n // special initialization code:\n _specialOptions: ['fileInput', 'dropZone', 'pasteZone', 'multipart', 'forceIframeTransport'],\n _blobSlice: $.support.blobSlice && function () {\n var slice = this.slice || this.webkitSlice || this.mozSlice;\n return slice.apply(this, arguments);\n },\n _BitrateTimer: function () {\n this.timestamp = Date.now ? Date.now() : new Date().getTime();\n this.loaded = 0;\n this.bitrate = 0;\n this.getBitrate = function (now, loaded, interval) {\n var timeDiff = now - this.timestamp;\n if (!this.bitrate || !interval || timeDiff > interval) {\n this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8;\n this.loaded = loaded;\n this.timestamp = now;\n }\n return this.bitrate;\n };\n },\n _isXHRUpload: function (options) {\n return !options.forceIframeTransport && (!options.multipart && $.support.xhrFileUpload || $.support.xhrFormDataFileUpload);\n },\n _getFormData: function (options) {\n var formData;\n if ($.type(options.formData) === 'function') {\n return options.formData(options.form);\n }\n if ($.isArray(options.formData)) {\n return options.formData;\n }\n if ($.type(options.formData) === 'object') {\n formData = [];\n $.each(options.formData, function (name, value) {\n formData.push({\n name: name,\n value: value\n });\n });\n return formData;\n }\n return [];\n },\n _getTotal: function (files) {\n var total = 0;\n $.each(files, function (index, file) {\n total += file.size || 1;\n });\n return total;\n },\n _initProgressObject: function (obj) {\n var progress = {\n loaded: 0,\n total: 0,\n bitrate: 0\n };\n if (obj._progress) {\n $.extend(obj._progress, progress);\n } else {\n obj._progress = progress;\n }\n },\n _initResponseObject: function (obj) {\n var prop;\n if (obj._response) {\n for (prop in obj._response) {\n if (obj._response.hasOwnProperty(prop)) {\n delete obj._response[prop];\n }\n }\n } else {\n obj._response = {};\n }\n },\n _onProgress: function (e, data) {\n if (e.lengthComputable) {\n var now = Date.now ? Date.now() : new Date().getTime(),\n loaded;\n if (data._time && data.progressInterval && now - data._time < data.progressInterval && e.loaded !== e.total) {\n return;\n }\n data._time = now;\n loaded = Math.floor(e.loaded / e.total * (data.chunkSize || data._progress.total)) + (data.uploadedBytes || 0);\n // Add the difference from the previously loaded state\n // to the global loaded counter:\n this._progress.loaded += loaded - data._progress.loaded;\n this._progress.bitrate = this._bitrateTimer.getBitrate(now, this._progress.loaded, data.bitrateInterval);\n data._progress.loaded = data.loaded = loaded;\n data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate(now, loaded, data.bitrateInterval);\n // Trigger a custom progress event with a total data property set\n // to the file size(s) of the current upload and a loaded data\n // property calculated accordingly:\n this._trigger('progress', $.Event('progress', {\n delegatedEvent: e\n }), data);\n // Trigger a global progress event for all current file uploads,\n // including ajax calls queued for sequential file uploads:\n this._trigger('progressall', $.Event('progressall', {\n delegatedEvent: e\n }), this._progress);\n }\n },\n _initProgressListener: function (options) {\n var that = this,\n xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();\n // Accesss to the native XHR object is required to add event listeners\n // for the upload progress event:\n if (xhr.upload) {\n $(xhr.upload).bind('progress', function (e) {\n var oe = e.originalEvent;\n // Make sure the progress event properties get copied over:\n e.lengthComputable = oe.lengthComputable;\n e.loaded = oe.loaded;\n e.total = oe.total;\n that._onProgress(e, options);\n });\n options.xhr = function () {\n return xhr;\n };\n }\n },\n _deinitProgressListener: function (options) {\n var xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr();\n if (xhr.upload) {\n $(xhr.upload).unbind('progress');\n }\n },\n _isInstanceOf: function (type, obj) {\n // Cross-frame instanceof check\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n _getUniqueFilename: function (name, map) {\n name = String(name);\n if (map[name]) {\n name = name.replace(/(?: \\(([\\d]+)\\))?(\\.[^.]+)?$/, function (_, p1, p2) {\n var index = p1 ? Number(p1) + 1 : 1;\n var ext = p2 || '';\n return ' (' + index + ')' + ext;\n });\n return this._getUniqueFilename(name, map);\n }\n map[name] = true;\n return name;\n },\n _initXHRData: function (options) {\n var that = this,\n formData,\n file = options.files[0],\n // Ignore non-multipart setting if not supported:\n multipart = options.multipart || !$.support.xhrFileUpload,\n paramName = $.type(options.paramName) === 'array' ? options.paramName[0] : options.paramName;\n options.headers = $.extend({}, options.headers);\n if (options.contentRange) {\n options.headers['Content-Range'] = options.contentRange;\n }\n if (!multipart || options.blob || !this._isInstanceOf('File', file)) {\n options.headers['Content-Disposition'] = 'attachment; filename=\"' + encodeURI(file.uploadName || file.name) + '\"';\n }\n if (!multipart) {\n options.contentType = file.type || 'application/octet-stream';\n options.data = options.blob || file;\n } else if ($.support.xhrFormDataFileUpload) {\n if (options.postMessage) {\n // window.postMessage does not allow sending FormData\n // objects, so we just add the File/Blob objects to\n // the formData array and let the postMessage window\n // create the FormData object out of this array:\n formData = this._getFormData(options);\n if (options.blob) {\n formData.push({\n name: paramName,\n value: options.blob\n });\n } else {\n $.each(options.files, function (index, file) {\n formData.push({\n name: $.type(options.paramName) === 'array' && options.paramName[index] || paramName,\n value: file\n });\n });\n }\n } else {\n if (that._isInstanceOf('FormData', options.formData)) {\n formData = options.formData;\n } else {\n formData = new FormData();\n $.each(this._getFormData(options), function (index, field) {\n formData.append(field.name, field.value);\n });\n }\n if (options.blob) {\n formData.append(paramName, options.blob, file.uploadName || file.name);\n } else {\n $.each(options.files, function (index, file) {\n // This check allows the tests to run with\n // dummy objects:\n if (that._isInstanceOf('File', file) || that._isInstanceOf('Blob', file)) {\n var fileName = file.uploadName || file.name;\n if (options.uniqueFilenames) {\n fileName = that._getUniqueFilename(fileName, options.uniqueFilenames);\n }\n formData.append($.type(options.paramName) === 'array' && options.paramName[index] || paramName, file, fileName);\n }\n });\n }\n }\n options.data = formData;\n }\n // Blob reference is not needed anymore, free memory:\n options.blob = null;\n },\n _initIframeSettings: function (options) {\n var targetHost = $('<a></a>').prop('href', options.url).prop('host');\n // Setting the dataType to iframe enables the iframe transport:\n options.dataType = 'iframe ' + (options.dataType || '');\n // The iframe transport accepts a serialized array as form data:\n options.formData = this._getFormData(options);\n // Add redirect url to form data on cross-domain uploads:\n if (options.redirect && targetHost && targetHost !== location.host) {\n options.formData.push({\n name: options.redirectParamName || 'redirect',\n value: options.redirect\n });\n }\n },\n _initDataSettings: function (options) {\n if (this._isXHRUpload(options)) {\n if (!this._chunkedUpload(options, true)) {\n if (!options.data) {\n this._initXHRData(options);\n }\n this._initProgressListener(options);\n }\n if (options.postMessage) {\n // Setting the dataType to postmessage enables the\n // postMessage transport:\n options.dataType = 'postmessage ' + (options.dataType || '');\n }\n } else {\n this._initIframeSettings(options);\n }\n },\n _getParamName: function (options) {\n var fileInput = $(options.fileInput),\n paramName = options.paramName;\n if (!paramName) {\n paramName = [];\n fileInput.each(function () {\n var input = $(this),\n name = input.prop('name') || 'files[]',\n i = (input.prop('files') || [1]).length;\n while (i) {\n paramName.push(name);\n i -= 1;\n }\n });\n if (!paramName.length) {\n paramName = [fileInput.prop('name') || 'files[]'];\n }\n } else if (!$.isArray(paramName)) {\n paramName = [paramName];\n }\n return paramName;\n },\n _initFormSettings: function (options) {\n // Retrieve missing options from the input field and the\n // associated form, if available:\n if (!options.form || !options.form.length) {\n options.form = $(options.fileInput.prop('form'));\n // If the given file input doesn't have an associated form,\n // use the default widget file input's form:\n if (!options.form.length) {\n options.form = $(this.options.fileInput.prop('form'));\n }\n }\n options.paramName = this._getParamName(options);\n if (!options.url) {\n options.url = options.form.prop('action') || location.href;\n }\n // The HTTP request method must be \"POST\" or \"PUT\":\n options.type = (options.type || $.type(options.form.prop('method')) === 'string' && options.form.prop('method') || '').toUpperCase();\n if (options.type !== 'POST' && options.type !== 'PUT' && options.type !== 'PATCH') {\n options.type = 'POST';\n }\n if (!options.formAcceptCharset) {\n options.formAcceptCharset = options.form.attr('accept-charset');\n }\n },\n _getAJAXSettings: function (data) {\n var options = $.extend({}, this.options, data);\n this._initFormSettings(options);\n this._initDataSettings(options);\n return options;\n },\n // jQuery 1.6 doesn't provide .state(),\n // while jQuery 1.8+ removed .isRejected() and .isResolved():\n _getDeferredState: function (deferred) {\n if (deferred.state) {\n return deferred.state();\n }\n if (deferred.isResolved()) {\n return 'resolved';\n }\n if (deferred.isRejected()) {\n return 'rejected';\n }\n return 'pending';\n },\n // Maps jqXHR callbacks to the equivalent\n // methods of the given Promise object:\n _enhancePromise: function (promise) {\n promise.success = promise.done;\n promise.error = promise.fail;\n promise.complete = promise.always;\n return promise;\n },\n // Creates and returns a Promise object enhanced with\n // the jqXHR methods abort, success, error and complete:\n _getXHRPromise: function (resolveOrReject, context, args) {\n var dfd = $.Deferred(),\n promise = dfd.promise();\n context = context || this.options.context || promise;\n if (resolveOrReject === true) {\n dfd.resolveWith(context, args);\n } else if (resolveOrReject === false) {\n dfd.rejectWith(context, args);\n }\n promise.abort = dfd.promise;\n return this._enhancePromise(promise);\n },\n // Adds convenience methods to the data callback argument:\n _addConvenienceMethods: function (e, data) {\n var that = this,\n getPromise = function (args) {\n return $.Deferred().resolveWith(that, args).promise();\n };\n data.process = function (resolveFunc, rejectFunc) {\n if (resolveFunc || rejectFunc) {\n data._processQueue = this._processQueue = (this._processQueue || getPromise([this])).then(function () {\n if (data.errorThrown) {\n return $.Deferred().rejectWith(that, [data]).promise();\n }\n return getPromise(arguments);\n }).then(resolveFunc, rejectFunc);\n }\n return this._processQueue || getPromise([this]);\n };\n data.submit = function () {\n if (this.state() !== 'pending') {\n data.jqXHR = this.jqXHR = that._trigger('submit', $.Event('submit', {\n delegatedEvent: e\n }), this) !== false && that._onSend(e, this);\n }\n return this.jqXHR || that._getXHRPromise();\n };\n data.abort = function () {\n if (this.jqXHR) {\n return this.jqXHR.abort();\n }\n this.errorThrown = 'abort';\n that._trigger('fail', null, this);\n return that._getXHRPromise(false);\n };\n data.state = function () {\n if (this.jqXHR) {\n return that._getDeferredState(this.jqXHR);\n }\n if (this._processQueue) {\n return that._getDeferredState(this._processQueue);\n }\n };\n data.processing = function () {\n return !this.jqXHR && this._processQueue && that._getDeferredState(this._processQueue) === 'pending';\n };\n data.progress = function () {\n return this._progress;\n };\n data.response = function () {\n return this._response;\n };\n },\n // Parses the Range header from the server response\n // and returns the uploaded bytes:\n _getUploadedBytes: function (jqXHR) {\n var range = jqXHR.getResponseHeader('Range'),\n parts = range && range.split('-'),\n upperBytesPos = parts && parts.length > 1 && parseInt(parts[1], 10);\n return upperBytesPos && upperBytesPos + 1;\n },\n // Uploads a file in multiple, sequential requests\n // by splitting the file up in multiple blob chunks.\n // If the second parameter is true, only tests if the file\n // should be uploaded in chunks, but does not invoke any\n // upload requests:\n _chunkedUpload: function (options, testOnly) {\n options.uploadedBytes = options.uploadedBytes || 0;\n var that = this,\n file = options.files[0],\n fs = file.size,\n ub = options.uploadedBytes,\n mcs = options.maxChunkSize || fs,\n slice = this._blobSlice,\n dfd = $.Deferred(),\n promise = dfd.promise(),\n jqXHR,\n upload;\n if (!(this._isXHRUpload(options) && slice && (ub || ($.type(mcs) === 'function' ? mcs(options) : mcs) < fs)) || options.data) {\n return false;\n }\n if (testOnly) {\n return true;\n }\n if (ub >= fs) {\n file.error = options.i18n('uploadedBytes');\n return this._getXHRPromise(false, options.context, [null, 'error', file.error]);\n }\n // The chunk upload method:\n upload = function () {\n // Clone the options object for each chunk upload:\n var o = $.extend({}, options),\n currentLoaded = o._progress.loaded;\n o.blob = slice.call(file, ub, ub + ($.type(mcs) === 'function' ? mcs(o) : mcs), file.type);\n // Store the current chunk size, as the blob itself\n // will be dereferenced after data processing:\n o.chunkSize = o.blob.size;\n // Expose the chunk bytes position range:\n o.contentRange = 'bytes ' + ub + '-' + (ub + o.chunkSize - 1) + '/' + fs;\n // Trigger chunkbeforesend to allow form data to be updated for this chunk\n that._trigger('chunkbeforesend', null, o);\n // Process the upload data (the blob and potential form data):\n that._initXHRData(o);\n // Add progress listeners for this chunk upload:\n that._initProgressListener(o);\n jqXHR = (that._trigger('chunksend', null, o) !== false && $.ajax(o) || that._getXHRPromise(false, o.context)).done(function (result, textStatus, jqXHR) {\n ub = that._getUploadedBytes(jqXHR) || ub + o.chunkSize;\n // Create a progress event if no final progress event\n // with loaded equaling total has been triggered\n // for this chunk:\n if (currentLoaded + o.chunkSize - o._progress.loaded) {\n that._onProgress($.Event('progress', {\n lengthComputable: true,\n loaded: ub - o.uploadedBytes,\n total: ub - o.uploadedBytes\n }), o);\n }\n options.uploadedBytes = o.uploadedBytes = ub;\n o.result = result;\n o.textStatus = textStatus;\n o.jqXHR = jqXHR;\n that._trigger('chunkdone', null, o);\n that._trigger('chunkalways', null, o);\n if (ub < fs) {\n // File upload not yet complete,\n // continue with the next chunk:\n upload();\n } else {\n dfd.resolveWith(o.context, [result, textStatus, jqXHR]);\n }\n }).fail(function (jqXHR, textStatus, errorThrown) {\n o.jqXHR = jqXHR;\n o.textStatus = textStatus;\n o.errorThrown = errorThrown;\n that._trigger('chunkfail', null, o);\n that._trigger('chunkalways', null, o);\n dfd.rejectWith(o.context, [jqXHR, textStatus, errorThrown]);\n }).always(function () {\n that._deinitProgressListener(o);\n });\n };\n this._enhancePromise(promise);\n promise.abort = function () {\n return jqXHR.abort();\n };\n upload();\n return promise;\n },\n _beforeSend: function (e, data) {\n if (this._active === 0) {\n // the start callback is triggered when an upload starts\n // and no other uploads are currently running,\n // equivalent to the global ajaxStart event:\n this._trigger('start');\n // Set timer for global bitrate progress calculation:\n this._bitrateTimer = new this._BitrateTimer();\n // Reset the global progress values:\n this._progress.loaded = this._progress.total = 0;\n this._progress.bitrate = 0;\n }\n // Make sure the container objects for the .response() and\n // .progress() methods on the data object are available\n // and reset to their initial state:\n this._initResponseObject(data);\n this._initProgressObject(data);\n data._progress.loaded = data.loaded = data.uploadedBytes || 0;\n data._progress.total = data.total = this._getTotal(data.files) || 1;\n data._progress.bitrate = data.bitrate = 0;\n this._active += 1;\n // Initialize the global progress values:\n this._progress.loaded += data.loaded;\n this._progress.total += data.total;\n },\n _onDone: function (result, textStatus, jqXHR, options) {\n var total = options._progress.total,\n response = options._response;\n if (options._progress.loaded < total) {\n // Create a progress event if no final progress event\n // with loaded equaling total has been triggered:\n this._onProgress($.Event('progress', {\n lengthComputable: true,\n loaded: total,\n total: total\n }), options);\n }\n response.result = options.result = result;\n response.textStatus = options.textStatus = textStatus;\n response.jqXHR = options.jqXHR = jqXHR;\n this._trigger('done', null, options);\n },\n _onFail: function (jqXHR, textStatus, errorThrown, options) {\n var response = options._response;\n if (options.recalculateProgress) {\n // Remove the failed (error or abort) file upload from\n // the global progress calculation:\n this._progress.loaded -= options._progress.loaded;\n this._progress.total -= options._progress.total;\n }\n response.jqXHR = options.jqXHR = jqXHR;\n response.textStatus = options.textStatus = textStatus;\n response.errorThrown = options.errorThrown = errorThrown;\n this._trigger('fail', null, options);\n },\n _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) {\n // jqXHRorResult, textStatus and jqXHRorError are added to the\n // options object via done and fail callbacks\n this._trigger('always', null, options);\n },\n _onSend: function (e, data) {\n if (!data.submit) {\n this._addConvenienceMethods(e, data);\n }\n var that = this,\n jqXHR,\n aborted,\n slot,\n pipe,\n options = that._getAJAXSettings(data),\n send = function () {\n that._sending += 1;\n // Set timer for bitrate progress calculation:\n options._bitrateTimer = new that._BitrateTimer();\n jqXHR = jqXHR || ((aborted || that._trigger('send', $.Event('send', {\n delegatedEvent: e\n }), options) === false) && that._getXHRPromise(false, options.context, aborted) || that._chunkedUpload(options) || $.ajax(options)).done(function (result, textStatus, jqXHR) {\n that._onDone(result, textStatus, jqXHR, options);\n }).fail(function (jqXHR, textStatus, errorThrown) {\n that._onFail(jqXHR, textStatus, errorThrown, options);\n }).always(function (jqXHRorResult, textStatus, jqXHRorError) {\n that._deinitProgressListener(options);\n that._onAlways(jqXHRorResult, textStatus, jqXHRorError, options);\n that._sending -= 1;\n that._active -= 1;\n if (options.limitConcurrentUploads && options.limitConcurrentUploads > that._sending) {\n // Start the next queued upload,\n // that has not been aborted:\n var nextSlot = that._slots.shift();\n while (nextSlot) {\n if (that._getDeferredState(nextSlot) === 'pending') {\n nextSlot.resolve();\n break;\n }\n nextSlot = that._slots.shift();\n }\n }\n if (that._active === 0) {\n // The stop callback is triggered when all uploads have\n // been completed, equivalent to the global ajaxStop event:\n that._trigger('stop');\n }\n });\n return jqXHR;\n };\n this._beforeSend(e, options);\n if (this.options.sequentialUploads || this.options.limitConcurrentUploads && this.options.limitConcurrentUploads <= this._sending) {\n if (this.options.limitConcurrentUploads > 1) {\n slot = $.Deferred();\n this._slots.push(slot);\n pipe = slot.then(send);\n } else {\n this._sequence = this._sequence.then(send, send);\n pipe = this._sequence;\n }\n // Return the piped Promise object, enhanced with an abort method,\n // which is delegated to the jqXHR object of the current upload,\n // and jqXHR callbacks mapped to the equivalent Promise methods:\n pipe.abort = function () {\n aborted = [undefined, 'abort', 'abort'];\n if (!jqXHR) {\n if (slot) {\n slot.rejectWith(options.context, aborted);\n }\n return send();\n }\n return jqXHR.abort();\n };\n return this._enhancePromise(pipe);\n }\n return send();\n },\n _onAdd: function (e, data) {\n var that = this,\n result = true,\n options = $.extend({}, this.options, data),\n files = data.files,\n filesLength = files.length,\n limit = options.limitMultiFileUploads,\n limitSize = options.limitMultiFileUploadSize,\n overhead = options.limitMultiFileUploadSizeOverhead,\n batchSize = 0,\n paramName = this._getParamName(options),\n paramNameSet,\n paramNameSlice,\n fileSet,\n i,\n j = 0;\n if (!filesLength) {\n return false;\n }\n if (limitSize && files[0].size === undefined) {\n limitSize = undefined;\n }\n if (!(options.singleFileUploads || limit || limitSize) || !this._isXHRUpload(options)) {\n fileSet = [files];\n paramNameSet = [paramName];\n } else if (!(options.singleFileUploads || limitSize) && limit) {\n fileSet = [];\n paramNameSet = [];\n for (i = 0; i < filesLength; i += limit) {\n fileSet.push(files.slice(i, i + limit));\n paramNameSlice = paramName.slice(i, i + limit);\n if (!paramNameSlice.length) {\n paramNameSlice = paramName;\n }\n paramNameSet.push(paramNameSlice);\n }\n } else if (!options.singleFileUploads && limitSize) {\n fileSet = [];\n paramNameSet = [];\n for (i = 0; i < filesLength; i = i + 1) {\n batchSize += files[i].size + overhead;\n if (i + 1 === filesLength || batchSize + files[i + 1].size + overhead > limitSize || limit && i + 1 - j >= limit) {\n fileSet.push(files.slice(j, i + 1));\n paramNameSlice = paramName.slice(j, i + 1);\n if (!paramNameSlice.length) {\n paramNameSlice = paramName;\n }\n paramNameSet.push(paramNameSlice);\n j = i + 1;\n batchSize = 0;\n }\n }\n } else {\n paramNameSet = paramName;\n }\n data.originalFiles = files;\n $.each(fileSet || files, function (index, element) {\n var newData = $.extend({}, data);\n newData.files = fileSet ? element : [element];\n newData.paramName = paramNameSet[index];\n that._initResponseObject(newData);\n that._initProgressObject(newData);\n that._addConvenienceMethods(e, newData);\n result = that._trigger('add', $.Event('add', {\n delegatedEvent: e\n }), newData);\n return result;\n });\n return result;\n },\n _replaceFileInput: function (data) {\n var input = data.fileInput,\n inputClone = input.clone(true),\n restoreFocus = input.is(document.activeElement);\n // Add a reference for the new cloned file input to the data argument:\n data.fileInputClone = inputClone;\n $('<form></form>').append(inputClone)[0].reset();\n // Detaching allows to insert the fileInput on another form\n // without loosing the file input value:\n input.after(inputClone).detach();\n // If the fileInput had focus before it was detached,\n // restore focus to the inputClone.\n if (restoreFocus) {\n inputClone.focus();\n }\n // Avoid memory leaks with the detached file input:\n $.cleanData(input.unbind('remove'));\n // Replace the original file input element in the fileInput\n // elements set with the clone, which has been copied including\n // event handlers:\n this.options.fileInput = this.options.fileInput.map(function (i, el) {\n if (el === input[0]) {\n return inputClone[0];\n }\n return el;\n });\n // If the widget has been initialized on the file input itself,\n // override this.element with the file input clone:\n if (input[0] === this.element[0]) {\n this.element = inputClone;\n }\n },\n _handleFileTreeEntry: function (entry, path) {\n var that = this,\n dfd = $.Deferred(),\n entries = [],\n dirReader,\n errorHandler = function (e) {\n if (e && !e.entry) {\n e.entry = entry;\n }\n // Since $.when returns immediately if one\n // Deferred is rejected, we use resolve instead.\n // This allows valid files and invalid items\n // to be returned together in one set:\n dfd.resolve([e]);\n },\n successHandler = function (entries) {\n that._handleFileTreeEntries(entries, path + entry.name + '/').done(function (files) {\n dfd.resolve(files);\n }).fail(errorHandler);\n },\n readEntries = function () {\n dirReader.readEntries(function (results) {\n if (!results.length) {\n successHandler(entries);\n } else {\n entries = entries.concat(results);\n readEntries();\n }\n }, errorHandler);\n };\n path = path || '';\n if (entry.isFile) {\n if (entry._file) {\n // Workaround for Chrome bug #149735\n entry._file.relativePath = path;\n dfd.resolve(entry._file);\n } else {\n entry.file(function (file) {\n file.relativePath = path;\n dfd.resolve(file);\n }, errorHandler);\n }\n } else if (entry.isDirectory) {\n dirReader = entry.createReader();\n readEntries();\n } else {\n // Return an empty list for file system items\n // other than files or directories:\n dfd.resolve([]);\n }\n return dfd.promise();\n },\n _handleFileTreeEntries: function (entries, path) {\n var that = this;\n return $.when.apply($, $.map(entries, function (entry) {\n return that._handleFileTreeEntry(entry, path);\n })).then(function () {\n return Array.prototype.concat.apply([], arguments);\n });\n },\n _getDroppedFiles: function (dataTransfer) {\n dataTransfer = dataTransfer || {};\n var items = dataTransfer.items;\n if (items && items.length && (items[0].webkitGetAsEntry || items[0].getAsEntry)) {\n return this._handleFileTreeEntries($.map(items, function (item) {\n var entry;\n if (item.webkitGetAsEntry) {\n entry = item.webkitGetAsEntry();\n if (entry) {\n // Workaround for Chrome bug #149735:\n entry._file = item.getAsFile();\n }\n return entry;\n }\n return item.getAsEntry();\n }));\n }\n return $.Deferred().resolve($.makeArray(dataTransfer.files)).promise();\n },\n _getSingleFileInputFiles: function (fileInput) {\n fileInput = $(fileInput);\n var entries = fileInput.prop('webkitEntries') || fileInput.prop('entries'),\n files,\n value;\n if (entries && entries.length) {\n return this._handleFileTreeEntries(entries);\n }\n files = $.makeArray(fileInput.prop('files'));\n if (!files.length) {\n value = fileInput.prop('value');\n if (!value) {\n return $.Deferred().resolve([]).promise();\n }\n // If the files property is not available, the browser does not\n // support the File API and we add a pseudo File object with\n // the input value as name with path information removed:\n files = [{\n name: value.replace(/^.*\\\\/, '')\n }];\n } else if (files[0].name === undefined && files[0].fileName) {\n // File normalization for Safari 4 and Firefox 3:\n $.each(files, function (index, file) {\n file.name = file.fileName;\n file.size = file.fileSize;\n });\n }\n return $.Deferred().resolve(files).promise();\n },\n _getFileInputFiles: function (fileInput) {\n if (!(fileInput instanceof $) || fileInput.length === 1) {\n return this._getSingleFileInputFiles(fileInput);\n }\n return $.when.apply($, $.map(fileInput, this._getSingleFileInputFiles)).then(function () {\n return Array.prototype.concat.apply([], arguments);\n });\n },\n _onChange: function (e) {\n var that = this,\n data = {\n fileInput: $(e.target),\n form: $(e.target.form)\n };\n this._getFileInputFiles(data.fileInput).always(function (files) {\n data.files = files;\n if (that.options.replaceFileInput) {\n that._replaceFileInput(data);\n }\n if (that._trigger('change', $.Event('change', {\n delegatedEvent: e\n }), data) !== false) {\n that._onAdd(e, data);\n }\n });\n },\n _onPaste: function (e) {\n var items = e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.items,\n data = {\n files: []\n };\n if (items && items.length) {\n $.each(items, function (index, item) {\n var file = item.getAsFile && item.getAsFile();\n if (file) {\n data.files.push(file);\n }\n });\n if (this._trigger('paste', $.Event('paste', {\n delegatedEvent: e\n }), data) !== false) {\n this._onAdd(e, data);\n }\n }\n },\n _onDrop: function (e) {\n e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer;\n var that = this,\n dataTransfer = e.dataTransfer,\n data = {};\n if (dataTransfer && dataTransfer.files && dataTransfer.files.length) {\n e.preventDefault();\n this._getDroppedFiles(dataTransfer).always(function (files) {\n data.files = files;\n if (that._trigger('drop', $.Event('drop', {\n delegatedEvent: e\n }), data) !== false) {\n that._onAdd(e, data);\n }\n });\n }\n },\n _onDragOver: getDragHandler('dragover'),\n _onDragEnter: getDragHandler('dragenter'),\n _onDragLeave: getDragHandler('dragleave'),\n _initEventHandlers: function () {\n if (this._isXHRUpload(this.options)) {\n this._on(this.options.dropZone, {\n dragover: this._onDragOver,\n drop: this._onDrop,\n // event.preventDefault() on dragenter is required for IE10+:\n dragenter: this._onDragEnter,\n // dragleave is not required, but added for completeness:\n dragleave: this._onDragLeave\n });\n this._on(this.options.pasteZone, {\n paste: this._onPaste\n });\n }\n if ($.support.fileInput) {\n this._on(this.options.fileInput, {\n change: this._onChange\n });\n }\n },\n _destroyEventHandlers: function () {\n this._off(this.options.dropZone, 'dragenter dragleave dragover drop');\n this._off(this.options.pasteZone, 'paste');\n this._off(this.options.fileInput, 'change');\n },\n _destroy: function () {\n this._destroyEventHandlers();\n },\n _setOption: function (key, value) {\n var reinit = $.inArray(key, this._specialOptions) !== -1;\n if (reinit) {\n this._destroyEventHandlers();\n }\n this._super(key, value);\n if (reinit) {\n this._initSpecialOptions();\n this._initEventHandlers();\n }\n },\n _initSpecialOptions: function () {\n var options = this.options;\n if (options.fileInput === undefined) {\n options.fileInput = this.element.is('input[type=\"file\"]') ? this.element : this.element.find('input[type=\"file\"]');\n } else if (!(options.fileInput instanceof $)) {\n options.fileInput = $(options.fileInput);\n }\n if (!(options.dropZone instanceof $)) {\n options.dropZone = $(options.dropZone);\n }\n if (!(options.pasteZone instanceof $)) {\n options.pasteZone = $(options.pasteZone);\n }\n },\n _getRegExp: function (str) {\n var parts = str.split('/'),\n modifiers = parts.pop();\n parts.shift();\n return new RegExp(parts.join('/'), modifiers);\n },\n _isRegExpOption: function (key, value) {\n return key !== 'url' && $.type(value) === 'string' && /^\\/.*\\/[igm]{0,3}$/.test(value);\n },\n _initDataAttributes: function () {\n var that = this,\n options = this.options,\n data = this.element.data();\n // Initialize options set via HTML5 data-attributes:\n $.each(this.element[0].attributes, function (index, attr) {\n var key = attr.name.toLowerCase(),\n value;\n if (/^data-/.test(key)) {\n // Convert hyphen-ated key to camelCase:\n key = key.slice(5).replace(/-[a-z]/g, function (str) {\n return str.charAt(1).toUpperCase();\n });\n value = data[key];\n if (that._isRegExpOption(key, value)) {\n value = that._getRegExp(value);\n }\n options[key] = value;\n }\n });\n },\n _create: function () {\n this._initDataAttributes();\n this._initSpecialOptions();\n this._slots = [];\n this._sequence = this._getXHRPromise(true);\n this._sending = this._active = 0;\n this._initProgressObject(this);\n this._initEventHandlers();\n },\n // This method is exposed to the widget API and allows to query\n // the number of active uploads:\n active: function () {\n return this._active;\n },\n // This method is exposed to the widget API and allows to query\n // the widget upload progress.\n // It returns an object with loaded, total and bitrate properties\n // for the running uploads:\n progress: function () {\n return this._progress;\n },\n // This method is exposed to the widget API and allows adding files\n // using the fileupload API. The data parameter accepts an object which\n // must have a files property and can contain additional options:\n // .fileupload('add', {files: filesList});\n add: function (data) {\n var that = this;\n if (!data || this.options.disabled) {\n return;\n }\n if (data.fileInput && !data.files) {\n this._getFileInputFiles(data.fileInput).always(function (files) {\n data.files = files;\n that._onAdd(null, data);\n });\n } else {\n data.files = $.makeArray(data.files);\n this._onAdd(null, data);\n }\n },\n // This method is exposed to the widget API and allows sending files\n // using the fileupload API. The data parameter accepts an object which\n // must have a files or fileInput property and can contain additional options:\n // .fileupload('send', {files: filesList});\n // The method returns a Promise object for the file upload call.\n send: function (data) {\n if (data && !this.options.disabled) {\n if (data.fileInput && !data.files) {\n var that = this,\n dfd = $.Deferred(),\n promise = dfd.promise(),\n jqXHR,\n aborted;\n promise.abort = function () {\n aborted = true;\n if (jqXHR) {\n return jqXHR.abort();\n }\n dfd.reject(null, 'abort', 'abort');\n return promise;\n };\n this._getFileInputFiles(data.fileInput).always(function (files) {\n if (aborted) {\n return;\n }\n if (!files.length) {\n dfd.reject();\n return;\n }\n data.files = files;\n jqXHR = that._onSend(null, data);\n jqXHR.then(function (result, textStatus, jqXHR) {\n dfd.resolve(result, textStatus, jqXHR);\n }, function (jqXHR, textStatus, errorThrown) {\n dfd.reject(jqXHR, textStatus, errorThrown);\n });\n });\n return this._enhancePromise(promise);\n }\n data.files = $.makeArray(data.files);\n if (data.files.length) {\n return this._onSend(null, data);\n }\n }\n return this._getXHRPromise(false, data && data.context);\n }\n });\n});","/* ===================================================\r\n * jquery-sortable.js v0.9.13\r\n * http://johnny.github.com/jquery-sortable/\r\n * ===================================================\r\n * Copyright (c) 2012 Jonas von Andrian\r\n * All rights reserved.\r\n *\r\n * Redistribution and use in source and binary forms, with or without\r\n * modification, are permitted provided that the following conditions are met:\r\n * * Redistributions of source code must retain the above copyright\r\n * notice, this list of conditions and the following disclaimer.\r\n * * Redistributions in binary form must reproduce the above copyright\r\n * notice, this list of conditions and the following disclaimer in the\r\n * documentation and/or other materials provided with the distribution.\r\n * * The name of the author may not be used to endorse or promote products\r\n * derived from this software without specific prior written permission.\r\n *\r\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\n * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\r\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\r\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n * ========================================================== */\n\n!function ($, window, pluginName, undefined) {\n var containerDefaults = {\n // If true, items can be dragged from this container\n drag: true,\n // If true, items can be droped onto this container\n drop: true,\n // Exclude items from being draggable, if the\n // selector matches the item\n exclude: \"\",\n // If true, search for nested containers within an item.If you nest containers,\n // either the original selector with which you call the plugin must only match the top containers,\n // or you need to specify a group (see the bootstrap nav example)\n nested: true,\n // If true, the items are assumed to be arranged vertically\n vertical: true\n },\n // end container defaults\n groupDefaults = {\n // This is executed after the placeholder has been moved.\n // $closestItemOrContainer contains the closest item, the placeholder\n // has been put at or the closest empty Container, the placeholder has\n // been appended to.\n afterMove: function ($placeholder, container, $closestItemOrContainer) {},\n // The exact css path between the container and its items, e.g. \"> tbody\"\n containerPath: \"\",\n // The css selector of the containers\n containerSelector: \"ol, ul\",\n // Distance the mouse has to travel to start dragging\n distance: 0,\n // Time in milliseconds after mousedown until dragging should start.\n // This option can be used to prevent unwanted drags when clicking on an element.\n delay: 0,\n // The css selector of the drag handle\n handle: \"\",\n // The exact css path between the item and its subcontainers.\n // It should only match the immediate items of a container.\n // No item of a subcontainer should be matched. E.g. for ol>div>li the itemPath is \"> div\"\n itemPath: \"\",\n // The css selector of the items\n itemSelector: \"li\",\n // The class given to \"body\" while an item is being dragged\n bodyClass: \"dragging\",\n // The class giving to an item while being dragged\n draggedClass: \"dragged\",\n // Check if the dragged item may be inside the container.\n // Use with care, since the search for a valid container entails a depth first search\n // and may be quite expensive.\n isValidTarget: function ($item, container) {\n return true;\n },\n // Executed before onDrop if placeholder is detached.\n // This happens if pullPlaceholder is set to false and the drop occurs outside a container.\n onCancel: function ($item, container, _super, event) {},\n // Executed at the beginning of a mouse move event.\n // The Placeholder has not been moved yet.\n onDrag: function ($item, position, _super, event) {\n $item.css(position);\n },\n // Called after the drag has been started,\n // that is the mouse button is being held down and\n // the mouse is moving.\n // The container is the closest initialized container.\n // Therefore it might not be the container, that actually contains the item.\n onDragStart: function ($item, container, _super, event) {\n $item.css({\n height: $item.outerHeight(),\n width: $item.outerWidth()\n });\n $item.addClass(container.group.options.draggedClass);\n $(\"body\").addClass(container.group.options.bodyClass);\n },\n // Called when the mouse button is being released\n onDrop: function ($item, container, _super, event) {\n $item.removeClass(container.group.options.draggedClass).removeAttr(\"style\");\n $(\"body\").removeClass(container.group.options.bodyClass);\n },\n // Called on mousedown. If falsy value is returned, the dragging will not start.\n // Ignore if element clicked is input, select or textarea\n onMousedown: function ($item, _super, event) {\n if (!event.target.nodeName.match(/^(input|select|textarea)$/i)) {\n event.preventDefault();\n return true;\n }\n },\n // The class of the placeholder (must match placeholder option markup)\n placeholderClass: \"placeholder\",\n // Template for the placeholder. Can be any valid jQuery input\n // e.g. a string, a DOM element.\n // The placeholder must have the class \"placeholder\"\n placeholder: '<li class=\"placeholder\"></li>',\n // If true, the position of the placeholder is calculated on every mousemove.\n // If false, it is only calculated when the mouse is above a container.\n pullPlaceholder: true,\n // Specifies serialization of the container group.\n // The pair $parent/$children is either container/items or item/subcontainers.\n serialize: function ($parent, $children, parentIsContainer) {\n var result = $.extend({}, $parent.data());\n if (parentIsContainer) return [$children];else if ($children[0]) {\n result.children = $children;\n }\n delete result.subContainers;\n delete result.sortable;\n return result;\n },\n // Set tolerance while dragging. Positive values decrease sensitivity,\n // negative values increase it.\n tolerance: 0\n },\n // end group defaults\n containerGroups = {},\n groupCounter = 0,\n emptyBox = {\n left: 0,\n top: 0,\n bottom: 0,\n right: 0\n },\n eventNames = {\n start: \"touchstart.sortable mousedown.sortable\",\n drop: \"touchend.sortable touchcancel.sortable mouseup.sortable\",\n drag: \"touchmove.sortable mousemove.sortable\",\n scroll: \"scroll.sortable\"\n },\n subContainerKey = \"subContainers\";\n\n /*\r\n * a is Array [left, right, top, bottom]\r\n * b is array [left, top]\r\n */\n function d(a, b) {\n var x = Math.max(0, a[0] - b[0], b[0] - a[1]),\n y = Math.max(0, a[2] - b[1], b[1] - a[3]);\n return x + y;\n }\n function setDimensions(array, dimensions, tolerance, useOffset) {\n var i = array.length,\n offsetMethod = useOffset ? \"offset\" : \"position\";\n tolerance = tolerance || 0;\n while (i--) {\n var el = array[i].el ? array[i].el : $(array[i]),\n // use fitting method\n pos = el[offsetMethod]();\n pos.left += parseInt(el.css('margin-left'), 10);\n pos.top += parseInt(el.css('margin-top'), 10);\n dimensions[i] = [pos.left - tolerance, pos.left + el.outerWidth() + tolerance, pos.top - tolerance, pos.top + el.outerHeight() + tolerance];\n }\n }\n function getRelativePosition(pointer, element) {\n var offset = element.offset();\n return {\n left: pointer.left - offset.left,\n top: pointer.top - offset.top\n };\n }\n function sortByDistanceDesc(dimensions, pointer, lastPointer) {\n pointer = [pointer.left, pointer.top];\n lastPointer = lastPointer && [lastPointer.left, lastPointer.top];\n var dim,\n i = dimensions.length,\n distances = [];\n while (i--) {\n dim = dimensions[i];\n distances[i] = [i, d(dim, pointer), lastPointer && d(dim, lastPointer)];\n }\n distances = distances.sort(function (a, b) {\n return b[1] - a[1] || b[2] - a[2] || b[0] - a[0];\n });\n\n // last entry is the closest\n return distances;\n }\n function ContainerGroup(options) {\n this.options = $.extend({}, groupDefaults, options);\n this.containers = [];\n if (!this.options.rootGroup) {\n this.scrollProxy = $.proxy(this.scroll, this);\n this.dragProxy = $.proxy(this.drag, this);\n this.dropProxy = $.proxy(this.drop, this);\n this.placeholder = $(this.options.placeholder);\n if (!options.isValidTarget) this.options.isValidTarget = undefined;\n }\n }\n ContainerGroup.get = function (options) {\n if (!containerGroups[options.group]) {\n if (options.group === undefined) options.group = groupCounter++;\n containerGroups[options.group] = new ContainerGroup(options);\n }\n return containerGroups[options.group];\n };\n ContainerGroup.prototype = {\n dragInit: function (e, itemContainer) {\n this.$document = $(itemContainer.el[0].ownerDocument);\n\n // get item to drag\n var closestItem = $(e.target).closest(this.options.itemSelector);\n // using the length of this item, prevents the plugin from being started if there is no handle being clicked on.\n // this may also be helpful in instantiating multidrag.\n if (closestItem.length) {\n this.item = closestItem;\n this.itemContainer = itemContainer;\n if (this.item.is(this.options.exclude) || !this.options.onMousedown(this.item, groupDefaults.onMousedown, e)) {\n return;\n }\n this.setPointer(e);\n this.toggleListeners('on');\n this.setupDelayTimer();\n this.dragInitDone = true;\n }\n },\n drag: function (e) {\n if (!this.dragging) {\n if (!this.distanceMet(e) || !this.delayMet) return;\n this.options.onDragStart(this.item, this.itemContainer, groupDefaults.onDragStart, e);\n this.item.before(this.placeholder);\n this.dragging = true;\n }\n this.setPointer(e);\n // place item under the cursor\n this.options.onDrag(this.item, getRelativePosition(this.pointer, this.item.offsetParent()), groupDefaults.onDrag, e);\n var p = this.getPointer(e),\n box = this.sameResultBox,\n t = this.options.tolerance;\n if (!box || box.top - t > p.top || box.bottom + t < p.top || box.left - t > p.left || box.right + t < p.left) if (!this.searchValidTarget()) {\n this.placeholder.detach();\n this.lastAppendedItem = undefined;\n }\n },\n drop: function (e) {\n this.toggleListeners('off');\n this.dragInitDone = false;\n if (this.dragging) {\n // processing Drop, check if placeholder is detached\n if (this.placeholder.closest(\"html\")[0]) {\n this.placeholder.before(this.item).detach();\n } else {\n this.options.onCancel(this.item, this.itemContainer, groupDefaults.onCancel, e);\n }\n this.options.onDrop(this.item, this.getContainer(this.item), groupDefaults.onDrop, e);\n\n // cleanup\n this.clearDimensions();\n this.clearOffsetParent();\n this.lastAppendedItem = this.sameResultBox = undefined;\n this.dragging = false;\n }\n },\n searchValidTarget: function (pointer, lastPointer) {\n if (!pointer) {\n pointer = this.relativePointer || this.pointer;\n lastPointer = this.lastRelativePointer || this.lastPointer;\n }\n var distances = sortByDistanceDesc(this.getContainerDimensions(), pointer, lastPointer),\n i = distances.length;\n while (i--) {\n var index = distances[i][0],\n distance = distances[i][1];\n if (!distance || this.options.pullPlaceholder) {\n var container = this.containers[index];\n if (!container.disabled) {\n if (!this.$getOffsetParent()) {\n var offsetParent = container.getItemOffsetParent();\n pointer = getRelativePosition(pointer, offsetParent);\n lastPointer = getRelativePosition(lastPointer, offsetParent);\n }\n if (container.searchValidTarget(pointer, lastPointer)) return true;\n }\n }\n }\n if (this.sameResultBox) this.sameResultBox = undefined;\n },\n movePlaceholder: function (container, item, method, sameResultBox) {\n var lastAppendedItem = this.lastAppendedItem;\n if (!sameResultBox && lastAppendedItem && lastAppendedItem[0] === item[0]) return;\n item[method](this.placeholder);\n this.lastAppendedItem = item;\n this.sameResultBox = sameResultBox;\n this.options.afterMove(this.placeholder, container, item);\n },\n getContainerDimensions: function () {\n if (!this.containerDimensions) setDimensions(this.containers, this.containerDimensions = [], this.options.tolerance, !this.$getOffsetParent());\n return this.containerDimensions;\n },\n getContainer: function (element) {\n return element.closest(this.options.containerSelector).data(pluginName);\n },\n $getOffsetParent: function () {\n if (this.offsetParent === undefined) {\n var i = this.containers.length - 1,\n offsetParent = this.containers[i].getItemOffsetParent();\n if (!this.options.rootGroup) {\n while (i--) {\n if (offsetParent[0] != this.containers[i].getItemOffsetParent()[0]) {\n // If every container has the same offset parent,\n // use position() which is relative to this parent,\n // otherwise use offset()\n // compare #setDimensions\n offsetParent = false;\n break;\n }\n }\n }\n this.offsetParent = offsetParent;\n }\n return this.offsetParent;\n },\n setPointer: function (e) {\n var pointer = this.getPointer(e);\n if (this.$getOffsetParent()) {\n var relativePointer = getRelativePosition(pointer, this.$getOffsetParent());\n this.lastRelativePointer = this.relativePointer;\n this.relativePointer = relativePointer;\n }\n this.lastPointer = this.pointer;\n this.pointer = pointer;\n },\n distanceMet: function (e) {\n var currentPointer = this.getPointer(e);\n return Math.max(Math.abs(this.pointer.left - currentPointer.left), Math.abs(this.pointer.top - currentPointer.top)) >= this.options.distance;\n },\n getPointer: function (e) {\n var o = e.originalEvent || e.originalEvent.touches && e.originalEvent.touches[0];\n return {\n left: e.pageX || o.pageX,\n top: e.pageY || o.pageY\n };\n },\n setupDelayTimer: function () {\n var that = this;\n this.delayMet = !this.options.delay;\n\n // init delay timer if needed\n if (!this.delayMet) {\n clearTimeout(this._mouseDelayTimer);\n this._mouseDelayTimer = setTimeout(function () {\n that.delayMet = true;\n }, this.options.delay);\n }\n },\n scroll: function (e) {\n this.clearDimensions();\n this.clearOffsetParent(); // TODO is this needed?\n },\n\n toggleListeners: function (method) {\n var that = this,\n events = ['drag', 'drop', 'scroll'];\n $.each(events, function (i, event) {\n that.$document[method](eventNames[event], that[event + 'Proxy']);\n });\n },\n clearOffsetParent: function () {\n this.offsetParent = undefined;\n },\n // Recursively clear container and item dimensions\n clearDimensions: function () {\n this.traverse(function (object) {\n object._clearDimensions();\n });\n },\n traverse: function (callback) {\n callback(this);\n var i = this.containers.length;\n while (i--) {\n this.containers[i].traverse(callback);\n }\n },\n _clearDimensions: function () {\n this.containerDimensions = undefined;\n },\n _destroy: function () {\n containerGroups[this.options.group] = undefined;\n }\n };\n function Container(element, options) {\n this.el = element;\n this.options = $.extend({}, containerDefaults, options);\n this.group = ContainerGroup.get(this.options);\n this.rootGroup = this.options.rootGroup || this.group;\n this.handle = this.rootGroup.options.handle || this.rootGroup.options.itemSelector;\n var itemPath = this.rootGroup.options.itemPath;\n this.target = itemPath ? this.el.find(itemPath) : this.el;\n this.target.on(eventNames.start, this.handle, $.proxy(this.dragInit, this));\n if (this.options.drop) this.group.containers.push(this);\n }\n Container.prototype = {\n dragInit: function (e) {\n var rootGroup = this.rootGroup;\n if (!this.disabled && !rootGroup.dragInitDone && this.options.drag && this.isValidDrag(e)) {\n rootGroup.dragInit(e, this);\n }\n },\n isValidDrag: function (e) {\n return e.which == 1 || e.type == \"touchstart\" && e.originalEvent.touches.length == 1;\n },\n searchValidTarget: function (pointer, lastPointer) {\n var distances = sortByDistanceDesc(this.getItemDimensions(), pointer, lastPointer),\n i = distances.length,\n rootGroup = this.rootGroup,\n validTarget = !rootGroup.options.isValidTarget || rootGroup.options.isValidTarget(rootGroup.item, this);\n if (!i && validTarget) {\n rootGroup.movePlaceholder(this, this.target, \"append\");\n return true;\n } else while (i--) {\n var index = distances[i][0],\n distance = distances[i][1];\n if (!distance && this.hasChildGroup(index)) {\n var found = this.getContainerGroup(index).searchValidTarget(pointer, lastPointer);\n if (found) return true;\n } else if (validTarget) {\n this.movePlaceholder(index, pointer);\n return true;\n }\n }\n },\n movePlaceholder: function (index, pointer) {\n var item = $(this.items[index]),\n dim = this.itemDimensions[index],\n method = \"after\",\n width = item.outerWidth(),\n height = item.outerHeight(),\n offset = item.offset(),\n sameResultBox = {\n left: offset.left,\n right: offset.left + width,\n top: offset.top,\n bottom: offset.top + height\n };\n if (this.options.vertical) {\n var yCenter = (dim[2] + dim[3]) / 2,\n inUpperHalf = pointer.top <= yCenter;\n if (inUpperHalf) {\n method = \"before\";\n sameResultBox.bottom -= height / 2;\n } else sameResultBox.top += height / 2;\n } else {\n var xCenter = (dim[0] + dim[1]) / 2,\n inLeftHalf = pointer.left <= xCenter;\n if (inLeftHalf) {\n method = \"before\";\n sameResultBox.right -= width / 2;\n } else sameResultBox.left += width / 2;\n }\n if (this.hasChildGroup(index)) sameResultBox = emptyBox;\n this.rootGroup.movePlaceholder(this, item, method, sameResultBox);\n },\n getItemDimensions: function () {\n if (!this.itemDimensions) {\n this.items = this.$getChildren(this.el, \"item\").filter(\":not(.\" + this.group.options.placeholderClass + \", .\" + this.group.options.draggedClass + \")\").get();\n setDimensions(this.items, this.itemDimensions = [], this.options.tolerance);\n }\n return this.itemDimensions;\n },\n getItemOffsetParent: function () {\n var offsetParent,\n el = this.el;\n // Since el might be empty we have to check el itself and\n // can not do something like el.children().first().offsetParent()\n if (el.css(\"position\") === \"relative\" || el.css(\"position\") === \"absolute\" || el.css(\"position\") === \"fixed\") offsetParent = el;else offsetParent = el.offsetParent();\n return offsetParent;\n },\n hasChildGroup: function (index) {\n return this.options.nested && this.getContainerGroup(index);\n },\n getContainerGroup: function (index) {\n var childGroup = $.data(this.items[index], subContainerKey);\n if (childGroup === undefined) {\n var childContainers = this.$getChildren(this.items[index], \"container\");\n childGroup = false;\n if (childContainers[0]) {\n var options = $.extend({}, this.options, {\n rootGroup: this.rootGroup,\n group: groupCounter++\n });\n childGroup = childContainers[pluginName](options).data(pluginName).group;\n }\n $.data(this.items[index], subContainerKey, childGroup);\n }\n return childGroup;\n },\n $getChildren: function (parent, type) {\n var options = this.rootGroup.options,\n path = options[type + \"Path\"],\n selector = options[type + \"Selector\"];\n parent = $(parent);\n if (path) parent = parent.find(path);\n return parent.children(selector);\n },\n _serialize: function (parent, isContainer) {\n var that = this,\n childType = isContainer ? \"item\" : \"container\",\n children = this.$getChildren(parent, childType).not(this.options.exclude).map(function () {\n return that._serialize($(this), !isContainer);\n }).get();\n return this.rootGroup.options.serialize(parent, children, isContainer);\n },\n traverse: function (callback) {\n $.each(this.items || [], function (item) {\n var group = $.data(this, subContainerKey);\n if (group) group.traverse(callback);\n });\n callback(this);\n },\n _clearDimensions: function () {\n this.itemDimensions = undefined;\n },\n _destroy: function () {\n var that = this;\n this.target.off(eventNames.start, this.handle);\n this.el.removeData(pluginName);\n if (this.options.drop) this.group.containers = $.grep(this.group.containers, function (val) {\n return val != that;\n });\n $.each(this.items || [], function () {\n $.removeData(this, subContainerKey);\n });\n }\n };\n var API = {\n enable: function () {\n this.traverse(function (object) {\n object.disabled = false;\n });\n },\n disable: function () {\n this.traverse(function (object) {\n object.disabled = true;\n });\n },\n serialize: function () {\n return this._serialize(this.el, true);\n },\n refresh: function () {\n this.traverse(function (object) {\n object._clearDimensions();\n });\n },\n destroy: function () {\n this.traverse(function (object) {\n object._destroy();\n });\n }\n };\n $.extend(Container.prototype, API);\n\n /**\r\n * jQuery API\r\n *\r\n * Parameters are\r\n * either options on init\r\n * or a method name followed by arguments to pass to the method\r\n */\n $.fn[pluginName] = function (methodOrOptions) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.map(function () {\n var $t = $(this),\n object = $t.data(pluginName);\n if (object && API[methodOrOptions]) return API[methodOrOptions].apply(object, args) || this;else if (!object && (methodOrOptions === undefined || typeof methodOrOptions === \"object\")) $t.data(pluginName, new Container($t, methodOrOptions));\n return this;\n });\n };\n}(jQuery, window, 'sortable');","/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function (global, factory) {\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\n // For CommonJS and CommonJS-like environments where a proper `window`\n // is present, execute the factory and get jQuery.\n // For environments that do not have a `window` with a `document`\n // (such as Node.js), expose a factory as module.exports.\n // This accentuates the need for the creation of a real `window`.\n // e.g. var jQuery = require(\"jquery\")(window);\n // See ticket #14549 for more info.\n module.exports = global.document ? factory(global, true) : function (w) {\n if (!w.document) {\n throw new Error(\"jQuery requires a window with a document\");\n }\n return factory(w);\n };\n } else {\n factory(global);\n }\n\n // Pass this if window is not defined yet\n})(typeof window !== \"undefined\" ? window : this, function (window, noGlobal) {\n // Support: Firefox 18+\n // Can't be in strict mode, several libs including ASP.NET trace\n // the stack via arguments.caller.callee and Firefox dies if\n // you try to trace through \"use strict\" call chains. (#13335)\n //\"use strict\";\n var arr = [];\n var document = window.document;\n var slice = arr.slice;\n var concat = arr.concat;\n var push = arr.push;\n var indexOf = arr.indexOf;\n var class2type = {};\n var toString = class2type.toString;\n var hasOwn = class2type.hasOwnProperty;\n var support = {};\n var version = \"2.2.4\",\n // Define a local copy of jQuery\n jQuery = function (selector, context) {\n // The jQuery object is actually just the init constructor 'enhanced'\n // Need init if jQuery is called (just allow error to be thrown if not included)\n return new jQuery.fn.init(selector, context);\n },\n // Support: Android<4.1\n // Make sure we trim BOM and NBSP\n rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n // Matches dashed string for camelizing\n rmsPrefix = /^-ms-/,\n rdashAlpha = /-([\\da-z])/gi,\n // Used by jQuery.camelCase as callback to replace()\n fcamelCase = function (all, letter) {\n return letter.toUpperCase();\n };\n jQuery.fn = jQuery.prototype = {\n // The current version of jQuery being used\n jquery: version,\n constructor: jQuery,\n // Start with an empty selector\n selector: \"\",\n // The default length of a jQuery object is 0\n length: 0,\n toArray: function () {\n return slice.call(this);\n },\n // Get the Nth element in the matched element set OR\n // Get the whole matched element set as a clean array\n get: function (num) {\n return num != null ?\n // Return just the one element from the set\n num < 0 ? this[num + this.length] : this[num] :\n // Return all the elements in a clean array\n slice.call(this);\n },\n // Take an array of elements and push it onto the stack\n // (returning the new matched element set)\n pushStack: function (elems) {\n // Build a new jQuery matched element set\n var ret = jQuery.merge(this.constructor(), elems);\n\n // Add the old object onto the stack (as a reference)\n ret.prevObject = this;\n ret.context = this.context;\n\n // Return the newly-formed element set\n return ret;\n },\n // Execute a callback for every element in the matched set.\n each: function (callback) {\n return jQuery.each(this, callback);\n },\n map: function (callback) {\n return this.pushStack(jQuery.map(this, function (elem, i) {\n return callback.call(elem, i, elem);\n }));\n },\n slice: function () {\n return this.pushStack(slice.apply(this, arguments));\n },\n first: function () {\n return this.eq(0);\n },\n last: function () {\n return this.eq(-1);\n },\n eq: function (i) {\n var len = this.length,\n j = +i + (i < 0 ? len : 0);\n return this.pushStack(j >= 0 && j < len ? [this[j]] : []);\n },\n end: function () {\n return this.prevObject || this.constructor();\n },\n // For internal use only.\n // Behaves like an Array's method, not like a jQuery method.\n push: push,\n sort: arr.sort,\n splice: arr.splice\n };\n jQuery.extend = jQuery.fn.extend = function () {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length,\n deep = false;\n\n // Handle a deep copy situation\n if (typeof target === \"boolean\") {\n deep = target;\n\n // Skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== \"object\" && !jQuery.isFunction(target)) {\n target = {};\n }\n\n // Extend jQuery itself if only one argument is passed\n if (i === length) {\n target = this;\n i--;\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n src = target[name];\n copy = options[name];\n\n // Prevent never-ending loop\n if (target === copy) {\n continue;\n }\n\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && jQuery.isArray(src) ? src : [];\n } else {\n clone = src && jQuery.isPlainObject(src) ? src : {};\n }\n\n // Never move original objects, clone them\n target[name] = jQuery.extend(deep, clone, copy);\n\n // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n\n // Return the modified object\n return target;\n };\n jQuery.extend({\n // Unique for each copy of jQuery on the page\n expando: \"jQuery\" + (version + Math.random()).replace(/\\D/g, \"\"),\n // Assume jQuery is ready without the ready module\n isReady: true,\n error: function (msg) {\n throw new Error(msg);\n },\n noop: function () {},\n isFunction: function (obj) {\n return jQuery.type(obj) === \"function\";\n },\n isArray: Array.isArray,\n isWindow: function (obj) {\n return obj != null && obj === obj.window;\n },\n isNumeric: function (obj) {\n // parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n // ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n // subtraction forces infinities to NaN\n // adding 1 corrects loss of precision from parseFloat (#15100)\n var realStringObj = obj && obj.toString();\n return !jQuery.isArray(obj) && realStringObj - parseFloat(realStringObj) + 1 >= 0;\n },\n isPlainObject: function (obj) {\n var key;\n\n // Not plain objects:\n // - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n // - DOM nodes\n // - window\n if (jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow(obj)) {\n return false;\n }\n\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwn.call(obj, \"constructor\") && !hasOwn.call(obj.constructor.prototype || {}, \"isPrototypeOf\")) {\n return false;\n }\n\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own\n for (key in obj) {}\n return key === undefined || hasOwn.call(obj, key);\n },\n isEmptyObject: function (obj) {\n var name;\n for (name in obj) {\n return false;\n }\n return true;\n },\n type: function (obj) {\n if (obj == null) {\n return obj + \"\";\n }\n\n // Support: Android<4.0, iOS<6 (functionish RegExp)\n return typeof obj === \"object\" || typeof obj === \"function\" ? class2type[toString.call(obj)] || \"object\" : typeof obj;\n },\n // Evaluates a script in a global context\n globalEval: function (code) {\n var script,\n indirect = eval;\n code = jQuery.trim(code);\n if (code) {\n // If the code includes a valid, prologue position\n // strict mode pragma, execute code by injecting a\n // script tag into the document.\n if (code.indexOf(\"use strict\") === 1) {\n script = document.createElement(\"script\");\n script.text = code;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else {\n // Otherwise, avoid the DOM node creation, insertion\n // and removal by using an indirect global eval\n\n indirect(code);\n }\n }\n },\n // Convert dashed to camelCase; used by the css and data modules\n // Support: IE9-11+\n // Microsoft forgot to hump their vendor prefix (#9572)\n camelCase: function (string) {\n return string.replace(rmsPrefix, \"ms-\").replace(rdashAlpha, fcamelCase);\n },\n nodeName: function (elem, name) {\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n },\n each: function (obj, callback) {\n var length,\n i = 0;\n if (isArrayLike(obj)) {\n length = obj.length;\n for (; i < length; i++) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n } else {\n for (i in obj) {\n if (callback.call(obj[i], i, obj[i]) === false) {\n break;\n }\n }\n }\n return obj;\n },\n // Support: Android<4.1\n trim: function (text) {\n return text == null ? \"\" : (text + \"\").replace(rtrim, \"\");\n },\n // results is for internal usage only\n makeArray: function (arr, results) {\n var ret = results || [];\n if (arr != null) {\n if (isArrayLike(Object(arr))) {\n jQuery.merge(ret, typeof arr === \"string\" ? [arr] : arr);\n } else {\n push.call(ret, arr);\n }\n }\n return ret;\n },\n inArray: function (elem, arr, i) {\n return arr == null ? -1 : indexOf.call(arr, elem, i);\n },\n merge: function (first, second) {\n var len = +second.length,\n j = 0,\n i = first.length;\n for (; j < len; j++) {\n first[i++] = second[j];\n }\n first.length = i;\n return first;\n },\n grep: function (elems, callback, invert) {\n var callbackInverse,\n matches = [],\n i = 0,\n length = elems.length,\n callbackExpect = !invert;\n\n // Go through the array, only saving the items\n // that pass the validator function\n for (; i < length; i++) {\n callbackInverse = !callback(elems[i], i);\n if (callbackInverse !== callbackExpect) {\n matches.push(elems[i]);\n }\n }\n return matches;\n },\n // arg is for internal usage only\n map: function (elems, callback, arg) {\n var length,\n value,\n i = 0,\n ret = [];\n\n // Go through the array, translating each of the items to their new values\n if (isArrayLike(elems)) {\n length = elems.length;\n for (; i < length; i++) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n\n // Go through every key on the object,\n } else {\n for (i in elems) {\n value = callback(elems[i], i, arg);\n if (value != null) {\n ret.push(value);\n }\n }\n }\n\n // Flatten any nested arrays\n return concat.apply([], ret);\n },\n // A global GUID counter for objects\n guid: 1,\n // Bind a function to a context, optionally partially applying any\n // arguments.\n proxy: function (fn, context) {\n var tmp, args, proxy;\n if (typeof context === \"string\") {\n tmp = fn[context];\n context = fn;\n fn = tmp;\n }\n\n // Quick check to determine if target is callable, in the spec\n // this throws a TypeError, but we will just return undefined.\n if (!jQuery.isFunction(fn)) {\n return undefined;\n }\n\n // Simulated bind\n args = slice.call(arguments, 2);\n proxy = function () {\n return fn.apply(context || this, args.concat(slice.call(arguments)));\n };\n\n // Set the guid of unique handler to the same of original handler, so it can be removed\n proxy.guid = fn.guid = fn.guid || jQuery.guid++;\n return proxy;\n },\n now: Date.now,\n // jQuery.support is not used in Core but other projects attach their\n // properties to it so it needs to exist.\n support: support\n });\n\n // JSHint would error on this code due to the Symbol not being defined in ES5.\n // Defining this global in .jshintrc would create a danger of using the global\n // unguarded in another place, it seems safer to just disable JSHint for these\n // three lines.\n /* jshint ignore: start */\n if (typeof Symbol === \"function\") {\n jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];\n }\n /* jshint ignore: end */\n\n // Populate the class2type map\n jQuery.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n function isArrayLike(obj) {\n // Support: iOS 8.2 (not reproducible in simulator)\n // `in` check used to prevent JIT error (gh-2145)\n // hasOwn isn't used here due to false negatives\n // regarding Nodelist length in IE\n var length = !!obj && \"length\" in obj && obj.length,\n type = jQuery.type(obj);\n if (type === \"function\" || jQuery.isWindow(obj)) {\n return false;\n }\n return type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && length - 1 in obj;\n }\n var Sizzle =\n /*!\n * Sizzle CSS Selector Engine v2.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\n */\n function (window) {\n var i,\n support,\n Expr,\n getText,\n isXML,\n tokenize,\n compile,\n select,\n outermostContext,\n sortInput,\n hasDuplicate,\n // Local document vars\n setDocument,\n document,\n docElem,\n documentIsHTML,\n rbuggyQSA,\n rbuggyMatches,\n matches,\n contains,\n // Instance-specific data\n expando = \"sizzle\" + 1 * new Date(),\n preferredDoc = window.document,\n dirruns = 0,\n done = 0,\n classCache = createCache(),\n tokenCache = createCache(),\n compilerCache = createCache(),\n sortOrder = function (a, b) {\n if (a === b) {\n hasDuplicate = true;\n }\n return 0;\n },\n // General-purpose constants\n MAX_NEGATIVE = 1 << 31,\n // Instance methods\n hasOwn = {}.hasOwnProperty,\n arr = [],\n pop = arr.pop,\n push_native = arr.push,\n push = arr.push,\n slice = arr.slice,\n // Use a stripped-down indexOf as it's faster than native\n // http://jsperf.com/thor-indexof-vs-for/5\n indexOf = function (list, elem) {\n var i = 0,\n len = list.length;\n for (; i < len; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n },\n booleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n // Regular expressions\n\n // http://www.w3.org/TR/css3-selectors/#whitespace\n whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n identifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n // Operator (capture 2)\n \"*([*^$|!~]?=)\" + whitespace +\n // \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace + \"*\\\\]\",\n pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n // 1. quoted (capture 3; capture 4 or capture 5)\n \"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n // 2. simple (capture 6)\n \"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n // 3. anything else (capture 2)\n \".*\" + \")\\\\)|)\",\n // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n rwhitespace = new RegExp(whitespace + \"+\", \"g\"),\n rtrim = new RegExp(\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\"),\n rcomma = new RegExp(\"^\" + whitespace + \"*,\" + whitespace + \"*\"),\n rcombinators = new RegExp(\"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\"),\n rattributeQuotes = new RegExp(\"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\"),\n rpseudo = new RegExp(pseudos),\n ridentifier = new RegExp(\"^\" + identifier + \"$\"),\n matchExpr = {\n \"ID\": new RegExp(\"^#(\" + identifier + \")\"),\n \"CLASS\": new RegExp(\"^\\\\.(\" + identifier + \")\"),\n \"TAG\": new RegExp(\"^(\" + identifier + \"|[*])\"),\n \"ATTR\": new RegExp(\"^\" + attributes),\n \"PSEUDO\": new RegExp(\"^\" + pseudos),\n \"CHILD\": new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\"),\n \"bool\": new RegExp(\"^(?:\" + booleans + \")$\", \"i\"),\n // For use in libraries implementing .is()\n // We use this for POS matching in `select`\n \"needsContext\": new RegExp(\"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\")\n },\n rinputs = /^(?:input|select|textarea|button)$/i,\n rheader = /^h\\d$/i,\n rnative = /^[^{]+\\{\\s*\\[native \\w/,\n // Easily-parseable/retrievable ID or TAG or CLASS selectors\n rquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n rsibling = /[+~]/,\n rescape = /'|\\\\/g,\n // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n runescape = new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\"),\n funescape = function (_, escaped, escapedWhitespace) {\n var high = \"0x\" + escaped - 0x10000;\n // NaN means non-codepoint\n // Support: Firefox<24\n // Workaround erroneous numeric interpretation of +\"0x\"\n return high !== high || escapedWhitespace ? escaped : high < 0 ?\n // BMP codepoint\n String.fromCharCode(high + 0x10000) :\n // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);\n },\n // Used for iframes\n // See setDocument()\n // Removing the function wrapper causes a \"Permission Denied\"\n // error in IE\n unloadHandler = function () {\n setDocument();\n };\n\n // Optimize for push.apply( _, NodeList )\n try {\n push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes);\n // Support: Android<4.0\n // Detect silently failing push.apply\n arr[preferredDoc.childNodes.length].nodeType;\n } catch (e) {\n push = {\n apply: arr.length ?\n // Leverage slice if possible\n function (target, els) {\n push_native.apply(target, slice.call(els));\n } :\n // Support: IE<9\n // Otherwise append directly\n function (target, els) {\n var j = target.length,\n i = 0;\n // Can't trust NodeList.length\n while (target[j++] = els[i++]) {}\n target.length = j - 1;\n }\n };\n }\n function Sizzle(selector, context, results, seed) {\n var m,\n i,\n elem,\n nid,\n nidselect,\n match,\n groups,\n newSelector,\n newContext = context && context.ownerDocument,\n // nodeType defaults to 9, since context defaults to document\n nodeType = context ? context.nodeType : 9;\n results = results || [];\n\n // Return early from calls with invalid selector or context\n if (typeof selector !== \"string\" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {\n return results;\n }\n\n // Try to shortcut find operations (as opposed to filters) in HTML documents\n if (!seed) {\n if ((context ? context.ownerDocument || context : preferredDoc) !== document) {\n setDocument(context);\n }\n context = context || document;\n if (documentIsHTML) {\n // If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n // (excepting DocumentFragment context, where the methods don't exist)\n if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {\n // ID selector\n if (m = match[1]) {\n // Document context\n if (nodeType === 9) {\n if (elem = context.getElementById(m)) {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (elem.id === m) {\n results.push(elem);\n return results;\n }\n } else {\n return results;\n }\n\n // Element context\n } else {\n // Support: IE, Opera, Webkit\n // TODO: identify versions\n // getElementById can match elements by name instead of ID\n if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {\n results.push(elem);\n return results;\n }\n }\n\n // Type selector\n } else if (match[2]) {\n push.apply(results, context.getElementsByTagName(selector));\n return results;\n\n // Class selector\n } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {\n push.apply(results, context.getElementsByClassName(m));\n return results;\n }\n }\n\n // Take advantage of querySelectorAll\n if (support.qsa && !compilerCache[selector + \" \"] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {\n if (nodeType !== 1) {\n newContext = context;\n newSelector = selector;\n\n // qSA looks outside Element context, which is not what we want\n // Thanks to Andrew Dupont for this workaround technique\n // Support: IE <=8\n // Exclude object elements\n } else if (context.nodeName.toLowerCase() !== \"object\") {\n // Capture the context ID, setting it first if necessary\n if (nid = context.getAttribute(\"id\")) {\n nid = nid.replace(rescape, \"\\\\$&\");\n } else {\n context.setAttribute(\"id\", nid = expando);\n }\n\n // Prefix every selector in the list\n groups = tokenize(selector);\n i = groups.length;\n nidselect = ridentifier.test(nid) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n while (i--) {\n groups[i] = nidselect + \" \" + toSelector(groups[i]);\n }\n newSelector = groups.join(\",\");\n\n // Expand context for sibling selectors\n newContext = rsibling.test(selector) && testContext(context.parentNode) || context;\n }\n if (newSelector) {\n try {\n push.apply(results, newContext.querySelectorAll(newSelector));\n return results;\n } catch (qsaError) {} finally {\n if (nid === expando) {\n context.removeAttribute(\"id\");\n }\n }\n }\n }\n }\n }\n\n // All others\n return select(selector.replace(rtrim, \"$1\"), context, results, seed);\n }\n\n /**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\n function createCache() {\n var keys = [];\n function cache(key, value) {\n // Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n if (keys.push(key + \" \") > Expr.cacheLength) {\n // Only keep the most recent entries\n delete cache[keys.shift()];\n }\n return cache[key + \" \"] = value;\n }\n return cache;\n }\n\n /**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\n function markFunction(fn) {\n fn[expando] = true;\n return fn;\n }\n\n /**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\n function assert(fn) {\n var div = document.createElement(\"div\");\n try {\n return !!fn(div);\n } catch (e) {\n return false;\n } finally {\n // Remove from its parent by default\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n // release memory in IE\n div = null;\n }\n }\n\n /**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\n function addHandle(attrs, handler) {\n var arr = attrs.split(\"|\"),\n i = arr.length;\n while (i--) {\n Expr.attrHandle[arr[i]] = handler;\n }\n }\n\n /**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\n function siblingCheck(a, b) {\n var cur = b && a,\n diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);\n\n // Use IE sourceIndex if available on both nodes\n if (diff) {\n return diff;\n }\n\n // Check if b follows a\n if (cur) {\n while (cur = cur.nextSibling) {\n if (cur === b) {\n return -1;\n }\n }\n }\n return a ? 1 : -1;\n }\n\n /**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\n function createInputPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\n function createButtonPseudo(type) {\n return function (elem) {\n var name = elem.nodeName.toLowerCase();\n return (name === \"input\" || name === \"button\") && elem.type === type;\n };\n }\n\n /**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\n function createPositionalPseudo(fn) {\n return markFunction(function (argument) {\n argument = +argument;\n return markFunction(function (seed, matches) {\n var j,\n matchIndexes = fn([], seed.length, argument),\n i = matchIndexes.length;\n\n // Match elements found at the specified indexes\n while (i--) {\n if (seed[j = matchIndexes[i]]) {\n seed[j] = !(matches[j] = seed[j]);\n }\n }\n });\n });\n }\n\n /**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\n function testContext(context) {\n return context && typeof context.getElementsByTagName !== \"undefined\" && context;\n }\n\n // Expose support vars for convenience\n support = Sizzle.support = {};\n\n /**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\n isXML = Sizzle.isXML = function (elem) {\n // documentElement is verified for cases where it doesn't yet exist\n // (such as loading iframes in IE - #4833)\n var documentElement = elem && (elem.ownerDocument || elem).documentElement;\n return documentElement ? documentElement.nodeName !== \"HTML\" : false;\n };\n\n /**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\n setDocument = Sizzle.setDocument = function (node) {\n var hasCompare,\n parent,\n doc = node ? node.ownerDocument || node : preferredDoc;\n\n // Return early if doc is invalid or already selected\n if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {\n return document;\n }\n\n // Update global variables\n document = doc;\n docElem = document.documentElement;\n documentIsHTML = !isXML(document);\n\n // Support: IE 9-11, Edge\n // Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n if ((parent = document.defaultView) && parent.top !== parent) {\n // Support: IE 11\n if (parent.addEventListener) {\n parent.addEventListener(\"unload\", unloadHandler, false);\n\n // Support: IE 9 - 10 only\n } else if (parent.attachEvent) {\n parent.attachEvent(\"onunload\", unloadHandler);\n }\n }\n\n /* Attributes\n ---------------------------------------------------------------------- */\n\n // Support: IE<8\n // Verify that getAttribute really returns attributes and not properties\n // (excepting IE8 booleans)\n support.attributes = assert(function (div) {\n div.className = \"i\";\n return !div.getAttribute(\"className\");\n });\n\n /* getElement(s)By*\n ---------------------------------------------------------------------- */\n\n // Check if getElementsByTagName(\"*\") returns only elements\n support.getElementsByTagName = assert(function (div) {\n div.appendChild(document.createComment(\"\"));\n return !div.getElementsByTagName(\"*\").length;\n });\n\n // Support: IE<9\n support.getElementsByClassName = rnative.test(document.getElementsByClassName);\n\n // Support: IE<10\n // Check if getElementById returns elements by name\n // The broken getElementById methods don't pick up programatically-set names,\n // so use a roundabout getElementsByName test\n support.getById = assert(function (div) {\n docElem.appendChild(div).id = expando;\n return !document.getElementsByName || !document.getElementsByName(expando).length;\n });\n\n // ID find and filter\n if (support.getById) {\n Expr.find[\"ID\"] = function (id, context) {\n if (typeof context.getElementById !== \"undefined\" && documentIsHTML) {\n var m = context.getElementById(id);\n return m ? [m] : [];\n }\n };\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n return elem.getAttribute(\"id\") === attrId;\n };\n };\n } else {\n // Support: IE6/7\n // getElementById is not reliable as a find shortcut\n delete Expr.find[\"ID\"];\n Expr.filter[\"ID\"] = function (id) {\n var attrId = id.replace(runescape, funescape);\n return function (elem) {\n var node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n return node && node.value === attrId;\n };\n };\n }\n\n // Tag\n Expr.find[\"TAG\"] = support.getElementsByTagName ? function (tag, context) {\n if (typeof context.getElementsByTagName !== \"undefined\") {\n return context.getElementsByTagName(tag);\n\n // DocumentFragment nodes don't have gEBTN\n } else if (support.qsa) {\n return context.querySelectorAll(tag);\n }\n } : function (tag, context) {\n var elem,\n tmp = [],\n i = 0,\n // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n results = context.getElementsByTagName(tag);\n\n // Filter out possible comments\n if (tag === \"*\") {\n while (elem = results[i++]) {\n if (elem.nodeType === 1) {\n tmp.push(elem);\n }\n }\n return tmp;\n }\n return results;\n };\n\n // Class\n Expr.find[\"CLASS\"] = support.getElementsByClassName && function (className, context) {\n if (typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML) {\n return context.getElementsByClassName(className);\n }\n };\n\n /* QSA/matchesSelector\n ---------------------------------------------------------------------- */\n\n // QSA and matchesSelector support\n\n // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n rbuggyMatches = [];\n\n // qSa(:focus) reports false when true (Chrome 21)\n // We allow this because of a bug in IE8/9 that throws an error\n // whenever `document.activeElement` is accessed on an iframe\n // So, we allow :focus to pass through QSA all the time to avoid the IE error\n // See http://bugs.jquery.com/ticket/13378\n rbuggyQSA = [];\n if (support.qsa = rnative.test(document.querySelectorAll)) {\n // Build QSA regex\n // Regex strategy adopted from Diego Perini\n assert(function (div) {\n // Select is set to empty string on purpose\n // This is to test IE's treatment of not explicitly\n // setting a boolean content attribute,\n // since its presence should be enough\n // http://bugs.jquery.com/ticket/12359\n docElem.appendChild(div).innerHTML = \"<a id='\" + expando + \"'></a>\" + \"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" + \"<option selected=''></option></select>\";\n\n // Support: IE8, Opera 11-12.16\n // Nothing should be selected when empty strings follow ^= or $= or *=\n // The test attribute must be unknown in Opera but \"safe\" for WinRT\n // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n if (div.querySelectorAll(\"[msallowcapture^='']\").length) {\n rbuggyQSA.push(\"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\");\n }\n\n // Support: IE8\n // Boolean attributes and \"value\" are not treated correctly\n if (!div.querySelectorAll(\"[selected]\").length) {\n rbuggyQSA.push(\"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\");\n }\n\n // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n if (!div.querySelectorAll(\"[id~=\" + expando + \"-]\").length) {\n rbuggyQSA.push(\"~=\");\n }\n\n // Webkit/Opera - :checked should return selected option elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n // IE8 throws error here and will not see later tests\n if (!div.querySelectorAll(\":checked\").length) {\n rbuggyQSA.push(\":checked\");\n }\n\n // Support: Safari 8+, iOS 8+\n // https://bugs.webkit.org/show_bug.cgi?id=136851\n // In-page `selector#id sibing-combinator selector` fails\n if (!div.querySelectorAll(\"a#\" + expando + \"+*\").length) {\n rbuggyQSA.push(\".#.+[+~]\");\n }\n });\n assert(function (div) {\n // Support: Windows 8 Native Apps\n // The type and name attributes are restricted during .innerHTML assignment\n var input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n div.appendChild(input).setAttribute(\"name\", \"D\");\n\n // Support: IE8\n // Enforce case-sensitivity of name attribute\n if (div.querySelectorAll(\"[name=d]\").length) {\n rbuggyQSA.push(\"name\" + whitespace + \"*[*^$|!~]?=\");\n }\n\n // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n // IE8 throws error here and will not see later tests\n if (!div.querySelectorAll(\":enabled\").length) {\n rbuggyQSA.push(\":enabled\", \":disabled\");\n }\n\n // Opera 10-11 does not throw on post-comma invalid pseudos\n div.querySelectorAll(\"*,:x\");\n rbuggyQSA.push(\",.*:\");\n });\n }\n if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {\n assert(function (div) {\n // Check to see if it's possible to do matchesSelector\n // on a disconnected node (IE 9)\n support.disconnectedMatch = matches.call(div, \"div\");\n\n // This should fail with an exception\n // Gecko does not error, returns false instead\n matches.call(div, \"[s!='']:x\");\n rbuggyMatches.push(\"!=\", pseudos);\n });\n }\n rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join(\"|\"));\n rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join(\"|\"));\n\n /* Contains\n ---------------------------------------------------------------------- */\n hasCompare = rnative.test(docElem.compareDocumentPosition);\n\n // Element contains another\n // Purposefully self-exclusive\n // As in, an element does not contain itself\n contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {\n var adown = a.nodeType === 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));\n } : function (a, b) {\n if (b) {\n while (b = b.parentNode) {\n if (b === a) {\n return true;\n }\n }\n }\n return false;\n };\n\n /* Sorting\n ---------------------------------------------------------------------- */\n\n // Document order sorting\n sortOrder = hasCompare ? function (a, b) {\n // Flag for duplicate removal\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n\n // Sort on method existence if only one input has compareDocumentPosition\n var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n if (compare) {\n return compare;\n }\n\n // Calculate position if both inputs belong to the same document\n compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) :\n // Otherwise we know they are disconnected\n 1;\n\n // Disconnected nodes\n if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {\n // Choose the first element that is related to our preferred document\n if (a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) {\n return -1;\n }\n if (b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) {\n return 1;\n }\n\n // Maintain original order\n return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n }\n return compare & 4 ? -1 : 1;\n } : function (a, b) {\n // Exit early if the nodes are identical\n if (a === b) {\n hasDuplicate = true;\n return 0;\n }\n var cur,\n i = 0,\n aup = a.parentNode,\n bup = b.parentNode,\n ap = [a],\n bp = [b];\n\n // Parentless nodes are either documents or disconnected\n if (!aup || !bup) {\n return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;\n\n // If the nodes are siblings, we can do a quick check\n } else if (aup === bup) {\n return siblingCheck(a, b);\n }\n\n // Otherwise we need full lists of their ancestors for comparison\n cur = a;\n while (cur = cur.parentNode) {\n ap.unshift(cur);\n }\n cur = b;\n while (cur = cur.parentNode) {\n bp.unshift(cur);\n }\n\n // Walk down the tree looking for a discrepancy\n while (ap[i] === bp[i]) {\n i++;\n }\n return i ?\n // Do a sibling check if the nodes have a common ancestor\n siblingCheck(ap[i], bp[i]) :\n // Otherwise nodes in our document sort first\n ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;\n };\n return document;\n };\n Sizzle.matches = function (expr, elements) {\n return Sizzle(expr, null, null, elements);\n };\n Sizzle.matchesSelector = function (elem, expr) {\n // Set document vars if needed\n if ((elem.ownerDocument || elem) !== document) {\n setDocument(elem);\n }\n\n // Make sure that attribute selectors are quoted\n expr = expr.replace(rattributeQuotes, \"='$1']\");\n if (support.matchesSelector && documentIsHTML && !compilerCache[expr + \" \"] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {\n try {\n var ret = matches.call(elem, expr);\n\n // IE 9's matchesSelector returns false on disconnected nodes\n if (ret || support.disconnectedMatch ||\n // As well, disconnected nodes are said to be in a document\n // fragment in IE 9\n elem.document && elem.document.nodeType !== 11) {\n return ret;\n }\n } catch (e) {}\n }\n return Sizzle(expr, document, null, [elem]).length > 0;\n };\n Sizzle.contains = function (context, elem) {\n // Set document vars if needed\n if ((context.ownerDocument || context) !== document) {\n setDocument(context);\n }\n return contains(context, elem);\n };\n Sizzle.attr = function (elem, name) {\n // Set document vars if needed\n if ((elem.ownerDocument || elem) !== document) {\n setDocument(elem);\n }\n var fn = Expr.attrHandle[name.toLowerCase()],\n // Don't get fooled by Object.prototype properties (jQuery #13807)\n val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;\n return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n };\n Sizzle.error = function (msg) {\n throw new Error(\"Syntax error, unrecognized expression: \" + msg);\n };\n\n /**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\n Sizzle.uniqueSort = function (results) {\n var elem,\n duplicates = [],\n j = 0,\n i = 0;\n\n // Unless we *know* we can detect duplicates, assume their presence\n hasDuplicate = !support.detectDuplicates;\n sortInput = !support.sortStable && results.slice(0);\n results.sort(sortOrder);\n if (hasDuplicate) {\n while (elem = results[i++]) {\n if (elem === results[i]) {\n j = duplicates.push(i);\n }\n }\n while (j--) {\n results.splice(duplicates[j], 1);\n }\n }\n\n // Clear input after sorting to release objects\n // See https://github.com/jquery/sizzle/pull/225\n sortInput = null;\n return results;\n };\n\n /**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\n getText = Sizzle.getText = function (elem) {\n var node,\n ret = \"\",\n i = 0,\n nodeType = elem.nodeType;\n if (!nodeType) {\n // If no nodeType, this is expected to be an array\n while (node = elem[i++]) {\n // Do not traverse comment nodes\n ret += getText(node);\n }\n } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {\n // Use textContent for elements\n // innerText usage removed for consistency of new lines (jQuery #11153)\n if (typeof elem.textContent === \"string\") {\n return elem.textContent;\n } else {\n // Traverse its children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n ret += getText(elem);\n }\n }\n } else if (nodeType === 3 || nodeType === 4) {\n return elem.nodeValue;\n }\n // Do not include comment or processing instruction nodes\n\n return ret;\n };\n Expr = Sizzle.selectors = {\n // Can be adjusted by the user\n cacheLength: 50,\n createPseudo: markFunction,\n match: matchExpr,\n attrHandle: {},\n find: {},\n relative: {\n \">\": {\n dir: \"parentNode\",\n first: true\n },\n \" \": {\n dir: \"parentNode\"\n },\n \"+\": {\n dir: \"previousSibling\",\n first: true\n },\n \"~\": {\n dir: \"previousSibling\"\n }\n },\n preFilter: {\n \"ATTR\": function (match) {\n match[1] = match[1].replace(runescape, funescape);\n\n // Move the given value to match[3] whether quoted or unquoted\n match[3] = (match[3] || match[4] || match[5] || \"\").replace(runescape, funescape);\n if (match[2] === \"~=\") {\n match[3] = \" \" + match[3] + \" \";\n }\n return match.slice(0, 4);\n },\n \"CHILD\": function (match) {\n /* matches from matchExpr[\"CHILD\"]\n \t1 type (only|nth|...)\n \t2 what (child|of-type)\n \t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n \t4 xn-component of xn+y argument ([+-]?\\d*n|)\n \t5 sign of xn-component\n \t6 x of xn-component\n \t7 sign of y-component\n \t8 y of y-component\n */\n match[1] = match[1].toLowerCase();\n if (match[1].slice(0, 3) === \"nth\") {\n // nth-* requires argument\n if (!match[3]) {\n Sizzle.error(match[0]);\n }\n\n // numeric x and y parameters for Expr.filter.CHILD\n // remember that false/true cast respectively to 0/1\n match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === \"even\" || match[3] === \"odd\"));\n match[5] = +(match[7] + match[8] || match[3] === \"odd\");\n\n // other types prohibit arguments\n } else if (match[3]) {\n Sizzle.error(match[0]);\n }\n return match;\n },\n \"PSEUDO\": function (match) {\n var excess,\n unquoted = !match[6] && match[2];\n if (matchExpr[\"CHILD\"].test(match[0])) {\n return null;\n }\n\n // Accept quoted arguments as-is\n if (match[3]) {\n match[2] = match[4] || match[5] || \"\";\n\n // Strip excess characters from unquoted arguments\n } else if (unquoted && rpseudo.test(unquoted) && (\n // Get excess from tokenize (recursively)\n excess = tokenize(unquoted, true)) && (\n // advance to the next closing parenthesis\n excess = unquoted.indexOf(\")\", unquoted.length - excess) - unquoted.length)) {\n // excess is a negative index\n match[0] = match[0].slice(0, excess);\n match[2] = unquoted.slice(0, excess);\n }\n\n // Return only captures needed by the pseudo filter method (type and argument)\n return match.slice(0, 3);\n }\n },\n filter: {\n \"TAG\": function (nodeNameSelector) {\n var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();\n return nodeNameSelector === \"*\" ? function () {\n return true;\n } : function (elem) {\n return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n };\n },\n \"CLASS\": function (className) {\n var pattern = classCache[className + \" \"];\n return pattern || (pattern = new RegExp(\"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\")) && classCache(className, function (elem) {\n return pattern.test(typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\");\n });\n },\n \"ATTR\": function (name, operator, check) {\n return function (elem) {\n var result = Sizzle.attr(elem, name);\n if (result == null) {\n return operator === \"!=\";\n }\n if (!operator) {\n return true;\n }\n result += \"\";\n return operator === \"=\" ? result === check : operator === \"!=\" ? result !== check : operator === \"^=\" ? check && result.indexOf(check) === 0 : operator === \"*=\" ? check && result.indexOf(check) > -1 : operator === \"$=\" ? check && result.slice(-check.length) === check : operator === \"~=\" ? (\" \" + result.replace(rwhitespace, \" \") + \" \").indexOf(check) > -1 : operator === \"|=\" ? result === check || result.slice(0, check.length + 1) === check + \"-\" : false;\n };\n },\n \"CHILD\": function (type, what, argument, first, last) {\n var simple = type.slice(0, 3) !== \"nth\",\n forward = type.slice(-4) !== \"last\",\n ofType = what === \"of-type\";\n return first === 1 && last === 0 ?\n // Shortcut for :nth-*(n)\n function (elem) {\n return !!elem.parentNode;\n } : function (elem, context, xml) {\n var cache,\n uniqueCache,\n outerCache,\n node,\n nodeIndex,\n start,\n dir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n parent = elem.parentNode,\n name = ofType && elem.nodeName.toLowerCase(),\n useCache = !xml && !ofType,\n diff = false;\n if (parent) {\n // :(first|last|only)-(child|of-type)\n if (simple) {\n while (dir) {\n node = elem;\n while (node = node[dir]) {\n if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {\n return false;\n }\n }\n // Reverse direction for :only-* (if we haven't yet done so)\n start = dir = type === \"only\" && !start && \"nextSibling\";\n }\n return true;\n }\n start = [forward ? parent.firstChild : parent.lastChild];\n\n // non-xml :nth-child(...) stores cache data on `parent`\n if (forward && useCache) {\n // Seek `elem` from a previously-cached index\n\n // ...in a gzip-friendly way\n node = parent;\n outerCache = node[expando] || (node[expando] = {});\n\n // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex && cache[2];\n node = nodeIndex && parent.childNodes[nodeIndex];\n while (node = ++nodeIndex && node && node[dir] || (\n // Fallback to seeking `elem` from the start\n diff = nodeIndex = 0) || start.pop()) {\n // When found, cache indexes on `parent` and break\n if (node.nodeType === 1 && ++diff && node === elem) {\n uniqueCache[type] = [dirruns, nodeIndex, diff];\n break;\n }\n }\n } else {\n // Use previously-cached element index if available\n if (useCache) {\n // ...in a gzip-friendly way\n node = elem;\n outerCache = node[expando] || (node[expando] = {});\n\n // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n cache = uniqueCache[type] || [];\n nodeIndex = cache[0] === dirruns && cache[1];\n diff = nodeIndex;\n }\n\n // xml :nth-child(...)\n // or :nth-last-child(...) or :nth(-last)?-of-type(...)\n if (diff === false) {\n // Use the same loop as above to seek `elem` from the start\n while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {\n if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {\n // Cache the index of each encountered element\n if (useCache) {\n outerCache = node[expando] || (node[expando] = {});\n\n // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});\n uniqueCache[type] = [dirruns, diff];\n }\n if (node === elem) {\n break;\n }\n }\n }\n }\n }\n\n // Incorporate the offset, then check against cycle size\n diff -= last;\n return diff === first || diff % first === 0 && diff / first >= 0;\n }\n };\n },\n \"PSEUDO\": function (pseudo, argument) {\n // pseudo-class names are case-insensitive\n // http://www.w3.org/TR/selectors/#pseudo-classes\n // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n // Remember that setFilters inherits from pseudos\n var args,\n fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error(\"unsupported pseudo: \" + pseudo);\n\n // The user may use createPseudo to indicate that\n // arguments are needed to create the filter function\n // just as Sizzle does\n if (fn[expando]) {\n return fn(argument);\n }\n\n // But maintain support for old signatures\n if (fn.length > 1) {\n args = [pseudo, pseudo, \"\", argument];\n return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {\n var idx,\n matched = fn(seed, argument),\n i = matched.length;\n while (i--) {\n idx = indexOf(seed, matched[i]);\n seed[idx] = !(matches[idx] = matched[i]);\n }\n }) : function (elem) {\n return fn(elem, 0, args);\n };\n }\n return fn;\n }\n },\n pseudos: {\n // Potentially complex pseudos\n \"not\": markFunction(function (selector) {\n // Trim the selector passed to compile\n // to avoid treating leading and trailing\n // spaces as combinators\n var input = [],\n results = [],\n matcher = compile(selector.replace(rtrim, \"$1\"));\n return matcher[expando] ? markFunction(function (seed, matches, context, xml) {\n var elem,\n unmatched = matcher(seed, null, xml, []),\n i = seed.length;\n\n // Match elements unmatched by `matcher`\n while (i--) {\n if (elem = unmatched[i]) {\n seed[i] = !(matches[i] = elem);\n }\n }\n }) : function (elem, context, xml) {\n input[0] = elem;\n matcher(input, null, xml, results);\n // Don't keep the element (issue #299)\n input[0] = null;\n return !results.pop();\n };\n }),\n \"has\": markFunction(function (selector) {\n return function (elem) {\n return Sizzle(selector, elem).length > 0;\n };\n }),\n \"contains\": markFunction(function (text) {\n text = text.replace(runescape, funescape);\n return function (elem) {\n return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;\n };\n }),\n // \"Whether an element is represented by a :lang() selector\n // is based solely on the element's language value\n // being equal to the identifier C,\n // or beginning with the identifier C immediately followed by \"-\".\n // The matching of C against the element's language value is performed case-insensitively.\n // The identifier C does not have to be a valid language name.\"\n // http://www.w3.org/TR/selectors/#lang-pseudo\n \"lang\": markFunction(function (lang) {\n // lang value must be a valid identifier\n if (!ridentifier.test(lang || \"\")) {\n Sizzle.error(\"unsupported lang: \" + lang);\n }\n lang = lang.replace(runescape, funescape).toLowerCase();\n return function (elem) {\n var elemLang;\n do {\n if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) {\n elemLang = elemLang.toLowerCase();\n return elemLang === lang || elemLang.indexOf(lang + \"-\") === 0;\n }\n } while ((elem = elem.parentNode) && elem.nodeType === 1);\n return false;\n };\n }),\n // Miscellaneous\n \"target\": function (elem) {\n var hash = window.location && window.location.hash;\n return hash && hash.slice(1) === elem.id;\n },\n \"root\": function (elem) {\n return elem === docElem;\n },\n \"focus\": function (elem) {\n return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n },\n // Boolean properties\n \"enabled\": function (elem) {\n return elem.disabled === false;\n },\n \"disabled\": function (elem) {\n return elem.disabled === true;\n },\n \"checked\": function (elem) {\n // In CSS3, :checked should return both checked and selected elements\n // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n var nodeName = elem.nodeName.toLowerCase();\n return nodeName === \"input\" && !!elem.checked || nodeName === \"option\" && !!elem.selected;\n },\n \"selected\": function (elem) {\n // Accessing this property makes selected-by-default\n // options in Safari work properly\n if (elem.parentNode) {\n elem.parentNode.selectedIndex;\n }\n return elem.selected === true;\n },\n // Contents\n \"empty\": function (elem) {\n // http://www.w3.org/TR/selectors/#empty-pseudo\n // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n // but not by others (comment: 8; processing instruction: 7; etc.)\n // nodeType < 6 works because attributes (2) do not appear as children\n for (elem = elem.firstChild; elem; elem = elem.nextSibling) {\n if (elem.nodeType < 6) {\n return false;\n }\n }\n return true;\n },\n \"parent\": function (elem) {\n return !Expr.pseudos[\"empty\"](elem);\n },\n // Element/input types\n \"header\": function (elem) {\n return rheader.test(elem.nodeName);\n },\n \"input\": function (elem) {\n return rinputs.test(elem.nodeName);\n },\n \"button\": function (elem) {\n var name = elem.nodeName.toLowerCase();\n return name === \"input\" && elem.type === \"button\" || name === \"button\";\n },\n \"text\": function (elem) {\n var attr;\n return elem.nodeName.toLowerCase() === \"input\" && elem.type === \"text\" && (\n // Support: IE<8\n // New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\");\n },\n // Position-in-collection\n \"first\": createPositionalPseudo(function () {\n return [0];\n }),\n \"last\": createPositionalPseudo(function (matchIndexes, length) {\n return [length - 1];\n }),\n \"eq\": createPositionalPseudo(function (matchIndexes, length, argument) {\n return [argument < 0 ? argument + length : argument];\n }),\n \"even\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 0;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n \"odd\": createPositionalPseudo(function (matchIndexes, length) {\n var i = 1;\n for (; i < length; i += 2) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n \"lt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; --i >= 0;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n }),\n \"gt\": createPositionalPseudo(function (matchIndexes, length, argument) {\n var i = argument < 0 ? argument + length : argument;\n for (; ++i < length;) {\n matchIndexes.push(i);\n }\n return matchIndexes;\n })\n }\n };\n Expr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n // Add button/input type pseudos\n for (i in {\n radio: true,\n checkbox: true,\n file: true,\n password: true,\n image: true\n }) {\n Expr.pseudos[i] = createInputPseudo(i);\n }\n for (i in {\n submit: true,\n reset: true\n }) {\n Expr.pseudos[i] = createButtonPseudo(i);\n }\n\n // Easy API for creating new setFilters\n function setFilters() {}\n setFilters.prototype = Expr.filters = Expr.pseudos;\n Expr.setFilters = new setFilters();\n tokenize = Sizzle.tokenize = function (selector, parseOnly) {\n var matched,\n match,\n tokens,\n type,\n soFar,\n groups,\n preFilters,\n cached = tokenCache[selector + \" \"];\n if (cached) {\n return parseOnly ? 0 : cached.slice(0);\n }\n soFar = selector;\n groups = [];\n preFilters = Expr.preFilter;\n while (soFar) {\n // Comma and first run\n if (!matched || (match = rcomma.exec(soFar))) {\n if (match) {\n // Don't consume trailing commas as valid\n soFar = soFar.slice(match[0].length) || soFar;\n }\n groups.push(tokens = []);\n }\n matched = false;\n\n // Combinators\n if (match = rcombinators.exec(soFar)) {\n matched = match.shift();\n tokens.push({\n value: matched,\n // Cast descendant combinators to space\n type: match[0].replace(rtrim, \" \")\n });\n soFar = soFar.slice(matched.length);\n }\n\n // Filters\n for (type in Expr.filter) {\n if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {\n matched = match.shift();\n tokens.push({\n value: matched,\n type: type,\n matches: match\n });\n soFar = soFar.slice(matched.length);\n }\n }\n if (!matched) {\n break;\n }\n }\n\n // Return the length of the invalid excess\n // if we're just parsing\n // Otherwise, throw an error or return tokens\n return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) :\n // Cache the tokens\n tokenCache(selector, groups).slice(0);\n };\n function toSelector(tokens) {\n var i = 0,\n len = tokens.length,\n selector = \"\";\n for (; i < len; i++) {\n selector += tokens[i].value;\n }\n return selector;\n }\n function addCombinator(matcher, combinator, base) {\n var dir = combinator.dir,\n checkNonElements = base && dir === \"parentNode\",\n doneName = done++;\n return combinator.first ?\n // Check against closest ancestor/preceding element\n function (elem, context, xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n return matcher(elem, context, xml);\n }\n }\n } :\n // Check against all ancestor/preceding elements\n function (elem, context, xml) {\n var oldCache,\n uniqueCache,\n outerCache,\n newCache = [dirruns, doneName];\n\n // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n if (xml) {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n if (matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n } else {\n while (elem = elem[dir]) {\n if (elem.nodeType === 1 || checkNonElements) {\n outerCache = elem[expando] || (elem[expando] = {});\n\n // Support: IE <9 only\n // Defend against cloned attroperties (jQuery gh-1709)\n uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});\n if ((oldCache = uniqueCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {\n // Assign to newCache so results back-propagate to previous elements\n return newCache[2] = oldCache[2];\n } else {\n // Reuse newcache so results back-propagate to previous elements\n uniqueCache[dir] = newCache;\n\n // A match means we're done; a fail means we have to keep checking\n if (newCache[2] = matcher(elem, context, xml)) {\n return true;\n }\n }\n }\n }\n }\n };\n }\n function elementMatcher(matchers) {\n return matchers.length > 1 ? function (elem, context, xml) {\n var i = matchers.length;\n while (i--) {\n if (!matchers[i](elem, context, xml)) {\n return false;\n }\n }\n return true;\n } : matchers[0];\n }\n function multipleContexts(selector, contexts, results) {\n var i = 0,\n len = contexts.length;\n for (; i < len; i++) {\n Sizzle(selector, contexts[i], results);\n }\n return results;\n }\n function condense(unmatched, map, filter, context, xml) {\n var elem,\n newUnmatched = [],\n i = 0,\n len = unmatched.length,\n mapped = map != null;\n for (; i < len; i++) {\n if (elem = unmatched[i]) {\n if (!filter || filter(elem, context, xml)) {\n newUnmatched.push(elem);\n if (mapped) {\n map.push(i);\n }\n }\n }\n }\n return newUnmatched;\n }\n function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {\n if (postFilter && !postFilter[expando]) {\n postFilter = setMatcher(postFilter);\n }\n if (postFinder && !postFinder[expando]) {\n postFinder = setMatcher(postFinder, postSelector);\n }\n return markFunction(function (seed, results, context, xml) {\n var temp,\n i,\n elem,\n preMap = [],\n postMap = [],\n preexisting = results.length,\n // Get initial elements from seed or context\n elems = seed || multipleContexts(selector || \"*\", context.nodeType ? [context] : context, []),\n // Prefilter to get matcher input, preserving a map for seed-results synchronization\n matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,\n matcherOut = matcher ?\n // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n postFinder || (seed ? preFilter : preexisting || postFilter) ?\n // ...intermediate processing is necessary\n [] :\n // ...otherwise use results directly\n results : matcherIn;\n\n // Find primary matches\n if (matcher) {\n matcher(matcherIn, matcherOut, context, xml);\n }\n\n // Apply postFilter\n if (postFilter) {\n temp = condense(matcherOut, postMap);\n postFilter(temp, [], context, xml);\n\n // Un-match failing elements by moving them back to matcherIn\n i = temp.length;\n while (i--) {\n if (elem = temp[i]) {\n matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);\n }\n }\n }\n if (seed) {\n if (postFinder || preFilter) {\n if (postFinder) {\n // Get the final matcherOut by condensing this intermediate into postFinder contexts\n temp = [];\n i = matcherOut.length;\n while (i--) {\n if (elem = matcherOut[i]) {\n // Restore matcherIn since elem is not yet a final match\n temp.push(matcherIn[i] = elem);\n }\n }\n postFinder(null, matcherOut = [], temp, xml);\n }\n\n // Move matched elements from seed to results to keep them synchronized\n i = matcherOut.length;\n while (i--) {\n if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {\n seed[temp] = !(results[temp] = elem);\n }\n }\n }\n\n // Add elements to results, through postFinder if defined\n } else {\n matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);\n if (postFinder) {\n postFinder(null, results, matcherOut, xml);\n } else {\n push.apply(results, matcherOut);\n }\n }\n });\n }\n function matcherFromTokens(tokens) {\n var checkContext,\n matcher,\n j,\n len = tokens.length,\n leadingRelative = Expr.relative[tokens[0].type],\n implicitRelative = leadingRelative || Expr.relative[\" \"],\n i = leadingRelative ? 1 : 0,\n // The foundational matcher ensures that elements are reachable from top-level context(s)\n matchContext = addCombinator(function (elem) {\n return elem === checkContext;\n }, implicitRelative, true),\n matchAnyContext = addCombinator(function (elem) {\n return indexOf(checkContext, elem) > -1;\n }, implicitRelative, true),\n matchers = [function (elem, context, xml) {\n var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));\n // Avoid hanging onto element (issue #299)\n checkContext = null;\n return ret;\n }];\n for (; i < len; i++) {\n if (matcher = Expr.relative[tokens[i].type]) {\n matchers = [addCombinator(elementMatcher(matchers), matcher)];\n } else {\n matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);\n\n // Return special upon seeing a positional matcher\n if (matcher[expando]) {\n // Find the next relative operator (if any) for proper handling\n j = ++i;\n for (; j < len; j++) {\n if (Expr.relative[tokens[j].type]) {\n break;\n }\n }\n return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(\n // If the preceding token was a descendant combinator, insert an implicit any-element `*`\n tokens.slice(0, i - 1).concat({\n value: tokens[i - 2].type === \" \" ? \"*\" : \"\"\n })).replace(rtrim, \"$1\"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));\n }\n matchers.push(matcher);\n }\n }\n return elementMatcher(matchers);\n }\n function matcherFromGroupMatchers(elementMatchers, setMatchers) {\n var bySet = setMatchers.length > 0,\n byElement = elementMatchers.length > 0,\n superMatcher = function (seed, context, xml, results, outermost) {\n var elem,\n j,\n matcher,\n matchedCount = 0,\n i = \"0\",\n unmatched = seed && [],\n setMatched = [],\n contextBackup = outermostContext,\n // We must always have either seed elements or outermost context\n elems = seed || byElement && Expr.find[\"TAG\"](\"*\", outermost),\n // Use integer dirruns iff this is the outermost matcher\n dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,\n len = elems.length;\n if (outermost) {\n outermostContext = context === document || context || outermost;\n }\n\n // Add elements passing elementMatchers directly to results\n // Support: IE<9, Safari\n // Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n for (; i !== len && (elem = elems[i]) != null; i++) {\n if (byElement && elem) {\n j = 0;\n if (!context && elem.ownerDocument !== document) {\n setDocument(elem);\n xml = !documentIsHTML;\n }\n while (matcher = elementMatchers[j++]) {\n if (matcher(elem, context || document, xml)) {\n results.push(elem);\n break;\n }\n }\n if (outermost) {\n dirruns = dirrunsUnique;\n }\n }\n\n // Track unmatched elements for set filters\n if (bySet) {\n // They will have gone through all possible matchers\n if (elem = !matcher && elem) {\n matchedCount--;\n }\n\n // Lengthen the array for every element, matched or not\n if (seed) {\n unmatched.push(elem);\n }\n }\n }\n\n // `i` is now the count of elements visited above, and adding it to `matchedCount`\n // makes the latter nonnegative.\n matchedCount += i;\n\n // Apply set filters to unmatched elements\n // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n // equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n // no element matchers and no seed.\n // Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n // case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n // numerically zero.\n if (bySet && i !== matchedCount) {\n j = 0;\n while (matcher = setMatchers[j++]) {\n matcher(unmatched, setMatched, context, xml);\n }\n if (seed) {\n // Reintegrate element matches to eliminate the need for sorting\n if (matchedCount > 0) {\n while (i--) {\n if (!(unmatched[i] || setMatched[i])) {\n setMatched[i] = pop.call(results);\n }\n }\n }\n\n // Discard index placeholder values to get only actual matches\n setMatched = condense(setMatched);\n }\n\n // Add matches to results\n push.apply(results, setMatched);\n\n // Seedless set matches succeeding multiple successful matchers stipulate sorting\n if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {\n Sizzle.uniqueSort(results);\n }\n }\n\n // Override manipulation of globals by nested matchers\n if (outermost) {\n dirruns = dirrunsUnique;\n outermostContext = contextBackup;\n }\n return unmatched;\n };\n return bySet ? markFunction(superMatcher) : superMatcher;\n }\n compile = Sizzle.compile = function (selector, match /* Internal Use Only */) {\n var i,\n setMatchers = [],\n elementMatchers = [],\n cached = compilerCache[selector + \" \"];\n if (!cached) {\n // Generate a function of recursive functions that can be used to check each element\n if (!match) {\n match = tokenize(selector);\n }\n i = match.length;\n while (i--) {\n cached = matcherFromTokens(match[i]);\n if (cached[expando]) {\n setMatchers.push(cached);\n } else {\n elementMatchers.push(cached);\n }\n }\n\n // Cache the compiled function\n cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));\n\n // Save selector and tokenization\n cached.selector = selector;\n }\n return cached;\n };\n\n /**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\n select = Sizzle.select = function (selector, context, results, seed) {\n var i,\n tokens,\n token,\n type,\n find,\n compiled = typeof selector === \"function\" && selector,\n match = !seed && tokenize(selector = compiled.selector || selector);\n results = results || [];\n\n // Try to minimize operations if there is only one selector in the list and no seed\n // (the latter of which guarantees us context)\n if (match.length === 1) {\n // Reduce context if the leading compound selector is an ID\n tokens = match[0] = match[0].slice(0);\n if (tokens.length > 2 && (token = tokens[0]).type === \"ID\" && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {\n context = (Expr.find[\"ID\"](token.matches[0].replace(runescape, funescape), context) || [])[0];\n if (!context) {\n return results;\n\n // Precompiled matchers will still verify ancestry, so step up a level\n } else if (compiled) {\n context = context.parentNode;\n }\n selector = selector.slice(tokens.shift().value.length);\n }\n\n // Fetch a seed set for right-to-left matching\n i = matchExpr[\"needsContext\"].test(selector) ? 0 : tokens.length;\n while (i--) {\n token = tokens[i];\n\n // Abort if we hit a combinator\n if (Expr.relative[type = token.type]) {\n break;\n }\n if (find = Expr.find[type]) {\n // Search, expanding context for leading sibling combinators\n if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {\n // If seed is empty or no tokens remain, we can return early\n tokens.splice(i, 1);\n selector = seed.length && toSelector(tokens);\n if (!selector) {\n push.apply(results, seed);\n return results;\n }\n break;\n }\n }\n }\n }\n\n // Compile and execute a filtering function if one is not provided\n // Provide `match` to avoid retokenization if we modified the selector above\n (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);\n return results;\n };\n\n // One-time assignments\n\n // Sort stability\n support.sortStable = expando.split(\"\").sort(sortOrder).join(\"\") === expando;\n\n // Support: Chrome 14-35+\n // Always assume duplicates if they aren't passed to the comparison function\n support.detectDuplicates = !!hasDuplicate;\n\n // Initialize against the default document\n setDocument();\n\n // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n // Detached nodes confoundingly follow *each other*\n support.sortDetached = assert(function (div1) {\n // Should return 1, but returns 4 (following)\n return div1.compareDocumentPosition(document.createElement(\"div\")) & 1;\n });\n\n // Support: IE<8\n // Prevent attribute/property \"interpolation\"\n // http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\n if (!assert(function (div) {\n div.innerHTML = \"<a href='#'></a>\";\n return div.firstChild.getAttribute(\"href\") === \"#\";\n })) {\n addHandle(\"type|href|height|width\", function (elem, name, isXML) {\n if (!isXML) {\n return elem.getAttribute(name, name.toLowerCase() === \"type\" ? 1 : 2);\n }\n });\n }\n\n // Support: IE<9\n // Use defaultValue in place of getAttribute(\"value\")\n if (!support.attributes || !assert(function (div) {\n div.innerHTML = \"<input/>\";\n div.firstChild.setAttribute(\"value\", \"\");\n return div.firstChild.getAttribute(\"value\") === \"\";\n })) {\n addHandle(\"value\", function (elem, name, isXML) {\n if (!isXML && elem.nodeName.toLowerCase() === \"input\") {\n return elem.defaultValue;\n }\n });\n }\n\n // Support: IE<9\n // Use getAttributeNode to fetch booleans when getAttribute lies\n if (!assert(function (div) {\n return div.getAttribute(\"disabled\") == null;\n })) {\n addHandle(booleans, function (elem, name, isXML) {\n var val;\n if (!isXML) {\n return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;\n }\n });\n }\n return Sizzle;\n }(window);\n jQuery.find = Sizzle;\n jQuery.expr = Sizzle.selectors;\n jQuery.expr[\":\"] = jQuery.expr.pseudos;\n jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\n jQuery.text = Sizzle.getText;\n jQuery.isXMLDoc = Sizzle.isXML;\n jQuery.contains = Sizzle.contains;\n var dir = function (elem, dir, until) {\n var matched = [],\n truncate = until !== undefined;\n while ((elem = elem[dir]) && elem.nodeType !== 9) {\n if (elem.nodeType === 1) {\n if (truncate && jQuery(elem).is(until)) {\n break;\n }\n matched.push(elem);\n }\n }\n return matched;\n };\n var siblings = function (n, elem) {\n var matched = [];\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== elem) {\n matched.push(n);\n }\n }\n return matched;\n };\n var rneedsContext = jQuery.expr.match.needsContext;\n var rsingleTag = /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/;\n var risSimple = /^.[^:#\\[\\.,]*$/;\n\n // Implement the identical functionality for filter and not\n function winnow(elements, qualifier, not) {\n if (jQuery.isFunction(qualifier)) {\n return jQuery.grep(elements, function (elem, i) {\n /* jshint -W018 */\n return !!qualifier.call(elem, i, elem) !== not;\n });\n }\n if (qualifier.nodeType) {\n return jQuery.grep(elements, function (elem) {\n return elem === qualifier !== not;\n });\n }\n if (typeof qualifier === \"string\") {\n if (risSimple.test(qualifier)) {\n return jQuery.filter(qualifier, elements, not);\n }\n qualifier = jQuery.filter(qualifier, elements);\n }\n return jQuery.grep(elements, function (elem) {\n return indexOf.call(qualifier, elem) > -1 !== not;\n });\n }\n jQuery.filter = function (expr, elems, not) {\n var elem = elems[0];\n if (not) {\n expr = \":not(\" + expr + \")\";\n }\n return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {\n return elem.nodeType === 1;\n }));\n };\n jQuery.fn.extend({\n find: function (selector) {\n var i,\n len = this.length,\n ret = [],\n self = this;\n if (typeof selector !== \"string\") {\n return this.pushStack(jQuery(selector).filter(function () {\n for (i = 0; i < len; i++) {\n if (jQuery.contains(self[i], this)) {\n return true;\n }\n }\n }));\n }\n for (i = 0; i < len; i++) {\n jQuery.find(selector, self[i], ret);\n }\n\n // Needed because $( selector, context ) becomes $( context ).find( selector )\n ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret);\n ret.selector = this.selector ? this.selector + \" \" + selector : selector;\n return ret;\n },\n filter: function (selector) {\n return this.pushStack(winnow(this, selector || [], false));\n },\n not: function (selector) {\n return this.pushStack(winnow(this, selector || [], true));\n },\n is: function (selector) {\n return !!winnow(this,\n // If this is a positional/relative selector, check membership in the returned set\n // so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n typeof selector === \"string\" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;\n }\n });\n\n // Initialize a jQuery object\n\n // A central reference to the root jQuery(document)\n var rootjQuery,\n // A simple way to check for HTML strings\n // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n // Strict HTML recognition (#11290: must start with <)\n rquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n init = jQuery.fn.init = function (selector, context, root) {\n var match, elem;\n\n // HANDLE: $(\"\"), $(null), $(undefined), $(false)\n if (!selector) {\n return this;\n }\n\n // Method init() accepts an alternate rootjQuery\n // so migrate can support jQuery.sub (gh-2101)\n root = root || rootjQuery;\n\n // Handle HTML strings\n if (typeof selector === \"string\") {\n if (selector[0] === \"<\" && selector[selector.length - 1] === \">\" && selector.length >= 3) {\n // Assume that strings that start and end with <> are HTML and skip the regex check\n match = [null, selector, null];\n } else {\n match = rquickExpr.exec(selector);\n }\n\n // Match html or make sure no context is specified for #id\n if (match && (match[1] || !context)) {\n // HANDLE: $(html) -> $(array)\n if (match[1]) {\n context = context instanceof jQuery ? context[0] : context;\n\n // Option to run scripts is true for back-compat\n // Intentionally let the error be thrown if parseHTML is not present\n jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true));\n\n // HANDLE: $(html, props)\n if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {\n for (match in context) {\n // Properties of context are called as methods if possible\n if (jQuery.isFunction(this[match])) {\n this[match](context[match]);\n\n // ...and otherwise set as attributes\n } else {\n this.attr(match, context[match]);\n }\n }\n }\n return this;\n\n // HANDLE: $(#id)\n } else {\n elem = document.getElementById(match[2]);\n\n // Support: Blackberry 4.6\n // gEBID returns nodes no longer in the document (#6963)\n if (elem && elem.parentNode) {\n // Inject the element directly into the jQuery object\n this.length = 1;\n this[0] = elem;\n }\n this.context = document;\n this.selector = selector;\n return this;\n }\n\n // HANDLE: $(expr, $(...))\n } else if (!context || context.jquery) {\n return (context || root).find(selector);\n\n // HANDLE: $(expr, context)\n // (which is just equivalent to: $(context).find(expr)\n } else {\n return this.constructor(context).find(selector);\n }\n\n // HANDLE: $(DOMElement)\n } else if (selector.nodeType) {\n this.context = this[0] = selector;\n this.length = 1;\n return this;\n\n // HANDLE: $(function)\n // Shortcut for document ready\n } else if (jQuery.isFunction(selector)) {\n return root.ready !== undefined ? root.ready(selector) :\n // Execute immediately if ready is not present\n selector(jQuery);\n }\n if (selector.selector !== undefined) {\n this.selector = selector.selector;\n this.context = selector.context;\n }\n return jQuery.makeArray(selector, this);\n };\n\n // Give the init function the jQuery prototype for later instantiation\n init.prototype = jQuery.fn;\n\n // Initialize central reference\n rootjQuery = jQuery(document);\n var rparentsprev = /^(?:parents|prev(?:Until|All))/,\n // Methods guaranteed to produce a unique set when starting from a unique set\n guaranteedUnique = {\n children: true,\n contents: true,\n next: true,\n prev: true\n };\n jQuery.fn.extend({\n has: function (target) {\n var targets = jQuery(target, this),\n l = targets.length;\n return this.filter(function () {\n var i = 0;\n for (; i < l; i++) {\n if (jQuery.contains(this, targets[i])) {\n return true;\n }\n }\n });\n },\n closest: function (selectors, context) {\n var cur,\n i = 0,\n l = this.length,\n matched = [],\n pos = rneedsContext.test(selectors) || typeof selectors !== \"string\" ? jQuery(selectors, context || this.context) : 0;\n for (; i < l; i++) {\n for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {\n // Always skip document fragments\n if (cur.nodeType < 11 && (pos ? pos.index(cur) > -1 :\n // Don't pass non-elements to Sizzle\n cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {\n matched.push(cur);\n break;\n }\n }\n }\n return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);\n },\n // Determine the position of an element within the set\n index: function (elem) {\n // No argument, return index in parent\n if (!elem) {\n return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;\n }\n\n // Index in selector\n if (typeof elem === \"string\") {\n return indexOf.call(jQuery(elem), this[0]);\n }\n\n // Locate the position of the desired element\n return indexOf.call(this,\n // If it receives a jQuery object, the first element is used\n elem.jquery ? elem[0] : elem);\n },\n add: function (selector, context) {\n return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));\n },\n addBack: function (selector) {\n return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));\n }\n });\n function sibling(cur, dir) {\n while ((cur = cur[dir]) && cur.nodeType !== 1) {}\n return cur;\n }\n jQuery.each({\n parent: function (elem) {\n var parent = elem.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n parents: function (elem) {\n return dir(elem, \"parentNode\");\n },\n parentsUntil: function (elem, i, until) {\n return dir(elem, \"parentNode\", until);\n },\n next: function (elem) {\n return sibling(elem, \"nextSibling\");\n },\n prev: function (elem) {\n return sibling(elem, \"previousSibling\");\n },\n nextAll: function (elem) {\n return dir(elem, \"nextSibling\");\n },\n prevAll: function (elem) {\n return dir(elem, \"previousSibling\");\n },\n nextUntil: function (elem, i, until) {\n return dir(elem, \"nextSibling\", until);\n },\n prevUntil: function (elem, i, until) {\n return dir(elem, \"previousSibling\", until);\n },\n siblings: function (elem) {\n return siblings((elem.parentNode || {}).firstChild, elem);\n },\n children: function (elem) {\n return siblings(elem.firstChild);\n },\n contents: function (elem) {\n return elem.contentDocument || jQuery.merge([], elem.childNodes);\n }\n }, function (name, fn) {\n jQuery.fn[name] = function (until, selector) {\n var matched = jQuery.map(this, fn, until);\n if (name.slice(-5) !== \"Until\") {\n selector = until;\n }\n if (selector && typeof selector === \"string\") {\n matched = jQuery.filter(selector, matched);\n }\n if (this.length > 1) {\n // Remove duplicates\n if (!guaranteedUnique[name]) {\n jQuery.uniqueSort(matched);\n }\n\n // Reverse order for parents* and prev-derivatives\n if (rparentsprev.test(name)) {\n matched.reverse();\n }\n }\n return this.pushStack(matched);\n };\n });\n var rnotwhite = /\\S+/g;\n\n // Convert String-formatted options into Object-formatted ones\n function createOptions(options) {\n var object = {};\n jQuery.each(options.match(rnotwhite) || [], function (_, flag) {\n object[flag] = true;\n });\n return object;\n }\n\n /*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\n jQuery.Callbacks = function (options) {\n // Convert options from String-formatted to Object-formatted if needed\n // (we check in cache first)\n options = typeof options === \"string\" ? createOptions(options) : jQuery.extend({}, options);\n var\n // Flag to know if list is currently firing\n firing,\n // Last fire value for non-forgettable lists\n memory,\n // Flag to know if list was already fired\n fired,\n // Flag to prevent firing\n locked,\n // Actual callback list\n list = [],\n // Queue of execution data for repeatable lists\n queue = [],\n // Index of currently firing callback (modified by add/remove as needed)\n firingIndex = -1,\n // Fire callbacks\n fire = function () {\n // Enforce single-firing\n locked = options.once;\n\n // Execute callbacks for all pending executions,\n // respecting firingIndex overrides and runtime changes\n fired = firing = true;\n for (; queue.length; firingIndex = -1) {\n memory = queue.shift();\n while (++firingIndex < list.length) {\n // Run callback and check for early termination\n if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {\n // Jump to end and forget the data so .add doesn't re-fire\n firingIndex = list.length;\n memory = false;\n }\n }\n }\n\n // Forget the data if we're done with it\n if (!options.memory) {\n memory = false;\n }\n firing = false;\n\n // Clean up if we're done firing for good\n if (locked) {\n // Keep an empty list if we have data for future add calls\n if (memory) {\n list = [];\n\n // Otherwise, this object is spent\n } else {\n list = \"\";\n }\n }\n },\n // Actual Callbacks object\n self = {\n // Add a callback or a collection of callbacks to the list\n add: function () {\n if (list) {\n // If we have memory from a past run, we should fire after adding\n if (memory && !firing) {\n firingIndex = list.length - 1;\n queue.push(memory);\n }\n (function add(args) {\n jQuery.each(args, function (_, arg) {\n if (jQuery.isFunction(arg)) {\n if (!options.unique || !self.has(arg)) {\n list.push(arg);\n }\n } else if (arg && arg.length && jQuery.type(arg) !== \"string\") {\n // Inspect recursively\n add(arg);\n }\n });\n })(arguments);\n if (memory && !firing) {\n fire();\n }\n }\n return this;\n },\n // Remove a callback from the list\n remove: function () {\n jQuery.each(arguments, function (_, arg) {\n var index;\n while ((index = jQuery.inArray(arg, list, index)) > -1) {\n list.splice(index, 1);\n\n // Handle firing indexes\n if (index <= firingIndex) {\n firingIndex--;\n }\n }\n });\n return this;\n },\n // Check if a given callback is in the list.\n // If no argument is given, return whether or not list has callbacks attached.\n has: function (fn) {\n return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;\n },\n // Remove all callbacks from the list\n empty: function () {\n if (list) {\n list = [];\n }\n return this;\n },\n // Disable .fire and .add\n // Abort any current/pending executions\n // Clear all callbacks and values\n disable: function () {\n locked = queue = [];\n list = memory = \"\";\n return this;\n },\n disabled: function () {\n return !list;\n },\n // Disable .fire\n // Also disable .add unless we have memory (since it would have no effect)\n // Abort any pending executions\n lock: function () {\n locked = queue = [];\n if (!memory) {\n list = memory = \"\";\n }\n return this;\n },\n locked: function () {\n return !!locked;\n },\n // Call all callbacks with the given context and arguments\n fireWith: function (context, args) {\n if (!locked) {\n args = args || [];\n args = [context, args.slice ? args.slice() : args];\n queue.push(args);\n if (!firing) {\n fire();\n }\n }\n return this;\n },\n // Call all the callbacks with the given arguments\n fire: function () {\n self.fireWith(this, arguments);\n return this;\n },\n // To know if the callbacks have already been called at least once\n fired: function () {\n return !!fired;\n }\n };\n return self;\n };\n jQuery.extend({\n Deferred: function (func) {\n var tuples = [\n // action, add listener, listener list, final state\n [\"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\"], [\"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\"], [\"notify\", \"progress\", jQuery.Callbacks(\"memory\")]],\n state = \"pending\",\n promise = {\n state: function () {\n return state;\n },\n always: function () {\n deferred.done(arguments).fail(arguments);\n return this;\n },\n then: function /* fnDone, fnFail, fnProgress */\n () {\n var fns = arguments;\n return jQuery.Deferred(function (newDefer) {\n jQuery.each(tuples, function (i, tuple) {\n var fn = jQuery.isFunction(fns[i]) && fns[i];\n\n // deferred[ done | fail | progress ] for forwarding actions to newDefer\n deferred[tuple[1]](function () {\n var returned = fn && fn.apply(this, arguments);\n if (returned && jQuery.isFunction(returned.promise)) {\n returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);\n } else {\n newDefer[tuple[0] + \"With\"](this === promise ? newDefer.promise() : this, fn ? [returned] : arguments);\n }\n });\n });\n fns = null;\n }).promise();\n },\n // Get a promise for this deferred\n // If obj is provided, the promise aspect is added to the object\n promise: function (obj) {\n return obj != null ? jQuery.extend(obj, promise) : promise;\n }\n },\n deferred = {};\n\n // Keep pipe for back-compat\n promise.pipe = promise.then;\n\n // Add list-specific methods\n jQuery.each(tuples, function (i, tuple) {\n var list = tuple[2],\n stateString = tuple[3];\n\n // promise[ done | fail | progress ] = list.add\n promise[tuple[1]] = list.add;\n\n // Handle state\n if (stateString) {\n list.add(function () {\n // state = [ resolved | rejected ]\n state = stateString;\n\n // [ reject_list | resolve_list ].disable; progress_list.lock\n }, tuples[i ^ 1][2].disable, tuples[2][2].lock);\n }\n\n // deferred[ resolve | reject | notify ]\n deferred[tuple[0]] = function () {\n deferred[tuple[0] + \"With\"](this === deferred ? promise : this, arguments);\n return this;\n };\n deferred[tuple[0] + \"With\"] = list.fireWith;\n });\n\n // Make the deferred a promise\n promise.promise(deferred);\n\n // Call given func if any\n if (func) {\n func.call(deferred, deferred);\n }\n\n // All done!\n return deferred;\n },\n // Deferred helper\n when: function (subordinate /* , ..., subordinateN */) {\n var i = 0,\n resolveValues = slice.call(arguments),\n length = resolveValues.length,\n // the count of uncompleted subordinates\n remaining = length !== 1 || subordinate && jQuery.isFunction(subordinate.promise) ? length : 0,\n // the master Deferred.\n // If resolveValues consist of only a single Deferred, just use that.\n deferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n // Update function for both resolve and progress values\n updateFunc = function (i, contexts, values) {\n return function (value) {\n contexts[i] = this;\n values[i] = arguments.length > 1 ? slice.call(arguments) : value;\n if (values === progressValues) {\n deferred.notifyWith(contexts, values);\n } else if (! --remaining) {\n deferred.resolveWith(contexts, values);\n }\n };\n },\n progressValues,\n progressContexts,\n resolveContexts;\n\n // Add listeners to Deferred subordinates; treat others as resolved\n if (length > 1) {\n progressValues = new Array(length);\n progressContexts = new Array(length);\n resolveContexts = new Array(length);\n for (; i < length; i++) {\n if (resolveValues[i] && jQuery.isFunction(resolveValues[i].promise)) {\n resolveValues[i].promise().progress(updateFunc(i, progressContexts, progressValues)).done(updateFunc(i, resolveContexts, resolveValues)).fail(deferred.reject);\n } else {\n --remaining;\n }\n }\n }\n\n // If we're not waiting on anything, resolve the master\n if (!remaining) {\n deferred.resolveWith(resolveContexts, resolveValues);\n }\n return deferred.promise();\n }\n });\n\n // The deferred used on DOM ready\n var readyList;\n jQuery.fn.ready = function (fn) {\n // Add the callback\n jQuery.ready.promise().done(fn);\n return this;\n };\n jQuery.extend({\n // Is the DOM ready to be used? Set to true once it occurs.\n isReady: false,\n // A counter to track how many items to wait for before\n // the ready event fires. See #6781\n readyWait: 1,\n // Hold (or release) the ready event\n holdReady: function (hold) {\n if (hold) {\n jQuery.readyWait++;\n } else {\n jQuery.ready(true);\n }\n },\n // Handle when the DOM is ready\n ready: function (wait) {\n // Abort if there are pending holds or we're already ready\n if (wait === true ? --jQuery.readyWait : jQuery.isReady) {\n return;\n }\n\n // Remember that the DOM is ready\n jQuery.isReady = true;\n\n // If a normal DOM Ready event fired, decrement, and wait if need be\n if (wait !== true && --jQuery.readyWait > 0) {\n return;\n }\n\n // If there are functions bound, to execute\n readyList.resolveWith(document, [jQuery]);\n\n // Trigger any bound ready events\n if (jQuery.fn.triggerHandler) {\n jQuery(document).triggerHandler(\"ready\");\n jQuery(document).off(\"ready\");\n }\n }\n });\n\n /**\n * The ready event handler and self cleanup method\n */\n function completed() {\n document.removeEventListener(\"DOMContentLoaded\", completed);\n window.removeEventListener(\"load\", completed);\n jQuery.ready();\n }\n jQuery.ready.promise = function (obj) {\n if (!readyList) {\n readyList = jQuery.Deferred();\n\n // Catch cases where $(document).ready() is called\n // after the browser event has already occurred.\n // Support: IE9-10 only\n // Older IE sometimes signals \"interactive\" too soon\n if (document.readyState === \"complete\" || document.readyState !== \"loading\" && !document.documentElement.doScroll) {\n // Handle it asynchronously to allow scripts the opportunity to delay ready\n window.setTimeout(jQuery.ready);\n } else {\n // Use the handy event callback\n document.addEventListener(\"DOMContentLoaded\", completed);\n\n // A fallback to window.onload, that will always work\n window.addEventListener(\"load\", completed);\n }\n }\n return readyList.promise(obj);\n };\n\n // Kick off the DOM ready check even if the user does not\n jQuery.ready.promise();\n\n // Multifunctional method to get and set values of a collection\n // The value/s can optionally be executed if it's a function\n var access = function (elems, fn, key, value, chainable, emptyGet, raw) {\n var i = 0,\n len = elems.length,\n bulk = key == null;\n\n // Sets many values\n if (jQuery.type(key) === \"object\") {\n chainable = true;\n for (i in key) {\n access(elems, fn, i, key[i], true, emptyGet, raw);\n }\n\n // Sets one value\n } else if (value !== undefined) {\n chainable = true;\n if (!jQuery.isFunction(value)) {\n raw = true;\n }\n if (bulk) {\n // Bulk operations run against the entire set\n if (raw) {\n fn.call(elems, value);\n fn = null;\n\n // ...except when executing function values\n } else {\n bulk = fn;\n fn = function (elem, key, value) {\n return bulk.call(jQuery(elem), value);\n };\n }\n }\n if (fn) {\n for (; i < len; i++) {\n fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));\n }\n }\n }\n return chainable ? elems :\n // Gets\n bulk ? fn.call(elems) : len ? fn(elems[0], key) : emptyGet;\n };\n var acceptData = function (owner) {\n // Accepts only:\n // - Node\n // - Node.ELEMENT_NODE\n // - Node.DOCUMENT_NODE\n // - Object\n // - Any\n /* jshint -W018 */\n return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;\n };\n function Data() {\n this.expando = jQuery.expando + Data.uid++;\n }\n Data.uid = 1;\n Data.prototype = {\n register: function (owner, initial) {\n var value = initial || {};\n\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value;\n\n // Otherwise secure it in a non-enumerable, non-writable property\n // configurability must be true to allow the property to be\n // deleted with the delete operator\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n writable: true,\n configurable: true\n });\n }\n return owner[this.expando];\n },\n cache: function (owner) {\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return an empty object.\n if (!acceptData(owner)) {\n return {};\n }\n\n // Check if the owner object already has a cache\n var value = owner[this.expando];\n\n // If not, create one\n if (!value) {\n value = {};\n\n // We can accept data for non-element nodes in modern browsers,\n // but we should not, see #8335.\n // Always return an empty object.\n if (acceptData(owner)) {\n // If it is a node unlikely to be stringify-ed or looped over\n // use plain assignment\n if (owner.nodeType) {\n owner[this.expando] = value;\n\n // Otherwise secure it in a non-enumerable property\n // configurable must be true to allow the property to be\n // deleted when data is removed\n } else {\n Object.defineProperty(owner, this.expando, {\n value: value,\n configurable: true\n });\n }\n }\n }\n return value;\n },\n set: function (owner, data, value) {\n var prop,\n cache = this.cache(owner);\n\n // Handle: [ owner, key, value ] args\n if (typeof data === \"string\") {\n cache[data] = value;\n\n // Handle: [ owner, { properties } ] args\n } else {\n // Copy the properties one-by-one to the cache object\n for (prop in data) {\n cache[prop] = data[prop];\n }\n }\n return cache;\n },\n get: function (owner, key) {\n return key === undefined ? this.cache(owner) : owner[this.expando] && owner[this.expando][key];\n },\n access: function (owner, key, value) {\n var stored;\n\n // In cases where either:\n //\n // 1. No key was specified\n // 2. A string key was specified, but no value provided\n //\n // Take the \"read\" path and allow the get method to determine\n // which value to return, respectively either:\n //\n // 1. The entire cache object\n // 2. The data stored at the key\n //\n if (key === undefined || key && typeof key === \"string\" && value === undefined) {\n stored = this.get(owner, key);\n return stored !== undefined ? stored : this.get(owner, jQuery.camelCase(key));\n }\n\n // When the key is not a string, or both a key and value\n // are specified, set or extend (existing objects) with either:\n //\n // 1. An object of properties\n // 2. A key and value\n //\n this.set(owner, key, value);\n\n // Since the \"set\" path can have two possible entry points\n // return the expected data based on which path was taken[*]\n return value !== undefined ? value : key;\n },\n remove: function (owner, key) {\n var i,\n name,\n camel,\n cache = owner[this.expando];\n if (cache === undefined) {\n return;\n }\n if (key === undefined) {\n this.register(owner);\n } else {\n // Support array or space separated string of keys\n if (jQuery.isArray(key)) {\n // If \"name\" is an array of keys...\n // When data is initially created, via (\"key\", \"val\") signature,\n // keys will be converted to camelCase.\n // Since there is no way to tell _how_ a key was added, remove\n // both plain key and camelCase key. #12786\n // This will only penalize the array argument path.\n name = key.concat(key.map(jQuery.camelCase));\n } else {\n camel = jQuery.camelCase(key);\n\n // Try the string as a key before any manipulation\n if (key in cache) {\n name = [key, camel];\n } else {\n // If a key with the spaces exists, use it.\n // Otherwise, create an array by matching non-whitespace\n name = camel;\n name = name in cache ? [name] : name.match(rnotwhite) || [];\n }\n }\n i = name.length;\n while (i--) {\n delete cache[name[i]];\n }\n }\n\n // Remove the expando if there's no more data\n if (key === undefined || jQuery.isEmptyObject(cache)) {\n // Support: Chrome <= 35-45+\n // Webkit & Blink performance suffers when deleting properties\n // from DOM nodes, so set to undefined instead\n // https://code.google.com/p/chromium/issues/detail?id=378607\n if (owner.nodeType) {\n owner[this.expando] = undefined;\n } else {\n delete owner[this.expando];\n }\n }\n },\n hasData: function (owner) {\n var cache = owner[this.expando];\n return cache !== undefined && !jQuery.isEmptyObject(cache);\n }\n };\n var dataPriv = new Data();\n var dataUser = new Data();\n\n //\tImplementation Summary\n //\n //\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n //\t2. Improve the module's maintainability by reducing the storage\n //\t\tpaths to a single mechanism.\n //\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n //\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n //\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n //\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\n var rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n rmultiDash = /[A-Z]/g;\n function dataAttr(elem, key, data) {\n var name;\n\n // If nothing was found internally, try to fetch any\n // data from the HTML5 data-* attribute\n if (data === undefined && elem.nodeType === 1) {\n name = \"data-\" + key.replace(rmultiDash, \"-$&\").toLowerCase();\n data = elem.getAttribute(name);\n if (typeof data === \"string\") {\n try {\n data = data === \"true\" ? true : data === \"false\" ? false : data === \"null\" ? null :\n // Only convert to a number if it doesn't change the string\n +data + \"\" === data ? +data : rbrace.test(data) ? jQuery.parseJSON(data) : data;\n } catch (e) {}\n\n // Make sure we set the data so it isn't changed later\n dataUser.set(elem, key, data);\n } else {\n data = undefined;\n }\n }\n return data;\n }\n jQuery.extend({\n hasData: function (elem) {\n return dataUser.hasData(elem) || dataPriv.hasData(elem);\n },\n data: function (elem, name, data) {\n return dataUser.access(elem, name, data);\n },\n removeData: function (elem, name) {\n dataUser.remove(elem, name);\n },\n // TODO: Now that all calls to _data and _removeData have been replaced\n // with direct calls to dataPriv methods, these can be deprecated.\n _data: function (elem, name, data) {\n return dataPriv.access(elem, name, data);\n },\n _removeData: function (elem, name) {\n dataPriv.remove(elem, name);\n }\n });\n jQuery.fn.extend({\n data: function (key, value) {\n var i,\n name,\n data,\n elem = this[0],\n attrs = elem && elem.attributes;\n\n // Gets all values\n if (key === undefined) {\n if (this.length) {\n data = dataUser.get(elem);\n if (elem.nodeType === 1 && !dataPriv.get(elem, \"hasDataAttrs\")) {\n i = attrs.length;\n while (i--) {\n // Support: IE11+\n // The attrs elements can be null (#14894)\n if (attrs[i]) {\n name = attrs[i].name;\n if (name.indexOf(\"data-\") === 0) {\n name = jQuery.camelCase(name.slice(5));\n dataAttr(elem, name, data[name]);\n }\n }\n }\n dataPriv.set(elem, \"hasDataAttrs\", true);\n }\n }\n return data;\n }\n\n // Sets multiple values\n if (typeof key === \"object\") {\n return this.each(function () {\n dataUser.set(this, key);\n });\n }\n return access(this, function (value) {\n var data, camelKey;\n\n // The calling jQuery object (element matches) is not empty\n // (and therefore has an element appears at this[ 0 ]) and the\n // `value` parameter was not undefined. An empty jQuery object\n // will result in `undefined` for elem = this[ 0 ] which will\n // throw an exception if an attempt to read a data cache is made.\n if (elem && value === undefined) {\n // Attempt to get data from the cache\n // with the key as-is\n data = dataUser.get(elem, key) ||\n // Try to find dashed key if it exists (gh-2779)\n // This is for 2.2.x only\n dataUser.get(elem, key.replace(rmultiDash, \"-$&\").toLowerCase());\n if (data !== undefined) {\n return data;\n }\n camelKey = jQuery.camelCase(key);\n\n // Attempt to get data from the cache\n // with the key camelized\n data = dataUser.get(elem, camelKey);\n if (data !== undefined) {\n return data;\n }\n\n // Attempt to \"discover\" the data in\n // HTML5 custom data-* attrs\n data = dataAttr(elem, camelKey, undefined);\n if (data !== undefined) {\n return data;\n }\n\n // We tried really hard, but the data doesn't exist.\n return;\n }\n\n // Set the data...\n camelKey = jQuery.camelCase(key);\n this.each(function () {\n // First, attempt to store a copy or reference of any\n // data that might've been store with a camelCased key.\n var data = dataUser.get(this, camelKey);\n\n // For HTML5 data-* attribute interop, we have to\n // store property names with dashes in a camelCase form.\n // This might not apply to all properties...*\n dataUser.set(this, camelKey, value);\n\n // *... In the case of properties that might _actually_\n // have dashes, we need to also store a copy of that\n // unchanged property.\n if (key.indexOf(\"-\") > -1 && data !== undefined) {\n dataUser.set(this, key, value);\n }\n });\n }, null, value, arguments.length > 1, null, true);\n },\n removeData: function (key) {\n return this.each(function () {\n dataUser.remove(this, key);\n });\n }\n });\n jQuery.extend({\n queue: function (elem, type, data) {\n var queue;\n if (elem) {\n type = (type || \"fx\") + \"queue\";\n queue = dataPriv.get(elem, type);\n\n // Speed up dequeue by getting out quickly if this is just a lookup\n if (data) {\n if (!queue || jQuery.isArray(data)) {\n queue = dataPriv.access(elem, type, jQuery.makeArray(data));\n } else {\n queue.push(data);\n }\n }\n return queue || [];\n }\n },\n dequeue: function (elem, type) {\n type = type || \"fx\";\n var queue = jQuery.queue(elem, type),\n startLength = queue.length,\n fn = queue.shift(),\n hooks = jQuery._queueHooks(elem, type),\n next = function () {\n jQuery.dequeue(elem, type);\n };\n\n // If the fx queue is dequeued, always remove the progress sentinel\n if (fn === \"inprogress\") {\n fn = queue.shift();\n startLength--;\n }\n if (fn) {\n // Add a progress sentinel to prevent the fx queue from being\n // automatically dequeued\n if (type === \"fx\") {\n queue.unshift(\"inprogress\");\n }\n\n // Clear up the last queue stop function\n delete hooks.stop;\n fn.call(elem, next, hooks);\n }\n if (!startLength && hooks) {\n hooks.empty.fire();\n }\n },\n // Not public - generate a queueHooks object, or return the current one\n _queueHooks: function (elem, type) {\n var key = type + \"queueHooks\";\n return dataPriv.get(elem, key) || dataPriv.access(elem, key, {\n empty: jQuery.Callbacks(\"once memory\").add(function () {\n dataPriv.remove(elem, [type + \"queue\", key]);\n })\n });\n }\n });\n jQuery.fn.extend({\n queue: function (type, data) {\n var setter = 2;\n if (typeof type !== \"string\") {\n data = type;\n type = \"fx\";\n setter--;\n }\n if (arguments.length < setter) {\n return jQuery.queue(this[0], type);\n }\n return data === undefined ? this : this.each(function () {\n var queue = jQuery.queue(this, type, data);\n\n // Ensure a hooks for this queue\n jQuery._queueHooks(this, type);\n if (type === \"fx\" && queue[0] !== \"inprogress\") {\n jQuery.dequeue(this, type);\n }\n });\n },\n dequeue: function (type) {\n return this.each(function () {\n jQuery.dequeue(this, type);\n });\n },\n clearQueue: function (type) {\n return this.queue(type || \"fx\", []);\n },\n // Get a promise resolved when queues of a certain type\n // are emptied (fx is the type by default)\n promise: function (type, obj) {\n var tmp,\n count = 1,\n defer = jQuery.Deferred(),\n elements = this,\n i = this.length,\n resolve = function () {\n if (! --count) {\n defer.resolveWith(elements, [elements]);\n }\n };\n if (typeof type !== \"string\") {\n obj = type;\n type = undefined;\n }\n type = type || \"fx\";\n while (i--) {\n tmp = dataPriv.get(elements[i], type + \"queueHooks\");\n if (tmp && tmp.empty) {\n count++;\n tmp.empty.add(resolve);\n }\n }\n resolve();\n return defer.promise(obj);\n }\n });\n var pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n var rcssNum = new RegExp(\"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\");\n var cssExpand = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n var isHidden = function (elem, el) {\n // isHidden might be called from jQuery#filter function;\n // in that case, element will be second argument\n elem = el || elem;\n return jQuery.css(elem, \"display\") === \"none\" || !jQuery.contains(elem.ownerDocument, elem);\n };\n function adjustCSS(elem, prop, valueParts, tween) {\n var adjusted,\n scale = 1,\n maxIterations = 20,\n currentValue = tween ? function () {\n return tween.cur();\n } : function () {\n return jQuery.css(elem, prop, \"\");\n },\n initial = currentValue(),\n unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? \"\" : \"px\"),\n // Starting value computation is required for potential unit mismatches\n initialInUnit = (jQuery.cssNumber[prop] || unit !== \"px\" && +initial) && rcssNum.exec(jQuery.css(elem, prop));\n if (initialInUnit && initialInUnit[3] !== unit) {\n // Trust units reported by jQuery.css\n unit = unit || initialInUnit[3];\n\n // Make sure we update the tween properties later on\n valueParts = valueParts || [];\n\n // Iteratively approximate from a nonzero starting point\n initialInUnit = +initial || 1;\n do {\n // If previous iteration zeroed out, double until we get *something*.\n // Use string for doubling so we don't accidentally see scale as unchanged below\n scale = scale || \".5\";\n\n // Adjust and apply\n initialInUnit = initialInUnit / scale;\n jQuery.style(elem, prop, initialInUnit + unit);\n\n // Update scale, tolerating zero or NaN from tween.cur()\n // Break the loop if scale is unchanged or perfect, or if we've just had enough.\n } while (scale !== (scale = currentValue() / initial) && scale !== 1 && --maxIterations);\n }\n if (valueParts) {\n initialInUnit = +initialInUnit || +initial || 0;\n\n // Apply relative offset (+=/-=) if specified\n adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];\n if (tween) {\n tween.unit = unit;\n tween.start = initialInUnit;\n tween.end = adjusted;\n }\n }\n return adjusted;\n }\n var rcheckableType = /^(?:checkbox|radio)$/i;\n var rtagName = /<([\\w:-]+)/;\n var rscriptType = /^$|\\/(?:java|ecma)script/i;\n\n // We have to close these tags to support XHTML (#13200)\n var wrapMap = {\n // Support: IE9\n option: [1, \"<select multiple='multiple'>\", \"</select>\"],\n // XHTML parsers do not magically insert elements in the\n // same way that tag soup parsers do. So we cannot shorten\n // this by omitting <tbody> or other required elements.\n thead: [1, \"<table>\", \"</table>\"],\n col: [2, \"<table><colgroup>\", \"</colgroup></table>\"],\n tr: [2, \"<table><tbody>\", \"</tbody></table>\"],\n td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"],\n _default: [0, \"\", \"\"]\n };\n\n // Support: IE9\n wrapMap.optgroup = wrapMap.option;\n wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\n wrapMap.th = wrapMap.td;\n function getAll(context, tag) {\n // Support: IE9-11+\n // Use typeof to avoid zero-argument method invocation on host objects (#15151)\n var ret = typeof context.getElementsByTagName !== \"undefined\" ? context.getElementsByTagName(tag || \"*\") : typeof context.querySelectorAll !== \"undefined\" ? context.querySelectorAll(tag || \"*\") : [];\n return tag === undefined || tag && jQuery.nodeName(context, tag) ? jQuery.merge([context], ret) : ret;\n }\n\n // Mark scripts as having already been evaluated\n function setGlobalEval(elems, refElements) {\n var i = 0,\n l = elems.length;\n for (; i < l; i++) {\n dataPriv.set(elems[i], \"globalEval\", !refElements || dataPriv.get(refElements[i], \"globalEval\"));\n }\n }\n var rhtml = /<|&#?\\w+;/;\n function buildFragment(elems, context, scripts, selection, ignored) {\n var elem,\n tmp,\n tag,\n wrap,\n contains,\n j,\n fragment = context.createDocumentFragment(),\n nodes = [],\n i = 0,\n l = elems.length;\n for (; i < l; i++) {\n elem = elems[i];\n if (elem || elem === 0) {\n // Add nodes directly\n if (jQuery.type(elem) === \"object\") {\n // Support: Android<4.1, PhantomJS<2\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, elem.nodeType ? [elem] : elem);\n\n // Convert non-html into a text node\n } else if (!rhtml.test(elem)) {\n nodes.push(context.createTextNode(elem));\n\n // Convert html into DOM nodes\n } else {\n tmp = tmp || fragment.appendChild(context.createElement(\"div\"));\n\n // Deserialize a standard representation\n tag = (rtagName.exec(elem) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];\n\n // Descend through wrappers to the right content\n j = wrap[0];\n while (j--) {\n tmp = tmp.lastChild;\n }\n\n // Support: Android<4.1, PhantomJS<2\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(nodes, tmp.childNodes);\n\n // Remember the top-level container\n tmp = fragment.firstChild;\n\n // Ensure the created nodes are orphaned (#12392)\n tmp.textContent = \"\";\n }\n }\n }\n\n // Remove wrapper from fragment\n fragment.textContent = \"\";\n i = 0;\n while (elem = nodes[i++]) {\n // Skip elements already in the context collection (trac-4087)\n if (selection && jQuery.inArray(elem, selection) > -1) {\n if (ignored) {\n ignored.push(elem);\n }\n continue;\n }\n contains = jQuery.contains(elem.ownerDocument, elem);\n\n // Append to fragment\n tmp = getAll(fragment.appendChild(elem), \"script\");\n\n // Preserve script evaluation history\n if (contains) {\n setGlobalEval(tmp);\n }\n\n // Capture executables\n if (scripts) {\n j = 0;\n while (elem = tmp[j++]) {\n if (rscriptType.test(elem.type || \"\")) {\n scripts.push(elem);\n }\n }\n }\n }\n return fragment;\n }\n (function () {\n var fragment = document.createDocumentFragment(),\n div = fragment.appendChild(document.createElement(\"div\")),\n input = document.createElement(\"input\");\n\n // Support: Android 4.0-4.3, Safari<=5.1\n // Check state lost if the name is set (#11217)\n // Support: Windows Web Apps (WWA)\n // `name` and `type` must use .setAttribute for WWA (#14901)\n input.setAttribute(\"type\", \"radio\");\n input.setAttribute(\"checked\", \"checked\");\n input.setAttribute(\"name\", \"t\");\n div.appendChild(input);\n\n // Support: Safari<=5.1, Android<4.2\n // Older WebKit doesn't clone checked state correctly in fragments\n support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;\n\n // Support: IE<=11+\n // Make sure textarea (and checkbox) defaultValue is properly cloned\n div.innerHTML = \"<textarea>x</textarea>\";\n support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;\n })();\n var rkeyEvent = /^key/,\n rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n function returnTrue() {\n return true;\n }\n function returnFalse() {\n return false;\n }\n\n // Support: IE9\n // See #13393 for more info\n function safeActiveElement() {\n try {\n return document.activeElement;\n } catch (err) {}\n }\n function on(elem, types, selector, data, fn, one) {\n var origFn, type;\n\n // Types can be a map of types/handlers\n if (typeof types === \"object\") {\n // ( types-Object, selector, data )\n if (typeof selector !== \"string\") {\n // ( types-Object, data )\n data = data || selector;\n selector = undefined;\n }\n for (type in types) {\n on(elem, type, selector, data, types[type], one);\n }\n return elem;\n }\n if (data == null && fn == null) {\n // ( types, fn )\n fn = selector;\n data = selector = undefined;\n } else if (fn == null) {\n if (typeof selector === \"string\") {\n // ( types, selector, fn )\n fn = data;\n data = undefined;\n } else {\n // ( types, data, fn )\n fn = data;\n data = selector;\n selector = undefined;\n }\n }\n if (fn === false) {\n fn = returnFalse;\n } else if (!fn) {\n return elem;\n }\n if (one === 1) {\n origFn = fn;\n fn = function (event) {\n // Can use an empty set, since event contains the info\n jQuery().off(event);\n return origFn.apply(this, arguments);\n };\n\n // Use same guid so caller can remove using origFn\n fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);\n }\n return elem.each(function () {\n jQuery.event.add(this, types, fn, data, selector);\n });\n }\n\n /*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\n jQuery.event = {\n global: {},\n add: function (elem, types, handler, data, selector) {\n var handleObjIn,\n eventHandle,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.get(elem);\n\n // Don't attach events to noData or text/comment nodes (but allow plain objects)\n if (!elemData) {\n return;\n }\n\n // Caller can pass in an object of custom data in lieu of the handler\n if (handler.handler) {\n handleObjIn = handler;\n handler = handleObjIn.handler;\n selector = handleObjIn.selector;\n }\n\n // Make sure that the handler has a unique ID, used to find/remove it later\n if (!handler.guid) {\n handler.guid = jQuery.guid++;\n }\n\n // Init the element's event structure and main handler, if this is the first\n if (!(events = elemData.events)) {\n events = elemData.events = {};\n }\n if (!(eventHandle = elemData.handle)) {\n eventHandle = elemData.handle = function (e) {\n // Discard the second event of a jQuery.event.trigger() and\n // when an event is called after a page has unloaded\n return typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;\n };\n }\n\n // Handle multiple events separated by a space\n types = (types || \"\").match(rnotwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // There *must* be a type, no attaching namespace-only handlers\n if (!type) {\n continue;\n }\n\n // If event changes its type, use the special event handlers for the changed type\n special = jQuery.event.special[type] || {};\n\n // If selector defined, determine special event api type, otherwise given type\n type = (selector ? special.delegateType : special.bindType) || type;\n\n // Update special based on newly reset type\n special = jQuery.event.special[type] || {};\n\n // handleObj is passed to all event handlers\n handleObj = jQuery.extend({\n type: type,\n origType: origType,\n data: data,\n handler: handler,\n guid: handler.guid,\n selector: selector,\n needsContext: selector && jQuery.expr.match.needsContext.test(selector),\n namespace: namespaces.join(\".\")\n }, handleObjIn);\n\n // Init the event handler queue if we're the first\n if (!(handlers = events[type])) {\n handlers = events[type] = [];\n handlers.delegateCount = 0;\n\n // Only use addEventListener if the special events handler returns false\n if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {\n if (elem.addEventListener) {\n elem.addEventListener(type, eventHandle);\n }\n }\n }\n if (special.add) {\n special.add.call(elem, handleObj);\n if (!handleObj.handler.guid) {\n handleObj.handler.guid = handler.guid;\n }\n }\n\n // Add to the element's handler list, delegates in front\n if (selector) {\n handlers.splice(handlers.delegateCount++, 0, handleObj);\n } else {\n handlers.push(handleObj);\n }\n\n // Keep track of which events have ever been used, for event optimization\n jQuery.event.global[type] = true;\n }\n },\n // Detach an event or set of events from an element\n remove: function (elem, types, handler, selector, mappedTypes) {\n var j,\n origCount,\n tmp,\n events,\n t,\n handleObj,\n special,\n handlers,\n type,\n namespaces,\n origType,\n elemData = dataPriv.hasData(elem) && dataPriv.get(elem);\n if (!elemData || !(events = elemData.events)) {\n return;\n }\n\n // Once for each type.namespace in types; type may be omitted\n types = (types || \"\").match(rnotwhite) || [\"\"];\n t = types.length;\n while (t--) {\n tmp = rtypenamespace.exec(types[t]) || [];\n type = origType = tmp[1];\n namespaces = (tmp[2] || \"\").split(\".\").sort();\n\n // Unbind all events (on this namespace, if provided) for the element\n if (!type) {\n for (type in events) {\n jQuery.event.remove(elem, type + types[t], handler, selector, true);\n }\n continue;\n }\n special = jQuery.event.special[type] || {};\n type = (selector ? special.delegateType : special.bindType) || type;\n handlers = events[type] || [];\n tmp = tmp[2] && new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\");\n\n // Remove matching events\n origCount = j = handlers.length;\n while (j--) {\n handleObj = handlers[j];\n if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector)) {\n handlers.splice(j, 1);\n if (handleObj.selector) {\n handlers.delegateCount--;\n }\n if (special.remove) {\n special.remove.call(elem, handleObj);\n }\n }\n }\n\n // Remove generic event handler if we removed something and no more handlers exist\n // (avoids potential for endless recursion during removal of special event handlers)\n if (origCount && !handlers.length) {\n if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {\n jQuery.removeEvent(elem, type, elemData.handle);\n }\n delete events[type];\n }\n }\n\n // Remove data and the expando if it's no longer used\n if (jQuery.isEmptyObject(events)) {\n dataPriv.remove(elem, \"handle events\");\n }\n },\n dispatch: function (event) {\n // Make a writable jQuery.Event from the native event object\n event = jQuery.event.fix(event);\n var i,\n j,\n ret,\n matched,\n handleObj,\n handlerQueue = [],\n args = slice.call(arguments),\n handlers = (dataPriv.get(this, \"events\") || {})[event.type] || [],\n special = jQuery.event.special[event.type] || {};\n\n // Use the fix-ed jQuery.Event rather than the (read-only) native event\n args[0] = event;\n event.delegateTarget = this;\n\n // Call the preDispatch hook for the mapped type, and let it bail if desired\n if (special.preDispatch && special.preDispatch.call(this, event) === false) {\n return;\n }\n\n // Determine handlers\n handlerQueue = jQuery.event.handlers.call(this, event, handlers);\n\n // Run delegates first; they may want to stop propagation beneath us\n i = 0;\n while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {\n event.currentTarget = matched.elem;\n j = 0;\n while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {\n // Triggered event must either 1) have no namespace, or 2) have namespace(s)\n // a subset or equal to those in the bound event (both can have no namespace).\n if (!event.rnamespace || event.rnamespace.test(handleObj.namespace)) {\n event.handleObj = handleObj;\n event.data = handleObj.data;\n ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);\n if (ret !== undefined) {\n if ((event.result = ret) === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n }\n\n // Call the postDispatch hook for the mapped type\n if (special.postDispatch) {\n special.postDispatch.call(this, event);\n }\n return event.result;\n },\n handlers: function (event, handlers) {\n var i,\n matches,\n sel,\n handleObj,\n handlerQueue = [],\n delegateCount = handlers.delegateCount,\n cur = event.target;\n\n // Support (at least): Chrome, IE9\n // Find delegate handlers\n // Black-hole SVG <use> instance trees (#13180)\n //\n // Support: Firefox<=42+\n // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n if (delegateCount && cur.nodeType && (event.type !== \"click\" || isNaN(event.button) || event.button < 1)) {\n for (; cur !== this; cur = cur.parentNode || this) {\n // Don't check non-elements (#13208)\n // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n if (cur.nodeType === 1 && (cur.disabled !== true || event.type !== \"click\")) {\n matches = [];\n for (i = 0; i < delegateCount; i++) {\n handleObj = handlers[i];\n\n // Don't conflict with Object.prototype properties (#13203)\n sel = handleObj.selector + \" \";\n if (matches[sel] === undefined) {\n matches[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;\n }\n if (matches[sel]) {\n matches.push(handleObj);\n }\n }\n if (matches.length) {\n handlerQueue.push({\n elem: cur,\n handlers: matches\n });\n }\n }\n }\n }\n\n // Add the remaining (directly-bound) handlers\n if (delegateCount < handlers.length) {\n handlerQueue.push({\n elem: this,\n handlers: handlers.slice(delegateCount)\n });\n }\n return handlerQueue;\n },\n // Includes some event props shared by KeyEvent and MouseEvent\n props: (\"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" + \"metaKey relatedTarget shiftKey target timeStamp view which\").split(\" \"),\n fixHooks: {},\n keyHooks: {\n props: \"char charCode key keyCode\".split(\" \"),\n filter: function (event, original) {\n // Add which for key events\n if (event.which == null) {\n event.which = original.charCode != null ? original.charCode : original.keyCode;\n }\n return event;\n }\n },\n mouseHooks: {\n props: (\"button buttons clientX clientY offsetX offsetY pageX pageY \" + \"screenX screenY toElement\").split(\" \"),\n filter: function (event, original) {\n var eventDoc,\n doc,\n body,\n button = original.button;\n\n // Calculate pageX/Y if missing and clientX/Y available\n if (event.pageX == null && original.clientX != null) {\n eventDoc = event.target.ownerDocument || document;\n doc = eventDoc.documentElement;\n body = eventDoc.body;\n event.pageX = original.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = original.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Add which for click: 1 === left; 2 === middle; 3 === right\n // Note: button is not normalized, so don't use it\n if (!event.which && button !== undefined) {\n event.which = button & 1 ? 1 : button & 2 ? 3 : button & 4 ? 2 : 0;\n }\n return event;\n }\n },\n fix: function (event) {\n if (event[jQuery.expando]) {\n return event;\n }\n\n // Create a writable copy of the event object and normalize some properties\n var i,\n prop,\n copy,\n type = event.type,\n originalEvent = event,\n fixHook = this.fixHooks[type];\n if (!fixHook) {\n this.fixHooks[type] = fixHook = rmouseEvent.test(type) ? this.mouseHooks : rkeyEvent.test(type) ? this.keyHooks : {};\n }\n copy = fixHook.props ? this.props.concat(fixHook.props) : this.props;\n event = new jQuery.Event(originalEvent);\n i = copy.length;\n while (i--) {\n prop = copy[i];\n event[prop] = originalEvent[prop];\n }\n\n // Support: Cordova 2.5 (WebKit) (#13255)\n // All events should have a target; Cordova deviceready doesn't\n if (!event.target) {\n event.target = document;\n }\n\n // Support: Safari 6.0+, Chrome<28\n // Target should not be a text node (#504, #13143)\n if (event.target.nodeType === 3) {\n event.target = event.target.parentNode;\n }\n return fixHook.filter ? fixHook.filter(event, originalEvent) : event;\n },\n special: {\n load: {\n // Prevent triggered image.load events from bubbling to window.load\n noBubble: true\n },\n focus: {\n // Fire native event if possible so blur/focus sequence is correct\n trigger: function () {\n if (this !== safeActiveElement() && this.focus) {\n this.focus();\n return false;\n }\n },\n delegateType: \"focusin\"\n },\n blur: {\n trigger: function () {\n if (this === safeActiveElement() && this.blur) {\n this.blur();\n return false;\n }\n },\n delegateType: \"focusout\"\n },\n click: {\n // For checkbox, fire native event so checked state will be right\n trigger: function () {\n if (this.type === \"checkbox\" && this.click && jQuery.nodeName(this, \"input\")) {\n this.click();\n return false;\n }\n },\n // For cross-browser consistency, don't fire native .click() on links\n _default: function (event) {\n return jQuery.nodeName(event.target, \"a\");\n }\n },\n beforeunload: {\n postDispatch: function (event) {\n // Support: Firefox 20+\n // Firefox doesn't alert if the returnValue field is not set.\n if (event.result !== undefined && event.originalEvent) {\n event.originalEvent.returnValue = event.result;\n }\n }\n }\n }\n };\n jQuery.removeEvent = function (elem, type, handle) {\n // This \"if\" is needed for plain objects\n if (elem.removeEventListener) {\n elem.removeEventListener(type, handle);\n }\n };\n jQuery.Event = function (src, props) {\n // Allow instantiation without the 'new' keyword\n if (!(this instanceof jQuery.Event)) {\n return new jQuery.Event(src, props);\n }\n\n // Event object\n if (src && src.type) {\n this.originalEvent = src;\n this.type = src.type;\n\n // Events bubbling up the document may have been marked as prevented\n // by a handler lower down the tree; reflect the correct value.\n this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined &&\n // Support: Android<4.0\n src.returnValue === false ? returnTrue : returnFalse;\n\n // Event type\n } else {\n this.type = src;\n }\n\n // Put explicitly provided properties onto the event object\n if (props) {\n jQuery.extend(this, props);\n }\n\n // Create a timestamp if incoming event doesn't have one\n this.timeStamp = src && src.timeStamp || jQuery.now();\n\n // Mark it as fixed\n this[jQuery.expando] = true;\n };\n\n // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n jQuery.Event.prototype = {\n constructor: jQuery.Event,\n isDefaultPrevented: returnFalse,\n isPropagationStopped: returnFalse,\n isImmediatePropagationStopped: returnFalse,\n isSimulated: false,\n preventDefault: function () {\n var e = this.originalEvent;\n this.isDefaultPrevented = returnTrue;\n if (e && !this.isSimulated) {\n e.preventDefault();\n }\n },\n stopPropagation: function () {\n var e = this.originalEvent;\n this.isPropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopPropagation();\n }\n },\n stopImmediatePropagation: function () {\n var e = this.originalEvent;\n this.isImmediatePropagationStopped = returnTrue;\n if (e && !this.isSimulated) {\n e.stopImmediatePropagation();\n }\n this.stopPropagation();\n }\n };\n\n // Create mouseenter/leave events using mouseover/out and event-time checks\n // so that event delegation works in jQuery.\n // Do the same for pointerenter/pointerleave and pointerover/pointerout\n //\n // Support: Safari 7 only\n // Safari sends mouseenter too often; see:\n // https://code.google.com/p/chromium/issues/detail?id=470258\n // for the description of the bug (it existed in older Chrome versions as well).\n jQuery.each({\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\",\n pointerenter: \"pointerover\",\n pointerleave: \"pointerout\"\n }, function (orig, fix) {\n jQuery.event.special[orig] = {\n delegateType: fix,\n bindType: fix,\n handle: function (event) {\n var ret,\n target = this,\n related = event.relatedTarget,\n handleObj = event.handleObj;\n\n // For mouseenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if (!related || related !== target && !jQuery.contains(target, related)) {\n event.type = handleObj.origType;\n ret = handleObj.handler.apply(this, arguments);\n event.type = fix;\n }\n return ret;\n }\n };\n });\n jQuery.fn.extend({\n on: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn);\n },\n one: function (types, selector, data, fn) {\n return on(this, types, selector, data, fn, 1);\n },\n off: function (types, selector, fn) {\n var handleObj, type;\n if (types && types.preventDefault && types.handleObj) {\n // ( event ) dispatched jQuery.Event\n handleObj = types.handleObj;\n jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);\n return this;\n }\n if (typeof types === \"object\") {\n // ( types-object [, selector] )\n for (type in types) {\n this.off(type, selector, types[type]);\n }\n return this;\n }\n if (selector === false || typeof selector === \"function\") {\n // ( types [, fn] )\n fn = selector;\n selector = undefined;\n }\n if (fn === false) {\n fn = returnFalse;\n }\n return this.each(function () {\n jQuery.event.remove(this, types, fn, selector);\n });\n }\n });\n var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n // Support: IE 10-11, Edge 10240+\n // In IE/Edge using regex groups here causes severe slowdowns.\n // See https://connect.microsoft.com/IE/feedback/details/1736512/\n rnoInnerhtml = /<script|<style|<link/i,\n // checked=\"checked\" or checked\n rchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n rscriptTypeMasked = /^true\\/(.*)/,\n rcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n // Manipulating tables requires a tbody\n function manipulationTarget(elem, content) {\n return jQuery.nodeName(elem, \"table\") && jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, \"tr\") ? elem.getElementsByTagName(\"tbody\")[0] || elem.appendChild(elem.ownerDocument.createElement(\"tbody\")) : elem;\n }\n\n // Replace/restore the type attribute of script elements for safe DOM manipulation\n function disableScript(elem) {\n elem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n return elem;\n }\n function restoreScript(elem) {\n var match = rscriptTypeMasked.exec(elem.type);\n if (match) {\n elem.type = match[1];\n } else {\n elem.removeAttribute(\"type\");\n }\n return elem;\n }\n function cloneCopyEvent(src, dest) {\n var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n if (dest.nodeType !== 1) {\n return;\n }\n\n // 1. Copy private data: events, handlers, etc.\n if (dataPriv.hasData(src)) {\n pdataOld = dataPriv.access(src);\n pdataCur = dataPriv.set(dest, pdataOld);\n events = pdataOld.events;\n if (events) {\n delete pdataCur.handle;\n pdataCur.events = {};\n for (type in events) {\n for (i = 0, l = events[type].length; i < l; i++) {\n jQuery.event.add(dest, type, events[type][i]);\n }\n }\n }\n }\n\n // 2. Copy user data\n if (dataUser.hasData(src)) {\n udataOld = dataUser.access(src);\n udataCur = jQuery.extend({}, udataOld);\n dataUser.set(dest, udataCur);\n }\n }\n\n // Fix IE bugs, see support tests\n function fixInput(src, dest) {\n var nodeName = dest.nodeName.toLowerCase();\n\n // Fails to persist the checked state of a cloned checkbox or radio button.\n if (nodeName === \"input\" && rcheckableType.test(src.type)) {\n dest.checked = src.checked;\n\n // Fails to return the selected option to the default selected state when cloning options\n } else if (nodeName === \"input\" || nodeName === \"textarea\") {\n dest.defaultValue = src.defaultValue;\n }\n }\n function domManip(collection, args, callback, ignored) {\n // Flatten any nested arrays\n args = concat.apply([], args);\n var fragment,\n first,\n scripts,\n hasScripts,\n node,\n doc,\n i = 0,\n l = collection.length,\n iNoClone = l - 1,\n value = args[0],\n isFunction = jQuery.isFunction(value);\n\n // We can't cloneNode fragments that contain checked, in WebKit\n if (isFunction || l > 1 && typeof value === \"string\" && !support.checkClone && rchecked.test(value)) {\n return collection.each(function (index) {\n var self = collection.eq(index);\n if (isFunction) {\n args[0] = value.call(this, index, self.html());\n }\n domManip(self, args, callback, ignored);\n });\n }\n if (l) {\n fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);\n first = fragment.firstChild;\n if (fragment.childNodes.length === 1) {\n fragment = first;\n }\n\n // Require either new content or an interest in ignored elements to invoke the callback\n if (first || ignored) {\n scripts = jQuery.map(getAll(fragment, \"script\"), disableScript);\n hasScripts = scripts.length;\n\n // Use the original fragment for the last item\n // instead of the first because it can end up\n // being emptied incorrectly in certain situations (#8070).\n for (; i < l; i++) {\n node = fragment;\n if (i !== iNoClone) {\n node = jQuery.clone(node, true, true);\n\n // Keep references to cloned scripts for later restoration\n if (hasScripts) {\n // Support: Android<4.1, PhantomJS<2\n // push.apply(_, arraylike) throws on ancient WebKit\n jQuery.merge(scripts, getAll(node, \"script\"));\n }\n }\n callback.call(collection[i], node, i);\n }\n if (hasScripts) {\n doc = scripts[scripts.length - 1].ownerDocument;\n\n // Reenable scripts\n jQuery.map(scripts, restoreScript);\n\n // Evaluate executable scripts on first document insertion\n for (i = 0; i < hasScripts; i++) {\n node = scripts[i];\n if (rscriptType.test(node.type || \"\") && !dataPriv.access(node, \"globalEval\") && jQuery.contains(doc, node)) {\n if (node.src) {\n // Optional AJAX dependency, but won't run scripts if not present\n if (jQuery._evalUrl) {\n jQuery._evalUrl(node.src);\n }\n } else {\n jQuery.globalEval(node.textContent.replace(rcleanScript, \"\"));\n }\n }\n }\n }\n }\n }\n return collection;\n }\n function remove(elem, selector, keepData) {\n var node,\n nodes = selector ? jQuery.filter(selector, elem) : elem,\n i = 0;\n for (; (node = nodes[i]) != null; i++) {\n if (!keepData && node.nodeType === 1) {\n jQuery.cleanData(getAll(node));\n }\n if (node.parentNode) {\n if (keepData && jQuery.contains(node.ownerDocument, node)) {\n setGlobalEval(getAll(node, \"script\"));\n }\n node.parentNode.removeChild(node);\n }\n }\n return elem;\n }\n jQuery.extend({\n htmlPrefilter: function (html) {\n return html.replace(rxhtmlTag, \"<$1></$2>\");\n },\n clone: function (elem, dataAndEvents, deepDataAndEvents) {\n var i,\n l,\n srcElements,\n destElements,\n clone = elem.cloneNode(true),\n inPage = jQuery.contains(elem.ownerDocument, elem);\n\n // Fix IE cloning issues\n if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {\n // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n destElements = getAll(clone);\n srcElements = getAll(elem);\n for (i = 0, l = srcElements.length; i < l; i++) {\n fixInput(srcElements[i], destElements[i]);\n }\n }\n\n // Copy the events from the original to the clone\n if (dataAndEvents) {\n if (deepDataAndEvents) {\n srcElements = srcElements || getAll(elem);\n destElements = destElements || getAll(clone);\n for (i = 0, l = srcElements.length; i < l; i++) {\n cloneCopyEvent(srcElements[i], destElements[i]);\n }\n } else {\n cloneCopyEvent(elem, clone);\n }\n }\n\n // Preserve script evaluation history\n destElements = getAll(clone, \"script\");\n if (destElements.length > 0) {\n setGlobalEval(destElements, !inPage && getAll(elem, \"script\"));\n }\n\n // Return the cloned set\n return clone;\n },\n cleanData: function (elems) {\n var data,\n elem,\n type,\n special = jQuery.event.special,\n i = 0;\n for (; (elem = elems[i]) !== undefined; i++) {\n if (acceptData(elem)) {\n if (data = elem[dataPriv.expando]) {\n if (data.events) {\n for (type in data.events) {\n if (special[type]) {\n jQuery.event.remove(elem, type);\n\n // This is a shortcut to avoid jQuery.event.remove's overhead\n } else {\n jQuery.removeEvent(elem, type, data.handle);\n }\n }\n }\n\n // Support: Chrome <= 35-45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataPriv.expando] = undefined;\n }\n if (elem[dataUser.expando]) {\n // Support: Chrome <= 35-45+\n // Assign undefined instead of using delete, see Data#remove\n elem[dataUser.expando] = undefined;\n }\n }\n }\n }\n });\n jQuery.fn.extend({\n // Keep domManip exposed until 3.0 (gh-2225)\n domManip: domManip,\n detach: function (selector) {\n return remove(this, selector, true);\n },\n remove: function (selector) {\n return remove(this, selector);\n },\n text: function (value) {\n return access(this, function (value) {\n return value === undefined ? jQuery.text(this) : this.empty().each(function () {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n this.textContent = value;\n }\n });\n }, null, value, arguments.length);\n },\n append: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.appendChild(elem);\n }\n });\n },\n prepend: function () {\n return domManip(this, arguments, function (elem) {\n if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {\n var target = manipulationTarget(this, elem);\n target.insertBefore(elem, target.firstChild);\n }\n });\n },\n before: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this);\n }\n });\n },\n after: function () {\n return domManip(this, arguments, function (elem) {\n if (this.parentNode) {\n this.parentNode.insertBefore(elem, this.nextSibling);\n }\n });\n },\n empty: function () {\n var elem,\n i = 0;\n for (; (elem = this[i]) != null; i++) {\n if (elem.nodeType === 1) {\n // Prevent memory leaks\n jQuery.cleanData(getAll(elem, false));\n\n // Remove any remaining nodes\n elem.textContent = \"\";\n }\n }\n return this;\n },\n clone: function (dataAndEvents, deepDataAndEvents) {\n dataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n return this.map(function () {\n return jQuery.clone(this, dataAndEvents, deepDataAndEvents);\n });\n },\n html: function (value) {\n return access(this, function (value) {\n var elem = this[0] || {},\n i = 0,\n l = this.length;\n if (value === undefined && elem.nodeType === 1) {\n return elem.innerHTML;\n }\n\n // See if we can take a shortcut and just use innerHTML\n if (typeof value === \"string\" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || [\"\", \"\"])[1].toLowerCase()]) {\n value = jQuery.htmlPrefilter(value);\n try {\n for (; i < l; i++) {\n elem = this[i] || {};\n\n // Remove element nodes and prevent memory leaks\n if (elem.nodeType === 1) {\n jQuery.cleanData(getAll(elem, false));\n elem.innerHTML = value;\n }\n }\n elem = 0;\n\n // If using innerHTML throws an exception, use the fallback method\n } catch (e) {}\n }\n if (elem) {\n this.empty().append(value);\n }\n }, null, value, arguments.length);\n },\n replaceWith: function () {\n var ignored = [];\n\n // Make the changes, replacing each non-ignored context element with the new content\n return domManip(this, arguments, function (elem) {\n var parent = this.parentNode;\n if (jQuery.inArray(this, ignored) < 0) {\n jQuery.cleanData(getAll(this));\n if (parent) {\n parent.replaceChild(elem, this);\n }\n }\n\n // Force callback invocation\n }, ignored);\n }\n });\n jQuery.each({\n appendTo: \"append\",\n prependTo: \"prepend\",\n insertBefore: \"before\",\n insertAfter: \"after\",\n replaceAll: \"replaceWith\"\n }, function (name, original) {\n jQuery.fn[name] = function (selector) {\n var elems,\n ret = [],\n insert = jQuery(selector),\n last = insert.length - 1,\n i = 0;\n for (; i <= last; i++) {\n elems = i === last ? this : this.clone(true);\n jQuery(insert[i])[original](elems);\n\n // Support: QtWebKit\n // .get() because push.apply(_, arraylike) throws\n push.apply(ret, elems.get());\n }\n return this.pushStack(ret);\n };\n });\n var iframe,\n elemdisplay = {\n // Support: Firefox\n // We have to pre-define these values for FF (#10227)\n HTML: \"block\",\n BODY: \"block\"\n };\n\n /**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n // Called only from within defaultDisplay\n function actualDisplay(name, doc) {\n var elem = jQuery(doc.createElement(name)).appendTo(doc.body),\n display = jQuery.css(elem[0], \"display\");\n\n // We don't have any data stored on the element,\n // so use \"detach\" method as fast way to get rid of the element\n elem.detach();\n return display;\n }\n\n /**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\n function defaultDisplay(nodeName) {\n var doc = document,\n display = elemdisplay[nodeName];\n if (!display) {\n display = actualDisplay(nodeName, doc);\n\n // If the simple way fails, read from inside an iframe\n if (display === \"none\" || !display) {\n // Use the already-created iframe if possible\n iframe = (iframe || jQuery(\"<iframe frameborder='0' width='0' height='0'/>\")).appendTo(doc.documentElement);\n\n // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse\n doc = iframe[0].contentDocument;\n\n // Support: IE\n doc.write();\n doc.close();\n display = actualDisplay(nodeName, doc);\n iframe.detach();\n }\n\n // Store the correct default display\n elemdisplay[nodeName] = display;\n }\n return display;\n }\n var rmargin = /^margin/;\n var rnumnonpx = new RegExp(\"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\");\n var getStyles = function (elem) {\n // Support: IE<=11+, Firefox<=30+ (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n var view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n return view.getComputedStyle(elem);\n };\n var swap = function (elem, options, callback, args) {\n var ret,\n name,\n old = {};\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n old[name] = elem.style[name];\n elem.style[name] = options[name];\n }\n ret = callback.apply(elem, args || []);\n\n // Revert the old values\n for (name in options) {\n elem.style[name] = old[name];\n }\n return ret;\n };\n var documentElement = document.documentElement;\n (function () {\n var pixelPositionVal,\n boxSizingReliableVal,\n pixelMarginRightVal,\n reliableMarginLeftVal,\n container = document.createElement(\"div\"),\n div = document.createElement(\"div\");\n\n // Finish early in limited (non-browser) environments\n if (!div.style) {\n return;\n }\n\n // Support: IE9-11+\n // Style of cloned element affects source element cloned (#8908)\n div.style.backgroundClip = \"content-box\";\n div.cloneNode(true).style.backgroundClip = \"\";\n support.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n container.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;\" + \"padding:0;margin-top:1px;position:absolute\";\n container.appendChild(div);\n\n // Executing both pixelPosition & boxSizingReliable tests require only one layout\n // so they're executed at the same time to save the second computation.\n function computeStyleTests() {\n div.style.cssText =\n // Support: Firefox<29, Android 2.3\n // Vendor-prefix box-sizing\n \"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;\" + \"position:relative;display:block;\" + \"margin:auto;border:1px;padding:1px;\" + \"top:1%;width:50%\";\n div.innerHTML = \"\";\n documentElement.appendChild(container);\n var divStyle = window.getComputedStyle(div);\n pixelPositionVal = divStyle.top !== \"1%\";\n reliableMarginLeftVal = divStyle.marginLeft === \"2px\";\n boxSizingReliableVal = divStyle.width === \"4px\";\n\n // Support: Android 4.0 - 4.3 only\n // Some styles come back with percentage values, even though they shouldn't\n div.style.marginRight = \"50%\";\n pixelMarginRightVal = divStyle.marginRight === \"4px\";\n documentElement.removeChild(container);\n }\n jQuery.extend(support, {\n pixelPosition: function () {\n // This test is executed only once but we still do memoizing\n // since we can use the boxSizingReliable pre-computing.\n // No need to check if the test was already performed, though.\n computeStyleTests();\n return pixelPositionVal;\n },\n boxSizingReliable: function () {\n if (boxSizingReliableVal == null) {\n computeStyleTests();\n }\n return boxSizingReliableVal;\n },\n pixelMarginRight: function () {\n // Support: Android 4.0-4.3\n // We're checking for boxSizingReliableVal here instead of pixelMarginRightVal\n // since that compresses better and they're computed together anyway.\n if (boxSizingReliableVal == null) {\n computeStyleTests();\n }\n return pixelMarginRightVal;\n },\n reliableMarginLeft: function () {\n // Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37\n if (boxSizingReliableVal == null) {\n computeStyleTests();\n }\n return reliableMarginLeftVal;\n },\n reliableMarginRight: function () {\n // Support: Android 2.3\n // Check if div with explicit width and no margin-right incorrectly\n // gets computed margin-right based on width of container. (#3333)\n // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right\n // This support function is only executed once so no memoizing is needed.\n var ret,\n marginDiv = div.appendChild(document.createElement(\"div\"));\n\n // Reset CSS: box-sizing; display; margin; border; padding\n marginDiv.style.cssText = div.style.cssText =\n // Support: Android 2.3\n // Vendor-prefix box-sizing\n \"-webkit-box-sizing:content-box;box-sizing:content-box;\" + \"display:block;margin:0;border:0;padding:0\";\n marginDiv.style.marginRight = marginDiv.style.width = \"0\";\n div.style.width = \"1px\";\n documentElement.appendChild(container);\n ret = !parseFloat(window.getComputedStyle(marginDiv).marginRight);\n documentElement.removeChild(container);\n div.removeChild(marginDiv);\n return ret;\n }\n });\n })();\n function curCSS(elem, name, computed) {\n var width,\n minWidth,\n maxWidth,\n ret,\n style = elem.style;\n computed = computed || getStyles(elem);\n ret = computed ? computed.getPropertyValue(name) || computed[name] : undefined;\n\n // Support: Opera 12.1x only\n // Fall back to style even without computed\n // computed is undefined for elems on document fragments\n if ((ret === \"\" || ret === undefined) && !jQuery.contains(elem.ownerDocument, elem)) {\n ret = jQuery.style(elem, name);\n }\n\n // Support: IE9\n // getPropertyValue is only needed for .css('filter') (#12537)\n if (computed) {\n // A tribute to the \"awesome hack by Dean Edwards\"\n // Android Browser returns percentage for some values,\n // but width seems to be reliably pixels.\n // This is against the CSSOM draft spec:\n // http://dev.w3.org/csswg/cssom/#resolved-values\n if (!support.pixelMarginRight() && rnumnonpx.test(ret) && rmargin.test(name)) {\n // Remember the original values\n width = style.width;\n minWidth = style.minWidth;\n maxWidth = style.maxWidth;\n\n // Put in the new values to get a computed value out\n style.minWidth = style.maxWidth = style.width = ret;\n ret = computed.width;\n\n // Revert the changed values\n style.width = width;\n style.minWidth = minWidth;\n style.maxWidth = maxWidth;\n }\n }\n return ret !== undefined ?\n // Support: IE9-11+\n // IE returns zIndex value as an integer.\n ret + \"\" : ret;\n }\n function addGetHookIf(conditionFn, hookFn) {\n // Define the hook, we'll check on the first run if it's really needed.\n return {\n get: function () {\n if (conditionFn()) {\n // Hook not needed (or it's not possible to use it due\n // to missing dependency), remove it.\n delete this.get;\n return;\n }\n\n // Hook needed; redefine it so that the support test is not executed again.\n return (this.get = hookFn).apply(this, arguments);\n }\n };\n }\n var\n // Swappable if display is none or starts with table\n // except \"table\", \"table-cell\", or \"table-caption\"\n // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n rdisplayswap = /^(none|table(?!-c[ea]).+)/,\n cssShow = {\n position: \"absolute\",\n visibility: \"hidden\",\n display: \"block\"\n },\n cssNormalTransform = {\n letterSpacing: \"0\",\n fontWeight: \"400\"\n },\n cssPrefixes = [\"Webkit\", \"O\", \"Moz\", \"ms\"],\n emptyStyle = document.createElement(\"div\").style;\n\n // Return a css property mapped to a potentially vendor prefixed property\n function vendorPropName(name) {\n // Shortcut for names that are not vendor prefixed\n if (name in emptyStyle) {\n return name;\n }\n\n // Check for vendor prefixed names\n var capName = name[0].toUpperCase() + name.slice(1),\n i = cssPrefixes.length;\n while (i--) {\n name = cssPrefixes[i] + capName;\n if (name in emptyStyle) {\n return name;\n }\n }\n }\n function setPositiveNumber(elem, value, subtract) {\n // Any relative (+/-) values have already been\n // normalized at this point\n var matches = rcssNum.exec(value);\n return matches ?\n // Guard against undefined \"subtract\", e.g., when used as in cssHooks\n Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || \"px\") : value;\n }\n function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {\n var i = extra === (isBorderBox ? \"border\" : \"content\") ?\n // If we already have the right measurement, avoid augmentation\n 4 :\n // Otherwise initialize for horizontal or vertical properties\n name === \"width\" ? 1 : 0,\n val = 0;\n for (; i < 4; i += 2) {\n // Both box models exclude margin, so add it if we want it\n if (extra === \"margin\") {\n val += jQuery.css(elem, extra + cssExpand[i], true, styles);\n }\n if (isBorderBox) {\n // border-box includes padding, so remove it if we want content\n if (extra === \"content\") {\n val -= jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n }\n\n // At this point, extra isn't border nor margin, so remove border\n if (extra !== \"margin\") {\n val -= jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n } else {\n // At this point, extra isn't content, so add padding\n val += jQuery.css(elem, \"padding\" + cssExpand[i], true, styles);\n\n // At this point, extra isn't content nor padding, so add border\n if (extra !== \"padding\") {\n val += jQuery.css(elem, \"border\" + cssExpand[i] + \"Width\", true, styles);\n }\n }\n }\n return val;\n }\n function getWidthOrHeight(elem, name, extra) {\n // Start with offset property, which is equivalent to the border-box value\n var valueIsBorderBox = true,\n val = name === \"width\" ? elem.offsetWidth : elem.offsetHeight,\n styles = getStyles(elem),\n isBorderBox = jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\";\n\n // Some non-html elements return undefined for offsetWidth, so check for null/undefined\n // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285\n // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668\n if (val <= 0 || val == null) {\n // Fall back to computed then uncomputed css if necessary\n val = curCSS(elem, name, styles);\n if (val < 0 || val == null) {\n val = elem.style[name];\n }\n\n // Computed unit is not pixels. Stop here and return.\n if (rnumnonpx.test(val)) {\n return val;\n }\n\n // Check for style in case a browser which returns unreliable values\n // for getComputedStyle silently falls back to the reliable elem.style\n valueIsBorderBox = isBorderBox && (support.boxSizingReliable() || val === elem.style[name]);\n\n // Normalize \"\", auto, and prepare for extra\n val = parseFloat(val) || 0;\n }\n\n // Use the active box-sizing model to add/subtract irrelevant styles\n return val + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? \"border\" : \"content\"), valueIsBorderBox, styles) + \"px\";\n }\n function showHide(elements, show) {\n var display,\n elem,\n hidden,\n values = [],\n index = 0,\n length = elements.length;\n for (; index < length; index++) {\n elem = elements[index];\n if (!elem.style) {\n continue;\n }\n values[index] = dataPriv.get(elem, \"olddisplay\");\n display = elem.style.display;\n if (show) {\n // Reset the inline display of this element to learn if it is\n // being hidden by cascaded rules or not\n if (!values[index] && display === \"none\") {\n elem.style.display = \"\";\n }\n\n // Set elements which have been overridden with display: none\n // in a stylesheet to whatever the default browser style is\n // for such an element\n if (elem.style.display === \"\" && isHidden(elem)) {\n values[index] = dataPriv.access(elem, \"olddisplay\", defaultDisplay(elem.nodeName));\n }\n } else {\n hidden = isHidden(elem);\n if (display !== \"none\" || !hidden) {\n dataPriv.set(elem, \"olddisplay\", hidden ? display : jQuery.css(elem, \"display\"));\n }\n }\n }\n\n // Set the display of most of the elements in a second loop\n // to avoid the constant reflow\n for (index = 0; index < length; index++) {\n elem = elements[index];\n if (!elem.style) {\n continue;\n }\n if (!show || elem.style.display === \"none\" || elem.style.display === \"\") {\n elem.style.display = show ? values[index] || \"\" : \"none\";\n }\n }\n return elements;\n }\n jQuery.extend({\n // Add in style property hooks for overriding the default\n // behavior of getting and setting a style property\n cssHooks: {\n opacity: {\n get: function (elem, computed) {\n if (computed) {\n // We should always get a number back from opacity\n var ret = curCSS(elem, \"opacity\");\n return ret === \"\" ? \"1\" : ret;\n }\n }\n }\n },\n // Don't automatically add \"px\" to these possibly-unitless properties\n cssNumber: {\n \"animationIterationCount\": true,\n \"columnCount\": true,\n \"fillOpacity\": true,\n \"flexGrow\": true,\n \"flexShrink\": true,\n \"fontWeight\": true,\n \"lineHeight\": true,\n \"opacity\": true,\n \"order\": true,\n \"orphans\": true,\n \"widows\": true,\n \"zIndex\": true,\n \"zoom\": true\n },\n // Add in properties whose names you wish to fix before\n // setting or getting the value\n cssProps: {\n \"float\": \"cssFloat\"\n },\n // Get and set the style property on a DOM Node\n style: function (elem, name, value, extra) {\n // Don't set styles on text and comment nodes\n if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {\n return;\n }\n\n // Make sure that we're working with the right name\n var ret,\n type,\n hooks,\n origName = jQuery.camelCase(name),\n style = elem.style;\n name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);\n\n // Gets hook for the prefixed version, then unprefixed version\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // Check if we're setting a value\n if (value !== undefined) {\n type = typeof value;\n\n // Convert \"+=\" or \"-=\" to relative numbers (#7345)\n if (type === \"string\" && (ret = rcssNum.exec(value)) && ret[1]) {\n value = adjustCSS(elem, name, ret);\n\n // Fixes bug #9237\n type = \"number\";\n }\n\n // Make sure that null and NaN values aren't set (#7116)\n if (value == null || value !== value) {\n return;\n }\n\n // If a number was passed in, add the unit (except for certain CSS properties)\n if (type === \"number\") {\n value += ret && ret[3] || (jQuery.cssNumber[origName] ? \"\" : \"px\");\n }\n\n // Support: IE9-11+\n // background-* props affect original clone's values\n if (!support.clearCloneStyle && value === \"\" && name.indexOf(\"background\") === 0) {\n style[name] = \"inherit\";\n }\n\n // If a hook was provided, use that value, otherwise just set the specified value\n if (!hooks || !(\"set\" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {\n style[name] = value;\n }\n } else {\n // If a hook was provided get the non-computed value from there\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {\n return ret;\n }\n\n // Otherwise just get the value from the style object\n return style[name];\n }\n },\n css: function (elem, name, extra, styles) {\n var val,\n num,\n hooks,\n origName = jQuery.camelCase(name);\n\n // Make sure that we're working with the right name\n name = jQuery.cssProps[origName] || (jQuery.cssProps[origName] = vendorPropName(origName) || origName);\n\n // Try prefixed name followed by the unprefixed name\n hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];\n\n // If a hook was provided get the computed value from there\n if (hooks && \"get\" in hooks) {\n val = hooks.get(elem, true, extra);\n }\n\n // Otherwise, if a way to get the computed value exists, use that\n if (val === undefined) {\n val = curCSS(elem, name, styles);\n }\n\n // Convert \"normal\" to computed value\n if (val === \"normal\" && name in cssNormalTransform) {\n val = cssNormalTransform[name];\n }\n\n // Make numeric if forced or a qualifier was provided and val looks numeric\n if (extra === \"\" || extra) {\n num = parseFloat(val);\n return extra === true || isFinite(num) ? num || 0 : val;\n }\n return val;\n }\n });\n jQuery.each([\"height\", \"width\"], function (i, name) {\n jQuery.cssHooks[name] = {\n get: function (elem, computed, extra) {\n if (computed) {\n // Certain elements can have dimension info if we invisibly show them\n // but it must have a current display style that would benefit\n return rdisplayswap.test(jQuery.css(elem, \"display\")) && elem.offsetWidth === 0 ? swap(elem, cssShow, function () {\n return getWidthOrHeight(elem, name, extra);\n }) : getWidthOrHeight(elem, name, extra);\n }\n },\n set: function (elem, value, extra) {\n var matches,\n styles = extra && getStyles(elem),\n subtract = extra && augmentWidthOrHeight(elem, name, extra, jQuery.css(elem, \"boxSizing\", false, styles) === \"border-box\", styles);\n\n // Convert to pixels if value adjustment is needed\n if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || \"px\") !== \"px\") {\n elem.style[name] = value;\n value = jQuery.css(elem, name);\n }\n return setPositiveNumber(elem, value, subtract);\n }\n };\n });\n jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {\n if (computed) {\n return (parseFloat(curCSS(elem, \"marginLeft\")) || elem.getBoundingClientRect().left - swap(elem, {\n marginLeft: 0\n }, function () {\n return elem.getBoundingClientRect().left;\n })) + \"px\";\n }\n });\n\n // Support: Android 2.3\n jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight, function (elem, computed) {\n if (computed) {\n return swap(elem, {\n \"display\": \"inline-block\"\n }, curCSS, [elem, \"marginRight\"]);\n }\n });\n\n // These hooks are used by animate to expand properties\n jQuery.each({\n margin: \"\",\n padding: \"\",\n border: \"Width\"\n }, function (prefix, suffix) {\n jQuery.cssHooks[prefix + suffix] = {\n expand: function (value) {\n var i = 0,\n expanded = {},\n // Assumes a single number if not a string\n parts = typeof value === \"string\" ? value.split(\" \") : [value];\n for (; i < 4; i++) {\n expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];\n }\n return expanded;\n }\n };\n if (!rmargin.test(prefix)) {\n jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;\n }\n });\n jQuery.fn.extend({\n css: function (name, value) {\n return access(this, function (elem, name, value) {\n var styles,\n len,\n map = {},\n i = 0;\n if (jQuery.isArray(name)) {\n styles = getStyles(elem);\n len = name.length;\n for (; i < len; i++) {\n map[name[i]] = jQuery.css(elem, name[i], false, styles);\n }\n return map;\n }\n return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);\n }, name, value, arguments.length > 1);\n },\n show: function () {\n return showHide(this, true);\n },\n hide: function () {\n return showHide(this);\n },\n toggle: function (state) {\n if (typeof state === \"boolean\") {\n return state ? this.show() : this.hide();\n }\n return this.each(function () {\n if (isHidden(this)) {\n jQuery(this).show();\n } else {\n jQuery(this).hide();\n }\n });\n }\n });\n function Tween(elem, options, prop, end, easing) {\n return new Tween.prototype.init(elem, options, prop, end, easing);\n }\n jQuery.Tween = Tween;\n Tween.prototype = {\n constructor: Tween,\n init: function (elem, options, prop, end, easing, unit) {\n this.elem = elem;\n this.prop = prop;\n this.easing = easing || jQuery.easing._default;\n this.options = options;\n this.start = this.now = this.cur();\n this.end = end;\n this.unit = unit || (jQuery.cssNumber[prop] ? \"\" : \"px\");\n },\n cur: function () {\n var hooks = Tween.propHooks[this.prop];\n return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);\n },\n run: function (percent) {\n var eased,\n hooks = Tween.propHooks[this.prop];\n if (this.options.duration) {\n this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);\n } else {\n this.pos = eased = percent;\n }\n this.now = (this.end - this.start) * eased + this.start;\n if (this.options.step) {\n this.options.step.call(this.elem, this.now, this);\n }\n if (hooks && hooks.set) {\n hooks.set(this);\n } else {\n Tween.propHooks._default.set(this);\n }\n return this;\n }\n };\n Tween.prototype.init.prototype = Tween.prototype;\n Tween.propHooks = {\n _default: {\n get: function (tween) {\n var result;\n\n // Use a property on the element directly when it is not a DOM element,\n // or when there is no matching style property that exists.\n if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {\n return tween.elem[tween.prop];\n }\n\n // Passing an empty string as a 3rd parameter to .css will automatically\n // attempt a parseFloat and fallback to a string if the parse fails.\n // Simple values such as \"10px\" are parsed to Float;\n // complex values such as \"rotate(1rad)\" are returned as-is.\n result = jQuery.css(tween.elem, tween.prop, \"\");\n\n // Empty strings, null, undefined and \"auto\" are converted to 0.\n return !result || result === \"auto\" ? 0 : result;\n },\n set: function (tween) {\n // Use step hook for back compat.\n // Use cssHook if its there.\n // Use .style if available and use plain properties where available.\n if (jQuery.fx.step[tween.prop]) {\n jQuery.fx.step[tween.prop](tween);\n } else if (tween.elem.nodeType === 1 && (tween.elem.style[jQuery.cssProps[tween.prop]] != null || jQuery.cssHooks[tween.prop])) {\n jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);\n } else {\n tween.elem[tween.prop] = tween.now;\n }\n }\n }\n };\n\n // Support: IE9\n // Panic based approach to setting things on disconnected nodes\n Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n set: function (tween) {\n if (tween.elem.nodeType && tween.elem.parentNode) {\n tween.elem[tween.prop] = tween.now;\n }\n }\n };\n jQuery.easing = {\n linear: function (p) {\n return p;\n },\n swing: function (p) {\n return 0.5 - Math.cos(p * Math.PI) / 2;\n },\n _default: \"swing\"\n };\n jQuery.fx = Tween.prototype.init;\n\n // Back Compat <1.8 extension point\n jQuery.fx.step = {};\n var fxNow,\n timerId,\n rfxtypes = /^(?:toggle|show|hide)$/,\n rrun = /queueHooks$/;\n\n // Animations created synchronously will run synchronously\n function createFxNow() {\n window.setTimeout(function () {\n fxNow = undefined;\n });\n return fxNow = jQuery.now();\n }\n\n // Generate parameters to create a standard animation\n function genFx(type, includeWidth) {\n var which,\n i = 0,\n attrs = {\n height: type\n };\n\n // If we include width, step value is 1 to do all cssExpand values,\n // otherwise step value is 2 to skip over Left and Right\n includeWidth = includeWidth ? 1 : 0;\n for (; i < 4; i += 2 - includeWidth) {\n which = cssExpand[i];\n attrs[\"margin\" + which] = attrs[\"padding\" + which] = type;\n }\n if (includeWidth) {\n attrs.opacity = attrs.width = type;\n }\n return attrs;\n }\n function createTween(value, prop, animation) {\n var tween,\n collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners[\"*\"]),\n index = 0,\n length = collection.length;\n for (; index < length; index++) {\n if (tween = collection[index].call(animation, prop, value)) {\n // We're done with this property\n return tween;\n }\n }\n }\n function defaultPrefilter(elem, props, opts) {\n /* jshint validthis: true */\n var prop,\n value,\n toggle,\n tween,\n hooks,\n oldfire,\n display,\n checkDisplay,\n anim = this,\n orig = {},\n style = elem.style,\n hidden = elem.nodeType && isHidden(elem),\n dataShow = dataPriv.get(elem, \"fxshow\");\n\n // Handle queue: false promises\n if (!opts.queue) {\n hooks = jQuery._queueHooks(elem, \"fx\");\n if (hooks.unqueued == null) {\n hooks.unqueued = 0;\n oldfire = hooks.empty.fire;\n hooks.empty.fire = function () {\n if (!hooks.unqueued) {\n oldfire();\n }\n };\n }\n hooks.unqueued++;\n anim.always(function () {\n // Ensure the complete handler is called before this completes\n anim.always(function () {\n hooks.unqueued--;\n if (!jQuery.queue(elem, \"fx\").length) {\n hooks.empty.fire();\n }\n });\n });\n }\n\n // Height/width overflow pass\n if (elem.nodeType === 1 && (\"height\" in props || \"width\" in props)) {\n // Make sure that nothing sneaks out\n // Record all 3 overflow attributes because IE9-10 do not\n // change the overflow attribute when overflowX and\n // overflowY are set to the same value\n opts.overflow = [style.overflow, style.overflowX, style.overflowY];\n\n // Set display property to inline-block for height/width\n // animations on inline elements that are having width/height animated\n display = jQuery.css(elem, \"display\");\n\n // Test default display if display is currently \"none\"\n checkDisplay = display === \"none\" ? dataPriv.get(elem, \"olddisplay\") || defaultDisplay(elem.nodeName) : display;\n if (checkDisplay === \"inline\" && jQuery.css(elem, \"float\") === \"none\") {\n style.display = \"inline-block\";\n }\n }\n if (opts.overflow) {\n style.overflow = \"hidden\";\n anim.always(function () {\n style.overflow = opts.overflow[0];\n style.overflowX = opts.overflow[1];\n style.overflowY = opts.overflow[2];\n });\n }\n\n // show/hide pass\n for (prop in props) {\n value = props[prop];\n if (rfxtypes.exec(value)) {\n delete props[prop];\n toggle = toggle || value === \"toggle\";\n if (value === (hidden ? \"hide\" : \"show\")) {\n // If there is dataShow left over from a stopped hide or show\n // and we are going to proceed with show, we should pretend to be hidden\n if (value === \"show\" && dataShow && dataShow[prop] !== undefined) {\n hidden = true;\n } else {\n continue;\n }\n }\n orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);\n\n // Any non-fx value stops us from restoring the original display value\n } else {\n display = undefined;\n }\n }\n if (!jQuery.isEmptyObject(orig)) {\n if (dataShow) {\n if (\"hidden\" in dataShow) {\n hidden = dataShow.hidden;\n }\n } else {\n dataShow = dataPriv.access(elem, \"fxshow\", {});\n }\n\n // Store state if its toggle - enables .stop().toggle() to \"reverse\"\n if (toggle) {\n dataShow.hidden = !hidden;\n }\n if (hidden) {\n jQuery(elem).show();\n } else {\n anim.done(function () {\n jQuery(elem).hide();\n });\n }\n anim.done(function () {\n var prop;\n dataPriv.remove(elem, \"fxshow\");\n for (prop in orig) {\n jQuery.style(elem, prop, orig[prop]);\n }\n });\n for (prop in orig) {\n tween = createTween(hidden ? dataShow[prop] : 0, prop, anim);\n if (!(prop in dataShow)) {\n dataShow[prop] = tween.start;\n if (hidden) {\n tween.end = tween.start;\n tween.start = prop === \"width\" || prop === \"height\" ? 1 : 0;\n }\n }\n }\n\n // If this is a noop like .hide().hide(), restore an overwritten display value\n } else if ((display === \"none\" ? defaultDisplay(elem.nodeName) : display) === \"inline\") {\n style.display = display;\n }\n }\n function propFilter(props, specialEasing) {\n var index, name, easing, value, hooks;\n\n // camelCase, specialEasing and expand cssHook pass\n for (index in props) {\n name = jQuery.camelCase(index);\n easing = specialEasing[name];\n value = props[index];\n if (jQuery.isArray(value)) {\n easing = value[1];\n value = props[index] = value[0];\n }\n if (index !== name) {\n props[name] = value;\n delete props[index];\n }\n hooks = jQuery.cssHooks[name];\n if (hooks && \"expand\" in hooks) {\n value = hooks.expand(value);\n delete props[name];\n\n // Not quite $.extend, this won't overwrite existing keys.\n // Reusing 'index' because we have the correct \"name\"\n for (index in value) {\n if (!(index in props)) {\n props[index] = value[index];\n specialEasing[index] = easing;\n }\n }\n } else {\n specialEasing[name] = easing;\n }\n }\n }\n function Animation(elem, properties, options) {\n var result,\n stopped,\n index = 0,\n length = Animation.prefilters.length,\n deferred = jQuery.Deferred().always(function () {\n // Don't match elem in the :animated selector\n delete tick.elem;\n }),\n tick = function () {\n if (stopped) {\n return false;\n }\n var currentTime = fxNow || createFxNow(),\n remaining = Math.max(0, animation.startTime + animation.duration - currentTime),\n // Support: Android 2.3\n // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n temp = remaining / animation.duration || 0,\n percent = 1 - temp,\n index = 0,\n length = animation.tweens.length;\n for (; index < length; index++) {\n animation.tweens[index].run(percent);\n }\n deferred.notifyWith(elem, [animation, percent, remaining]);\n if (percent < 1 && length) {\n return remaining;\n } else {\n deferred.resolveWith(elem, [animation]);\n return false;\n }\n },\n animation = deferred.promise({\n elem: elem,\n props: jQuery.extend({}, properties),\n opts: jQuery.extend(true, {\n specialEasing: {},\n easing: jQuery.easing._default\n }, options),\n originalProperties: properties,\n originalOptions: options,\n startTime: fxNow || createFxNow(),\n duration: options.duration,\n tweens: [],\n createTween: function (prop, end) {\n var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);\n animation.tweens.push(tween);\n return tween;\n },\n stop: function (gotoEnd) {\n var index = 0,\n // If we are going to the end, we want to run all the tweens\n // otherwise we skip this part\n length = gotoEnd ? animation.tweens.length : 0;\n if (stopped) {\n return this;\n }\n stopped = true;\n for (; index < length; index++) {\n animation.tweens[index].run(1);\n }\n\n // Resolve when we played the last frame; otherwise, reject\n if (gotoEnd) {\n deferred.notifyWith(elem, [animation, 1, 0]);\n deferred.resolveWith(elem, [animation, gotoEnd]);\n } else {\n deferred.rejectWith(elem, [animation, gotoEnd]);\n }\n return this;\n }\n }),\n props = animation.props;\n propFilter(props, animation.opts.specialEasing);\n for (; index < length; index++) {\n result = Animation.prefilters[index].call(animation, elem, props, animation.opts);\n if (result) {\n if (jQuery.isFunction(result.stop)) {\n jQuery._queueHooks(animation.elem, animation.opts.queue).stop = jQuery.proxy(result.stop, result);\n }\n return result;\n }\n }\n jQuery.map(props, createTween, animation);\n if (jQuery.isFunction(animation.opts.start)) {\n animation.opts.start.call(elem, animation);\n }\n jQuery.fx.timer(jQuery.extend(tick, {\n elem: elem,\n anim: animation,\n queue: animation.opts.queue\n }));\n\n // attach callbacks from options\n return animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);\n }\n jQuery.Animation = jQuery.extend(Animation, {\n tweeners: {\n \"*\": [function (prop, value) {\n var tween = this.createTween(prop, value);\n adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);\n return tween;\n }]\n },\n tweener: function (props, callback) {\n if (jQuery.isFunction(props)) {\n callback = props;\n props = [\"*\"];\n } else {\n props = props.match(rnotwhite);\n }\n var prop,\n index = 0,\n length = props.length;\n for (; index < length; index++) {\n prop = props[index];\n Animation.tweeners[prop] = Animation.tweeners[prop] || [];\n Animation.tweeners[prop].unshift(callback);\n }\n },\n prefilters: [defaultPrefilter],\n prefilter: function (callback, prepend) {\n if (prepend) {\n Animation.prefilters.unshift(callback);\n } else {\n Animation.prefilters.push(callback);\n }\n }\n });\n jQuery.speed = function (speed, easing, fn) {\n var opt = speed && typeof speed === \"object\" ? jQuery.extend({}, speed) : {\n complete: fn || !fn && easing || jQuery.isFunction(speed) && speed,\n duration: speed,\n easing: fn && easing || easing && !jQuery.isFunction(easing) && easing\n };\n opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === \"number\" ? opt.duration : opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;\n\n // Normalize opt.queue - true/undefined/null -> \"fx\"\n if (opt.queue == null || opt.queue === true) {\n opt.queue = \"fx\";\n }\n\n // Queueing\n opt.old = opt.complete;\n opt.complete = function () {\n if (jQuery.isFunction(opt.old)) {\n opt.old.call(this);\n }\n if (opt.queue) {\n jQuery.dequeue(this, opt.queue);\n }\n };\n return opt;\n };\n jQuery.fn.extend({\n fadeTo: function (speed, to, easing, callback) {\n // Show any hidden elements after setting opacity to 0\n return this.filter(isHidden).css(\"opacity\", 0).show()\n\n // Animate to the value specified\n .end().animate({\n opacity: to\n }, speed, easing, callback);\n },\n animate: function (prop, speed, easing, callback) {\n var empty = jQuery.isEmptyObject(prop),\n optall = jQuery.speed(speed, easing, callback),\n doAnimation = function () {\n // Operate on a copy of prop so per-property easing won't be lost\n var anim = Animation(this, jQuery.extend({}, prop), optall);\n\n // Empty animations, or finishing resolves immediately\n if (empty || dataPriv.get(this, \"finish\")) {\n anim.stop(true);\n }\n };\n doAnimation.finish = doAnimation;\n return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);\n },\n stop: function (type, clearQueue, gotoEnd) {\n var stopQueue = function (hooks) {\n var stop = hooks.stop;\n delete hooks.stop;\n stop(gotoEnd);\n };\n if (typeof type !== \"string\") {\n gotoEnd = clearQueue;\n clearQueue = type;\n type = undefined;\n }\n if (clearQueue && type !== false) {\n this.queue(type || \"fx\", []);\n }\n return this.each(function () {\n var dequeue = true,\n index = type != null && type + \"queueHooks\",\n timers = jQuery.timers,\n data = dataPriv.get(this);\n if (index) {\n if (data[index] && data[index].stop) {\n stopQueue(data[index]);\n }\n } else {\n for (index in data) {\n if (data[index] && data[index].stop && rrun.test(index)) {\n stopQueue(data[index]);\n }\n }\n }\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && (type == null || timers[index].queue === type)) {\n timers[index].anim.stop(gotoEnd);\n dequeue = false;\n timers.splice(index, 1);\n }\n }\n\n // Start the next in the queue if the last step wasn't forced.\n // Timers currently will call their complete callbacks, which\n // will dequeue but only if they were gotoEnd.\n if (dequeue || !gotoEnd) {\n jQuery.dequeue(this, type);\n }\n });\n },\n finish: function (type) {\n if (type !== false) {\n type = type || \"fx\";\n }\n return this.each(function () {\n var index,\n data = dataPriv.get(this),\n queue = data[type + \"queue\"],\n hooks = data[type + \"queueHooks\"],\n timers = jQuery.timers,\n length = queue ? queue.length : 0;\n\n // Enable finishing flag on private data\n data.finish = true;\n\n // Empty the queue first\n jQuery.queue(this, type, []);\n if (hooks && hooks.stop) {\n hooks.stop.call(this, true);\n }\n\n // Look for any active animations, and finish them\n for (index = timers.length; index--;) {\n if (timers[index].elem === this && timers[index].queue === type) {\n timers[index].anim.stop(true);\n timers.splice(index, 1);\n }\n }\n\n // Look for any animations in the old queue and finish them\n for (index = 0; index < length; index++) {\n if (queue[index] && queue[index].finish) {\n queue[index].finish.call(this);\n }\n }\n\n // Turn off finishing flag\n delete data.finish;\n });\n }\n });\n jQuery.each([\"toggle\", \"show\", \"hide\"], function (i, name) {\n var cssFn = jQuery.fn[name];\n jQuery.fn[name] = function (speed, easing, callback) {\n return speed == null || typeof speed === \"boolean\" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);\n };\n });\n\n // Generate shortcuts for custom animations\n jQuery.each({\n slideDown: genFx(\"show\"),\n slideUp: genFx(\"hide\"),\n slideToggle: genFx(\"toggle\"),\n fadeIn: {\n opacity: \"show\"\n },\n fadeOut: {\n opacity: \"hide\"\n },\n fadeToggle: {\n opacity: \"toggle\"\n }\n }, function (name, props) {\n jQuery.fn[name] = function (speed, easing, callback) {\n return this.animate(props, speed, easing, callback);\n };\n });\n jQuery.timers = [];\n jQuery.fx.tick = function () {\n var timer,\n i = 0,\n timers = jQuery.timers;\n fxNow = jQuery.now();\n for (; i < timers.length; i++) {\n timer = timers[i];\n\n // Checks the timer has not already been removed\n if (!timer() && timers[i] === timer) {\n timers.splice(i--, 1);\n }\n }\n if (!timers.length) {\n jQuery.fx.stop();\n }\n fxNow = undefined;\n };\n jQuery.fx.timer = function (timer) {\n jQuery.timers.push(timer);\n if (timer()) {\n jQuery.fx.start();\n } else {\n jQuery.timers.pop();\n }\n };\n jQuery.fx.interval = 13;\n jQuery.fx.start = function () {\n if (!timerId) {\n timerId = window.setInterval(jQuery.fx.tick, jQuery.fx.interval);\n }\n };\n jQuery.fx.stop = function () {\n window.clearInterval(timerId);\n timerId = null;\n };\n jQuery.fx.speeds = {\n slow: 600,\n fast: 200,\n // Default speed\n _default: 400\n };\n\n // Based off of the plugin by Clint Helfers, with permission.\n // http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\n jQuery.fn.delay = function (time, type) {\n time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;\n type = type || \"fx\";\n return this.queue(type, function (next, hooks) {\n var timeout = window.setTimeout(next, time);\n hooks.stop = function () {\n window.clearTimeout(timeout);\n };\n });\n };\n (function () {\n var input = document.createElement(\"input\"),\n select = document.createElement(\"select\"),\n opt = select.appendChild(document.createElement(\"option\"));\n input.type = \"checkbox\";\n\n // Support: iOS<=5.1, Android<=4.2+\n // Default value for a checkbox should be \"on\"\n support.checkOn = input.value !== \"\";\n\n // Support: IE<=11+\n // Must access selectedIndex to make default options select\n support.optSelected = opt.selected;\n\n // Support: Android<=2.3\n // Options inside disabled selects are incorrectly marked as disabled\n select.disabled = true;\n support.optDisabled = !opt.disabled;\n\n // Support: IE<=11+\n // An input loses its value after becoming a radio\n input = document.createElement(\"input\");\n input.value = \"t\";\n input.type = \"radio\";\n support.radioValue = input.value === \"t\";\n })();\n var boolHook,\n attrHandle = jQuery.expr.attrHandle;\n jQuery.fn.extend({\n attr: function (name, value) {\n return access(this, jQuery.attr, name, value, arguments.length > 1);\n },\n removeAttr: function (name) {\n return this.each(function () {\n jQuery.removeAttr(this, name);\n });\n }\n });\n jQuery.extend({\n attr: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set attributes on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n\n // Fallback to prop when attributes are not supported\n if (typeof elem.getAttribute === \"undefined\") {\n return jQuery.prop(elem, name, value);\n }\n\n // All attributes are lowercase\n // Grab necessary hook if one is defined\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n name = name.toLowerCase();\n hooks = jQuery.attrHooks[name] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);\n }\n if (value !== undefined) {\n if (value === null) {\n jQuery.removeAttr(elem, name);\n return;\n }\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n elem.setAttribute(name, value + \"\");\n return value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n ret = jQuery.find.attr(elem, name);\n\n // Non-existent attributes return null, we normalize to undefined\n return ret == null ? undefined : ret;\n },\n attrHooks: {\n type: {\n set: function (elem, value) {\n if (!support.radioValue && value === \"radio\" && jQuery.nodeName(elem, \"input\")) {\n var val = elem.value;\n elem.setAttribute(\"type\", value);\n if (val) {\n elem.value = val;\n }\n return value;\n }\n }\n }\n },\n removeAttr: function (elem, value) {\n var name,\n propName,\n i = 0,\n attrNames = value && value.match(rnotwhite);\n if (attrNames && elem.nodeType === 1) {\n while (name = attrNames[i++]) {\n propName = jQuery.propFix[name] || name;\n\n // Boolean attributes get special treatment (#10870)\n if (jQuery.expr.match.bool.test(name)) {\n // Set corresponding property to false\n elem[propName] = false;\n }\n elem.removeAttribute(name);\n }\n }\n }\n });\n\n // Hooks for boolean attributes\n boolHook = {\n set: function (elem, value, name) {\n if (value === false) {\n // Remove boolean attributes when set to false\n jQuery.removeAttr(elem, name);\n } else {\n elem.setAttribute(name, name);\n }\n return name;\n }\n };\n jQuery.each(jQuery.expr.match.bool.source.match(/\\w+/g), function (i, name) {\n var getter = attrHandle[name] || jQuery.find.attr;\n attrHandle[name] = function (elem, name, isXML) {\n var ret, handle;\n if (!isXML) {\n // Avoid an infinite loop by temporarily removing this function from the getter\n handle = attrHandle[name];\n attrHandle[name] = ret;\n ret = getter(elem, name, isXML) != null ? name.toLowerCase() : null;\n attrHandle[name] = handle;\n }\n return ret;\n };\n });\n var rfocusable = /^(?:input|select|textarea|button)$/i,\n rclickable = /^(?:a|area)$/i;\n jQuery.fn.extend({\n prop: function (name, value) {\n return access(this, jQuery.prop, name, value, arguments.length > 1);\n },\n removeProp: function (name) {\n return this.each(function () {\n delete this[jQuery.propFix[name] || name];\n });\n }\n });\n jQuery.extend({\n prop: function (elem, name, value) {\n var ret,\n hooks,\n nType = elem.nodeType;\n\n // Don't get/set properties on text, comment and attribute nodes\n if (nType === 3 || nType === 8 || nType === 2) {\n return;\n }\n if (nType !== 1 || !jQuery.isXMLDoc(elem)) {\n // Fix name and attach hooks\n name = jQuery.propFix[name] || name;\n hooks = jQuery.propHooks[name];\n }\n if (value !== undefined) {\n if (hooks && \"set\" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {\n return ret;\n }\n return elem[name] = value;\n }\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, name)) !== null) {\n return ret;\n }\n return elem[name];\n },\n propHooks: {\n tabIndex: {\n get: function (elem) {\n // elem.tabIndex doesn't always return the\n // correct value when it hasn't been explicitly set\n // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n // Use proper attribute retrieval(#12072)\n var tabindex = jQuery.find.attr(elem, \"tabindex\");\n return tabindex ? parseInt(tabindex, 10) : rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href ? 0 : -1;\n }\n }\n },\n propFix: {\n \"for\": \"htmlFor\",\n \"class\": \"className\"\n }\n });\n\n // Support: IE <=11 only\n // Accessing the selectedIndex property\n // forces the browser to respect setting selected\n // on the option\n // The getter ensures a default option is selected\n // when in an optgroup\n if (!support.optSelected) {\n jQuery.propHooks.selected = {\n get: function (elem) {\n var parent = elem.parentNode;\n if (parent && parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n return null;\n },\n set: function (elem) {\n var parent = elem.parentNode;\n if (parent) {\n parent.selectedIndex;\n if (parent.parentNode) {\n parent.parentNode.selectedIndex;\n }\n }\n }\n };\n }\n jQuery.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () {\n jQuery.propFix[this.toLowerCase()] = this;\n });\n var rclass = /[\\t\\r\\n\\f]/g;\n function getClass(elem) {\n return elem.getAttribute && elem.getAttribute(\"class\") || \"\";\n }\n jQuery.fn.extend({\n addClass: function (value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n if (jQuery.isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).addClass(value.call(this, j, getClass(this)));\n });\n }\n if (typeof value === \"string\" && value) {\n classes = value.match(rnotwhite) || [];\n while (elem = this[i++]) {\n curValue = getClass(elem);\n cur = elem.nodeType === 1 && (\" \" + curValue + \" \").replace(rclass, \" \");\n if (cur) {\n j = 0;\n while (clazz = classes[j++]) {\n if (cur.indexOf(\" \" + clazz + \" \") < 0) {\n cur += clazz + \" \";\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = jQuery.trim(cur);\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n return this;\n },\n removeClass: function (value) {\n var classes,\n elem,\n cur,\n curValue,\n clazz,\n j,\n finalValue,\n i = 0;\n if (jQuery.isFunction(value)) {\n return this.each(function (j) {\n jQuery(this).removeClass(value.call(this, j, getClass(this)));\n });\n }\n if (!arguments.length) {\n return this.attr(\"class\", \"\");\n }\n if (typeof value === \"string\" && value) {\n classes = value.match(rnotwhite) || [];\n while (elem = this[i++]) {\n curValue = getClass(elem);\n\n // This expression is here for better compressibility (see addClass)\n cur = elem.nodeType === 1 && (\" \" + curValue + \" \").replace(rclass, \" \");\n if (cur) {\n j = 0;\n while (clazz = classes[j++]) {\n // Remove *all* instances\n while (cur.indexOf(\" \" + clazz + \" \") > -1) {\n cur = cur.replace(\" \" + clazz + \" \", \" \");\n }\n }\n\n // Only assign if different to avoid unneeded rendering.\n finalValue = jQuery.trim(cur);\n if (curValue !== finalValue) {\n elem.setAttribute(\"class\", finalValue);\n }\n }\n }\n }\n return this;\n },\n toggleClass: function (value, stateVal) {\n var type = typeof value;\n if (typeof stateVal === \"boolean\" && type === \"string\") {\n return stateVal ? this.addClass(value) : this.removeClass(value);\n }\n if (jQuery.isFunction(value)) {\n return this.each(function (i) {\n jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);\n });\n }\n return this.each(function () {\n var className, i, self, classNames;\n if (type === \"string\") {\n // Toggle individual class names\n i = 0;\n self = jQuery(this);\n classNames = value.match(rnotwhite) || [];\n while (className = classNames[i++]) {\n // Check each className given, space separated list\n if (self.hasClass(className)) {\n self.removeClass(className);\n } else {\n self.addClass(className);\n }\n }\n\n // Toggle whole class name\n } else if (value === undefined || type === \"boolean\") {\n className = getClass(this);\n if (className) {\n // Store className if set\n dataPriv.set(this, \"__className__\", className);\n }\n\n // If the element has a class name or if we're passed `false`,\n // then remove the whole classname (if there was one, the above saved it).\n // Otherwise bring back whatever was previously saved (if anything),\n // falling back to the empty string if nothing was stored.\n if (this.setAttribute) {\n this.setAttribute(\"class\", className || value === false ? \"\" : dataPriv.get(this, \"__className__\") || \"\");\n }\n }\n });\n },\n hasClass: function (selector) {\n var className,\n elem,\n i = 0;\n className = \" \" + selector + \" \";\n while (elem = this[i++]) {\n if (elem.nodeType === 1 && (\" \" + getClass(elem) + \" \").replace(rclass, \" \").indexOf(className) > -1) {\n return true;\n }\n }\n return false;\n }\n });\n var rreturn = /\\r/g,\n rspaces = /[\\x20\\t\\r\\n\\f]+/g;\n jQuery.fn.extend({\n val: function (value) {\n var hooks,\n ret,\n isFunction,\n elem = this[0];\n if (!arguments.length) {\n if (elem) {\n hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];\n if (hooks && \"get\" in hooks && (ret = hooks.get(elem, \"value\")) !== undefined) {\n return ret;\n }\n ret = elem.value;\n return typeof ret === \"string\" ?\n // Handle most common string cases\n ret.replace(rreturn, \"\") :\n // Handle cases where value is null/undef or number\n ret == null ? \"\" : ret;\n }\n return;\n }\n isFunction = jQuery.isFunction(value);\n return this.each(function (i) {\n var val;\n if (this.nodeType !== 1) {\n return;\n }\n if (isFunction) {\n val = value.call(this, i, jQuery(this).val());\n } else {\n val = value;\n }\n\n // Treat null/undefined as \"\"; convert numbers to string\n if (val == null) {\n val = \"\";\n } else if (typeof val === \"number\") {\n val += \"\";\n } else if (jQuery.isArray(val)) {\n val = jQuery.map(val, function (value) {\n return value == null ? \"\" : value + \"\";\n });\n }\n hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];\n\n // If set returns undefined, fall back to normal setting\n if (!hooks || !(\"set\" in hooks) || hooks.set(this, val, \"value\") === undefined) {\n this.value = val;\n }\n });\n }\n });\n jQuery.extend({\n valHooks: {\n option: {\n get: function (elem) {\n var val = jQuery.find.attr(elem, \"value\");\n return val != null ? val :\n // Support: IE10-11+\n // option.text throws exceptions (#14686, #14858)\n // Strip and collapse whitespace\n // https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n jQuery.trim(jQuery.text(elem)).replace(rspaces, \" \");\n }\n },\n select: {\n get: function (elem) {\n var value,\n option,\n options = elem.options,\n index = elem.selectedIndex,\n one = elem.type === \"select-one\" || index < 0,\n values = one ? null : [],\n max = one ? index + 1 : options.length,\n i = index < 0 ? max : one ? index : 0;\n\n // Loop through all the selected options\n for (; i < max; i++) {\n option = options[i];\n\n // IE8-9 doesn't update selected after form reset (#2551)\n if ((option.selected || i === index) && (\n // Don't return options that are disabled or in a disabled optgroup\n support.optDisabled ? !option.disabled : option.getAttribute(\"disabled\") === null) && (!option.parentNode.disabled || !jQuery.nodeName(option.parentNode, \"optgroup\"))) {\n // Get the specific value for the option\n value = jQuery(option).val();\n\n // We don't need an array for one selects\n if (one) {\n return value;\n }\n\n // Multi-Selects return an array\n values.push(value);\n }\n }\n return values;\n },\n set: function (elem, value) {\n var optionSet,\n option,\n options = elem.options,\n values = jQuery.makeArray(value),\n i = options.length;\n while (i--) {\n option = options[i];\n if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {\n optionSet = true;\n }\n }\n\n // Force browsers to behave consistently when non-matching value is set\n if (!optionSet) {\n elem.selectedIndex = -1;\n }\n return values;\n }\n }\n }\n });\n\n // Radios and checkboxes getter/setter\n jQuery.each([\"radio\", \"checkbox\"], function () {\n jQuery.valHooks[this] = {\n set: function (elem, value) {\n if (jQuery.isArray(value)) {\n return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;\n }\n }\n };\n if (!support.checkOn) {\n jQuery.valHooks[this].get = function (elem) {\n return elem.getAttribute(\"value\") === null ? \"on\" : elem.value;\n };\n }\n });\n\n // Return jQuery for attributes-only inclusion\n\n var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;\n jQuery.extend(jQuery.event, {\n trigger: function (event, data, elem, onlyHandlers) {\n var i,\n cur,\n tmp,\n bubbleType,\n ontype,\n handle,\n special,\n eventPath = [elem || document],\n type = hasOwn.call(event, \"type\") ? event.type : event,\n namespaces = hasOwn.call(event, \"namespace\") ? event.namespace.split(\".\") : [];\n cur = tmp = elem = elem || document;\n\n // Don't do events on text and comment nodes\n if (elem.nodeType === 3 || elem.nodeType === 8) {\n return;\n }\n\n // focus/blur morphs to focusin/out; ensure we're not firing them right now\n if (rfocusMorph.test(type + jQuery.event.triggered)) {\n return;\n }\n if (type.indexOf(\".\") > -1) {\n // Namespaced trigger; create a regexp to match event type in handle()\n namespaces = type.split(\".\");\n type = namespaces.shift();\n namespaces.sort();\n }\n ontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n // Caller can pass in a jQuery.Event object, Object, or just an event type string\n event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === \"object\" && event);\n\n // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n event.isTrigger = onlyHandlers ? 2 : 3;\n event.namespace = namespaces.join(\".\");\n event.rnamespace = event.namespace ? new RegExp(\"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null;\n\n // Clean up the event in case it is being reused\n event.result = undefined;\n if (!event.target) {\n event.target = elem;\n }\n\n // Clone any incoming data and prepend the event, creating the handler arg list\n data = data == null ? [event] : jQuery.makeArray(data, [event]);\n\n // Allow special events to draw outside the lines\n special = jQuery.event.special[type] || {};\n if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {\n return;\n }\n\n // Determine event propagation path in advance, per W3C events spec (#9951)\n // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {\n bubbleType = special.delegateType || type;\n if (!rfocusMorph.test(bubbleType + type)) {\n cur = cur.parentNode;\n }\n for (; cur; cur = cur.parentNode) {\n eventPath.push(cur);\n tmp = cur;\n }\n\n // Only add window if we got to document (e.g., not plain obj or detached DOM)\n if (tmp === (elem.ownerDocument || document)) {\n eventPath.push(tmp.defaultView || tmp.parentWindow || window);\n }\n }\n\n // Fire handlers on the event path\n i = 0;\n while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {\n event.type = i > 1 ? bubbleType : special.bindType || type;\n\n // jQuery handler\n handle = (dataPriv.get(cur, \"events\") || {})[event.type] && dataPriv.get(cur, \"handle\");\n if (handle) {\n handle.apply(cur, data);\n }\n\n // Native handler\n handle = ontype && cur[ontype];\n if (handle && handle.apply && acceptData(cur)) {\n event.result = handle.apply(cur, data);\n if (event.result === false) {\n event.preventDefault();\n }\n }\n }\n event.type = type;\n\n // If nobody prevented the default action, do it now\n if (!onlyHandlers && !event.isDefaultPrevented()) {\n if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {\n // Call a native DOM method on the target with the same name name as the event.\n // Don't do default actions on window, that's where global variables be (#6170)\n if (ontype && jQuery.isFunction(elem[type]) && !jQuery.isWindow(elem)) {\n // Don't re-trigger an onFOO event when we call its FOO() method\n tmp = elem[ontype];\n if (tmp) {\n elem[ontype] = null;\n }\n\n // Prevent re-triggering of the same event, since we already bubbled it above\n jQuery.event.triggered = type;\n elem[type]();\n jQuery.event.triggered = undefined;\n if (tmp) {\n elem[ontype] = tmp;\n }\n }\n }\n }\n return event.result;\n },\n // Piggyback on a donor event to simulate a different one\n // Used only for `focus(in | out)` events\n simulate: function (type, elem, event) {\n var e = jQuery.extend(new jQuery.Event(), event, {\n type: type,\n isSimulated: true\n });\n jQuery.event.trigger(e, null, elem);\n }\n });\n jQuery.fn.extend({\n trigger: function (type, data) {\n return this.each(function () {\n jQuery.event.trigger(type, data, this);\n });\n },\n triggerHandler: function (type, data) {\n var elem = this[0];\n if (elem) {\n return jQuery.event.trigger(type, data, elem, true);\n }\n }\n });\n jQuery.each((\"blur focus focusin focusout load resize scroll unload click dblclick \" + \"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" + \"change select submit keydown keypress keyup error contextmenu\").split(\" \"), function (i, name) {\n // Handle event binding\n jQuery.fn[name] = function (data, fn) {\n return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);\n };\n });\n jQuery.fn.extend({\n hover: function (fnOver, fnOut) {\n return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);\n }\n });\n support.focusin = \"onfocusin\" in window;\n\n // Support: Firefox\n // Firefox doesn't have focus(in | out) events\n // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n //\n // Support: Chrome, Safari\n // focus(in | out) events fire after focus & blur events,\n // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n // Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857\n if (!support.focusin) {\n jQuery.each({\n focus: \"focusin\",\n blur: \"focusout\"\n }, function (orig, fix) {\n // Attach a single capturing handler on the document while someone wants focusin/focusout\n var handler = function (event) {\n jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));\n };\n jQuery.event.special[fix] = {\n setup: function () {\n var doc = this.ownerDocument || this,\n attaches = dataPriv.access(doc, fix);\n if (!attaches) {\n doc.addEventListener(orig, handler, true);\n }\n dataPriv.access(doc, fix, (attaches || 0) + 1);\n },\n teardown: function () {\n var doc = this.ownerDocument || this,\n attaches = dataPriv.access(doc, fix) - 1;\n if (!attaches) {\n doc.removeEventListener(orig, handler, true);\n dataPriv.remove(doc, fix);\n } else {\n dataPriv.access(doc, fix, attaches);\n }\n }\n };\n });\n }\n var location = window.location;\n var nonce = jQuery.now();\n var rquery = /\\?/;\n\n // Support: Android 2.3\n // Workaround failure to string-cast null input\n jQuery.parseJSON = function (data) {\n return JSON.parse(data + \"\");\n };\n\n // Cross-browser xml parsing\n jQuery.parseXML = function (data) {\n var xml;\n if (!data || typeof data !== \"string\") {\n return null;\n }\n\n // Support: IE9\n try {\n xml = new window.DOMParser().parseFromString(data, \"text/xml\");\n } catch (e) {\n xml = undefined;\n }\n if (!xml || xml.getElementsByTagName(\"parsererror\").length) {\n jQuery.error(\"Invalid XML: \" + data);\n }\n return xml;\n };\n var rhash = /#.*$/,\n rts = /([?&])_=[^&]*/,\n rheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n // #7653, #8125, #8152: local protocol detection\n rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n rnoContent = /^(?:GET|HEAD)$/,\n rprotocol = /^\\/\\//,\n /* Prefilters\n * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n * 2) These are called:\n * - BEFORE asking for a transport\n * - AFTER param serialization (s.data is a string if s.processData is true)\n * 3) key is the dataType\n * 4) the catchall symbol \"*\" can be used\n * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n */\n prefilters = {},\n /* Transports bindings\n * 1) key is the dataType\n * 2) the catchall symbol \"*\" can be used\n * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n */\n transports = {},\n // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n allTypes = \"*/\".concat(\"*\"),\n // Anchor tag for parsing the document origin\n originAnchor = document.createElement(\"a\");\n originAnchor.href = location.href;\n\n // Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\n function addToPrefiltersOrTransports(structure) {\n // dataTypeExpression is optional and defaults to \"*\"\n return function (dataTypeExpression, func) {\n if (typeof dataTypeExpression !== \"string\") {\n func = dataTypeExpression;\n dataTypeExpression = \"*\";\n }\n var dataType,\n i = 0,\n dataTypes = dataTypeExpression.toLowerCase().match(rnotwhite) || [];\n if (jQuery.isFunction(func)) {\n // For each dataType in the dataTypeExpression\n while (dataType = dataTypes[i++]) {\n // Prepend if requested\n if (dataType[0] === \"+\") {\n dataType = dataType.slice(1) || \"*\";\n (structure[dataType] = structure[dataType] || []).unshift(func);\n\n // Otherwise append\n } else {\n (structure[dataType] = structure[dataType] || []).push(func);\n }\n }\n }\n };\n }\n\n // Base inspection function for prefilters and transports\n function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {\n var inspected = {},\n seekingTransport = structure === transports;\n function inspect(dataType) {\n var selected;\n inspected[dataType] = true;\n jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {\n var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);\n if (typeof dataTypeOrTransport === \"string\" && !seekingTransport && !inspected[dataTypeOrTransport]) {\n options.dataTypes.unshift(dataTypeOrTransport);\n inspect(dataTypeOrTransport);\n return false;\n } else if (seekingTransport) {\n return !(selected = dataTypeOrTransport);\n }\n });\n return selected;\n }\n return inspect(options.dataTypes[0]) || !inspected[\"*\"] && inspect(\"*\");\n }\n\n // A special extend for ajax options\n // that takes \"flat\" options (not to be deep extended)\n // Fixes #9887\n function ajaxExtend(target, src) {\n var key,\n deep,\n flatOptions = jQuery.ajaxSettings.flatOptions || {};\n for (key in src) {\n if (src[key] !== undefined) {\n (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];\n }\n }\n if (deep) {\n jQuery.extend(true, target, deep);\n }\n return target;\n }\n\n /* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\n function ajaxHandleResponses(s, jqXHR, responses) {\n var ct,\n type,\n finalDataType,\n firstDataType,\n contents = s.contents,\n dataTypes = s.dataTypes;\n\n // Remove auto dataType and get content-type in the process\n while (dataTypes[0] === \"*\") {\n dataTypes.shift();\n if (ct === undefined) {\n ct = s.mimeType || jqXHR.getResponseHeader(\"Content-Type\");\n }\n }\n\n // Check if we're dealing with a known content-type\n if (ct) {\n for (type in contents) {\n if (contents[type] && contents[type].test(ct)) {\n dataTypes.unshift(type);\n break;\n }\n }\n }\n\n // Check to see if we have a response for the expected dataType\n if (dataTypes[0] in responses) {\n finalDataType = dataTypes[0];\n } else {\n // Try convertible dataTypes\n for (type in responses) {\n if (!dataTypes[0] || s.converters[type + \" \" + dataTypes[0]]) {\n finalDataType = type;\n break;\n }\n if (!firstDataType) {\n firstDataType = type;\n }\n }\n\n // Or just use first one\n finalDataType = finalDataType || firstDataType;\n }\n\n // If we found a dataType\n // We add the dataType to the list if needed\n // and return the corresponding response\n if (finalDataType) {\n if (finalDataType !== dataTypes[0]) {\n dataTypes.unshift(finalDataType);\n }\n return responses[finalDataType];\n }\n }\n\n /* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\n function ajaxConvert(s, response, jqXHR, isSuccess) {\n var conv2,\n current,\n conv,\n tmp,\n prev,\n converters = {},\n // Work with a copy of dataTypes in case we need to modify it for conversion\n dataTypes = s.dataTypes.slice();\n\n // Create converters map with lowercased keys\n if (dataTypes[1]) {\n for (conv in s.converters) {\n converters[conv.toLowerCase()] = s.converters[conv];\n }\n }\n current = dataTypes.shift();\n\n // Convert to each sequential dataType\n while (current) {\n if (s.responseFields[current]) {\n jqXHR[s.responseFields[current]] = response;\n }\n\n // Apply the dataFilter if provided\n if (!prev && isSuccess && s.dataFilter) {\n response = s.dataFilter(response, s.dataType);\n }\n prev = current;\n current = dataTypes.shift();\n if (current) {\n // There's only work to do if current dataType is non-auto\n if (current === \"*\") {\n current = prev;\n\n // Convert response if prev dataType is non-auto and differs from current\n } else if (prev !== \"*\" && prev !== current) {\n // Seek a direct converter\n conv = converters[prev + \" \" + current] || converters[\"* \" + current];\n\n // If none found, seek a pair\n if (!conv) {\n for (conv2 in converters) {\n // If conv2 outputs current\n tmp = conv2.split(\" \");\n if (tmp[1] === current) {\n // If prev can be converted to accepted input\n conv = converters[prev + \" \" + tmp[0]] || converters[\"* \" + tmp[0]];\n if (conv) {\n // Condense equivalence converters\n if (conv === true) {\n conv = converters[conv2];\n\n // Otherwise, insert the intermediate dataType\n } else if (converters[conv2] !== true) {\n current = tmp[0];\n dataTypes.unshift(tmp[1]);\n }\n break;\n }\n }\n }\n }\n\n // Apply converter (if not an equivalence)\n if (conv !== true) {\n // Unless errors are allowed to bubble, catch and return them\n if (conv && s.throws) {\n response = conv(response);\n } else {\n try {\n response = conv(response);\n } catch (e) {\n return {\n state: \"parsererror\",\n error: conv ? e : \"No conversion from \" + prev + \" to \" + current\n };\n }\n }\n }\n }\n }\n }\n return {\n state: \"success\",\n data: response\n };\n }\n jQuery.extend({\n // Counter for holding the number of active queries\n active: 0,\n // Last-Modified header cache for next request\n lastModified: {},\n etag: {},\n ajaxSettings: {\n url: location.href,\n type: \"GET\",\n isLocal: rlocalProtocol.test(location.protocol),\n global: true,\n processData: true,\n async: true,\n contentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n /*\n timeout: 0,\n data: null,\n dataType: null,\n username: null,\n password: null,\n cache: null,\n throws: false,\n traditional: false,\n headers: {},\n */\n\n accepts: {\n \"*\": allTypes,\n text: \"text/plain\",\n html: \"text/html\",\n xml: \"application/xml, text/xml\",\n json: \"application/json, text/javascript\"\n },\n contents: {\n xml: /\\bxml\\b/,\n html: /\\bhtml/,\n json: /\\bjson\\b/\n },\n responseFields: {\n xml: \"responseXML\",\n text: \"responseText\",\n json: \"responseJSON\"\n },\n // Data converters\n // Keys separate source (or catchall \"*\") and destination types with a single space\n converters: {\n // Convert anything to text\n \"* text\": String,\n // Text to html (true = no transformation)\n \"text html\": true,\n // Evaluate text as a json expression\n \"text json\": jQuery.parseJSON,\n // Parse text as xml\n \"text xml\": jQuery.parseXML\n },\n // For options that shouldn't be deep extended:\n // you can add your own custom options here if\n // and when you create one that shouldn't be\n // deep extended (see ajaxExtend)\n flatOptions: {\n url: true,\n context: true\n }\n },\n // Creates a full fledged settings object into target\n // with both ajaxSettings and settings fields.\n // If target is omitted, writes into ajaxSettings.\n ajaxSetup: function (target, settings) {\n return settings ?\n // Building a settings object\n ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :\n // Extending ajaxSettings\n ajaxExtend(jQuery.ajaxSettings, target);\n },\n ajaxPrefilter: addToPrefiltersOrTransports(prefilters),\n ajaxTransport: addToPrefiltersOrTransports(transports),\n // Main method\n ajax: function (url, options) {\n // If url is an object, simulate pre-1.5 signature\n if (typeof url === \"object\") {\n options = url;\n url = undefined;\n }\n\n // Force options to be an object\n options = options || {};\n var transport,\n // URL without anti-cache param\n cacheURL,\n // Response headers\n responseHeadersString,\n responseHeaders,\n // timeout handle\n timeoutTimer,\n // Url cleanup var\n urlAnchor,\n // To know if global events are to be dispatched\n fireGlobals,\n // Loop variable\n i,\n // Create the final options object\n s = jQuery.ajaxSetup({}, options),\n // Callbacks context\n callbackContext = s.context || s,\n // Context for global events is callbackContext if it is a DOM node or jQuery collection\n globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,\n // Deferreds\n deferred = jQuery.Deferred(),\n completeDeferred = jQuery.Callbacks(\"once memory\"),\n // Status-dependent callbacks\n statusCode = s.statusCode || {},\n // Headers (they are sent all at once)\n requestHeaders = {},\n requestHeadersNames = {},\n // The jqXHR state\n state = 0,\n // Default abort message\n strAbort = \"canceled\",\n // Fake xhr\n jqXHR = {\n readyState: 0,\n // Builds headers hashtable if needed\n getResponseHeader: function (key) {\n var match;\n if (state === 2) {\n if (!responseHeaders) {\n responseHeaders = {};\n while (match = rheaders.exec(responseHeadersString)) {\n responseHeaders[match[1].toLowerCase()] = match[2];\n }\n }\n match = responseHeaders[key.toLowerCase()];\n }\n return match == null ? null : match;\n },\n // Raw string\n getAllResponseHeaders: function () {\n return state === 2 ? responseHeadersString : null;\n },\n // Caches the header\n setRequestHeader: function (name, value) {\n var lname = name.toLowerCase();\n if (!state) {\n name = requestHeadersNames[lname] = requestHeadersNames[lname] || name;\n requestHeaders[name] = value;\n }\n return this;\n },\n // Overrides response content-type header\n overrideMimeType: function (type) {\n if (!state) {\n s.mimeType = type;\n }\n return this;\n },\n // Status-dependent callbacks\n statusCode: function (map) {\n var code;\n if (map) {\n if (state < 2) {\n for (code in map) {\n // Lazy-add the new callback in a way that preserves old ones\n statusCode[code] = [statusCode[code], map[code]];\n }\n } else {\n // Execute the appropriate callbacks\n jqXHR.always(map[jqXHR.status]);\n }\n }\n return this;\n },\n // Cancel the request\n abort: function (statusText) {\n var finalText = statusText || strAbort;\n if (transport) {\n transport.abort(finalText);\n }\n done(0, finalText);\n return this;\n }\n };\n\n // Attach deferreds\n deferred.promise(jqXHR).complete = completeDeferred.add;\n jqXHR.success = jqXHR.done;\n jqXHR.error = jqXHR.fail;\n\n // Remove hash character (#7531: and string promotion)\n // Add protocol if not provided (prefilters might expect it)\n // Handle falsy url in the settings object (#10093: consistency with old signature)\n // We also use the url parameter if available\n s.url = ((url || s.url || location.href) + \"\").replace(rhash, \"\").replace(rprotocol, location.protocol + \"//\");\n\n // Alias method option to type as per ticket #12004\n s.type = options.method || options.type || s.method || s.type;\n\n // Extract dataTypes list\n s.dataTypes = jQuery.trim(s.dataType || \"*\").toLowerCase().match(rnotwhite) || [\"\"];\n\n // A cross-domain request is in order when the origin doesn't match the current origin.\n if (s.crossDomain == null) {\n urlAnchor = document.createElement(\"a\");\n\n // Support: IE8-11+\n // IE throws exception if url is malformed, e.g. http://example.com:80x/\n try {\n urlAnchor.href = s.url;\n\n // Support: IE8-11+\n // Anchor's host property isn't correctly set when s.url is relative\n urlAnchor.href = urlAnchor.href;\n s.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host;\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain,\n // it can be rejected by the transport if it is invalid\n s.crossDomain = true;\n }\n }\n\n // Convert data if not already a string\n if (s.data && s.processData && typeof s.data !== \"string\") {\n s.data = jQuery.param(s.data, s.traditional);\n }\n\n // Apply prefilters\n inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);\n\n // If request was aborted inside a prefilter, stop there\n if (state === 2) {\n return jqXHR;\n }\n\n // We can fire global events as of now if asked to\n // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n fireGlobals = jQuery.event && s.global;\n\n // Watch for a new set of requests\n if (fireGlobals && jQuery.active++ === 0) {\n jQuery.event.trigger(\"ajaxStart\");\n }\n\n // Uppercase the type\n s.type = s.type.toUpperCase();\n\n // Determine if request has content\n s.hasContent = !rnoContent.test(s.type);\n\n // Save the URL in case we're toying with the If-Modified-Since\n // and/or If-None-Match header later on\n cacheURL = s.url;\n\n // More options handling for requests with no content\n if (!s.hasContent) {\n // If data is available, append data to url\n if (s.data) {\n cacheURL = s.url += (rquery.test(cacheURL) ? \"&\" : \"?\") + s.data;\n\n // #9682: remove data so that it's not used in an eventual retry\n delete s.data;\n }\n\n // Add anti-cache in url if needed\n if (s.cache === false) {\n s.url = rts.test(cacheURL) ?\n // If there is already a '_' parameter, set its value\n cacheURL.replace(rts, \"$1_=\" + nonce++) :\n // Otherwise add one to the end\n cacheURL + (rquery.test(cacheURL) ? \"&\" : \"?\") + \"_=\" + nonce++;\n }\n }\n\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n if (jQuery.lastModified[cacheURL]) {\n jqXHR.setRequestHeader(\"If-Modified-Since\", jQuery.lastModified[cacheURL]);\n }\n if (jQuery.etag[cacheURL]) {\n jqXHR.setRequestHeader(\"If-None-Match\", jQuery.etag[cacheURL]);\n }\n }\n\n // Set the correct header, if data is being sent\n if (s.data && s.hasContent && s.contentType !== false || options.contentType) {\n jqXHR.setRequestHeader(\"Content-Type\", s.contentType);\n }\n\n // Set the Accepts header for the server, depending on the dataType\n jqXHR.setRequestHeader(\"Accept\", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\") : s.accepts[\"*\"]);\n\n // Check for headers option\n for (i in s.headers) {\n jqXHR.setRequestHeader(i, s.headers[i]);\n }\n\n // Allow custom headers/mimetypes and early abort\n if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || state === 2)) {\n // Abort if not done already and return\n return jqXHR.abort();\n }\n\n // Aborting is no longer a cancellation\n strAbort = \"abort\";\n\n // Install callbacks on deferreds\n for (i in {\n success: 1,\n error: 1,\n complete: 1\n }) {\n jqXHR[i](s[i]);\n }\n\n // Get transport\n transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);\n\n // If no transport, we auto-abort\n if (!transport) {\n done(-1, \"No Transport\");\n } else {\n jqXHR.readyState = 1;\n\n // Send global event\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxSend\", [jqXHR, s]);\n }\n\n // If request was aborted inside ajaxSend, stop there\n if (state === 2) {\n return jqXHR;\n }\n\n // Timeout\n if (s.async && s.timeout > 0) {\n timeoutTimer = window.setTimeout(function () {\n jqXHR.abort(\"timeout\");\n }, s.timeout);\n }\n try {\n state = 1;\n transport.send(requestHeaders, done);\n } catch (e) {\n // Propagate exception as error if not done\n if (state < 2) {\n done(-1, e);\n\n // Simply rethrow otherwise\n } else {\n throw e;\n }\n }\n }\n\n // Callback for when everything is done\n function done(status, nativeStatusText, responses, headers) {\n var isSuccess,\n success,\n error,\n response,\n modified,\n statusText = nativeStatusText;\n\n // Called once\n if (state === 2) {\n return;\n }\n\n // State is \"done\" now\n state = 2;\n\n // Clear timeout if it exists\n if (timeoutTimer) {\n window.clearTimeout(timeoutTimer);\n }\n\n // Dereference transport for early garbage collection\n // (no matter how long the jqXHR object will be used)\n transport = undefined;\n\n // Cache response headers\n responseHeadersString = headers || \"\";\n\n // Set readyState\n jqXHR.readyState = status > 0 ? 4 : 0;\n\n // Determine if successful\n isSuccess = status >= 200 && status < 300 || status === 304;\n\n // Get response data\n if (responses) {\n response = ajaxHandleResponses(s, jqXHR, responses);\n }\n\n // Convert no matter what (that way responseXXX fields are always set)\n response = ajaxConvert(s, response, jqXHR, isSuccess);\n\n // If successful, handle type chaining\n if (isSuccess) {\n // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n if (s.ifModified) {\n modified = jqXHR.getResponseHeader(\"Last-Modified\");\n if (modified) {\n jQuery.lastModified[cacheURL] = modified;\n }\n modified = jqXHR.getResponseHeader(\"etag\");\n if (modified) {\n jQuery.etag[cacheURL] = modified;\n }\n }\n\n // if no content\n if (status === 204 || s.type === \"HEAD\") {\n statusText = \"nocontent\";\n\n // if not modified\n } else if (status === 304) {\n statusText = \"notmodified\";\n\n // If we have data, let's convert it\n } else {\n statusText = response.state;\n success = response.data;\n error = response.error;\n isSuccess = !error;\n }\n } else {\n // Extract error from statusText and normalize for non-aborts\n error = statusText;\n if (status || !statusText) {\n statusText = \"error\";\n if (status < 0) {\n status = 0;\n }\n }\n }\n\n // Set data for the fake xhr object\n jqXHR.status = status;\n jqXHR.statusText = (nativeStatusText || statusText) + \"\";\n\n // Success/Error\n if (isSuccess) {\n deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);\n } else {\n deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);\n }\n\n // Status-dependent callbacks\n jqXHR.statusCode(statusCode);\n statusCode = undefined;\n if (fireGlobals) {\n globalEventContext.trigger(isSuccess ? \"ajaxSuccess\" : \"ajaxError\", [jqXHR, s, isSuccess ? success : error]);\n }\n\n // Complete\n completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);\n if (fireGlobals) {\n globalEventContext.trigger(\"ajaxComplete\", [jqXHR, s]);\n\n // Handle the global AJAX counter\n if (! --jQuery.active) {\n jQuery.event.trigger(\"ajaxStop\");\n }\n }\n }\n return jqXHR;\n },\n getJSON: function (url, data, callback) {\n return jQuery.get(url, data, callback, \"json\");\n },\n getScript: function (url, callback) {\n return jQuery.get(url, undefined, callback, \"script\");\n }\n });\n jQuery.each([\"get\", \"post\"], function (i, method) {\n jQuery[method] = function (url, data, callback, type) {\n // Shift arguments if data argument was omitted\n if (jQuery.isFunction(data)) {\n type = type || callback;\n callback = data;\n data = undefined;\n }\n\n // The url can be an options object (which then must have .url)\n return jQuery.ajax(jQuery.extend({\n url: url,\n type: method,\n dataType: type,\n data: data,\n success: callback\n }, jQuery.isPlainObject(url) && url));\n };\n });\n jQuery._evalUrl = function (url) {\n return jQuery.ajax({\n url: url,\n // Make this explicit, since user can override this through ajaxSetup (#11264)\n type: \"GET\",\n dataType: \"script\",\n async: false,\n global: false,\n \"throws\": true\n });\n };\n jQuery.fn.extend({\n wrapAll: function (html) {\n var wrap;\n if (jQuery.isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapAll(html.call(this, i));\n });\n }\n if (this[0]) {\n // The elements to wrap the target around\n wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);\n if (this[0].parentNode) {\n wrap.insertBefore(this[0]);\n }\n wrap.map(function () {\n var elem = this;\n while (elem.firstElementChild) {\n elem = elem.firstElementChild;\n }\n return elem;\n }).append(this);\n }\n return this;\n },\n wrapInner: function (html) {\n if (jQuery.isFunction(html)) {\n return this.each(function (i) {\n jQuery(this).wrapInner(html.call(this, i));\n });\n }\n return this.each(function () {\n var self = jQuery(this),\n contents = self.contents();\n if (contents.length) {\n contents.wrapAll(html);\n } else {\n self.append(html);\n }\n });\n },\n wrap: function (html) {\n var isFunction = jQuery.isFunction(html);\n return this.each(function (i) {\n jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);\n });\n },\n unwrap: function () {\n return this.parent().each(function () {\n if (!jQuery.nodeName(this, \"body\")) {\n jQuery(this).replaceWith(this.childNodes);\n }\n }).end();\n }\n });\n jQuery.expr.filters.hidden = function (elem) {\n return !jQuery.expr.filters.visible(elem);\n };\n jQuery.expr.filters.visible = function (elem) {\n // Support: Opera <= 12.12\n // Opera reports offsetWidths and offsetHeights less than zero on some elements\n // Use OR instead of AND as the element is not visible if either is true\n // See tickets #10406 and #13132\n return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;\n };\n var r20 = /%20/g,\n rbracket = /\\[\\]$/,\n rCRLF = /\\r?\\n/g,\n rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n rsubmittable = /^(?:input|select|textarea|keygen)/i;\n function buildParams(prefix, obj, traditional, add) {\n var name;\n if (jQuery.isArray(obj)) {\n // Serialize array item.\n jQuery.each(obj, function (i, v) {\n if (traditional || rbracket.test(prefix)) {\n // Treat each array item as a scalar.\n add(prefix, v);\n } else {\n // Item is non-scalar (array or object), encode its numeric index.\n buildParams(prefix + \"[\" + (typeof v === \"object\" && v != null ? i : \"\") + \"]\", v, traditional, add);\n }\n });\n } else if (!traditional && jQuery.type(obj) === \"object\") {\n // Serialize object item.\n for (name in obj) {\n buildParams(prefix + \"[\" + name + \"]\", obj[name], traditional, add);\n }\n } else {\n // Serialize scalar item.\n add(prefix, obj);\n }\n }\n\n // Serialize an array of form elements or a set of\n // key/values into a query string\n jQuery.param = function (a, traditional) {\n var prefix,\n s = [],\n add = function (key, value) {\n // If value is a function, invoke it and return its value\n value = jQuery.isFunction(value) ? value() : value == null ? \"\" : value;\n s[s.length] = encodeURIComponent(key) + \"=\" + encodeURIComponent(value);\n };\n\n // Set traditional to true for jQuery <= 1.3.2 behavior.\n if (traditional === undefined) {\n traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n }\n\n // If an array was passed in, assume that it is an array of form elements.\n if (jQuery.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {\n // Serialize the form elements\n jQuery.each(a, function () {\n add(this.name, this.value);\n });\n } else {\n // If traditional, encode the \"old\" way (the way 1.3.2 or older\n // did it), otherwise encode params recursively.\n for (prefix in a) {\n buildParams(prefix, a[prefix], traditional, add);\n }\n }\n\n // Return the resulting serialization\n return s.join(\"&\").replace(r20, \"+\");\n };\n jQuery.fn.extend({\n serialize: function () {\n return jQuery.param(this.serializeArray());\n },\n serializeArray: function () {\n return this.map(function () {\n // Can add propHook for \"elements\" to filter or add form elements\n var elements = jQuery.prop(this, \"elements\");\n return elements ? jQuery.makeArray(elements) : this;\n }).filter(function () {\n var type = this.type;\n\n // Use .is( \":disabled\" ) so that fieldset[disabled] works\n return this.name && !jQuery(this).is(\":disabled\") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));\n }).map(function (i, elem) {\n var val = jQuery(this).val();\n return val == null ? null : jQuery.isArray(val) ? jQuery.map(val, function (val) {\n return {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }) : {\n name: elem.name,\n value: val.replace(rCRLF, \"\\r\\n\")\n };\n }).get();\n }\n });\n jQuery.ajaxSettings.xhr = function () {\n try {\n return new window.XMLHttpRequest();\n } catch (e) {}\n };\n var xhrSuccessStatus = {\n // File protocol always yields status code 0, assume 200\n 0: 200,\n // Support: IE9\n // #1450: sometimes IE returns 1223 when it should be 204\n 1223: 204\n },\n xhrSupported = jQuery.ajaxSettings.xhr();\n support.cors = !!xhrSupported && \"withCredentials\" in xhrSupported;\n support.ajax = xhrSupported = !!xhrSupported;\n jQuery.ajaxTransport(function (options) {\n var callback, errorCallback;\n\n // Cross domain only allowed if supported through XMLHttpRequest\n if (support.cors || xhrSupported && !options.crossDomain) {\n return {\n send: function (headers, complete) {\n var i,\n xhr = options.xhr();\n xhr.open(options.type, options.url, options.async, options.username, options.password);\n\n // Apply custom fields if provided\n if (options.xhrFields) {\n for (i in options.xhrFields) {\n xhr[i] = options.xhrFields[i];\n }\n }\n\n // Override mime type if needed\n if (options.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(options.mimeType);\n }\n\n // X-Requested-With header\n // For cross-domain requests, seeing as conditions for a preflight are\n // akin to a jigsaw puzzle, we simply never set it to be sure.\n // (it can always be set on a per-request basis or even using ajaxSetup)\n // For same-domain requests, won't change header if already provided.\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n }\n\n // Set headers\n for (i in headers) {\n xhr.setRequestHeader(i, headers[i]);\n }\n\n // Callback\n callback = function (type) {\n return function () {\n if (callback) {\n callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;\n if (type === \"abort\") {\n xhr.abort();\n } else if (type === \"error\") {\n // Support: IE9\n // On a manual native abort, IE9 throws\n // errors on any property access that is not readyState\n if (typeof xhr.status !== \"number\") {\n complete(0, \"error\");\n } else {\n complete(\n // File: protocol always yields status 0; see #8605, #14207\n xhr.status, xhr.statusText);\n }\n } else {\n complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText,\n // Support: IE9 only\n // IE9 has no XHR2 but throws on binary (trac-11426)\n // For XHR2 non-text, let the caller handle it (gh-2498)\n (xhr.responseType || \"text\") !== \"text\" || typeof xhr.responseText !== \"string\" ? {\n binary: xhr.response\n } : {\n text: xhr.responseText\n }, xhr.getAllResponseHeaders());\n }\n }\n };\n };\n\n // Listen to events\n xhr.onload = callback();\n errorCallback = xhr.onerror = callback(\"error\");\n\n // Support: IE9\n // Use onreadystatechange to replace onabort\n // to handle uncaught aborts\n if (xhr.onabort !== undefined) {\n xhr.onabort = errorCallback;\n } else {\n xhr.onreadystatechange = function () {\n // Check readyState before timeout as it changes\n if (xhr.readyState === 4) {\n // Allow onerror to be called first,\n // but that will not handle a native abort\n // Also, save errorCallback to a variable\n // as xhr.onerror cannot be accessed\n window.setTimeout(function () {\n if (callback) {\n errorCallback();\n }\n });\n }\n };\n }\n\n // Create the abort callback\n callback = callback(\"abort\");\n try {\n // Do send the request (this may raise an exception)\n xhr.send(options.hasContent && options.data || null);\n } catch (e) {\n // #14683: Only rethrow if this hasn't been notified as an error yet\n if (callback) {\n throw e;\n }\n }\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n\n // Install script dataType\n jQuery.ajaxSetup({\n accepts: {\n script: \"text/javascript, application/javascript, \" + \"application/ecmascript, application/x-ecmascript\"\n },\n contents: {\n script: /\\b(?:java|ecma)script\\b/\n },\n converters: {\n \"text script\": function (text) {\n jQuery.globalEval(text);\n return text;\n }\n }\n });\n\n // Handle cache's special case and crossDomain\n jQuery.ajaxPrefilter(\"script\", function (s) {\n if (s.cache === undefined) {\n s.cache = false;\n }\n if (s.crossDomain) {\n s.type = \"GET\";\n }\n });\n\n // Bind script tag hack transport\n jQuery.ajaxTransport(\"script\", function (s) {\n // This transport only deals with cross domain requests\n if (s.crossDomain) {\n var script, callback;\n return {\n send: function (_, complete) {\n script = jQuery(\"<script>\").prop({\n charset: s.scriptCharset,\n src: s.url\n }).on(\"load error\", callback = function (evt) {\n script.remove();\n callback = null;\n if (evt) {\n complete(evt.type === \"error\" ? 404 : 200, evt.type);\n }\n });\n\n // Use native DOM manipulation to avoid our domManip AJAX trickery\n document.head.appendChild(script[0]);\n },\n abort: function () {\n if (callback) {\n callback();\n }\n }\n };\n }\n });\n var oldCallbacks = [],\n rjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n // Default jsonp settings\n jQuery.ajaxSetup({\n jsonp: \"callback\",\n jsonpCallback: function () {\n var callback = oldCallbacks.pop() || jQuery.expando + \"_\" + nonce++;\n this[callback] = true;\n return callback;\n }\n });\n\n // Detect, normalize options and install callbacks for jsonp requests\n jQuery.ajaxPrefilter(\"json jsonp\", function (s, originalSettings, jqXHR) {\n var callbackName,\n overwritten,\n responseContainer,\n jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? \"url\" : typeof s.data === \"string\" && (s.contentType || \"\").indexOf(\"application/x-www-form-urlencoded\") === 0 && rjsonp.test(s.data) && \"data\");\n\n // Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n if (jsonProp || s.dataTypes[0] === \"jsonp\") {\n // Get callback name, remembering preexisting value associated with it\n callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;\n\n // Insert callback into url or form data\n if (jsonProp) {\n s[jsonProp] = s[jsonProp].replace(rjsonp, \"$1\" + callbackName);\n } else if (s.jsonp !== false) {\n s.url += (rquery.test(s.url) ? \"&\" : \"?\") + s.jsonp + \"=\" + callbackName;\n }\n\n // Use data converter to retrieve json after script execution\n s.converters[\"script json\"] = function () {\n if (!responseContainer) {\n jQuery.error(callbackName + \" was not called\");\n }\n return responseContainer[0];\n };\n\n // Force json dataType\n s.dataTypes[0] = \"json\";\n\n // Install callback\n overwritten = window[callbackName];\n window[callbackName] = function () {\n responseContainer = arguments;\n };\n\n // Clean-up function (fires after converters)\n jqXHR.always(function () {\n // If previous value didn't exist - remove it\n if (overwritten === undefined) {\n jQuery(window).removeProp(callbackName);\n\n // Otherwise restore preexisting value\n } else {\n window[callbackName] = overwritten;\n }\n\n // Save back as free\n if (s[callbackName]) {\n // Make sure that re-using the options doesn't screw things around\n s.jsonpCallback = originalSettings.jsonpCallback;\n\n // Save the callback name for future use\n oldCallbacks.push(callbackName);\n }\n\n // Call if it was a function and we have a response\n if (responseContainer && jQuery.isFunction(overwritten)) {\n overwritten(responseContainer[0]);\n }\n responseContainer = overwritten = undefined;\n });\n\n // Delegate to script\n return \"script\";\n }\n });\n\n // Argument \"data\" should be string of html\n // context (optional): If specified, the fragment will be created in this context,\n // defaults to document\n // keepScripts (optional): If true, will include scripts passed in the html string\n jQuery.parseHTML = function (data, context, keepScripts) {\n if (!data || typeof data !== \"string\") {\n return null;\n }\n if (typeof context === \"boolean\") {\n keepScripts = context;\n context = false;\n }\n context = context || document;\n var parsed = rsingleTag.exec(data),\n scripts = !keepScripts && [];\n\n // Single tag\n if (parsed) {\n return [context.createElement(parsed[1])];\n }\n parsed = buildFragment([data], context, scripts);\n if (scripts && scripts.length) {\n jQuery(scripts).remove();\n }\n return jQuery.merge([], parsed.childNodes);\n };\n\n // Keep a copy of the old load method\n var _load = jQuery.fn.load;\n\n /**\n * Load a url into a page\n */\n jQuery.fn.load = function (url, params, callback) {\n if (typeof url !== \"string\" && _load) {\n return _load.apply(this, arguments);\n }\n var selector,\n type,\n response,\n self = this,\n off = url.indexOf(\" \");\n if (off > -1) {\n selector = jQuery.trim(url.slice(off));\n url = url.slice(0, off);\n }\n\n // If it's a function\n if (jQuery.isFunction(params)) {\n // We assume that it's the callback\n callback = params;\n params = undefined;\n\n // Otherwise, build a param string\n } else if (params && typeof params === \"object\") {\n type = \"POST\";\n }\n\n // If we have elements to modify, make the request\n if (self.length > 0) {\n jQuery.ajax({\n url: url,\n // If \"type\" variable is undefined, then \"GET\" method will be used.\n // Make value of this field explicit since\n // user can override it through ajaxSetup method\n type: type || \"GET\",\n dataType: \"html\",\n data: params\n }).done(function (responseText) {\n // Save response for use in complete callback\n response = arguments;\n self.html(selector ?\n // If a selector was specified, locate the right elements in a dummy div\n // Exclude scripts to avoid IE 'Permission Denied' errors\n jQuery(\"<div>\").append(jQuery.parseHTML(responseText)).find(selector) :\n // Otherwise use the full result\n responseText);\n\n // If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n // but they are ignored because response was set above.\n // If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n }).always(callback && function (jqXHR, status) {\n self.each(function () {\n callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);\n });\n });\n }\n return this;\n };\n\n // Attach a bunch of functions for handling common AJAX events\n jQuery.each([\"ajaxStart\", \"ajaxStop\", \"ajaxComplete\", \"ajaxError\", \"ajaxSuccess\", \"ajaxSend\"], function (i, type) {\n jQuery.fn[type] = function (fn) {\n return this.on(type, fn);\n };\n });\n jQuery.expr.filters.animated = function (elem) {\n return jQuery.grep(jQuery.timers, function (fn) {\n return elem === fn.elem;\n }).length;\n };\n\n /**\n * Gets a window from an element\n */\n function getWindow(elem) {\n return jQuery.isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;\n }\n jQuery.offset = {\n setOffset: function (elem, options, i) {\n var curPosition,\n curLeft,\n curCSSTop,\n curTop,\n curOffset,\n curCSSLeft,\n calculatePosition,\n position = jQuery.css(elem, \"position\"),\n curElem = jQuery(elem),\n props = {};\n\n // Set position first, in-case top/left are set even on static elem\n if (position === \"static\") {\n elem.style.position = \"relative\";\n }\n curOffset = curElem.offset();\n curCSSTop = jQuery.css(elem, \"top\");\n curCSSLeft = jQuery.css(elem, \"left\");\n calculatePosition = (position === \"absolute\" || position === \"fixed\") && (curCSSTop + curCSSLeft).indexOf(\"auto\") > -1;\n\n // Need to be able to calculate position if either\n // top or left is auto and position is either absolute or fixed\n if (calculatePosition) {\n curPosition = curElem.position();\n curTop = curPosition.top;\n curLeft = curPosition.left;\n } else {\n curTop = parseFloat(curCSSTop) || 0;\n curLeft = parseFloat(curCSSLeft) || 0;\n }\n if (jQuery.isFunction(options)) {\n // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n options = options.call(elem, i, jQuery.extend({}, curOffset));\n }\n if (options.top != null) {\n props.top = options.top - curOffset.top + curTop;\n }\n if (options.left != null) {\n props.left = options.left - curOffset.left + curLeft;\n }\n if (\"using\" in options) {\n options.using.call(elem, props);\n } else {\n curElem.css(props);\n }\n }\n };\n jQuery.fn.extend({\n offset: function (options) {\n if (arguments.length) {\n return options === undefined ? this : this.each(function (i) {\n jQuery.offset.setOffset(this, options, i);\n });\n }\n var docElem,\n win,\n elem = this[0],\n box = {\n top: 0,\n left: 0\n },\n doc = elem && elem.ownerDocument;\n if (!doc) {\n return;\n }\n docElem = doc.documentElement;\n\n // Make sure it's not a disconnected DOM node\n if (!jQuery.contains(docElem, elem)) {\n return box;\n }\n box = elem.getBoundingClientRect();\n win = getWindow(doc);\n return {\n top: box.top + win.pageYOffset - docElem.clientTop,\n left: box.left + win.pageXOffset - docElem.clientLeft\n };\n },\n position: function () {\n if (!this[0]) {\n return;\n }\n var offsetParent,\n offset,\n elem = this[0],\n parentOffset = {\n top: 0,\n left: 0\n };\n\n // Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n // because it is its only offset parent\n if (jQuery.css(elem, \"position\") === \"fixed\") {\n // Assume getBoundingClientRect is there when computed position is fixed\n offset = elem.getBoundingClientRect();\n } else {\n // Get *real* offsetParent\n offsetParent = this.offsetParent();\n\n // Get correct offsets\n offset = this.offset();\n if (!jQuery.nodeName(offsetParent[0], \"html\")) {\n parentOffset = offsetParent.offset();\n }\n\n // Add offsetParent borders\n parentOffset.top += jQuery.css(offsetParent[0], \"borderTopWidth\", true);\n parentOffset.left += jQuery.css(offsetParent[0], \"borderLeftWidth\", true);\n }\n\n // Subtract parent offsets and element margins\n return {\n top: offset.top - parentOffset.top - jQuery.css(elem, \"marginTop\", true),\n left: offset.left - parentOffset.left - jQuery.css(elem, \"marginLeft\", true)\n };\n },\n // This method will return documentElement in the following cases:\n // 1) For the element inside the iframe without offsetParent, this method will return\n // documentElement of the parent window\n // 2) For the hidden or detached element\n // 3) For body or html element, i.e. in case of the html node - it will return itself\n //\n // but those exceptions were never presented as a real life use-cases\n // and might be considered as more preferable results.\n //\n // This logic, however, is not guaranteed and can change at any point in the future\n offsetParent: function () {\n return this.map(function () {\n var offsetParent = this.offsetParent;\n while (offsetParent && jQuery.css(offsetParent, \"position\") === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n return offsetParent || documentElement;\n });\n }\n });\n\n // Create scrollLeft and scrollTop methods\n jQuery.each({\n scrollLeft: \"pageXOffset\",\n scrollTop: \"pageYOffset\"\n }, function (method, prop) {\n var top = \"pageYOffset\" === prop;\n jQuery.fn[method] = function (val) {\n return access(this, function (elem, method, val) {\n var win = getWindow(elem);\n if (val === undefined) {\n return win ? win[prop] : elem[method];\n }\n if (win) {\n win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);\n } else {\n elem[method] = val;\n }\n }, method, val, arguments.length);\n };\n });\n\n // Support: Safari<7-8+, Chrome<37-44+\n // Add the top/left cssHooks using jQuery.fn.position\n // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n // Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280\n // getComputedStyle returns percent when specified for top/left/bottom/right;\n // rather than make the css module depend on the offset module, just check for it here\n jQuery.each([\"top\", \"left\"], function (i, prop) {\n jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {\n if (computed) {\n computed = curCSS(elem, prop);\n\n // If curCSS returns percentage, fallback to offset\n return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + \"px\" : computed;\n }\n });\n });\n\n // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\n jQuery.each({\n Height: \"height\",\n Width: \"width\"\n }, function (name, type) {\n jQuery.each({\n padding: \"inner\" + name,\n content: type,\n \"\": \"outer\" + name\n }, function (defaultExtra, funcName) {\n // Margin is only for outerHeight, outerWidth\n jQuery.fn[funcName] = function (margin, value) {\n var chainable = arguments.length && (defaultExtra || typeof margin !== \"boolean\"),\n extra = defaultExtra || (margin === true || value === true ? \"margin\" : \"border\");\n return access(this, function (elem, type, value) {\n var doc;\n if (jQuery.isWindow(elem)) {\n // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there\n // isn't a whole lot we can do. See pull request at this URL for discussion:\n // https://github.com/jquery/jquery/pull/764\n return elem.document.documentElement[\"client\" + name];\n }\n\n // Get document width or height\n if (elem.nodeType === 9) {\n doc = elem.documentElement;\n\n // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n // whichever is greatest\n return Math.max(elem.body[\"scroll\" + name], doc[\"scroll\" + name], elem.body[\"offset\" + name], doc[\"offset\" + name], doc[\"client\" + name]);\n }\n return value === undefined ?\n // Get width or height on the element, requesting but not forcing parseFloat\n jQuery.css(elem, type, extra) :\n // Set width or height on the element\n jQuery.style(elem, type, value, extra);\n }, type, chainable ? margin : undefined, chainable, null);\n };\n });\n });\n jQuery.fn.extend({\n bind: function (types, data, fn) {\n return this.on(types, null, data, fn);\n },\n unbind: function (types, fn) {\n return this.off(types, null, fn);\n },\n delegate: function (selector, types, data, fn) {\n return this.on(types, selector, data, fn);\n },\n undelegate: function (selector, types, fn) {\n // ( namespace ) or ( selector, types [, fn] )\n return arguments.length === 1 ? this.off(selector, \"**\") : this.off(types, selector || \"**\", fn);\n },\n size: function () {\n return this.length;\n }\n });\n jQuery.fn.andSelf = jQuery.fn.addBack;\n\n // Register as a named AMD module, since jQuery can be concatenated with other\n // files that may use define, but not via a proper concatenation script that\n // understands anonymous AMD modules. A named AMD is safest and most robust\n // way to register. Lowercase jquery is used because AMD module names are\n // derived from file names, and jQuery is normally delivered in a lowercase\n // file name. Do this after creating the global so that if an AMD module wants\n // to call noConflict to hide this version of jQuery, it will work.\n\n // Note that for maximum portability, libraries that are not jQuery should\n // declare themselves as anonymous modules, and avoid setting a global if an\n // AMD loader is present. jQuery is a special case. For more information, see\n // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\n if (typeof define === \"function\" && define.amd) {\n define(\"jquery\", [], function () {\n return jQuery;\n });\n }\n var\n // Map over jQuery in case of overwrite\n _jQuery = window.jQuery,\n // Map over the $ in case of overwrite\n _$ = window.$;\n jQuery.noConflict = function (deep) {\n if (window.$ === jQuery) {\n window.$ = _$;\n }\n if (deep && window.jQuery === jQuery) {\n window.jQuery = _jQuery;\n }\n return jQuery;\n };\n\n // Expose jQuery and $ identifiers, even in AMD\n // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n // and CommonJS for browser emulators (#13566)\n if (!noGlobal) {\n window.jQuery = window.$ = jQuery;\n }\n return jQuery;\n});","import \"jquery.maskedinput/src/jquery.maskedinput\"\n\n// Payment Plan Selection\n$('#quarterly-button').on('click', function(event) {\n $('.ann-price').hide();\n $('.two-year-price').hide();\n $('.quarterly-price').show();\n $(\"#annual-button\").removeClass(\"btn-white\");\n $(\"#annual-button\").addClass(\"btn-green\");\n $(\"#two-year-button\").removeClass(\"btn-white\");\n $(\"#two-year-button\").addClass(\"btn-green\");\n $(\"#quarterly-button\").removeClass(\"btn-green\");\n $(\"#quarterly-button\").addClass(\"btn-white\");\n });\n\n$('#annual-button').on('click', function(event) {\n $('.two-year-price').hide();\n $('.quarterly-price').hide();\n $(\"#two-year-button\").removeClass(\"btn-white\");\n $(\"#two-year-button\").addClass(\"btn-green\");\n $(\"#quarterly-button\").removeClass(\"btn-white\");\n $(\"#quarterly-button\").addClass(\"btn-green\");\n $(\"#annual-button\").removeClass(\"btn-green\");\n $(\"#annual-button\").addClass(\"btn-white\");\n $('.ann-price').show();\n });\n$('#two-year-button').on('click', function(event) {\n $('.ann-price').hide();\n $('.quarterly-price').hide();\n $('.two-year-price').show();\n $(\"#quarterly-button\").removeClass(\"btn-white\");\n $(\"#quarterly-button\").addClass(\"btn-green\");\n $(\"#annual-button\").removeClass(\"btn-white\");\n $(\"#annual-button\").addClass(\"btn-green\");\n $(\"#two-year-button\").removeClass(\"btn-green\");\n $(\"#two-year-button\").addClass(\"btn-white\");\n\n });\n\n// Contact Coach\n$(document).on('turbo:load', function() {\n $('.contact-coach-button').on('click', function() {\n $('#coach_message_entry_id').val($(this).data('entry-id'));\n $('#coach_message_message').val('');\n })\n});\n\n$(document).on('turbo:load', function() {\n $('#trigger-image-search').on('click', function() { $('#imageForm').submit(); });\n $('#tmpPasswordModal').modal('show');\n});\n\n$(document).on('turbo:load', function() {\n $('#phone').mask('999-999-9999');\n});\n\n","(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS\n factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n})(function ($) {\n var ua = navigator.userAgent,\n iPhone = /iphone/i.test(ua),\n chrome = /chrome/i.test(ua),\n android = /android/i.test(ua),\n caretTimeoutId;\n $.mask = {\n //Predefined character definitions\n definitions: {\n '9': \"[0-9]\",\n 'a': \"[A-Za-z]\",\n '*': \"[A-Za-z0-9]\"\n },\n autoclear: true,\n dataName: \"rawMaskFn\",\n placeholder: '_'\n };\n $.fn.extend({\n //Helper Function for Caret positioning\n caret: function (begin, end) {\n var range;\n if (this.length === 0 || this.is(\":hidden\") || this.get(0) !== document.activeElement) {\n return;\n }\n if (typeof begin == 'number') {\n end = typeof end === 'number' ? end : begin;\n return this.each(function () {\n if (this.setSelectionRange) {\n this.setSelectionRange(begin, end);\n } else if (this.createTextRange) {\n range = this.createTextRange();\n range.collapse(true);\n range.moveEnd('character', end);\n range.moveStart('character', begin);\n range.select();\n }\n });\n } else {\n if (this[0].setSelectionRange) {\n begin = this[0].selectionStart;\n end = this[0].selectionEnd;\n } else if (document.selection && document.selection.createRange) {\n range = document.selection.createRange();\n begin = 0 - range.duplicate().moveStart('character', -100000);\n end = begin + range.text.length;\n }\n return {\n begin: begin,\n end: end\n };\n }\n },\n unmask: function () {\n return this.trigger(\"unmask\");\n },\n mask: function (mask, settings) {\n var input, defs, tests, partialPosition, firstNonMaskPos, lastRequiredNonMaskPos, len, oldVal;\n if (!mask && this.length > 0) {\n input = $(this[0]);\n var fn = input.data($.mask.dataName);\n return fn ? fn() : undefined;\n }\n settings = $.extend({\n autoclear: $.mask.autoclear,\n placeholder: $.mask.placeholder,\n // Load default placeholder\n completed: null\n }, settings);\n defs = $.mask.definitions;\n tests = [];\n partialPosition = len = mask.length;\n firstNonMaskPos = null;\n mask = String(mask);\n $.each(mask.split(\"\"), function (i, c) {\n if (c == '?') {\n len--;\n partialPosition = i;\n } else if (defs[c]) {\n tests.push(new RegExp(defs[c]));\n if (firstNonMaskPos === null) {\n firstNonMaskPos = tests.length - 1;\n }\n if (i < partialPosition) {\n lastRequiredNonMaskPos = tests.length - 1;\n }\n } else {\n tests.push(null);\n }\n });\n return this.trigger(\"unmask\").each(function () {\n var input = $(this),\n buffer = $.map(mask.split(\"\"), function (c, i) {\n if (c != '?') {\n return defs[c] ? getPlaceholder(i) : c;\n }\n }),\n defaultBuffer = buffer.join(''),\n focusText = input.val();\n function tryFireCompleted() {\n if (!settings.completed) {\n return;\n }\n for (var i = firstNonMaskPos; i <= lastRequiredNonMaskPos; i++) {\n if (tests[i] && buffer[i] === getPlaceholder(i)) {\n return;\n }\n }\n settings.completed.call(input);\n }\n function getPlaceholder(i) {\n if (i < settings.placeholder.length) return settings.placeholder.charAt(i);\n return settings.placeholder.charAt(0);\n }\n function seekNext(pos) {\n while (++pos < len && !tests[pos]);\n return pos;\n }\n function seekPrev(pos) {\n while (--pos >= 0 && !tests[pos]);\n return pos;\n }\n function shiftL(begin, end) {\n var i, j;\n if (begin < 0) {\n return;\n }\n for (i = begin, j = seekNext(end); i < len; i++) {\n if (tests[i]) {\n if (j < len && tests[i].test(buffer[j])) {\n buffer[i] = buffer[j];\n buffer[j] = getPlaceholder(j);\n } else {\n break;\n }\n j = seekNext(j);\n }\n }\n writeBuffer();\n input.caret(Math.max(firstNonMaskPos, begin));\n }\n function shiftR(pos) {\n var i, c, j, t;\n for (i = pos, c = getPlaceholder(pos); i < len; i++) {\n if (tests[i]) {\n j = seekNext(i);\n t = buffer[i];\n buffer[i] = c;\n if (j < len && tests[j].test(t)) {\n c = t;\n } else {\n break;\n }\n }\n }\n }\n function androidInputEvent(e) {\n var curVal = input.val();\n var pos = input.caret();\n if (oldVal && oldVal.length && oldVal.length > curVal.length) {\n // a deletion or backspace happened\n checkVal(true);\n while (pos.begin > 0 && !tests[pos.begin - 1]) pos.begin--;\n if (pos.begin === 0) {\n while (pos.begin < firstNonMaskPos && !tests[pos.begin]) pos.begin++;\n }\n input.caret(pos.begin, pos.begin);\n } else {\n var pos2 = checkVal(true);\n var lastEnteredValue = curVal.charAt(pos.begin);\n if (pos.begin < len) {\n if (!tests[pos.begin]) {\n pos.begin++;\n if (tests[pos.begin].test(lastEnteredValue)) {\n pos.begin++;\n }\n } else {\n if (tests[pos.begin].test(lastEnteredValue)) {\n pos.begin++;\n }\n }\n }\n input.caret(pos.begin, pos.begin);\n }\n tryFireCompleted();\n }\n function blurEvent(e) {\n checkVal();\n if (input.val() != focusText) input.change();\n }\n function keydownEvent(e) {\n if (input.prop(\"readonly\")) {\n return;\n }\n var k = e.which || e.keyCode,\n pos,\n begin,\n end;\n oldVal = input.val();\n //backspace, delete, and escape get special treatment\n if (k === 8 || k === 46 || iPhone && k === 127) {\n pos = input.caret();\n begin = pos.begin;\n end = pos.end;\n if (end - begin === 0) {\n begin = k !== 46 ? seekPrev(begin) : end = seekNext(begin - 1);\n end = k === 46 ? seekNext(end) : end;\n }\n clearBuffer(begin, end);\n shiftL(begin, end - 1);\n e.preventDefault();\n } else if (k === 13) {\n // enter\n blurEvent.call(this, e);\n } else if (k === 27) {\n // escape\n input.val(focusText);\n input.caret(0, checkVal());\n e.preventDefault();\n }\n }\n function keypressEvent(e) {\n if (input.prop(\"readonly\")) {\n return;\n }\n var k = e.which || e.keyCode,\n pos = input.caret(),\n p,\n c,\n next;\n if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {\n //Ignore\n return;\n } else if (k && k !== 13) {\n if (pos.end - pos.begin !== 0) {\n clearBuffer(pos.begin, pos.end);\n shiftL(pos.begin, pos.end - 1);\n }\n p = seekNext(pos.begin - 1);\n if (p < len) {\n c = String.fromCharCode(k);\n if (tests[p].test(c)) {\n shiftR(p);\n buffer[p] = c;\n writeBuffer();\n next = seekNext(p);\n if (android) {\n //Path for CSP Violation on FireFox OS 1.1\n var proxy = function () {\n $.proxy($.fn.caret, input, next)();\n };\n setTimeout(proxy, 0);\n } else {\n input.caret(next);\n }\n if (pos.begin <= lastRequiredNonMaskPos) {\n tryFireCompleted();\n }\n }\n }\n e.preventDefault();\n }\n }\n function clearBuffer(start, end) {\n var i;\n for (i = start; i < end && i < len; i++) {\n if (tests[i]) {\n buffer[i] = getPlaceholder(i);\n }\n }\n }\n function writeBuffer() {\n input.val(buffer.join(''));\n }\n function checkVal(allow) {\n //try to place characters where they belong\n var test = input.val(),\n lastMatch = -1,\n i,\n c,\n pos;\n for (i = 0, pos = 0; i < len; i++) {\n if (tests[i]) {\n buffer[i] = getPlaceholder(i);\n while (pos++ < test.length) {\n c = test.charAt(pos - 1);\n if (tests[i].test(c)) {\n buffer[i] = c;\n lastMatch = i;\n break;\n }\n }\n if (pos > test.length) {\n clearBuffer(i + 1, len);\n break;\n }\n } else {\n if (buffer[i] === test.charAt(pos)) {\n pos++;\n }\n if (i < partialPosition) {\n lastMatch = i;\n }\n }\n }\n if (allow) {\n writeBuffer();\n } else if (lastMatch + 1 < partialPosition) {\n if (settings.autoclear || buffer.join('') === defaultBuffer) {\n // Invalid value. Remove it and replace it with the\n // mask, which is the default behavior.\n if (input.val()) input.val(\"\");\n clearBuffer(0, len);\n } else {\n // Invalid value, but we opt to show the value to the\n // user and allow them to correct their mistake.\n writeBuffer();\n }\n } else {\n writeBuffer();\n input.val(input.val().substring(0, lastMatch + 1));\n }\n return partialPosition ? i : firstNonMaskPos;\n }\n input.data($.mask.dataName, function () {\n return $.map(buffer, function (c, i) {\n return tests[i] && c != getPlaceholder(i) ? c : null;\n }).join('');\n });\n input.one(\"unmask\", function () {\n input.off(\".mask\").removeData($.mask.dataName);\n }).on(\"focus.mask\", function () {\n if (input.prop(\"readonly\")) {\n return;\n }\n clearTimeout(caretTimeoutId);\n var pos;\n focusText = input.val();\n pos = checkVal();\n caretTimeoutId = setTimeout(function () {\n if (input.get(0) !== document.activeElement) {\n return;\n }\n writeBuffer();\n if (pos == mask.replace(\"?\", \"\").length) {\n input.caret(0, pos);\n } else {\n input.caret(pos);\n }\n }, 10);\n }).on(\"blur.mask\", blurEvent).on(\"keydown.mask\", keydownEvent).on(\"keypress.mask\", keypressEvent).on(\"input.mask paste.mask\", function () {\n if (input.prop(\"readonly\")) {\n return;\n }\n setTimeout(function () {\n var pos = checkVal(true);\n input.caret(pos);\n tryFireCompleted();\n }, 0);\n });\n if (chrome && android) {\n input.off('input.mask').on('input.mask', androidInputEvent);\n }\n checkVal(); //Perform initial check for existing values\n });\n }\n });\n});","function is_mobile_width(){\n let window_width = $(window).width()\n let mobile_width = '768' // mobile breakpoint\n if (window_width < mobile_width){return true;};\n};\n\nfunction is_tablet_width(){\n let window_width = $(window).width()\n let tablet_width = '992' // in width for responsive content\n if (window_width <= tablet_width){return true;};\n};\n\nfunction hideSocial(){\n $('#social-share-trigger').removeClass('active');\n $('#social-container').hide();\n}\n\n// Toggle Navigation\n$(document).on('', function() {\n\n let left_menu = $('#navbar-left')\n let right_menu = $('#navbar-right')\n let container = $('.container, .container-fluid')\n let documents_container = $('.documents-wrapper')\n\n function resetRightMenu(){\n\n if (is_mobile_width()){\n resetMobile();\n } else if (is_tablet_width()){\n resetTablet();\n } else {\n resetDesktop();\n };\n\n function resetMobile(){\n right_menu.css({'width' : '0px'})\n container.css({'padding-right':'15px'});\n };\n\n function resetTablet(){\n right_menu.css({'width' : '0px'})\n container.css({'padding-right':'15px'});\n };\n\n function resetDesktop(){\n right_menu.css({'width' : '0px'})\n container.css({'margin-left':'auto', 'margin-left':'auto','padding-right':'15px'});\n };\n };\n\n function resetLeftMenu(){\n\n if (is_mobile_width()){\n resetMobile();\n }else if (is_tablet_width()){\n resetTablet();\n }else{\n resetDesktop();\n };\n\n function resetMobile(){\n left_menu.animate({'width': '0'});\n };\n\n function resetTablet(){\n left_menu.animate({'width': '60px'});\n };\n\n function resetDesktop(){\n container.css({'padding-left': '75px'});\n left_menu.animate({'width': '60px'});\n };\n };\n\n // Toggle Right Nav\n $('[data-toggle=\"navbar-right\"]').on('click', function() {\n let right_menu_width = right_menu.css('width')\n let right_compact_width = \"0px\"\n let right_full_width = \"270px\"\n let right_margin_documents = \"20px;\"\n\n $(this).toggleClass('active');\n hideSocial();\n resetLeftMenu();\n\n if (is_mobile_width()){\n togglemobileNav()\n }else if (is_tablet_width()){\n toggletabletNav();\n }else{\n toggledesktopNav();\n };\n\n function toggledesktopNav(){\n // no animation due to inability to animate automargins in jquery\n if (right_menu_width == right_compact_width){\n container.css({'margin-left': '-'+right_full_width});\n right_menu.css({'width': right_full_width});\n }else{\n right_menu.css({'width': right_compact_width});\n container.css({'margin-left':'auto'});\n };\n };\n\n function toggletabletNav(){\n if (right_menu_width == right_compact_width){\n container.animate({'margin-left': '-'+right_full_width});\n right_menu.animate({'width': right_full_width});\n }else{\n container.animate({'margin-left':'0'})\n right_menu.animate({'width': right_compact_width});\n }\n };\n\n function togglemobileNav(){\n if (right_menu_width == right_compact_width){\n container.animate({'margin-left': '-'+right_full_width});\n right_menu.animate({'width': right_full_width});\n }else{\n container.animate({'margin-left':'0'});\n right_menu.animate({'width': right_compact_width});\n }\n }\n });\n\n // Set timer for nav hover actions\n let timer\n\n // Expand Left Nav on hover\n $('#navbar-left').mouseenter(function() {\n clearTimeout(timer);\n timer=setTimeout(function(){\n if(!is_mobile_width()){openNavLeft();};\n }, 300);\n });\n\n // Close Left Nav on mouse exit (with delay)\n $('#navbar-left').mouseleave(function() {\n clearTimeout(timer);\n timer=setTimeout(function(){\n if(!is_mobile_width() ){closeNavLeft();};\n }, 1200);\n });\n\n // Toggle Left Nav on click\n $('[data-toggle=\"navbar-left\"]').on('click', function() {\n toggleNavLeft();\n hideSocial();\n });\n\n function openNavLeft(){\n let full_width = \"270px\"\n let menu_width = \"215px\"\n if (is_mobile_width()){\n let compact_width = \"0px\"\n container.css({'margin-right': '0px', 'margin-left' : '0px'})\n container.animate({'margin-left': full_width});\n left_menu.animate({'width': full_width})\n }else if (is_tablet_width()){\n container.css({'margin-right': '75px', 'margin-left' : '0px'})\n container.animate({'margin-left': menu_width});\n left_menu.animate({'width': full_width})\n }else{\n let compact_width = \"60px\"\n container.animate({'padding-left': full_width});\n documents_container.css({'margin-left': '20px'});\n left_menu.animate({'width': full_width});\n };\n\n }\n\n function closeNavLeft(){\n let left_menu = $('#navbar-left')\n let menu_width =left_menu.css('width')\n\n if (is_mobile_width()){\n let compact_width = \"0px\"\n container.animate({'margin-left':'0px'});\n left_menu.animate({'width': compact_width})\n }else if (is_tablet_width()){\n let compact_width = \"60px\"\n container.animate({'margin-left': '0px'});\n left_menu.animate({'width': compact_width});\n }else{\n let compact_width = \"60px\"\n container.animate({'padding-left':'75px'});\n documents_container.css({'margin-left': ''});\n left_menu.animate({'width': compact_width});\n };\n };\n\n function toggleNavLeft(){\n let menu_width = $('#navbar-left').css('width')\n let open_width = \"270px\"\n resetRightMenu();\n menu_width == open_width ? closeNavLeft() : openNavLeft();\n };\n\n // Secondary Nav\n $('#trigger-secondary-nav').on('click', function() {\n $('#trigger-secondary-nav').toggleClass('active');\n $('body').toggleClass('secondary-nav');\n $('#publish-nav-secondary').toggle();\n });\n\n});\n\n// Adjust nav elements on window resize\n$( window ).resize(function() {\n\n let window_width = $(window).width()\n let mobile_width = '768' // Mobile breakpoint\n let left_menu = $('#navbar-left')\n let right_menu = $('#navbar-right')\n let container = $('.container, .container-fluid')\n\n\n function hideSecondaryNav(){\n $('#trigger-secondary-nav').removeClass('active');\n $('body').removeClass('secondary-nav');\n $('#publish-nav-secondary').hide();\n };\n\n});\n\n// Left Menu: Open left nav to correct section on page load\n//$( window ).load(function() {\n //$('#contena-academy #nav-cat-academy').addClass('show');\n //$('#contena-academy #nav-cat-academy .product-dropdown').addClass('show');\n\n //$('#contena-publish #nav-cat-publish').addClass('show');\n //$('#contena-publish #nav-cat-publish .product-dropdown').addClass('show');\n//});\n","$(document).on('turbo:load', function() {\n\n var reader_form = $('#readerOptionsForm')\n\n $('.form-trigger').on('click', function(){\n submit_form(reader_form)\n });\n\n $('.toggle-group').on('click', function(){\n let parent_container = $(this).closest('.share-icon')\n let indicator_classes = \"option-true option-false\"\n\n parent_container.toggleClass(indicator_classes);\n submit_form(reader_form)\n });\n\n function submit_form(form) {\n // setTimeout to prevent submission before toggle\n setTimeout(() => { reader_form.submit(); }, 200);\n };\n\n});\n","$(document).on('turbo:load', function() {\n\n $('.selectTestimonial').on('click', function(){\n testimonial = $(this).attr(\"id\")\n change_avatar($(this))\n change_testimonial(testimonial)\n });\n\n function change_avatar(avatar) {\n $('.testimonial-thumb').removeClass(\"active-testimonial\")\n $(avatar).addClass(\"active-testimonial\")\n };\n\n function change_testimonial(testimonial) {\n let new_testimonial_card = '.testimonial-card'+'#'+ testimonial\n $('.testimonial-card').removeClass(\"active-testimonial\")\n $(new_testimonial_card).addClass(\"active-testimonial\")\n };\n\n});\n","// JavaScript Document\n\n$(document).ready( function() {\n $(\"#total\").val(\"?\")\n $(\"#amount\").val(\"Articles Written Per Week\");\n $(\"#amountb\").val(\"Select Your Rate Per Article\");\n $(\"#amountc\").val(\"Choose a Timeframe\");\n\n $( function() {\n var iValue = 5;\n var iValue2 = 3;\n var iValue3 = 1;\n var p = {\n\n 0: \"1 Article Per Week\",\n 1: \"2 Articles Per Week\",\n 2: \"3 Articles Per Week\",\n 3: \"4 Articles Per Week\",\n 4: \"5 Articles Per Week\",\n 5: \"6 Articles Per Week\",\n 6: \"7 Articles Per Week\",\n 7: \"8 Articles Per Week\",\n 8: \"9 Articles Per Week\",\n 9: \"10 Articles Per Week\",\n 10: \"11 Articles Per Week\",\n 11: \"12 Articles Per Week\",\n 12: \"13 Articles Per Week\",\n 13: \"14 Articles Per Week\",\n 14: \"15 Articles Per Week\",\n\n };\n var t = {\n\n 0: \"1\",\n 1: \"2\",\n 2: \"3\",\n 3: \"4\",\n 4: \"5\",\n 5: \"6\",\n 6: \"7\",\n 7: \"8\",\n 8: \"9\",\n 9: \"10\",\n 10: \"11\",\n 11: \"12\",\n 12: \"13\",\n 13: \"14\",\n 14: \"15\",\n\n }\n var b = {\n\n 0: \"$25 Per Article\",\n 1: \"$50 Per Article\",\n 2: \"$75 Per Article\",\n 3: \"$100 Per Article\",\n 4: \"$150 Per Article\",\n 5: \"$200 Per Article\",\n 6: \"$500 Per Article\",\n };\n var d = {\n\n 0: \"25\",\n 1: \"50\",\n 2: \"75\",\n 3: \"100\",\n 4: \"150\",\n 5: \"200\",\n 6: \"500\",\n }\n var a = {\n\n 0: \"1 Month\",\n 1: \"3 Months\",\n 2: \"6 Months\",\n 3: \"1 Year\",\n };\n var c = {\n\n 0: \"4\",\n 1: \"13\",\n 2: \"26\",\n 3: \"52\",\n };\n\n $(\"#slider\").slider({\n\n value: iValue,\n min: 0,\n max: 14,\n step: 1,\n slide: function(event, ui) {\n\n $(\"#price\").val(t[ui.value]);\n $(\"#amount\").val(p[ui.value]);\n var aaa = $(\"#price\").val();\n var bbb = $(\"#priceb\").val();\n var ccc = $(\"#pricec\").val();\n\n $(\"#total\").val(\"$ \" +aaa * +bbb * +ccc +\".00\");\n $(\"#total\").digits();\n },\n create: function (event, ui) {\n $(\"#price\").val(\"5\");\n $(\"#amount\").val(\"4 Articles Per Week\");\n var aaa = '4'\n var bbb = '100'\n var ccc ='13'\n\n $(\"#total\").val(\"$ \" +aaa * +bbb * +ccc +\".00\");\n $(\"#total\")\n }\n });\n $(\"#sliderb\").slider({\n value: iValue2,\n min: 0,\n max: 6,\n step: 1,\n slide: function(event, ui) {\n $(\"#priceb\").val(d[ui.value]);\n $(\"#amountb\").val(b[ui.value]);\n var aaa = $(\"#price\").val();\n var bbb = $(\"#priceb\").val();\n var ccc = $(\"#pricec\").val();\n \n $(\"#total\").val(\"$ \" +aaa * +bbb * +ccc +\".00\");\n $(\"#total\").digits();\n },\n create: function (event, ui) {\n $(\"#priceb\").val(\"100\");\n $(\"#amountb\").val(\"$100 Per Article\");\n var aaa = '4'\n var bbb = '100'\n var ccc = '13'\n\n $(\"#total\").val(\"$ \" +aaa * +bbb * +ccc +\".00\");\n $(\"#total\").digits();\n }\n });\n $(\"#sliderc\").slider({\n value: iValue3,\n min: 0,\n max: 3,\n step: 1,\n slide: function(event, ui) {\n $(\"#pricec\").val(c[ui.value]);\n $(\"#amountc\").val(a[ui.value]);\n var aaa = $(\"#price\").val();\n var bbb = $(\"#priceb\").val();\n var ccc = $(\"#pricec\").val();\n var ddd = $(\"#amountc\").val();\n \n $(\"#total\").val(\"$ \" +aaa * +bbb * +ccc +\".00\");\n $(\"#total\").digits();\n $(\"#period\").html(ddd);\n },\n create: function (event, ui) {\n $(\"#priceb\").val(\"13\");\n $(\"#amountc\").val(\"3 Months\");\n var aaa = '4'\n var bbb = '100'\n var ccc = '13'\n var ddd = $(\"#amountc\").val();\n\n $(\"#total\").val(\"$ \" +aaa * +bbb * +ccc +\".00\");\n $(\"#total\").digits();\n $(\"#period\").html(ddd);\n }\n });\n $(\"#price\").val($(\"#slider\").slider(\"value\"));\n $(\"#priceb\").val($(\"#slider\").slider(\"value\"));\n $(\"#pricec\").val($(\"#slider\").slider(\"value\"));\n\n $(\"#price\").val(\"4\");\n $(\"#priceb\").val(\"100\");\n $(\"#pricec\").val(\"13\");\n\n }\n );\n\n});\n","//! moment.js\n//! version : 2.29.4\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 if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\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\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 }\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\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\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\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\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 function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\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 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 return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\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 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 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 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 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 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 // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\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 var dayOfMonth;\n\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 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\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 for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\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 for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\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 // 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 // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\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 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 // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\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 // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\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 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\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 // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\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);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\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 return name.match('^[^/\\\\\\\\]*$') != null;\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 eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\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 addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\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(),\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 // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\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 // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\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 // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\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 // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\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 // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\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 // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\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 // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\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\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.29.4';\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 * CookieConsent v2.9.2\n * https://www.github.com/orestbida/cookieconsent\n * Author Orest Bida\n * Released under the MIT License\n */\n!function () {\n 'use strict';\n\n var n = 'initCookieConsent';\n 'undefined' != typeof window && 'function' != typeof window[n] && (window[n] = function (n) {\n var t,\n o,\n e,\n i,\n r,\n a,\n c,\n u,\n f,\n d,\n v,\n l,\n s,\n p,\n b,\n m,\n y,\n g,\n h,\n _,\n w,\n k,\n x,\n S,\n J,\n O,\n j,\n N,\n T,\n D,\n C,\n U,\n z,\n E,\n I,\n L = {\n mode: 'opt-in',\n current_lang: 'en',\n auto_language: null,\n autorun: !0,\n page_scripts: !0,\n hide_from_bots: !0,\n cookie_name: 'cc_cookie',\n cookie_expiration: 182,\n cookie_domain: location.hostname,\n cookie_path: '/',\n cookie_same_site: 'Lax',\n use_rfc_cookie: !1,\n autoclear_cookies: !0,\n revision: 0,\n script_selector: 'data-cookiecategory'\n },\n M = {},\n R = {},\n A = null,\n G = !0,\n H = !1,\n P = !1,\n q = !1,\n B = !1,\n F = !0,\n K = [],\n Q = !1,\n V = [],\n W = [],\n X = [],\n Y = !1,\n Z = [],\n $ = [],\n nn = [],\n tn = [],\n on = [],\n en = document.documentElement,\n rn = function (n) {\n 'number' == typeof (t = n).cookie_expiration && (L.cookie_expiration = t.cookie_expiration), 'number' == typeof t.cookie_necessary_only_expiration && (L.cookie_necessary_only_expiration = t.cookie_necessary_only_expiration), 'boolean' == typeof t.autorun && (L.autorun = t.autorun), 'string' == typeof t.cookie_domain && (L.cookie_domain = t.cookie_domain), 'string' == typeof t.cookie_same_site && (L.cookie_same_site = t.cookie_same_site), 'string' == typeof t.cookie_path && (L.cookie_path = t.cookie_path), 'string' == typeof t.cookie_name && (L.cookie_name = t.cookie_name), 'function' == typeof t.onAccept && (v = t.onAccept), 'function' == typeof t.onFirstAction && (s = t.onFirstAction), 'function' == typeof t.onChange && (l = t.onChange), 'opt-out' === t.mode && (L.mode = 'opt-out'), 'number' == typeof t.revision && (t.revision > -1 && (L.revision = t.revision), B = !0), 'boolean' == typeof t.autoclear_cookies && (L.autoclear_cookies = t.autoclear_cookies), !0 === t.use_rfc_cookie && (L.use_rfc_cookie = !0), 'boolean' == typeof t.hide_from_bots && (L.hide_from_bots = t.hide_from_bots), L.hide_from_bots && (Y = navigator && (navigator.userAgent && /bot|crawl|spider|slurp|teoma/i.test(navigator.userAgent) || navigator.webdriver)), L.page_scripts = !0 === t.page_scripts, 'browser' === t.auto_language || !0 === t.auto_language ? L.auto_language = 'browser' : 'document' === t.auto_language && (L.auto_language = 'document'), L.auto_language, L.current_lang = sn(t.languages, t.current_lang);\n },\n an = function (n) {\n for (var t = 'accept-', o = c('c-settings'), e = c(t + 'all'), i = c(t + 'necessary'), r = c(t + 'custom'), a = 0; a < o.length; a++) o[a].setAttribute('aria-haspopup', 'dialog'), wn(o[a], 'click', function (n) {\n n.preventDefault(), M.showSettings(0);\n });\n for (a = 0; a < e.length; a++) wn(e[a], 'click', function (n) {\n u(n, 'all');\n });\n for (a = 0; a < r.length; a++) wn(r[a], 'click', function (n) {\n u(n);\n });\n for (a = 0; a < i.length; a++) wn(i[a], 'click', function (n) {\n u(n, []);\n });\n function c(t) {\n return (n || document).querySelectorAll('[data-cc=\"' + t + '\"]');\n }\n function u(n, t) {\n n.preventDefault(), M.accept(t), M.hideSettings(), M.hide();\n }\n },\n cn = function (n, t) {\n return t.hasOwnProperty(n) ? n : kn(t).length > 0 ? t.hasOwnProperty(L.current_lang) ? L.current_lang : kn(t)[0] : void 0;\n },\n un = function (n) {\n if (!0 === t.force_consent && xn(en, 'force--consent'), !h) {\n h = ln('div');\n var o = ln('div'),\n e = ln('div');\n h.id = 'cm', o.id = 'c-inr-i', e.id = 'cm-ov', h.tabIndex = -1, h.setAttribute('role', 'dialog'), h.setAttribute('aria-modal', 'true'), h.setAttribute('aria-hidden', 'false'), h.setAttribute('aria-labelledby', 'c-ttl'), h.setAttribute('aria-describedby', 'c-txt'), g.appendChild(h), g.appendChild(e), h.style.visibility = e.style.visibility = 'hidden', e.style.opacity = 0;\n }\n var i = t.languages[n].consent_modal.title;\n i && (_ || ((_ = ln('h2')).id = 'c-ttl', o.appendChild(_)), _.innerHTML = i);\n var r = t.languages[n].consent_modal.description;\n B && (r = F ? r.replace('{{revision_message}}', '') : r.replace('{{revision_message}}', t.languages[n].consent_modal.revision_message || '')), w || ((w = ln('div')).id = 'c-txt', o.appendChild(w)), w.innerHTML = r;\n var a,\n c = t.languages[n].consent_modal.primary_btn,\n u = t.languages[n].consent_modal.secondary_btn;\n c && (k || ((k = ln('button')).id = 'c-p-bn', k.className = 'c-bn', k.appendChild(On(1)), 'accept_all' === c.role && (a = 'all'), wn(k, 'click', function () {\n M.hide(), M.accept(a);\n })), k.firstElementChild.innerHTML = t.languages[n].consent_modal.primary_btn.text), u && (x || ((x = ln('button')).id = 'c-s-bn', x.className = 'c-bn c_link', x.appendChild(On(1)), 'accept_necessary' === u.role ? wn(x, 'click', function () {\n M.hide(), M.accept([]);\n }) : wn(x, 'click', function () {\n M.showSettings(0);\n })), x.firstElementChild.innerHTML = t.languages[n].consent_modal.secondary_btn.text);\n var f = t.gui_options;\n J || ((J = ln('div')).id = 'c-inr', J.appendChild(o)), S || ((S = ln('div')).id = 'c-bns', f && f.consent_modal && !0 === f.consent_modal.swap_buttons ? (u && S.appendChild(x), c && S.appendChild(k), S.className = 'swap') : (c && S.appendChild(k), u && S.appendChild(x)), (c || u) && J.appendChild(S), h.appendChild(J)), H = !0, an(J);\n },\n fn = function (n) {\n if (O) (C = ln('div')).id = 's-bl';else {\n (O = ln('div')).tabIndex = -1;\n var o = ln('div'),\n e = ln('div'),\n i = ln('div');\n j = ln('div'), N = ln('h2');\n var r = ln('div');\n (T = ln('button')).appendChild(On(2));\n var a = ln('div');\n D = ln('div');\n var c = ln('div'),\n u = !1;\n wn(O, 'mouseup', function (n) {\n !q || u || j.contains(n.target) || M.hideSettings();\n }), wn(O, 'mousedown', function (n) {\n q && (u = j.contains(n.target));\n }), O.id = 's-cnt', o.id = 'c-vln', i.id = 'c-s-in', e.id = 'cs', N.id = 's-ttl', j.id = 's-inr', r.id = 's-hdr', D.id = 's-bl', T.id = 's-c-bn', c.id = 'cs-ov', a.id = 's-c-bnc', T.className = 'c-bn', O.setAttribute('role', 'dialog'), O.setAttribute('aria-modal', 'true'), O.setAttribute('aria-hidden', 'true'), O.setAttribute('aria-labelledby', 's-ttl'), O.style.visibility = c.style.visibility = 'hidden', c.style.opacity = 0, a.appendChild(T), wn(document, 'keydown', function (n) {\n 27 === n.keyCode && q && M.hideSettings();\n }, !0), wn(T, 'click', function () {\n M.hideSettings();\n });\n }\n var v = t.languages[n].settings_modal;\n T.setAttribute('aria-label', v.close_btn_label || 'Close'), d = v.blocks, f = v.cookie_table_headers;\n var l = v.cookie_table_caption,\n s = d.length;\n N.innerHTML = v.title;\n for (var p = 0; p < s; ++p) {\n var b = d[p].title,\n m = d[p].description,\n y = d[p].toggle,\n h = d[p].cookie_table,\n _ = !0 === t.remove_cookie_tables,\n w = !!m || !_ && !!h,\n k = ln('div'),\n x = ln('div');\n if (m) {\n var S = ln('div');\n S.className = 'p', S.insertAdjacentHTML('beforeend', m);\n }\n var J = ln('div');\n if (J.className = 'title', k.className = 'c-bl', x.className = 'desc', void 0 !== y) {\n var L = 'c-ac-' + p,\n A = ln(w ? 'button' : 'div'),\n H = ln('label'),\n P = ln('input'),\n B = ln('span'),\n F = ln('span'),\n K = ln('span'),\n Q = ln('span');\n A.className = w ? 'b-tl exp' : 'b-tl', H.className = 'b-tg', P.className = 'c-tgl', K.className = 'on-i', Q.className = 'off-i', B.className = 'c-tg', F.className = 't-lb', w && (A.setAttribute('aria-expanded', 'false'), A.setAttribute('aria-controls', L)), P.type = 'checkbox', B.setAttribute('aria-hidden', 'true');\n var V = y.value;\n P.value = V, F.textContent = b, A.insertAdjacentHTML('beforeend', b), J.appendChild(A), B.appendChild(K), B.appendChild(Q), G ? y.enabled ? (P.checked = !0, !C && nn.push(!0), y.enabled && !C && X.push(V)) : !C && nn.push(!1) : vn(R.categories, V) > -1 ? (P.checked = !0, !C && nn.push(!0)) : !C && nn.push(!1), !C && tn.push(V), y.readonly && (P.disabled = !0, xn(B, 'c-ro'), !C && on.push(V)), xn(x, 'b-acc'), xn(J, 'b-bn'), xn(k, 'b-ex'), x.id = L, x.setAttribute('aria-hidden', 'true'), H.appendChild(P), H.appendChild(B), H.appendChild(F), J.appendChild(H), w && function (n, t, o) {\n wn(A, 'click', function () {\n Jn(t, 'act') ? (Sn(t, 'act'), o.setAttribute('aria-expanded', 'false'), n.setAttribute('aria-hidden', 'true')) : (xn(t, 'act'), o.setAttribute('aria-expanded', 'true'), n.setAttribute('aria-hidden', 'false'));\n }, !1);\n }(x, k, A);\n } else if (b) {\n var W = ln('div');\n W.className = 'b-tl', W.setAttribute('role', 'heading'), W.setAttribute('aria-level', '3'), W.insertAdjacentHTML('beforeend', b), J.appendChild(W);\n }\n if (b && k.appendChild(J), m && x.appendChild(S), !_ && void 0 !== h) {\n for (var Y = document.createDocumentFragment(), Z = 0; Z < f.length; ++Z) {\n var $ = ln('th'),\n en = f[Z];\n if ($.setAttribute('scope', 'col'), en) {\n var rn = en && kn(en)[0];\n $.textContent = f[Z][rn], Y.appendChild($);\n }\n }\n var an = ln('tr');\n an.appendChild(Y);\n var cn = ln('thead');\n cn.appendChild(an);\n var un = ln('table');\n if (l) {\n var fn = ln('caption');\n fn.innerHTML = l, un.appendChild(fn);\n }\n un.appendChild(cn);\n for (var dn = document.createDocumentFragment(), sn = 0; sn < h.length; sn++) {\n for (var pn = ln('tr'), bn = 0; bn < f.length; ++bn) if (en = f[bn]) {\n rn = kn(en)[0];\n var mn = ln('td');\n mn.insertAdjacentHTML('beforeend', h[sn][rn]), mn.setAttribute('data-column', en[rn]), pn.appendChild(mn);\n }\n dn.appendChild(pn);\n }\n var yn = ln('tbody');\n yn.appendChild(dn), un.appendChild(yn), x.appendChild(un);\n }\n (y && b || !y && (b || m)) && (k.appendChild(x), C ? C.appendChild(k) : D.appendChild(k));\n }\n U || ((U = ln('div')).id = 's-bns'), E || ((E = ln('button')).id = 's-all-bn', E.className = 'c-bn', U.appendChild(E), wn(E, 'click', function () {\n M.accept('all'), M.hideSettings(), M.hide();\n })), E.innerHTML = v.accept_all_btn;\n var gn = v.reject_all_btn;\n if (gn && (I || ((I = ln('button')).id = 's-rall-bn', I.className = 'c-bn', wn(I, 'click', function () {\n M.accept([]), M.hideSettings(), M.hide();\n }), j.className = 'bns-t', U.appendChild(I)), I.innerHTML = gn), z || ((z = ln('button')).id = 's-sv-bn', z.className = 'c-bn', U.appendChild(z), wn(z, 'click', function () {\n M.accept(), M.hideSettings(), M.hide();\n })), z.innerHTML = v.save_settings_btn, C) return j.replaceChild(C, D), void (D = C);\n r.appendChild(N), r.appendChild(a), j.appendChild(r), j.appendChild(D), j.appendChild(U), i.appendChild(j), e.appendChild(i), o.appendChild(e), O.appendChild(o), g.appendChild(O), g.appendChild(c);\n };\n M.updateLanguage = function (n, o) {\n if ('string' == typeof n) {\n var e = cn(n, t.languages);\n return (e !== L.current_lang || !0 === o) && (L.current_lang = e, H && un(e), fn(e), !0);\n }\n };\n var dn = function (n) {\n var t = d.length,\n o = -1;\n Q = !1;\n var e = hn('', 'all'),\n i = [L.cookie_domain, '.' + L.cookie_domain];\n if ('www.' === L.cookie_domain.slice(0, 4)) {\n var r = L.cookie_domain.substr(4);\n i.push(r), i.push('.' + r);\n }\n for (var a = 0; a < t; a++) {\n var c = d[a];\n if (c.hasOwnProperty('toggle')) {\n var u = vn(K, c.toggle.value) > -1;\n if (!nn[++o] && c.hasOwnProperty('cookie_table') && (n || u)) {\n var v = c.cookie_table,\n l = kn(f[0])[0],\n s = v.length;\n 'on_disable' === c.toggle.reload && u && (Q = !0);\n for (var p = 0; p < s; p++) {\n var b = i,\n m = v[p],\n y = [],\n g = m[l],\n h = m.is_regex || !1,\n _ = m.domain || null,\n w = m.path || !1;\n if (_ && (b = [_, '.' + _]), h) for (var k = 0; k < e.length; k++) e[k].match(g) && y.push(e[k]);else {\n var x = vn(e, g);\n x > -1 && y.push(e[x]);\n }\n y.length > 0 && (_n(y, w, b), 'on_clear' === c.toggle.reload && (Q = !0));\n }\n }\n }\n }\n },\n vn = function (n, t) {\n return n.indexOf(t);\n },\n ln = function (n) {\n var t = document.createElement(n);\n return 'button' === n && t.setAttribute('type', n), t;\n },\n sn = function (n, t) {\n return 'browser' === L.auto_language ? cn(pn(), n) : 'document' === L.auto_language ? cn(document.documentElement.lang, n) : 'string' == typeof t ? L.current_lang = cn(t, n) : (L.current_lang, L.current_lang);\n },\n pn = function () {\n var n = navigator.language || navigator.browserLanguage;\n return n.length > 2 && (n = n[0] + n[1]), n.toLowerCase();\n };\n M.allowedCategory = function (n) {\n if (G && 'opt-in' !== L.mode) t = X;else var t = JSON.parse(hn(L.cookie_name, 'one', !0) || '{}').categories || [];\n return vn(t, n) > -1;\n }, M.run = function (t) {\n if (!document.getElementById('cc_div')) {\n if (rn(t), Y) return;\n R = JSON.parse(hn(L.cookie_name, 'one', !0) || '{}');\n var c = void 0 !== (i = R.consent_uuid);\n if ((o = R.consent_date) && (o = new Date(o)), (e = R.last_consent_update) && (e = new Date(e)), A = void 0 !== R.data ? R.data : null, B && R.revision !== L.revision && (F = !1), H = G = !(c && F && o && e && i), function () {\n (y = ln('div')).id = 'cc--main', y.style.position = 'fixed', y.innerHTML = '<div id=\"cc_div\" class=\"cc_div\"></div>', g = y.children[0];\n var t = L.current_lang;\n H && un(t), fn(t), (n || document.body).appendChild(y);\n }(), function () {\n var n = ['[href]', 'button', 'input', 'details', '[tabindex=\"0\"]'];\n function t(t, o) {\n try {\n var e = t.querySelectorAll(n.join(':not([tabindex=\"-1\"]), '));\n } catch (o) {\n return t.querySelectorAll(n.join(', '));\n }\n o[0] = e[0], o[1] = e[e.length - 1];\n }\n t(j, $), H && t(h, Z);\n }(), function (n, t) {\n if ('object' == typeof n) {\n var o = n.consent_modal,\n e = n.settings_modal;\n H && o && i(h, ['box', 'bar', 'cloud'], ['top', 'middle', 'bottom'], ['zoom', 'slide'], o.layout, o.position, o.transition), e && i(O, ['bar'], ['left', 'right'], ['zoom', 'slide'], e.layout, e.position, e.transition);\n }\n function i(n, t, o, e, i, r, a) {\n if (r = r && r.split(' ') || [], vn(t, i) > -1 && (xn(n, i), ('bar' !== i || 'middle' !== r[0]) && vn(o, r[0]) > -1)) for (var c = 0; c < r.length; c++) xn(n, r[c]);\n vn(e, a) > -1 && xn(n, a);\n }\n }(t.gui_options), an(), L.autorun && H && M.show(t.delay || 0), setTimeout(function () {\n xn(y, 'c--anim');\n }, 30), setTimeout(function () {\n wn(document, 'keydown', function (n) {\n if ('Tab' === n.key && (P || q) && r) {\n var t = Tn();\n n.shiftKey ? t !== r[0] && a.contains(t) || (n.preventDefault(), jn(r[1])) : t !== r[1] && a.contains(t) || (n.preventDefault(), jn(r[0]));\n }\n });\n }, 100), G) 'opt-out' === L.mode && (L.mode, bn());else {\n var u = 'boolean' == typeof R.rfc_cookie;\n (!u || u && R.rfc_cookie !== L.use_rfc_cookie) && (R.rfc_cookie = L.use_rfc_cookie, gn(L.cookie_name, JSON.stringify(R))), p = yn(mn()), bn(), 'function' == typeof v && v(R);\n }\n }\n };\n var bn = function () {\n if (L.page_scripts) {\n var n = R.categories || [];\n G && 'opt-out' === L.mode && (n = X);\n var t = document.querySelectorAll('script[' + L.script_selector + ']'),\n o = function (t, e) {\n if (e < t.length) {\n var i = t[e],\n r = i.getAttribute(L.script_selector);\n if (vn(n, r) > -1) {\n i.type = i.getAttribute('data-type') || 'text/javascript', i.removeAttribute(L.script_selector);\n var a = i.getAttribute('data-src');\n a && i.removeAttribute('data-src');\n var c = ln('script');\n if (c.textContent = i.innerHTML, function (n, t) {\n for (var o = t.attributes, e = o.length, i = 0; i < e; i++) {\n var r = o[i].nodeName;\n n.setAttribute(r, t[r] || t.getAttribute(r));\n }\n }(c, i), a ? c.src = a : a = i.src, a && (c.readyState ? c.onreadystatechange = function () {\n 'loaded' !== c.readyState && 'complete' !== c.readyState || (c.onreadystatechange = null, o(t, ++e));\n } : c.onload = function () {\n c.onload = null, o(t, ++e);\n }), i.parentNode.replaceChild(c, i), a) return;\n }\n o(t, ++e);\n }\n };\n o(t, 0);\n }\n };\n M.set = function (n, t) {\n return 'data' === n && function (n, t) {\n var o = !1;\n if ('update' === t) {\n var e = typeof (A = M.get('data')) == typeof n;\n if (e && 'object' == typeof A) for (var i in !A && (A = {}), n) A[i] !== n[i] && (A[i] = n[i], o = !0);else !e && A || A === n || (A = n, o = !0);\n } else A = n, o = !0;\n return o && (R.data = A, gn(L.cookie_name, JSON.stringify(R))), o;\n }(t.value, t.mode);\n }, M.get = function (n, t) {\n return JSON.parse(hn(t || L.cookie_name, 'one', !0) || '{}')[n];\n }, M.getConfig = function (n) {\n return L[n] || t[n];\n };\n var mn = function () {\n return V = R.categories || [], W = tn.filter(function (n) {\n return -1 === vn(V, n);\n }), {\n accepted: V,\n rejected: W\n };\n },\n yn = function (n) {\n var t = 'custom',\n o = on.length;\n return n.accepted.length === tn.length ? t = 'all' : n.accepted.length === o && (t = 'necessary'), t;\n };\n M.getUserPreferences = function () {\n var n = mn();\n return {\n accept_type: yn(n),\n accepted_categories: n.accepted,\n rejected_categories: n.rejected\n };\n }, M.loadScript = function (n, t, o) {\n var e = 'function' == typeof t;\n if (document.querySelector('script[src=\"' + n + '\"]')) e && t();else {\n var i = ln('script');\n if (o && o.length > 0) for (var r = 0; r < o.length; ++r) o[r] && i.setAttribute(o[r].name, o[r].value);\n e && (i.onload = t), i.src = n, document.head.appendChild(i);\n }\n }, M.updateScripts = function () {\n bn();\n }, M.show = function (n, t) {\n !0 === t && un(L.current_lang), H && (b = Tn(), r = Z, a = h, P = !0, h.removeAttribute('aria-hidden'), setTimeout(function () {\n xn(en, 'show--consent');\n }, n > 0 ? n : t ? 30 : 0));\n }, M.hide = function () {\n H && (P = !1, jn(c), h.setAttribute('aria-hidden', 'true'), Sn(en, 'show--consent'), jn(b), b = null);\n }, M.showSettings = function (n) {\n q = !0, O.removeAttribute('aria-hidden'), P ? m = Tn() : b = Tn(), a = O, r = $, setTimeout(function () {\n xn(en, 'show--settings');\n }, n > 0 ? n : 0);\n }, M.hideSettings = function () {\n q = !1, Nn(), jn(u), O.setAttribute('aria-hidden', 'true'), Sn(en, 'show--settings'), P ? (jn(m), m = null, a = h, r = Z) : (jn(b), b = null);\n }, M.accept = function (n, t) {\n var r = n || void 0,\n a = t || [],\n c = [];\n if (r) {\n if ('object' == typeof r && 'number' == typeof r.length) for (var u = 0; u < r.length; u++) -1 !== vn(tn, r[u]) && c.push(r[u]);else 'string' == typeof r && ('all' === r ? c = tn.slice() : -1 !== vn(tn, r) && c.push(r));\n } else c = function () {\n for (var n = document.querySelectorAll('.c-tgl') || [], t = [], o = 0; o < n.length; o++) n[o].checked && t.push(n[o].value);\n return t;\n }();\n if (a.length >= 1) for (u = 0; u < a.length; u++) c = c.filter(function (n) {\n return n !== a[u];\n });\n for (u = 0; u < tn.length; u++) !0 === on.includes(tn[u]) && -1 === vn(c, tn[u]) && c.push(tn[u]);\n !function (n) {\n K = [];\n var t = O.querySelectorAll('.c-tgl') || [];\n if (t.length > 0) for (var r = 0; r < t.length; r++) -1 !== vn(n, tn[r]) ? (t[r].checked = !0, nn[r] || (K.push(tn[r]), nn[r] = !0)) : (t[r].checked = !1, nn[r] && (K.push(tn[r]), nn[r] = !1));\n !G && L.autoclear_cookies && K.length > 0 && dn(), o || (o = new Date()), i || (i = ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (n) {\n try {\n return (n ^ (window.crypto || window.msCrypto).getRandomValues(new Uint8Array(1))[0] & 15 >> n / 4).toString(16);\n } catch (n) {\n return '';\n }\n })), R = {\n categories: n,\n level: n,\n revision: L.revision,\n data: A,\n rfc_cookie: L.use_rfc_cookie,\n consent_date: o.toISOString(),\n consent_uuid: i\n }, (G || K.length > 0) && (F = !0, e = e ? new Date() : o, R.last_consent_update = e.toISOString(), p = yn(mn()), gn(L.cookie_name, JSON.stringify(R)), bn()), G && (L.autoclear_cookies && dn(!0), 'function' == typeof s && s(M.getUserPreferences(), R), 'function' == typeof v && v(R), G = !1, 'opt-in' === L.mode) || ('function' == typeof l && K.length > 0 && l(R, K), Q && location.reload());\n }(c);\n }, M.eraseCookies = function (n, t, o) {\n var e = [],\n i = o ? [o, '.' + o] : [L.cookie_domain, '.' + L.cookie_domain];\n if ('object' == typeof n && n.length > 0) for (var r = 0; r < n.length; r++) this.validCookie(n[r]) && e.push(n[r]);else this.validCookie(n) && e.push(n);\n _n(e, t, i);\n };\n var gn = function (n, t) {\n var o = L.cookie_expiration;\n 'number' == typeof L.cookie_necessary_only_expiration && 'necessary' === p && (o = L.cookie_necessary_only_expiration), t = L.use_rfc_cookie ? encodeURIComponent(t) : t;\n var e = new Date();\n e.setTime(e.getTime() + 24 * o * 60 * 60 * 1e3);\n var i = n + '=' + (t || '') + '; expires=' + e.toUTCString() + '; Path=' + L.cookie_path + ';';\n i += ' SameSite=' + L.cookie_same_site + ';', location.hostname.indexOf('.') > -1 && L.cookie_domain && (i += ' Domain=' + L.cookie_domain + ';'), 'https:' === location.protocol && (i += ' Secure;'), document.cookie = i;\n },\n hn = function (n, t, o) {\n var e;\n if ('one' === t) {\n if ((e = (e = document.cookie.match('(^|;)\\\\s*' + n + '\\\\s*=\\\\s*([^;]+)')) ? o ? e.pop() : n : '') && n === L.cookie_name) {\n try {\n e = JSON.parse(e);\n } catch (n) {\n try {\n e = JSON.parse(decodeURIComponent(e));\n } catch (n) {\n e = {};\n }\n }\n e = JSON.stringify(e);\n }\n } else if ('all' === t) {\n var i = document.cookie.split(/;\\s*/);\n e = [];\n for (var r = 0; r < i.length; r++) e.push(i[r].split('=')[0]);\n }\n return e;\n },\n _n = function (n, t, o) {\n for (var e = t || '/', i = 0; i < n.length; i++) {\n for (var r = 0; r < o.length; r++) document.cookie = n[i] + '=; path=' + e + (0 == o[r].indexOf('.') ? '; domain=' + o[r] : '') + '; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n n[i];\n }\n };\n M.validCookie = function (n) {\n return '' !== hn(n, 'one', !0);\n }, M.validConsent = function () {\n return !G;\n };\n var wn = function (n, t, o, e) {\n n.addEventListener(t, o, !0 === e && {\n passive: !0\n });\n },\n kn = function (n) {\n if ('object' == typeof n) return Object.keys(n);\n },\n xn = function (n, t) {\n n.classList.add(t);\n },\n Sn = function (n, t) {\n n.classList.remove(t);\n },\n Jn = function (n, t) {\n return n.classList.contains(t);\n },\n On = function (n) {\n var t = ln('span');\n return t.tabIndex = -1, 1 === n ? c = t : u = t, t;\n },\n jn = function (n) {\n n && n instanceof HTMLElement && n.focus();\n },\n Nn = function () {\n for (var n = j.querySelectorAll('.c-tgl'), t = 0; t < n.length; t++) {\n var o = n[t].value,\n e = on.includes(o);\n n[t].checked = e || M.allowedCategory(o);\n }\n },\n Tn = function () {\n return document.activeElement;\n };\n return M;\n });\n}();","var map = {\n\t\"./add_class_controller.js\": 219,\n\t\"./add_class_from_select_field_controller.js\": 220,\n\t\"./add_class_if_min_word_count_controller.js\": 221,\n\t\"./add_class_on_select_controller.js\": 222,\n\t\"./checkbox_select_all_controller.js\": 223,\n\t\"./clipboard_controller.js\": 224,\n\t\"./close_on_body_click_controller.js\": 225,\n\t\"./confirm_with_text_controller.js\": 226,\n\t\"./contacts_bulk_controller.js\": 227,\n\t\"./copy_selected_controller.js\": 228,\n\t\"./copy_text_from_select_controller.js\": 229,\n\t\"./copy_to_form_controller.js\": 230,\n\t\"./copy_value_controller.js\": 231,\n\t\"./disable_enter_controller.js\": 232,\n\t\"./disable_if_blank_controller.js\": 233,\n\t\"./form_field_resize_controller.js\": 234,\n\t\"./hello_controller.js\": 235,\n\t\"./hide_if_blank_controller.js\": 236,\n\t\"./icon-picker-controller.js\": 377,\n\t\"./image_controller.js\": 237,\n\t\"./index.js\": 378,\n\t\"./load_conva_interface_controller.js\": 238,\n\t\"./loading_controller.js\": 239,\n\t\"./loading_text_controller.js\": 240,\n\t\"./localize_server_time_controller.js\": 241,\n\t\"./menu_resize_controller.js\": 242,\n\t\"./opacity_slider_controller.js\": 243,\n\t\"./preloader_controller.js\": 244,\n\t\"./reload_turbo_frame_controller.js\": 245,\n\t\"./remove_class_controller.js\": 246,\n\t\"./remove_event_listener_controller.js\": 247,\n\t\"./replace_selected_controller.js\": 248,\n\t\"./scroll_to_bottom_controller.js\": 249,\n\t\"./scroll_to_controller.js\": 250,\n\t\"./select_element_controller.js\": 251,\n\t\"./select_field_controller.js\": 252,\n\t\"./sortable_controller.js\": 253,\n\t\"./submit_form_controller.js\": 254,\n\t\"./submit_on_enter_controller.js\": 255,\n\t\"./theme_controller.js\": 256,\n\t\"./toggle_body_class_controller.js\": 257,\n\t\"./toggle_class_connect_controller.js\": 258,\n\t\"./toggle_class_controller.js\": 259,\n\t\"./toggle_class_on_scroll_controller.js\": 260,\n\t\"./toggle_class_on_timeout_controller.js\": 261,\n\t\"./turbo_form_submit_redirect_controller.js\": 262,\n\t\"./turbo_frame_updater_controller.js\": 263,\n\t\"./turbo_issue_186_workaround_controller.js\": 264,\n\t\"./update_content_controller.js\": 265,\n\t\"./update_field_value_controller.js\": 266,\n\t\"./validate_checkbox_controller.js\": 267\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 376;","// Load all the controllers within this directory and all subdirectories. \n// Controller files must be named *_controller.js.\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nconst application = Application.start()\nconst context = require.context(\"controllers\", true, /_controller\\.js$/)\napplication.load(definitionsFromContext(context))\n","var map = {\n\t\"./add_class_controller.js\": 219,\n\t\"./add_class_from_select_field_controller.js\": 220,\n\t\"./add_class_if_min_word_count_controller.js\": 221,\n\t\"./add_class_on_select_controller.js\": 222,\n\t\"./checkbox_select_all_controller.js\": 223,\n\t\"./clipboard_controller.js\": 224,\n\t\"./close_on_body_click_controller.js\": 225,\n\t\"./confirm_with_text_controller.js\": 226,\n\t\"./contacts_bulk_controller.js\": 227,\n\t\"./copy_selected_controller.js\": 228,\n\t\"./copy_text_from_select_controller.js\": 229,\n\t\"./copy_to_form_controller.js\": 230,\n\t\"./copy_value_controller.js\": 231,\n\t\"./disable_enter_controller.js\": 232,\n\t\"./disable_if_blank_controller.js\": 233,\n\t\"./form_field_resize_controller.js\": 234,\n\t\"./hello_controller.js\": 235,\n\t\"./hide_if_blank_controller.js\": 236,\n\t\"./image_controller.js\": 237,\n\t\"./load_conva_interface_controller.js\": 238,\n\t\"./loading_controller.js\": 239,\n\t\"./loading_text_controller.js\": 240,\n\t\"./localize_server_time_controller.js\": 241,\n\t\"./menu_resize_controller.js\": 242,\n\t\"./opacity_slider_controller.js\": 243,\n\t\"./preloader_controller.js\": 244,\n\t\"./reload_turbo_frame_controller.js\": 245,\n\t\"./remove_class_controller.js\": 246,\n\t\"./remove_event_listener_controller.js\": 247,\n\t\"./replace_selected_controller.js\": 248,\n\t\"./scroll_to_bottom_controller.js\": 249,\n\t\"./scroll_to_controller.js\": 250,\n\t\"./select_element_controller.js\": 251,\n\t\"./select_field_controller.js\": 252,\n\t\"./sortable_controller.js\": 253,\n\t\"./submit_form_controller.js\": 254,\n\t\"./submit_on_enter_controller.js\": 255,\n\t\"./theme_controller.js\": 256,\n\t\"./toggle_body_class_controller.js\": 257,\n\t\"./toggle_class_connect_controller.js\": 258,\n\t\"./toggle_class_controller.js\": 259,\n\t\"./toggle_class_on_scroll_controller.js\": 260,\n\t\"./toggle_class_on_timeout_controller.js\": 261,\n\t\"./turbo_form_submit_redirect_controller.js\": 262,\n\t\"./turbo_frame_updater_controller.js\": 263,\n\t\"./turbo_issue_186_workaround_controller.js\": 264,\n\t\"./update_content_controller.js\": 265,\n\t\"./update_field_value_controller.js\": 266,\n\t\"./validate_checkbox_controller.js\": 267\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 379;"],"sourceRoot":""}